<?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>80772</bug_id>
          
          <creation_ts>2012-03-10 16:08:19 -0800</creation_ts>
          <short_desc>Split the extra logic out of RenderBlock::updateFirstLetter</short_desc>
          <delta_ts>2012-03-14 18:20:44 -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>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Igor Trindade Oliveira">igor.oliveira</reporter>
          <assigned_to name="Igor Trindade Oliveira">igor.oliveira</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>enne</cc>
    
    <cc>hyatt</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>mitz</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>575588</commentid>
    <comment_count>0</comment_count>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2012-03-10 16:08:19 -0800</bug_when>
    <thetext>Currently, updateFirstLetter has a complex logic, it creates and updates the first letter element. 
Splitting the extra logic out of RenderBlock::updateFirstLetter, makes it easier to understand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575589</commentid>
    <comment_count>1</comment_count>
      <attachid>131193</attachid>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2012-03-10 16:28:28 -0800</bug_when>
    <thetext>Created attachment 131193
Patch

Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575590</commentid>
    <comment_count>2</comment_count>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2012-03-10 16:34:15 -0800</bug_when>
    <thetext>When working in the implementation of the generated content animations, i noticed that we could split out the logic of the updateFirstLetter. I am working in a similar patch for updateBeforeAfterContent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575594</commentid>
    <comment_count>3</comment_count>
      <attachid>131193</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-10 17:22:58 -0800</bug_when>
    <thetext>Comment on attachment 131193
Patch

Attachment 131193 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11935255

New failing tests:
fast/css/nested-first-letter-with-float-crash.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575635</commentid>
    <comment_count>4</comment_count>
      <attachid>131203</attachid>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2012-03-10 21:56:05 -0800</bug_when>
    <thetext>Created attachment 131203
Patch

Fix failing test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575641</commentid>
    <comment_count>5</comment_count>
      <attachid>131203</attachid>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2012-03-10 22:19:24 -0800</bug_when>
    <thetext>Comment on attachment 131203
Patch

Cleaning flags. I will submit a better patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575643</commentid>
    <comment_count>6</comment_count>
      <attachid>131203</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-10 22:34:10 -0800</bug_when>
    <thetext>Comment on attachment 131203
Patch

Attachment 131203 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11933402

New failing tests:
fast/css/first-letter-inline-flow-split-crash.html
fast/css-generated-content/remove-div-from-flexible-box-with-floating-after-content-crash.html
fast/text/one-letter-transform-crash.html
fast/css/first-letter-set-text.html
fast/css/first-letter-block-form-controls-crash.html
fast/css/first-letter-inline-flow-split-table-crash.html
fast/css/first-letter-removed-added.html
fast/css-generated-content/float-first-letter-siblings-convert-to-inline.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575789</commentid>
    <comment_count>7</comment_count>
      <attachid>131246</attachid>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2012-03-11 10:50:46 -0700</bug_when>
    <thetext>Created attachment 131246
Patch

Lets try again. Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575792</commentid>
    <comment_count>8</comment_count>
      <attachid>131247</attachid>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2012-03-11 10:52:37 -0700</bug_when>
    <thetext>Created attachment 131247
Patch

patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576362</commentid>
    <comment_count>9</comment_count>
      <attachid>131247</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-03-12 12:01:21 -0700</bug_when>
    <thetext>Comment on attachment 131247
Patch

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

&gt; Source/WebCore/rendering/RenderBlock.cpp:6000
&gt; +    RenderStyle* pseudoStyle = styleForFirstLetter(firstLetterBlock, firstLetterContainer);

Our only use of |firstLetterBlock| is for styleForFirstLetter in both functions. I wonder if this could not be pushed to the caller (not necessarily in this patch)

&gt; Source/WebCore/rendering/RenderBlock.cpp:6149
&gt; +    // to update it.

Missing first part of the comment:
// If the child already has style, then it has already been created, so we just want

&gt; Source/WebCore/rendering/RenderBlock.cpp:6162
&gt; +    createFirstLetter(firstLetterBlock, currChild);

Comment missing:

// Create our pseudo style now that we have our firstLetterContainer determined.

I wonder if we want to keep it though as it doesn&apos;t add much.

&gt; Source/WebCore/rendering/RenderBlock.h:532
&gt; +    void createFirstLetter(RenderObject* firstLetterBlock, RenderObject* currentChild);

I am not super happy with the naming of this function. How about createFirstLetterRenderer (though it doesn&apos;t return a RenderObject which is weird for a create function). I can&apos;t think of better so if you have better ideas feel free to throw them here :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579008</commentid>
    <comment_count>10</comment_count>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2012-03-14 18:20:44 -0700</bug_when>
    <thetext>Committed r110802 :http://trac.webkit.org/changeset/110802</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131193</attachid>
            <date>2012-03-10 16:28:28 -0800</date>
            <delta_ts>2012-03-10 21:56:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Split-the-extra-logic-out-of-RenderBlock-updateFirst.patch</filename>
            <type>text/plain</type>
            <size>11444</size>
            <attacher name="Igor Trindade Oliveira">igor.oliveira</attacher>
            
              <data encoding="base64">RnJvbSBkNWI1ODI2NzY0NTYzOTE3NzIwOWU5ODczZGFjYjJhMGNkNTAyM2QzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBJZ29yIE9saXZlaXJhIDxpZ29yLm9Ac2lzYS5zYW1zdW5nLmNv
