<?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>109718</bug_id>
          
          <creation_ts>2013-02-13 10:51:21 -0800</creation_ts>
          <short_desc>[CSS Grid Layout] Refactor grid position resolution code to support an internal grid representation</short_desc>
          <delta_ts>2013-02-18 15:17:36 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          
          <blocked>103316</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Julien Chaffraix">jchaffraix</reporter>
          <assigned_to name="Julien Chaffraix">jchaffraix</assigned_to>
          <cc>eric</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>832069</commentid>
    <comment_count>0</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2013-02-13 10:51:21 -0800</bug_when>
    <thetext>Currently we always re-resolve the grid computed position when we iterate over all our children. 

As computing the 2D grid will be expensive, we would rather reuse the grid items&apos; position information from the grid instead of recomputing it every time as we do (this will be even more true when we add support for grid-auto-flow as this is not an answer that can be inferred from the style anymore).

We have 2 variants of resolveGridPosition that do the same thing but could be updated to return different results based on whether we use our cached grid or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832086</commentid>
    <comment_count>1</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2013-02-13 11:07:42 -0800</bug_when>
    <thetext>Scratch that, this refactoring would make sense *after* we land a grid representation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834336</commentid>
    <comment_count>2</comment_count>
      <attachid>188634</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2013-02-15 13:33:07 -0800</bug_when>
    <thetext>Created attachment 188634
Proposed patch: Split the code between resolution from style and cached position.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834355</commentid>
    <comment_count>3</comment_count>
      <attachid>188634</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2013-02-15 13:51:10 -0800</bug_when>
    <thetext>Comment on attachment 188634
Proposed patch: Split the code between resolution from style and cached position.

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

&gt; Source/WebCore/rendering/RenderGrid.cpp:203
&gt; +    m_gridItemsPosition.clear();

m_gridItemCoordinates would be more consistent with the fact that we&apos;re storing GridCoordinates.

&gt; Source/WebCore/rendering/RenderGrid.cpp:540
&gt;      m_grid.clear();
&gt; +    m_gridItemsPosition.clear();

Now that there&apos;s two things we need to do to clear, and with my patch that just landed it will need a const_cast, maybe we should move this into a helper function.

&gt; Source/WebCore/rendering/RenderGrid.cpp:543
&gt; +size_t RenderGrid::cachedGridPosition(TrackSizingDirection direction, const RenderBox* gridItem) const

How about having a function that returns the GridCoordinates and then using the GridCoordinates in all the calling locations?

Also, now that we have GridPosition and GridCoordinates, this should probably be called cachedGridCoordinates.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834361</commentid>
    <comment_count>4</comment_count>
      <attachid>188634</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-02-15 13:57:25 -0800</bug_when>
    <thetext>Comment on attachment 188634
Proposed patch: Split the code between resolution from style and cached position.

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

&gt;&gt; Source/WebCore/rendering/RenderGrid.cpp:540
&gt;&gt; +    m_gridItemsPosition.clear();
&gt; 
&gt; Now that there&apos;s two things we need to do to clear, and with my patch that just landed it will need a const_cast, maybe we should move this into a helper function.

Might also want to make an RAII class that populates and clears when it goes out of scope, but that would be a separate patch.

