<?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>232271</bug_id>
          
          <creation_ts>2021-10-25 14:28:16 -0700</creation_ts>
          <short_desc>REGRESSION (iOS 15): Fragment shader performance is several times worse</short_desc>
          <delta_ts>2022-01-26 14:24:32 -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>WebGL</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <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>
          
          <blocked>231180</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brian Richardson">brichardson</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>3dsrdlab</cc>
    
    <cc>dino</cc>
    
    <cc>kbr</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>kpiddington</cc>
    
    <cc>sebastien.videcoq</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1808587</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Richardson">brichardson</who>
    <bug_when>2021-10-25 14:28:16 -0700</bug_when>
    <thetext>We&apos;ve noticed a performance regression when having a lot of work inside of a fragment shader. I happened to have an iPad Air (3rd gen) that was still on iOS 14 so I could do a proper test.

I reproduced it with a small Three.JS testbed:

iOS15, iOS14, Test
60, 60, https://depot.knowhere.net/ios15regression/?num=5 
6, 55, https://depot.knowhere.net/ios15regression/?num=6
4, 33, https://depot.knowhere.net/ios15regression/?num=10

I see the same cliff at num=6 with my iPhone 12 Pro.  

Normally, I&apos;d just say that&apos;s the perf cliff and call it good.  But it&apos;s odd that it&apos;s changed so much between 14 and 15, maybe something can be done?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808769</commentid>
    <comment_count>1</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-10-25 23:36:03 -0700</bug_when>
    <thetext>Thank you for the report. If you have time, a test case where three.js and the payload app code is unbundled and both are not minified would be most useful. 

I can reproduce the issue. Reproduces also on macOS, AMD. The GPU work increases very much when using ANGLE Metal backend.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808953</commentid>
    <comment_count>2</comment_count>
    <who name="Brian Richardson">brichardson</who>
    <bug_when>2021-10-26 11:21:38 -0700</bug_when>
    <thetext>Hello Kimmo:

