<?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>90037</bug_id>
          
          <creation_ts>2012-06-26 19:03:26 -0700</creation_ts>
          <short_desc>CSS3 calc: optimise blending expression</short_desc>
          <delta_ts>2012-07-23 19:44:52 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mike Lawther">mikelawther</reporter>
          <assigned_to name="Mike Lawther">mikelawther</assigned_to>
          <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>658246</commentid>
    <comment_count>0</comment_count>
    <who name="Mike Lawther">mikelawther</who>
    <bug_when>2012-06-26 19:03:26 -0700</bug_when>
    <thetext>As suggested by Tony on https://webkit.org/b/86160, the blending expressions generated by transitions involving calc can be improved. Currently they involve 7 allocations.

Mike said &quot;An alternative I considered was to introduce a new type of expression node that was a BlendNode - then you&apos;d only need to alloc one of them [...]

Another thing I could do is if one of from or to is not an expression, to multiply that with its progress to eliminate some nodes. It would still mean allocating a new Length though.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675464</commentid>
    <comment_count>1</comment_count>
      <attachid>153736</attachid>
    <who name="Mike Lawther">mikelawther</who>
    <bug_when>2012-07-22 23:29:04 -0700</bug_when>
    <thetext>Created attachment 153736
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675468</commentid>
    <comment_count>2</comment_count>
    <who name="Mike Lawther">mikelawther</who>
    <bug_when>2012-07-22 23:42:38 -0700</bug_when>
    <thetext>Here are some figures I gathered during performance testing on my desktop Mac Pro. Times given are averaged over three runs.

 I wrote a a testfile that blends 4 calc expressions over a 10s transition: 

------
&lt;style&gt;
  #transition {
      width: -webkit-calc(10% + 10px);
      height: -webkit-calc(10% + 1em);
      margin-left: -webkit-calc(5% - 5px);
      margin-top: -webkit-calc(5% + 1ex);
      background-color: green;
      -webkit-transition: all 10s linear;
      -moz-transition: all 10s linear;
  }

  #transition.go {
      width: -webkit-calc(100% - 50px);
      height: -webkit-calc(80% + 1em);
      margin-left: -webkit-calc(10% - 5px);
      margin-top: -webkit-calc(15% + 1ex);
  }
&lt;/style&gt;
&lt;div style=&quot;width: 500px; height: 500px; border: 1px solid black;&quot;&gt;
    &lt;div id=&quot;transition&quot;&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
    var element = document.getElementById(&quot;transition&quot;);
    element.className = &quot;go&quot;;
&lt;/script&gt;
--------

All times are in microseconds, and are the average time taken during each animation frame.

Baseline (ie current ToT):
 * Style recalc: 73.98us
 * Layout: 91.08us
 * Length::blendCalculation: 0.87us

Generic Blend class (blends two CalcExpressionNodes)
 * Style recalc: 71.44us
 * Layout: 90.70us
 * Length::blendCalculation: 0.75us
 
Length-specific Blend class (as in current patch)
 * Style recalc: 72.75us
 * Layout: 83.17us
 * Length::blendCalculation: 0.72us

The largest improvement was to layout time, which was the deciding factor for choosing the more specific implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675797</commentid>
    <comment_count>3</comment_count>
      <attachid>153736</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-07-23 10:26:59 -0700</bug_when>
    <thetext>Comment on attachment 153736
Patch

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

Nice!

&gt; Source/WebCore/platform/CalculationValue.h:189
&gt; +    explicit CalcExpressionBlendLength(Length from, Length to, float progress)

Nit: explicit doesn&apos;t do anything here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676297</commentid>
    <comment_count>4</comment_count>
    <who name="Mike Lawther">mikelawther</who>
    <bug_when>2012-07-23 18:46:18 -0700</bug_when>
    <thetext>Thanks for the review Tony!

&gt; Nit: explicit doesn&apos;t do anything here

Oops - nice catch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676302</commentid>
    <comment_count>5</comment_count>
      <attachid>153932</attachid>
    <who name="Mike Lawther">mikelawther</who>
    <bug_when>2012-07-23 18:50:43 -0700</bug_when>
    <thetext>Created attachment 153932
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676336</commentid>
    <comment_count>6</comment_count>
      <attachid>153932</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-23 19:44:49 -0700</bug_when>
    <thetext>Comment on attachment 153932
Patch for landing

Clearing flags on attachment: 153932