bT4KRGF0ZTogU2F0LCAxMCBNYXIgMjAxMiAxNjowMDozNSAtMDgwMApTdWJqZWN0OiBbUEFUQ0hd
IFNwbGl0IHRoZSBleHRyYSBsb2dpYyBvdXQgb2YgUmVuZGVyQmxvY2s6OnVwZGF0ZUZpcnN0TGV0
dGVyCgotLS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgfCAgIDE4
ICsrKysKIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgfCAgMTY0ICsr
KysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmggICB8ICAgIDMgKwogMyBmaWxlcyBjaGFuZ2VkLCAxMDggaW5zZXJ0aW9ucygr
KSwgNzcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDY1MDNiM2UuLjI3YjRmZTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMi0wMy0xMCAgSWdvciBPbGl2ZWlyYSAgPGlnb3Iu
b0BzaXNhLnNhbXN1bmcuY29tPgorCisgICAgICAgIFNwbGl0IHRoZSBleHRyYSBsb2dpYyBvdXQg
b2YgUmVuZGVyQmxvY2s6OnVwZGF0ZUZpcnN0TGV0dGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDc3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvciBleHBlY3RlZC4K
KworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRGaXJzdENoaWxkSW5GaXJzdExldHRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6dXBkYXRlRmlyc3RMZXR0ZXJTdHlsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y3JlYXRlRmlyc3RMZXR0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OnVwZGF0ZUZpcnN0TGV0dGVyKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQmxvY2suaDoKKyAgICAgICAgKFJlbmRlckJsb2NrKToKKwogMjAxMi0wMy0w
OSAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIE5vdGlmaWNh
dGlvblByZXNlbnRlciB0byBOb3RpZmljYXRpb25DbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IGQ4N2Q3NzIuLmM5MzJjOGMgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtNTk5MywyMSArNTk5Myw5IEBAIHN0YXRp
YyBpbmxpbmUgUmVuZGVyT2JqZWN0KiBmaW5kRmlyc3RMZXR0ZXJCbG9jayhSZW5kZXJCbG9jayog
c3RhcnQpCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgUmVuZGVyQmxvY2s6OnVwZGF0ZUZpcnN0
TGV0dGVyKCkKKy8vIERyaWxsIGludG8gaW5saW5lcyBsb29raW5nIGZvciBvdXIgZmlyc3QgdGV4
dCBjaGlsZC4KK3N0YXRpYyBSZW5kZXJPYmplY3QqIGZpbmRGaXJzdENoaWxkSW5GaXJzdExldHRl
cihSZW5kZXJPYmplY3QqIGZpcnN0TGV0dGVyQmxvY2spCiB7Ci0gICAgaWYgKCFkb2N1bWVudCgp
LT51c2VzRmlyc3RMZXR0ZXJSdWxlcygpKQotICAgICAgICByZXR1cm47Ci0gICAgLy8gRG9uJ3Qg
cmVjdXIKLSAgICBpZiAoc3R5bGUoKS0+c3R5bGVUeXBlKCkgPT0gRklSU1RfTEVUVEVSKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBkZXN0cm95IHRoZSBmaXJz
dC1sZXR0ZXIgb2JqZWN0IGlmIGl0IGlzIG5vIGxvbmdlciB0aGUgZmlyc3QgY2hpbGQuICBOZWVk
IHRvIGZpbmQKLSAgICAvLyBhbiBlZmZpY2llbnQgd2F5IHRvIGNoZWNrIGZvciB0aGF0IHNpdHVh
dGlvbiB0aG91Z2ggYmVmb3JlIGltcGxlbWVudGluZyBhbnl0aGluZy4KLSAgICBSZW5kZXJPYmpl
Y3QqIGZpcnN0TGV0dGVyQmxvY2sgPSBmaW5kRmlyc3RMZXR0ZXJCbG9jayh0aGlzKTsKLSAgICBp
ZiAoIWZpcnN0TGV0dGVyQmxvY2spCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIERyaWxsIGlu
dG8gaW5saW5lcyBsb29raW5nIGZvciBvdXIgZmlyc3QgdGV4dCBjaGlsZC4KICAgICBSZW5kZXJP
YmplY3QqIGN1cnJDaGlsZCA9IGZpcnN0TGV0dGVyQmxvY2stPmZpcnN0Q2hpbGQoKTsKICAgICB3
aGlsZSAoY3VyckNoaWxkKSB7CiAgICAgICAgIGlmIChjdXJyQ2hpbGQtPmlzVGV4dCgpKQpAQCAt
NjAzMCw4MyArNjAxOCw3MCBAQCB2b2lkIFJlbmRlckJsb2NrOjp1cGRhdGVGaXJzdExldHRlcigp
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGN1cnJDaGlsZCA9IGN1cnJDaGlsZC0+Zmlyc3RD
aGlsZCgpOwogICAgIH0KKyAgICByZXR1cm4gY3VyckNoaWxkOworfQogCi0gICAgaWYgKCFjdXJy
Q2hpbGQpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIElmIHRoZSBjaGlsZCBhbHJlYWR5IGhh
cyBzdHlsZSwgdGhlbiBpdCBoYXMgYWxyZWFkeSBiZWVuIGNyZWF0ZWQsIHNvIHdlIGp1c3Qgd2Fu
dAotICAgIC8vIHRvIHVwZGF0ZSBpdC4KLSAgICBpZiAoY3VyckNoaWxkLT5wYXJlbnQoKS0+c3R5
bGUoKS0+c3R5bGVUeXBlKCkgPT0gRklSU1RfTEVUVEVSKSB7Ci0gICAgICAgIFJlbmRlck9iamVj
dCogZmlyc3RMZXR0ZXIgPSBjdXJyQ2hpbGQtPnBhcmVudCgpOwotICAgICAgICBSZW5kZXJPYmpl
Y3QqIGZpcnN0TGV0dGVyQ29udGFpbmVyID0gZmlyc3RMZXR0ZXItPnBhcmVudCgpOwotICAgICAg
ICBSZW5kZXJTdHlsZSogcHNldWRvU3R5bGUgPSBzdHlsZUZvckZpcnN0TGV0dGVyKGZpcnN0TGV0
dGVyQmxvY2ssIGZpcnN0TGV0dGVyQ29udGFpbmVyKTsKLSAgICAgICAgQVNTRVJUKGZpcnN0TGV0
dGVyLT5pc0Zsb2F0aW5nKCkgfHwgZmlyc3RMZXR0ZXItPmlzSW5saW5lKCkpOwotCi0gICAgICAg
IGlmIChOb2RlOjpkaWZmKGZpcnN0TGV0dGVyLT5zdHlsZSgpLCBwc2V1ZG9TdHlsZSkgPT0gTm9k
ZTo6RGV0YWNoKSB7Ci0gICAgICAgICAgICAvLyBUaGUgZmlyc3QtbGV0dGVyIHJlbmRlcmVyIG5l
ZWRzIHRvIGJlIHJlcGxhY2VkLiBDcmVhdGUgYSBuZXcgcmVuZGVyZXIgb2YgdGhlIHJpZ2h0IHR5
cGUuCi0gICAgICAgICAgICBSZW5kZXJPYmplY3QqIG5ld0ZpcnN0TGV0dGVyOwotICAgICAgICAg
ICAgaWYgKHBzZXVkb1N0eWxlLT5kaXNwbGF5KCkgPT0gSU5MSU5FKQotICAgICAgICAgICAgICAg
IG5ld0ZpcnN0TGV0dGVyID0gbmV3IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJJbmxpbmUoZG9jdW1l
bnQoKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbmV3Rmlyc3RMZXR0ZXIg
PSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlckJsb2NrKGRvY3VtZW50KCkpOwotICAgICAgICAg
ICAgbmV3Rmlyc3RMZXR0ZXItPnNldFN0eWxlKHBzZXVkb1N0eWxlKTsKLQotICAgICAgICAgICAg
Ly8gTW92ZSB0aGUgZmlyc3QgbGV0dGVyIGludG8gdGhlIG5ldyByZW5kZXJlci4KLSAgICAgICAg
ICAgIExheW91dFN0YXRlRGlzYWJsZXIgbGF5b3V0U3RhdGVEaXNhYmxlcih2aWV3KCkpOwotICAg
ICAgICAgICAgd2hpbGUgKFJlbmRlck9iamVjdCogY2hpbGQgPSBmaXJzdExldHRlci0+Zmlyc3RD
aGlsZCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNoaWxkLT5pc1RleHQoKSkKLSAgICAgICAg
ICAgICAgICAgICAgdG9SZW5kZXJUZXh0KGNoaWxkKS0+cmVtb3ZlQW5kRGVzdHJveVRleHRCb3hl
cygpOwotICAgICAgICAgICAgICAgIGZpcnN0TGV0dGVyLT5yZW1vdmVDaGlsZChjaGlsZCk7Ci0g
ICAgICAgICAgICAgICAgbmV3Rmlyc3RMZXR0ZXItPmFkZENoaWxkKGNoaWxkLCAwKTsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgUmVuZGVyVGV4dEZyYWdtZW50KiByZW1haW5pbmdUZXh0
ID0gMDsKLSAgICAgICAgICAgIFJlbmRlck9iamVjdCogbmV4dFNpYmxpbmcgPSBmaXJzdExldHRl
ci0+bmV4dFNpYmxpbmcoKTsKLSAgICAgICAgICAgIFJlbmRlck9iamVjdCogcmVtYWluaW5nVGV4
dE9iamVjdCA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QoZmlyc3RMZXR0ZXIpLT5maXJzdExldHRl
clJlbWFpbmluZ1RleHQoKTsKLSAgICAgICAgICAgIGlmIChyZW1haW5pbmdUZXh0T2JqZWN0ICYm
IHJlbWFpbmluZ1RleHRPYmplY3QtPmlzVGV4dCgpICYmIHRvUmVuZGVyVGV4dChyZW1haW5pbmdU
ZXh0T2JqZWN0KS0+aXNUZXh0RnJhZ21lbnQoKSkKLSAgICAgICAgICAgICAgICByZW1haW5pbmdU
ZXh0ID0gdG9SZW5kZXJUZXh0RnJhZ21lbnQocmVtYWluaW5nVGV4dE9iamVjdCk7Ci0gICAgICAg
ICAgICBpZiAocmVtYWluaW5nVGV4dCkgewotICAgICAgICAgICAgICAgIEFTU0VSVChyZW1haW5p
bmdUZXh0LT5pc0Fub255bW91cygpIHx8IHJlbWFpbmluZ1RleHQtPm5vZGUoKS0+cmVuZGVyZXIo
KSA9PSByZW1haW5pbmdUZXh0KTsKLSAgICAgICAgICAgICAgICAvLyBSZXBsYWNlIHRoZSBvbGQg
cmVuZGVyZXIgd2l0aCB0aGUgbmV3IG9uZS4KLSAgICAgICAgICAgICAgICByZW1haW5pbmdUZXh0
LT5zZXRGaXJzdExldHRlcihuZXdGaXJzdExldHRlcik7Ci0gICAgICAgICAgICAgICAgdG9SZW5k
ZXJCb3hNb2RlbE9iamVjdChuZXdGaXJzdExldHRlciktPnNldEZpcnN0TGV0dGVyUmVtYWluaW5n
VGV4dChyZW1haW5pbmdUZXh0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZpcnN0TGV0
dGVyLT5kZXN0cm95KCk7Ci0gICAgICAgICAgICBmaXJzdExldHRlciA9IG5ld0ZpcnN0TGV0dGVy
OwotICAgICAgICAgICAgZmlyc3RMZXR0ZXJDb250YWluZXItPmFkZENoaWxkKGZpcnN0TGV0dGVy
LCBuZXh0U2libGluZyk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgZmlyc3RMZXR0ZXIt
PnNldFN0eWxlKHBzZXVkb1N0eWxlKTsKK3ZvaWQgUmVuZGVyQmxvY2s6OnVwZGF0ZUZpcnN0TGV0
dGVyU3R5bGUoUmVuZGVyT2JqZWN0KiBmaXJzdExldHRlckJsb2NrLCBSZW5kZXJPYmplY3QqIGN1
cnJlbnRDaGlsZCkKK3sKKyAgICBSZW5kZXJPYmplY3QqIGZpcnN0TGV0dGVyID0gY3VycmVudENo
aWxkLT5wYXJlbnQoKTsKKyAgICBSZW5kZXJPYmplY3QqIGZpcnN0TGV0dGVyQ29udGFpbmVyID0g
Zmlyc3RMZXR0ZXItPnBhcmVudCgpOworICAgIFJlbmRlclN0eWxlKiBwc2V1ZG9TdHlsZSA9IHN0
eWxlRm9yRmlyc3RMZXR0ZXIoZmlyc3RMZXR0ZXJCbG9jaywgZmlyc3RMZXR0ZXJDb250YWluZXIp
OworICAgIEFTU0VSVChmaXJzdExldHRlci0+aXNGbG9hdGluZygpIHx8IGZpcnN0TGV0dGVyLT5p
c0lubGluZSgpKTsKIAotICAgICAgICBmb3IgKFJlbmRlck9iamVjdCogZ2VuQ2hpbGQgPSBmaXJz
dExldHRlci0+Zmlyc3RDaGlsZCgpOyBnZW5DaGlsZDsgZ2VuQ2hpbGQgPSBnZW5DaGlsZC0+bmV4
dFNpYmxpbmcoKSkgewotICAgICAgICAgICAgaWYgKGdlbkNoaWxkLT5pc1RleHQoKSkgCi0gICAg
ICAgICAgICAgICAgZ2VuQ2hpbGQtPnNldFN0eWxlKHBzZXVkb1N0eWxlKTsKLSAgICAgICAgfQor
ICAgIGlmIChOb2RlOjpkaWZmKGZpcnN0TGV0dGVyLT5zdHlsZSgpLCBwc2V1ZG9TdHlsZSkgPT0g
Tm9kZTo6RGV0YWNoKSB7CisgICAgICAgIC8vIFRoZSBmaXJzdC1sZXR0ZXIgcmVuZGVyZXIgbmVl
ZHMgdG8gYmUgcmVwbGFjZWQuIENyZWF0ZSBhIG5ldyByZW5kZXJlciBvZiB0aGUgcmlnaHQgdHlw
ZS4KKyAgICAgICAgUmVuZGVyT2JqZWN0KiBuZXdGaXJzdExldHRlcjsKKyAgICAgICAgaWYgKHBz
ZXVkb1N0eWxlLT5kaXNwbGF5KCkgPT0gSU5MSU5FKQorICAgICAgICAgICAgbmV3Rmlyc3RMZXR0
ZXIgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlcklubGluZShkb2N1bWVudCgpKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgbmV3Rmlyc3RMZXR0ZXIgPSBuZXcgKHJlbmRlckFyZW5hKCkp
IFJlbmRlckJsb2NrKGRvY3VtZW50KCkpOworICAgICAgICBuZXdGaXJzdExldHRlci0+c2V0U3R5
bGUocHNldWRvU3R5bGUpOworCisgICAgICAgIC8vIE1vdmUgdGhlIGZpcnN0IGxldHRlciBpbnRv
IHRoZSBuZXcgcmVuZGVyZXIuCisgICAgICAgIExheW91dFN0YXRlRGlzYWJsZXIgbGF5b3V0U3Rh
dGVEaXNhYmxlcih2aWV3KCkpOworICAgICAgICB3aGlsZSAoUmVuZGVyT2JqZWN0KiBjaGlsZCA9
IGZpcnN0TGV0dGVyLT5maXJzdENoaWxkKCkpIHsKKyAgICAgICAgICAgIGlmIChjaGlsZC0+aXNU
ZXh0KCkpCisgICAgICAgICAgICAgICAgdG9SZW5kZXJUZXh0KGNoaWxkKS0+cmVtb3ZlQW5kRGVz
dHJveVRleHRCb3hlcygpOworICAgICAgICAgICAgZmlyc3RMZXR0ZXItPnJlbW92ZUNoaWxkKGNo
aWxkKTsKKyAgICAgICAgICAgIG5ld0ZpcnN0TGV0dGVyLT5hZGRDaGlsZChjaGlsZCwgMCk7Cisg
ICAgICAgIH0KKworICAgICAgICBSZW5kZXJUZXh0RnJhZ21lbnQqIHJlbWFpbmluZ1RleHQgPSAw
OworICAgICAgICBSZW5kZXJPYmplY3QqIG5leHRTaWJsaW5nID0gZmlyc3RMZXR0ZXItPm5leHRT
aWJsaW5nKCk7CisgICAgICAgIFJlbmRlck9iamVjdCogcmVtYWluaW5nVGV4dE9iamVjdCA9IHRv
UmVuZGVyQm94TW9kZWxPYmplY3QoZmlyc3RMZXR0ZXIpLT5maXJzdExldHRlclJlbWFpbmluZ1Rl
eHQoKTsKKyAgICAgICAgaWYgKHJlbWFpbmluZ1RleHRPYmplY3QgJiYgcmVtYWluaW5nVGV4dE9i
amVjdC0+aXNUZXh0KCkgJiYgdG9SZW5kZXJUZXh0KHJlbWFpbmluZ1RleHRPYmplY3QpLT5pc1Rl
eHRGcmFnbWVudCgpKQorICAgICAgICAgICAgcmVtYWluaW5nVGV4dCA9IHRvUmVuZGVyVGV4dEZy
YWdtZW50KHJlbWFpbmluZ1RleHRPYmplY3QpOworICAgICAgICBpZiAocmVtYWluaW5nVGV4dCkg
eworICAgICAgICAgICAgQVNTRVJUKHJlbWFpbmluZ1RleHQtPmlzQW5vbnltb3VzKCkgfHwgcmVt
YWluaW5nVGV4dC0+bm9kZSgpLT5yZW5kZXJlcigpID09IHJlbWFpbmluZ1RleHQpOworICAgICAg
ICAgICAgLy8gUmVwbGFjZSB0aGUgb2xkIHJlbmRlcmVyIHdpdGggdGhlIG5ldyBvbmUuCisgICAg
ICAgICAgICByZW1haW5pbmdUZXh0LT5zZXRGaXJzdExldHRlcihuZXdGaXJzdExldHRlcik7Cisg
ICAgICAgICAgICB0b1JlbmRlckJveE1vZGVsT2JqZWN0KG5ld0ZpcnN0TGV0dGVyKS0+c2V0Rmly
c3RMZXR0ZXJSZW1haW5pbmdUZXh0KHJlbWFpbmluZ1RleHQpOworICAgICAgICB9CisgICAgICAg
IGZpcnN0TGV0dGVyLT5kZXN0cm95KCk7CisgICAgICAgIGZpcnN0TGV0dGVyID0gbmV3Rmlyc3RM
ZXR0ZXI7CisgICAgICAgIGZpcnN0TGV0dGVyQ29udGFpbmVyLT5hZGRDaGlsZChmaXJzdExldHRl
ciwgbmV4dFNpYmxpbmcpOworICAgIH0gZWxzZQorICAgICAgICBmaXJzdExldHRlci0+c2V0U3R5
bGUocHNldWRvU3R5bGUpOwogCi0gICAgICAgIHJldHVybjsKKyAgICBmb3IgKFJlbmRlck9iamVj
dCogZ2VuQ2hpbGQgPSBmaXJzdExldHRlci0+Zmlyc3RDaGlsZCgpOyBnZW5DaGlsZDsgZ2VuQ2hp
bGQgPSBnZW5DaGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBpZiAoZ2VuQ2hpbGQtPmlz
VGV4dCgpKQorICAgICAgICAgICAgZ2VuQ2hpbGQtPnNldFN0eWxlKHBzZXVkb1N0eWxlKTsKICAg
ICB9Cit9CiAKLSAgICBpZiAoIWN1cnJDaGlsZC0+aXNUZXh0KCkgfHwgY3VyckNoaWxkLT5pc0JS
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIElmIHRoZSBjaGlsZCBkb2VzIG5vdCBhbHJl
YWR5IGhhdmUgc3R5bGUsIHdlIGNyZWF0ZSBpdCBoZXJlLgotICAgIFJlbmRlck9iamVjdCogZmly
c3RMZXR0ZXJDb250YWluZXIgPSBjdXJyQ2hpbGQtPnBhcmVudCgpOwotCi0gICAgLy8gT3VyIGxh
eW91dCBzdGF0ZSBpcyBub3QgdmFsaWQgZm9yIHRoZSByZXBhaW50cyB3ZSBhcmUgZ29pbmcgdG8g
dHJpZ2dlciBieQotICAgIC8vIGFkZGluZyBhbmQgcmVtb3ZpbmcgY2hpbGRyZW4gb2YgZmlyc3RM
ZXR0ZXJDb250YWluZXIuCi0gICAgTGF5b3V0U3RhdGVEaXNhYmxlciBsYXlvdXRTdGF0ZURpc2Fi
bGVyKHZpZXcoKSk7Ci0KLSAgICBSZW5kZXJUZXh0KiB0ZXh0T2JqID0gdG9SZW5kZXJUZXh0KGN1
cnJDaGlsZCk7Ci0KLSAgICAvLyBDcmVhdGUgb3VyIHBzZXVkbyBzdHlsZSBub3cgdGhhdCB3ZSBo
YXZlIG91ciBmaXJzdExldHRlckNvbnRhaW5lciBkZXRlcm1pbmVkLgordm9pZCBSZW5kZXJCbG9j
azo6Y3JlYXRlRmlyc3RMZXR0ZXIoUmVuZGVyT2JqZWN0KiBmaXJzdExldHRlckJsb2NrLCBSZW5k
ZXJPYmplY3QqIGN1cnJlbnRDaGlsZCkKK3sKKyAgICBSZW5kZXJPYmplY3QqIGZpcnN0TGV0dGVy
Q29udGFpbmVyID0gY3VycmVudENoaWxkLT5wYXJlbnQoKTsKICAgICBSZW5kZXJTdHlsZSogcHNl
dWRvU3R5bGUgPSBzdHlsZUZvckZpcnN0TGV0dGVyKGZpcnN0TGV0dGVyQmxvY2ssIGZpcnN0TGV0
dGVyQ29udGFpbmVyKTsKLQogICAgIFJlbmRlck9iamVjdCogZmlyc3RMZXR0ZXIgPSAwOwogICAg
IGlmIChwc2V1ZG9TdHlsZS0+ZGlzcGxheSgpID09IElOTElORSkKICAgICAgICAgZmlyc3RMZXR0
ZXIgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlcklubGluZShkb2N1bWVudCgpKTsKICAgICBl
bHNlCiAgICAgICAgIGZpcnN0TGV0dGVyID0gbmV3IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJCbG9j
ayhkb2N1bWVudCgpKTsKICAgICBmaXJzdExldHRlci0+c2V0U3R5bGUocHNldWRvU3R5bGUpOwot
ICAgIGZpcnN0TGV0dGVyQ29udGFpbmVyLT5hZGRDaGlsZChmaXJzdExldHRlciwgY3VyckNoaWxk
KTsKKyAgICBmaXJzdExldHRlckNvbnRhaW5lci0+YWRkQ2hpbGQoZmlyc3RMZXR0ZXIsIGN1cnJl
bnRDaGlsZCk7CisKKyAgICBSZW5kZXJUZXh0KiB0ZXh0T2JqID0gdG9SZW5kZXJUZXh0KGN1cnJl
bnRDaGlsZCk7CiAKICAgICAvLyBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIGdvaW5nIHRvIGJlIGVp
dGhlciBhIGdlbmVyYXRlZCBjb250ZW50IHN0cmluZyBvciBhIERPTSBub2RlJ3MKICAgICAvLyBz
dHJpbmcuICBXZSB3YW50IHRoZSBvcmlnaW5hbCBzdHJpbmcgYmVmb3JlIGl0IGdvdCB0cmFuc2Zv
cm1lZCBpbiBjYXNlIGZpcnN0LWxldHRlciBoYXMKQEAgLTYxNTksNiArNjEzNCw0MSBAQCB2b2lk
IFJlbmRlckJsb2NrOjp1cGRhdGVGaXJzdExldHRlcigpCiAgICAgfQogfQogCit2b2lkIFJlbmRl
ckJsb2NrOjp1cGRhdGVGaXJzdExldHRlcigpCit7CisgICAgaWYgKCFkb2N1bWVudCgpLT51c2Vz
Rmlyc3RMZXR0ZXJSdWxlcygpKQorICAgICAgICByZXR1cm47CisgICAgLy8gRG9uJ3QgcmVjdXIK
KyAgICBpZiAoc3R5bGUoKS0+c3R5bGVUeXBlKCkgPT0gRklSU1RfTEVUVEVSKQorICAgICAgICBy
ZXR1cm47CisKKyAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBkZXN0cm95IHRoZSBmaXJzdC1sZXR0
ZXIgb2JqZWN0IGlmIGl0IGlzIG5vIGxvbmdlciB0aGUgZmlyc3QgY2hpbGQuIE5lZWQgdG8gZmlu
ZAorICAgIC8vIGFuIGVmZmljaWVudCB3YXkgdG8gY2hlY2sgZm9yIHRoYXQgc2l0dWF0aW9uIHRo
b3VnaCBiZWZvcmUgaW1wbGVtZW50aW5nIGFueXRoaW5nLgorICAgIFJlbmRlck9iamVjdCogZmly
c3RMZXR0ZXJCbG9jayA9IGZpbmRGaXJzdExldHRlckJsb2NrKHRoaXMpOworICAgIGlmICghZmly
c3RMZXR0ZXJCbG9jaykKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVuZGVyT2JqZWN0KiBjdXJy
Q2hpbGQgPSBmaW5kRmlyc3RDaGlsZEluRmlyc3RMZXR0ZXIoZmlyc3RMZXR0ZXJCbG9jayk7Cisg
ICAgaWYgKCFjdXJyQ2hpbGQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIElmIHRoZSBjaGls
ZCBhbHJlYWR5IGhhcyBzdHlsZSwgdGhlbiBpdCBoYXMgYWxyZWFkeSBiZWVuIGNyZWF0ZWQsIHNv
IHdlIGp1c3Qgd2FudAorICAgIC8vIHRvIHVwZGF0ZSBpdC4KKyAgICBpZiAoY3VyckNoaWxkLT5w
YXJlbnQoKS0+c3R5bGUoKS0+c3R5bGVUeXBlKCkgPT0gRklSU1RfTEVUVEVSKSB7CisgICAgICAg
IHVwZGF0ZUZpcnN0TGV0dGVyU3R5bGUoZmlyc3RMZXR0ZXJCbG9jaywgY3VyckNoaWxkKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghY3VyckNoaWxkLT5pc1RleHQoKSB8fCBj
dXJyQ2hpbGQtPmlzQlIoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gT3VyIGxheW91dCBz
dGF0ZSBpcyBub3QgdmFsaWQgZm9yIHRoZSByZXBhaW50cyB3ZSBhcmUgZ29pbmcgdG8gdHJpZ2dl
ciBieQorICAgIC8vIGFkZGluZyBhbmQgcmVtb3ZpbmcgY2hpbGRyZW4gb2YgZmlyc3RMZXR0ZXJD
b250YWluZXIuCisgICAgTGF5b3V0U3RhdGVEaXNhYmxlciBsYXlvdXRTdGF0ZURpc2FibGVyKHZp
ZXcoKSk7CisKKyAgICBjcmVhdGVGaXJzdExldHRlcihmaXJzdExldHRlckJsb2NrLCBjdXJyQ2hp
bGQpOworfQorCiAvLyBIZWxwZXIgbWV0aG9kcyBmb3Igb2J0YWluaW5nIHRoZSBsYXN0IGxpbmUs
IGNvbXB1dGluZyBsaW5lIGNvdW50cyBhbmQgaGVpZ2h0cyBmb3IgbGluZSBjb3VudHMKIC8vIChj
cmF3bGluZyBpbnRvIGJsb2NrcykuCiBzdGF0aWMgYm9vbCBzaG91bGRDaGVja0xpbmVzKFJlbmRl
ck9iamVjdCogb2JqKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAppbmRleCBj
ZjIzMTczLi41OGI0NWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApA
QCAtNTI5LDYgKzUyOSw5IEBAIHByaXZhdGU6CiAgICAgLy8gQ2FsbGVkIHRvIGxheSBvdXQgdGhl
IGxlZ2VuZCBmb3IgYSBmaWVsZHNldCBvciB0aGUgcnVieSB0ZXh0IG9mIGEgcnVieSBydW4uCiAg
ICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGxheW91dFNwZWNpYWxFeGNsdWRlZENoaWxkKGJvb2wg
LypyZWxheW91dENoaWxkcmVuKi8pIHsgcmV0dXJuIDA7IH0KIAorICAgIHZvaWQgY3JlYXRlRmly
c3RMZXR0ZXIoUmVuZGVyT2JqZWN0KiBmaXJzdExldHRlckJsb2NrLCBSZW5kZXJPYmplY3QqIGN1
cnJlbnRDaGlsZCk7CisgICAgdm9pZCB1cGRhdGVGaXJzdExldHRlclN0eWxlKFJlbmRlck9iamVj
dCogZmlyc3RMZXR0ZXIsIFJlbmRlck9iamVjdCogZmlyc3RMZXR0ZXJDb250YWluZXIpOworCiAg
ICAgc3RydWN0IEZsb2F0V2l0aFJlY3QgewogICAgICAgICBGbG9hdFdpdGhSZWN0KFJlbmRlckJv
eCogZikKICAgICAgICAgICAgIDogb2JqZWN0KGYpCi0tIAoxLjcuNS40Cgo=
</data>
<flag name="commit-queue"
          id="134419"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131203</attachid>
            <date>2012-03-10 21:56:05 -0800</date>
            <delta_ts>2012-03-11 10:50:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Split-the-extra-logic-out-of-RenderBlock-updateFirst.patch</filename>
            <type>text/plain</type>
            <size>12831</size>
            <attacher name="Igor Trindade Oliveira">igor.oliveira</attacher>
            
              <data encoding="base64">RnJvbSA5YjM5NjZlNDNiMDMyNTFiYjU1OTk3NjI2MTJiYTY3MWIwNTQyNGIwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBJZ29yIE9saXZlaXJhIDxpZ29yLm9Ac2lzYS5zYW1zdW5nLmNv
