<?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>239134</bug_id>
          
          <creation_ts>2022-04-12 11:29:43 -0700</creation_ts>
          <short_desc>Web Inspector: `inspector/debugger/breakpoints/resolved-dump-all-pause-locations.html` is a flakey failure</short_desc>
          <delta_ts>2022-05-26 16:42:03 -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>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=235607</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="Patrick Angle">pangle</reporter>
          <assigned_to name="Patrick Angle">pangle</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1860743</commentid>
    <comment_count>0</comment_count>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-04-12 11:29:43 -0700</bug_when>
    <thetext>To reproduce: `run-webkit-tests --iterations=100 inspector/debugger/breakpoints/resolved-dump-all-pause-locations.html`

This began being flakey after r291746, which added a test case. It appears the we finally hit the edge of our luck with racing scripts being sent to the frontend, and this became flakey about 5% of the time (varies by platform).

https://results.webkit.org/?suite=layout-tests&amp;test=inspector%2Fdebugger%2Fbreakpoints%2Fresolved-dump-all-pause-locations.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860744</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-12 11:30:05 -0700</bug_when>
    <thetext>&lt;rdar://problem/91639437&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860746</commentid>
    <comment_count>2</comment_count>
      <attachid>457349</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-04-12 11:36:41 -0700</bug_when>
    <thetext>Created attachment 457349
Patch v1.0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860760</commentid>
    <comment_count>3</comment_count>
      <attachid>457349</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2022-04-12 12:11:56 -0700</bug_when>
    <thetext>Comment on attachment 457349
Patch v1.0

Oo, neat!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860767</commentid>
    <comment_count>4</comment_count>
      <attachid>457349</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-04-12 12:29:22 -0700</bug_when>
    <thetext>Comment on attachment 457349
Patch v1.0

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

r=me

&gt; Source/WebInspectorUI/UserInterface/Protocol/InspectorBackend.js:247
&gt; +    async awaitPendingDispatches()

Rather than have a new method, could we make `runAfterPendingDispatches` just return a `Promise` if a `callback` is not provided (i.e. just like what we do with protocol commands in the frontend)?