Committed r123419: &lt;http://trac.webkit.org/changeset/123419&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676337</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-23 19:44:52 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153736</attachid>
            <date>2012-07-22 23:29:04 -0700</date>
            <delta_ts>2012-07-23 18:50:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90037-20120723162856.patch</filename>
            <type>text/plain</type>
            <size>4566</size>
            <attacher name="Mike Lawther">mikelawther</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMjgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWNlN2IyNzZjYjhlMThi
ZGYzOGI2YTBmY2NhZDc0NmViZjY1NzA1Zi4uMzY4OWRhMDU3MjljNDUzNjMyOTc1ODNmNjg4YWRl
YTIxYjBkZGExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTA3LTIyICBNaWtl
IExhd3RoZXIgIDxtaWtlbGF3dGhlckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ1NTMyBjYWxj
OiBvcHRpbWlzZSBibGVuZGluZyBleHByZXNzaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDAzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjZSBhIG5ldyBjYWxjIGV4cHJlc3Npb24gbm9k
ZSAtIGEgQmxlbmRMZW5ndGggbm9kZS4gR2l2ZW4gdHdvIExlbmd0aHMgYW5kIGEgcHJvZ3Jlc3MK
KyAgICAgICAgdGhpcyBibGVuZHMgdGhlbSB0b2dldGhlciB3aGVuIGV2YWx1YXRlZC4KKworICAg
ICAgICBBbiBhbHRlcm5hdGl2ZSBhbmQgbW9yZSBnZW5lcmFsIGFwcHJvYWNoIG9mIGJlaW5nIGFi
bGUgdG8gYmxlbmQgdHdvIENhbGNFeHByZXNzaW9uTm9kZXMgd2FzCisgICAgICAgIHRlc3RlZCwg
YnV0IGludm9sdmVzIG1vcmUgbWVtb3J5IGFsbG9jYXRpb25zLCB3YXMgbWVhc3VyYWJseSBzbG93
ZXIsIGFuZCBub3RoaW5nIGN1cnJlbnRseQorICAgICAgICB3b3VsZCBtYWtlIHVzZSBvZiB0aGUg
Z2VuZXJhbGl0eS4gCisKKyAgICAgICAgTm8gZnVuY3Rpb25hbCBjaGFuZ2UuIENvdmVyZWQgYnkg
ZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmg6
CisgICAgICAgIChDYWxjRXhwcmVzc2lvbkJsZW5kTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhbGNFeHByZXNzaW9uQmxlbmRMZW5ndGg6OkNhbGNFeHByZXNzaW9uQmxlbmRMZW5ndGgpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FsY0V4cHJlc3Npb25CbGVuZExlbmd0aDo6b3BlcmF0b3I9PSk6
CisgICAgICAgIChXZWJDb3JlOjpDYWxjRXhwcmVzc2lvbkJsZW5kTGVuZ3RoOjpldmFsdWF0ZSk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9MZW5ndGguY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpibGVuZENhbGN1bGF0aW9uKToKKwogMjAxMi0wNy0yMCAg
S2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVuYW1lIEVOQUJM
RV9EQVRBTElTVCB0byBFTkFCTEVfREFUQUxJU1RfRUxFTUVOVApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5oCmluZGV4IDFhNzY2MzcwZGYzODA5ZWQ1OTZmMjRmZGYy
MDY4YTk3OWZiNDdmNGUuLjZkOWNjZmM5ZDk4NDZhZTBmZTk2NDJhYzYzY2ExZDRlNmUyNTFiMjkg
MTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmgKQEAgLTU2LDcg
KzU2LDggQEAgZW51bSBDYWxjRXhwcmVzc2lvbk5vZGVUeXBlIHsKICAgICBDYWxjRXhwcmVzc2lv
bk5vZGVVbmRlZmluZWQsCiAgICAgQ2FsY0V4cHJlc3Npb25Ob2RlTnVtYmVyLAogICAgIENhbGNF
eHByZXNzaW9uTm9kZUxlbmd0aCwKLSAgICBDYWxjRXhwcmVzc2lvbk5vZGVCaW5hcnlPcGVyYXRp
b24KKyAgICBDYWxjRXhwcmVzc2lvbk5vZGVCaW5hcnlPcGVyYXRpb24sCisgICAgQ2FsY0V4cHJl
c3Npb25Ob2RlQmxlbmRMZW5ndGgsCiB9OwogICAgICAgICAKIGNsYXNzIENhbGNFeHByZXNzaW9u
Tm9kZSB7CkBAIC0xODMsNiArMTg0LDM3IEBAIHByaXZhdGU6CiAgICAgQ2FsY09wZXJhdG9yIG1f
b3BlcmF0b3I7CiB9OwogCitjbGFzcyBDYWxjRXhwcmVzc2lvbkJsZW5kTGVuZ3RoIDogcHVibGlj
IENhbGNFeHByZXNzaW9uTm9kZSB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgQ2FsY0V4cHJlc3Np
b25CbGVuZExlbmd0aChMZW5ndGggZnJvbSwgTGVuZ3RoIHRvLCBmbG9hdCBwcm9ncmVzcykKKyAg
ICAgICAgOiBtX2Zyb20oZnJvbSkKKyAgICAgICAgLCBtX3RvKHRvKQorICAgICAgICAsIG1fcHJv
Z3Jlc3MocHJvZ3Jlc3MpCisgICAgeworICAgICAgICBtX3R5cGUgPSBDYWxjRXhwcmVzc2lvbk5v
ZGVCbGVuZExlbmd0aDsKKyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENh
bGNFeHByZXNzaW9uQmxlbmRMZW5ndGgmIG8pIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV9wcm9ncmVzcyA9PSBvLm1fcHJvZ3Jlc3MgJiYgbV9mcm9tID09IG8ubV9mcm9tICYmIG1fdG8g
PT0gby5tX3RvOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBDYWxjRXhwcmVzc2lvbk5vZGUmIG8pIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gdHlw
ZSgpID09IG8udHlwZSgpICYmICp0aGlzID09IHN0YXRpY19jYXN0PGNvbnN0IENhbGNFeHByZXNz
aW9uQmxlbmRMZW5ndGgmPihvKTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBmbG9hdCBldmFs
dWF0ZShmbG9hdCBtYXhWYWx1ZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAoMS4wZiAt
IG1fcHJvZ3Jlc3MpICogZmxvYXRWYWx1ZUZvckxlbmd0aChtX2Zyb20sIG1heFZhbHVlKSArIG1f
cHJvZ3Jlc3MgKiBmbG9hdFZhbHVlRm9yTGVuZ3RoKG1fdG8sIG1heFZhbHVlKTsKKyAgICB9Cisg
ICAgCitwcml2YXRlOiAgCisgICAgTGVuZ3RoIG1fZnJvbTsKKyAgICBMZW5ndGggbV90bzsKKyAg
ICBmbG9hdCBtX3Byb2dyZXNzOworfTsKKyAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIENhbGN1bGF0aW9uVmFsdWVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTGVuZ3RoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5jcHAK
aW5kZXggOWQ5M2NjNjlmNzllMWYxMmJiYjg1YWU3NGIxZGJlNTlhNjc1YjU0NC4uMTEwZGJjZDk2
YmZiOTA2N2U1YWM2ZjYxMWM3N2U3ZTBmMDlkY2NiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTGVuZ3RoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5n
dGguY3BwCkBAIC0yMTAsMTcgKzIxMCw3IEBAIExlbmd0aCBMZW5ndGg6OmJsZW5kQ2FsY3VsYXRp
b24oY29uc3QgTGVuZ3RoJiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MpIGNvbnN0CiAgICAgaWYgKHBy
b2dyZXNzID49IDEuMCkKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgICAgICAKLSAgICAvLyBG
SVhNRTogaHR0cHM6Ly93ZWJraXQub3JnL2IvOTAwMzcgLSBzb21lIG9mIHRoZXNlIGFsbG9jYXRp
b25zIGNhbiBiZSBlbGltaW5hdGVkCi0gICAgT3duUHRyPENhbGNFeHByZXNzaW9uTm9kZT4gc3Rh
cnRTY2FsZSA9IGFkb3B0UHRyKG5ldyBDYWxjRXhwcmVzc2lvbk51bWJlcigxLjAgLSBwcm9ncmVz
cykpOwotICAgIE93blB0cjxDYWxjRXhwcmVzc2lvbk5vZGU+IHN0YXJ0TGVuZ3RoID0gYWRvcHRQ
dHIobmV3IENhbGNFeHByZXNzaW9uTGVuZ3RoKGZyb20pKTsKLSAgICBPd25QdHI8Q2FsY0V4cHJl
c3Npb25Ob2RlPiBzdGFydE5vZGUgPSBhZG9wdFB0cihuZXcgQ2FsY0V4cHJlc3Npb25CaW5hcnlP
cGVyYXRpb24oc3RhcnRTY2FsZS5yZWxlYXNlKCksIHN0YXJ0TGVuZ3RoLnJlbGVhc2UoKSwgQ2Fs
Y011bHRpcGx5KSk7Ci0gICAgCi0gICAgT3duUHRyPENhbGNFeHByZXNzaW9uTm9kZT4gZW5kU2Nh
bGUgPSBhZG9wdFB0cihuZXcgQ2FsY0V4cHJlc3Npb25OdW1iZXIocHJvZ3Jlc3MpKTsKLSAgICBP
d25QdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiBlbmRMZW5ndGggPSBhZG9wdFB0cihuZXcgQ2FsY0V4
cHJlc3Npb25MZW5ndGgoKnRoaXMpKTsKLSAgICBPd25QdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiBl
bmROb2RlID0gYWRvcHRQdHIobmV3IENhbGNFeHByZXNzaW9uQmluYXJ5T3BlcmF0aW9uKGVuZFNj
YWxlLnJlbGVhc2UoKSwgZW5kTGVuZ3RoLnJlbGVhc2UoKSwgQ2FsY011bHRpcGx5KSk7Ci0gICAg
Ci0gICAgT3duUHRyPENhbGNFeHByZXNzaW9uTm9kZT4gYmxlbmQgPSBhZG9wdFB0cihuZXcgQ2Fs
Y0V4cHJlc3Npb25CaW5hcnlPcGVyYXRpb24oc3RhcnROb2RlLnJlbGVhc2UoKSwgZW5kTm9kZS5y
ZWxlYXNlKCksIENhbGNBZGQpKTsKLSAgICAgICAgCisgICAgT3duUHRyPENhbGNFeHByZXNzaW9u
Tm9kZT4gYmxlbmQgPSBhZG9wdFB0cihuZXcgQ2FsY0V4cHJlc3Npb25CbGVuZExlbmd0aChmcm9t
LCAqdGhpcywgcHJvZ3Jlc3MpKTsKICAgICByZXR1cm4gTGVuZ3RoKENhbGN1bGF0aW9uVmFsdWU6
OmNyZWF0ZShibGVuZC5yZWxlYXNlKCksIENhbGN1bGF0aW9uUmFuZ2VBbGwpKTsKIH0KICAgICAg
ICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153932</attachid>
            <date>2012-07-23 18:50:43 -0700</date>
            <delta_ts>2012-07-23 19:44:49 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-90037-20120724115034.patch</filename>
            <type>text/plain</type>
            <size>4553</size>
            <attacher name="Mike Lawther">mikelawther</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMjgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWNlN2IyNzZjYjhlMThi