bT4KRGF0ZTogU2F0LCAxMCBNYXIgMjAxMiAxNjowMDozNSAtMDgwMApTdWJqZWN0OiBbUEFUQ0hd
IFNwbGl0IHRoZSBleHRyYSBsb2dpYyBvdXQgb2YgUmVuZGVyQmxvY2s6OnVwZGF0ZUZpcnN0TGV0
dGVyCgotLS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgfCAgIDE3
ICsrKwogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCB8ICAxOTggKysr
KysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suaCAgIHwgICAgMyArCiAzIGZpbGVzIGNoYW5nZWQsIDExOSBpbnNlcnRpb25zKCsp
LCA5OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjUwM2IzZS4uOGM5ZTk2MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAzLTEwICBJZ29yIE9saXZlaXJhICA8aWdvci5v
QHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgU3BsaXQgdGhlIGV4dHJhIGxvZ2ljIG91dCBv
ZiBSZW5kZXJCbG9jazo6dXBkYXRlRmlyc3RMZXR0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwNzcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yIGV4cGVjdGVkLgor
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnVwZGF0ZUZpcnN0TGV0dGVyU3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNyZWF0ZUZpcnN0TGV0dGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjp1cGRhdGVGaXJzdExldHRlcik6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgIChSZW5kZXJCbG9jayk6CisKIDIw
MTItMDMtMDkgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBO
b3RpZmljYXRpb25QcmVzZW50ZXIgdG8gTm90aWZpY2F0aW9uQ2xpZW50CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCBkODdkNzcyLi5jMDMyNzliIDEwMDc1NQot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTU5OTMsMTIwICs1OTkzLDY3
IEBAIHN0YXRpYyBpbmxpbmUgUmVuZGVyT2JqZWN0KiBmaW5kRmlyc3RMZXR0ZXJCbG9jayhSZW5k
ZXJCbG9jayogc3RhcnQpCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgUmVuZGVyQmxvY2s6OnVw
ZGF0ZUZpcnN0TGV0dGVyKCkKK3ZvaWQgUmVuZGVyQmxvY2s6OnVwZGF0ZUZpcnN0TGV0dGVyU3R5
bGUoUmVuZGVyT2JqZWN0KiBmaXJzdExldHRlckJsb2NrLCBSZW5kZXJPYmplY3QqIGN1cnJlbnRD
aGlsZCkKIHsKLSAgICBpZiAoIWRvY3VtZW50KCktPnVzZXNGaXJzdExldHRlclJ1bGVzKCkpCi0g
ICAgICAgIHJldHVybjsKLSAgICAvLyBEb24ndCByZWN1cgotICAgIGlmIChzdHlsZSgpLT5zdHls
ZVR5cGUoKSA9PSBGSVJTVF9MRVRURVIpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEZJWE1F
OiBXZSBuZWVkIHRvIGRlc3Ryb3kgdGhlIGZpcnN0LWxldHRlciBvYmplY3QgaWYgaXQgaXMgbm8g
bG9uZ2VyIHRoZSBmaXJzdCBjaGlsZC4gIE5lZWQgdG8gZmluZAotICAgIC8vIGFuIGVmZmljaWVu
dCB3YXkgdG8gY2hlY2sgZm9yIHRoYXQgc2l0dWF0aW9uIHRob3VnaCBiZWZvcmUgaW1wbGVtZW50
aW5nIGFueXRoaW5nLgotICAgIFJlbmRlck9iamVjdCogZmlyc3RMZXR0ZXJCbG9jayA9IGZpbmRG
aXJzdExldHRlckJsb2NrKHRoaXMpOwotICAgIGlmICghZmlyc3RMZXR0ZXJCbG9jaykKLSAgICAg
ICAgcmV0dXJuOworICAgIFJlbmRlck9iamVjdCogZmlyc3RMZXR0ZXIgPSBjdXJyZW50Q2hpbGQt
PnBhcmVudCgpOworICAgIFJlbmRlck9iamVjdCogZmlyc3RMZXR0ZXJDb250YWluZXIgPSBmaXJz
dExldHRlci0+cGFyZW50KCk7CisgICAgUmVuZGVyU3R5bGUqIHBzZXVkb1N0eWxlID0gc3R5bGVG
b3JGaXJzdExldHRlcihmaXJzdExldHRlckJsb2NrLCBmaXJzdExldHRlckNvbnRhaW5lcik7Cisg
ICAgQVNTRVJUKGZpcnN0TGV0dGVyLT5pc0Zsb2F0aW5nKCkgfHwgZmlyc3RMZXR0ZXItPmlzSW5s
aW5lKCkpOwogCi0gICAgLy8gRHJpbGwgaW50byBpbmxpbmVzIGxvb2tpbmcgZm9yIG91ciBmaXJz
dCB0ZXh0IGNoaWxkLgotICAgIFJlbmRlck9iamVjdCogY3VyckNoaWxkID0gZmlyc3RMZXR0ZXJC
bG9jay0+Zmlyc3RDaGlsZCgpOwotICAgIHdoaWxlIChjdXJyQ2hpbGQpIHsKLSAgICAgICAgaWYg
KGN1cnJDaGlsZC0+aXNUZXh0KCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKGN1
cnJDaGlsZC0+aXNMaXN0TWFya2VyKCkpCi0gICAgICAgICAgICBjdXJyQ2hpbGQgPSBjdXJyQ2hp
bGQtPm5leHRTaWJsaW5nKCk7Ci0gICAgICAgIGVsc2UgaWYgKGN1cnJDaGlsZC0+aXNGbG9hdGlu
Z09yUG9zaXRpb25lZCgpKSB7Ci0gICAgICAgICAgICBpZiAoY3VyckNoaWxkLT5zdHlsZSgpLT5z
dHlsZVR5cGUoKSA9PSBGSVJTVF9MRVRURVIpIHsKLSAgICAgICAgICAgICAgICBjdXJyQ2hpbGQg
PSBjdXJyQ2hpbGQtPmZpcnN0Q2hpbGQoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGN1cnJDaGlsZCA9IGN1cnJDaGlsZC0+bmV4dFNpYmxpbmco
KTsKLSAgICAgICAgfSBlbHNlIGlmIChjdXJyQ2hpbGQtPmlzUmVwbGFjZWQoKSB8fCBjdXJyQ2hp
bGQtPmlzUmVuZGVyQnV0dG9uKCkgfHwgY3VyckNoaWxkLT5pc01lbnVMaXN0KCkpCi0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgZWxzZSBpZiAoY3VyckNoaWxkLT5zdHlsZSgpLT5oYXNQc2V1
ZG9TdHlsZShGSVJTVF9MRVRURVIpICYmIGNhbkhhdmVHZW5lcmF0ZWRDaGlsZHJlbihjdXJyQ2hp
bGQpKSAgewotICAgICAgICAgICAgLy8gV2UgZm91bmQgYSBsb3dlci1sZXZlbCBub2RlIHdpdGgg
Zmlyc3QtbGV0dGVyLCB3aGljaCBzdXBlcnNlZGVzIHRoZSBoaWdoZXItbGV2ZWwgc3R5bGUKLSAg
ICAgICAgICAgIGZpcnN0TGV0dGVyQmxvY2sgPSBjdXJyQ2hpbGQ7Ci0gICAgICAgICAgICBjdXJy
Q2hpbGQgPSBjdXJyQ2hpbGQtPmZpcnN0Q2hpbGQoKTsKLSAgICAgICAgfQorICAgIGlmIChOb2Rl
OjpkaWZmKGZpcnN0TGV0dGVyLT5zdHlsZSgpLCBwc2V1ZG9TdHlsZSkgPT0gTm9kZTo6RGV0YWNo
KSB7CisgICAgICAgIC8vIFRoZSBmaXJzdC1sZXR0ZXIgcmVuZGVyZXIgbmVlZHMgdG8gYmUgcmVw
bGFjZWQuIENyZWF0ZSBhIG5ldyByZW5kZXJlciBvZiB0aGUgcmlnaHQgdHlwZS4KKyAgICAgICAg
UmVuZGVyT2JqZWN0KiBuZXdGaXJzdExldHRlcjsKKyAgICAgICAgaWYgKHBzZXVkb1N0eWxlLT5k
aXNwbGF5KCkgPT0gSU5MSU5FKQorICAgICAgICAgICAgbmV3Rmlyc3RMZXR0ZXIgPSBuZXcgKHJl
bmRlckFyZW5hKCkpIFJlbmRlcklubGluZShkb2N1bWVudCgpKTsKICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgY3VyckNoaWxkID0gY3VyckNoaWxkLT5maXJzdENoaWxkKCk7Ci0gICAgfQotCi0g
ICAgaWYgKCFjdXJyQ2hpbGQpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIElmIHRoZSBjaGls
ZCBhbHJlYWR5IGhhcyBzdHlsZSwgdGhlbiBpdCBoYXMgYWxyZWFkeSBiZWVuIGNyZWF0ZWQsIHNv
IHdlIGp1c3Qgd2FudAotICAgIC8vIHRvIHVwZGF0ZSBpdC4KLSAgICBpZiAoY3VyckNoaWxkLT5w
YXJlbnQoKS0+c3R5bGUoKS0+c3R5bGVUeXBlKCkgPT0gRklSU1RfTEVUVEVSKSB7Ci0gICAgICAg
IFJlbmRlck9iamVjdCogZmlyc3RMZXR0ZXIgPSBjdXJyQ2hpbGQtPnBhcmVudCgpOwotICAgICAg
ICBSZW5kZXJPYmplY3QqIGZpcnN0TGV0dGVyQ29udGFpbmVyID0gZmlyc3RMZXR0ZXItPnBhcmVu
dCgpOwotICAgICAgICBSZW5kZXJTdHlsZSogcHNldWRvU3R5bGUgPSBzdHlsZUZvckZpcnN0TGV0
dGVyKGZpcnN0TGV0dGVyQmxvY2ssIGZpcnN0TGV0dGVyQ29udGFpbmVyKTsKLSAgICAgICAgQVNT
RVJUKGZpcnN0TGV0dGVyLT5pc0Zsb2F0aW5nKCkgfHwgZmlyc3RMZXR0ZXItPmlzSW5saW5lKCkp
OwotCi0gICAgICAgIGlmIChOb2RlOjpkaWZmKGZpcnN0TGV0dGVyLT5zdHlsZSgpLCBwc2V1ZG9T
dHlsZSkgPT0gTm9kZTo6RGV0YWNoKSB7Ci0gICAgICAgICAgICAvLyBUaGUgZmlyc3QtbGV0dGVy
IHJlbmRlcmVyIG5lZWRzIHRvIGJlIHJlcGxhY2VkLiBDcmVhdGUgYSBuZXcgcmVuZGVyZXIgb2Yg
dGhlIHJpZ2h0IHR5cGUuCi0gICAgICAgICAgICBSZW5kZXJPYmplY3QqIG5ld0ZpcnN0TGV0dGVy
OwotICAgICAgICAgICAgaWYgKHBzZXVkb1N0eWxlLT5kaXNwbGF5KCkgPT0gSU5MSU5FKQotICAg
ICAgICAgICAgICAgIG5ld0ZpcnN0TGV0dGVyID0gbmV3IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJJ
bmxpbmUoZG9jdW1lbnQoKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbmV3
Rmlyc3RMZXR0ZXIgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlckJsb2NrKGRvY3VtZW50KCkp
OwotICAgICAgICAgICAgbmV3Rmlyc3RMZXR0ZXItPnNldFN0eWxlKHBzZXVkb1N0eWxlKTsKLQot
ICAgICAgICAgICAgLy8gTW92ZSB0aGUgZmlyc3QgbGV0dGVyIGludG8gdGhlIG5ldyByZW5kZXJl
ci4KLSAgICAgICAgICAgIExheW91dFN0YXRlRGlzYWJsZXIgbGF5b3V0U3RhdGVEaXNhYmxlcih2
aWV3KCkpOwotICAgICAgICAgICAgd2hpbGUgKFJlbmRlck9iamVjdCogY2hpbGQgPSBmaXJzdExl
dHRlci0+Zmlyc3RDaGlsZCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNoaWxkLT5pc1RleHQo
KSkKLSAgICAgICAgICAgICAgICAgICAgdG9SZW5kZXJUZXh0KGNoaWxkKS0+cmVtb3ZlQW5kRGVz
dHJveVRleHRCb3hlcygpOwotICAgICAgICAgICAgICAgIGZpcnN0TGV0dGVyLT5yZW1vdmVDaGls
ZChjaGlsZCk7Ci0gICAgICAgICAgICAgICAgbmV3Rmlyc3RMZXR0ZXItPmFkZENoaWxkKGNoaWxk
LCAwKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgUmVuZGVyVGV4dEZyYWdtZW50KiBy
ZW1haW5pbmdUZXh0ID0gMDsKLSAgICAgICAgICAgIFJlbmRlck9iamVjdCogbmV4dFNpYmxpbmcg
PSBmaXJzdExldHRlci0+bmV4dFNpYmxpbmcoKTsKLSAgICAgICAgICAgIFJlbmRlck9iamVjdCog
cmVtYWluaW5nVGV4dE9iamVjdCA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QoZmlyc3RMZXR0ZXIp
LT5maXJzdExldHRlclJlbWFpbmluZ1RleHQoKTsKLSAgICAgICAgICAgIGlmIChyZW1haW5pbmdU
ZXh0T2JqZWN0ICYmIHJlbWFpbmluZ1RleHRPYmplY3QtPmlzVGV4dCgpICYmIHRvUmVuZGVyVGV4
dChyZW1haW5pbmdUZXh0T2JqZWN0KS0+aXNUZXh0RnJhZ21lbnQoKSkKLSAgICAgICAgICAgICAg
ICByZW1haW5pbmdUZXh0ID0gdG9SZW5kZXJUZXh0RnJhZ21lbnQocmVtYWluaW5nVGV4dE9iamVj
dCk7Ci0gICAgICAgICAgICBpZiAocmVtYWluaW5nVGV4dCkgewotICAgICAgICAgICAgICAgIEFT
U0VSVChyZW1haW5pbmdUZXh0LT5pc0Fub255bW91cygpIHx8IHJlbWFpbmluZ1RleHQtPm5vZGUo
KS0+cmVuZGVyZXIoKSA9PSByZW1haW5pbmdUZXh0KTsKLSAgICAgICAgICAgICAgICAvLyBSZXBs
YWNlIHRoZSBvbGQgcmVuZGVyZXIgd2l0aCB0aGUgbmV3IG9uZS4KLSAgICAgICAgICAgICAgICBy
ZW1haW5pbmdUZXh0LT5zZXRGaXJzdExldHRlcihuZXdGaXJzdExldHRlcik7Ci0gICAgICAgICAg
ICAgICAgdG9SZW5kZXJCb3hNb2RlbE9iamVjdChuZXdGaXJzdExldHRlciktPnNldEZpcnN0TGV0
dGVyUmVtYWluaW5nVGV4dChyZW1haW5pbmdUZXh0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGZpcnN0TGV0dGVyLT5kZXN0cm95KCk7Ci0gICAgICAgICAgICBmaXJzdExldHRlciA9IG5l
d0ZpcnN0TGV0dGVyOwotICAgICAgICAgICAgZmlyc3RMZXR0ZXJDb250YWluZXItPmFkZENoaWxk
KGZpcnN0TGV0dGVyLCBuZXh0U2libGluZyk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
Zmlyc3RMZXR0ZXItPnNldFN0eWxlKHBzZXVkb1N0eWxlKTsKLQotICAgICAgICBmb3IgKFJlbmRl
ck9iamVjdCogZ2VuQ2hpbGQgPSBmaXJzdExldHRlci0+Zmlyc3RDaGlsZCgpOyBnZW5DaGlsZDsg
Z2VuQ2hpbGQgPSBnZW5DaGlsZC0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICAgICAgaWYgKGdl
bkNoaWxkLT5pc1RleHQoKSkgCi0gICAgICAgICAgICAgICAgZ2VuQ2hpbGQtPnNldFN0eWxlKHBz
ZXVkb1N0eWxlKTsKLSAgICAgICAgfQorICAgICAgICAgICAgbmV3Rmlyc3RMZXR0ZXIgPSBuZXcg
KHJlbmRlckFyZW5hKCkpIFJlbmRlckJsb2NrKGRvY3VtZW50KCkpOworICAgICAgICBuZXdGaXJz
dExldHRlci0+c2V0U3R5bGUocHNldWRvU3R5bGUpOworCisgICAgICAgIC8vIE1vdmUgdGhlIGZp
cnN0IGxldHRlciBpbnRvIHRoZSBuZXcgcmVuZGVyZXIuCisgICAgICAgIExheW91dFN0YXRlRGlz
YWJsZXIgbGF5b3V0U3RhdGVEaXNhYmxlcih2aWV3KCkpOworICAgICAgICB3aGlsZSAoUmVuZGVy
T2JqZWN0KiBjaGlsZCA9IGZpcnN0TGV0dGVyLT5maXJzdENoaWxkKCkpIHsKKyAgICAgICAgICAg
IGlmIChjaGlsZC0+aXNUZXh0KCkpCisgICAgICAgICAgICAgICAgdG9SZW5kZXJUZXh0KGNoaWxk
KS0+cmVtb3ZlQW5kRGVzdHJveVRleHRCb3hlcygpOworICAgICAgICAgICAgZmlyc3RMZXR0ZXIt
PnJlbW92ZUNoaWxkKGNoaWxkKTsKKyAgICAgICAgICAgIG5ld0ZpcnN0TGV0dGVyLT5hZGRDaGls
ZChjaGlsZCwgMCk7CisgICAgICAgIH0KKworICAgICAgICBSZW5kZXJUZXh0RnJhZ21lbnQqIHJl
bWFpbmluZ1RleHQgPSAwOworICAgICAgICBSZW5kZXJPYmplY3QqIG5leHRTaWJsaW5nID0gZmly
c3RMZXR0ZXItPm5leHRTaWJsaW5nKCk7CisgICAgICAgIFJlbmRlck9iamVjdCogcmVtYWluaW5n
VGV4dE9iamVjdCA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QoZmlyc3RMZXR0ZXIpLT5maXJzdExl
dHRlclJlbWFpbmluZ1RleHQoKTsKKyAgICAgICAgaWYgKHJlbWFpbmluZ1RleHRPYmplY3QgJiYg
cmVtYWluaW5nVGV4dE9iamVjdC0+aXNUZXh0KCkgJiYgdG9SZW5kZXJUZXh0KHJlbWFpbmluZ1Rl
eHRPYmplY3QpLT5pc1RleHRGcmFnbWVudCgpKQorICAgICAgICAgICAgcmVtYWluaW5nVGV4dCA9
IHRvUmVuZGVyVGV4dEZyYWdtZW50KHJlbWFpbmluZ1RleHRPYmplY3QpOworICAgICAgICBpZiAo
cmVtYWluaW5nVGV4dCkgeworICAgICAgICAgICAgQVNTRVJUKHJlbWFpbmluZ1RleHQtPmlzQW5v
bnltb3VzKCkgfHwgcmVtYWluaW5nVGV4dC0+bm9kZSgpLT5yZW5kZXJlcigpID09IHJlbWFpbmlu
Z1RleHQpOworICAgICAgICAgICAgLy8gUmVwbGFjZSB0aGUgb2xkIHJlbmRlcmVyIHdpdGggdGhl
IG5ldyBvbmUuCisgICAgICAgICAgICByZW1haW5pbmdUZXh0LT5zZXRGaXJzdExldHRlcihuZXdG
aXJzdExldHRlcik7CisgICAgICAgICAgICB0b1JlbmRlckJveE1vZGVsT2JqZWN0KG5ld0ZpcnN0
TGV0dGVyKS0+c2V0Rmlyc3RMZXR0ZXJSZW1haW5pbmdUZXh0KHJlbWFpbmluZ1RleHQpOworICAg
ICAgICB9CisgICAgICAgIGZpcnN0TGV0dGVyLT5kZXN0cm95KCk7CisgICAgICAgIGZpcnN0TGV0
dGVyID0gbmV3Rmlyc3RMZXR0ZXI7CisgICAgICAgIGZpcnN0TGV0dGVyQ29udGFpbmVyLT5hZGRD
aGlsZChmaXJzdExldHRlciwgbmV4dFNpYmxpbmcpOworICAgIH0gZWxzZQorICAgICAgICBmaXJz
dExldHRlci0+c2V0U3R5bGUocHNldWRvU3R5bGUpOwogCi0gICAgICAgIHJldHVybjsKKyAgICBm
b3IgKFJlbmRlck9iamVjdCogZ2VuQ2hpbGQgPSBmaXJzdExldHRlci0+Zmlyc3RDaGlsZCgpOyBn
ZW5DaGlsZDsgZ2VuQ2hpbGQgPSBnZW5DaGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBp
ZiAoZ2VuQ2hpbGQtPmlzVGV4dCgpKQorICAgICAgICAgICAgZ2VuQ2hpbGQtPnNldFN0eWxlKHBz
ZXVkb1N0eWxlKTsKICAgICB9Cit9CiAKLSAgICBpZiAoIWN1cnJDaGlsZC0+aXNUZXh0KCkgfHwg
Y3VyckNoaWxkLT5pc0JSKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIElmIHRoZSBjaGls
ZCBkb2VzIG5vdCBhbHJlYWR5IGhhdmUgc3R5bGUsIHdlIGNyZWF0ZSBpdCBoZXJlLgotICAgIFJl
bmRlck9iamVjdCogZmlyc3RMZXR0ZXJDb250YWluZXIgPSBjdXJyQ2hpbGQtPnBhcmVudCgpOwot
Ci0gICAgLy8gT3VyIGxheW91dCBzdGF0ZSBpcyBub3QgdmFsaWQgZm9yIHRoZSByZXBhaW50cyB3
ZSBhcmUgZ29pbmcgdG8gdHJpZ2dlciBieQotICAgIC8vIGFkZGluZyBhbmQgcmVtb3ZpbmcgY2hp
bGRyZW4gb2YgZmlyc3RMZXR0ZXJDb250YWluZXIuCi0gICAgTGF5b3V0U3RhdGVEaXNhYmxlciBs
YXlvdXRTdGF0ZURpc2FibGVyKHZpZXcoKSk7Ci0KLSAgICBSZW5kZXJUZXh0KiB0ZXh0T2JqID0g
dG9SZW5kZXJUZXh0KGN1cnJDaGlsZCk7Ci0KLSAgICAvLyBDcmVhdGUgb3VyIHBzZXVkbyBzdHls
ZSBub3cgdGhhdCB3ZSBoYXZlIG91ciBmaXJzdExldHRlckNvbnRhaW5lciBkZXRlcm1pbmVkLgor
dm9pZCBSZW5kZXJCbG9jazo6Y3JlYXRlRmlyc3RMZXR0ZXIoUmVuZGVyT2JqZWN0KiBmaXJzdExl
dHRlckJsb2NrLCBSZW5kZXJPYmplY3QqIGN1cnJlbnRDaGlsZCkKK3sKKyAgICBSZW5kZXJPYmpl
Y3QqIGZpcnN0TGV0dGVyQ29udGFpbmVyID0gY3VycmVudENoaWxkLT5wYXJlbnQoKTsKICAgICBS
ZW5kZXJTdHlsZSogcHNldWRvU3R5bGUgPSBzdHlsZUZvckZpcnN0TGV0dGVyKGZpcnN0TGV0dGVy
QmxvY2ssIGZpcnN0TGV0dGVyQ29udGFpbmVyKTsKLQogICAgIFJlbmRlck9iamVjdCogZmlyc3RM
ZXR0ZXIgPSAwOwogICAgIGlmIChwc2V1ZG9TdHlsZS0+ZGlzcGxheSgpID09IElOTElORSkKICAg
ICAgICAgZmlyc3RMZXR0ZXIgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlcklubGluZShkb2N1
bWVudCgpKTsKICAgICBlbHNlCiAgICAgICAgIGZpcnN0TGV0dGVyID0gbmV3IChyZW5kZXJBcmVu
YSgpKSBSZW5kZXJCbG9jayhkb2N1bWVudCgpKTsKICAgICBmaXJzdExldHRlci0+c2V0U3R5bGUo
cHNldWRvU3R5bGUpOwotICAgIGZpcnN0TGV0dGVyQ29udGFpbmVyLT5hZGRDaGlsZChmaXJzdExl
dHRlciwgY3VyckNoaWxkKTsKKyAgICBmaXJzdExldHRlckNvbnRhaW5lci0+YWRkQ2hpbGQoZmly
c3RMZXR0ZXIsIGN1cnJlbnRDaGlsZCk7CisKKyAgICBSZW5kZXJUZXh0KiB0ZXh0T2JqID0gdG9S
ZW5kZXJUZXh0KGN1cnJlbnRDaGlsZCk7CiAKICAgICAvLyBUaGUgb3JpZ2luYWwgc3RyaW5nIGlz
IGdvaW5nIHRvIGJlIGVpdGhlciBhIGdlbmVyYXRlZCBjb250ZW50IHN0cmluZyBvciBhIERPTSBu
b2RlJ3MKICAgICAvLyBzdHJpbmcuICBXZSB3YW50IHRoZSBvcmlnaW5hbCBzdHJpbmcgYmVmb3Jl
IGl0IGdvdCB0cmFuc2Zvcm1lZCBpbiBjYXNlIGZpcnN0LWxldHRlciBoYXMKQEAgLTYxNTksNiAr
NjEwNiw1OSBAQCB2b2lkIFJlbmRlckJsb2NrOjp1cGRhdGVGaXJzdExldHRlcigpCiAgICAgfQog
fQogCit2b2lkIFJlbmRlckJsb2NrOjp1cGRhdGVGaXJzdExldHRlcigpCit7CisgICAgaWYgKCFk
b2N1bWVudCgpLT51c2VzRmlyc3RMZXR0ZXJSdWxlcygpKQorICAgICAgICByZXR1cm47CisgICAg
Ly8gRG9uJ3QgcmVjdXIKKyAgICBpZiAoc3R5bGUoKS0+c3R5bGVUeXBlKCkgPT0gRklSU1RfTEVU
VEVSKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBkZXN0cm95
IHRoZSBmaXJzdC1sZXR0ZXIgb2JqZWN0IGlmIGl0IGlzIG5vIGxvbmdlciB0aGUgZmlyc3QgY2hp
bGQuIE5lZWQgdG8gZmluZAorICAgIC8vIGFuIGVmZmljaWVudCB3YXkgdG8gY2hlY2sgZm9yIHRo
YXQgc2l0dWF0aW9uIHRob3VnaCBiZWZvcmUgaW1wbGVtZW50aW5nIGFueXRoaW5nLgorICAgIFJl
bmRlck9iamVjdCogZmlyc3RMZXR0ZXJCbG9jayA9IGZpbmRGaXJzdExldHRlckJsb2NrKHRoaXMp
OworICAgIGlmICghZmlyc3RMZXR0ZXJCbG9jaykKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8g
RHJpbGwgaW50byBpbmxpbmVzIGxvb2tpbmcgZm9yIG91ciBmaXJzdCB0ZXh0IGNoaWxkLgorICAg
IFJlbmRlck9iamVjdCogY3VyckNoaWxkID0gZmlyc3RMZXR0ZXJCbG9jay0+Zmlyc3RDaGlsZCgp
OworICAgIHdoaWxlIChjdXJyQ2hpbGQpIHsKKyAgICAgICAgaWYgKGN1cnJDaGlsZC0+aXNUZXh0
KCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKGN1cnJDaGlsZC0+aXNMaXN0TWFy
a2VyKCkpCisgICAgICAgICAgICBjdXJyQ2hpbGQgPSBjdXJyQ2hpbGQtPm5leHRTaWJsaW5nKCk7
CisgICAgICAgIGVsc2UgaWYgKGN1cnJDaGlsZC0+aXNGbG9hdGluZ09yUG9zaXRpb25lZCgpKSB7
CisgICAgICAgICAgICBpZiAoY3VyckNoaWxkLT5zdHlsZSgpLT5zdHlsZVR5cGUoKSA9PSBGSVJT
VF9MRVRURVIpIHsKKyAgICAgICAgICAgICAgICBjdXJyQ2hpbGQgPSBjdXJyQ2hpbGQtPmZpcnN0
Q2hpbGQoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGN1cnJDaGlsZCA9IGN1cnJDaGlsZC0+bmV4dFNpYmxpbmcoKTsKKyAgICAgICAgfSBlbHNl
IGlmIChjdXJyQ2hpbGQtPmlzUmVwbGFjZWQoKSB8fCBjdXJyQ2hpbGQtPmlzUmVuZGVyQnV0dG9u
KCkgfHwgY3VyckNoaWxkLT5pc01lbnVMaXN0KCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgZWxzZSBpZiAoY3VyckNoaWxkLT5zdHlsZSgpLT5oYXNQc2V1ZG9TdHlsZShGSVJTVF9MRVRU
RVIpICYmIGNhbkhhdmVHZW5lcmF0ZWRDaGlsZHJlbihjdXJyQ2hpbGQpKSAgeworICAgICAgICAg
ICAgLy8gV2UgZm91bmQgYSBsb3dlci1sZXZlbCBub2RlIHdpdGggZmlyc3QtbGV0dGVyLCB3aGlj
aCBzdXBlcnNlZGVzIHRoZSBoaWdoZXItbGV2ZWwgc3R5bGUKKyAgICAgICAgICAgIGZpcnN0TGV0
dGVyQmxvY2sgPSBjdXJyQ2hpbGQ7CisgICAgICAgICAgICBjdXJyQ2hpbGQgPSBjdXJyQ2hpbGQt
PmZpcnN0Q2hpbGQoKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBjdXJyQ2hpbGQgPSBj
dXJyQ2hpbGQtPmZpcnN0Q2hpbGQoKTsKKyAgICB9CisKKyAgICAvLyB0byB1cGRhdGUgaXQuCisg
ICAgaWYgKGN1cnJDaGlsZC0+cGFyZW50KCktPnN0eWxlKCktPnN0eWxlVHlwZSgpID09IEZJUlNU
X0xFVFRFUikgeworICAgICAgICB1cGRhdGVGaXJzdExldHRlclN0eWxlKGZpcnN0TGV0dGVyQmxv
Y2ssIGN1cnJDaGlsZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIWN1cnJD
aGlsZC0+aXNUZXh0KCkgfHwgY3VyckNoaWxkLT5pc0JSKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIC8vIE91ciBsYXlvdXQgc3RhdGUgaXMgbm90IHZhbGlkIGZvciB0aGUgcmVwYWludHMgd2Ug
YXJlIGdvaW5nIHRvIHRyaWdnZXIgYnkKKyAgICAvLyBhZGRpbmcgYW5kIHJlbW92aW5nIGNoaWxk
cmVuIG9mIGZpcnN0TGV0dGVyQ29udGFpbmVyLgorICAgIExheW91dFN0YXRlRGlzYWJsZXIgbGF5
b3V0U3RhdGVEaXNhYmxlcih2aWV3KCkpOworCisgICAgY3JlYXRlRmlyc3RMZXR0ZXIoZmlyc3RM
ZXR0ZXJCbG9jaywgY3VyckNoaWxkKTsKK30KKwogLy8gSGVscGVyIG1ldGhvZHMgZm9yIG9idGFp
bmluZyB0aGUgbGFzdCBsaW5lLCBjb21wdXRpbmcgbGluZSBjb3VudHMgYW5kIGhlaWdodHMgZm9y
IGxpbmUgY291bnRzCiAvLyAoY3Jhd2xpbmcgaW50byBibG9ja3MpLgogc3RhdGljIGJvb2wgc2hv
dWxkQ2hlY2tMaW5lcyhSZW5kZXJPYmplY3QqIG9iaikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmgKaW5kZXggY2YyMzE3My4uNThiNDViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmgKQEAgLTUyOSw2ICs1MjksOSBAQCBwcml2YXRlOgogICAgIC8vIENh
bGxlZCB0byBsYXkgb3V0IHRoZSBsZWdlbmQgZm9yIGEgZmllbGRzZXQgb3IgdGhlIHJ1YnkgdGV4
dCBvZiBhIHJ1YnkgcnVuLgogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBsYXlvdXRTcGVjaWFs
RXhjbHVkZWRDaGlsZChib29sIC8qcmVsYXlvdXRDaGlsZHJlbiovKSB7IHJldHVybiAwOyB9CiAK
KyAgICB2b2lkIGNyZWF0ZUZpcnN0TGV0dGVyKFJlbmRlck9iamVjdCogZmlyc3RMZXR0ZXJCbG9j
aywgUmVuZGVyT2JqZWN0KiBjdXJyZW50Q2hpbGQpOworICAgIHZvaWQgdXBkYXRlRmlyc3RMZXR0
ZXJTdHlsZShSZW5kZXJPYmplY3QqIGZpcnN0TGV0dGVyLCBSZW5kZXJPYmplY3QqIGZpcnN0TGV0
dGVyQ29udGFpbmVyKTsKKwogICAgIHN0cnVjdCBGbG9hdFdpdGhSZWN0IHsKICAgICAgICAgRmxv
YXRXaXRoUmVjdChSZW5kZXJCb3gqIGYpCiAgICAgICAgICAgICA6IG9iamVjdChmKQotLSAKMS43
LjUuNAoK
</data>
<flag name="commit-queue"
          id="134435"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131246</attachid>
            <date>2012-03-11 10:50:46 -0700</date>
            <delta_ts>2012-03-11 10:52:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Split-the-extra-logic-out-of-RenderBlock-updateFirst.patch</filename>
            <type>text/plain</type>
            <size>12871</size>
            <attacher name="Igor Trindade Oliveira">igor.oliveira</attacher>
            
              <data encoding="base64">RnJvbSBjZDkxMjlkYzNmMmJkNzAxZDRjZjAzOTQyZWI4OGE1YThlN2ZiYmNlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBJZ29yIE9saXZlaXJhIDxpZ29yLm9Ac2lzYS5zYW1zdW5nLmNv