&gt; Source/WebCore/rendering/RenderGrid.h:53
&gt; +    struct GridCoordinates {

Nit: I would name the struct GridCoordinate since it&apos;s a single coordinate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835482</commentid>
    <comment_count>5</comment_count>
      <attachid>188634</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2013-02-18 07:50:45 -0800</bug_when>
    <thetext>Comment on attachment 188634
Proposed patch: Split the code between resolution from style and cached position.

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

&gt;&gt; Source/WebCore/rendering/RenderGrid.cpp:203
&gt;&gt; +    m_gridItemsPosition.clear();
&gt; 
&gt; m_gridItemCoordinates would be more consistent with the fact that we&apos;re storing GridCoordinates.

OK.

&gt;&gt;&gt; Source/WebCore/rendering/RenderGrid.cpp:540
&gt;&gt;&gt; +    m_gridItemsPosition.clear();
&gt;&gt; 
&gt;&gt; Now that there&apos;s two things we need to do to clear, and with my patch that just landed it will need a const_cast, maybe we should move this into a helper function.
&gt; 
&gt; Might also want to make an RAII class that populates and clears when it goes out of scope, but that would be a separate patch.

I am not entirely convinced we should do it *now*. If the code complexity increases (which will happen as we support more of the specification) and more branches are added, maybe it would make sense. Also layout methods do not have early returns which makes a RAII pattern an overkill. I will file a bug about it to track that.

&gt;&gt; Source/WebCore/rendering/RenderGrid.cpp:543
&gt;&gt; +size_t RenderGrid::cachedGridPosition(TrackSizingDirection direction, const RenderBox* gridItem) const
&gt; 
&gt; How about having a function that returns the GridCoordinates and then using the GridCoordinates in all the calling locations?
&gt; 
&gt; Also, now that we have GridPosition and GridCoordinates, this should probably be called cachedGridCoordinates.

Sounds good.

&gt;&gt; Source/WebCore/rendering/RenderGrid.h:53
&gt;&gt; +    struct GridCoordinates {
&gt; 
&gt; Nit: I would name the struct GridCoordinate since it&apos;s a single coordinate.

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835488</commentid>
    <comment_count>6</comment_count>
      <attachid>188889</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2013-02-18 07:57:25 -0800</bug_when>
    <thetext>Created attachment 188889
Updated patch for an EWS run.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835783</commentid>
    <comment_count>7</comment_count>
      <attachid>188889</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-18 15:17:32 -0800</bug_when>
    <thetext>Comment on attachment 188889
Updated patch for an EWS run.

Clearing flags on attachment: 188889

Committed r143268: &lt;http://trac.webkit.org/changeset/143268&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835784</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-18 15:17:36 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188634</attachid>
            <date>2013-02-15 13:33:07 -0800</date>
            <delta_ts>2013-02-18 07:57:23 -0800</delta_ts>
            <desc>Proposed patch: Split the code between resolution from style and cached position.</desc>
            <filename>bug-109718-20130215132933.patch</filename>
            <type>text/plain</type>
            <size>10656</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzMDMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWJlMTMzNzg4NGI2ZTYy
NGYwY2FmZDNkOTI4YWQ5NzQ3ZWE1Mzc0MC4uN2U2ZDY3YmYxMjE2OTlkZTc3MWI5MTU3YWNhZDdj
OWI1ZDA5ZGQ1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEzLTAyLTE1ICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIFtDU1MgR3Jp
ZCBMYXlvdXRdIFJlZmFjdG9yIGdyaWQgcG9zaXRpb24gcmVzb2x1dGlvbiBjb2RlIHRvIHN1cHBv
cnQgYW4gaW50ZXJuYWwgZ3JpZCByZXByZXNlbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NzE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gc3VwcG9ydCBhdXRvIHBsYWNl
bWVudCAod2hlcmUgd2UgY2FuJ3QgaW5mZXIgYSBncmlkIGl0ZW0ncyBwb3NpdGlvbiBmcm9tIGl0
cyBzdHlsZSksCisgICAgICAgIHdlIG5lZWQgdG8gaGF2ZSAyIGNvZGUgcGF0aHM6CisgICAgICAg
IC0gT25lIHRoYXQgcGxhY2VzIHRoZSBlbGVtZW50cyBvbiB0aGUgZ3JpZCByZXByZXNlbnRhdGlv
bi4KKyAgICAgICAgLSBPbmUgdGhhdCByZXVzZSB0aGUgZ3JpZCByZXByZXNlbnRhdGlvbiB0byBy
ZXR1cm4gdGhlIHBvc2l0aW9uLgorCisgICAgICAgIFRoaXMgY29kZSBwYXRoIGltcGxlbWVudHMg
dGhpcyBzcGxpdCBzbyB0aGF0IHdlIGNhbiBhZGQgYXV0byBwbGFjZW1lbnQgaW4gYSBmb2xsb3ct
dXAgcGF0Y2goZXMpLgorICAgICAgICBBbHNvIGluIG9yZGVyIHRvIGF2b2lkIGEgTyhuXjIpIGJl
aGF2aW9yIFt3YWxraW5nIG92ZXIgb3VyIGdyaWQgdG8gZmluZCBhIGdyaWQgaXRlbSdzIHBvc2l0
aW9uXSwKKyAgICAgICAgdGhlIGNhY2hlZCBwb3NpdGlvbiBjb2RlIHBhdGggbmVlZGVkIGFuIGVm
ZmljaWVudCB3YXkgdG8gZmluZCB0aGUgZ3JpZCBpdGVtcyAtPiBwb3NpdGlvbiBtYXBwaW5nLgor
CisgICAgICAgIFJlZmFjdG9yaW5nLCBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
R3JpZDo6Y2FjaGVkR3JpZFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6
OnJlc29sdmVHcmlkUG9zaXRpb25Gcm9tU3R5bGUpOgorICAgICAgICBUaGVzZSBtZXRob2RzIGlt
cGxlbWVudHMgdGhlIGFib3ZlIHNwbGl0LiBUaGUgZmlyc3Qgb25lCisgICAgICAgIHJldXNlcyBv
dXIgY2FjaGVkIGluZm9ybWF0aW9uIHdoZXJlYXMgdGhlIG90aGVyIG9uZSBpcworICAgICAgICB1
c2VkIHRvIGJ1aWxkIHRoZSBjYWNoZS4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6
Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
R3JpZDo6bGF5b3V0R3JpZEl0ZW1zKToKKyAgICAgICAgQWRkZWQgc29tZSBjb2RlIHRvIGNsZWFy
IHRoZSBncmlkIGl0ZW1zJyBwb3NpdGlvbi4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3Jp
ZDo6bG9naWNhbENvbnRlbnRIZWlnaHRGb3JDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJHcmlkOjpmaW5kQ2hpbGRMb2dpY2FsUG9zaXRpb24pOgorICAgICAgICBVcGRhdGVkIHRoZXNl
IGZ1bmN0aW9ucyB0byB1c2UgY2FjaGVkR3JpZFBvc2l0aW9uLgorCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJHcmlkOjptYXhpbXVtSW5kZXhJbkRpcmVjdGlvbik6CisgICAgICAgIEFkZGVkIGEg
Y29tbWVudCBhYm91dCB3aHkgd2UgZG9uJ3QgdXNlIGNhY2hlZEdyaWRQb3NpdGlvbi4KKworICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6aW5zZXJ0SXRlbUludG9HcmlkKToKKyAgICAgICAg
QWRkZWQgdGhpcyBoZWxwZXIgZnVuY3Rpb24gdG8gaW5zZXJ0IGludG8gdGhlIGdyaWQgYW5kCisg
ICAgICAgIGNhY2hlIHRoZSBwb3NpdGlvbiBpbiB0aGUgcmV2ZXJzZSBsb29rdXAgbWFwLgorCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpwbGFjZUl0ZW1zT25HcmlkKToKKyAgICAgICAg
VXBkYXRlZCB0byBjYWxsIGluc2VydEl0ZW1JbnRvR3JpZC4gQWxzbyBhZGRlZCBhbiBBU1NFUlQK
KyAgICAgICAgc2ltaWxhciB0byBtX2dyaWQuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
R3JpZC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6R3JpZENvb3JkaW5hdGVzOjpH
cmlkQ29vcmRpbmF0ZXMpOgorICAgICAgICBBZGRlZCB0aGlzIFBPRCB0byBob2xkIHRoZSBjb29y
ZGluYXRlcyBpbiBvdXIgcmV2ZXJzZSBtYXAuCisKIDIwMTMtMDItMTUgIEFuZGVycyBDYXJsc3Nv
biAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgY29uc3QgZnJvbSBhIGJ1
bmNoIG9mIFN0b3JhZ2VBcmVhIG1lbWJlciBmdW5jdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJHcmlkLmNwcAppbmRleCAxM2VmYWQ5OTlmMjRlNDcyZjEyNTM2MGNmNmM5Y2MyODcy
MmMxOWUzLi45NzJiZGMwMDA0NDQ5ODIwNjdmNjMwNjljMThjMzU5ZDI3MDFjZjFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBAIC0yMDAsNiArMjAwLDcgQEAgdm9p
ZCBSZW5kZXJHcmlkOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpCiAKICAgICBzZXRQ
cmVmZXJyZWRMb2dpY2FsV2lkdGhzRGlydHkoZmFsc2UpOwogICAgIG1fZ3JpZC5jbGVhcigpOwor
ICAgIG1fZ3JpZEl0ZW1zUG9zaXRpb24uY2xlYXIoKTsKIH0KIAogTGF5b3V0VW5pdCBSZW5kZXJH
cmlkOjpjb21wdXRlUHJlZmVycmVkVHJhY2tXaWR0aChjb25zdCBMZW5ndGgmIGxlbmd0aCwgc2l6
ZV90IHRyYWNrSW5kZXgpIGNvbnN0CkBAIC0zMTMsOCArMzE0LDkgQEAgc2l6ZV90IFJlbmRlckdy
aWQ6Om1heGltdW1JbmRleEluRGlyZWN0aW9uKFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlv
bikgY29uc3QKICAgICBzaXplX3QgbWF4aW11bUluZGV4ID0gdHJhY2tTdHlsZXMuc2l6ZSgpOwog
CiAgICAgZm9yIChSZW5kZXJCb3gqIGNoaWxkID0gZmlyc3RDaGlsZEJveCgpOyBjaGlsZDsgY2hp
bGQgPSBjaGlsZC0+bmV4dFNpYmxpbmdCb3goKSkgewotICAgICAgICBHcmlkUG9zaXRpb24gcG9z
aXRpb24gPSAoZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gY2hpbGQtPnN0eWxlKCktPmdyaWRJ
dGVtQ29sdW1uKCkgOiBjaGlsZC0+c3R5bGUoKS0+Z3JpZEl0ZW1Sb3coKTsKLSAgICAgICAgbWF4
aW11bUluZGV4ID0gc3RkOjptYXgobWF4aW11bUluZGV4LCByZXNvbHZlR3JpZFBvc2l0aW9uKHBv
c2l0aW9uKSArIDEpOworICAgICAgICBjb25zdCBHcmlkUG9zaXRpb24mIHBvc2l0aW9uID0gKGRp
cmVjdGlvbiA9PSBGb3JDb2x1bW5zKSA/IGNoaWxkLT5zdHlsZSgpLT5ncmlkSXRlbUNvbHVtbigp
IDogY2hpbGQtPnN0eWxlKCktPmdyaWRJdGVtUm93KCk7CisgICAgICAgIC8vIFRoaXMgZnVuY3Rp
b24gYnlwYXNzZXMgdGhlIGNhY2hlIGFzIGl0IGlzIHVzZWQgdG8gYnVpbGQgaXQuIEFsc28gJ2F1
dG8nIGl0ZW1zIHdpbGwgbmVlZCB0byBiZSByZXNvbHZlZCBpbiBzZXBlcmF0ZSBwaGFzZXMgYW55
d2F5LgorICAgICAgICBtYXhpbXVtSW5kZXggPSBzdGQ6Om1heChtYXhpbXVtSW5kZXgsIHJlc29s
dmVHcmlkUG9zaXRpb25Gcm9tU3R5bGUocG9zaXRpb24pICsgMSk7CiAgICAgfQogCiAgICAgcmV0
dXJuIG1heGltdW1JbmRleDsKQEAgLTMyOSw3ICszMzEsNyBAQCBMYXlvdXRVbml0IFJlbmRlckdy
aWQ6OmxvZ2ljYWxDb250ZW50SGVpZ2h0Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCwgVmVjdG9y
PEdyaQogICAgIGlmICghY2hpbGQtPm5lZWRzTGF5b3V0KCkpCiAgICAgICAgIGNoaWxkLT5zZXRO
ZWVkc0xheW91dCh0cnVlLCBNYXJrT25seVRoaXMpOwogCi0gICAgc2l6ZV90IGNvbHVtblRyYWNr
ID0gcmVzb2x2ZUdyaWRQb3NpdGlvbihGb3JDb2x1bW5zLCBjaGlsZCk7CisgICAgc2l6ZV90IGNv
bHVtblRyYWNrID0gY2FjaGVkR3JpZFBvc2l0aW9uKEZvckNvbHVtbnMsIGNoaWxkKTsKICAgICBj
aGlsZC0+c2V0T3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbFdpZHRoKGNvbHVt
blRyYWNrc1tjb2x1bW5UcmFja10ubV91c2VkQnJlYWR0aCk7CiAgICAgY2hpbGQtPmNsZWFyT3Zl
cnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbEhlaWdodCgpOwogICAgIGNoaWxkLT5s
YXlvdXQoKTsKQEAgLTQ2NiwxOSArNDY4LDI2IEBAIGJvb2wgUmVuZGVyR3JpZDo6dHJhY2tzQXJl
V2lkZXJUaGFuTWluVHJhY2tCcmVhZHRoKFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvCiB9
CiAjZW5kaWYKIAordm9pZCBSZW5kZXJHcmlkOjppbnNlcnRJdGVtSW50b0dyaWQoUmVuZGVyQm94
KiBjaGlsZCwgc2l6ZV90IHJvd1RyYWNrLCBzaXplX3QgY29sdW1uVHJhY2spCit7CisgICAgbV9n
cmlkW3Jvd1RyYWNrXVtjb2x1bW5UcmFja10uYXBwZW5kKGNoaWxkKTsKKyAgICBtX2dyaWRJdGVt
c1Bvc2l0aW9uLnNldChjaGlsZCwgR3JpZENvb3JkaW5hdGVzKHJvd1RyYWNrLCBjb2x1bW5UcmFj
aykpOworfQorCiB2b2lkIFJlbmRlckdyaWQ6OnBsYWNlSXRlbXNPbkdyaWQoKQogewogICAgIEFT
U0VSVChtX2dyaWQuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQobV9ncmlkSXRlbXNQb3NpdGlvbi5p
c0VtcHR5KCkpOworCiAgICAgbV9ncmlkLmdyb3cobWF4aW11bUluZGV4SW5EaXJlY3Rpb24oRm9y
Um93cykpOwogICAgIHNpemVfdCBtYXhpbXVtQ29sdW1uSW5kZXggPSBtYXhpbXVtSW5kZXhJbkRp
cmVjdGlvbihGb3JDb2x1bW5zKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGdyaWRSb3dD
b3VudCgpOyArK2kpCiAgICAgICAgIG1fZ3JpZFtpXS5ncm93KG1heGltdW1Db2x1bW5JbmRleCk7
CiAKICAgICBmb3IgKFJlbmRlckJveCogY2hpbGQgPSBmaXJzdENoaWxkQm94KCk7IGNoaWxkOyBj
aGlsZCA9IGNoaWxkLT5uZXh0U2libGluZ0JveCgpKSB7Ci0gICAgICAgIHNpemVfdCBjb2x1bW5U
cmFjayA9IHJlc29sdmVHcmlkUG9zaXRpb24oY2hpbGQtPnN0eWxlKCktPmdyaWRJdGVtQ29sdW1u
KCkpOwotICAgICAgICBzaXplX3Qgcm93VHJhY2sgPSByZXNvbHZlR3JpZFBvc2l0aW9uKGNoaWxk
LT5zdHlsZSgpLT5ncmlkSXRlbVJvdygpKTsKLQotICAgICAgICBtX2dyaWRbcm93VHJhY2tdW2Nv
bHVtblRyYWNrXS5hcHBlbmQoY2hpbGQpOworICAgICAgICBzaXplX3QgY29sdW1uVHJhY2sgPSBy
ZXNvbHZlR3JpZFBvc2l0aW9uRnJvbVN0eWxlKGNoaWxkLT5zdHlsZSgpLT5ncmlkSXRlbUNvbHVt
bigpKTsKKyAgICAgICAgc2l6ZV90IHJvd1RyYWNrID0gcmVzb2x2ZUdyaWRQb3NpdGlvbkZyb21T
dHlsZShjaGlsZC0+c3R5bGUoKS0+Z3JpZEl0ZW1Sb3coKSk7CisgICAgICAgIGluc2VydEl0ZW1J
bnRvR3JpZChjaGlsZCwgcm93VHJhY2ssIGNvbHVtblRyYWNrKTsKICAgICB9CiB9CiAKQEAgLTQ5
Niw4ICs1MDUsOCBAQCB2b2lkIFJlbmRlckdyaWQ6OmxheW91dEdyaWRJdGVtcygpCiAgICAgZm9y
IChSZW5kZXJCb3gqIGNoaWxkID0gZmlyc3RDaGlsZEJveCgpOyBjaGlsZDsgY2hpbGQgPSBjaGls
ZC0+bmV4dFNpYmxpbmdCb3goKSkgewogICAgICAgICBMYXlvdXRQb2ludCBjaGlsZFBvc2l0aW9u
ID0gZmluZENoaWxkTG9naWNhbFBvc2l0aW9uKGNoaWxkLCBjb2x1bW5UcmFja3MsIHJvd1RyYWNr
cyk7CiAKLSAgICAgICAgc2l6ZV90IGNvbHVtblRyYWNrID0gcmVzb2x2ZUdyaWRQb3NpdGlvbihj
aGlsZC0+c3R5bGUoKS0+Z3JpZEl0ZW1Db2x1bW4oKSk7Ci0gICAgICAgIHNpemVfdCByb3dUcmFj
ayA9IHJlc29sdmVHcmlkUG9zaXRpb24oY2hpbGQtPnN0eWxlKCktPmdyaWRJdGVtUm93KCkpOwor
ICAgICAgICBzaXplX3QgY29sdW1uVHJhY2sgPSBjYWNoZWRHcmlkUG9zaXRpb24oRm9yQ29sdW1u
cywgY2hpbGQpOworICAgICAgICBzaXplX3Qgcm93VHJhY2sgPSBjYWNoZWRHcmlkUG9zaXRpb24o
Rm9yUm93cywgY2hpbGQpOwogCiAgICAgICAgIC8vIEJlY2F1c2UgdGhlIGdyaWQgYXJlYSBjYW5u
b3QgYmUgc3R5bGVkLCB3ZSBkb24ndCBuZWVkIHRvIGFkanVzdAogICAgICAgICAvLyB0aGUgZ3Jp
ZCBicmVhZHRoIHRvIGFjY291bnQgZm9yICdib3gtc2l6aW5nJy4KQEAgLTUyOCwxNSArNTM3LDE3
IEBAIHZvaWQgUmVuZGVyR3JpZDo6bGF5b3V0R3JpZEl0ZW1zKCkKIAogICAgIHNldExvZ2ljYWxI
ZWlnaHQobG9naWNhbEhlaWdodCgpICsgYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSk7
CiAgICAgbV9ncmlkLmNsZWFyKCk7CisgICAgbV9ncmlkSXRlbXNQb3NpdGlvbi5jbGVhcigpOwog
fQogCi1zaXplX3QgUmVuZGVyR3JpZDo6cmVzb2x2ZUdyaWRQb3NpdGlvbihUcmFja1NpemluZ0Rp
cmVjdGlvbiBkaXJlY3Rpb24sIGNvbnN0IFJlbmRlck9iamVjdCogZ3JpZEl0ZW0pIGNvbnN0Citz
aXplX3QgUmVuZGVyR3JpZDo6Y2FjaGVkR3JpZFBvc2l0aW9uKFRyYWNrU2l6aW5nRGlyZWN0aW9u
IGRpcmVjdGlvbiwgY29uc3QgUmVuZGVyQm94KiBncmlkSXRlbSkgY29uc3QKIHsKLSAgICBjb25z
dCBHcmlkUG9zaXRpb24mIHBvc2l0aW9uID0gKGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zKSA/IGdy
aWRJdGVtLT5zdHlsZSgpLT5ncmlkSXRlbUNvbHVtbigpIDogZ3JpZEl0ZW0tPnN0eWxlKCktPmdy
aWRJdGVtUm93KCk7Ci0gICAgcmV0dXJuIHJlc29sdmVHcmlkUG9zaXRpb24ocG9zaXRpb24pOwor
ICAgIEFTU0VSVChtX2dyaWRJdGVtc1Bvc2l0aW9uLmNvbnRhaW5zKGdyaWRJdGVtKSk7CisgICAg
R3JpZENvb3JkaW5hdGVzIGNvb3JkaW5hdGVzID0gbV9ncmlkSXRlbXNQb3NpdGlvbi5nZXQoZ3Jp
ZEl0ZW0pOworICAgIHJldHVybiAoZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gY29vcmRpbmF0
ZXMuY29sdW1uSW5kZXggOiBjb29yZGluYXRlcy5yb3dJbmRleDsKIH0KIAotc2l6ZV90IFJlbmRl
ckdyaWQ6OnJlc29sdmVHcmlkUG9zaXRpb24oY29uc3QgR3JpZFBvc2l0aW9uJiBwb3NpdGlvbikg
Y29uc3QKK3NpemVfdCBSZW5kZXJHcmlkOjpyZXNvbHZlR3JpZFBvc2l0aW9uRnJvbVN0eWxlKGNv
bnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24pIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IEhhbmRs
ZSBvdGhlciB2YWx1ZXMgZm9yIGdyaWQte3Jvdyxjb2x1bW59IGxpa2UgcmFuZ2VzIG9yIGxpbmUg
bmFtZXMuCiAgICAgc3dpdGNoIChwb3NpdGlvbi50eXBlKCkpIHsKQEAgLTU1OCw4ICs1NjksOCBA
QCBzaXplX3QgUmVuZGVyR3JpZDo6cmVzb2x2ZUdyaWRQb3NpdGlvbihjb25zdCBHcmlkUG9zaXRp
b24mIHBvc2l0aW9uKSBjb25zdAogCiBMYXlvdXRQb2ludCBSZW5kZXJHcmlkOjpmaW5kQ2hpbGRM
b2dpY2FsUG9zaXRpb24oUmVuZGVyQm94KiBjaGlsZCwgY29uc3QgVmVjdG9yPEdyaWRUcmFjaz4m
IGNvbHVtblRyYWNrcywgY29uc3QgVmVjdG9yPEdyaWRUcmFjaz4mIHJvd1RyYWNrcykKIHsKLSAg
ICBzaXplX3QgY29sdW1uVHJhY2sgPSByZXNvbHZlR3JpZFBvc2l0aW9uKGNoaWxkLT5zdHlsZSgp
LT5ncmlkSXRlbUNvbHVtbigpKTsKLSAgICBzaXplX3Qgcm93VHJhY2sgPSByZXNvbHZlR3JpZFBv
c2l0aW9uKGNoaWxkLT5zdHlsZSgpLT5ncmlkSXRlbVJvdygpKTsKKyAgICBzaXplX3QgY29sdW1u
VHJhY2sgPSBjYWNoZWRHcmlkUG9zaXRpb24oRm9yQ29sdW1ucywgY2hpbGQpOworICAgIHNpemVf
dCByb3dUcmFjayA9IGNhY2hlZEdyaWRQb3NpdGlvbihGb3JSb3dzLCBjaGlsZCk7CiAKICAgICBM
YXlvdXRQb2ludCBvZmZzZXQ7CiAgICAgLy8gRklYTUU6IHxjb2x1bW5UcmFja3wgYW5kIHxyb3dU
cmFja3wgc2hvdWxkIGJlIHNtYWxsZXIgdGhhbiBvdXIgY29sdW1uIC8gcm93IGNvdW50LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKaW5kZXggZDNjNmJiMTkwYWNlZmRiODM1MGQ1
MjA1Mjg5MWNiYzdjYjcyNmE4Ny4uMDg2YTBmOTQxMjA2ZjlhNzI3MWI5M2YwZTdiNWYwYWM2ZDIw
ZDkzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCkBAIC01MCw2ICs1MCwy
MyBAQCBwcml2YXRlOgogCiAgICAgTGF5b3V0VW5pdCBjb21wdXRlUHJlZmVycmVkVHJhY2tXaWR0
aChjb25zdCBMZW5ndGgmLCBzaXplX3QpIGNvbnN0OwogCisgICAgc3RydWN0IEdyaWRDb29yZGlu
YXRlcyB7CisgICAgICAgIC8vIEhhc2hNYXAgcmVxdWlyZXMgYSBkZWZhdWx0IGNvbnN0dWN0b3Iu
CisgICAgICAgIEdyaWRDb29yZGluYXRlcygpCisgICAgICAgICAgICA6IGNvbHVtbkluZGV4KDAp
CisgICAgICAgICAgICAsIHJvd0luZGV4KDApCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAg
ICAgIEdyaWRDb29yZGluYXRlcyhzaXplX3Qgcm93LCBzaXplX3QgY29sdW1uKQorICAgICAgICAg
ICAgOiBjb2x1bW5JbmRleChjb2x1bW4pCisgICAgICAgICAgICAsIHJvd0luZGV4KHJvdykKKyAg
ICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgc2l6ZV90IGNvbHVtbkluZGV4OworICAgICAg
ICBzaXplX3Qgcm93SW5kZXg7CisgICAgfTsKICAgICBjbGFzcyBHcmlkSXRlcmF0b3I7CiAgICAg
ZW51bSBUcmFja1NpemluZ0RpcmVjdGlvbiB7IEZvckNvbHVtbnMsIEZvclJvd3MgfTsKICAgICB2
b2lkIGNvbXB1dGVkVXNlZEJyZWFkdGhPZkdyaWRUcmFja3MoVHJhY2tTaXppbmdEaXJlY3Rpb24s
IFZlY3RvcjxHcmlkVHJhY2s+JiBjb2x1bW5UcmFja3MsIFZlY3RvcjxHcmlkVHJhY2s+JiByb3dU
cmFja3MpOwpAQCAtNTcsNiArNzQsNyBAQCBwcml2YXRlOgogICAgIExheW91dFVuaXQgY29tcHV0
ZVVzZWRCcmVhZHRoT2ZNYXhMZW5ndGgoVHJhY2tTaXppbmdEaXJlY3Rpb24sIGNvbnN0IExlbmd0
aCYpIGNvbnN0OwogICAgIExheW91dFVuaXQgY29tcHV0ZVVzZWRCcmVhZHRoT2ZTcGVjaWZpZWRM
ZW5ndGgoVHJhY2tTaXppbmdEaXJlY3Rpb24sIGNvbnN0IExlbmd0aCYpIGNvbnN0OwogICAgIHZv
aWQgcmVzb2x2ZUNvbnRlbnRCYXNlZFRyYWNrU2l6aW5nRnVuY3Rpb25zKFRyYWNrU2l6aW5nRGly
ZWN0aW9uLCBWZWN0b3I8R3JpZFRyYWNrPiYgY29sdW1uVHJhY2tzLCBWZWN0b3I8R3JpZFRyYWNr
PiYgcm93VHJhY2tzLCBMYXlvdXRVbml0JiBhdmFpbGFibGVMb2dpY2FsU3BhY2UpOworICAgIHZv
aWQgaW5zZXJ0SXRlbUludG9HcmlkKFJlbmRlckJveCosIHNpemVfdCByb3dUcmFjaywgc2l6ZV90
IGNvbHVtblRyYWNrKTsKICAgICB2b2lkIHBsYWNlSXRlbXNPbkdyaWQoKTsKICAgICB2b2lkIGxh
eW91dEdyaWRJdGVtcygpOwogCkBAIC03Myw4ICs5MSw4IEBAIHByaXZhdGU6CiAgICAgTGF5b3V0
VW5pdCBtaW5Db250ZW50Rm9yQ2hpbGQoUmVuZGVyQm94KiwgVHJhY2tTaXppbmdEaXJlY3Rpb24s
IFZlY3RvcjxHcmlkVHJhY2s+JiBjb2x1bW5UcmFja3MpOwogICAgIExheW91dFVuaXQgbWF4Q29u
dGVudEZvckNoaWxkKFJlbmRlckJveCosIFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBWZWN0b3I8R3Jp
ZFRyYWNrPiYgY29sdW1uVHJhY2tzKTsKICAgICBMYXlvdXRQb2ludCBmaW5kQ2hpbGRMb2dpY2Fs
UG9zaXRpb24oUmVuZGVyQm94KiwgY29uc3QgVmVjdG9yPEdyaWRUcmFjaz4mIGNvbHVtblRyYWNr
cywgY29uc3QgVmVjdG9yPEdyaWRUcmFjaz4mIHJvd1RyYWNrcyk7Ci0gICAgc2l6ZV90IHJlc29s
dmVHcmlkUG9zaXRpb24oVHJhY2tTaXppbmdEaXJlY3Rpb24sIGNvbnN0IFJlbmRlck9iamVjdCop
IGNvbnN0OwotICAgIHNpemVfdCByZXNvbHZlR3JpZFBvc2l0aW9uKGNvbnN0IEdyaWRQb3NpdGlv
biYpIGNvbnN0OworICAgIHNpemVfdCBjYWNoZWRHcmlkUG9zaXRpb24oVHJhY2tTaXppbmdEaXJl
Y3Rpb24sIGNvbnN0IFJlbmRlckJveCopIGNvbnN0OworICAgIHNpemVfdCByZXNvbHZlR3JpZFBv
c2l0aW9uRnJvbVN0eWxlKGNvbnN0IEdyaWRQb3NpdGlvbiYpIGNvbnN0OwogCiAjaWZuZGVmIE5E
RUJVRwogICAgIGJvb2wgdHJhY2tzQXJlV2lkZXJUaGFuTWluVHJhY2tCcmVhZHRoKFRyYWNrU2l6
aW5nRGlyZWN0aW9uLCBjb25zdCBWZWN0b3I8R3JpZFRyYWNrPiYpOwpAQCAtODQsNiArMTAyLDcg
QEAgcHJpdmF0ZToKICAgICBzaXplX3QgZ3JpZFJvd0NvdW50KCkgY29uc3QgeyByZXR1cm4gbV9n
cmlkLnNpemUoKTsgfQogCiAgICAgVmVjdG9yPFZlY3RvcjxWZWN0b3I8UmVuZGVyQm94KiwgMT4g
PiA+IG1fZ3JpZDsKKyAgICBIYXNoTWFwPGNvbnN0IFJlbmRlckJveCosIEdyaWRDb29yZGluYXRl
cz4gbV9ncmlkSXRlbXNQb3NpdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188889</attachid>
            <date>2013-02-18 07:57:25 -0800</date>
            <delta_ts>2013-02-18 15:17:32 -0800</delta_ts>
            <desc>Updated patch for an EWS run.</desc>
            <filename>bug-109718-20130218075348.patch</filename>
            <type>text/plain</type>
            <size>13010</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzMjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGM5MjY3ZDFmZWUxNDEx
N2Y4ZTM2NWM2M2I0ZmFjZDUzYTFkMzJmZS4uYTI1NTZhMmMyZjNjMjk4NzkyNWU4ZmRmMDI0Mjk1
ODVkYTY3OWU0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDEzLTAyLTE4ICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIFtDU1MgR3Jp
ZCBMYXlvdXRdIFJlZmFjdG9yIGdyaWQgcG9zaXRpb24gcmVzb2x1dGlvbiBjb2RlIHRvIHN1cHBv
cnQgYW4gaW50ZXJuYWwgZ3JpZCByZXByZXNlbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NzE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
T2phbiBWYWZhaS4KKworICAgICAgICBJbiBvcmRlciB0byBzdXBwb3J0IGF1dG8gcGxhY2VtZW50
ICh3aGVyZSB3ZSBjYW4ndCBpbmZlciBhIGdyaWQgaXRlbSdzIHBvc2l0aW9uIGZyb20gaXRzIHN0
eWxlKSwKKyAgICAgICAgd2UgbmVlZCB0byBoYXZlIDIgY29kZSBwYXRoczoKKyAgICAgICAgLSBP
bmUgdGhhdCBwbGFjZXMgdGhlIGVsZW1lbnRzIG9uIHRoZSBncmlkIHJlcHJlc2VudGF0aW9uLgor
ICAgICAgICAtIE9uZSB0aGF0IHJldXNlIHRoZSBncmlkIHJlcHJlc2VudGF0aW9uIHRvIHJldHVy
biB0aGUgcG9zaXRpb24uCisKKyAgICAgICAgVGhpcyBjb2RlIHBhdGggaW1wbGVtZW50cyB0aGlz
IHNwbGl0IHNvIHRoYXQgd2UgY2FuIGFkZCBhdXRvIHBsYWNlbWVudCBpbiBhIGZvbGxvdy11cCBw
YXRjaChlcykuCisgICAgICAgIEFsc28gaW4gb3JkZXIgdG8gYXZvaWQgYSBPKG5eMikgYmVoYXZp
b3IgW3dhbGtpbmcgb3ZlciBvdXIgZ3JpZCB0byBmaW5kIGEgZ3JpZCBpdGVtJ3MgcG9zaXRpb25d
LAorICAgICAgICB0aGUgY2FjaGVkIHBvc2l0aW9uIGNvZGUgcGF0aCBuZWVkZWQgYW4gZWZmaWNp
ZW50IHdheSB0byBmaW5kIHRoZSBncmlkIGl0ZW1zIC0+IHBvc2l0aW9uIG1hcHBpbmcuCisKKyAg
ICAgICAgUmVmYWN0b3JpbmcsIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlk
OjpjYWNoZWRHcmlkQ29vcmRpbmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpy
ZXNvbHZlR3JpZFBvc2l0aW9uRnJvbVN0eWxlKToKKyAgICAgICAgVGhlc2UgbWV0aG9kcyBpbXBs
ZW1lbnRzIHRoZSBhYm92ZSBzcGxpdC4gVGhlIGZpcnN0IG9uZQorICAgICAgICByZXVzZXMgb3Vy
IGNhY2hlZCBpbmZvcm1hdGlvbiB3aGVyZWFzIHRoZSBvdGhlciBvbmUgaXMKKyAgICAgICAgdXNl
ZCB0byBidWlsZCB0aGUgY2FjaGUuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNv
bXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdy
aWQ6OmxheW91dEdyaWRJdGVtcyk6CisgICAgICAgIEFkZGVkIHNvbWUgY29kZSB0byBjbGVhciB0
aGUgZ3JpZCBpdGVtcycgcG9zaXRpb24uCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6
OmZpbmRDaGlsZExvZ2ljYWxQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlk
Ojpsb2dpY2FsQ29udGVudEhlaWdodEZvckNoaWxkKToKKyAgICAgICAgVXBkYXRlZCB0aGVzZSBm
dW5jdGlvbnMgdG8gdXNlIGNhY2hlZEdyaWRQb3NpdGlvbi4KKworICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyR3JpZDo6bWF4aW11bUluZGV4SW5EaXJlY3Rpb24pOgorICAgICAgICBBZGRlZCBhIGNv
bW1lbnQgYWJvdXQgd2h5IHdlIGRvbid0IHVzZSBjYWNoZWRHcmlkUG9zaXRpb24uCisKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6Omluc2VydEl0ZW1JbnRvR3JpZCk6CisgICAgICAgIEFk
ZGVkIHRoaXMgaGVscGVyIGZ1bmN0aW9uIHRvIGluc2VydCBpbnRvIHRoZSBncmlkIGFuZAorICAg
ICAgICBjYWNoZSB0aGUgcG9zaXRpb24gaW4gdGhlIHJldmVyc2UgbG9va3VwIG1hcC4KKworICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6cGxhY2VJdGVtc09uR3JpZCk6CisgICAgICAgIFVw
ZGF0ZWQgdG8gY2FsbCBpbnNlcnRJdGVtSW50b0dyaWQuIEFsc28gYWRkZWQgYW4gQVNTRVJUCisg
ICAgICAgIHNpbWlsYXIgdG8gbV9ncmlkLgorCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlk
OjpjbGVhckdyaWQpOgorICAgICAgICBBZGRlZCB0aGlzIGhlbHBlciBmdW5jdGlvbiB0byBjbGVh
ciBvdXIgZ3JpZCBzdHJ1Y3R1cmUuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5o
OgorICAgICAgICAoR3JpZENvb3JkaW5hdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3Jp
ZDo6R3JpZENvb3JkaW5hdGU6OkdyaWRDb29yZGluYXRlKToKKyAgICAgICAgQWRkZWQgdGhpcyBQ
T0QgdG8gaG9sZCB0aGUgY29vcmRpbmF0ZXMgaW4gb3VyIHJldmVyc2UgbWFwLgorCiAyMDEzLTAy
LTE4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbR1RLXSBGb3JjZSBzaW5nbGUgaGVhZGVyIGluY2x1ZGVzIGluIEdPYmplY3QgRE9NIGJpbmRp
bmdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKaW5kZXggYWY4ZThjYjBi
M2Y4YTFhMjlkZDY3Mzk5NmEzNzNiYjY3NGY1NjZiNS4uODA1OGFjYTdiZTY2MzRhZjQ4MTExOTJh
NWVlYzJkNWZiNDJlZDRiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckdyaWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNw
cApAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6Y29tcHV0ZUludHJpbnNpY0xv
Z2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRoLCBMYXlvCiAgICAgICAgIC8v
IEZJWE1FOiBUaGlzIHNob3VsZCBhZGQgaW4gdGhlIHNjcm9sbGJhcldpZHRoIChlLmcuIHNlZSBS
ZW5kZXJGbGV4aWJsZUJveCkuCiAgICAgfQogCi0gICAgY29uc3RfY2FzdDxSZW5kZXJHcmlkKj4o
dGhpcyktPm1fZ3JpZC5jbGVhcigpOworICAgIGNvbnN0X2Nhc3Q8UmVuZGVyR3JpZCo+KHRoaXMp
LT5jbGVhckdyaWQoKTsKIH0KIAogdm9pZCBSZW5kZXJHcmlkOjpjb21wdXRlUHJlZmVycmVkTG9n
aWNhbFdpZHRocygpCkBAIC0zMTYsOCArMzE2LDkgQEAgc2l6ZV90IFJlbmRlckdyaWQ6Om1heGlt
dW1JbmRleEluRGlyZWN0aW9uKFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3QK
ICAgICBzaXplX3QgbWF4aW11bUluZGV4ID0gdHJhY2tTdHlsZXMuc2l6ZSgpOwogCiAgICAgZm9y
IChSZW5kZXJCb3gqIGNoaWxkID0gZmlyc3RDaGlsZEJveCgpOyBjaGlsZDsgY2hpbGQgPSBjaGls
ZC0+bmV4dFNpYmxpbmdCb3goKSkgewotICAgICAgICBHcmlkUG9zaXRpb24gcG9zaXRpb24gPSAo
ZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gY2hpbGQtPnN0eWxlKCktPmdyaWRJdGVtQ29sdW1u
KCkgOiBjaGlsZC0+c3R5bGUoKS0+Z3JpZEl0ZW1Sb3coKTsKLSAgICAgICAgbWF4aW11bUluZGV4
ID0gc3RkOjptYXgobWF4aW11bUluZGV4LCByZXNvbHZlR3JpZFBvc2l0aW9uKHBvc2l0aW9uKSAr
IDEpOworICAgICAgICBjb25zdCBHcmlkUG9zaXRpb24mIHBvc2l0aW9uID0gKGRpcmVjdGlvbiA9
PSBGb3JDb2x1bW5zKSA/IGNoaWxkLT5zdHlsZSgpLT5ncmlkSXRlbUNvbHVtbigpIDogY2hpbGQt
PnN0eWxlKCktPmdyaWRJdGVtUm93KCk7CisgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gYnlwYXNz
ZXMgdGhlIGNhY2hlIGFzIGl0IGlzIHVzZWQgdG8gYnVpbGQgaXQuIEFsc28gJ2F1dG8nIGl0ZW1z
IHdpbGwgbmVlZCB0byBiZSByZXNvbHZlZCBpbiBzZXBlcmF0ZSBwaGFzZXMgYW55d2F5LgorICAg
ICAgICBtYXhpbXVtSW5kZXggPSBzdGQ6Om1heChtYXhpbXVtSW5kZXgsIHJlc29sdmVHcmlkUG9z
aXRpb25Gcm9tU3R5bGUocG9zaXRpb24pICsgMSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG1heGlt
dW1JbmRleDsKQEAgLTMzMiw4ICszMzMsOCBAQCBMYXlvdXRVbml0IFJlbmRlckdyaWQ6OmxvZ2lj
YWxDb250ZW50SGVpZ2h0Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCwgVmVjdG9yPEdyaQogICAg
IGlmICghY2hpbGQtPm5lZWRzTGF5b3V0KCkpCiAgICAgICAgIGNoaWxkLT5zZXROZWVkc0xheW91
dCh0cnVlLCBNYXJrT25seVRoaXMpOwogCi0gICAgc2l6ZV90IGNvbHVtblRyYWNrID0gcmVzb2x2
ZUdyaWRQb3NpdGlvbihGb3JDb2x1bW5zLCBjaGlsZCk7Ci0gICAgY2hpbGQtPnNldE92ZXJyaWRl
Q29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0aChjb2x1bW5UcmFja3NbY29sdW1uVHJh
Y2tdLm1fdXNlZEJyZWFkdGgpOworICAgIGNvbnN0IEdyaWRDb29yZGluYXRlJiBjb29yZGluYXRl
ID0gY2FjaGVkR3JpZENvb3JkaW5hdGUoY2hpbGQpOworICAgIGNoaWxkLT5zZXRPdmVycmlkZUNv
bnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGgoY29sdW1uVHJhY2tzW2Nvb3JkaW5hdGUu
Y29sdW1uSW5kZXhdLm1fdXNlZEJyZWFkdGgpOwogICAgIGNoaWxkLT5jbGVhck92ZXJyaWRlQ29u
dGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQoKTsKICAgICBjaGlsZC0+bGF5b3V0KCk7
CiAgICAgcmV0dXJuIGNoaWxkLT5sb2dpY2FsSGVpZ2h0KCk7CkBAIC00NjksMjIgKzQ3MCwzNSBA
QCBib29sIFJlbmRlckdyaWQ6OnRyYWNrc0FyZVdpZGVyVGhhbk1pblRyYWNrQnJlYWR0aChUcmFj
a1NpemluZ0RpcmVjdGlvbiBkaXJlY3RpbwogfQogI2VuZGlmCiAKK3ZvaWQgUmVuZGVyR3JpZDo6
aW5zZXJ0SXRlbUludG9HcmlkKFJlbmRlckJveCogY2hpbGQsIHNpemVfdCByb3dUcmFjaywgc2l6
ZV90IGNvbHVtblRyYWNrKQoreworICAgIG1fZ3JpZFtyb3dUcmFja11bY29sdW1uVHJhY2tdLmFw
cGVuZChjaGlsZCk7CisgICAgbV9ncmlkSXRlbUNvb3JkaW5hdGUuc2V0KGNoaWxkLCBHcmlkQ29v
cmRpbmF0ZShyb3dUcmFjaywgY29sdW1uVHJhY2spKTsKK30KKwogdm9pZCBSZW5kZXJHcmlkOjpw
bGFjZUl0ZW1zT25HcmlkKCkKIHsKICAgICBBU1NFUlQobV9ncmlkLmlzRW1wdHkoKSk7CisgICAg
QVNTRVJUKG1fZ3JpZEl0ZW1Db29yZGluYXRlLmlzRW1wdHkoKSk7CisKICAgICBtX2dyaWQuZ3Jv
dyhtYXhpbXVtSW5kZXhJbkRpcmVjdGlvbihGb3JSb3dzKSk7CiAgICAgc2l6ZV90IG1heGltdW1D
b2x1bW5JbmRleCA9IG1heGltdW1JbmRleEluRGlyZWN0aW9uKEZvckNvbHVtbnMpOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgZ3JpZFJvd0NvdW50KCk7ICsraSkKICAgICAgICAgbV9ncmlk
W2ldLmdyb3cobWF4aW11bUNvbHVtbkluZGV4KTsKIAogICAgIGZvciAoUmVuZGVyQm94KiBjaGls
ZCA9IGZpcnN0Q2hpbGRCb3goKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nQm94
KCkpIHsKLSAgICAgICAgc2l6ZV90IGNvbHVtblRyYWNrID0gcmVzb2x2ZUdyaWRQb3NpdGlvbihj
aGlsZC0+c3R5bGUoKS0+Z3JpZEl0ZW1Db2x1bW4oKSk7Ci0gICAgICAgIHNpemVfdCByb3dUcmFj
ayA9IHJlc29sdmVHcmlkUG9zaXRpb24oY2hpbGQtPnN0eWxlKCktPmdyaWRJdGVtUm93KCkpOwot
Ci0gICAgICAgIG1fZ3JpZFtyb3dUcmFja11bY29sdW1uVHJhY2tdLmFwcGVuZChjaGlsZCk7Cisg
ICAgICAgIHNpemVfdCBjb2x1bW5UcmFjayA9IHJlc29sdmVHcmlkUG9zaXRpb25Gcm9tU3R5bGUo
Y2hpbGQtPnN0eWxlKCktPmdyaWRJdGVtQ29sdW1uKCkpOworICAgICAgICBzaXplX3Qgcm93VHJh
Y2sgPSByZXNvbHZlR3JpZFBvc2l0aW9uRnJvbVN0eWxlKGNoaWxkLT5zdHlsZSgpLT5ncmlkSXRl
bVJvdygpKTsKKyAgICAgICAgaW5zZXJ0SXRlbUludG9HcmlkKGNoaWxkLCByb3dUcmFjaywgY29s
dW1uVHJhY2spOwogICAgIH0KIH0KIAordm9pZCBSZW5kZXJHcmlkOjpjbGVhckdyaWQoKQorewor
ICAgIG1fZ3JpZC5jbGVhcigpOworICAgIG1fZ3JpZEl0ZW1Db29yZGluYXRlLmNsZWFyKCk7Cit9
CisKIHZvaWQgUmVuZGVyR3JpZDo6bGF5b3V0R3JpZEl0ZW1zKCkKIHsKICAgICBwbGFjZUl0ZW1z
T25HcmlkKCk7CkBAIC00OTksOCArNTEzLDcgQEAgdm9pZCBSZW5kZXJHcmlkOjpsYXlvdXRHcmlk
SXRlbXMoKQogICAgIGZvciAoUmVuZGVyQm94KiBjaGlsZCA9IGZpcnN0Q2hpbGRCb3goKTsgY2hp
bGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nQm94KCkpIHsKICAgICAgICAgTGF5b3V0UG9p
bnQgY2hpbGRQb3NpdGlvbiA9IGZpbmRDaGlsZExvZ2ljYWxQb3NpdGlvbihjaGlsZCwgY29sdW1u
VHJhY2tzLCByb3dUcmFja3MpOwogCi0gICAgICAgIHNpemVfdCBjb2x1bW5UcmFjayA9IHJlc29s
dmVHcmlkUG9zaXRpb24oY2hpbGQtPnN0eWxlKCktPmdyaWRJdGVtQ29sdW1uKCkpOwotICAgICAg
ICBzaXplX3Qgcm93VHJhY2sgPSByZXNvbHZlR3JpZFBvc2l0aW9uKGNoaWxkLT5zdHlsZSgpLT5n
cmlkSXRlbVJvdygpKTsKKyAgICAgICAgY29uc3QgR3JpZENvb3JkaW5hdGUmIGNoaWxkQ29vcmRp
bmF0ZSA9IGNhY2hlZEdyaWRDb29yZGluYXRlKGNoaWxkKTsKIAogICAgICAgICAvLyBCZWNhdXNl
IHRoZSBncmlkIGFyZWEgY2Fubm90IGJlIHN0eWxlZCwgd2UgZG9uJ3QgbmVlZCB0byBhZGp1c3QK
ICAgICAgICAgLy8gdGhlIGdyaWQgYnJlYWR0aCB0byBhY2NvdW50IGZvciAnYm94LXNpemluZycu
CkBAIC01MDksMTEgKzUyMiwxMSBAQCB2b2lkIFJlbmRlckdyaWQ6OmxheW91dEdyaWRJdGVtcygp
CiAKICAgICAgICAgLy8gRklYTUU6IEZvciBjaGlsZHJlbiBpbiBhIGNvbnRlbnQgc2l6ZWQgdHJh
Y2ssIHdlIGNsZWFyIHRoZSBvdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVp
Z2h0CiAgICAgICAgIC8vIGluIG1pbkNvbnRlbnRGb3JDaGlsZCAvIG1heENvbnRlbnRGb3JDaGls
ZCB3aGljaCBtZWFucyB0aGF0IHdlIHdpbGwgYWx3YXlzIHJlbGF5b3V0IHRoZSBjaGlsZC4KLSAg
ICAgICAgaWYgKG9sZE92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0aCAh
PSBjb2x1bW5UcmFja3NbY29sdW1uVHJhY2tdLm1fdXNlZEJyZWFkdGggfHwgb2xkT3ZlcnJpZGVD
b250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbEhlaWdodCAhPSByb3dUcmFja3Nbcm93VHJhY2td
Lm1fdXNlZEJyZWFkdGgpCisgICAgICAgIGlmIChvbGRPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0Nv
bnRlbnRMb2dpY2FsV2lkdGggIT0gY29sdW1uVHJhY2tzW2NoaWxkQ29vcmRpbmF0ZS5jb2x1bW5J
bmRleF0ubV91c2VkQnJlYWR0aCB8fCBvbGRPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRM
b2dpY2FsSGVpZ2h0ICE9IHJvd1RyYWNrc1tjaGlsZENvb3JkaW5hdGUucm93SW5kZXhdLm1fdXNl
ZEJyZWFkdGgpCiAgICAgICAgICAgICBjaGlsZC0+c2V0TmVlZHNMYXlvdXQodHJ1ZSwgTWFya09u
bHlUaGlzKTsKIAotICAgICAgICBjaGlsZC0+c2V0T3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250
ZW50TG9naWNhbFdpZHRoKGNvbHVtblRyYWNrc1tjb2x1bW5UcmFja10ubV91c2VkQnJlYWR0aCk7
Ci0gICAgICAgIGNoaWxkLT5zZXRPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2Fs
SGVpZ2h0KHJvd1RyYWNrc1tyb3dUcmFja10ubV91c2VkQnJlYWR0aCk7CisgICAgICAgIGNoaWxk
LT5zZXRPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGgoY29sdW1uVHJh
Y2tzW2NoaWxkQ29vcmRpbmF0ZS5jb2x1bW5JbmRleF0ubV91c2VkQnJlYWR0aCk7CisgICAgICAg
IGNoaWxkLT5zZXRPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KHJv
d1RyYWNrc1tjaGlsZENvb3JkaW5hdGUucm93SW5kZXhdLm1fdXNlZEJyZWFkdGgpOwogCiAgICAg
ICAgIC8vIEZJWE1FOiBHcmlkIGl0ZW1zIHNob3VsZCBzdHJldGNoIHRvIGZpbGwgdGhlaXIgY2Vs
bHMuIE9uY2Ugd2UKICAgICAgICAgLy8gaW1wbGVtZW50IGdyaWQte2NvbHVtbixyb3d9LWFsaWdu
LCB3ZSBjYW4gYWxzbyBzaHJpbmsgdG8gZml0LiBGb3IKQEAgLTUzMCwxNiArNTQzLDE2IEBAIHZv
aWQgUmVuZGVyR3JpZDo6bGF5b3V0R3JpZEl0ZW1zKCkKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IGhhbmRsZSBtaW4gLyBtYXggbG9naWNhbCBoZWlnaHQuCiAKICAgICBzZXRMb2dpY2FsSGVpZ2h0
KGxvZ2ljYWxIZWlnaHQoKSArIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCkpOwotICAg
IG1fZ3JpZC5jbGVhcigpOworICAgIGNsZWFyR3JpZCgpOwogfQogCi1zaXplX3QgUmVuZGVyR3Jp
ZDo6cmVzb2x2ZUdyaWRQb3NpdGlvbihUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIGNv
bnN0IFJlbmRlck9iamVjdCogZ3JpZEl0ZW0pIGNvbnN0CitSZW5kZXJHcmlkOjpHcmlkQ29vcmRp
bmF0ZSBSZW5kZXJHcmlkOjpjYWNoZWRHcmlkQ29vcmRpbmF0ZShjb25zdCBSZW5kZXJCb3gqIGdy
aWRJdGVtKSBjb25zdAogewotICAgIGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24gPSAoZGly
ZWN0aW9uID09IEZvckNvbHVtbnMpID8gZ3JpZEl0ZW0tPnN0eWxlKCktPmdyaWRJdGVtQ29sdW1u
KCkgOiBncmlkSXRlbS0+c3R5bGUoKS0+Z3JpZEl0ZW1Sb3coKTsKLSAgICByZXR1cm4gcmVzb2x2
ZUdyaWRQb3NpdGlvbihwb3NpdGlvbik7CisgICAgQVNTRVJUKG1fZ3JpZEl0ZW1Db29yZGluYXRl
LmNvbnRhaW5zKGdyaWRJdGVtKSk7CisgICAgcmV0dXJuIG1fZ3JpZEl0ZW1Db29yZGluYXRlLmdl
dChncmlkSXRlbSk7CiB9CiAKLXNpemVfdCBSZW5kZXJHcmlkOjpyZXNvbHZlR3JpZFBvc2l0aW9u
KGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24pIGNvbnN0CitzaXplX3QgUmVuZGVyR3JpZDo6
cmVzb2x2ZUdyaWRQb3NpdGlvbkZyb21TdHlsZShjb25zdCBHcmlkUG9zaXRpb24mIHBvc2l0aW9u
KSBjb25zdAogewogICAgIC8vIEZJWE1FOiBIYW5kbGUgb3RoZXIgdmFsdWVzIGZvciBncmlkLXty
b3csY29sdW1ufSBsaWtlIHJhbmdlcyBvciBsaW5lIG5hbWVzLgogICAgIHN3aXRjaCAocG9zaXRp
b24udHlwZSgpKSB7CkBAIC01NjEsMTQgKzU3NCwxMyBAQCBzaXplX3QgUmVuZGVyR3JpZDo6cmVz
b2x2ZUdyaWRQb3NpdGlvbihjb25zdCBHcmlkUG9zaXRpb24mIHBvc2l0aW9uKSBjb25zdAogCiBM
YXlvdXRQb2ludCBSZW5kZXJHcmlkOjpmaW5kQ2hpbGRMb2dpY2FsUG9zaXRpb24oUmVuZGVyQm94
KiBjaGlsZCwgY29uc3QgVmVjdG9yPEdyaWRUcmFjaz4mIGNvbHVtblRyYWNrcywgY29uc3QgVmVj
dG9yPEdyaWRUcmFjaz4mIHJvd1RyYWNrcykKIHsKLSAgICBzaXplX3QgY29sdW1uVHJhY2sgPSBy
ZXNvbHZlR3JpZFBvc2l0aW9uKGNoaWxkLT5zdHlsZSgpLT5ncmlkSXRlbUNvbHVtbigpKTsKLSAg
ICBzaXplX3Qgcm93VHJhY2sgPSByZXNvbHZlR3JpZFBvc2l0aW9uKGNoaWxkLT5zdHlsZSgpLT5n
cmlkSXRlbVJvdygpKTsKKyAgICBjb25zdCBHcmlkQ29vcmRpbmF0ZSYgY29vcmRpbmF0ZSA9IGNh
Y2hlZEdyaWRDb29yZGluYXRlKGNoaWxkKTsKIAogICAgIExheW91dFBvaW50IG9mZnNldDsKICAg
ICAvLyBGSVhNRTogfGNvbHVtblRyYWNrfCBhbmQgfHJvd1RyYWNrfCBzaG91bGQgYmUgc21hbGxl
ciB0aGFuIG91ciBjb2x1bW4gLyByb3cgY291bnQuCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBjb2x1bW5UcmFjayAmJiBpIDwgY29sdW1uVHJhY2tzLnNpemUoKTsgKytpKQorICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgY29vcmRpbmF0ZS5jb2x1bW5JbmRleCAmJiBpIDwgY29sdW1uVHJh
Y2tzLnNpemUoKTsgKytpKQogICAgICAgICBvZmZzZXQuc2V0WChvZmZzZXQueCgpICsgY29sdW1u
VHJhY2tzW2ldLm1fdXNlZEJyZWFkdGgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcm93
VHJhY2sgJiYgaSA8IHJvd1RyYWNrcy5zaXplKCk7ICsraSkKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGNvb3JkaW5hdGUucm93SW5kZXggJiYgaSA8IHJvd1RyYWNrcy5zaXplKCk7ICsraSkK
ICAgICAgICAgb2Zmc2V0LnNldFkob2Zmc2V0LnkoKSArIHJvd1RyYWNrc1tpXS5tX3VzZWRCcmVh
ZHRoKTsKIAogICAgIC8vIEZJWE1FOiBIYW5kbGUgbWFyZ2lucyBvbiB0aGUgZ3JpZCBpdGVtLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKaW5kZXggNzI2ZmIxNDQxYTlmYTQxOWU3
OGRmZDkwZDJiMjI5YWFhZWY0NDk4Mi4uZTI2OTI4MzE4MmU1YjUwZmQxZGQzMTBlMmEyNDY2ZWY4
ZDUxMmM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCkBAIC01MSw2ICs1
MSwyMyBAQCBwcml2YXRlOgogCiAgICAgTGF5b3V0VW5pdCBjb21wdXRlUHJlZmVycmVkVHJhY2tX
aWR0aChjb25zdCBMZW5ndGgmLCBzaXplX3QpIGNvbnN0OwogCisgICAgc3RydWN0IEdyaWRDb29y
ZGluYXRlIHsKKyAgICAgICAgLy8gSGFzaE1hcCByZXF1aXJlcyBhIGRlZmF1bHQgY29uc3R1Y3Rv
ci4KKyAgICAgICAgR3JpZENvb3JkaW5hdGUoKQorICAgICAgICAgICAgOiBjb2x1bW5JbmRleCgw
KQorICAgICAgICAgICAgLCByb3dJbmRleCgwKQorICAgICAgICB7CisgICAgICAgIH0KKworICAg
ICAgICBHcmlkQ29vcmRpbmF0ZShzaXplX3Qgcm93LCBzaXplX3QgY29sdW1uKQorICAgICAgICAg
ICAgOiBjb2x1bW5JbmRleChjb2x1bW4pCisgICAgICAgICAgICAsIHJvd0luZGV4KHJvdykKKyAg
ICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgc2l6ZV90IGNvbHVtbkluZGV4OworICAgICAg
ICBzaXplX3Qgcm93SW5kZXg7CisgICAgfTsKICAgICBjbGFzcyBHcmlkSXRlcmF0b3I7CiAgICAg
ZW51bSBUcmFja1NpemluZ0RpcmVjdGlvbiB7IEZvckNvbHVtbnMsIEZvclJvd3MgfTsKICAgICB2
b2lkIGNvbXB1dGVkVXNlZEJyZWFkdGhPZkdyaWRUcmFja3MoVHJhY2tTaXppbmdEaXJlY3Rpb24s
IFZlY3RvcjxHcmlkVHJhY2s+JiBjb2x1bW5UcmFja3MsIFZlY3RvcjxHcmlkVHJhY2s+JiByb3dU
cmFja3MpOwpAQCAtNTgsOCArNzUsMTAgQEAgcHJpdmF0ZToKICAgICBMYXlvdXRVbml0IGNvbXB1
dGVVc2VkQnJlYWR0aE9mTWF4TGVuZ3RoKFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBjb25zdCBMZW5n
dGgmKSBjb25zdDsKICAgICBMYXlvdXRVbml0IGNvbXB1dGVVc2VkQnJlYWR0aE9mU3BlY2lmaWVk
TGVuZ3RoKFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBjb25zdCBMZW5ndGgmKSBjb25zdDsKICAgICB2
b2lkIHJlc29sdmVDb250ZW50QmFzZWRUcmFja1NpemluZ0Z1bmN0aW9ucyhUcmFja1NpemluZ0Rp
cmVjdGlvbiwgVmVjdG9yPEdyaWRUcmFjaz4mIGNvbHVtblRyYWNrcywgVmVjdG9yPEdyaWRUcmFj
az4mIHJvd1RyYWNrcywgTGF5b3V0VW5pdCYgYXZhaWxhYmxlTG9naWNhbFNwYWNlKTsKKyAgICB2
b2lkIGluc2VydEl0ZW1JbnRvR3JpZChSZW5kZXJCb3gqLCBzaXplX3Qgcm93VHJhY2ssIHNpemVf
dCBjb2x1bW5UcmFjayk7CiAgICAgdm9pZCBwbGFjZUl0ZW1zT25HcmlkKCk7CiAgICAgdm9pZCBs
YXlvdXRHcmlkSXRlbXMoKTsKKyAgICB2b2lkIGNsZWFyR3JpZCgpOwogCiAgICAgdHlwZWRlZiBM
YXlvdXRVbml0IChSZW5kZXJHcmlkOjoqIFNpemluZ0Z1bmN0aW9uKShSZW5kZXJCb3gqLCBUcmFj
a1NpemluZ0RpcmVjdGlvbiwgVmVjdG9yPEdyaWRUcmFjaz4mKTsKICAgICB0eXBlZGVmIExheW91
dFVuaXQgKEdyaWRUcmFjazo6KiBBY2N1bXVsYXRvckdldHRlcikoKSBjb25zdDsKQEAgLTc0LDgg
KzkzLDggQEAgcHJpdmF0ZToKICAgICBMYXlvdXRVbml0IG1pbkNvbnRlbnRGb3JDaGlsZChSZW5k
ZXJCb3gqLCBUcmFja1NpemluZ0RpcmVjdGlvbiwgVmVjdG9yPEdyaWRUcmFjaz4mIGNvbHVtblRy
YWNrcyk7CiAgICAgTGF5b3V0VW5pdCBtYXhDb250ZW50Rm9yQ2hpbGQoUmVuZGVyQm94KiwgVHJh
Y2tTaXppbmdEaXJlY3Rpb24sIFZlY3RvcjxHcmlkVHJhY2s+JiBjb2x1bW5UcmFja3MpOwogICAg
IExheW91dFBvaW50IGZpbmRDaGlsZExvZ2ljYWxQb3NpdGlvbihSZW5kZXJCb3gqLCBjb25zdCBW
ZWN0b3I8R3JpZFRyYWNrPiYgY29sdW1uVHJhY2tzLCBjb25zdCBWZWN0b3I8R3JpZFRyYWNrPiYg
cm93VHJhY2tzKTsKLSAgICBzaXplX3QgcmVzb2x2ZUdyaWRQb3NpdGlvbihUcmFja1NpemluZ0Rp
cmVjdGlvbiwgY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3Q7Ci0gICAgc2l6ZV90IHJlc29sdmVH
cmlkUG9zaXRpb24oY29uc3QgR3JpZFBvc2l0aW9uJikgY29uc3Q7CisgICAgR3JpZENvb3JkaW5h
dGUgY2FjaGVkR3JpZENvb3JkaW5hdGUoY29uc3QgUmVuZGVyQm94KikgY29uc3Q7CisgICAgc2l6
ZV90IHJlc29sdmVHcmlkUG9zaXRpb25Gcm9tU3R5bGUoY29uc3QgR3JpZFBvc2l0aW9uJikgY29u
c3Q7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgYm9vbCB0cmFja3NBcmVXaWRlclRoYW5NaW5UcmFj
a0JyZWFkdGgoVHJhY2tTaXppbmdEaXJlY3Rpb24sIGNvbnN0IFZlY3RvcjxHcmlkVHJhY2s+Jik7
CkBAIC04NSw2ICsxMDQsNyBAQCBwcml2YXRlOgogICAgIHNpemVfdCBncmlkUm93Q291bnQoKSBj
b25zdCB7IHJldHVybiBtX2dyaWQuc2l6ZSgpOyB9CiAKICAgICBWZWN0b3I8VmVjdG9yPFZlY3Rv
cjxSZW5kZXJCb3gqLCAxPiA+ID4gbV9ncmlkOworICAgIEhhc2hNYXA8Y29uc3QgUmVuZGVyQm94
KiwgR3JpZENvb3JkaW5hdGU+IG1fZ3JpZEl0ZW1Db29yZGluYXRlOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>