ZGYzOGI2YTBmY2NhZDc0NmViZjY1NzA1Zi4uNzk3MjRhODg5YTI0Yzg5MTE2YzJlMWNkZmJmM2Y1
MGY3ODJkMmYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTA3LTIyICBNaWtl
IExhd3RoZXIgIDxtaWtlbGF3dGhlckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ1NTMyBjYWxj
OiBvcHRpbWlzZSBibGVuZGluZyBleHByZXNzaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDAzNworCisgICAgICAgIFJldmlld2VkIGJ5IFRvbnkg
Q2hhbmcuCisKKyAgICAgICAgSW50cm9kdWNlIGEgbmV3IGNhbGMgZXhwcmVzc2lvbiBub2RlIC0g
YSBCbGVuZExlbmd0aCBub2RlLiBHaXZlbiB0d28gTGVuZ3RocyBhbmQgYSBwcm9ncmVzcworICAg
ICAgICB0aGlzIGJsZW5kcyB0aGVtIHRvZ2V0aGVyIHdoZW4gZXZhbHVhdGVkLgorCisgICAgICAg
IEFuIGFsdGVybmF0aXZlIGFuZCBtb3JlIGdlbmVyYWwgYXBwcm9hY2ggb2YgYmVpbmcgYWJsZSB0
byBibGVuZCB0d28gQ2FsY0V4cHJlc3Npb25Ob2RlcyB3YXMKKyAgICAgICAgdGVzdGVkLCBidXQg
aW52b2x2ZXMgbW9yZSBtZW1vcnkgYWxsb2NhdGlvbnMsIHdhcyBtZWFzdXJhYmx5IHNsb3dlciwg
YW5kIG5vdGhpbmcgY3VycmVudGx5CisgICAgICAgIHdvdWxkIG1ha2UgdXNlIG9mIHRoZSBnZW5l
cmFsaXR5LiAKKworICAgICAgICBObyBmdW5jdGlvbmFsIGNoYW5nZS4gQ292ZXJlZCBieSBleGlz
dGluZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuaDoKKyAg
ICAgICAgKENhbGNFeHByZXNzaW9uQmxlbmRMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fs
Y0V4cHJlc3Npb25CbGVuZExlbmd0aDo6Q2FsY0V4cHJlc3Npb25CbGVuZExlbmd0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpDYWxjRXhwcmVzc2lvbkJsZW5kTGVuZ3RoOjpvcGVyYXRvcj09KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbGNFeHByZXNzaW9uQmxlbmRMZW5ndGg6OmV2YWx1YXRlKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL0xlbmd0aC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMZW5ndGg6OmJsZW5kQ2FsY3VsYXRpb24pOgorCiAyMDEyLTA3LTIwICBLZW50
IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW5hbWUgRU5BQkxFX0RB
VEFMSVNUIHRvIEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9DYWxjdWxhdGlvblZhbHVlLmgKaW5kZXggMWE3NjYzNzBkZjM4MDllZDU5NmYyNGZkZjIwNjhh
OTc5ZmI0N2Y0ZS4uZDBhYzgyZDMxNzUwNjM3ZGVjNWUxZGJkMDZjN2FhYTE1ZWYyNjQ5YyAxMDA3
NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuaApAQCAtNTYsNyArNTYs
OCBAQCBlbnVtIENhbGNFeHByZXNzaW9uTm9kZVR5cGUgewogICAgIENhbGNFeHByZXNzaW9uTm9k
ZVVuZGVmaW5lZCwKICAgICBDYWxjRXhwcmVzc2lvbk5vZGVOdW1iZXIsCiAgICAgQ2FsY0V4cHJl
c3Npb25Ob2RlTGVuZ3RoLAotICAgIENhbGNFeHByZXNzaW9uTm9kZUJpbmFyeU9wZXJhdGlvbgor
ICAgIENhbGNFeHByZXNzaW9uTm9kZUJpbmFyeU9wZXJhdGlvbiwKKyAgICBDYWxjRXhwcmVzc2lv
bk5vZGVCbGVuZExlbmd0aCwKIH07CiAgICAgICAgIAogY2xhc3MgQ2FsY0V4cHJlc3Npb25Ob2Rl
IHsKQEAgLTE4Myw2ICsxODQsMzcgQEAgcHJpdmF0ZToKICAgICBDYWxjT3BlcmF0b3IgbV9vcGVy
YXRvcjsKIH07CiAKK2NsYXNzIENhbGNFeHByZXNzaW9uQmxlbmRMZW5ndGggOiBwdWJsaWMgQ2Fs
Y0V4cHJlc3Npb25Ob2RlIHsKK3B1YmxpYzoKKyAgICBDYWxjRXhwcmVzc2lvbkJsZW5kTGVuZ3Ro
KExlbmd0aCBmcm9tLCBMZW5ndGggdG8sIGZsb2F0IHByb2dyZXNzKQorICAgICAgICA6IG1fZnJv
bShmcm9tKQorICAgICAgICAsIG1fdG8odG8pCisgICAgICAgICwgbV9wcm9ncmVzcyhwcm9ncmVz
cykKKyAgICB7CisgICAgICAgIG1fdHlwZSA9IENhbGNFeHByZXNzaW9uTm9kZUJsZW5kTGVuZ3Ro
OworICAgIH0KKyAgICAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ2FsY0V4cHJlc3Npb25C
bGVuZExlbmd0aCYgbykgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3Byb2dyZXNzID09
IG8ubV9wcm9ncmVzcyAmJiBtX2Zyb20gPT0gby5tX2Zyb20gJiYgbV90byA9PSBvLm1fdG87Cisg
ICAgfQorICAgIAorICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENhbGNFeHByZXNz
aW9uTm9kZSYgbykgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiB0eXBlKCkgPT0gby50eXBl
KCkgJiYgKnRoaXMgPT0gc3RhdGljX2Nhc3Q8Y29uc3QgQ2FsY0V4cHJlc3Npb25CbGVuZExlbmd0
aCY+KG8pOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIGZsb2F0IGV2YWx1YXRlKGZsb2F0IG1h
eFZhbHVlKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICgxLjBmIC0gbV9wcm9ncmVzcykg
KiBmbG9hdFZhbHVlRm9yTGVuZ3RoKG1fZnJvbSwgbWF4VmFsdWUpICsgbV9wcm9ncmVzcyAqIGZs
b2F0VmFsdWVGb3JMZW5ndGgobV90bywgbWF4VmFsdWUpOworICAgIH0KKyAgICAKK3ByaXZhdGU6
ICAKKyAgICBMZW5ndGggbV9mcm9tOworICAgIExlbmd0aCBtX3RvOworICAgIGZsb2F0IG1fcHJv
Z3Jlc3M7Cit9OworICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gQ2Fs
Y3VsYXRpb25WYWx1ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5n
dGguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNwcAppbmRleCA5ZDkzY2M2
OWY3OWUxZjEyYmJiODVhZTc0YjFkYmU1OWE2NzViNTQ0Li4xMTBkYmNkOTZiZmI5MDY3ZTVhYzZm
NjExYzc3ZTdlMGYwOWRjY2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
ZW5ndGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5jcHAKQEAgLTIx
MCwxNyArMjEwLDcgQEAgTGVuZ3RoIExlbmd0aDo6YmxlbmRDYWxjdWxhdGlvbihjb25zdCBMZW5n
dGgmIGZyb20sIGRvdWJsZSBwcm9ncmVzcykgY29uc3QKICAgICBpZiAocHJvZ3Jlc3MgPj0gMS4w
KQogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgICAgIAotICAgIC8vIEZJWE1FOiBodHRwczov
L3dlYmtpdC5vcmcvYi85MDAzNyAtIHNvbWUgb2YgdGhlc2UgYWxsb2NhdGlvbnMgY2FuIGJlIGVs
aW1pbmF0ZWQKLSAgICBPd25QdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiBzdGFydFNjYWxlID0gYWRv
cHRQdHIobmV3IENhbGNFeHByZXNzaW9uTnVtYmVyKDEuMCAtIHByb2dyZXNzKSk7Ci0gICAgT3du
UHRyPENhbGNFeHByZXNzaW9uTm9kZT4gc3RhcnRMZW5ndGggPSBhZG9wdFB0cihuZXcgQ2FsY0V4
cHJlc3Npb25MZW5ndGgoZnJvbSkpOwotICAgIE93blB0cjxDYWxjRXhwcmVzc2lvbk5vZGU+IHN0
YXJ0Tm9kZSA9IGFkb3B0UHRyKG5ldyBDYWxjRXhwcmVzc2lvbkJpbmFyeU9wZXJhdGlvbihzdGFy
dFNjYWxlLnJlbGVhc2UoKSwgc3RhcnRMZW5ndGgucmVsZWFzZSgpLCBDYWxjTXVsdGlwbHkpKTsK
LSAgICAKLSAgICBPd25QdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiBlbmRTY2FsZSA9IGFkb3B0UHRy
KG5ldyBDYWxjRXhwcmVzc2lvbk51bWJlcihwcm9ncmVzcykpOwotICAgIE93blB0cjxDYWxjRXhw
cmVzc2lvbk5vZGU+IGVuZExlbmd0aCA9IGFkb3B0UHRyKG5ldyBDYWxjRXhwcmVzc2lvbkxlbmd0
aCgqdGhpcykpOwotICAgIE93blB0cjxDYWxjRXhwcmVzc2lvbk5vZGU+IGVuZE5vZGUgPSBhZG9w
dFB0cihuZXcgQ2FsY0V4cHJlc3Npb25CaW5hcnlPcGVyYXRpb24oZW5kU2NhbGUucmVsZWFzZSgp
LCBlbmRMZW5ndGgucmVsZWFzZSgpLCBDYWxjTXVsdGlwbHkpKTsKLSAgICAKLSAgICBPd25QdHI8
Q2FsY0V4cHJlc3Npb25Ob2RlPiBibGVuZCA9IGFkb3B0UHRyKG5ldyBDYWxjRXhwcmVzc2lvbkJp
bmFyeU9wZXJhdGlvbihzdGFydE5vZGUucmVsZWFzZSgpLCBlbmROb2RlLnJlbGVhc2UoKSwgQ2Fs
Y0FkZCkpOwotICAgICAgICAKKyAgICBPd25QdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiBibGVuZCA9
IGFkb3B0UHRyKG5ldyBDYWxjRXhwcmVzc2lvbkJsZW5kTGVuZ3RoKGZyb20sICp0aGlzLCBwcm9n
cmVzcykpOwogICAgIHJldHVybiBMZW5ndGgoQ2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKGJsZW5k
LnJlbGVhc2UoKSwgQ2FsY3VsYXRpb25SYW5nZUFsbCkpOwogfQogICAgICAgICAgIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>