bT4KRGF0ZTogU2F0LCAxMCBNYXIgMjAxMiAxNjowMDozNSAtMDgwMApTdWJqZWN0OiBbUEFUQ0hd
IFNwbGl0IHRoZSBleHRyYSBsb2dpYyBvdXQgb2YgUmVuZGVyQmxvY2s6OnVwZGF0ZUZpcnN0TGV0
dGVyCgotLS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgfCAgIDE3
ICsrKwogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCB8ICAyMDEgKysr
KysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suaCAgIHwgICAgMyArCiAzIGZpbGVzIGNoYW5nZWQsIDEyMiBpbnNlcnRpb25zKCsp
LCA5OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjUwM2IzZS4uOGM5ZTk2MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAzLTEwICBJZ29yIE9saXZlaXJhICA8aWdvci5v
QHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgU3BsaXQgdGhlIGV4dHJhIGxvZ2ljIG91dCBv
ZiBSZW5kZXJCbG9jazo6dXBkYXRlRmlyc3RMZXR0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwNzcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yIGV4cGVjdGVkLgor
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnVwZGF0ZUZpcnN0TGV0dGVyU3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNyZWF0ZUZpcnN0TGV0dGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjp1cGRhdGVGaXJzdExldHRlcik6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgIChSZW5kZXJCbG9jayk6CisKIDIw
MTItMDMtMDkgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBO
b3RpZmljYXRpb25QcmVzZW50ZXIgdG8gTm90aWZpY2F0aW9uQ2xpZW50CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCBkODdkNzcyLi40Mjk3YTM1IDEwMDc1NQot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTU5OTMsMTIwICs1OTkzLDY3
IEBAIHN0YXRpYyBpbmxpbmUgUmVuZGVyT2JqZWN0KiBmaW5kRmlyc3RMZXR0ZXJCbG9jayhSZW5k
ZXJCbG9jayogc3RhcnQpCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgUmVuZGVyQmxvY2s6OnVw
ZGF0ZUZpcnN0TGV0dGVyKCkKK3ZvaWQgUmVuZGVyQmxvY2s6OnVwZGF0ZUZpcnN0TGV0dGVyU3R5
bGUoUmVuZGVyT2JqZWN0KiBmaXJzdExldHRlckJsb2NrLCBSZW5kZXJPYmplY3QqIGN1cnJlbnRD
aGlsZCkKIHsKLSAgICBpZiAoIWRvY3VtZW50KCktPnVzZXNGaXJzdExldHRlclJ1bGVzKCkpCi0g
ICAgICAgIHJldHVybjsKLSAgICAvLyBEb24ndCByZWN1cgotICAgIGlmIChzdHlsZSgpLT5zdHls
ZVR5cGUoKSA9PSBGSVJTVF9MRVRURVIpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEZJWE1F
OiBXZSBuZWVkIHRvIGRlc3Ryb3kgdGhlIGZpcnN0LWxldHRlciBvYmplY3QgaWYgaXQgaXMgbm8g
bG9uZ2VyIHRoZSBmaXJzdCBjaGlsZC4gIE5lZWQgdG8gZmluZAotICAgIC8vIGFuIGVmZmljaWVu
dCB3YXkgdG8gY2hlY2sgZm9yIHRoYXQgc2l0dWF0aW9uIHRob3VnaCBiZWZvcmUgaW1wbGVtZW50
aW5nIGFueXRoaW5nLgotICAgIFJlbmRlck9iamVjdCogZmlyc3RMZXR0ZXJCbG9jayA9IGZpbmRG
aXJzdExldHRlckJsb2NrKHRoaXMpOwotICAgIGlmICghZmlyc3RMZXR0ZXJCbG9jaykKLSAgICAg
ICAgcmV0dXJuOworICAgIFJlbmRlck9iamVjdCogZmlyc3RMZXR0ZXIgPSBjdXJyZW50Q2hpbGQt
PnBhcmVudCgpOworICAgIFJlbmRlck9iamVjdCogZmlyc3RMZXR0ZXJDb250YWluZXIgPSBmaXJz
dExldHRlci0+cGFyZW50KCk7CisgICAgUmVuZGVyU3R5bGUqIHBzZXVkb1N0eWxlID0gc3R5bGVG
b3JGaXJzdExldHRlcihmaXJzdExldHRlckJsb2NrLCBmaXJzdExldHRlckNvbnRhaW5lcik7Cisg
ICAgQVNTRVJUKGZpcnN0TGV0dGVyLT5pc0Zsb2F0aW5nKCkgfHwgZmlyc3RMZXR0ZXItPmlzSW5s
aW5lKCkpOwogCi0gICAgLy8gRHJpbGwgaW50byBpbmxpbmVzIGxvb2tpbmcgZm9yIG91ciBmaXJz
dCB0ZXh0IGNoaWxkLgotICAgIFJlbmRlck9iamVjdCogY3VyckNoaWxkID0gZmlyc3RMZXR0ZXJC
bG9jay0+Zmlyc3RDaGlsZCgpOwotICAgIHdoaWxlIChjdXJyQ2hpbGQpIHsKLSAgICAgICAgaWYg
KGN1cnJDaGlsZC0+aXNUZXh0KCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKGN1
cnJDaGlsZC0+aXNMaXN0TWFya2VyKCkpCi0gICAgICAgICAgICBjdXJyQ2hpbGQgPSBjdXJyQ2hp
bGQtPm5leHRTaWJsaW5nKCk7Ci0gICAgICAgIGVsc2UgaWYgKGN1cnJDaGlsZC0+aXNGbG9hdGlu
Z09yUG9zaXRpb25lZCgpKSB7Ci0gICAgICAgICAgICBpZiAoY3VyckNoaWxkLT5zdHlsZSgpLT5z
dHlsZVR5cGUoKSA9PSBGSVJTVF9MRVRURVIpIHsKLSAgICAgICAgICAgICAgICBjdXJyQ2hpbGQg
PSBjdXJyQ2hpbGQtPmZpcnN0Q2hpbGQoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGN1cnJDaGlsZCA9IGN1cnJDaGlsZC0+bmV4dFNpYmxpbmco
KTsKLSAgICAgICAgfSBlbHNlIGlmIChjdXJyQ2hpbGQtPmlzUmVwbGFjZWQoKSB8fCBjdXJyQ2hp
bGQtPmlzUmVuZGVyQnV0dG9uKCkgfHwgY3VyckNoaWxkLT5pc01lbnVMaXN0KCkpCi0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgZWxzZSBpZiAoY3VyckNoaWxkLT5zdHlsZSgpLT5oYXNQc2V1
ZG9TdHlsZShGSVJTVF9MRVRURVIpICYmIGNhbkhhdmVHZW5lcmF0ZWRDaGlsZHJlbihjdXJyQ2hp
bGQpKSAgewotICAgICAgICAgICAgLy8gV2UgZm91bmQgYSBsb3dlci1sZXZlbCBub2RlIHdpdGgg
Zmlyc3QtbGV0dGVyLCB3aGljaCBzdXBlcnNlZGVzIHRoZSBoaWdoZXItbGV2ZWwgc3R5bGUKLSAg
ICAgICAgICAgIGZpcnN0TGV0dGVyQmxvY2sgPSBjdXJyQ2hpbGQ7Ci0gICAgICAgICAgICBjdXJy
Q2hpbGQgPSBjdXJyQ2hpbGQtPmZpcnN0Q2hpbGQoKTsKLSAgICAgICAgfQorICAgIGlmIChOb2Rl
OjpkaWZmKGZpcnN0TGV0dGVyLT5zdHlsZSgpLCBwc2V1ZG9TdHlsZSkgPT0gTm9kZTo6RGV0YWNo
KSB7CisgICAgICAgIC8vIFRoZSBmaXJzdC1sZXR0ZXIgcmVuZGVyZXIgbmVlZHMgdG8gYmUgcmVw
bGFjZWQuIENyZWF0ZSBhIG5ldyByZW5kZXJlciBvZiB0aGUgcmlnaHQgdHlwZS4KKyAgICAgICAg
UmVuZGVyT2JqZWN0KiBuZXdGaXJzdExldHRlcjsKKyAgICAgICAgaWYgKHBzZXVkb1N0eWxlLT5k
aXNwbGF5KCkgPT0gSU5MSU5FKQorICAgICAgICAgICAgbmV3Rmlyc3RMZXR0ZXIgPSBuZXcgKHJl
bmRlckFyZW5hKCkpIFJlbmRlcklubGluZShkb2N1bWVudCgpKTsKICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgY3VyckNoaWxkID0gY3VyckNoaWxkLT5maXJzdENoaWxkKCk7Ci0gICAgfQotCi0g
ICAgaWYgKCFjdXJyQ2hpbGQpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIElmIHRoZSBjaGls
ZCBhbHJlYWR5IGhhcyBzdHlsZSwgdGhlbiBpdCBoYXMgYWxyZWFkeSBiZWVuIGNyZWF0ZWQsIHNv
IHdlIGp1c3Qgd2FudAotICAgIC8vIHRvIHVwZGF0ZSBpdC4KLSAgICBpZiAoY3VyckNoaWxkLT5w
YXJlbnQoKS0+c3R5bGUoKS0+c3R5bGVUeXBlKCkgPT0gRklSU1RfTEVUVEVSKSB7Ci0gICAgICAg
IFJlbmRlck9iamVjdCogZmlyc3RMZXR0ZXIgPSBjdXJyQ2hpbGQtPnBhcmVudCgpOwotICAgICAg
ICBSZW5kZXJPYmplY3QqIGZpcnN0TGV0dGVyQ29udGFpbmVyID0gZmlyc3RMZXR0ZXItPnBhcmVu
dCgpOwotICAgICAgICBSZW5kZXJTdHlsZSogcHNldWRvU3R5bGUgPSBzdHlsZUZvckZpcnN0TGV0
dGVyKGZpcnN0TGV0dGVyQmxvY2ssIGZpcnN0TGV0dGVyQ29udGFpbmVyKTsKLSAgICAgICAgQVNT
RVJUKGZpcnN0TGV0dGVyLT5pc0Zsb2F0aW5nKCkgfHwgZmlyc3RMZXR0ZXItPmlzSW5saW5lKCkp
OwotCi0gICAgICAgIGlmIChOb2RlOjpkaWZmKGZpcnN0TGV0dGVyLT5zdHlsZSgpLCBwc2V1ZG9T
dHlsZSkgPT0gTm9kZTo6RGV0YWNoKSB7Ci0gICAgICAgICAgICAvLyBUaGUgZmlyc3QtbGV0dGVy
IHJlbmRlcmVyIG5lZWRzIHRvIGJlIHJlcGxhY2VkLiBDcmVhdGUgYSBuZXcgcmVuZGVyZXIgb2Yg
dGhlIHJpZ2h0IHR5cGUuCi0gICAgICAgICAgICBSZW5kZXJPYmplY3QqIG5ld0ZpcnN0TGV0dGVy
OwotICAgICAgICAgICAgaWYgKHBzZXVkb1N0eWxlLT5kaXNwbGF5KCkgPT0gSU5MSU5FKQotICAg
ICAgICAgICAgICAgIG5ld0ZpcnN0TGV0dGVyID0gbmV3IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJJ
bmxpbmUoZG9jdW1lbnQoKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbmV3
Rmlyc3RMZXR0ZXIgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlckJsb2NrKGRvY3VtZW50KCkp
OwotICAgICAgICAgICAgbmV3Rmlyc3RMZXR0ZXItPnNldFN0eWxlKHBzZXVkb1N0eWxlKTsKLQot
ICAgICAgICAgICAgLy8gTW92ZSB0aGUgZmlyc3QgbGV0dGVyIGludG8gdGhlIG5ldyByZW5kZXJl
ci4KLSAgICAgICAgICAgIExheW91dFN0YXRlRGlzYWJsZXIgbGF5b3V0U3RhdGVEaXNhYmxlcih2
aWV3KCkpOwotICAgICAgICAgICAgd2hpbGUgKFJlbmRlck9iamVjdCogY2hpbGQgPSBmaXJzdExl
dHRlci0+Zmlyc3RDaGlsZCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNoaWxkLT5pc1RleHQo
KSkKLSAgICAgICAgICAgICAgICAgICAgdG9SZW5kZXJUZXh0KGNoaWxkKS0+cmVtb3ZlQW5kRGVz
dHJveVRleHRCb3hlcygpOwotICAgICAgICAgICAgICAgIGZpcnN0TGV0dGVyLT5yZW1vdmVDaGls
ZChjaGlsZCk7Ci0gICAgICAgICAgICAgICAgbmV3Rmlyc3RMZXR0ZXItPmFkZENoaWxkKGNoaWxk
LCAwKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgUmVuZGVyVGV4dEZyYWdtZW50KiBy
ZW1haW5pbmdUZXh0ID0gMDsKLSAgICAgICAgICAgIFJlbmRlck9iamVjdCogbmV4dFNpYmxpbmcg
PSBmaXJzdExldHRlci0+bmV4dFNpYmxpbmcoKTsKLSAgICAgICAgICAgIFJlbmRlck9iamVjdCog
cmVtYWluaW5nVGV4dE9iamVjdCA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QoZmlyc3RMZXR0ZXIp
LT5maXJzdExldHRlclJlbWFpbmluZ1RleHQoKTsKLSAgICAgICAgICAgIGlmIChyZW1haW5pbmdU
ZXh0T2JqZWN0ICYmIHJlbWFpbmluZ1RleHRPYmplY3QtPmlzVGV4dCgpICYmIHRvUmVuZGVyVGV4
dChyZW1haW5pbmdUZXh0T2JqZWN0KS0+aXNUZXh0RnJhZ21lbnQoKSkKLSAgICAgICAgICAgICAg
ICByZW1haW5pbmdUZXh0ID0gdG9SZW5kZXJUZXh0RnJhZ21lbnQocmVtYWluaW5nVGV4dE9iamVj
dCk7Ci0gICAgICAgICAgICBpZiAocmVtYWluaW5nVGV4dCkgewotICAgICAgICAgICAgICAgIEFT
U0VSVChyZW1haW5pbmdUZXh0LT5pc0Fub255bW91cygpIHx8IHJlbWFpbmluZ1RleHQtPm5vZGUo
KS0+cmVuZGVyZXIoKSA9PSByZW1haW5pbmdUZXh0KTsKLSAgICAgICAgICAgICAgICAvLyBSZXBs
YWNlIHRoZSBvbGQgcmVuZGVyZXIgd2l0aCB0aGUgbmV3IG9uZS4KLSAgICAgICAgICAgICAgICBy
ZW1haW5pbmdUZXh0LT5zZXRGaXJzdExldHRlcihuZXdGaXJzdExldHRlcik7Ci0gICAgICAgICAg
ICAgICAgdG9SZW5kZXJCb3hNb2RlbE9iamVjdChuZXdGaXJzdExldHRlciktPnNldEZpcnN0TGV0
dGVyUmVtYWluaW5nVGV4dChyZW1haW5pbmdUZXh0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGZpcnN0TGV0dGVyLT5kZXN0cm95KCk7Ci0gICAgICAgICAgICBmaXJzdExldHRlciA9IG5l
d0ZpcnN0TGV0dGVyOwotICAgICAgICAgICAgZmlyc3RMZXR0ZXJDb250YWluZXItPmFkZENoaWxk
KGZpcnN0TGV0dGVyLCBuZXh0U2libGluZyk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
Zmlyc3RMZXR0ZXItPnNldFN0eWxlKHBzZXVkb1N0eWxlKTsKLQotICAgICAgICBmb3IgKFJlbmRl
ck9iamVjdCogZ2VuQ2hpbGQgPSBmaXJzdExldHRlci0+Zmlyc3RDaGlsZCgpOyBnZW5DaGlsZDsg
Z2VuQ2hpbGQgPSBnZW5DaGlsZC0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICAgICAgaWYgKGdl
bkNoaWxkLT5pc1RleHQoKSkgCi0gICAgICAgICAgICAgICAgZ2VuQ2hpbGQtPnNldFN0eWxlKHBz
ZXVkb1N0eWxlKTsKLSAgICAgICAgfQorICAgICAgICAgICAgbmV3Rmlyc3RMZXR0ZXIgPSBuZXcg
KHJlbmRlckFyZW5hKCkpIFJlbmRlckJsb2NrKGRvY3VtZW50KCkpOworICAgICAgICBuZXdGaXJz
dExldHRlci0+c2V0U3R5bGUocHNldWRvU3R5bGUpOworCisgICAgICAgIC8vIE1vdmUgdGhlIGZp
cnN0IGxldHRlciBpbnRvIHRoZSBuZXcgcmVuZGVyZXIuCisgICAgICAgIExheW91dFN0YXRlRGlz
YWJsZXIgbGF5b3V0U3RhdGVEaXNhYmxlcih2aWV3KCkpOworICAgICAgICB3aGlsZSAoUmVuZGVy
T2JqZWN0KiBjaGlsZCA9IGZpcnN0TGV0dGVyLT5maXJzdENoaWxkKCkpIHsKKyAgICAgICAgICAg
IGlmIChjaGlsZC0+aXNUZXh0KCkpCisgICAgICAgICAgICAgICAgdG9SZW5kZXJUZXh0KGNoaWxk
KS0+cmVtb3ZlQW5kRGVzdHJveVRleHRCb3hlcygpOworICAgICAgICAgICAgZmlyc3RMZXR0ZXIt
PnJlbW92ZUNoaWxkKGNoaWxkKTsKKyAgICAgICAgICAgIG5ld0ZpcnN0TGV0dGVyLT5hZGRDaGls
ZChjaGlsZCwgMCk7CisgICAgICAgIH0KKworICAgICAgICBSZW5kZXJUZXh0RnJhZ21lbnQqIHJl
bWFpbmluZ1RleHQgPSAwOworICAgICAgICBSZW5kZXJPYmplY3QqIG5leHRTaWJsaW5nID0gZmly
c3RMZXR0ZXItPm5leHRTaWJsaW5nKCk7CisgICAgICAgIFJlbmRlck9iamVjdCogcmVtYWluaW5n
VGV4dE9iamVjdCA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QoZmlyc3RMZXR0ZXIpLT5maXJzdExl
dHRlclJlbWFpbmluZ1RleHQoKTsKKyAgICAgICAgaWYgKHJlbWFpbmluZ1RleHRPYmplY3QgJiYg
cmVtYWluaW5nVGV4dE9iamVjdC0+aXNUZXh0KCkgJiYgdG9SZW5kZXJUZXh0KHJlbWFpbmluZ1Rl
eHRPYmplY3QpLT5pc1RleHRGcmFnbWVudCgpKQorICAgICAgICAgICAgcmVtYWluaW5nVGV4dCA9
IHRvUmVuZGVyVGV4dEZyYWdtZW50KHJlbWFpbmluZ1RleHRPYmplY3QpOworICAgICAgICBpZiAo
cmVtYWluaW5nVGV4dCkgeworICAgICAgICAgICAgQVNTRVJUKHJlbWFpbmluZ1RleHQtPmlzQW5v
bnltb3VzKCkgfHwgcmVtYWluaW5nVGV4dC0+bm9kZSgpLT5yZW5kZXJlcigpID09IHJlbWFpbmlu
Z1RleHQpOworICAgICAgICAgICAgLy8gUmVwbGFjZSB0aGUgb2xkIHJlbmRlcmVyIHdpdGggdGhl
IG5ldyBvbmUuCisgICAgICAgICAgICByZW1haW5pbmdUZXh0LT5zZXRGaXJzdExldHRlcihuZXdG
aXJzdExldHRlcik7CisgICAgICAgICAgICB0b1JlbmRlckJveE1vZGVsT2JqZWN0KG5ld0ZpcnN0
TGV0dGVyKS0+c2V0Rmlyc3RMZXR0ZXJSZW1haW5pbmdUZXh0KHJlbWFpbmluZ1RleHQpOworICAg
ICAgICB9CisgICAgICAgIGZpcnN0TGV0dGVyLT5kZXN0cm95KCk7CisgICAgICAgIGZpcnN0TGV0
dGVyID0gbmV3Rmlyc3RMZXR0ZXI7CisgICAgICAgIGZpcnN0TGV0dGVyQ29udGFpbmVyLT5hZGRD
aGlsZChmaXJzdExldHRlciwgbmV4dFNpYmxpbmcpOworICAgIH0gZWxzZQorICAgICAgICBmaXJz
dExldHRlci0+c2V0U3R5bGUocHNldWRvU3R5bGUpOwogCi0gICAgICAgIHJldHVybjsKKyAgICBm
b3IgKFJlbmRlck9iamVjdCogZ2VuQ2hpbGQgPSBmaXJzdExldHRlci0+Zmlyc3RDaGlsZCgpOyBn
ZW5DaGlsZDsgZ2VuQ2hpbGQgPSBnZW5DaGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBp
ZiAoZ2VuQ2hpbGQtPmlzVGV4dCgpKQorICAgICAgICAgICAgZ2VuQ2hpbGQtPnNldFN0eWxlKHBz
ZXVkb1N0eWxlKTsKICAgICB9Cit9CiAKLSAgICBpZiAoIWN1cnJDaGlsZC0+aXNUZXh0KCkgfHwg
Y3VyckNoaWxkLT5pc0JSKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIElmIHRoZSBjaGls
ZCBkb2VzIG5vdCBhbHJlYWR5IGhhdmUgc3R5bGUsIHdlIGNyZWF0ZSBpdCBoZXJlLgotICAgIFJl
bmRlck9iamVjdCogZmlyc3RMZXR0ZXJDb250YWluZXIgPSBjdXJyQ2hpbGQtPnBhcmVudCgpOwot
Ci0gICAgLy8gT3VyIGxheW91dCBzdGF0ZSBpcyBub3QgdmFsaWQgZm9yIHRoZSByZXBhaW50cyB3
ZSBhcmUgZ29pbmcgdG8gdHJpZ2dlciBieQotICAgIC8vIGFkZGluZyBhbmQgcmVtb3ZpbmcgY2hp
bGRyZW4gb2YgZmlyc3RMZXR0ZXJDb250YWluZXIuCi0gICAgTGF5b3V0U3RhdGVEaXNhYmxlciBs
YXlvdXRTdGF0ZURpc2FibGVyKHZpZXcoKSk7Ci0KLSAgICBSZW5kZXJUZXh0KiB0ZXh0T2JqID0g
dG9SZW5kZXJUZXh0KGN1cnJDaGlsZCk7Ci0KLSAgICAvLyBDcmVhdGUgb3VyIHBzZXVkbyBzdHls
ZSBub3cgdGhhdCB3ZSBoYXZlIG91ciBmaXJzdExldHRlckNvbnRhaW5lciBkZXRlcm1pbmVkLgor
dm9pZCBSZW5kZXJCbG9jazo6Y3JlYXRlRmlyc3RMZXR0ZXIoUmVuZGVyT2JqZWN0KiBmaXJzdExl
dHRlckJsb2NrLCBSZW5kZXJPYmplY3QqIGN1cnJlbnRDaGlsZCkKK3sKKyAgICBSZW5kZXJPYmpl
Y3QqIGZpcnN0TGV0dGVyQ29udGFpbmVyID0gY3VycmVudENoaWxkLT5wYXJlbnQoKTsKICAgICBS
ZW5kZXJTdHlsZSogcHNldWRvU3R5bGUgPSBzdHlsZUZvckZpcnN0TGV0dGVyKGZpcnN0TGV0dGVy
QmxvY2ssIGZpcnN0TGV0dGVyQ29udGFpbmVyKTsKLQogICAgIFJlbmRlck9iamVjdCogZmlyc3RM
ZXR0ZXIgPSAwOwogICAgIGlmIChwc2V1ZG9TdHlsZS0+ZGlzcGxheSgpID09IElOTElORSkKICAg
ICAgICAgZmlyc3RMZXR0ZXIgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlcklubGluZShkb2N1
bWVudCgpKTsKICAgICBlbHNlCiAgICAgICAgIGZpcnN0TGV0dGVyID0gbmV3IChyZW5kZXJBcmVu
YSgpKSBSZW5kZXJCbG9jayhkb2N1bWVudCgpKTsKICAgICBmaXJzdExldHRlci0+c2V0U3R5bGUo
cHNldWRvU3R5bGUpOwotICAgIGZpcnN0TGV0dGVyQ29udGFpbmVyLT5hZGRDaGlsZChmaXJzdExl
dHRlciwgY3VyckNoaWxkKTsKKyAgICBmaXJzdExldHRlckNvbnRhaW5lci0+YWRkQ2hpbGQoZmly
c3RMZXR0ZXIsIGN1cnJlbnRDaGlsZCk7CisKKyAgICBSZW5kZXJUZXh0KiB0ZXh0T2JqID0gdG9S
ZW5kZXJUZXh0KGN1cnJlbnRDaGlsZCk7CiAKICAgICAvLyBUaGUgb3JpZ2luYWwgc3RyaW5nIGlz
IGdvaW5nIHRvIGJlIGVpdGhlciBhIGdlbmVyYXRlZCBjb250ZW50IHN0cmluZyBvciBhIERPTSBu
b2RlJ3MKICAgICAvLyBzdHJpbmcuICBXZSB3YW50IHRoZSBvcmlnaW5hbCBzdHJpbmcgYmVmb3Jl
IGl0IGdvdCB0cmFuc2Zvcm1lZCBpbiBjYXNlIGZpcnN0LWxldHRlciBoYXMKQEAgLTYxNTksNiAr
NjEwNiw2MiBAQCB2b2lkIFJlbmRlckJsb2NrOjp1cGRhdGVGaXJzdExldHRlcigpCiAgICAgfQog
fQogCit2b2lkIFJlbmRlckJsb2NrOjp1cGRhdGVGaXJzdExldHRlcigpCit7CisgICAgaWYgKCFk
b2N1bWVudCgpLT51c2VzRmlyc3RMZXR0ZXJSdWxlcygpKQorICAgICAgICByZXR1cm47CisgICAg
Ly8gRG9uJ3QgcmVjdXIKKyAgICBpZiAoc3R5bGUoKS0+c3R5bGVUeXBlKCkgPT0gRklSU1RfTEVU
VEVSKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBkZXN0cm95
IHRoZSBmaXJzdC1sZXR0ZXIgb2JqZWN0IGlmIGl0IGlzIG5vIGxvbmdlciB0aGUgZmlyc3QgY2hp
bGQuIE5lZWQgdG8gZmluZAorICAgIC8vIGFuIGVmZmljaWVudCB3YXkgdG8gY2hlY2sgZm9yIHRo
YXQgc2l0dWF0aW9uIHRob3VnaCBiZWZvcmUgaW1wbGVtZW50aW5nIGFueXRoaW5nLgorICAgIFJl
bmRlck9iamVjdCogZmlyc3RMZXR0ZXJCbG9jayA9IGZpbmRGaXJzdExldHRlckJsb2NrKHRoaXMp
OworICAgIGlmICghZmlyc3RMZXR0ZXJCbG9jaykKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8g
RHJpbGwgaW50byBpbmxpbmVzIGxvb2tpbmcgZm9yIG91ciBmaXJzdCB0ZXh0IGNoaWxkLgorICAg
IFJlbmRlck9iamVjdCogY3VyckNoaWxkID0gZmlyc3RMZXR0ZXJCbG9jay0+Zmlyc3RDaGlsZCgp
OworICAgIHdoaWxlIChjdXJyQ2hpbGQpIHsKKyAgICAgICAgaWYgKGN1cnJDaGlsZC0+aXNUZXh0
KCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKGN1cnJDaGlsZC0+aXNMaXN0TWFy
a2VyKCkpCisgICAgICAgICAgICBjdXJyQ2hpbGQgPSBjdXJyQ2hpbGQtPm5leHRTaWJsaW5nKCk7
CisgICAgICAgIGVsc2UgaWYgKGN1cnJDaGlsZC0+aXNGbG9hdGluZ09yUG9zaXRpb25lZCgpKSB7
CisgICAgICAgICAgICBpZiAoY3VyckNoaWxkLT5zdHlsZSgpLT5zdHlsZVR5cGUoKSA9PSBGSVJT
VF9MRVRURVIpIHsKKyAgICAgICAgICAgICAgICBjdXJyQ2hpbGQgPSBjdXJyQ2hpbGQtPmZpcnN0
Q2hpbGQoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGN1cnJDaGlsZCA9IGN1cnJDaGlsZC0+bmV4dFNpYmxpbmcoKTsKKyAgICAgICAgfSBlbHNl
IGlmIChjdXJyQ2hpbGQtPmlzUmVwbGFjZWQoKSB8fCBjdXJyQ2hpbGQtPmlzUmVuZGVyQnV0dG9u
KCkgfHwgY3VyckNoaWxkLT5pc01lbnVMaXN0KCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgZWxzZSBpZiAoY3VyckNoaWxkLT5zdHlsZSgpLT5oYXNQc2V1ZG9TdHlsZShGSVJTVF9MRVRU
RVIpICYmIGNhbkhhdmVHZW5lcmF0ZWRDaGlsZHJlbihjdXJyQ2hpbGQpKSAgeworICAgICAgICAg
ICAgLy8gV2UgZm91bmQgYSBsb3dlci1sZXZlbCBub2RlIHdpdGggZmlyc3QtbGV0dGVyLCB3aGlj
aCBzdXBlcnNlZGVzIHRoZSBoaWdoZXItbGV2ZWwgc3R5bGUKKyAgICAgICAgICAgIGZpcnN0TGV0
dGVyQmxvY2sgPSBjdXJyQ2hpbGQ7CisgICAgICAgICAgICBjdXJyQ2hpbGQgPSBjdXJyQ2hpbGQt
PmZpcnN0Q2hpbGQoKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBjdXJyQ2hpbGQgPSBj
dXJyQ2hpbGQtPmZpcnN0Q2hpbGQoKTsKKyAgICB9CisKKyAgICBpZiAoIWN1cnJDaGlsZCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgLy8gdG8gdXBkYXRlIGl0LgorICAgIGlmIChjdXJyQ2hpbGQt
PnBhcmVudCgpLT5zdHlsZSgpLT5zdHlsZVR5cGUoKSA9PSBGSVJTVF9MRVRURVIpIHsKKyAgICAg
ICAgdXBkYXRlRmlyc3RMZXR0ZXJTdHlsZShmaXJzdExldHRlckJsb2NrLCBjdXJyQ2hpbGQpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFjdXJyQ2hpbGQtPmlzVGV4dCgpIHx8
IGN1cnJDaGlsZC0+aXNCUigpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBPdXIgbGF5b3V0
IHN0YXRlIGlzIG5vdCB2YWxpZCBmb3IgdGhlIHJlcGFpbnRzIHdlIGFyZSBnb2luZyB0byB0cmln
Z2VyIGJ5CisgICAgLy8gYWRkaW5nIGFuZCByZW1vdmluZyBjaGlsZHJlbiBvZiBmaXJzdExldHRl
ckNvbnRhaW5lci4KKyAgICBMYXlvdXRTdGF0ZURpc2FibGVyIGxheW91dFN0YXRlRGlzYWJsZXIo
dmlldygpKTsKKworICAgIGNyZWF0ZUZpcnN0TGV0dGVyKGZpcnN0TGV0dGVyQmxvY2ssIGN1cnJD
aGlsZCk7Cit9CisKIC8vIEhlbHBlciBtZXRob2RzIGZvciBvYnRhaW5pbmcgdGhlIGxhc3QgbGlu
ZSwgY29tcHV0aW5nIGxpbmUgY291bnRzIGFuZCBoZWlnaHRzIGZvciBsaW5lIGNvdW50cwogLy8g
KGNyYXdsaW5nIGludG8gYmxvY2tzKS4KIHN0YXRpYyBib29sIHNob3VsZENoZWNrTGluZXMoUmVu
ZGVyT2JqZWN0KiBvYmopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCmluZGV4
IGNmMjMxNzMuLjU4YjQ1YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5o
CkBAIC01MjksNiArNTI5LDkgQEAgcHJpdmF0ZToKICAgICAvLyBDYWxsZWQgdG8gbGF5IG91dCB0
aGUgbGVnZW5kIGZvciBhIGZpZWxkc2V0IG9yIHRoZSBydWJ5IHRleHQgb2YgYSBydWJ5IHJ1bi4K
ICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogbGF5b3V0U3BlY2lhbEV4Y2x1ZGVkQ2hpbGQoYm9v
bCAvKnJlbGF5b3V0Q2hpbGRyZW4qLykgeyByZXR1cm4gMDsgfQogCisgICAgdm9pZCBjcmVhdGVG
aXJzdExldHRlcihSZW5kZXJPYmplY3QqIGZpcnN0TGV0dGVyQmxvY2ssIFJlbmRlck9iamVjdCog
Y3VycmVudENoaWxkKTsKKyAgICB2b2lkIHVwZGF0ZUZpcnN0TGV0dGVyU3R5bGUoUmVuZGVyT2Jq
ZWN0KiBmaXJzdExldHRlciwgUmVuZGVyT2JqZWN0KiBmaXJzdExldHRlckNvbnRhaW5lcik7CisK
ICAgICBzdHJ1Y3QgRmxvYXRXaXRoUmVjdCB7CiAgICAgICAgIEZsb2F0V2l0aFJlY3QoUmVuZGVy
Qm94KiBmKQogICAgICAgICAgICAgOiBvYmplY3QoZikKLS0gCjEuNy41LjQKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131247</attachid>
            <date>2012-03-11 10:52:37 -0700</date>
            <delta_ts>2012-03-12 12:01:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Split-the-extra-logic-out-of-RenderBlock-updateFirst.patch</filename>
            <type>text/plain</type>
            <size>12876</size>
            <attacher name="Igor Trindade Oliveira">igor.oliveira</attacher>
            
              <data encoding="base64">RnJvbSBjM2MyYjY1OTNmYzIzMzA1NTc4N2U4ZmMxOGE2YWVmMTYwMmE1ZmZjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBJZ29yIE9saXZlaXJhIDxpZ29yLm9Ac2lzYS5zYW1zdW5nLmNv
