<?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>126251</bug_id>
          
          <creation_ts>2013-12-26 21:15:37 -0800</creation_ts>
          <short_desc>Add an owning smart pointer for RenderObjects and start using it.</short_desc>
          <delta_ts>2013-12-28 17:32:45 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>963061</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-12-26 21:15:37 -0800</bug_when>
    <thetext>Add an owning smart pointer for RenderObjects and start using it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963064</commentid>
    <comment_count>1</comment_count>
      <attachid>220046</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-12-26 21:42:30 -0800</bug_when>
    <thetext>Created attachment 220046
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963065</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-26 21:43:14 -0800</bug_when>
    <thetext>Attachment 220046 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/dom/PseudoElement.cpp&apos;, u&apos;Source/WebCore/rendering/RenderPtr.h&apos;, u&apos;Source/WebCore/rendering/style/ContentData.cpp&apos;, u&apos;Source/WebCore/rendering/style/ContentData.h&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebCore/rendering/style/ContentData.h:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/rendering/RenderPtr.h:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/rendering/RenderPtr.h:41:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/rendering/RenderPtr.h:42:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/rendering/RenderPtr.h:43:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 5 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963168</commentid>
    <comment_count>3</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-12-28 03:48:30 -0800</bug_when>
    <thetext>It would be nice if we could eventually just use unique_ptr and split the destroy() stuff between subtree removal (invoked when that happens) and actual destruction (in destructor).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963169</commentid>
    <comment_count>4</comment_count>
      <attachid>220046</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-12-28 04:15:49 -0800</bug_when>
    <thetext>Comment on attachment 220046
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        This patch adds a RenderPtr pointer, essentially an OwnPtr for
&gt; +        RenderObjects. The difference is that RenderPtr destroys the object
&gt; +        by calling destroy() on it.

If this is the only difference you could switch to std::unique_ptr, with an std::default_delete&lt;RenderObject&gt; specialization that would call destroy().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963177</commentid>
    <comment_count>5</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-12-28 10:21:00 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 220046 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=220046&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        This patch adds a RenderPtr pointer, essentially an OwnPtr for
&gt; &gt; +        RenderObjects. The difference is that RenderPtr destroys the object
&gt; &gt; +        by calling destroy() on it.
&gt; 
&gt; If this is the only difference you could switch to std::unique_ptr, with an std::default_delete&lt;RenderObject&gt; specialization that would call destroy().

Wouldn&apos;t that require me to specialize separately for every single RenderObject subclass, or e.g std::unique_ptr&lt;RenderBlock&gt;&apos;s destructor would just delete without calling destroy()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963181</commentid>
    <comment_count>6</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-12-28 12:17:06 -0800</bug_when>
    <thetext>Yes, unfortunately I don&apos;t think there&apos;s a way to partially specialize std::default_delete for both the base class and its derivatives.

The subclass specializations could just inherit from the base class specialization, but that&apos;s still not very scalable:
template&lt;&gt; std::default_delete&lt;RenderBlock&gt; : std::default_delete&lt;RenderObject&gt; { };</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963193</commentid>
    <comment_count>7</comment_count>
      <attachid>220046</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-28 17:32:43 -0800</bug_when>
    <thetext>Comment on attachment 220046
Patch

Clearing flags on attachment: 220046

Committed r161115: &lt;http://trac.webkit.org/changeset/161115&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963194</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-28 17:32:45 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220046</attachid>
            <date>2013-12-26 21:42:30 -0800</date>
            <delta_ts>2013-12-28 17:32:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-126251.diff</filename>
            <type>text/plain</type>
            <size>14236</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0MTAwNjlmLi4yMzA5Y2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUg
QEAKKzIwMTMtMTItMjYgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAg
ICAgIEFkZCBhbiBvd25pbmcgc21hcnQgcG9pbnRlciBmb3IgUmVuZGVyT2JqZWN0cyBhbmQgc3Rh
cnQgdXNpbmcgaXQuCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xMjYyNTE+CisKKyAg
ICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgUmVuZGVyUHRyIHBvaW50ZXIsIGVzc2VudGlhbGx5IGFu
IE93blB0ciBmb3IKKyAgICAgICAgUmVuZGVyT2JqZWN0cy4gVGhlIGRpZmZlcmVuY2UgaXMgdGhh
dCBSZW5kZXJQdHIgZGVzdHJveXMgdGhlIG9iamVjdAorICAgICAgICBieSBjYWxsaW5nIGRlc3Ry
b3koKSBvbiBpdC4KKworICAgICAgICBUaGlzIGlzIG5lY2Vzc2FyeSB0byBpbXBsZW1lbnQgdGhl
IHdpbGxCZURlc3Ryb3llZCgpIG1lY2hhbmlzbSBpbgorICAgICAgICBSZW5kZXJPYmplY3QgdGhh
dCBub3RpZmllcyByZW5kZXJlcnMganVzdCBiZWZvcmUgdGhleSBhcmUgYWJvdXQgdG8KKyAgICAg
ICAgYmUgZGVsZXRlZCwgd2hpbGUgdGhleSBjYW4gc3RpbGwgZG8gdHJlZSB0cmF2ZXJzYWwsIGV0
Yy4KKworICAgICAgICBJIGFsc28gYWRkZWQgYSBtYWtlX3VuaXF1ZS1hbGlrZSBoZWxwZXIgc28g
eW91IGNhbiB3cml0ZToKKworICAgICAgICAgICAgYXV0byByZW5kZXJlciA9IGNyZWF0ZVJlbmRl
ck9iamVjdDxSZW5kZXJJbWFnZT4oLi4uKTsKKworICAgICAgICBQdXQgaXQgYWxsIHRvIHVzZSBi
eSBtYWtpbmcgQ29udGVudERhdGE6OmNyZWF0ZVJlbmRlcmVyKCkgcmV0dXJuCisgICAgICAgIFJl
bmRlclB0cjxSZW5kZXJPYmplY3Q+IGluc3RlYWQgb2YgcmF3IFJlbmRlck9iamVjdCouCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKIDIwMTMtMTItMjIgIEFuZHJlYXMg
S2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgVGV4dDo6Y3JlYXRlVGV4
dFJlbmRlcmVyKCkgdGFrZSBhIGNvbnN0IFJlbmRlclN0eWxlJi4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkYTg4ZmY5Li45NWMx
OGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xMDk3OCw2ICsxMDk3OCw3IEBACiAJCUFENzI2RkVDMTZEOUY0QjkwMDNBNEU2
RCAvKiBKU1N0eWxlU2hlZXRDdXN0b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNTdHlsZVNoZWV0Q3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFE
REYxQUQ0MTI1N0NEOUEwMDAzQTc1OSAvKiBSZW5kZXJTVkdQYXRoLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNWR1BhdGguY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBRERGMUFENTEyNTdDRDlBMDAwM0E3NTkgLyogUmVuZGVyU1ZHUGF0
aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJTVkdQYXRoLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFERTE2NzM2MTgxMDUwQzMwMDQ2M0EyRSAvKiBS
ZW5kZXJQdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyUHRyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIxMEI2OTdEMTQwQzE3NDAwMEJDMUMyNiAv
KiBXZWJWVFRUb2tlbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJWVFRU
b2tlbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMTBCNjk3RTE0MEMxNzQwMDBC
QzFDMjYgLyogV2ViVlRUVG9rZW5pemVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYlZUVFRva2VuaXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUIxMEI2OTdGMTQwQzE3NDAwMEJDMUMyNiAvKiBXZWJWVFRUb2tlbml6ZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVlRUVG9rZW5pemVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yMTMxMCw2ICsyMTMxMSw3IEBACiAJCQkJQkNGQTkzMDcxMDMz
MzE5MzAwN0IyNUQxIC8qIFJlbmRlck92ZXJmbG93LmggKi8sCiAJCQkJQTQzQkY1OUExMTQ5Mjky
ODAwQzY0M0NBIC8qIFJlbmRlclByb2dyZXNzLmNwcCAqLywKIAkJCQlBNDNCRjU5QjExNDkyOTI4
MDBDNjQzQ0EgLyogUmVuZGVyUHJvZ3Jlc3MuaCAqLywKKwkJCQlBREUxNjczNjE4MTA1MEMzMDA0
NjNBMkUgLyogUmVuZGVyUHRyLmggKi8sCiAJCQkJNUE1NzRGMjIxMzFEQjkzOTAwNDcxQjg4IC8q
IFJlbmRlclF1b3RlLmNwcCAqLywKIAkJCQk1QTU3NEYyMzEzMURCOTM5MDA0NzFCODggLyogUmVu
ZGVyUXVvdGUuaCAqLywKIAkJCQlENzBBRDY1NTEzRTEzNDJCMDA1QjUwQjQgLyogUmVuZGVyUmVn
aW9uLmNwcCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcAppbmRleCAxMWFiYjk0
Li40YzM3MmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwCkBAIC04MywxNyAr
ODMsMTcgQEAgdm9pZCBQc2V1ZG9FbGVtZW50OjpkaWRBdHRhY2hSZW5kZXJlcnMoKQogICAgIGlm
ICghcmVuZGVyZXIgfHwgcmVuZGVyZXItPnN0eWxlKCkuaGFzRmxvd0Zyb20oKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgUmVuZGVyU3R5bGUmIHN0eWxlID0gcmVuZGVyZXItPnN0eWxlKCk7Cisg
ICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gcmVuZGVyZXItPnN0eWxlKCk7CiAgICAgQVNT
RVJUKHN0eWxlLmNvbnRlbnREYXRhKCkpOwogCiAgICAgZm9yIChjb25zdCBDb250ZW50RGF0YSog
Y29udGVudCA9IHN0eWxlLmNvbnRlbnREYXRhKCk7IGNvbnRlbnQ7IGNvbnRlbnQgPSBjb250ZW50
LT5uZXh0KCkpIHsKLSAgICAgICAgUmVuZGVyT2JqZWN0KiBjaGlsZCA9IGNvbnRlbnQtPmNyZWF0
ZVJlbmRlcmVyKGRvY3VtZW50KCksIHN0eWxlKTsKKyAgICAgICAgUmVuZGVyUHRyPFJlbmRlck9i
amVjdD4gY2hpbGQgPSBjb250ZW50LT5jcmVhdGVSZW5kZXJlcihkb2N1bWVudCgpLCBzdHlsZSk7
CiAgICAgICAgIGlmIChyZW5kZXJlci0+aXNDaGlsZEFsbG93ZWQoKmNoaWxkLCBzdHlsZSkpIHsK
LSAgICAgICAgICAgIHJlbmRlcmVyLT5hZGRDaGlsZChjaGlsZCk7Ci0gICAgICAgICAgICBpZiAo
Y2hpbGQtPmlzUXVvdGUoKSkKLSAgICAgICAgICAgICAgICB0b1JlbmRlclF1b3RlKGNoaWxkKS0+
YXR0YWNoUXVvdGUoKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBjaGlsZC0+ZGVzdHJv
eSgpOworICAgICAgICAgICAgYXV0byogY2hpbGRQdHIgPSBjaGlsZC5nZXQoKTsKKyAgICAgICAg
ICAgIHJlbmRlcmVyLT5hZGRDaGlsZChjaGlsZC5sZWFrUHRyKCkpOworICAgICAgICAgICAgaWYg
KGNoaWxkUHRyLT5pc1F1b3RlKCkpCisgICAgICAgICAgICAgICAgdG9SZW5kZXJRdW90ZShjaGls
ZFB0ciktPmF0dGFjaFF1b3RlKCk7CisgICAgICAgIH0KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQdHIuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJQdHIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43
NjFiN2JmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clB0ci5oCkBAIC0wLDAgKzEsMTYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBSZW5kZXJQdHJf
aAorI2RlZmluZSBSZW5kZXJQdHJfaAorCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNp
bmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8Y3N0ZGRlZj4KKyNpbmNsdWRlIDxtZW1vcnk+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgUmVu
ZGVyUHRyIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIFQgVmFsdWVUeXBlOworICAgIHR5cGVkZWYg
VmFsdWVUeXBlKiBQdHJUeXBlOworCisgICAgUmVuZGVyUHRyKCkgOiBtX3B0cihudWxscHRyKSB7
IH0KKyAgICBSZW5kZXJQdHIoc3RkOjpudWxscHRyX3QpIDogbV9wdHIobnVsbHB0cikgeyB9Cisg
ICAgZXhwbGljaXQgUmVuZGVyUHRyKFQqIHB0cikgOiBtX3B0cihwdHIpIHsgfQorCisgICAgflJl
bmRlclB0cigpCisgICAgeworICAgICAgICBpZiAobV9wdHIpCisgICAgICAgICAgICBtX3B0ci0+
ZGVzdHJveSgpOworICAgIH0KKworICAgIFB0clR5cGUgZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9w
dHI7IH0KKworICAgIHZvaWQgY2xlYXIoKTsKKyAgICBQdHJUeXBlIGxlYWtQdHIoKSBXQVJOX1VO
VVNFRF9SRVRVUk47CisKKyAgICBWYWx1ZVR5cGUmIG9wZXJhdG9yKigpIGNvbnN0IHsgQVNTRVJU
KG1fcHRyKTsgcmV0dXJuICptX3B0cjsgfQorICAgIFB0clR5cGUgb3BlcmF0b3ItPigpIGNvbnN0
IHsgQVNTRVJUKG1fcHRyKTsgcmV0dXJuIG1fcHRyOyB9CisKKyAgICBib29sIG9wZXJhdG9yISgp
IGNvbnN0IHsgcmV0dXJuICFtX3B0cjsgfQorCisgICAgLy8gVGhpcyBjb252ZXJzaW9uIG9wZXJh
dG9yIGFsbG93cyBpbXBsaWNpdCBjb252ZXJzaW9uIHRvIGJvb2wgYnV0IG5vdCB0byBvdGhlciBp
bnRlZ2VyIHR5cGVzLgorICAgIHR5cGVkZWYgUHRyVHlwZSBSZW5kZXJQdHI6OipVbnNwZWNpZmll
ZEJvb2xUeXBlOworICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3B0ciA/ICZSZW5kZXJQdHI6Om1fcHRyIDogbnVsbHB0cjsgfQorCisgICAgUmVuZGVy
UHRyJiBvcGVyYXRvcj0oc3RkOjpudWxscHRyX3QpIHsgY2xlYXIoKTsgcmV0dXJuICp0aGlzOyB9
CisKKyAgICBSZW5kZXJQdHIoUmVuZGVyUHRyJiYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+
IFJlbmRlclB0cihSZW5kZXJQdHI8VT4mJik7CisKKyAgICBSZW5kZXJQdHImIG9wZXJhdG9yPShS
ZW5kZXJQdHImJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gUmVuZGVyUHRyJiBvcGVyYXRv
cj0oUmVuZGVyUHRyPFU+JiYpOworCisgICAgdm9pZCBzd2FwKFJlbmRlclB0ciYgbykgeyBzdGQ6
OnN3YXAobV9wdHIsIG8ubV9wdHIpOyB9CisKK3ByaXZhdGU6CisgICAgLy8gV2Ugc2hvdWxkIG5l
dmVyIGhhdmUgdHdvIFJlbmRlclB0cnMgZm9yIHRoZSBzYW1lIHVuZGVybHlpbmcgb2JqZWN0IChv
dGhlcndpc2Ugd2UnbGwgZ2V0CisgICAgLy8gZG91YmxlLWRlc3RydWN0aW9uKSwgc28gdGhlc2Ug
ZXF1YWxpdHkgb3BlcmF0b3JzIHNob3VsZCBuZXZlciBiZSBuZWVkZWQuCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVT4gYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlbmRlclB0cjxVPiYpIHsgQ09NUElM
RV9BU1NFUlQoIXNpemVvZihVKiksIFJlbmRlclB0cnNfc2hvdWxkX25ldmVyX2JlX2VxdWFsKTsg
cmV0dXJuIGZhbHNlOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBvcGVyYXRvciE9
KGNvbnN0IFJlbmRlclB0cjxVPiYpIHsgQ09NUElMRV9BU1NFUlQoIXNpemVvZihVKiksIFJlbmRl
clB0cnNfc2hvdWxkX25ldmVyX2JlX2VxdWFsKTsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBQdHJU
eXBlIG1fcHRyOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgUmVuZGVy
UHRyPFQ+OjpjbGVhcigpCit7CisgICAgaWYgKG1fcHRyKQorICAgICAgICBtX3B0ci0+ZGVzdHJv
eSgpOworICAgIG1fcHRyID0gbnVsbHB0cjsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5s
aW5lIHR5cGVuYW1lIFJlbmRlclB0cjxUPjo6UHRyVHlwZSBSZW5kZXJQdHI8VD46OmxlYWtQdHIo
KQoreworICAgIFB0clR5cGUgcHRyID0gbV9wdHI7CisgICAgbV9wdHIgPSBudWxscHRyOworICAg
IHJldHVybiBwdHI7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBSZW5kZXJQdHI8
VD46OlJlbmRlclB0cihSZW5kZXJQdHI8VD4mJiBvKQorICAgIDogbV9wdHIoby5sZWFrUHRyKCkp
Cit7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHRlbXBsYXRlPHR5cGVuYW1lIFU+IGlubGlu
ZSBSZW5kZXJQdHI8VD46OlJlbmRlclB0cihSZW5kZXJQdHI8VT4mJiBvKQorICAgIDogbV9wdHIo
by5sZWFrUHRyKCkpCit7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBhdXRvIFJl
bmRlclB0cjxUPjo6b3BlcmF0b3I9KFJlbmRlclB0ciYmIG8pIC0+IFJlbmRlclB0ciYKK3sKKyAg
ICBBU1NFUlQoIW8gfHwgbyAhPSBtX3B0cik7CisgICAgUmVuZGVyUHRyIHB0ciA9IHN0ZDo6bW92
ZShvKTsKKyAgICBzd2FwKHB0cik7CisgICAgcmV0dXJuICp0aGlzOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUgYXV0byBSZW5kZXJQdHI8VD46
Om9wZXJhdG9yPShSZW5kZXJQdHI8VT4mJiBvKSAtPiBSZW5kZXJQdHImCit7CisgICAgQVNTRVJU
KCFvIHx8IG8gIT0gbV9wdHIpOworICAgIFJlbmRlclB0ciBwdHIgPSBzdGQ6Om1vdmUobyk7Cisg
ICAgc3dhcChwdHIpOworICAgIHJldHVybiAqdGhpczsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
VD4gaW5saW5lIHZvaWQgc3dhcChSZW5kZXJQdHI8VD4mIGEsIFJlbmRlclB0cjxUPiYgYikKK3sK
KyAgICBhLnN3YXAoYik7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlu
bGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVuZGVyUHRyPFQ+JiBhLCBVKiBiKQoreworICAg
IHJldHVybiBhLmdldCgpID09IGI7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0oVCogYSwgY29uc3QgUmVuZGVyUHRyPFU+JiBiKSAK
K3sKKyAgICByZXR1cm4gYSA9PSBiLmdldCgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlbmRlclB0cjxUPiYgYSwg
VSogYikKK3sKKyAgICByZXR1cm4gYS5nZXQoKSAhPSBiOworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KFQqIGEsIGNvbnN0IFJlbmRl
clB0cjxVPiYgYikKK3sKKyAgICByZXR1cm4gYSAhPSBiLmdldCgpOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBpbmxpbmUgdHlwZW5hbWUgUmVuZGVyUHRyPFQ+OjpQdHJUeXBlIGdldFB0cihj
b25zdCBSZW5kZXJQdHI8VD4mIHApCit7CisgICAgcmV0dXJuIHAuZ2V0KCk7Cit9CisKK3RlbXBs
YXRlPGNsYXNzIFQsIGNsYXNzLi4uIEFyZ3M+IGlubGluZSBSZW5kZXJQdHI8VD4KK2NyZWF0ZVJl
bmRlck9iamVjdChBcmdzJiYuLi4gYXJncykKK3sKKyAgICByZXR1cm4gUmVuZGVyUHRyPFQ+KG5l
dyBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBSZW5kZXJQdHJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9Db250ZW50RGF0YS5jcHAKaW5kZXggNzg4MjM2OS4uZWVmMjYyMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuY3BwCkBAIC00Nywz
MyArNDcsMzMgQEAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRhPiBDb250ZW50RGF0YTo6Y2xv
bmUoKSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVJlbmRlck9iamVjdCogSW1hZ2VD
b250ZW50RGF0YTo6Y3JlYXRlUmVuZGVyZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHls
ZSYgcHNldWRvU3R5bGUpIGNvbnN0CitSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBJbWFnZUNvbnRl
bnREYXRhOjpjcmVhdGVSZW5kZXJlcihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFJlbmRlclN0
eWxlJiBwc2V1ZG9TdHlsZSkgY29uc3QKIHsKLSAgICBSZW5kZXJJbWFnZSogaW1hZ2UgPSBuZXcg
UmVuZGVySW1hZ2UoZG9jdW1lbnQsIFJlbmRlckltYWdlOjpjcmVhdGVTdHlsZUluaGVyaXRpbmdG
cm9tUHNldWRvU3R5bGUocHNldWRvU3R5bGUpKTsKKyAgICBhdXRvIGltYWdlID0gY3JlYXRlUmVu
ZGVyT2JqZWN0PFJlbmRlckltYWdlPihkb2N1bWVudCwgUmVuZGVySW1hZ2U6OmNyZWF0ZVN0eWxl
SW5oZXJpdGluZ0Zyb21Qc2V1ZG9TdHlsZShwc2V1ZG9TdHlsZSkpOwogICAgIGltYWdlLT5pbml0
aWFsaXplU3R5bGUoKTsKICAgICBpbWFnZS0+c2V0QWx0VGV4dChhbHRUZXh0KCkpOwogICAgIGlm
IChtX2ltYWdlKQogICAgICAgICBpbWFnZS0+c2V0SW1hZ2VSZXNvdXJjZShSZW5kZXJJbWFnZVJl
c291cmNlU3R5bGVJbWFnZTo6Y3JlYXRlKCptX2ltYWdlKSk7CiAgICAgZWxzZQogICAgICAgICBp
bWFnZS0+c2V0SW1hZ2VSZXNvdXJjZShSZW5kZXJJbWFnZVJlc291cmNlOjpjcmVhdGUoKSk7Ci0g
ICAgcmV0dXJuIGltYWdlOworICAgIHJldHVybiBzdGQ6Om1vdmUoaW1hZ2UpOwogfQogCi1SZW5k
ZXJPYmplY3QqIFRleHRDb250ZW50RGF0YTo6Y3JlYXRlUmVuZGVyZXIoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBSZW5kZXJTdHlsZSYpIGNvbnN0CitSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBUZXh0Q29u
dGVudERhdGE6OmNyZWF0ZVJlbmRlcmVyKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgUmVuZGVy
U3R5bGUmKSBjb25zdAogewotICAgIFJlbmRlclRleHRGcmFnbWVudCogZnJhZ21lbnQgPSBuZXcg
UmVuZGVyVGV4dEZyYWdtZW50KGRvY3VtZW50LCBtX3RleHQpOworICAgIGF1dG8gZnJhZ21lbnQg
PSBjcmVhdGVSZW5kZXJPYmplY3Q8UmVuZGVyVGV4dEZyYWdtZW50Pihkb2N1bWVudCwgbV90ZXh0
KTsKICAgICBmcmFnbWVudC0+c2V0QWx0VGV4dChhbHRUZXh0KCkpOwotICAgIHJldHVybiBmcmFn
bWVudDsKKyAgICByZXR1cm4gc3RkOjptb3ZlKGZyYWdtZW50KTsKIH0KIAotUmVuZGVyT2JqZWN0
KiBDb3VudGVyQ29udGVudERhdGE6OmNyZWF0ZVJlbmRlcmVyKERvY3VtZW50JiBkb2N1bWVudCwg
UmVuZGVyU3R5bGUmKSBjb25zdAorUmVuZGVyUHRyPFJlbmRlck9iamVjdD4gQ291bnRlckNvbnRl
bnREYXRhOjpjcmVhdGVSZW5kZXJlcihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFJlbmRlclN0
eWxlJikgY29uc3QKIHsKLSAgICByZXR1cm4gbmV3IFJlbmRlckNvdW50ZXIoZG9jdW1lbnQsICpt
X2NvdW50ZXIpOworICAgIHJldHVybiBjcmVhdGVSZW5kZXJPYmplY3Q8UmVuZGVyQ291bnRlcj4o
ZG9jdW1lbnQsICptX2NvdW50ZXIpOwogfQogCi1SZW5kZXJPYmplY3QqIFF1b3RlQ29udGVudERh
dGE6OmNyZWF0ZVJlbmRlcmVyKERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVyU3R5bGUmKSBjb25z
dAorUmVuZGVyUHRyPFJlbmRlck9iamVjdD4gUXVvdGVDb250ZW50RGF0YTo6Y3JlYXRlUmVuZGVy
ZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG5ldyBSZW5kZXJRdW90ZShkb2N1bWVudCwgbV9xdW90ZSk7CisgICAgcmV0dXJuIGNy
ZWF0ZVJlbmRlck9iamVjdDxSZW5kZXJRdW90ZT4oZG9jdW1lbnQsIG1fcXVvdGUpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvQ29udGVudERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9D
b250ZW50RGF0YS5oCmluZGV4IGIwZmY3ZDQuLmVlNWJkZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db250ZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9Db250ZW50RGF0YS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNs
dWRlICJDb3VudGVyQ29udGVudC5oIgogI2luY2x1ZGUgIlN0eWxlSW1hZ2UuaCIKKyNpbmNsdWRl
ICJSZW5kZXJQdHIuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTQ1LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1F1b3Rl
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0KCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVS
ZW5kZXJlcihEb2N1bWVudCYsIFJlbmRlclN0eWxlJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
UmVuZGVyUHRyPFJlbmRlck9iamVjdD4gY3JlYXRlUmVuZGVyZXIoRG9jdW1lbnQmLCBjb25zdCBS
ZW5kZXJTdHlsZSYpIGNvbnN0ID0gMDsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0
YT4gY2xvbmUoKSBjb25zdDsKIApAQCAtNzYsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRJbWFnZShQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IGltYWdlKSB7IG1faW1hZ2UgPSBpbWFnZTsg
fQogCiAgICAgdmlydHVhbCBib29sIGlzSW1hZ2UoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0
cnVlOyB9Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKERvY3VtZW50
JiwgUmVuZGVyU3R5bGUmKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxS
ZW5kZXJPYmplY3Q+IGNyZWF0ZVJlbmRlcmVyKERvY3VtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUm
KSBjb25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgYm9vbCBlcXVhbHMoY29uc3QgQ29udGVu
dERhdGEmIGRhdGEpIGNvbnN0IE9WRVJSSURFCiAgICAgewpAQCAtMTA3LDcgKzEwOCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KSB7IG1fdGV4dCA9IHRl
eHQ7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc1RleHQoKSBjb25zdCBPVkVSUklERSB7IHJldHVy
biB0cnVlOyB9Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKERvY3Vt
ZW50JiwgUmVuZGVyU3R5bGUmKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0
cjxSZW5kZXJPYmplY3Q+IGNyZWF0ZVJlbmRlcmVyKERvY3VtZW50JiwgY29uc3QgUmVuZGVyU3R5
bGUmKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgYm9vbCBlcXVhbHMoY29uc3QgQ29u
dGVudERhdGEmIGRhdGEpIGNvbnN0IE9WRVJSSURFCiAgICAgewpAQCAtMTMzLDcgKzEzNCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldENvdW50ZXIoc3RkOjp1bmlxdWVfcHRyPENvdW50ZXJDb250
ZW50PiBjb3VudGVyKSB7IG1fY291bnRlciA9IHN0ZDo6bW92ZShjb3VudGVyKTsgfQogCiAgICAg
dmlydHVhbCBib29sIGlzQ291bnRlcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0K
LSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoRG9jdW1lbnQmLCBSZW5k
ZXJTdHlsZSYpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlck9i
amVjdD4gY3JlYXRlUmVuZGVyZXIoRG9jdW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0
IE9WRVJSSURFOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPENvbnRl
bnREYXRhPiBjbG9uZUludGVybmFsKCkgY29uc3QgT1ZFUlJJREUKQEAgLTE2Myw3ICsxNjQsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRRdW90ZShRdW90ZVR5cGUgcXVvdGUpIHsgbV9xdW90ZSA9
IHF1b3RlOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNRdW90ZSgpIGNvbnN0IE9WRVJSSURFIHsg
cmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIo
RG9jdW1lbnQmLCBSZW5kZXJTdHlsZSYpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgUmVu
ZGVyUHRyPFJlbmRlck9iamVjdD4gY3JlYXRlUmVuZGVyZXIoRG9jdW1lbnQmLCBjb25zdCBSZW5k
ZXJTdHlsZSYpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBib29sIGVxdWFscyhjb25z
dCBDb250ZW50RGF0YSYgZGF0YSkgY29uc3QgT1ZFUlJJREUKICAgICB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>