&gt; LayoutTests/inspector/debugger/breakpoints/resources/dump.js:10
&gt; +    window.addDumpAllPauseLocationsTestCase = async function(suite, {name, scriptRegex, resourceRegex}) {

Why does this need to be `async`?

&gt; LayoutTests/inspector/debugger/breakpoints/resources/dump.js:27
&gt; +                await InspectorBackend.awaitPendingDispatches();

Another option to waiting for pending dispatches could be to do something like `WI.networkManager.mainFrame.resourceCollection.addEventListener(WI.Collection.Event.ItemAdded, (event) =&gt; { ... })`.  I feel like that&apos;s probably safer than just waiting for pending dispatches as I&apos;m not sure it&apos;s guaranteed that the script message is pending (i.e. it could be coming *right* after the current messages).

&gt; LayoutTests/inspector/debugger/breakpoints/resources/dump.js:51
&gt; +                await InspectorBackend.awaitPendingDispatches();

possibly a ditto of :27 by waiting for `Debugger.breakpointResolved` instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860880</commentid>
    <comment_count>5</comment_count>
      <attachid>457349</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-04-12 14:04:34 -0700</bug_when>
    <thetext>Comment on attachment 457349
Patch v1.0

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

&gt;&gt; LayoutTests/inspector/debugger/breakpoints/resources/dump.js:10
&gt;&gt; +    window.addDumpAllPauseLocationsTestCase = async function(suite, {name, scriptRegex, resourceRegex}) {
&gt; 
&gt; Why does this need to be `async`?

Oops. Remnant of solutions past.

&gt;&gt; LayoutTests/inspector/debugger/breakpoints/resources/dump.js:27
&gt;&gt; +                await InspectorBackend.awaitPendingDispatches();
&gt; 
&gt; Another option to waiting for pending dispatches could be to do something like `WI.networkManager.mainFrame.resourceCollection.addEventListener(WI.Collection.Event.ItemAdded, (event) =&gt; { ... })`.  I feel like that&apos;s probably safer than just waiting for pending dispatches as I&apos;m not sure it&apos;s guaranteed that the script message is pending (i.e. it could be coming *right* after the current messages).

Yeah, let me take another look at this... You are probably right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861030</commentid>
    <comment_count>6</comment_count>
      <attachid>457349</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-04-12 21:25:59 -0700</bug_when>
    <thetext>Comment on attachment 457349
Patch v1.0

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

Not sure why, but the bug is now reproducing after I pulled this patch back to my machine, so I&apos;m not convinced I&apos;ve actually/fully fixed this.

&gt;&gt;&gt; LayoutTests/inspector/debugger/breakpoints/resources/dump.js:10
&gt;&gt;&gt; +    window.addDumpAllPauseLocationsTestCase = async function(suite, {name, scriptRegex, resourceRegex}) {
&gt;&gt; 
&gt;&gt; Why does this need to be `async`?
&gt; 
&gt; Oops. Remnant of solutions past.

Oops. Remnant of solutions past.

&gt;&gt;&gt; LayoutTests/inspector/debugger/breakpoints/resources/dump.js:27
&gt;&gt;&gt; +                await InspectorBackend.awaitPendingDispatches();
&gt;&gt; 
&gt;&gt; Another option to waiting for pending dispatches could be to do something like `WI.networkManager.mainFrame.resourceCollection.addEventListener(WI.Collection.Event.ItemAdded, (event) =&gt; { ... })`.  I feel like that&apos;s probably safer than just waiting for pending dispatches as I&apos;m not sure it&apos;s guaranteed that the script message is pending (i.e. it could be coming *right* after the current messages).
&gt; 
&gt; Yeah, let me take another look at this... You are probably right.

Yeah, let me take another look at this... You are probably right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1872087</commentid>
    <comment_count>7</comment_count>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-05-26 13:35:07 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/1066</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1872212</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-05-26 16:42:01 -0700</bug_when>
    <thetext>Committed r294907 (251030@main): &lt;https://commits.webkit.org/251030@main&gt;

Reviewed commits have been landed. Closing PR #1066 and removing active labels.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457349</attachid>
            <date>2022-04-12 11:36:41 -0700</date>
            <delta_ts>2022-04-12 12:29:22 -0700</delta_ts>
            <desc>Patch v1.0</desc>
            <filename>bug-239134-20220412113640.patch</filename>
            <type>text/plain</type>
            <size>8734</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA0
ZmE0ZmY0NDc2OGI4NTc4YTllMjFjZTg2ZTQzMGIyM2M3NTVlN2FhLi5mNzk5YjI4M2IyY2Q1Njlm
MWVkMjg4OGNiYWYwMzM1NDgyN2E1OWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAyMi0wNC0xMiAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogYGluc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50
cy9yZXNvbHZlZC1kdW1wLWFsbC1wYXVzZS1sb2NhdGlvbnMuaHRtbGAgaXMgYSBmbGFrZXkgZmFp
bHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5
MTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckJhY2tlbmQuanM6CisgICAgICAgIChJbnNw
ZWN0b3JCYWNrZW5kQ2xhc3MucHJvdG90eXBlLmFzeW5jIGF3YWl0UGVuZGluZ0Rpc3BhdGNoZXMp
OgorICAgICAgICAtIEFkZCBjb252ZW5pZW5jZSBtZXRob2QgZm9yIHdhaXRpbmcgZm9yIHBlbmRp
bmcgZGlzcGF0Y2hlcyBpbiBmdW5jdGlvbnMgdXNpbmcgYXN5bmMvYXdhaXQuCisKIDIwMjItMDQt
MTEgIFBhdHJpY2sgQW5nbGUgIDxwYW5nbGVAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IHByZXNlcnZlIERPTS5Ob2RlSWQgaWYgYSBub2RlIGlzIHJlbW92ZWQgYW5kIHJlLWFk
ZGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90
b2NvbC9JbnNwZWN0b3JCYWNrZW5kLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yQmFja2VuZC5qcwppbmRleCBkMDg5NTgwOTVlODU3YzMz
ZjJmMTI4ZTQ1YzQ4YTc1MzQ3MGFjMmI0Li5iOTMzNDFjMzY0ZTY2ZjY2M2FiNmQ5NWUyMDNjMjcz
NWZkMWE5YTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Qcm90b2NvbC9JbnNwZWN0b3JCYWNrZW5kLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckJhY2tlbmQuanMKQEAgLTI0NCw2ICsy
NDQsMTcgQEAgSW5zcGVjdG9yQmFja2VuZENsYXNzID0gY2xhc3MgSW5zcGVjdG9yQmFja2VuZENs
YXNzCiAgICAgICAgIFdJLm1haW5UYXJnZXQuY29ubmVjdGlvbi5ydW5BZnRlclBlbmRpbmdEaXNw
YXRjaGVzKGNhbGxiYWNrKTsKICAgICB9CiAKKyAgICBhc3luYyBhd2FpdFBlbmRpbmdEaXNwYXRj
aGVzKCkKKyAgICB7CisgICAgICAgIGlmICghV0kubWFpblRhcmdldCkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4g
eworICAgICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIHJlc3BlY3QgcGVuZGluZyBkaXNw
YXRjaGVzIGluIGFsbCBjb25uZWN0aW9ucz8KKyAgICAgICAgICAgIFdJLm1haW5UYXJnZXQuY29u
bmVjdGlvbi5ydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVzKHJlc29sdmUpOworICAgICAgICB9KTsK
KyAgICB9CisKICAgICBzdXBwb3J0ZWREb21haW5zRm9yVGFyZ2V0VHlwZSh0eXBlKQogICAgIHsK
ICAgICAgICAgY29uc29sZS5hc3NlcnQoV0kuVGFyZ2V0VHlwZS5hbGwuaW5jbHVkZXModHlwZSks
ICJVbmtub3duIHRhcmdldCB0eXBlIiwgdHlwZSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYjFlZjU0YTk4ZjRkNGRmODNm
MjMzNmU3NGViMzRhNWNkYjQ2MDU0NS4uN2QxOGEzNzMwNjU2M2Q0YzA4ZDEwYWNkMGQzMDljZmU1
NzkzMDkyMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIyLTA0LTEyICBQYXRyaWNrIEFuZ2xl
ICA8cGFuZ2xlQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBgaW5zcGVjdG9y
L2RlYnVnZ2VyL2JyZWFrcG9pbnRzL3Jlc29sdmVkLWR1bXAtYWxsLXBhdXNlLWxvY2F0aW9ucy5o
dG1sYCBpcyBhIGZsYWtleSBmYWlsdXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzkxMzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50cy9yZXNvdXJj
ZXMvZHVtcC5qczoKKyAgICAgICAgLSBEZWZlciBnZXR0aW5nIHRoZSBzY3JpcHQgZm9yIGVhY2gg
dGVzdCB1bnRpbCB3ZSBhY3R1YWxseSBydW4gdGhlIHRlc3QsIGFuZCBtYWtlIHN1cmUgd2UgaGF2
ZSBubyBwZW5kaW5nCisgICAgICAgIG1lc3NhZ2VzIGJlaW5nIGRpc3BhdGNoZWQgZnJvbSB0aGUg
YmFja2VuZCBiZWZvcmUgZG9pbmcgc28gdG8gaGVscCBlbnN1cmUgdGhhdCB3ZSB3b24ndCBtaXNz
IGEgc2NyaXB0IGJlaW5nCisgICAgICAgIGFkZGVkLiAoSW4gcHJhY3RpY2UsIGp1c3Qgd2FpdGlu
ZyB1bnRpbCB3ZSBydW4gZWFjaCB0ZXN0IGNhc2UgdG8gZ2V0IHRoZSBhc3NvY2lhdGVkIHNjcmlw
dCByZXNvbHZlZCB0aGUgZmxha2V5CisgICAgICAgIGZhaWx1cmVzLCBidXQgSSBzdXNwZWN0IGFk
ZGluZyBtb3JlIHRlc3QgY2FzZXMgd291bGQgZXZlbnR1YWxseSB1bmVhcnRoIHRoZSBzYW1lIGJl
aGF2aW9yIGFnYWluIGlmIHdlIGRvbid0IHdhaXQKKyAgICAgICAgZm9yIGFsbCB0aGUgcGVuZGlu
ZyBwcm90b2NvbCBtZXNzYWdlcy4pCisKIDIwMjItMDQtMTEgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIGZhc3QvdGV4dC9vdHN2Zy1jYW52
YXMuaHRtbCBtb3JlIHJvYnVzdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyL2JyZWFrcG9pbnRzL3Jlc291cmNlcy9kdW1wLmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnRzL3Jlc291cmNlcy9kdW1wLmpzCmluZGV4IDMyYzZkMjhi
MDViMjk3ZWE2ZDI1MDdjZmYzOWE4ODhkNzg0MzkyZmYuLmE4NzgwOGFmMDVmM2EzYzRhY2RhNWU2
MDgyMzBiNDk4OTgzODlkNDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci9icmVha3BvaW50cy9yZXNvdXJjZXMvZHVtcC5qcworKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludHMvcmVzb3VyY2VzL2R1bXAuanMKQEAgLTcsMTAgKzcs
OSBAQCBUZXN0UGFnZS5yZWdpc3RlckluaXRpYWxpemVyKCgpID0+IHsKICAgICAvLyBEdW1wIGFs
bCBwYXVzZSBsb2NhdGlvbnMgdGVzdC4KICAgICAvLyBUcmllcyB0byBzZXQgYSBicmVha3BvaW50
IGF0IGV2ZXJ5IGxpbmU6Y29sdW1uIGluIHRoZSBmaWxlIGFuZAogICAgIC8vIGxvZ3MgYWxsIHVu
aXF1ZSBwYXVzZSBsb2NhdGlvbnMgd2l0aCB0aGUgb3JpZ2luYXRvciBsaW5lOmNvbHVtbi4KLSAg
ICB3aW5kb3cuYWRkRHVtcEFsbFBhdXNlTG9jYXRpb25zVGVzdENhc2UgPSBmdW5jdGlvbihzdWl0
ZSwge25hbWUsIHNjcmlwdFJlZ2V4LCByZXNvdXJjZVJlZ2V4fSkgeworICAgIHdpbmRvdy5hZGRE
dW1wQWxsUGF1c2VMb2NhdGlvbnNUZXN0Q2FzZSA9IGFzeW5jIGZ1bmN0aW9uKHN1aXRlLCB7bmFt
ZSwgc2NyaXB0UmVnZXgsIHJlc291cmNlUmVnZXh9KSB7CiAgICAgICAgIGlmIChzY3JpcHRSZWdl
eCkgewotICAgICAgICAgICAgbGV0IHNjcmlwdCA9IHdpbmRvdy5maW5kU2NyaXB0KHNjcmlwdFJl
Z2V4KTsKLSAgICAgICAgICAgIGFkZER1bXBBbGxQYXVzZUxvY2F0aW9uc1Rlc3RDYXNlRm9yU2Ny
aXB0KHN1aXRlLCBuYW1lLCBzY3JpcHQpOworICAgICAgICAgICAgYWRkRHVtcEFsbFBhdXNlTG9j
YXRpb25zVGVzdENhc2VGb3JTY3JpcHQoc3VpdGUsIG5hbWUsIHNjcmlwdFJlZ2V4KTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAocmVzb3VyY2VSZWdleCkgewpA
QCAtMjEsNDEgKzIwLDQ1IEBAIFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIoKCkgPT4gewog
ICAgICAgICB0aHJvdyAiTWlzc2luZyBzY3JpcHRSZWdleCBvciByZXNvdXJjZVJlZ2V4IGFyZ3Vt
ZW50IjsKICAgICB9OwogCi0gICAgZnVuY3Rpb24gYWRkRHVtcEFsbFBhdXNlTG9jYXRpb25zVGVz
dENhc2VGb3JTY3JpcHQoc3VpdGUsIG5hbWUsIHNjcmlwdCkgeworICAgIGZ1bmN0aW9uIGFkZER1
bXBBbGxQYXVzZUxvY2F0aW9uc1Rlc3RDYXNlRm9yU2NyaXB0KHN1aXRlLCBuYW1lLCBzY3JpcHRS
ZWdleCkgewogICAgICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Ci0gICAgICAgICAgICBuYW1lLCB0
ZXN0KHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICAgICAgICAgIHdpbmRvdy5sb2FkTGluZXNG
cm9tU291cmNlQ29kZShzY3JpcHQpLnRoZW4oKGxpbmVzKSA9PiB7Ci0gICAgICAgICAgICAgICAg
ICAgIC8vIEl0ZXJhdGUgYWxsIHBvc3NpYmxlIHBhdXNlIGxvY2F0aW9ucyBpbiB0aGlzIGZpbGUu
Ci0gICAgICAgICAgICAgICAgICAgIGxldCBwYXVzZUxvY2F0aW9ucyA9IG5ldyBNYXA7Ci0gICAg
ICAgICAgICAgICAgICAgIGxldCBzZWVuUGF1c2VMb2NhdGlvbnMgPSBuZXcgU2V0OworICAgICAg
ICAgICAgbmFtZSwgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGUgc2NyaXB0
IG1heSBub3QgeWV0IGhhdmUgYmVlbiBzZW50IHRvIHRoZSBmcm9udGVuZCwgc28gd2FpdCBmb3Ig
YWxsIHBlbmRpbmcgZGlzcGF0Y2hlcyBmaXJzdC4KKyAgICAgICAgICAgICAgICBhd2FpdCBJbnNw
ZWN0b3JCYWNrZW5kLmF3YWl0UGVuZGluZ0Rpc3BhdGNoZXMoKTsKIAotICAgICAgICAgICAgICAg
ICAgICBmb3IgKGxldCBsaW5lID0gc2NyaXB0LnJhbmdlLnN0YXJ0TGluZTsgbGluZSA8PSBzY3Jp
cHQucmFuZ2UuZW5kTGluZTsgKytsaW5lKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsZXQg
bWF4ID0gbGluZXNbbGluZV0ubGVuZ3RoOwotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChs
ZXQgY29sdW1uID0gMDsgY29sdW1uIDw9IG1heDsgKytjb2x1bW4pIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEZWJ1Z2dlckFnZW50LnNldEJyZWFrcG9pbnQoY3JlYXRlTG9jYXRpb24o
c2NyaXB0LCBsaW5lLCBjb2x1bW4pLCAoZXJyb3IsIGJyZWFrcG9pbnRJZCwgbG9jYXRpb24pID0+
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsZXQga2V5ID0gSlNPTi5zdHJpbmdpZnkobG9jYXRpb24pOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VlblBhdXNlTG9jYXRpb25zLmhhcyhrZXkpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwYXVzZUxvY2F0aW9ucy5zZXQoe2xpbmVOdW1iZXI6IGxpbmUs
IGNvbHVtbk51bWJlcjogY29sdW1ufSwgbG9jYXRpb24pOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0pOwotICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGxl
dCBzY3JpcHQgPSBhd2FpdCB3aW5kb3cuZmluZFNjcmlwdChzY3JpcHRSZWdleCk7CisgICAgICAg
ICAgICAgICAgbGV0IGxpbmVzID0gYXdhaXQgd2luZG93LmxvYWRMaW5lc0Zyb21Tb3VyY2VDb2Rl
KHNjcmlwdCk7CisKKyAgICAgICAgICAgICAgICAvLyBJdGVyYXRlIGFsbCBwb3NzaWJsZSBwYXVz
ZSBsb2NhdGlvbnMgaW4gdGhpcyBmaWxlLgorICAgICAgICAgICAgICAgIGxldCBwYXVzZUxvY2F0
aW9ucyA9IG5ldyBNYXA7CisgICAgICAgICAgICAgICAgbGV0IHNlZW5QYXVzZUxvY2F0aW9ucyA9
IG5ldyBTZXQ7CisKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBsaW5lID0gc2NyaXB0LnJhbmdl
LnN0YXJ0TGluZTsgbGluZSA8PSBzY3JpcHQucmFuZ2UuZW5kTGluZTsgKytsaW5lKSB7CisgICAg
ICAgICAgICAgICAgICAgIGxldCBtYXggPSBsaW5lc1tsaW5lXS5sZW5ndGg7CisgICAgICAgICAg
ICAgICAgICAgIGZvciAobGV0IGNvbHVtbiA9IDA7IGNvbHVtbiA8PSBtYXg7ICsrY29sdW1uKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBEZWJ1Z2dlckFnZW50LnNldEJyZWFrcG9pbnQoY3Jl
YXRlTG9jYXRpb24oc2NyaXB0LCBsaW5lLCBjb2x1bW4pLCAoZXJyb3IsIGJyZWFrcG9pbnRJZCwg
bG9jYXRpb24pID0+IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsZXQga2V5ID0gSlNPTi5zdHJpbmdpZnkobG9jYXRpb24pOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChzZWVuUGF1c2VMb2NhdGlvbnMuaGFzKGtleSkpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwYXVzZUxvY2F0aW9ucy5zZXQoe2xpbmVOdW1iZXI6IGxpbmUsIGNvbHVtbk51bWJl
cjogY29sdW1ufSwgbG9jYXRpb24pOworICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgLy8gV2FpdCBmb3IgYWxsIHRoZSBicmVha3BvaW50cyB0byBoYXZlIGJl
ZW4gc2V0LgorICAgICAgICAgICAgICAgIGF3YWl0IEluc3BlY3RvckJhY2tlbmQuYXdhaXRQZW5k
aW5nRGlzcGF0Y2hlcygpOwogCi0gICAgICAgICAgICAgICAgICAgIC8vIExvZyB0aGUgdW5pcXVl
IGxvY2F0aW9ucyBhbmQgdGhlIGZpcnN0IGlucHV0IHRoYXQgcHJvZHVjZWQgaXQuCi0gICAgICAg
ICAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcygo
KSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiIik7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBbaW5wdXRMb2NhdGlvbiwgcGF5bG9hZF0g
b2YgcGF1c2VMb2NhdGlvbnMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmxvZyhgSU5TRVJUSU5HIEFUOiAke2lucHV0TG9jYXRpb24ubGluZU51bWJlcn06JHtp
bnB1dExvY2F0aW9uLmNvbHVtbk51bWJlcn1gKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmxvZyhgUEFVU0VTIEFUOiAke3BheWxvYWQubGluZU51bWJlcn06JHtw
YXlsb2FkLmNvbHVtbk51bWJlcn1gKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQg
cmVzb2x2ZWRMb2NhdGlvbiA9IHNjcmlwdC5jcmVhdGVTb3VyY2VDb2RlTG9jYXRpb24ocGF5bG9h
ZC5saW5lTnVtYmVyLCBwYXlsb2FkLmNvbHVtbk51bWJlcik7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgd2luZG93LmxvZ1Jlc29sdmVkQnJlYWtwb2ludExpbmVzV2l0aENvbnRleHQoaW5w
dXRMb2NhdGlvbiwgcmVzb2x2ZWRMb2NhdGlvbiwgMyk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwotICAgICAgICAgICAgICAgICAgICB9
KTsKLSAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAvLyBMb2cgdGhlIHVuaXF1
ZSBsb2NhdGlvbnMgYW5kIHRoZSBmaXJzdCBpbnB1dCB0aGF0IHByb2R1Y2VkIGl0LgorICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCIiKTsKKyAgICAgICAgICAgICAgICBmb3IgKGxl
dCBbaW5wdXRMb2NhdGlvbiwgcGF5bG9hZF0gb2YgcGF1c2VMb2NhdGlvbnMpIHsKKyAgICAgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coYElOU0VSVElORyBBVDogJHtpbnB1dExvY2F0
aW9uLmxpbmVOdW1iZXJ9OiR7aW5wdXRMb2NhdGlvbi5jb2x1bW5OdW1iZXJ9YCk7CisgICAgICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGBQQVVTRVMgQVQ6ICR7cGF5bG9hZC5saW5l
TnVtYmVyfToke3BheWxvYWQuY29sdW1uTnVtYmVyfWApOworICAgICAgICAgICAgICAgICAgICBs
ZXQgcmVzb2x2ZWRMb2NhdGlvbiA9IHNjcmlwdC5jcmVhdGVTb3VyY2VDb2RlTG9jYXRpb24ocGF5
bG9hZC5saW5lTnVtYmVyLCBwYXlsb2FkLmNvbHVtbk51bWJlcik7CisgICAgICAgICAgICAgICAg
ICAgIHdpbmRvdy5sb2dSZXNvbHZlZEJyZWFrcG9pbnRMaW5lc1dpdGhDb250ZXh0KGlucHV0TG9j
YXRpb24sIHJlc29sdmVkTG9jYXRpb24sIDMpOworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmxvZygiIik7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAg
ICB9KTsKICAgICB9Cg==
</data>
<flag name="review"
          id="485925"
          type_id="1"
          status="+"
          setter="hi"
    />
          </attachment>
      

    </bug>

</bugzilla>