bT4KRGF0ZTogU2F0LCAxMCBNYXIgMjAxMiAxNjowMDozNSAtMDgwMApTdWJqZWN0OiBbUEFUQ0hd
IFNwbGl0IHRoZSBleHRyYSBsb2dpYyBvdXQgb2YgUmVuZGVyQmxvY2s6OnVwZGF0ZUZpcnN0TGV0
dGVyCgotLS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgfCAgIDE3
ICsrKwogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCB8ICAyMDEgKysr
KysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suaCAgIHwgICAgMyArCiAzIGZpbGVzIGNoYW5nZWQsIDEyMiBpbnNlcnRpb25zKCsp
LCA5OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjUwM2IzZS4uOGM5ZTk2MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAzLTEwICBJZ29yIE9saXZlaXJhICA8aWdvci5v
QHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgU3BsaXQgdGhlIGV4dHJhIGxvZ2ljIG91dCBv
ZiBSZW5kZXJCbG9jazo6dXBkYXRlRmlyc3RMZXR0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwNzcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yIGV4cGVjdGVkLgor
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnVwZGF0ZUZpcnN0TGV0dGVyU3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNyZWF0ZUZpcnN0TGV0dGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjp1cGRhdGVGaXJzdExldHRlcik6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgIChSZW5kZXJCbG9jayk6CisKIDIw
MTItMDMtMDkgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBO
b3RpZmljYXRpb25QcmVzZW50ZXIgdG8gTm90aWZpY2F0aW9uQ2xpZW50CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCBkODdkNzcyLi40Mjk3YTM1IDEwMDc1NQot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTU5OTMsMTIwICs1OTkzLDY3
IEBAIHN0YXRpYyBpbmxpbmUgUmVuZGVyT2JqZWN0KiBmaW5kRmlyc3RMZXR0ZXJCbG9jayhSZW5k
ZXJCbG9jayogc3RhcnQpCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgUmVuZGVyQmxvY2s6OnVw
ZGF0ZUZpcnN0TGV0dGVyKCkKK3ZvaWQgUmVuZGVyQmxvY2s6OnVwZGF0ZUZpcnN0TGV0dGVyU3R5
bGUoUmVuZGVyT2JqZWN0KiBmaXJzdExldHRlckJsb2NrLCBSZW5kZXJPYmplY3QqIGN1cnJlbnRD
aGlsZCkKIHsKLSAgICBpZiAoIWRvY3VtZW50KCktPnVzZXNGaXJzdExldHRlclJ1bGVzKCkpCi0g
ICAgICAgIHJldHVybjsKLSAgICAvLyBEb24ndCByZWN1cgotICAgIGlmIChzdHlsZSgpLT5zdHls
ZVR5cGUoKSA9PSBGSVJTVF9MRVRURVIpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEZJWE1F
OiBXZSBuZWVkIHRvIGRlc3Ryb3kgdGhlIGZpcnN0LWxldHRlciBvYmplY3QgaWYgaXQgaXMgbm8g
bG9uZ2VyIHRoZSBmaXJzdCBjaGlsZC4gIE5lZWQgdG8gZmluZAotICAgIC8vIGFuIGVmZmljaWVu
dCB3YXkgdG8gY2hlY2sgZm9yIHRoYXQgc2l0dWF0aW9uIHRob3VnaCBiZWZvcmUgaW1wbGVtZW50
aW5nIGFueXRoaW5nLgotICAgIFJlbmRlck9iamVjdCogZmlyc3RMZXR0ZXJCbG9jayA9IGZpbmRG
aXJzdExldHRlckJsb2NrKHRoaXMpOwotICAgIGlmICghZmlyc3RMZXR0ZXJCbG9jaykKLSAgICAg
ICAgcmV0dXJuOworICAgIFJlbmRlck9iamVjdCogZmlyc3RMZXR0ZXIgPSBjdXJyZW50Q2hpbGQt
PnBhcmVudCgpOworICAgIFJlbmRlck9iamVjdCogZmlyc3RMZXR0ZXJDb250YWluZXIgPSBmaXJz
dExldHRlci0+cGFyZW50KCk7CisgICAgUmVuZGVyU3R5bGUqIHBzZXVkb1N0eWxlID0gc3R5bGVG
b3JGaXJzdExldHRlcihmaXJzdExldHRlckJsb2NrLCBmaXJzdExldHRlckNvbnRhaW5lcik7Cisg
ICAgQVNTRVJUKGZpcnN0TGV0dGVyLT5pc0Zsb2F0aW5nKCkgfHwgZmlyc3RMZXR0ZXItPmlzSW5s
aW5lKCkpOwogCi0gICAgLy8gRHJpbGwgaW50byBpbmxpbmVzIGxvb2tpbmcgZm9yIG91ciBmaXJz
dCB0ZXh0IGNoaWxkLgotICAgIFJlbmRlck9iamVjdCogY3VyckNoaWxkID0gZmlyc3RMZXR0ZXJC
bG9jay0+Zmlyc3RDaGlsZCgpOwotICAgIHdoaWxlIChjdXJyQ2hpbGQpIHsKLSAgICAgICAgaWYg
KGN1cnJDaGlsZC0+aXNUZXh0KCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKGN1
cnJDaGlsZC0+aXNMaXN0TWFya2VyKCkpCi0gICAgICAgICAgICBjdXJyQ2hpbGQgPSBjdXJyQ2hp
bGQtPm5leHRTaWJsaW5nKCk7Ci0gICAgICAgIGVsc2UgaWYgKGN1cnJDaGlsZC0+aXNGbG9hdGlu
Z09yUG9zaXRpb25lZCgpKSB7Ci0gICAgICAgICAgICBpZiAoY3VyckNoaWxkLT5zdHlsZSgpLT5z
dHlsZVR5cGUoKSA9PSBGSVJTVF9MRVRURVIpIHsKLSAgICAgICAgICAgICAgICBjdXJyQ2hpbGQg
PSBjdXJyQ2hpbGQtPmZpcnN0Q2hpbGQoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGN1cnJDaGlsZCA9IGN1cnJDaGlsZC0+bmV4dFNpYmxpbmco
KTsKLSAgICAgICAgfSBlbHNlIGlmIChjdXJyQ2hpbGQtPmlzUmVwbGFjZWQoKSB8fCBjdXJyQ2hp
bGQtPmlzUmVuZGVyQnV0dG9uKCkgfHwgY3VyckNoaWxkLT5pc01lbnVMaXN0KCkpCi0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgZWxzZSBpZiAoY3VyckNoaWxkLT5zdHlsZSgpLT5oYXNQc2V1
ZG9TdHlsZShGSVJTVF9MRVRURVIpICYmIGNhbkhhdmVHZW5lcmF0ZWRDaGlsZHJlbihjdXJyQ2hp
bGQpKSAgewotICAgICAgICAgICAgLy8gV2UgZm91bmQgYSBsb3dlci1sZXZlbCBub2RlIHdpdGgg
Zmlyc3QtbGV0dGVyLCB3aGljaCBzdXBlcnNlZGVzIHRoZSBoaWdoZXItbGV2ZWwgc3R5bGUKLSAg
ICAgICAgICAgIGZpcnN0TGV0dGVyQmxvY2sgPSBjdXJyQ2hpbGQ7Ci0gICAgICAgICAgICBjdXJy
Q2hpbGQgPSBjdXJyQ2hpbGQtPmZpcnN0Q2hpbGQoKTsKLSAgICAgICAgfQorICAgIGlmIChOb2Rl
OjpkaWZmKGZpcnN0TGV0dGVyLT5zdHlsZSgpLCBwc2V1ZG9TdHlsZSkgPT0gTm9kZTo6RGV0YWNo
KSB7CisgICAgICAgIC8vIFRoZSBmaXJzdC1sZXR0ZXIgcmVuZGVyZXIgbmVlZHMgdG8gYmUgcmVw
bGFjZWQuIENyZWF0ZSBhIG5ldyByZW5kZXJlciBvZiB0aGUgcmlnaHQgdHlwZS4KKyAgICAgICAg
UmVuZGVyT2JqZWN0KiBuZXdGaXJzdExldHRlcjsKKyAgICAgICAgaWYgKHBzZXVkb1N0eWxlLT5k
aXNwbGF5KCkgPT0gSU5MSU5FKQorICAgICAgICAgICAgbmV3Rmlyc3RMZXR0ZXIgPSBuZXcgKHJl
bmRlckFyZW5hKCkpIFJlbmRlcklubGluZShkb2N1bWVudCgpKTsKICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgY3VyckNoaWxkID0gY3VyckNoaWxkLT5maXJzdENoaWxkKCk7Ci0gICAgfQotCi0g
ICAgaWYgKCFjdXJyQ2hpbGQpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIElmIHRoZSBjaGls
ZCBhbHJlYWR5IGhhcyBzdHlsZSwgdGhlbiBpdCBoYXMgYWxyZWFkeSBiZWVuIGNyZWF0ZWQsIHNv
IHdlIGp1c3Qgd2FudAotICAgIC8vIHRvIHVwZGF0ZSBpdC4KLSAgICBpZiAoY3VyckNoaWxkLT5w
YXJlbnQoKS0+c3R5bGUoKS0+c3R5bGVUeXBlKCkgPT0gRklSU1RfTEVUVEVSKSB7Ci0gICAgICAg
IFJlbmRlck9iamVjdCogZmlyc3RMZXR0ZXIgPSBjdXJyQ2hpbGQtPnBhcmVudCgpOwotICAgICAg
ICBSZW5kZXJPYmplY3QqIGZpcnN0TGV0dGVyQ29udGFpbmVyID0gZmlyc3RMZXR0ZXItPnBhcmVu
dCgpOwotICAgICAgICBSZW5kZXJTdHlsZSogcHNldWRvU3R5bGUgPSBzdHlsZUZvckZpcnN0TGV0
dGVyKGZpcnN0TGV0dGVyQmxvY2ssIGZpcnN0TGV0dGVyQ29udGFpbmVyKTsKLSAgICAgICAgQVNT
RVJUKGZpcnN0TGV0dGVyLT5pc0Zsb2F0aW5nKCkgfHwgZmlyc3RMZXR0ZXItPmlzSW5saW5lKCkp
OwotCi0gICAgICAgIGlmIChOb2RlOjpkaWZmKGZpcnN0TGV0dGVyLT5zdHlsZSgpLCBwc2V1ZG9T
dHlsZSkgPT0gTm9kZTo6RGV0YWNoKSB7Ci0gICAgICAgICAgICAvLyBUaGUgZmlyc3QtbGV0dGVy
IHJlbmRlcmVyIG5lZWRzIHRvIGJlIHJlcGxhY2VkLiBDcmVhdGUgYSBuZXcgcmVuZGVyZXIgb2Yg
dGhlIHJpZ2h0IHR5cGUuCi0gICAgICAgICAgICBSZW5kZXJPYmplY3QqIG5ld0ZpcnN0TGV0dGVy
OwotICAgICAgICAgICAgaWYgKHBzZXVkb1N0eWxlLT5kaXNwbGF5KCkgPT0gSU5MSU5FKQotICAg
ICAgICAgICAgICAgIG5ld0ZpcnN0TGV0dGVyID0gbmV3IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJJ
bmxpbmUoZG9jdW1lbnQoKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbmV3
Rmlyc3RMZXR0ZXIgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlckJsb2NrKGRvY3VtZW50KCkp
OwotICAgICAgICAgICAgbmV3Rmlyc3RMZXR0ZXItPnNldFN0eWxlKHBzZXVkb1N0eWxlKTsKLQot
ICAgICAgICAgICAgLy8gTW92ZSB0aGUgZmlyc3QgbGV0dGVyIGludG8gdGhlIG5ldyByZW5kZXJl
ci4KLSAgICAgICAgICAgIExheW91dFN0YXRlRGlzYWJsZXIgbGF5b3V0U3RhdGVEaXNhYmxlcih2
aWV3KCkpOwotICAgICAgICAgICAgd2hpbGUgKFJlbmRlck9iamVjdCogY2hpbGQgPSBmaXJzdExl
dHRlci0+Zmlyc3RDaGlsZCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNoaWxkLT5pc1RleHQo
KSkKLSAgICAgICAgICAgICAgICAgICAgdG9SZW5kZXJUZXh0KGNoaWxkKS0+cmVtb3ZlQW5kRGVz
dHJveVRleHRCb3hlcygpOwotICAgICAgICAgICAgICAgIGZpcnN0TGV0dGVyLT5yZW1vdmVDaGls
ZChjaGlsZCk7Ci0gICAgICAgICAgICAgICAgbmV3Rmlyc3RMZXR0ZXItPmFkZENoaWxkKGNoaWxk
LCAwKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgUmVuZGVyVGV4dEZyYWdtZW50KiBy
ZW1haW5pbmdUZXh0ID0gMDsKLSAgICAgICAgICAgIFJlbmRlck9iamVjdCogbmV4dFNpYmxpbmcg
PSBmaXJzdExldHRlci0+bmV4dFNpYmxpbmcoKTsKLSAgICAgICAgICAgIFJlbmRlck9iamVjdCog
cmVtYWluaW5nVGV4dE9iamVjdCA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QoZmlyc3RMZXR0ZXIp
LT5maXJzdExldHRlclJlbWFpbmluZ1RleHQoKTsKLSAgICAgICAgICAgIGlmIChyZW1haW5pbmdU
ZXh0T2JqZWN0ICYmIHJlbWFpbmluZ1RleHRPYmplY3QtPmlzVGV4dCgpICYmIHRvUmVuZGVyVGV4
dChyZW1haW5pbmdUZXh0T2JqZWN0KS0+aXNUZXh0RnJhZ21lbnQoKSkKLSAgICAgICAgICAgICAg
ICByZW1haW5pbmdUZXh0ID0gdG9SZW5kZXJUZXh0RnJhZ21lbnQocmVtYWluaW5nVGV4dE9iamVj
dCk7Ci0gICAgICAgICAgICBpZiAocmVtYWluaW5nVGV4dCkgewotICAgICAgICAgICAgICAgIEFT
U0VSVChyZW1haW5pbmdUZXh0LT5pc0Fub255bW91cygpIHx8IHJlbWFpbmluZ1RleHQtPm5vZGUo
KS0+cmVuZGVyZXIoKSA9PSByZW1haW5pbmdUZXh0KTsKLSAgICAgICAgICAgICAgICAvLyBSZXBs
YWNlIHRoZSBvbGQgcmVuZGVyZXIgd2l0aCB0aGUgbmV3IG9uZS4KLSAgICAgICAgICAgICAgICBy
ZW1haW5pbmdUZXh0LT5zZXRGaXJzdExldHRlcihuZXdGaXJzdExldHRlcik7Ci0gICAgICAgICAg
ICAgICAgdG9SZW5kZXJCb3hNb2RlbE9iamVjdChuZXdGaXJzdExldHRlciktPnNldEZpcnN0TGV0
dGVyUmVtYWluaW5nVGV4dChyZW1haW5pbmdUZXh0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGZpcnN0TGV0dGVyLT5kZXN0cm95KCk7Ci0gICAgICAgICAgICBmaXJzdExldHRlciA9IG5l
d0ZpcnN0TGV0dGVyOwotICAgICAgICAgICAgZmlyc3RMZXR0ZXJDb250YWluZXItPmFkZENoaWxk
KGZpcnN0TGV0dGVyLCBuZXh0U2libGluZyk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
Zmlyc3RMZXR0ZXItPnNldFN0eWxlKHBzZXVkb1N0eWxlKTsKLQotICAgICAgICBmb3IgKFJlbmRl
ck9iamVjdCogZ2VuQ2hpbGQgPSBmaXJzdExldHRlci0+Zmlyc3RDaGlsZCgpOyBnZW5DaGlsZDsg
Z2VuQ2hpbGQgPSBnZW5DaGlsZC0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICAgICAgaWYgKGdl
bkNoaWxkLT5pc1RleHQoKSkgCi0gICAgICAgICAgICAgICAgZ2VuQ2hpbGQtPnNldFN0eWxlKHBz
ZXVkb1N0eWxlKTsKLSAgICAgICAgfQorICAgICAgICAgICAgbmV3Rmlyc3RMZXR0ZXIgPSBuZXcg
KHJlbmRlckFyZW5hKCkpIFJlbmRlckJsb2NrKGRvY3VtZW50KCkpOworICAgICAgICBuZXdGaXJz
dExldHRlci0+c2V0U3R5bGUocHNldWRvU3R5bGUpOworCisgICAgICAgIC8vIE1vdmUgdGhlIGZp
cnN0IGxldHRlciBpbnRvIHRoZSBuZXcgcmVuZGVyZXIuCisgICAgICAgIExheW91dFN0YXRlRGlz
YWJsZXIgbGF5b3V0U3RhdGVEaXNhYmxlcih2aWV3KCkpOworICAgICAgICB3aGlsZSAoUmVuZGVy
T2JqZWN0KiBjaGlsZCA9IGZpcnN0TGV0dGVyLT5maXJzdENoaWxkKCkpIHsKKyAgICAgICAgICAg
IGlmIChjaGlsZC0+aXNUZXh0KCkpCisgICAgICAgICAgICAgICAgdG9SZW5kZXJUZXh0KGNoaWxk
KS0+cmVtb3ZlQW5kRGVzdHJveVRleHRCb3hlcygpOworICAgICAgICAgICAgZmlyc3RMZXR0ZXIt
PnJlbW92ZUNoaWxkKGNoaWxkKTsKKyAgICAgICAgICAgIG5ld0ZpcnN0TGV0dGVyLT5hZGRDaGls
ZChjaGlsZCwgMCk7CisgICAgICAgIH0KKworICAgICAgICBSZW5kZXJUZXh0RnJhZ21lbnQqIHJl
bWFpbmluZ1RleHQgPSAwOworICAgICAgICBSZW5kZXJPYmplY3QqIG5leHRTaWJsaW5nID0gZmly
c3RMZXR0ZXItPm5leHRTaWJsaW5nKCk7CisgICAgICAgIFJlbmRlck9iamVjdCogcmVtYWluaW5n
VGV4dE9iamVjdCA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QoZmlyc3RMZXR0ZXIpLT5maXJzdExl
dHRlclJlbWFpbmluZ1RleHQoKTsKKyAgICAgICAgaWYgKHJlbWFpbmluZ1RleHRPYmplY3QgJiYg
cmVtYWluaW5nVGV4dE9iamVjdC0+aXNUZXh0KCkgJiYgdG9SZW5kZXJUZXh0KHJlbWFpbmluZ1Rl
eHRPYmplY3QpLT5pc1RleHRGcmFnbWVudCgpKQorICAgICAgICAgICAgcmVtYWluaW5nVGV4dCA9
IHRvUmVuZGVyVGV4dEZyYWdtZW50KHJlbWFpbmluZ1RleHRPYmplY3QpOworICAgICAgICBpZiAo
cmVtYWluaW5nVGV4dCkgeworICAgICAgICAgICAgQVNTRVJUKHJlbWFpbmluZ1RleHQtPmlzQW5v
bnltb3VzKCkgfHwgcmVtYWluaW5nVGV4dC0+bm9kZSgpLT5yZW5kZXJlcigpID09IHJlbWFpbmlu
Z1RleHQpOworICAgICAgICAgICAgLy8gUmVwbGFjZSB0aGUgb2xkIHJlbmRlcmVyIHdpdGggdGhl
IG5ldyBvbmUuCisgICAgICAgICAgICByZW1haW5pbmdUZXh0LT5zZXRGaXJzdExldHRlcihuZXdG
aXJzdExldHRlcik7CisgICAgICAgICAgICB0b1JlbmRlckJveE1vZGVsT2JqZWN0KG5ld0ZpcnN0
TGV0dGVyKS0+c2V0Rmlyc3RMZXR0ZXJSZW1haW5pbmdUZXh0KHJlbWFpbmluZ1RleHQpOworICAg
ICAgICB9CisgICAgICAgIGZpcnN0TGV0dGVyLT5kZXN0cm95KCk7CisgICAgICAgIGZpcnN0TGV0
dGVyID0gbmV3Rmlyc3RMZXR0ZXI7CisgICAgICAgIGZpcnN0TGV0dGVyQ29udGFpbmVyLT5hZGRD
aGlsZChmaXJzdExldHRlciwgbmV4dFNpYmxpbmcpOworICAgIH0gZWxzZQorICAgICAgICBmaXJz
dExldHRlci0+c2V0U3R5bGUocHNldWRvU3R5bGUpOwogCi0gICAgICAgIHJldHVybjsKKyAgICBm
b3IgKFJlbmRlck9iamVjdCogZ2VuQ2hpbGQgPSBmaXJzdExldHRlci0+Zmlyc3RDaGlsZCgpOyBn
ZW5DaGlsZDsgZ2VuQ2hpbGQgPSBnZW5DaGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBp
ZiAoZ2VuQ2hpbGQtPmlzVGV4dCgpKQorICAgICAgICAgICAgZ2VuQ2hpbGQtPnNldFN0eWxlKHBz
ZXVkb1N0eWxlKTsKICAgICB9Cit9CiAKLSAgICBpZiAoIWN1cnJDaGlsZC0+aXNUZXh0KCkgfHwg
Y3VyckNoaWxkLT5pc0JSKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIElmIHRoZSBjaGls
ZCBkb2VzIG5vdCBhbHJlYWR5IGhhdmUgc3R5bGUsIHdlIGNyZWF0ZSBpdCBoZXJlLgotICAgIFJl
bmRlck9iamVjdCogZmlyc3RMZXR0ZXJDb250YWluZXIgPSBjdXJyQ2hpbGQtPnBhcmVudCgpOwot
Ci0gICAgLy8gT3VyIGxheW91dCBzdGF0ZSBpcyBub3QgdmFsaWQgZm9yIHRoZSByZXBhaW50cyB3
ZSBhcmUgZ29pbmcgdG8gdHJpZ2dlciBieQotICAgIC8vIGFkZGluZyBhbmQgcmVtb3ZpbmcgY2hp
bGRyZW4gb2YgZmlyc3RMZXR0ZXJDb250YWluZXIuCi0gICAgTGF5b3V0U3RhdGVEaXNhYmxlciBs
YXlvdXRTdGF0ZURpc2FibGVyKHZpZXcoKSk7Ci0KLSAgICBSZW5kZXJUZXh0KiB0ZXh0T2JqID0g
dG9SZW5kZXJUZXh0KGN1cnJDaGlsZCk7Ci0KLSAgICAvLyBDcmVhdGUgb3VyIHBzZXVkbyBzdHls
ZSBub3cgdGhhdCB3ZSBoYXZlIG91ciBmaXJzdExldHRlckNvbnRhaW5lciBkZXRlcm1pbmVkLgor
dm9pZCBSZW5kZXJCbG9jazo6Y3JlYXRlRmlyc3RMZXR0ZXIoUmVuZGVyT2JqZWN0KiBmaXJzdExl
dHRlckJsb2NrLCBSZW5kZXJPYmplY3QqIGN1cnJlbnRDaGlsZCkKK3sKKyAgICBSZW5kZXJPYmpl
Y3QqIGZpcnN0TGV0dGVyQ29udGFpbmVyID0gY3VycmVudENoaWxkLT5wYXJlbnQoKTsKICAgICBS
ZW5kZXJTdHlsZSogcHNldWRvU3R5bGUgPSBzdHlsZUZvckZpcnN0TGV0dGVyKGZpcnN0TGV0dGVy
QmxvY2ssIGZpcnN0TGV0dGVyQ29udGFpbmVyKTsKLQogICAgIFJlbmRlck9iamVjdCogZmlyc3RM
ZXR0ZXIgPSAwOwogICAgIGlmIChwc2V1ZG9TdHlsZS0+ZGlzcGxheSgpID09IElOTElORSkKICAg
ICAgICAgZmlyc3RMZXR0ZXIgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlcklubGluZShkb2N1
bWVudCgpKTsKICAgICBlbHNlCiAgICAgICAgIGZpcnN0TGV0dGVyID0gbmV3IChyZW5kZXJBcmVu
YSgpKSBSZW5kZXJCbG9jayhkb2N1bWVudCgpKTsKICAgICBmaXJzdExldHRlci0+c2V0U3R5bGUo
cHNldWRvU3R5bGUpOwotICAgIGZpcnN0TGV0dGVyQ29udGFpbmVyLT5hZGRDaGlsZChmaXJzdExl
dHRlciwgY3VyckNoaWxkKTsKKyAgICBmaXJzdExldHRlckNvbnRhaW5lci0+YWRkQ2hpbGQoZmly
c3RMZXR0ZXIsIGN1cnJlbnRDaGlsZCk7CisKKyAgICBSZW5kZXJUZXh0KiB0ZXh0T2JqID0gdG9S
ZW5kZXJUZXh0KGN1cnJlbnRDaGlsZCk7CiAKICAgICAvLyBUaGUgb3JpZ2luYWwgc3RyaW5nIGlz
IGdvaW5nIHRvIGJlIGVpdGhlciBhIGdlbmVyYXRlZCBjb250ZW50IHN0cmluZyBvciBhIERPTSBu
b2RlJ3MKICAgICAvLyBzdHJpbmcuICBXZSB3YW50IHRoZSBvcmlnaW5hbCBzdHJpbmcgYmVmb3Jl
IGl0IGdvdCB0cmFuc2Zvcm1lZCBpbiBjYXNlIGZpcnN0LWxldHRlciBoYXMKQEAgLTYxNTksNiAr
NjEwNiw2MiBAQCB2b2lkIFJlbmRlckJsb2NrOjp1cGRhdGVGaXJzdExldHRlcigpCiAgICAgfQog
fQogCit2b2lkIFJlbmRlckJsb2NrOjp1cGRhdGVGaXJzdExldHRlcigpCit7CisgICAgaWYgKCFk
b2N1bWVudCgpLT51c2VzRmlyc3RMZXR0ZXJSdWxlcygpKQorICAgICAgICByZXR1cm47CisgICAg
Ly8gRG9uJ3QgcmVjdXIKKyAgICBpZiAoc3R5bGUoKS0+c3R5bGVUeXBlKCkgPT0gRklSU1RfTEVU
VEVSKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBkZXN0cm95
IHRoZSBmaXJzdC1sZXR0ZXIgb2JqZWN0IGlmIGl0IGlzIG5vIGxvbmdlciB0aGUgZmlyc3QgY2hp
bGQuIE5lZWQgdG8gZmluZAorICAgIC8vIGFuIGVmZmljaWVudCB3YXkgdG8gY2hlY2sgZm9yIHRo
YXQgc2l0dWF0aW9uIHRob3VnaCBiZWZvcmUgaW1wbGVtZW50aW5nIGFueXRoaW5nLgorICAgIFJl
bmRlck9iamVjdCogZmlyc3RMZXR0ZXJCbG9jayA9IGZpbmRGaXJzdExldHRlckJsb2NrKHRoaXMp
OworICAgIGlmICghZmlyc3RMZXR0ZXJCbG9jaykKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8g
RHJpbGwgaW50byBpbmxpbmVzIGxvb2tpbmcgZm9yIG91ciBmaXJzdCB0ZXh0IGNoaWxkLgorICAg
IFJlbmRlck9iamVjdCogY3VyckNoaWxkID0gZmlyc3RMZXR0ZXJCbG9jay0+Zmlyc3RDaGlsZCgp
OworICAgIHdoaWxlIChjdXJyQ2hpbGQpIHsKKyAgICAgICAgaWYgKGN1cnJDaGlsZC0+aXNUZXh0
KCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKGN1cnJDaGlsZC0+aXNMaXN0TWFy
a2VyKCkpCisgICAgICAgICAgICBjdXJyQ2hpbGQgPSBjdXJyQ2hpbGQtPm5leHRTaWJsaW5nKCk7
CisgICAgICAgIGVsc2UgaWYgKGN1cnJDaGlsZC0+aXNGbG9hdGluZ09yUG9zaXRpb25lZCgpKSB7
CisgICAgICAgICAgICBpZiAoY3VyckNoaWxkLT5zdHlsZSgpLT5zdHlsZVR5cGUoKSA9PSBGSVJT
VF9MRVRURVIpIHsKKyAgICAgICAgICAgICAgICBjdXJyQ2hpbGQgPSBjdXJyQ2hpbGQtPmZpcnN0
Q2hpbGQoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGN1cnJDaGlsZCA9IGN1cnJDaGlsZC0+bmV4dFNpYmxpbmcoKTsKKyAgICAgICAgfSBlbHNl
IGlmIChjdXJyQ2hpbGQtPmlzUmVwbGFjZWQoKSB8fCBjdXJyQ2hpbGQtPmlzUmVuZGVyQnV0dG9u
KCkgfHwgY3VyckNoaWxkLT5pc01lbnVMaXN0KCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgZWxzZSBpZiAoY3VyckNoaWxkLT5zdHlsZSgpLT5oYXNQc2V1ZG9TdHlsZShGSVJTVF9MRVRU
RVIpICYmIGNhbkhhdmVHZW5lcmF0ZWRDaGlsZHJlbihjdXJyQ2hpbGQpKSAgeworICAgICAgICAg
ICAgLy8gV2UgZm91bmQgYSBsb3dlci1sZXZlbCBub2RlIHdpdGggZmlyc3QtbGV0dGVyLCB3aGlj
aCBzdXBlcnNlZGVzIHRoZSBoaWdoZXItbGV2ZWwgc3R5bGUKKyAgICAgICAgICAgIGZpcnN0TGV0
dGVyQmxvY2sgPSBjdXJyQ2hpbGQ7CisgICAgICAgICAgICBjdXJyQ2hpbGQgPSBjdXJyQ2hpbGQt
PmZpcnN0Q2hpbGQoKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBjdXJyQ2hpbGQgPSBj
dXJyQ2hpbGQtPmZpcnN0Q2hpbGQoKTsKKyAgICB9CisKKyAgICBpZiAoIWN1cnJDaGlsZCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgLy8gdG8gdXBkYXRlIGl0LgorICAgIGlmIChjdXJyQ2hpbGQt
PnBhcmVudCgpLT5zdHlsZSgpLT5zdHlsZVR5cGUoKSA9PSBGSVJTVF9MRVRURVIpIHsKKyAgICAg
ICAgdXBkYXRlRmlyc3RMZXR0ZXJTdHlsZShmaXJzdExldHRlckJsb2NrLCBjdXJyQ2hpbGQpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFjdXJyQ2hpbGQtPmlzVGV4dCgpIHx8
IGN1cnJDaGlsZC0+aXNCUigpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBPdXIgbGF5b3V0
IHN0YXRlIGlzIG5vdCB2YWxpZCBmb3IgdGhlIHJlcGFpbnRzIHdlIGFyZSBnb2luZyB0byB0cmln
Z2VyIGJ5CisgICAgLy8gYWRkaW5nIGFuZCByZW1vdmluZyBjaGlsZHJlbiBvZiBmaXJzdExldHRl
ckNvbnRhaW5lci4KKyAgICBMYXlvdXRTdGF0ZURpc2FibGVyIGxheW91dFN0YXRlRGlzYWJsZXIo
dmlldygpKTsKKworICAgIGNyZWF0ZUZpcnN0TGV0dGVyKGZpcnN0TGV0dGVyQmxvY2ssIGN1cnJD
aGlsZCk7Cit9CisKIC8vIEhlbHBlciBtZXRob2RzIGZvciBvYnRhaW5pbmcgdGhlIGxhc3QgbGlu
ZSwgY29tcHV0aW5nIGxpbmUgY291bnRzIGFuZCBoZWlnaHRzIGZvciBsaW5lIGNvdW50cwogLy8g
KGNyYXdsaW5nIGludG8gYmxvY2tzKS4KIHN0YXRpYyBib29sIHNob3VsZENoZWNrTGluZXMoUmVu
ZGVyT2JqZWN0KiBvYmopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCmluZGV4
IGNmMjMxNzMuLjAzZjRkMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5o
CkBAIC01MjksNiArNTI5LDkgQEAgcHJpdmF0ZToKICAgICAvLyBDYWxsZWQgdG8gbGF5IG91dCB0
aGUgbGVnZW5kIGZvciBhIGZpZWxkc2V0IG9yIHRoZSBydWJ5IHRleHQgb2YgYSBydWJ5IHJ1bi4K
ICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogbGF5b3V0U3BlY2lhbEV4Y2x1ZGVkQ2hpbGQoYm9v
bCAvKnJlbGF5b3V0Q2hpbGRyZW4qLykgeyByZXR1cm4gMDsgfQogCisgICAgdm9pZCBjcmVhdGVG
aXJzdExldHRlcihSZW5kZXJPYmplY3QqIGZpcnN0TGV0dGVyQmxvY2ssIFJlbmRlck9iamVjdCog
Y3VycmVudENoaWxkKTsKKyAgICB2b2lkIHVwZGF0ZUZpcnN0TGV0dGVyU3R5bGUoUmVuZGVyT2Jq
ZWN0KiBmaXJzdExldHRlckJsb2NrLCBSZW5kZXJPYmplY3QqIGZpcnN0TGV0dGVyQ29udGFpbmVy
KTsKKwogICAgIHN0cnVjdCBGbG9hdFdpdGhSZWN0IHsKICAgICAgICAgRmxvYXRXaXRoUmVjdChS
ZW5kZXJCb3gqIGYpCiAgICAgICAgICAgICA6IG9iamVjdChmKQotLSAKMS43LjUuNAoK
</data>
<flag name="review"
          id="134496"
          type_id="1"
          status="+"
          setter="jchaffraix"
    />
    <flag name="commit-queue"
          id="134676"
          type_id="3"
          status="-"
          setter="jchaffraix"
    />
          </attachment>
      

    </bug>

</bugzilla>