Thanks for taking the time to look into this.  I&apos;ve updated the example to use just vanilla HTML/JS and an external version of Three.JS. I hope that makes things easier!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809124</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-26 17:30:41 -0700</bug_when>
    <thetext>&lt;rdar://problem/84688595&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809233</commentid>
    <comment_count>4</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-10-27 06:03:04 -0700</bug_when>
    <thetext>(In reply to Brian Richardson from comment #2)
&gt; Hello Kimmo:
&gt; 
&gt; Thanks for taking the time to look into this.  I&apos;ve updated the example to
&gt; use just vanilla HTML/JS and an external version of Three.JS. I hope that
&gt; makes things easier!

Thanks!
The update does not seem to work on Safari?

&quot;[Error] TypeError: Module specifier, &apos;three&apos; does not start with &quot;/&quot;, &quot;./&quot;, or &quot;../&quot;. Referenced from https://depot.knowhere.net/ios15regression/?num=5
	promiseReactionJob&quot;

(It does work on Chrome, though..)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809312</commentid>
    <comment_count>5</comment_count>
    <who name="Brian Richardson">brichardson</who>
    <bug_when>2021-10-27 10:35:46 -0700</bug_when>
    <thetext>(In reply to Kimmo Kinnunen from comment #4)

&gt; The update does not seem to work on Safari?

Fixed. I thought it&apos;d be a fun time to try import maps, I guess when I tested on my phone it was using a cached version.  Removed that and it works in Safari for me!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809313</commentid>
    <comment_count>6</comment_count>
      <attachid>442606</attachid>
    <who name="Brian Richardson">brichardson</who>
    <bug_when>2021-10-27 10:36:53 -0700</bug_when>
    <thetext>Created attachment 442606
Test case showing the issue.  If you run with /?num=6 you&apos;ll see the perf cliff vs /?num=5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817656</commentid>
    <comment_count>7</comment_count>
    <who name="Sébastien VIDECOQ">sebastien.videcoq</who>
    <bug_when>2021-11-24 10:10:56 -0800</bug_when>
    <thetext>Hello, any progress on this bug ? 
It deeply impacts our product, FPS has dropped from 60 to 2 FPS.

Adding another test sample that illustrate the behavior.
Thanks in advance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817657</commentid>
    <comment_count>8</comment_count>
      <attachid>445098</attachid>
    <who name="Sébastien VIDECOQ">sebastien.videcoq</who>
    <bug_when>2021-11-24 10:12:17 -0800</bug_when>
    <thetext>Created attachment 445098
another test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817676</commentid>
    <comment_count>9</comment_count>
    <who name="Brian Richardson">brichardson</who>
    <bug_when>2021-11-24 11:39:08 -0800</bug_when>
    <thetext>Sébastien:

In our case, manually unrolling the loop seems to work around the issue. Give it a shot! Hope that helps!

Brian</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817679</commentid>
    <comment_count>10</comment_count>
    <who name="Sébastien VIDECOQ">sebastien.videcoq</who>
    <bug_when>2021-11-24 11:53:24 -0800</bug_when>
    <thetext>Brian, thanks a lot for the advice, we already gave a quick try this afternoon, but we are far from getting back performances of iOS 14. Maybe we are now facing  another iOS 15 regression ? We will try again tomorrow and provide feedbacks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831775</commentid>
    <comment_count>11</comment_count>
    <who name="Kyle Piddington">kpiddington</who>
    <bug_when>2022-01-18 12:59:50 -0800</bug_when>
    <thetext>Hi all! Some updates for you. Apologies for the delay.

We&apos;ve identified the main issue here. Part of our shader transformation passes tries it&apos;s best to preserve the original GLSL struct while following Metal alignment best practices. 

What this means for the attached shaders is that we&apos;re promoting the vec3 uniforms to vec4 for sending over as uniform data, but are then converting back to vec3 in the MSL shader. This temporary variable is able to be stored in shader registers, up until the arrays get too big. 

We&apos;ll have a fix in on our end, but if you need faster performance in the meantime, try changing your vec3 variables to vec4.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831908</commentid>
    <comment_count>12</comment_count>
      <attachid>449452</attachid>
    <who name="Kyle Piddington">kpiddington</who>
    <bug_when>2022-01-18 16:54:18 -0800</bug_when>
    <thetext>Created attachment 449452
Workaround demonstrating how uniform data type affects performance</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>442606</attachid>
            <date>2021-10-27 10:36:53 -0700</date>
            <delta_ts>2021-10-27 10:36:53 -0700</delta_ts>
            <desc>Test case showing the issue.  If you run with /?num=6 you&apos;ll see the perf cliff vs /?num=5</desc>
            <filename>index.html</filename>
            <type>text/html</type>
            <size>3362</size>
            <attacher name="Brian Richardson">brichardson</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CiAg
PHRpdGxlPmlvczE1IFBlcmZvcm1hbmNlIFJlZ3Jlc3Npb24gRXhhbXBsZTwvdGl0bGU+CiAgPHNj
cmlwdCB0eXBlPSJtb2R1bGUiPiAgICAKICAgIGltcG9ydCB7IEF4ZXNIZWxwZXIsIFdlYkdMUmVu
ZGVyZXIsIFBlcnNwZWN0aXZlQ2FtZXJhLCBTY2VuZSwgU2hhZGVyTWF0ZXJpYWwsIE1lc2gsIFNw
aGVyZUJ1ZmZlckdlb21ldHJ5LCBNYXRyaXg0LCBWZWN0b3IzIH0gZnJvbSAnaHR0cHM6Ly9jZG4u
c2t5cGFjay5kZXYvdGhyZWUnOwogICAgaW1wb3J0IFN0YXRzIGZyb20gJ2h0dHBzOi8vY2RuLnNr
eXBhY2suZGV2L3RocmVlL2V4YW1wbGVzL2pzbS9saWJzL3N0YXRzLm1vZHVsZSc7IAoKICAgIC8v
IGNyZWF0ZSB0aGUgY2FtZXJhCiAgICBjb25zdCBjYW1lcmEgPSBuZXcgUGVyc3BlY3RpdmVDYW1l
cmEoNzUsIHdpbmRvdy5pbm5lcldpZHRoIC8gd2luZG93LmlubmVySGVpZ2h0LCAwLjEsIDEwMDAp
OwogICAgY2FtZXJhLnBvc2l0aW9uLnNldCg5LCAxMCwgMTApOwogICAgY2FtZXJhLmxvb2tBdChu
ZXcgVmVjdG9yMygwLDAsMCkpOwogICAgCiAgICBjb25zdCByZW5kZXJlciA9IG5ldyBXZWJHTFJl
bmRlcmVyKHsgfSkKICAgIAogICAgLy8gc2V0IHNpemUKICAgIHJlbmRlcmVyLnNldFNpemUod2lu
ZG93LmlubmVyV2lkdGgsIHdpbmRvdy5pbm5lckhlaWdodCk7CiAgICAKICAgIC8vIGFkZCBjYW52
YXMgdG8gZG9tCiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHJlbmRlcmVyLmRvbUVsZW1l
bnQpOwoKICAgIC8vIGNyZWF0ZSB0aGUgc2NlbmUKICAgIGNvbnN0IHNjZW5lID0gbmV3IFNjZW5l
KCk7CgogICAgLy8gYWRkIGF4aXMgdG8gdGhlIHNjZW5lCiAgICBjb25zdCBheGlzID0gbmV3IEF4
ZXNIZWxwZXIoMTApOyAgICAKICAgIHNjZW5lLmFkZChheGlzKTsKICAgICAgICAKICAgIGNvbnN0
IHVybCA9IG5ldyBVUkwod2luZG93LmxvY2F0aW9uKTsKICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBV
UkxTZWFyY2hQYXJhbXModXJsLnNlYXJjaCk7CiAgICBjb25zdCBOVU1fTUFUUyA9IHBhcmFtcy5n
ZXQoJ251bScpIHx8IDY7CiAgICAKICAgIGNvbnN0IG1hdHJpY2VzID0gW107CiAgICBjb25zdCBl
bmFibGVkID0gW107CiAgICBjb25zdCBwb3NpdGlvbnMgPSBbXTsKICAgIGNvbnN0IHNjYWxlcyA9
IFtdOwogICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOVU1fTUFUUzsgaSsrKSB7CiAgICAgIGNvbnN0
IG0gPSBuZXcgTWF0cml4NCgpLm1ha2VSb3RhdGlvbkF4aXMobmV3IFZlY3RvcjMoMCwgMSzCoDAp
LCBNYXRoLlBJIC8gNSk7CiAgICAgIG1hdHJpY2VzLnB1c2gobSk7CiAgICAgIGVuYWJsZWQucHVz
aChmYWxzZSk7CiAgICAgIHBvc2l0aW9ucy5wdXNoKG5ldyBWZWN0b3IzKDEsMSwxKSk7CiAgICAg
IHNjYWxlcy5wdXNoKG5ldyBWZWN0b3IzKDAuMSwwLjEsMC4xKSk7CiAgICB9CgogICAgY29uc3Qg
Z2VvbWV0cnkgPSBuZXcgU3BoZXJlQnVmZmVyR2VvbWV0cnkoMTEuMCwgMTAwLCAxMDApOwogICAg
Y29uc3QgbWF0ID0gbmV3IFNoYWRlck1hdGVyaWFsKHsKICAgICAgdmVydGV4U2hhZGVyOiBgCiAg
ICAgIHZhcnlpbmcgdmVjMyBwb3M7CiAgICAgIHZvaWQgbWFpbigpIHsKICAgICAgICBnbF9Qb3Np
dGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiBtb2RlbFZpZXdNYXRyaXggKiB2ZWM0KHBvc2l0aW9u
LCAxLjApOwogICAgICAgIHBvcyA9IHBvc2l0aW9uOwogICAgICB9CiAgICAgIGAsCiAgICAgIGZy
YWdtZW50U2hhZGVyOiBgCiAgICAgIHVuaWZvcm0gbWF0NCB0ZXN0TWF0cmljZXNbJHtOVU1fTUFU
U31dOwogICAgICB1bmlmb3JtIGJvb2wgdGVzdHNFbmFibGVkWyR7TlVNX01BVFN9XTsKICAgICAg
dW5pZm9ybSB2ZWMzIHRlc3RQb3NpdGlvbnNbJHtOVU1fTUFUU31dOwogICAgICB1bmlmb3JtIHZl
YzMgdGVzdFNjYWxlc1ske05VTV9NQVRTfV07CiAgICAgIHZhcnlpbmcgdmVjMyBwb3M7CiAgICAg
IHVuaWZvcm0gc2FtcGxlcjJEIG1hcDsKICAgICAgCiAgICAgIHZvaWQgbWFpbigpIHsKICAgICAg
ICBmb3IoaW50IGk9MDtpPCR7TlVNX01BVFN9OysraSkgewogICAgICAgICAgbWF0NCB0ZXN0TWF0
cml4ID0gdGVzdE1hdHJpY2VzW2ldOwogICAgICAgICAgdmVjMyB0ZXN0UG9zaXRpb24gPSB0ZXN0
UG9zaXRpb25zW2ldOwogICAgICAgICAgdmVjMyB0ZXN0U2NhbGUgPSB0ZXN0U2NhbGVzW2ldOwog
ICAgICAgICAgCiAgICAgICAgICB2ZWMzIGRpZmYgPSBwb3MueHl6IC0gdGVzdFBvc2l0aW9uLnh5
ejsKICAgICAgICAgIHZlYzMgcG9zaXRpb24gPSAodGVzdE1hdHJpeCAqIHZlYzQoZGlmZiwgMS4w
KSkueHl6ICogMi47CiAgICAgICAgICAKICAgICAgICAgIGlmICgKICAgICAgICAgIHBvc2l0aW9u
LnggPCB0ZXN0U2NhbGUueCAmJiBwb3NpdGlvbi54ID4gLXRlc3RTY2FsZS54ICYmCiAgICAgICAg
ICBwb3NpdGlvbi55IDwgdGVzdFNjYWxlLnkgJiYgcG9zaXRpb24ueSA+IC10ZXN0U2NhbGUueSAm
JgogICAgICAgICAgcG9zaXRpb24ueiA8IHRlc3RTY2FsZS56ICYmIHBvc2l0aW9uLnogPiAtdGVz
dFNjYWxlLnoKICAgICAgICAgICkgewogICAgICAgICAgICBkaXNjYXJkOwogICAgICAgICAgfQog
ICAgICAgIH0KICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCk7IAogICAgICB9CiAgICAg
IGAsCiAgICAgIHVuaWZvcm1zOiB7CiAgICAgICAgdGVzdE1hdHJpY2VzOiB7CiAgICAgICAgICB2
YWx1ZTogbWF0cmljZXMsCiAgICAgICAgfSwKICAgICAgfSwKICAgIH0pOwogICAgCiAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDEwOyBpKyspIHsKICAgICAgY29uc3Qgc3BoZXJlID0gbmV3IE1lc2go
Z2VvbWV0cnksIG1hdCk7CiAgICAgIHNwaGVyZS5wb3NpdGlvbi5zZXQoMCwgMCwgMCk7CiAgICAg
IHNjZW5lLmFkZChzcGhlcmUpOyAgICAKICAgIH0KICAgICAgICAKICAgIHZhciBzdGF0cyA9IG5l
dyBTdGF0cygpOwogICAgc3RhdHMuc2hvd1BhbmVsKCAwICk7IC8vIDA6IGZwcywgMTogbXMsIDI6
IG1iLCAzKzogY3VzdG9tCiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKCBzdGF0cy5kb20g
KTsKICAgIAogICAgZnVuY3Rpb24gYW5pbWF0ZSgpIHsKICAgICAgcmVxdWVzdEFuaW1hdGlvbkZy
YW1lKGFuaW1hdGUpOwogICAgICByZW5kZXIoKTsKICAgIH0KICAgIAogICAgZnVuY3Rpb24gcmVu
ZGVyKCkgewogICAgICBzdGF0cy5iZWdpbigpOwogICAgICByZW5kZXJlci5yZW5kZXIoc2NlbmUs
IGNhbWVyYSk7CiAgICAgIHN0YXRzLmVuZCgpOwogICAgfQogICAgCiAgICBhbmltYXRlKCk7CiAg
ICAKICAgIAogIDwvc2NyaXB0PiAgICAKPC9oZWFkPgoKPGJvZHk+PC9ib2R5PgoKPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>445098</attachid>
            <date>2021-11-24 10:12:17 -0800</date>
            <delta_ts>2021-11-24 10:12:17 -0800</delta_ts>
            <desc>another test case</desc>
            <filename>iosBreakReg.html</filename>
            <type>text/html</type>
            <size>7430</size>
            <attacher name="Sébastien VIDECOQ">sebastien.videcoq</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+DQo8aHRtbD4NCg0KPGhlYWQ+DQogICAgPG1ldGEgY2hhcnNldD0idXRm
LTgiPg0KICAgIDx0aXRsZT5pb3MxNSBmb3IgbG9vcHMgd2l0aCBicmVha3MgcmVncmVzc2lvbjwv
dGl0bGU+DQogICAgPHNjcmlwdCB0eXBlPSJtb2R1bGUiPg0KICAgICAgICBpbXBvcnQgKiBhcyBU
SFJFRSBmcm9tICdodHRwczovL2Nkbi5za3lwYWNrLmRldi90aHJlZSc7DQogICAgICAgIGltcG9y
dCBTdGF0cyBmcm9tICdodHRwczovL2Nkbi5za3lwYWNrLmRldi90aHJlZS9leGFtcGxlcy9qc20v
bGlicy9zdGF0cy5tb2R1bGUnOw0KDQogICAgICAgIC8vIGNyZWF0ZSB0aGUgY2FtZXJhDQogICAg
ICAgIHZhciBjYW1lcmEgPSBuZXcgVEhSRUUuUGVyc3BlY3RpdmVDYW1lcmEoMzAsIHdpbmRvdy5p
bm5lcldpZHRoIC8gd2luZG93LmlubmVySGVpZ2h0LCAwLjEsIDEwMDApOw0KICAgICAgICBjYW1l
cmEucG9zaXRpb24uc2V0KDAsIDAsIDIwKTsNCiAgICAgICAgY2FtZXJhLmxvb2tBdChuZXcgVEhS
RUUuVmVjdG9yMygwLCAwLCAwKSk7DQoNCiAgICAgICAgdmFyIHJlbmRlcmVyID0gbmV3IFRIUkVF
LldlYkdMUmVuZGVyZXIoe30pDQoNCiAgICAgICAgLy8gc2V0IHNpemUNCiAgICAgICAgcmVuZGVy
ZXIuc2V0U2l6ZSh3aW5kb3cuaW5uZXJXaWR0aCwgd2luZG93LmlubmVySGVpZ2h0KTsNCg0KICAg
ICAgICAvLyBhZGQgY2FudmFzIHRvIGRvbQ0KICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKHJlbmRlcmVyLmRvbUVsZW1lbnQpOw0KDQogICAgICAgIC8vIGNyZWF0ZSB0aGUgc2NlbmUN
CiAgICAgICAgdmFyIHNjZW5lID0gbmV3IFRIUkVFLlNjZW5lKCk7DQogICAgICAgIC8vIGNvbmZp
Zw0KICAgICAgICB2YXIgdXJsID0gbmV3IFVSTCh3aW5kb3cubG9jYXRpb24pOw0KICAgICAgICB2
YXIgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh1cmwuc2VhcmNoKTsNCiAgICAgICAgdmFy
IE5CX0NPTkZJRyA9IDIwOw0KICAgICAgICBOQl9DT05GSUcgPSBwYXJzZUludChOQl9DT05GSUcp
Ow0KICAgICAgICAvLyB1bmlmb3Jtcw0KICAgICAgICB2YXIgdmFsdWVzVG9UZXN0Rm9yID0gbmV3
IEFycmF5KE5CX0NPTkZJRyk7DQogICAgICAgIHZhciB2YWx1ZXNUb1VzZSA9IG5ldyBBcnJheShO
Ql9DT05GSUcpOw0KICAgICAgICB2YXIgdmFsdWVzMlRvVXNlID0gbmV3IEFycmF5KE5CX0NPTkZJ
Ryk7DQogICAgICAgIHZhciB2YWx1ZXMzVG9Vc2UgPSBuZXcgQXJyYXkoTkJfQ09ORklHKTsNCiAg
ICAgICAgdmFyIHZhbHVlczRUb1VzZSA9IG5ldyBBcnJheShOQl9DT05GSUcpOw0KICAgICAgICBm
b3IgKGxldCBpID0gMDsgaSA8IE5CX0NPTkZJRzsgaSsrKSB7DQogICAgICAgICAgICB2YWx1ZXNU
b1Rlc3RGb3JbaV0gPSBpIC8gMjU1LjA7DQogICAgICAgICAgICB2YWx1ZXNUb1VzZVtpXSA9IE1h
dGgucmFuZG9tKCk7DQogICAgICAgICAgICB2YWx1ZXMyVG9Vc2VbaV0gPSBNYXRoLnJhbmRvbSgp
Ow0KICAgICAgICAgICAgdmFsdWVzM1RvVXNlW2ldID0gTWF0aC5yYW5kb20oKTsNCiAgICAgICAg
ICAgIHZhbHVlczJUb1VzZVtpXSA9IE1hdGgucmFuZG9tKCk7DQogICAgICAgIH0NCiAgICAgICAg
dmFyIHRleHR1cmVXSCA9IDUxMjsNCiAgICAgICAgdmFyIHNpemUgPSB0ZXh0dXJlV0ggKiB0ZXh0
dXJlV0g7DQogICAgICAgIHZhciBkYXRhID0gbmV3IFVpbnQ4QXJyYXkoNCAqIHNpemUpOw0KICAg
ICAgICAvLyBXZSBvbmx5IGNhcmUgYWJvdXQgciBjaGFubmVsIGluIHRoaXMgZXhhbXBsZQ0KICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpICs9IDQpIHsNCiAgICAgICAg
ICAgIGRhdGFbaV0gPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAoTkJfQ09ORklHICsgMSkp
Ow0KICAgICAgICB9DQogICAgICAgIHZhciB0ZXh0dXJlID0gbmV3IFRIUkVFLkRhdGFUZXh0dXJl
KGRhdGEsIHRleHR1cmVXSCwgdGV4dHVyZVdILCBUSFJFRS5SR0JBRm9ybWF0LCBUSFJFRS5VbnNp
Z25lZEJ5dGVUeXBlKTsNCiAgICAgICAgdGV4dHVyZS53cmFwUyA9IFRIUkVFLlJlcGVhdFdyYXBw
aW5nOw0KICAgICAgICB0ZXh0dXJlLndyYXBUID0gVEhSRUUuUmVwZWF0V3JhcHBpbmc7DQogICAg
ICAgIC8vDQogICAgICAgIGNvbnN0IG1hdCA9IG5ldyBUSFJFRS5TaGFkZXJNYXRlcmlhbCh7DQog
ICAgICAgICAgICBkZWZpbmVzOiB7DQogICAgICAgICAgICAgICAgTkJfQ09ORklHOiBOQl9DT05G
SUcsDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgdmVydGV4U2hhZGVyOiBgDQogICAgICAg
ICAgICB2YXJ5aW5nIHZlYzIgdlV2Ow0KICAgICAgICAgICAgdm9pZCBtYWluKCkgew0KICAgICAg
ICAgICAgICAgIHZVdiA9IHBvc2l0aW9uLnh5Ow0KICAgICAgICAgICAgICAgIGdsX1Bvc2l0aW9u
ID0gcHJvamVjdGlvbk1hdHJpeCAqIG1vZGVsVmlld01hdHJpeCAqIHZlYzQocG9zaXRpb24sIDEu
MCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBgLA0KICAgICAgICAgICAgZnJhZ21lbnRT
aGFkZXI6IGANCiAgICAgICAgICAgIHZhcnlpbmcgdmVjMiB2VXY7DQogICAgICAgICAgICB1bmlm
b3JtIGZsb2F0IHZhbHVlc1RvVGVzdEZvcltOQl9DT05GSUddOw0KICAgICAgICAgICAgdW5pZm9y
bSBmbG9hdCB2YWx1ZXNUb1VzZVtOQl9DT05GSUddOw0KICAgICAgICAgICAgdW5pZm9ybSBmbG9h
dCB2YWx1ZXMyVG9Vc2VbTkJfQ09ORklHXTsNCiAgICAgICAgICAgIHVuaWZvcm0gZmxvYXQgdmFs
dWVzM1RvVXNlW05CX0NPTkZJR107DQogICAgICAgICAgICB1bmlmb3JtIGZsb2F0IHZhbHVlczRU
b1VzZVtOQl9DT05GSUddOw0KICAgICAgICAgICAgdW5pZm9ybSBmbG9hdCBwb2lzc29uWzI0XTsN
CiAgICAgICAgICAgIHVuaWZvcm0gc2FtcGxlcjJEIG9mZnNjcmVuUmVuZGVyOw0KDQogICAgICAg
ICAgICBib29sIGNoZWNrQ29uZGl0aW9uKGluIGZsb2F0IHZhbHVlVG9DaGVja0FnYWluc3QsIGlu
IGZsb2F0IHZhbHVlVG9DaGVjaykgew0KICAgICAgICAgICAgICAgIHJldHVybiBhYnModmFsdWVU
b0NoZWNrQWdhaW5zdCAtIHZhbHVlVG9DaGVjaykgPCAxZS02Ow0KICAgICAgICAgICAgfQ0KDQog
ICAgICAgICAgICB2ZWM0IGdldFZhbHVlVG9Vc2UoZmxvYXQgc2FtcGxlZFZhbHVlKSB7DQogICAg
ICAgICAgICAgICAgaWYgKHNhbXBsZWRWYWx1ZSA+IDFlLTYpIHsNCiAgICAgICAgICAgICAgICAg
ICAgdmVjNCBjb25maWdUb1JldHVybjsNCiAgICAgICAgICAgICAgICAgICAgI2lmIE5CX0NPTkZJ
RyA9PSAxDQogICAgICAgICAgICAgICAgICAgICAgICBjb25maWdUb1JldHVybi5yID0gdmFsdWVz
VG9Vc2VbMF07DQogICAgICAgICAgICAgICAgICAgICAgICBjb25maWdUb1JldHVybi5nID0gdmFs
dWVzMlRvVXNlWzBdOw0KICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnVG9SZXR1cm4uYiA9
IHZhbHVlczNUb1VzZVswXTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ1RvUmV0dXJu
LmEgPSB2YWx1ZXM0VG9Vc2VbMF07DQogICAgICAgICAgICAgICAgICAgICNlbHNlDQogICAgICAg
ICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IE5CX0NPTkZJRzsgaSsrKSB7DQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgdmFsdWVUb0NoZWNrQWdhaW5zdCA9IHZh
bHVlc1RvVGVzdEZvcltpXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2hlY2tD
b25kaXRpb24odmFsdWVUb0NoZWNrQWdhaW5zdCwgc2FtcGxlZFZhbHVlKSkgew0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25maWdUb1JldHVybi5yID0gdmFsdWVzVG9Vc2VbaV07
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ1RvUmV0dXJuLmcgPSB2YWx1
ZXMyVG9Vc2VbaV07DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ1RvUmV0
dXJuLmIgPSB2YWx1ZXMzVG9Vc2VbaV07DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbmZpZ1RvUmV0dXJuLmEgPSB2YWx1ZXM0VG9Vc2VbaV07DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgI2VuZGlmDQogICAgICAg
ICAgICAgICAgICAgIHJldHVybiBjb25maWdUb1JldHVybjsNCiAgICAgICAgICAgICAgICB9IGVs
c2Ugew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmVjNCgwLjApOw0KICAgICAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIA0KICAgICAgICAgICAgdm9pZCBtYWlu
KCkgew0KICAgICAgICAgICAgICAgIHZlYzQgZmluYWxDb2xvciA9IHZlYzQoMC4wKTsNCiAgICAg
ICAgICAgICAgICB2ZWM0IGF1eDsNCgkJCQlmbG9hdCBoaXQgPSAwLjA7DQoJCQkJZm9yIChpbnQg
cmFkaXVzID0gMTsgcmFkaXVzIDw9IDEgOyByYWRpdXMrKykgewkJDQogICAgICAgICAgICAgICAg
ICAgIGZsb2F0IHR4ID0gZmxvYXQocmFkaXVzKSAqIDEuLzEyOC4wOw0KICAgICAgICAgICAgICAg
ICAgICBmbG9hdCB0eSA9IGZsb2F0KHJhZGl1cykgKiAxLi8xMjguMDsJCQkJDQogICAgICAgICAg
ICAgICAgICAgIGZvciAoaW50IHAgPSAwOyBwIDwgMjQ7IHAgKz0gMikgew0KICAgICAgICAgICAg
ICAgICAgICAgICAgdmVjNCB0ZXggPSB0ZXh0dXJlMkQob2Zmc2NyZW5SZW5kZXIsIHZlYzIodlV2
LnggKyB0eCAqIHBvaXNzb25bcF0sIHZVdi55ICsgdHkgKiBwb2lzc29uW3ArMV0pKTsNCiAgICAg
ICAgICAgICAgICAgICAgICAgIGF1eCA9IGdldFZhbHVlVG9Vc2UodGV4LnIpOw0KICAgICAgICAg
ICAgICAgICAgICAgICAgZmluYWxDb2xvci5yZ2IgKz0gYXV4LnJnYjsNCiAgICAgICAgICAgICAg
ICAgICAgICAgIGhpdCArPSBhdXguYSA+IDAuMCA/IDEuMCA6IDAuMDsNCiAgICAgICAgICAgICAg
ICAgICAgfQ0KCQkJCX0NCgkJCQlmaW5hbENvbG9yLmEgPSBoaXQgPiAxZS02ID8gMS4wIDogMC4w
Ow0KCQkJCWZpbmFsQ29sb3IucmdiIC89IDEwLjAgKiBtYXgoaGl0LCAxLjApOw0KICAgICAgICAg
ICAgICAgIGdsX0ZyYWdDb2xvciA9IGZpbmFsQ29sb3I7DQogICAgICAgICAgICB9DQogICAgICAg
ICAgICBgLA0KICAgICAgICAgICAgdW5pZm9ybXM6IHsNCiAgICAgICAgICAgICAgICB2YWx1ZXNU
b1Rlc3RGb3I6IHsNCiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlc1RvVGVzdEZvciwN
CiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIHZhbHVlc1RvVXNlOiB7DQogICAg
ICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZXNUb1VzZSwNCiAgICAgICAgICAgICAgICB9LA0K
ICAgICAgICAgICAgICAgIHZhbHVlczJUb1VzZTogew0KICAgICAgICAgICAgICAgICAgICB2YWx1
ZTogdmFsdWVzMlRvVXNlLA0KICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgdmFs
dWVzM1RvVXNlOiB7DQogICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZXMzVG9Vc2UsDQog
ICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICB2YWx1ZXM0VG9Vc2U6IHsNCiAgICAg
ICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlczRUb1VzZSwNCiAgICAgICAgICAgICAgICB9LA0K
ICAgICAgICAgICAgICAgIHBvaXNzb246IHsNCiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFsg
ICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIC0wLjMyNjIxMiwNCiAg
ICAgICAgICAgICAgICAgICAgICAgIC0wLjQwNTgwNSwNCiAgICAgICAgICAgICAgICAgICAgICAg
IC0wLjg0MDE0NCwNCiAgICAgICAgICAgICAgICAgICAgICAgIC0wLjA3MzU4LA0KICAgICAgICAg
ICAgICAgICAgICAgICAgLTAuNjk1OTE0LA0KICAgICAgICAgICAgICAgICAgICAgICAgMC40NTcx
MzcsDQogICAgICAgICAgICAgICAgICAgICAgICAtMC4yMDMzNDUsDQogICAgICAgICAgICAgICAg
ICAgICAgICAwLjYyMDcxNiwNCiAgICAgICAgICAgICAgICAgICAgICAgIDAuOTYyMzQsDQogICAg
ICAgICAgICAgICAgICAgICAgICAtMC4xOTQ5ODMsDQogICAgICAgICAgICAgICAgICAgICAgICAw
LjQ3MzQzNCwNCiAgICAgICAgICAgICAgICAgICAgICAgIC0wLjQ4MDAyNiwNCiAgICAgICAgICAg
ICAgICAgICAgICAgIDAuNTE5NDU2LA0KICAgICAgICAgICAgICAgICAgICAgICAgMC43NjcwMjIs
DQogICAgICAgICAgICAgICAgICAgICAgICAwLjE4NTQ2MSwNCiAgICAgICAgICAgICAgICAgICAg
ICAgIC0wLjg5MzEyNCwNCiAgICAgICAgICAgICAgICAgICAgICAgIDAuNTA3NDMxLA0KICAgICAg
ICAgICAgICAgICAgICAgICAgMC4wNjQ0MjUsDQogICAgICAgICAgICAgICAgICAgICAgICAwLjUz
MDk5MiwNCiAgICAgICAgICAgICAgICAgICAgICAgIDAuNDEyNDU4LA0KICAgICAgICAgICAgICAg
ICAgICAgICAgLTAuMzIxOTQsDQogICAgICAgICAgICAgICAgICAgICAgICAtMC44NzE5NDUsDQog
ICAgICAgICAgICAgICAgICAgICAgICAtMC43OTE1NTksDQogICAgICAgICAgICAgICAgICAgICAg
ICAwLjU5NzcwNQ0KICAgICAgICAgICAgICAgICAgICBdLA0KICAgICAgICAgICAgICAgIH0sDQog
ICAgICAgICAgICAgICAgb2Zmc2NyZW5SZW5kZXI6IHsNCiAgICAgICAgICAgICAgICAgICAgdmFs
dWU6IHRleHR1cmUsDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSwNCiAgICAgICAg
fSk7DQogICAgICAgIC8vIGdlb21ldHJ5DQogICAgICAgIGNvbnN0IGdlb21ldHJ5ID0gbmV3IFRI
UkVFLlBsYW5lR2VvbWV0cnkoMTAsIDEwKTsNCiAgICAgICAgY29uc3QgcXVhZCA9IG5ldyBUSFJF
RS5NZXNoKGdlb21ldHJ5LCBtYXQpOw0KICAgICAgICBxdWFkLnBvc2l0aW9uLnNldCgwLCAwLCAw
KTsNCiAgICAgICAgc2NlbmUuYWRkKHF1YWQpOw0KICAgICAgICAvLyBzdGF0cw0KICAgICAgICB2
YXIgc3RhdHMgPSBuZXcgU3RhdHMoKTsNCiAgICAgICAgc3RhdHMuc2hvd1BhbmVsKDApOyAvLyAw
OiBmcHMsIDE6IG1zLCAyOiBtYiwgMys6IGN1c3RvbQ0KICAgICAgICBkb2N1bWVudC5ib2R5LmFw
cGVuZENoaWxkKHN0YXRzLmRvbSk7DQogICAgICAgIC8vIA0KICAgICAgICBmdW5jdGlvbiBhbmlt
YXRlKCkgew0KICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGUpOw0KICAg
ICAgICAgICAgcmVuZGVyKCk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiByZW5kZXIo
KSB7DQogICAgICAgICAgICBzdGF0cy5iZWdpbigpOw0KICAgICAgICAgICAgcmVuZGVyZXIucmVu
ZGVyKHNjZW5lLCBjYW1lcmEpOw0KICAgICAgICAgICAgc3RhdHMuZW5kKCk7DQogICAgICAgIH0N
Cg0KICAgICAgICBhbmltYXRlKCk7DQoNCg0KICAgIDwvc2NyaXB0Pg0KPC9oZWFkPg0KDQo8Ym9k
eT48L2JvZHk+DQoNCjwvaHRtbD4=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>449452</attachid>
            <date>2022-01-18 16:54:18 -0800</date>
            <delta_ts>2022-01-18 16:54:18 -0800</delta_ts>
            <desc>Workaround demonstrating how uniform data type affects performance</desc>
            <filename>webkit-232271-workaround.html</filename>
            <type>text/html</type>
            <size>3370</size>
            <attacher name="Kyle Piddington">kpiddington</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CiAg
PHRpdGxlPmlvczE1IFBlcmZvcm1hbmNlIFJlZ3Jlc3Npb24gRXhhbXBsZTwvdGl0bGU+CiAgPHNj
cmlwdCB0eXBlPSJtb2R1bGUiPiAgICAKICAgIGltcG9ydCB7IEF4ZXNIZWxwZXIsIFdlYkdMUmVu
ZGVyZXIsIFBlcnNwZWN0aXZlQ2FtZXJhLCBTY2VuZSwgU2hhZGVyTWF0ZXJpYWwsIE1lc2gsIFNw
aGVyZUJ1ZmZlckdlb21ldHJ5LCBNYXRyaXg0LCBWZWN0b3IzIH0gZnJvbSAnaHR0cHM6Ly9jZG4u
c2t5cGFjay5kZXYvdGhyZWUnOwogICAgaW1wb3J0IFN0YXRzIGZyb20gJ2h0dHBzOi8vY2RuLnNr
eXBhY2suZGV2L3RocmVlL2V4YW1wbGVzL2pzbS9saWJzL3N0YXRzLm1vZHVsZSc7IAoKICAgIC8v
IGNyZWF0ZSB0aGUgY2FtZXJhCiAgICBjb25zdCBjYW1lcmEgPSBuZXcgUGVyc3BlY3RpdmVDYW1l
cmEoNzUsIHdpbmRvdy5pbm5lcldpZHRoIC8gd2luZG93LmlubmVySGVpZ2h0LCAwLjEsIDEwMDAp
OwogICAgY2FtZXJhLnBvc2l0aW9uLnNldCg5LCAxMCwgMTApOwogICAgY2FtZXJhLmxvb2tBdChu
ZXcgVmVjdG9yMygwLDAsMCkpOwogICAgCiAgICBjb25zdCByZW5kZXJlciA9IG5ldyBXZWJHTFJl
bmRlcmVyKHsgfSkKICAgIAogICAgLy8gc2V0IHNpemUKICAgIHJlbmRlcmVyLnNldFNpemUod2lu
ZG93LmlubmVyV2lkdGgsIHdpbmRvdy5pbm5lckhlaWdodCk7CiAgICAKICAgIC8vIGFkZCBjYW52
YXMgdG8gZG9tCiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHJlbmRlcmVyLmRvbUVsZW1l
bnQpOwoKICAgIC8vIGNyZWF0ZSB0aGUgc2NlbmUKICAgIGNvbnN0IHNjZW5lID0gbmV3IFNjZW5l
KCk7CgogICAgLy8gYWRkIGF4aXMgdG8gdGhlIHNjZW5lCiAgICBjb25zdCBheGlzID0gbmV3IEF4
ZXNIZWxwZXIoMTApOyAgICAKICAgIHNjZW5lLmFkZChheGlzKTsKICAgICAgICAKICAgIGNvbnN0
IHVybCA9IG5ldyBVUkwod2luZG93LmxvY2F0aW9uKTsKICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBV
UkxTZWFyY2hQYXJhbXModXJsLnNlYXJjaCk7CiAgICBjb25zdCBOVU1fTUFUUyA9IHBhcmFtcy5n
ZXQoJ251bScpIHx8IDY7CiAgICAKICAgIGNvbnN0IG1hdHJpY2VzID0gW107CiAgICBjb25zdCBl
bmFibGVkID0gW107CiAgICBjb25zdCBwb3NpdGlvbnMgPSBbXTsKICAgIGNvbnN0IHNjYWxlcyA9
IFtdOwogICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOVU1fTUFUUzsgaSsrKSB7CiAgICAgIGNvbnN0
IG0gPSBuZXcgTWF0cml4NCgpLm1ha2VSb3RhdGlvbkF4aXMobmV3IFZlY3RvcjMoMCwgMSzCoDAp
LCBNYXRoLlBJIC8gNSk7CiAgICAgIG1hdHJpY2VzLnB1c2gobSk7CiAgICAgIGVuYWJsZWQucHVz
aChmYWxzZSk7CiAgICAgIHBvc2l0aW9ucy5wdXNoKG5ldyBWZWN0b3IzKDEsMSwxKSk7CiAgICAg
IHNjYWxlcy5wdXNoKG5ldyBWZWN0b3IzKDAuMSwwLjEsMC4xKSk7CiAgICB9CgogICAgY29uc3Qg
Z2VvbWV0cnkgPSBuZXcgU3BoZXJlQnVmZmVyR2VvbWV0cnkoMTEuMCwgMTAwLCAxMDApOwogICAg
Y29uc3QgbWF0ID0gbmV3IFNoYWRlck1hdGVyaWFsKHsKICAgICAgdmVydGV4U2hhZGVyOiBgCiAg
ICAgIHZhcnlpbmcgdmVjMyBwb3M7CiAgICAgIHZvaWQgbWFpbigpIHsKICAgICAgICBnbF9Qb3Np
dGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiBtb2RlbFZpZXdNYXRyaXggKiB2ZWM0KHBvc2l0aW9u
LCAxLjApOwogICAgICAgIHBvcyA9IHBvc2l0aW9uOwogICAgICB9CiAgICAgIGAsCiAgICAgIGZy
YWdtZW50U2hhZGVyOiBgCiAgICAgIHVuaWZvcm0gbWF0NCB0ZXN0TWF0cmljZXNbJHtOVU1fTUFU
U31dOwogICAgICB1bmlmb3JtIGJvb2wgdGVzdHNFbmFibGVkWyR7TlVNX01BVFN9XTsKICAgICAg
dW5pZm9ybSB2ZWM0IHRlc3RQb3NpdGlvbnNbJHtOVU1fTUFUU31dOwogICAgICB1bmlmb3JtIHZl
YzQgdGVzdFNjYWxlc1ske05VTV9NQVRTfV07CiAgICAgIHZhcnlpbmcgdmVjMyBwb3M7CiAgICAg
IHVuaWZvcm0gc2FtcGxlcjJEIG1hcDsKICAgICAgCiAgICAgIHZvaWQgbWFpbigpIHsKICAgICAg
ICBmb3IoaW50IGk9MDtpPCR7TlVNX01BVFN9OysraSkgewogICAgICAgICAgbWF0NCB0ZXN0TWF0
cml4ID0gdGVzdE1hdHJpY2VzW2ldOwogICAgICAgICAgdmVjMyB0ZXN0UG9zaXRpb24gPSB0ZXN0
UG9zaXRpb25zW2ldLnh5ejsKICAgICAgICAgIHZlYzMgdGVzdFNjYWxlID0gdGVzdFNjYWxlc1tp
XS54eXo7CiAgICAgICAgICAKICAgICAgICAgIHZlYzMgZGlmZiA9IHBvcy54eXogLSB0ZXN0UG9z
aXRpb24ueHl6OwogICAgICAgICAgdmVjMyBwb3NpdGlvbiA9ICh0ZXN0TWF0cml4ICogdmVjNChk
aWZmLCAxLjApKS54eXogKiAyLjsKICAgICAgICAgIAogICAgICAgICAgaWYgKAogICAgICAgICAg
cG9zaXRpb24ueCA8IHRlc3RTY2FsZS54ICYmIHBvc2l0aW9uLnggPiAtdGVzdFNjYWxlLnggJiYK
ICAgICAgICAgIHBvc2l0aW9uLnkgPCB0ZXN0U2NhbGUueSAmJiBwb3NpdGlvbi55ID4gLXRlc3RT
Y2FsZS55ICYmCiAgICAgICAgICBwb3NpdGlvbi56IDwgdGVzdFNjYWxlLnogJiYgcG9zaXRpb24u
eiA+IC10ZXN0U2NhbGUuegogICAgICAgICAgKSB7CiAgICAgICAgICAgIGRpc2NhcmQ7CiAgICAg
ICAgICB9CiAgICAgICAgfQogICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wKTsgCiAgICAg
IH0KICAgICAgYCwKICAgICAgdW5pZm9ybXM6IHsKICAgICAgICB0ZXN0TWF0cmljZXM6IHsKICAg
ICAgICAgIHZhbHVlOiBtYXRyaWNlcywKICAgICAgICB9LAogICAgICB9LAogICAgfSk7CiAgICAK
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTA7IGkrKykgewogICAgICBjb25zdCBzcGhlcmUgPSBu
ZXcgTWVzaChnZW9tZXRyeSwgbWF0KTsKICAgICAgc3BoZXJlLnBvc2l0aW9uLnNldCgwLCAwLCAw
KTsKICAgICAgc2NlbmUuYWRkKHNwaGVyZSk7ICAgIAogICAgfQogICAgICAgIAogICAgdmFyIHN0
YXRzID0gbmV3IFN0YXRzKCk7CiAgICBzdGF0cy5zaG93UGFuZWwoIDAgKTsgLy8gMDogZnBzLCAx
OiBtcywgMjogbWIsIDMrOiBjdXN0b20KICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoIHN0
YXRzLmRvbSApOwogICAgCiAgICBmdW5jdGlvbiBhbmltYXRlKCkgewogICAgICByZXF1ZXN0QW5p
bWF0aW9uRnJhbWUoYW5pbWF0ZSk7CiAgICAgIHJlbmRlcigpOwogICAgfQogICAgCiAgICBmdW5j
dGlvbiByZW5kZXIoKSB7CiAgICAgIHN0YXRzLmJlZ2luKCk7CiAgICAgIHJlbmRlcmVyLnJlbmRl
cihzY2VuZSwgY2FtZXJhKTsKICAgICAgc3RhdHMuZW5kKCk7CiAgICB9CiAgICAKICAgIGFuaW1h
dGUoKTsKICAgIAogICAgCiAgPC9zY3JpcHQ+ICAgIAo8L2hlYWQ+Cgo8Ym9keT48L2JvZHk+Cgo8
L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>