<?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>58033</bug_id>
          
          <creation_ts>2011-04-07 05:56:06 -0700</creation_ts>
          <short_desc>[GStreamer] report playback statistics</short_desc>
          <delta_ts>2011-04-12 00:53:35 -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>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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="Philippe Normand">pnormand</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>381258</commentid>
    <comment_count>0</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-04-07 05:56:06 -0700</bug_when>
    <thetext>If media-statistics is enabled build-webkit --gtk --media-statistics (false by default)

The stats can be queried with fpsdisplaysink, currently optionally supported and by doing position queries in _BYTES to the sinks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381291</commentid>
    <comment_count>1</comment_count>
      <attachid>88622</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-04-07 06:45:35 -0700</bug_when>
    <thetext>Created attachment 88622
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381293</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-07 06:47:33 -0700</bug_when>
    <thetext>Attachment 88622 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/WebCor...&quot; exit_code: 1

Source/WebCore/manual-tests/video-statistics.html:70:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/manual-tests/video-statistics.html:71:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/manual-tests/video-statistics.html:72:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/manual-tests/video-statistics.html:73:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 4 in 4 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>381297</commentid>
    <comment_count>3</comment_count>
      <attachid>88623</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-04-07 06:51:14 -0700</bug_when>
    <thetext>Created attachment 88623
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381861</commentid>
    <comment_count>4</comment_count>
      <attachid>88623</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-04-07 17:05:12 -0700</bug_when>
    <thetext>Comment on attachment 88623
proposed patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1003
&gt; +    gst_object_replace((GstObject**) &amp;m_webkitAudioSink, (GstObject*) element.get());

Please use a C++ style cast here.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1677
&gt; +        // The verbose property has been added in -bad 0.10.22. Making
&gt; +        // this whole code depend on it because we don&apos;t want
&gt; +        // fpsdiplaysink to spit data on stdout.
&gt; +        GstElementFactory* factory = GST_ELEMENT_FACTORY(GST_ELEMENT_GET_CLASS(m_fpsSink)-&gt;elementfactory);
&gt; +        if (gst_plugin_feature_check_version(GST_PLUGIN_FEATURE(factory), 0, 10, 22)) {
&gt; +            g_object_set(m_fpsSink, &quot;verbose&quot;, FALSE , NULL);

Will this affect the required gstreamer version since the property only exists &gt;= 0.10.22?

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1679
&gt; +            // turn off text overlay unless logging is enabled.

turn =&gt; Turn</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382075</commentid>
    <comment_count>5</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-04-08 01:26:15 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1677
&gt; &gt; +        // The verbose property has been added in -bad 0.10.22. Making
&gt; &gt; +        // this whole code depend on it because we don&apos;t want
&gt; &gt; +        // fpsdiplaysink to spit data on stdout.
&gt; &gt; +        GstElementFactory* factory = GST_ELEMENT_FACTORY(GST_ELEMENT_GET_CLASS(m_fpsSink)-&gt;elementfactory);
&gt; &gt; +        if (gst_plugin_feature_check_version(GST_PLUGIN_FEATURE(factory), 0, 10, 22)) {
&gt; &gt; +            g_object_set(m_fpsSink, &quot;verbose&quot;, FALSE , NULL);
&gt; 
&gt; Will this affect the required gstreamer version since the property only exists &gt;= 0.10.22?
&gt; 

We don&apos;t depend on specific -bad version. Actually we don&apos;t even check for its presence at configure time.

If a suitable -bad version is not available at runtime the dropped/rendered frame counters will always remain at 0.

BTW we depend on this fpsdisplaysink patch: https://bugzilla.gnome.org/show_bug.cgi?id=647030

It&apos;d be wise to wait it to be commited before pushing this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383072</commentid>
    <comment_count>6</comment_count>
      <attachid>88979</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-04-11 02:20:28 -0700</bug_when>
    <thetext>Created attachment 88979
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383861</commentid>
    <comment_count>7</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-04-12 00:53:35 -0700</bug_when>
    <thetext>Committed r83561: &lt;http://trac.webkit.org/changeset/83561&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88622</attachid>
            <date>2011-04-07 06:45:35 -0700</date>
            <delta_ts>2011-04-07 06:51:14 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>proposed-patch.patch</filename>
            <type>text/plain</type>
            <size>11518</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBhZjJhZWRjMGJkOTI2Y2JhYTc5Y2MxYjdlNDgyNzdiN2NiZTYzOTI2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUaHUsIDcgQXByIDIwMTEgMTU6NDY6MDMgKzAyMDAKU3ViamVjdDogW1BBVENIXSBw
cm9wb3NlZCBwYXRjaAoKLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgMjEgKysrKwogU291cmNlL1dlYkNvcmUvbWFudWFsLXRlc3RzL3Zp
ZGVvLXN0YXRpc3RpY3MuaHRtbCAgfCAgIDc5ICsrKysrKysrKysrKysrKwogLi4uL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwICAgICAgfCAgMTAwICsrKysrKysrKysr
KysrKystLS0tCiAuLi4vZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oICAg
ICAgICB8ICAgIDggKysKIDQgZmlsZXMgY2hhbmdlZCwgMTg4IGluc2VydGlvbnMoKyksIDIwIGRl
bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL21hbnVhbC10ZXN0
cy92aWRlby1zdGF0aXN0aWNzLmh0bWwKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmIxZWE3Zi4uYjQyZWEyZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDExLTA0LTA3ICBQaGlsaXBwZSBOb3JtYW5k
ICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBbR1N0cmVhbWVyXSByZXBvcnQgcGxheWJhY2sgc3RhdGlzdGljcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTgwMzMKKwor
ICAgICAgICBQcm92aWRlIG1lZGlhIHBsYXliYWNrIHN0YXRpc3RpY3MgdXNpbmcgZnBzZGlzcGxh
eXNpbmsgYW5kCisgICAgICAgIHBvc2l0aW9uIHF1ZXJpZXMuCisKKyAgICAgICAgKiBtYW51YWwt
dGVzdHMvdmlkZW8tc3RhdGlzdGljcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZGVjb2RlZEZyYW1lQ291
bnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkcm9w
cGVkRnJhbWVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OmF1ZGlvRGVjb2RlZEJ5dGVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OnZpZGVvRGVjb2RlZEJ5dGVDb3VudCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZUF1ZGlvU2luayk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZVN0YXRl
cyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0
ZUdTVFBsYXlCaW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuaDoKKwogMjAxMS0wNC0wNyAgUGF2ZWwgUG9kaXZpbG92
ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBG
ZWxkbWFuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWFudWFsLXRlc3RzL3ZpZGVvLXN0
YXRpc3RpY3MuaHRtbCBiL1NvdXJjZS9XZWJDb3JlL21hbnVhbC10ZXN0cy92aWRlby1zdGF0aXN0
aWNzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjc3NTdiYwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hbnVhbC10ZXN0cy92aWRlby1zdGF0aXN0
aWNzLmh0bWwKQEAgLTAsMCArMSw3OSBAQAorPGh0bWw+Cis8aGVhZD48dGl0bGU+V2ViS2l0IHZp
ZGVvIHBsYXliYWNrIHN0YXRpc3RpY3M8L3RpdGxlPjwvaGVhZD4KKzxib2R5PgorPCEtLSBpbnNw
aXJlZCBieSAtLQorICAtLSBodHRwOi8vcGVvcGxlLm1vemlsbGEub3JnL35jcGVhcmNlL3BhaW50
LXN0YXRzLWRlbW8uaHRtbCAtLT4KKzx2aWRlbyBzcmM9Imh0dHA6Ly9tb3ZpZXMuYXBwbGUuY29t
L21vdmllcy91cy9hcHBsZS9pcG9kaXR1bmVzLzIwMDcvdG91Y2gvYWRzL2FwcGxlX2lwb2R0b3Vj
aF90b3VjaF9yNjQwLTljaWUubW92IiBpZD0idiIgY29udHJvbHMgYXV0b3BsYXk+PC92aWRlbz4K
KzxkaXYgaWQ9ImxvZyI+CisgICAgQXVkaW8gYnl0ZXMgZGVjb2RlZDogMCBhdmVyYWdlIHAvczog
MDxicj4KKyAgICBWaWRlbyBieXRlcyBkZWNvZGVkOiAwIGF2ZXJhZ2UgcC9zOiAwPGJyPgorICAg
IERlY29kZWQgZnJhbWVzOiAwIGF2ZXJhZ2UgcC9zOiAwPGJyPgorICAgIERyb3BwZWQgZnJhbWVz
OiAwIGF2ZXJhZ2UgcC9zOiAwPGJyPgorPC9kaXY+Cis8c2NyaXB0PgorCit2YXIgZGVjb2RlZEZy
YW1lcyA9IDA7Cit2YXIgZGVjb2RlZFBlclNlYyA9IDA7Cit2YXIgYXVkaW9CeXRlc0RlY29kZWQg
PSAwOwordmFyIGF1ZGlvQnl0ZXNEZWNvZGVkUGVyU2VjID0gMDsKK3ZhciB2aWRlb0J5dGVzRGVj
b2RlZCA9IDA7Cit2YXIgdmlkZW9CeXRlc0RlY29kZWRQZXJTZWMgPSAwOwordmFyIGRyb3BwZWRG
cmFtZXMgPSAwOwordmFyIGRyb3BwZWRGcmFtZXNQZXJTZWMgPSAwOworCitmdW5jdGlvbiBNZWFu
KCkgeworICB0aGlzLmNvdW50ID0gMDsKKyAgdGhpcy5zdW0gPSAwOworICAKKyAgdGhpcy5yZWNv
cmQgPSBmdW5jdGlvbih2YWwpIHsKKyAgICB0aGlzLmNvdW50Kys7CisgICAgdGhpcy5zdW0gKz0g
dmFsOworICB9OworICAKKyAgdGhpcy5tZWFuID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHRo
aXMuY291bnQgPyAodGhpcy5zdW0gLyB0aGlzLmNvdW50KS50b0ZpeGVkKDMpIDogMDsKKyAgfTsK
K30KKworCit2YXIgZGVjb2RlZE1lYW4gPSBuZXcgTWVhbigpOwordmFyIGF1ZGlvTWVhbiA9IG5l
dyBNZWFuKCk7Cit2YXIgdmlkZW9NZWFuID0gbmV3IE1lYW4oKTsKK3ZhciBkcm9wTWVhbiA9IG5l
dyBNZWFuKCk7CisKK2Z1bmN0aW9uIHJlY2FsY1JhdGVzKCkgeworICB2YXIgdiA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ2Iik7CisKKyAgaWYgKHYucmVhZHlTdGF0ZSA8PSBIVE1MTWVkaWFF
bGVtZW50LkhBVkVfQ1VSUkVOVF9EQVRBIHx8IHYucGF1c2VkKSB7CisgICAgcmV0dXJuOworICB9
CisKKyAgZGVjb2RlZFBlclNlYyA9ICh2LndlYmtpdERlY29kZWRGcmFtZUNvdW50IC0gZGVjb2Rl
ZEZyYW1lcyk7CisgIGRlY29kZWRGcmFtZXMgPSB2LndlYmtpdERlY29kZWRGcmFtZUNvdW50Owor
CisgIGF1ZGlvQnl0ZXNEZWNvZGVkUGVyU2VjID0gdi53ZWJraXRBdWRpb0RlY29kZWRCeXRlQ291
bnQgLSBhdWRpb0J5dGVzRGVjb2RlZDsKKyAgYXVkaW9CeXRlc0RlY29kZWQgPSB2LndlYmtpdEF1
ZGlvRGVjb2RlZEJ5dGVDb3VudDsKKworICB2aWRlb0J5dGVzRGVjb2RlZFBlclNlYyA9IHYud2Vi
a2l0VmlkZW9EZWNvZGVkQnl0ZUNvdW50IC0gdmlkZW9CeXRlc0RlY29kZWQ7CisgIHZpZGVvQnl0
ZXNEZWNvZGVkID0gdi53ZWJraXRWaWRlb0RlY29kZWRCeXRlQ291bnQ7CisKKyAgZHJvcHBlZEZy
YW1lc1BlclNlYyA9IHYud2Via2l0RHJvcHBlZEZyYW1lQ291bnQgLSBkcm9wcGVkRnJhbWVzOwor
ICBkcm9wcGVkRnJhbWVzID0gdi53ZWJraXREcm9wcGVkRnJhbWVDb3VudDsKKworICBkZWNvZGVk
TWVhbi5yZWNvcmQoZGVjb2RlZFBlclNlYyk7CisgIGF1ZGlvTWVhbi5yZWNvcmQoYXVkaW9CeXRl
c0RlY29kZWRQZXJTZWMpOworICB2aWRlb01lYW4ucmVjb3JkKHZpZGVvQnl0ZXNEZWNvZGVkUGVy
U2VjKTsKKyAgZHJvcE1lYW4ucmVjb3JkKGRyb3BwZWRGcmFtZXNQZXJTZWMpOworICAKKyAgdmFy
IGQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIik7CisgIGQuaW5uZXJIVE1MID0KKwki
QXVkaW8gYnl0ZXMgZGVjb2RlZDogIiArIHYud2Via2l0QXVkaW9EZWNvZGVkQnl0ZUNvdW50ICsg
IiBhdmVyYWdlIHAvczogIiArIGF1ZGlvTWVhbi5tZWFuKCkgKyAiPGJyPiIgKworCSJWaWRlbyBi
eXRlcyBkZWNvZGVkOiAiICsgdi53ZWJraXRWaWRlb0RlY29kZWRCeXRlQ291bnQgKyAiIGF2ZXJh
Z2UgcC9zOiAiICsgdmlkZW9NZWFuLm1lYW4oKSArICI8YnI+IiArCisJIkRlY29kZWQgZnJhbWVz
OiAiICsgdi53ZWJraXREZWNvZGVkRnJhbWVDb3VudCArICIgYXZlcmFnZSBwL3M6ICIgKyBkZWNv
ZGVkTWVhbi5tZWFuKCkgKyAiPGJyPiIgKworCSJEcm9wcGVkIGZyYW1lczogIiArIHYud2Via2l0
RHJvcHBlZEZyYW1lQ291bnQgKyAiIGF2ZXJhZ2UgcC9zOiAiICsgZHJvcE1lYW4ubWVhbigpICsg
Ijxicj4iOworfQorCitzZXRJbnRlcnZhbChyZWNhbGNSYXRlcywgMTAwMCk7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5jcHAKaW5kZXggMmZiNGNlZi4uZGM3YWViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTk1Miw2ICs5NTIsNTcgQEAgdW5z
aWduZWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp0b3RhbEJ5dGVzKCkgY29uc3QKICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0aCk7CiB9CiAKK3Vuc2lnbmVkIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZGVjb2RlZEZyYW1lQ291bnQoKSBjb25zdAorewor
ICAgIGd1aW50NjQgZGVjb2RlZEZyYW1lcyA9IDA7CisgICAgaWYgKG1fZnBzU2luaykKKyAgICAg
ICAgZ19vYmplY3RfZ2V0KG1fZnBzU2luaywgImZyYW1lcy1yZW5kZXJlZCIsICZkZWNvZGVkRnJh
bWVzLCBOVUxMKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlY29kZWRGcmFt
ZXMpOworfQorCit1bnNpZ25lZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmRyb3BwZWRG
cmFtZUNvdW50KCkgY29uc3QKK3sKKyAgICBndWludDY0IGZyYW1lc0Ryb3BwZWQgPSAwOworICAg
IGlmIChtX2Zwc1NpbmspCisgICAgICAgIGdfb2JqZWN0X2dldChtX2Zwc1NpbmssICJmcmFtZXMt
ZHJvcHBlZCIsICZmcmFtZXNEcm9wcGVkLCBOVUxMKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGZyYW1lc0Ryb3BwZWQpOworfQorCit1bnNpZ25lZCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OmF1ZGlvRGVjb2RlZEJ5dGVDb3VudCgpIGNvbnN0Cit7CisgICAgR3N0UXVl
cnkqIHF1ZXJ5ID0gZ3N0X3F1ZXJ5X25ld19wb3NpdGlvbihHU1RfRk9STUFUX0JZVEVTKTsKKyAg
ICBnaW50NjQgcG9zaXRpb24gPSAwOworCisgICAgaWYgKG1fd2Via2l0QXVkaW9TaW5rICYmIGdz
dF9lbGVtZW50X3F1ZXJ5KG1fd2Via2l0QXVkaW9TaW5rLCBxdWVyeSkpCisgICAgICAgIGdzdF9x
dWVyeV9wYXJzZV9wb3NpdGlvbihxdWVyeSwgMCwgJnBvc2l0aW9uKTsKKworICAgIGdzdF9xdWVy
eV91bnJlZihxdWVyeSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihwb3NpdGlv
bik7Cit9CisKK3Vuc2lnbmVkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dmlkZW9EZWNv
ZGVkQnl0ZUNvdW50KCkgY29uc3QKK3sKKyAgICBHc3RRdWVyeSogcXVlcnkgPSBnc3RfcXVlcnlf
bmV3X3Bvc2l0aW9uKEdTVF9GT1JNQVRfQllURVMpOworICAgIGdpbnQ2NCBwb3NpdGlvbiA9IDA7
CisKKyAgICBpZiAoZ3N0X2VsZW1lbnRfcXVlcnkobV93ZWJraXRWaWRlb1NpbmssIHF1ZXJ5KSkK
KyAgICAgICAgZ3N0X3F1ZXJ5X3BhcnNlX3Bvc2l0aW9uKHF1ZXJ5LCAwLCAmcG9zaXRpb24pOwor
CisgICAgZ3N0X3F1ZXJ5X3VucmVmKHF1ZXJ5KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHBvc2l0aW9uKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OnVwZGF0ZUF1ZGlvU2luaygpCit7CisgICAgaWYgKCFtX3BsYXlCaW4pCisgICAgICAgIHJldHVy
bjsKKworICAgIEdPd25QdHI8R3N0RWxlbWVudD4gZWxlbWVudDsKKworICAgIGdfb2JqZWN0X2dl
dChtX3BsYXlCaW4sICJhdWRpby1zaW5rIiwgJmVsZW1lbnQub3V0UHRyKCksIE5VTEwpOworICAg
IGdzdF9vYmplY3RfcmVwbGFjZSgoR3N0T2JqZWN0KiopICZtX3dlYmtpdEF1ZGlvU2luaywgKEdz
dE9iamVjdCopIGVsZW1lbnQuZ2V0KCkpOworfQorCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6Y2FuY2VsTG9hZCgpCiB7CiAgICAgaWYgKG1fbmV0d29ya1N0YXRlIDwgTWVkaWFQ
bGF5ZXI6OkxvYWRpbmcgfHwgbV9uZXR3b3JrU3RhdGUgPT0gTWVkaWFQbGF5ZXI6OkxvYWRlZCkK
QEAgLTEwMTEsNiArMTA2Miw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp1
cGRhdGVTdGF0ZXMoKQogICAgICAgICAvLyBpbmZvcm1hdGlvbiBmcm9tIEdTdHJlYW1lciwgd2hp
bGUgd2Ugc3luYyBzdGF0ZXMgd2hlcmUKICAgICAgICAgLy8gbmVlZGVkLgogICAgICAgICBpZiAo
c3RhdGUgPT0gR1NUX1NUQVRFX1BBVVNFRCkgeworICAgICAgICAgICAgaWYgKCFtX3dlYmtpdEF1
ZGlvU2luaykKKyAgICAgICAgICAgICAgICB1cGRhdGVBdWRpb1NpbmsoKTsKICAgICAgICAgICAg
IGlmIChtX2J1ZmZlcmluZyAmJiBtX2J1ZmZlcmluZ1BlcmNlbnRhZ2UgPT0gMTAwKSB7CiAgICAg
ICAgICAgICAgICAgbV9idWZmZXJpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBtX2J1ZmZl
cmluZ1BlcmNlbnRhZ2UgPSAwOwpAQCAtMTYxMywzMCArMTY2NiwzNyBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlR1NUUGxheUJpbigpCiAgICAgZ3N0X29iamVjdF91
bnJlZihHU1RfT0JKRUNUKHNyY1BhZCkpOwogICAgIGdzdF9vYmplY3RfdW5yZWYoR1NUX09CSkVD
VChzaW5rUGFkKSk7CiAKLSAgICBXVEZMb2dDaGFubmVsKiBjaGFubmVsID0gZ2V0Q2hhbm5lbEZy
b21OYW1lKCJNZWRpYSIpOwotICAgIGlmIChjaGFubmVsLT5zdGF0ZSA9PSBXVEZMb2dDaGFubmVs
T24pIHsKLSAgICAgICAgbV9mcHNTaW5rID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJmcHNk
aXNwbGF5c2luayIsICJzaW5rIik7Ci0gICAgICAgIGlmIChnX29iamVjdF9jbGFzc19maW5kX3By
b3BlcnR5KEdfT0JKRUNUX0dFVF9DTEFTUyhtX2Zwc1NpbmspLCAidmlkZW8tc2luayIpKSB7Ci0g
ICAgICAgICAgICBnX29iamVjdF9zZXQobV9mcHNTaW5rLCAidmlkZW8tc2luayIsIG1fd2Via2l0
VmlkZW9TaW5rLCBOVUxMKTsKLSAgICAgICAgICAgIGdzdF9iaW5fYWRkKEdTVF9CSU4obV92aWRl
b1NpbmtCaW4pLCBtX2Zwc1NpbmspOworICAgIG1fZnBzU2luayA9IGdzdF9lbGVtZW50X2ZhY3Rv
cnlfbWFrZSgiZnBzZGlzcGxheXNpbmsiLCAic2luayIpOworCisgICAgaWYgKG1fZnBzU2luaykg
eworICAgICAgICAvLyBUaGUgdmVyYm9zZSBwcm9wZXJ0eSBoYXMgYmVlbiBhZGRlZCBpbiAtYmFk
IDAuMTAuMjIuIE1ha2luZworICAgICAgICAvLyB0aGlzIHdob2xlIGNvZGUgZGVwZW5kIG9uIGl0
IGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudAorICAgICAgICAvLyBmcHNkaXBsYXlzaW5rIHRvIHNwaXQg
ZGF0YSBvbiBzdGRvdXQuCisgICAgICAgIEdzdEVsZW1lbnRGYWN0b3J5KiBmYWN0b3J5ID0gR1NU
X0VMRU1FTlRfRkFDVE9SWShHU1RfRUxFTUVOVF9HRVRfQ0xBU1MobV9mcHNTaW5rKS0+ZWxlbWVu
dGZhY3RvcnkpOworICAgICAgICBpZiAoZ3N0X3BsdWdpbl9mZWF0dXJlX2NoZWNrX3ZlcnNpb24o
R1NUX1BMVUdJTl9GRUFUVVJFKGZhY3RvcnkpLCAwLCAxMCwgMjIpKSB7CisgICAgICAgICAgICBn
X29iamVjdF9zZXQobV9mcHNTaW5rLCAidmVyYm9zZSIsIEZBTFNFICwgTlVMTCk7CisKKyAgICAg
ICAgICAgIC8vIHR1cm4gb2ZmIHRleHQgb3ZlcmxheSB1bmxlc3MgbG9nZ2luZyBpcyBlbmFibGVk
LgorICAgICAgICAgICAgV1RGTG9nQ2hhbm5lbCogY2hhbm5lbCA9IGdldENoYW5uZWxGcm9tTmFt
ZSgiTWVkaWEiKTsKKyAgICAgICAgICAgIGlmIChjaGFubmVsLT5zdGF0ZSAhPSBXVEZMb2dDaGFu
bmVsT24pCisgICAgICAgICAgICAgICAgZ19vYmplY3Rfc2V0KG1fZnBzU2luaywgInRleHQtb3Zl
cmxheSIsIEZBTFNFICwgTlVMTCk7CisKKyAgICAgICAgICAgIGlmIChnX29iamVjdF9jbGFzc19m
aW5kX3Byb3BlcnR5KEdfT0JKRUNUX0dFVF9DTEFTUyhtX2Zwc1NpbmspLCAidmlkZW8tc2luayIp
KSB7CisgICAgICAgICAgICAgICAgZ19vYmplY3Rfc2V0KG1fZnBzU2luaywgInZpZGVvLXNpbmsi
LCBtX3dlYmtpdFZpZGVvU2luaywgTlVMTCk7CisgICAgICAgICAgICAgICAgZ3N0X2Jpbl9hZGQo
R1NUX0JJTihtX3ZpZGVvU2lua0JpbiksIG1fZnBzU2luayk7CiAjaWYgR1NUX0NIRUNLX1ZFUlNJ
T04oMCwgMTAsIDMwKQotICAgICAgICAgICAgLy8gRmFzdGVyIGVsZW1lbnRzIGxpbmtpbmcsIGlm
IHBvc3NpYmxlLgotICAgICAgICAgICAgZ3N0X2VsZW1lbnRfbGlua19wYWRzX2Z1bGwocXVldWUs
ICJzcmMiLCBtX2Zwc1NpbmssICJzaW5rIiwgR1NUX1BBRF9MSU5LX0NIRUNLX05PVEhJTkcpOwor
ICAgICAgICAgICAgICAgIC8vIEZhc3RlciBlbGVtZW50cyBsaW5raW5nLCBpZiBwb3NzaWJsZS4K
KyAgICAgICAgICAgICAgICBnc3RfZWxlbWVudF9saW5rX3BhZHNfZnVsbChxdWV1ZSwgInNyYyIs
IG1fZnBzU2luaywgInNpbmsiLCBHU1RfUEFEX0xJTktfQ0hFQ0tfTk9USElORyk7CiAjZWxzZQot
ICAgICAgICAgICAgZ3N0X2VsZW1lbnRfbGluayhxdWV1ZSwgbV9mcHNTaW5rKTsKKyAgICAgICAg
ICAgICAgICBnc3RfZWxlbWVudF9saW5rKHF1ZXVlLCBtX2Zwc1NpbmspOwogI2VuZGlmCi0gICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBtX2Zwc1Np
bmsgPSAwOworICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG1fZnBzU2luayA9IDA7Ci0gICAg
ICAgICAgICBnc3RfYmluX2FkZChHU1RfQklOKG1fdmlkZW9TaW5rQmluKSwgbV93ZWJraXRWaWRl
b1NpbmspOwotI2lmIEdTVF9DSEVDS19WRVJTSU9OKDAsIDEwLCAzMCkKLSAgICAgICAgICAgIC8v
IEZhc3RlciBlbGVtZW50cyBsaW5raW5nLCBpZiBwb3NzaWJsZS4KLSAgICAgICAgICAgIGdzdF9l
bGVtZW50X2xpbmtfcGFkc19mdWxsKHF1ZXVlLCAic3JjIiwgbV93ZWJraXRWaWRlb1NpbmssICJz
aW5rIiwgR1NUX1BBRF9MSU5LX0NIRUNLX05PVEhJTkcpOwotI2Vsc2UKLSAgICAgICAgICAgIGdz
dF9lbGVtZW50X2xpbmsocXVldWUsIG1fd2Via2l0VmlkZW9TaW5rKTsKLSNlbmRpZgotICAgICAg
ICAgICAgTE9HX1ZFUkJPU0UoTWVkaWEsICJDYW4ndCBkaXNwbGF5IEZQUyBzdGF0aXN0aWNzLCB5
b3UgbmVlZCBnc3QtcGx1Z2lucy1iYWQgPj0gMC4xMC4xOCIpOwotICAgICAgICB9Ci0gICAgfSBl
bHNlIHsKKyAgICB9CisKKyAgICBpZiAoIW1fZnBzU2luaykgewogICAgICAgICBnc3RfYmluX2Fk
ZChHU1RfQklOKG1fdmlkZW9TaW5rQmluKSwgbV93ZWJraXRWaWRlb1NpbmspOwogI2lmIEdTVF9D
SEVDS19WRVJTSU9OKDAsIDEwLCAzMCkKICAgICAgICAgLy8gRmFzdGVyIGVsZW1lbnRzIGxpbmtp
bmcsIGlmIHBvc3NpYmxlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5oCmluZGV4IDgwMDM4ODcuLjY4MGU4MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTEzNSw2ICsxMzUsMTEgQEAgY2xhc3MgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFj
ZSB7CiAgICAgICAgICAgICB2b2lkIG5vdGlmeVBsYXllck9mVmlkZW9UYWdzKCk7CiAgICAgICAg
ICAgICB2b2lkIG5vdGlmeVBsYXllck9mQXVkaW9UYWdzKCk7CiAKKyAgICAgICAgICAgIHVuc2ln
bmVkIGRlY29kZWRGcmFtZUNvdW50KCkgY29uc3Q7CisgICAgICAgICAgICB1bnNpZ25lZCBkcm9w
cGVkRnJhbWVDb3VudCgpIGNvbnN0OworICAgICAgICAgICAgdW5zaWduZWQgYXVkaW9EZWNvZGVk
Qnl0ZUNvdW50KCkgY29uc3Q7CisgICAgICAgICAgICB1bnNpZ25lZCB2aWRlb0RlY29kZWRCeXRl
Q291bnQoKSBjb25zdDsKKwogICAgICAgICBwcml2YXRlOgogICAgICAgICAgICAgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyKE1lZGlhUGxheWVyKik7CiAgICAgICAgICAgICB+TWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyKCk7CkBAIC0xNDUsNiArMTUwLDggQEAgY2xhc3MgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSB7
CiAgICAgICAgICAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5
cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcyk7CiAgICAgICAgICAg
ICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOwogCisgICAgICAgICAgICB2b2lkIHVwZGF0ZUF1
ZGlvU2luaygpOworCiAgICAgICAgICAgICB2b2lkIGNhY2hlRHVyYXRpb24oKTsKICAgICAgICAg
ICAgIHZvaWQgdXBkYXRlU3RhdGVzKCk7CiAgICAgICAgICAgICBmbG9hdCBtYXhUaW1lTG9hZGVk
KCkgY29uc3Q7CkBAIC0xOTMsNiArMjAwLDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSB7CiAgICAgICAgICAg
ICBib29sIG1faGFzQXVkaW87CiAgICAgICAgICAgICBndWludCBtX2F1ZGlvVGFnc1RpbWVySGFu
ZGxlcjsKICAgICAgICAgICAgIGd1aW50IG1fdmlkZW9UYWdzVGltZXJIYW5kbGVyOworICAgICAg
ICAgICAgR3N0RWxlbWVudCogbV93ZWJraXRBdWRpb1Npbms7CiAgICAgfTsKIH0KIAotLSAKMS43
LjQuMQ==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88623</attachid>
            <date>2011-04-07 06:51:14 -0700</date>
            <delta_ts>2011-04-11 02:20:28 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>proposed-patch.patch</filename>
            <type>text/plain</type>
            <size>11546</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA4YmY1Nzc3YWRiOWEwNDZlM2QwY2E2MzIzMDE2NTIyYjg2MGViMDM0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUaHUsIDcgQXByIDIwMTEgMTU6NDY6MDMgKzAyMDAKU3ViamVjdDogW1BBVENIXSBw
cm9wb3NlZCBwYXRjaAoKLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgMjEgKysrKwogU291cmNlL1dlYkNvcmUvbWFudWFsLXRlc3RzL3Zp
ZGVvLXN0YXRpc3RpY3MuaHRtbCAgfCAgIDc5ICsrKysrKysrKysrKysrKwogLi4uL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwICAgICAgfCAgMTAwICsrKysrKysrKysr
KysrKystLS0tCiAuLi4vZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oICAg
ICAgICB8ICAgIDggKysKIDQgZmlsZXMgY2hhbmdlZCwgMTg4IGluc2VydGlvbnMoKyksIDIwIGRl
bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL21hbnVhbC10ZXN0
cy92aWRlby1zdGF0aXN0aWNzLmh0bWwKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmIxZWE3Zi4uYjQyZWEyZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDExLTA0LTA3ICBQaGlsaXBwZSBOb3JtYW5k
ICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBbR1N0cmVhbWVyXSByZXBvcnQgcGxheWJhY2sgc3RhdGlzdGljcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTgwMzMKKwor
ICAgICAgICBQcm92aWRlIG1lZGlhIHBsYXliYWNrIHN0YXRpc3RpY3MgdXNpbmcgZnBzZGlzcGxh
eXNpbmsgYW5kCisgICAgICAgIHBvc2l0aW9uIHF1ZXJpZXMuCisKKyAgICAgICAgKiBtYW51YWwt
dGVzdHMvdmlkZW8tc3RhdGlzdGljcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZGVjb2RlZEZyYW1lQ291
bnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkcm9w
cGVkRnJhbWVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OmF1ZGlvRGVjb2RlZEJ5dGVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OnZpZGVvRGVjb2RlZEJ5dGVDb3VudCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZUF1ZGlvU2luayk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZVN0YXRl
cyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0
ZUdTVFBsYXlCaW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuaDoKKwogMjAxMS0wNC0wNyAgUGF2ZWwgUG9kaXZpbG92
ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBG
ZWxkbWFuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWFudWFsLXRlc3RzL3ZpZGVvLXN0
YXRpc3RpY3MuaHRtbCBiL1NvdXJjZS9XZWJDb3JlL21hbnVhbC10ZXN0cy92aWRlby1zdGF0aXN0
aWNzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWQ5YjEyOAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hbnVhbC10ZXN0cy92aWRlby1zdGF0aXN0
aWNzLmh0bWwKQEAgLTAsMCArMSw3OSBAQAorPGh0bWw+Cis8aGVhZD48dGl0bGU+V2ViS2l0IHZp
ZGVvIHBsYXliYWNrIHN0YXRpc3RpY3M8L3RpdGxlPjwvaGVhZD4KKzxib2R5PgorPCEtLSBpbnNw
aXJlZCBieSAtLQorICAtLSBodHRwOi8vcGVvcGxlLm1vemlsbGEub3JnL35jcGVhcmNlL3BhaW50
LXN0YXRzLWRlbW8uaHRtbCAtLT4KKzx2aWRlbyBzcmM9Imh0dHA6Ly9tb3ZpZXMuYXBwbGUuY29t
L21vdmllcy91cy9hcHBsZS9pcG9kaXR1bmVzLzIwMDcvdG91Y2gvYWRzL2FwcGxlX2lwb2R0b3Vj
aF90b3VjaF9yNjQwLTljaWUubW92IiBpZD0idiIgY29udHJvbHMgYXV0b3BsYXk+PC92aWRlbz4K
KzxkaXYgaWQ9ImxvZyI+CisgICAgQXVkaW8gYnl0ZXMgZGVjb2RlZDogMCBhdmVyYWdlIHAvczog
MDxicj4KKyAgICBWaWRlbyBieXRlcyBkZWNvZGVkOiAwIGF2ZXJhZ2UgcC9zOiAwPGJyPgorICAg
IERlY29kZWQgZnJhbWVzOiAwIGF2ZXJhZ2UgcC9zOiAwPGJyPgorICAgIERyb3BwZWQgZnJhbWVz
OiAwIGF2ZXJhZ2UgcC9zOiAwPGJyPgorPC9kaXY+Cis8c2NyaXB0PgorCit2YXIgZGVjb2RlZEZy
YW1lcyA9IDA7Cit2YXIgZGVjb2RlZFBlclNlYyA9IDA7Cit2YXIgYXVkaW9CeXRlc0RlY29kZWQg
PSAwOwordmFyIGF1ZGlvQnl0ZXNEZWNvZGVkUGVyU2VjID0gMDsKK3ZhciB2aWRlb0J5dGVzRGVj
b2RlZCA9IDA7Cit2YXIgdmlkZW9CeXRlc0RlY29kZWRQZXJTZWMgPSAwOwordmFyIGRyb3BwZWRG
cmFtZXMgPSAwOwordmFyIGRyb3BwZWRGcmFtZXNQZXJTZWMgPSAwOworCitmdW5jdGlvbiBNZWFu
KCkgeworICB0aGlzLmNvdW50ID0gMDsKKyAgdGhpcy5zdW0gPSAwOworICAKKyAgdGhpcy5yZWNv
cmQgPSBmdW5jdGlvbih2YWwpIHsKKyAgICB0aGlzLmNvdW50Kys7CisgICAgdGhpcy5zdW0gKz0g
dmFsOworICB9OworICAKKyAgdGhpcy5tZWFuID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHRo
aXMuY291bnQgPyAodGhpcy5zdW0gLyB0aGlzLmNvdW50KS50b0ZpeGVkKDMpIDogMDsKKyAgfTsK
K30KKworCit2YXIgZGVjb2RlZE1lYW4gPSBuZXcgTWVhbigpOwordmFyIGF1ZGlvTWVhbiA9IG5l
dyBNZWFuKCk7Cit2YXIgdmlkZW9NZWFuID0gbmV3IE1lYW4oKTsKK3ZhciBkcm9wTWVhbiA9IG5l
dyBNZWFuKCk7CisKK2Z1bmN0aW9uIHJlY2FsY1JhdGVzKCkgeworICB2YXIgdiA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ2Iik7CisKKyAgaWYgKHYucmVhZHlTdGF0ZSA8PSBIVE1MTWVkaWFF
bGVtZW50LkhBVkVfQ1VSUkVOVF9EQVRBIHx8IHYucGF1c2VkKSB7CisgICAgcmV0dXJuOworICB9
CisKKyAgZGVjb2RlZFBlclNlYyA9ICh2LndlYmtpdERlY29kZWRGcmFtZUNvdW50IC0gZGVjb2Rl
ZEZyYW1lcyk7CisgIGRlY29kZWRGcmFtZXMgPSB2LndlYmtpdERlY29kZWRGcmFtZUNvdW50Owor
CisgIGF1ZGlvQnl0ZXNEZWNvZGVkUGVyU2VjID0gdi53ZWJraXRBdWRpb0RlY29kZWRCeXRlQ291
bnQgLSBhdWRpb0J5dGVzRGVjb2RlZDsKKyAgYXVkaW9CeXRlc0RlY29kZWQgPSB2LndlYmtpdEF1
ZGlvRGVjb2RlZEJ5dGVDb3VudDsKKworICB2aWRlb0J5dGVzRGVjb2RlZFBlclNlYyA9IHYud2Vi
a2l0VmlkZW9EZWNvZGVkQnl0ZUNvdW50IC0gdmlkZW9CeXRlc0RlY29kZWQ7CisgIHZpZGVvQnl0
ZXNEZWNvZGVkID0gdi53ZWJraXRWaWRlb0RlY29kZWRCeXRlQ291bnQ7CisKKyAgZHJvcHBlZEZy
YW1lc1BlclNlYyA9IHYud2Via2l0RHJvcHBlZEZyYW1lQ291bnQgLSBkcm9wcGVkRnJhbWVzOwor
ICBkcm9wcGVkRnJhbWVzID0gdi53ZWJraXREcm9wcGVkRnJhbWVDb3VudDsKKworICBkZWNvZGVk
TWVhbi5yZWNvcmQoZGVjb2RlZFBlclNlYyk7CisgIGF1ZGlvTWVhbi5yZWNvcmQoYXVkaW9CeXRl
c0RlY29kZWRQZXJTZWMpOworICB2aWRlb01lYW4ucmVjb3JkKHZpZGVvQnl0ZXNEZWNvZGVkUGVy
U2VjKTsKKyAgZHJvcE1lYW4ucmVjb3JkKGRyb3BwZWRGcmFtZXNQZXJTZWMpOworICAKKyAgdmFy
IGQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIik7CisgIGQuaW5uZXJIVE1MID0KKyAg
ICAgICAgIkF1ZGlvIGJ5dGVzIGRlY29kZWQ6ICIgKyB2LndlYmtpdEF1ZGlvRGVjb2RlZEJ5dGVD
b3VudCArICIgYXZlcmFnZSBwL3M6ICIgKyBhdWRpb01lYW4ubWVhbigpICsgIjxicj4iICsKKyAg
ICAgICAgIlZpZGVvIGJ5dGVzIGRlY29kZWQ6ICIgKyB2LndlYmtpdFZpZGVvRGVjb2RlZEJ5dGVD
b3VudCArICIgYXZlcmFnZSBwL3M6ICIgKyB2aWRlb01lYW4ubWVhbigpICsgIjxicj4iICsKKyAg
ICAgICAgIkRlY29kZWQgZnJhbWVzOiAiICsgdi53ZWJraXREZWNvZGVkRnJhbWVDb3VudCArICIg
YXZlcmFnZSBwL3M6ICIgKyBkZWNvZGVkTWVhbi5tZWFuKCkgKyAiPGJyPiIgKworICAgICAgICAi
RHJvcHBlZCBmcmFtZXM6ICIgKyB2LndlYmtpdERyb3BwZWRGcmFtZUNvdW50ICsgIiBhdmVyYWdl
IHAvczogIiArIGRyb3BNZWFuLm1lYW4oKSArICI8YnI+IjsKK30KKworc2V0SW50ZXJ2YWwocmVj
YWxjUmF0ZXMsIDEwMDApOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDJmYjRjZWYuLmRj
N2FlYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
Y3BwCkBAIC05NTIsNiArOTUyLDU3IEBAIHVuc2lnbmVkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6dG90YWxCeXRlcygpIGNvbnN0CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihsZW5ndGgpOwogfQogCit1bnNpZ25lZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmRl
Y29kZWRGcmFtZUNvdW50KCkgY29uc3QKK3sKKyAgICBndWludDY0IGRlY29kZWRGcmFtZXMgPSAw
OworICAgIGlmIChtX2Zwc1NpbmspCisgICAgICAgIGdfb2JqZWN0X2dldChtX2Zwc1NpbmssICJm
cmFtZXMtcmVuZGVyZWQiLCAmZGVjb2RlZEZyYW1lcywgTlVMTCk7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihkZWNvZGVkRnJhbWVzKTsKK30KKwordW5zaWduZWQgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpkcm9wcGVkRnJhbWVDb3VudCgpIGNvbnN0Cit7CisgICAgZ3Vp
bnQ2NCBmcmFtZXNEcm9wcGVkID0gMDsKKyAgICBpZiAobV9mcHNTaW5rKQorICAgICAgICBnX29i
amVjdF9nZXQobV9mcHNTaW5rLCAiZnJhbWVzLWRyb3BwZWQiLCAmZnJhbWVzRHJvcHBlZCwgTlVM
TCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihmcmFtZXNEcm9wcGVkKTsKK30K
KwordW5zaWduZWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjphdWRpb0RlY29kZWRCeXRl
Q291bnQoKSBjb25zdAoreworICAgIEdzdFF1ZXJ5KiBxdWVyeSA9IGdzdF9xdWVyeV9uZXdfcG9z
aXRpb24oR1NUX0ZPUk1BVF9CWVRFUyk7CisgICAgZ2ludDY0IHBvc2l0aW9uID0gMDsKKworICAg
IGlmIChtX3dlYmtpdEF1ZGlvU2luayAmJiBnc3RfZWxlbWVudF9xdWVyeShtX3dlYmtpdEF1ZGlv
U2luaywgcXVlcnkpKQorICAgICAgICBnc3RfcXVlcnlfcGFyc2VfcG9zaXRpb24ocXVlcnksIDAs
ICZwb3NpdGlvbik7CisKKyAgICBnc3RfcXVlcnlfdW5yZWYocXVlcnkpOworICAgIHJldHVybiBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4ocG9zaXRpb24pOworfQorCit1bnNpZ25lZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OnZpZGVvRGVjb2RlZEJ5dGVDb3VudCgpIGNvbnN0Cit7CisgICAg
R3N0UXVlcnkqIHF1ZXJ5ID0gZ3N0X3F1ZXJ5X25ld19wb3NpdGlvbihHU1RfRk9STUFUX0JZVEVT
KTsKKyAgICBnaW50NjQgcG9zaXRpb24gPSAwOworCisgICAgaWYgKGdzdF9lbGVtZW50X3F1ZXJ5
KG1fd2Via2l0VmlkZW9TaW5rLCBxdWVyeSkpCisgICAgICAgIGdzdF9xdWVyeV9wYXJzZV9wb3Np
dGlvbihxdWVyeSwgMCwgJnBvc2l0aW9uKTsKKworICAgIGdzdF9xdWVyeV91bnJlZihxdWVyeSk7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihwb3NpdGlvbik7Cit9CisKK3ZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVBdWRpb1NpbmsoKQoreworICAgIGlm
ICghbV9wbGF5QmluKQorICAgICAgICByZXR1cm47CisKKyAgICBHT3duUHRyPEdzdEVsZW1lbnQ+
IGVsZW1lbnQ7CisKKyAgICBnX29iamVjdF9nZXQobV9wbGF5QmluLCAiYXVkaW8tc2luayIsICZl
bGVtZW50Lm91dFB0cigpLCBOVUxMKTsKKyAgICBnc3Rfb2JqZWN0X3JlcGxhY2UoKEdzdE9iamVj
dCoqKSAmbV93ZWJraXRBdWRpb1NpbmssIChHc3RPYmplY3QqKSBlbGVtZW50LmdldCgpKTsKK30K
Kwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNhbmNlbExvYWQoKQogewogICAg
IGlmIChtX25ldHdvcmtTdGF0ZSA8IE1lZGlhUGxheWVyOjpMb2FkaW5nIHx8IG1fbmV0d29ya1N0
YXRlID09IE1lZGlhUGxheWVyOjpMb2FkZWQpCkBAIC0xMDExLDYgKzEwNjIsOCBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRlU3RhdGVzKCkKICAgICAgICAgLy8gaW5m
b3JtYXRpb24gZnJvbSBHU3RyZWFtZXIsIHdoaWxlIHdlIHN5bmMgc3RhdGVzIHdoZXJlCiAgICAg
ICAgIC8vIG5lZWRlZC4KICAgICAgICAgaWYgKHN0YXRlID09IEdTVF9TVEFURV9QQVVTRUQpIHsK
KyAgICAgICAgICAgIGlmICghbV93ZWJraXRBdWRpb1NpbmspCisgICAgICAgICAgICAgICAgdXBk
YXRlQXVkaW9TaW5rKCk7CiAgICAgICAgICAgICBpZiAobV9idWZmZXJpbmcgJiYgbV9idWZmZXJp
bmdQZXJjZW50YWdlID09IDEwMCkgewogICAgICAgICAgICAgICAgIG1fYnVmZmVyaW5nID0gZmFs
c2U7CiAgICAgICAgICAgICAgICAgbV9idWZmZXJpbmdQZXJjZW50YWdlID0gMDsKQEAgLTE2MTMs
MzAgKzE2NjYsMzcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUdT
VFBsYXlCaW4oKQogICAgIGdzdF9vYmplY3RfdW5yZWYoR1NUX09CSkVDVChzcmNQYWQpKTsKICAg
ICBnc3Rfb2JqZWN0X3VucmVmKEdTVF9PQkpFQ1Qoc2lua1BhZCkpOwogCi0gICAgV1RGTG9nQ2hh
bm5lbCogY2hhbm5lbCA9IGdldENoYW5uZWxGcm9tTmFtZSgiTWVkaWEiKTsKLSAgICBpZiAoY2hh
bm5lbC0+c3RhdGUgPT0gV1RGTG9nQ2hhbm5lbE9uKSB7Ci0gICAgICAgIG1fZnBzU2luayA9IGdz
dF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiZnBzZGlzcGxheXNpbmsiLCAic2luayIpOwotICAgICAg
ICBpZiAoZ19vYmplY3RfY2xhc3NfZmluZF9wcm9wZXJ0eShHX09CSkVDVF9HRVRfQ0xBU1MobV9m
cHNTaW5rKSwgInZpZGVvLXNpbmsiKSkgewotICAgICAgICAgICAgZ19vYmplY3Rfc2V0KG1fZnBz
U2luaywgInZpZGVvLXNpbmsiLCBtX3dlYmtpdFZpZGVvU2luaywgTlVMTCk7Ci0gICAgICAgICAg
ICBnc3RfYmluX2FkZChHU1RfQklOKG1fdmlkZW9TaW5rQmluKSwgbV9mcHNTaW5rKTsKKyAgICBt
X2Zwc1NpbmsgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImZwc2Rpc3BsYXlzaW5rIiwgInNp
bmsiKTsKKworICAgIGlmIChtX2Zwc1NpbmspIHsKKyAgICAgICAgLy8gVGhlIHZlcmJvc2UgcHJv
cGVydHkgaGFzIGJlZW4gYWRkZWQgaW4gLWJhZCAwLjEwLjIyLiBNYWtpbmcKKyAgICAgICAgLy8g
dGhpcyB3aG9sZSBjb2RlIGRlcGVuZCBvbiBpdCBiZWNhdXNlIHdlIGRvbid0IHdhbnQKKyAgICAg
ICAgLy8gZnBzZGlwbGF5c2luayB0byBzcGl0IGRhdGEgb24gc3Rkb3V0LgorICAgICAgICBHc3RF
bGVtZW50RmFjdG9yeSogZmFjdG9yeSA9IEdTVF9FTEVNRU5UX0ZBQ1RPUlkoR1NUX0VMRU1FTlRf
R0VUX0NMQVNTKG1fZnBzU2luayktPmVsZW1lbnRmYWN0b3J5KTsKKyAgICAgICAgaWYgKGdzdF9w
bHVnaW5fZmVhdHVyZV9jaGVja192ZXJzaW9uKEdTVF9QTFVHSU5fRkVBVFVSRShmYWN0b3J5KSwg
MCwgMTAsIDIyKSkgeworICAgICAgICAgICAgZ19vYmplY3Rfc2V0KG1fZnBzU2luaywgInZlcmJv
c2UiLCBGQUxTRSAsIE5VTEwpOworCisgICAgICAgICAgICAvLyB0dXJuIG9mZiB0ZXh0IG92ZXJs
YXkgdW5sZXNzIGxvZ2dpbmcgaXMgZW5hYmxlZC4KKyAgICAgICAgICAgIFdURkxvZ0NoYW5uZWwq
IGNoYW5uZWwgPSBnZXRDaGFubmVsRnJvbU5hbWUoIk1lZGlhIik7CisgICAgICAgICAgICBpZiAo
Y2hhbm5lbC0+c3RhdGUgIT0gV1RGTG9nQ2hhbm5lbE9uKQorICAgICAgICAgICAgICAgIGdfb2Jq
ZWN0X3NldChtX2Zwc1NpbmssICJ0ZXh0LW92ZXJsYXkiLCBGQUxTRSAsIE5VTEwpOworCisgICAg
ICAgICAgICBpZiAoZ19vYmplY3RfY2xhc3NfZmluZF9wcm9wZXJ0eShHX09CSkVDVF9HRVRfQ0xB
U1MobV9mcHNTaW5rKSwgInZpZGVvLXNpbmsiKSkgeworICAgICAgICAgICAgICAgIGdfb2JqZWN0
X3NldChtX2Zwc1NpbmssICJ2aWRlby1zaW5rIiwgbV93ZWJraXRWaWRlb1NpbmssIE5VTEwpOwor
ICAgICAgICAgICAgICAgIGdzdF9iaW5fYWRkKEdTVF9CSU4obV92aWRlb1NpbmtCaW4pLCBtX2Zw
c1NpbmspOwogI2lmIEdTVF9DSEVDS19WRVJTSU9OKDAsIDEwLCAzMCkKLSAgICAgICAgICAgIC8v
IEZhc3RlciBlbGVtZW50cyBsaW5raW5nLCBpZiBwb3NzaWJsZS4KLSAgICAgICAgICAgIGdzdF9l
bGVtZW50X2xpbmtfcGFkc19mdWxsKHF1ZXVlLCAic3JjIiwgbV9mcHNTaW5rLCAic2luayIsIEdT
VF9QQURfTElOS19DSEVDS19OT1RISU5HKTsKKyAgICAgICAgICAgICAgICAvLyBGYXN0ZXIgZWxl
bWVudHMgbGlua2luZywgaWYgcG9zc2libGUuCisgICAgICAgICAgICAgICAgZ3N0X2VsZW1lbnRf
bGlua19wYWRzX2Z1bGwocXVldWUsICJzcmMiLCBtX2Zwc1NpbmssICJzaW5rIiwgR1NUX1BBRF9M
SU5LX0NIRUNLX05PVEhJTkcpOwogI2Vsc2UKLSAgICAgICAgICAgIGdzdF9lbGVtZW50X2xpbmso
cXVldWUsIG1fZnBzU2luayk7CisgICAgICAgICAgICAgICAgZ3N0X2VsZW1lbnRfbGluayhxdWV1
ZSwgbV9mcHNTaW5rKTsKICNlbmRpZgotICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICAgICAgbV9mcHNTaW5rID0gMDsKKyAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICBtX2Zwc1NpbmsgPSAwOwotICAgICAgICAgICAgZ3N0X2Jpbl9hZGQoR1NUX0JJTiht
X3ZpZGVvU2lua0JpbiksIG1fd2Via2l0VmlkZW9TaW5rKTsKLSNpZiBHU1RfQ0hFQ0tfVkVSU0lP
TigwLCAxMCwgMzApCi0gICAgICAgICAgICAvLyBGYXN0ZXIgZWxlbWVudHMgbGlua2luZywgaWYg
cG9zc2libGUuCi0gICAgICAgICAgICBnc3RfZWxlbWVudF9saW5rX3BhZHNfZnVsbChxdWV1ZSwg
InNyYyIsIG1fd2Via2l0VmlkZW9TaW5rLCAic2luayIsIEdTVF9QQURfTElOS19DSEVDS19OT1RI
SU5HKTsKLSNlbHNlCi0gICAgICAgICAgICBnc3RfZWxlbWVudF9saW5rKHF1ZXVlLCBtX3dlYmtp
dFZpZGVvU2luayk7Ci0jZW5kaWYKLSAgICAgICAgICAgIExPR19WRVJCT1NFKE1lZGlhLCAiQ2Fu
J3QgZGlzcGxheSBGUFMgc3RhdGlzdGljcywgeW91IG5lZWQgZ3N0LXBsdWdpbnMtYmFkID49IDAu
MTAuMTgiKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7CisgICAgfQorCisgICAgaWYgKCFtX2Zw
c1NpbmspIHsKICAgICAgICAgZ3N0X2Jpbl9hZGQoR1NUX0JJTihtX3ZpZGVvU2lua0JpbiksIG1f
d2Via2l0VmlkZW9TaW5rKTsKICNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigwLCAxMCwgMzApCiAgICAg
ICAgIC8vIEZhc3RlciBlbGVtZW50cyBsaW5raW5nLCBpZiBwb3NzaWJsZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAppbmRleCA4MDAzODg3Li42ODBlODE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC0x
MzUsNiArMTM1LDExIEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciA6IHB1Ymxp
YyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UgewogICAgICAgICAgICAgdm9pZCBub3RpZnlQ
bGF5ZXJPZlZpZGVvVGFncygpOwogICAgICAgICAgICAgdm9pZCBub3RpZnlQbGF5ZXJPZkF1ZGlv
VGFncygpOwogCisgICAgICAgICAgICB1bnNpZ25lZCBkZWNvZGVkRnJhbWVDb3VudCgpIGNvbnN0
OworICAgICAgICAgICAgdW5zaWduZWQgZHJvcHBlZEZyYW1lQ291bnQoKSBjb25zdDsKKyAgICAg
ICAgICAgIHVuc2lnbmVkIGF1ZGlvRGVjb2RlZEJ5dGVDb3VudCgpIGNvbnN0OworICAgICAgICAg
ICAgdW5zaWduZWQgdmlkZW9EZWNvZGVkQnl0ZUNvdW50KCkgY29uc3Q7CisKICAgICAgICAgcHJp
dmF0ZToKICAgICAgICAgICAgIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcihNZWRpYVBsYXll
ciopOwogICAgICAgICAgICAgfk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcigpOwpAQCAtMTQ1
LDYgKzE1MCw4IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciA6IHB1YmxpYyBN
ZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UgewogICAgICAgICAgICAgc3RhdGljIE1lZGlhUGxh
eWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qg
U3RyaW5nJiBjb2RlY3MpOwogICAgICAgICAgICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsK
IAorICAgICAgICAgICAgdm9pZCB1cGRhdGVBdWRpb1NpbmsoKTsKKwogICAgICAgICAgICAgdm9p
ZCBjYWNoZUR1cmF0aW9uKCk7CiAgICAgICAgICAgICB2b2lkIHVwZGF0ZVN0YXRlcygpOwogICAg
ICAgICAgICAgZmxvYXQgbWF4VGltZUxvYWRlZCgpIGNvbnN0OwpAQCAtMTkzLDYgKzIwMCw3IEBA
IGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciA6IHB1YmxpYyBNZWRpYVBsYXllclBy
aXZhdGVJbnRlcmZhY2UgewogICAgICAgICAgICAgYm9vbCBtX2hhc0F1ZGlvOwogICAgICAgICAg
ICAgZ3VpbnQgbV9hdWRpb1RhZ3NUaW1lckhhbmRsZXI7CiAgICAgICAgICAgICBndWludCBtX3Zp
ZGVvVGFnc1RpbWVySGFuZGxlcjsKKyAgICAgICAgICAgIEdzdEVsZW1lbnQqIG1fd2Via2l0QXVk
aW9TaW5rOwogICAgIH07CiB9CiAKLS0gCjEuNy40LjE=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88979</attachid>
            <date>2011-04-11 02:20:28 -0700</date>
            <delta_ts>2011-04-11 08:59:29 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>proposed-patch.patch</filename>
            <type>text/plain</type>
            <size>11868</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBjZjJhODA0ZjM2OTU3ZDQwMzRhYmFhOGU3YjRlNmQ0MWJiYzk1NzVlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUaHUsIDcgQXByIDIwMTEgMTU6NDY6MDMgKzAyMDAKU3ViamVjdDogW1BBVENIXSBw
cm9wb3NlZCBwYXRjaAoKLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgMjEgKysrKwogU291cmNlL1dlYkNvcmUvbWFudWFsLXRlc3RzL3Zp
ZGVvLXN0YXRpc3RpY3MuaHRtbCAgfCAgIDc5ICsrKysrKysrKysrKysrKwogLi4uL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwICAgICAgfCAgMTAyICsrKysrKysrKysr
KysrKystLS0tCiAuLi4vZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oICAg
ICAgICB8ICAgIDggKysKIDQgZmlsZXMgY2hhbmdlZCwgMTkwIGluc2VydGlvbnMoKyksIDIwIGRl
bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL21hbnVhbC10ZXN0
cy92aWRlby1zdGF0aXN0aWNzLmh0bWwKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTJmY2E1Yy4uZDExMmU4NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDExLTA0LTA3ICBQaGlsaXBwZSBOb3JtYW5k
ICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBbR1N0cmVhbWVyXSByZXBvcnQgcGxheWJhY2sgc3RhdGlzdGljcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTgwMzMKKwor
ICAgICAgICBQcm92aWRlIG1lZGlhIHBsYXliYWNrIHN0YXRpc3RpY3MgdXNpbmcgZnBzZGlzcGxh
eXNpbmsgYW5kCisgICAgICAgIHBvc2l0aW9uIHF1ZXJpZXMuCisKKyAgICAgICAgKiBtYW51YWwt
dGVzdHMvdmlkZW8tc3RhdGlzdGljcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZGVjb2RlZEZyYW1lQ291
bnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkcm9w
cGVkRnJhbWVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OmF1ZGlvRGVjb2RlZEJ5dGVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OnZpZGVvRGVjb2RlZEJ5dGVDb3VudCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZUF1ZGlvU2luayk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZVN0YXRl
cyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0
ZUdTVFBsYXlCaW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuaDoKKwogMjAxMS0wNC0xMCAgQ2hhbmdTZW9rIE9oICA8
c2hpdmFtaWRvd0BnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYW51YWwtdGVzdHMvdmlkZW8tc3RhdGlzdGlj
cy5odG1sIGIvU291cmNlL1dlYkNvcmUvbWFudWFsLXRlc3RzL3ZpZGVvLXN0YXRpc3RpY3MuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDliMTI4Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbWFudWFsLXRlc3RzL3ZpZGVvLXN0YXRpc3RpY3MuaHRt
bApAQCAtMCwwICsxLDc5IEBACis8aHRtbD4KKzxoZWFkPjx0aXRsZT5XZWJLaXQgdmlkZW8gcGxh
eWJhY2sgc3RhdGlzdGljczwvdGl0bGU+PC9oZWFkPgorPGJvZHk+Cis8IS0tIGluc3BpcmVkIGJ5
IC0tCisgIC0tIGh0dHA6Ly9wZW9wbGUubW96aWxsYS5vcmcvfmNwZWFyY2UvcGFpbnQtc3RhdHMt
ZGVtby5odG1sIC0tPgorPHZpZGVvIHNyYz0iaHR0cDovL21vdmllcy5hcHBsZS5jb20vbW92aWVz
L3VzL2FwcGxlL2lwb2RpdHVuZXMvMjAwNy90b3VjaC9hZHMvYXBwbGVfaXBvZHRvdWNoX3RvdWNo
X3I2NDAtOWNpZS5tb3YiIGlkPSJ2IiBjb250cm9scyBhdXRvcGxheT48L3ZpZGVvPgorPGRpdiBp
ZD0ibG9nIj4KKyAgICBBdWRpbyBieXRlcyBkZWNvZGVkOiAwIGF2ZXJhZ2UgcC9zOiAwPGJyPgor
ICAgIFZpZGVvIGJ5dGVzIGRlY29kZWQ6IDAgYXZlcmFnZSBwL3M6IDA8YnI+CisgICAgRGVjb2Rl
ZCBmcmFtZXM6IDAgYXZlcmFnZSBwL3M6IDA8YnI+CisgICAgRHJvcHBlZCBmcmFtZXM6IDAgYXZl
cmFnZSBwL3M6IDA8YnI+Cis8L2Rpdj4KKzxzY3JpcHQ+CisKK3ZhciBkZWNvZGVkRnJhbWVzID0g
MDsKK3ZhciBkZWNvZGVkUGVyU2VjID0gMDsKK3ZhciBhdWRpb0J5dGVzRGVjb2RlZCA9IDA7Cit2
YXIgYXVkaW9CeXRlc0RlY29kZWRQZXJTZWMgPSAwOwordmFyIHZpZGVvQnl0ZXNEZWNvZGVkID0g
MDsKK3ZhciB2aWRlb0J5dGVzRGVjb2RlZFBlclNlYyA9IDA7Cit2YXIgZHJvcHBlZEZyYW1lcyA9
IDA7Cit2YXIgZHJvcHBlZEZyYW1lc1BlclNlYyA9IDA7CisKK2Z1bmN0aW9uIE1lYW4oKSB7Cisg
IHRoaXMuY291bnQgPSAwOworICB0aGlzLnN1bSA9IDA7CisgIAorICB0aGlzLnJlY29yZCA9IGZ1
bmN0aW9uKHZhbCkgeworICAgIHRoaXMuY291bnQrKzsKKyAgICB0aGlzLnN1bSArPSB2YWw7Cisg
IH07CisgIAorICB0aGlzLm1lYW4gPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gdGhpcy5jb3Vu
dCA/ICh0aGlzLnN1bSAvIHRoaXMuY291bnQpLnRvRml4ZWQoMykgOiAwOworICB9OworfQorCisK
K3ZhciBkZWNvZGVkTWVhbiA9IG5ldyBNZWFuKCk7Cit2YXIgYXVkaW9NZWFuID0gbmV3IE1lYW4o
KTsKK3ZhciB2aWRlb01lYW4gPSBuZXcgTWVhbigpOwordmFyIGRyb3BNZWFuID0gbmV3IE1lYW4o
KTsKKworZnVuY3Rpb24gcmVjYWxjUmF0ZXMoKSB7CisgIHZhciB2ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInYiKTsKKworICBpZiAodi5yZWFkeVN0YXRlIDw9IEhUTUxNZWRpYUVsZW1lbnQu
SEFWRV9DVVJSRU5UX0RBVEEgfHwgdi5wYXVzZWQpIHsKKyAgICByZXR1cm47CisgIH0KKworICBk
ZWNvZGVkUGVyU2VjID0gKHYud2Via2l0RGVjb2RlZEZyYW1lQ291bnQgLSBkZWNvZGVkRnJhbWVz
KTsKKyAgZGVjb2RlZEZyYW1lcyA9IHYud2Via2l0RGVjb2RlZEZyYW1lQ291bnQ7CisKKyAgYXVk
aW9CeXRlc0RlY29kZWRQZXJTZWMgPSB2LndlYmtpdEF1ZGlvRGVjb2RlZEJ5dGVDb3VudCAtIGF1
ZGlvQnl0ZXNEZWNvZGVkOworICBhdWRpb0J5dGVzRGVjb2RlZCA9IHYud2Via2l0QXVkaW9EZWNv
ZGVkQnl0ZUNvdW50OworCisgIHZpZGVvQnl0ZXNEZWNvZGVkUGVyU2VjID0gdi53ZWJraXRWaWRl
b0RlY29kZWRCeXRlQ291bnQgLSB2aWRlb0J5dGVzRGVjb2RlZDsKKyAgdmlkZW9CeXRlc0RlY29k
ZWQgPSB2LndlYmtpdFZpZGVvRGVjb2RlZEJ5dGVDb3VudDsKKworICBkcm9wcGVkRnJhbWVzUGVy
U2VjID0gdi53ZWJraXREcm9wcGVkRnJhbWVDb3VudCAtIGRyb3BwZWRGcmFtZXM7CisgIGRyb3Bw
ZWRGcmFtZXMgPSB2LndlYmtpdERyb3BwZWRGcmFtZUNvdW50OworCisgIGRlY29kZWRNZWFuLnJl
Y29yZChkZWNvZGVkUGVyU2VjKTsKKyAgYXVkaW9NZWFuLnJlY29yZChhdWRpb0J5dGVzRGVjb2Rl
ZFBlclNlYyk7CisgIHZpZGVvTWVhbi5yZWNvcmQodmlkZW9CeXRlc0RlY29kZWRQZXJTZWMpOwor
ICBkcm9wTWVhbi5yZWNvcmQoZHJvcHBlZEZyYW1lc1BlclNlYyk7CisgIAorICB2YXIgZCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKTsKKyAgZC5pbm5lckhUTUwgPQorICAgICAgICAi
QXVkaW8gYnl0ZXMgZGVjb2RlZDogIiArIHYud2Via2l0QXVkaW9EZWNvZGVkQnl0ZUNvdW50ICsg
IiBhdmVyYWdlIHAvczogIiArIGF1ZGlvTWVhbi5tZWFuKCkgKyAiPGJyPiIgKworICAgICAgICAi
VmlkZW8gYnl0ZXMgZGVjb2RlZDogIiArIHYud2Via2l0VmlkZW9EZWNvZGVkQnl0ZUNvdW50ICsg
IiBhdmVyYWdlIHAvczogIiArIHZpZGVvTWVhbi5tZWFuKCkgKyAiPGJyPiIgKworICAgICAgICAi
RGVjb2RlZCBmcmFtZXM6ICIgKyB2LndlYmtpdERlY29kZWRGcmFtZUNvdW50ICsgIiBhdmVyYWdl
IHAvczogIiArIGRlY29kZWRNZWFuLm1lYW4oKSArICI8YnI+IiArCisgICAgICAgICJEcm9wcGVk
IGZyYW1lczogIiArIHYud2Via2l0RHJvcHBlZEZyYW1lQ291bnQgKyAiIGF2ZXJhZ2UgcC9zOiAi
ICsgZHJvcE1lYW4ubWVhbigpICsgIjxicj4iOworfQorCitzZXRJbnRlcnZhbChyZWNhbGNSYXRl
cywgMTAwMCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggMmZiNGNlZi4uNWE2MDZhMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAg
LTM0OSw2ICszNDksNyBAQCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Ok1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcihNZWRpYVBsYXllciogcGxheWVyKQogICAgICwgbV9oYXNBdWRpbyhm
YWxzZSkKICAgICAsIG1fYXVkaW9UYWdzVGltZXJIYW5kbGVyKDApCiAgICAgLCBtX3ZpZGVvVGFn
c1RpbWVySGFuZGxlcigwKQorICAgICwgbV93ZWJraXRBdWRpb1NpbmsoMCkKIHsKICAgICBpZiAo
ZG9Hc3RJbml0KCkpCiAgICAgICAgIGNyZWF0ZUdTVFBsYXlCaW4oKTsKQEAgLTk1Miw2ICs5NTMs
NTggQEAgdW5zaWduZWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp0b3RhbEJ5dGVzKCkg
Y29uc3QKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0aCk7CiB9CiAKK3Vu
c2lnbmVkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZGVjb2RlZEZyYW1lQ291bnQoKSBj
b25zdAoreworICAgIGd1aW50NjQgZGVjb2RlZEZyYW1lcyA9IDA7CisgICAgaWYgKG1fZnBzU2lu
aykKKyAgICAgICAgZ19vYmplY3RfZ2V0KG1fZnBzU2luaywgImZyYW1lcy1yZW5kZXJlZCIsICZk
ZWNvZGVkRnJhbWVzLCBOVUxMKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRl
Y29kZWRGcmFtZXMpOworfQorCit1bnNpZ25lZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmRyb3BwZWRGcmFtZUNvdW50KCkgY29uc3QKK3sKKyAgICBndWludDY0IGZyYW1lc0Ryb3BwZWQg
PSAwOworICAgIGlmIChtX2Zwc1NpbmspCisgICAgICAgIGdfb2JqZWN0X2dldChtX2Zwc1Npbmss
ICJmcmFtZXMtZHJvcHBlZCIsICZmcmFtZXNEcm9wcGVkLCBOVUxMKTsKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGZyYW1lc0Ryb3BwZWQpOworfQorCit1bnNpZ25lZCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OmF1ZGlvRGVjb2RlZEJ5dGVDb3VudCgpIGNvbnN0Cit7Cisg
ICAgR3N0UXVlcnkqIHF1ZXJ5ID0gZ3N0X3F1ZXJ5X25ld19wb3NpdGlvbihHU1RfRk9STUFUX0JZ
VEVTKTsKKyAgICBnaW50NjQgcG9zaXRpb24gPSAwOworCisgICAgaWYgKG1fd2Via2l0QXVkaW9T
aW5rICYmIGdzdF9lbGVtZW50X3F1ZXJ5KG1fd2Via2l0QXVkaW9TaW5rLCBxdWVyeSkpCisgICAg
ICAgIGdzdF9xdWVyeV9wYXJzZV9wb3NpdGlvbihxdWVyeSwgMCwgJnBvc2l0aW9uKTsKKworICAg
IGdzdF9xdWVyeV91bnJlZihxdWVyeSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVk
Pihwb3NpdGlvbik7Cit9CisKK3Vuc2lnbmVkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
dmlkZW9EZWNvZGVkQnl0ZUNvdW50KCkgY29uc3QKK3sKKyAgICBHc3RRdWVyeSogcXVlcnkgPSBn
c3RfcXVlcnlfbmV3X3Bvc2l0aW9uKEdTVF9GT1JNQVRfQllURVMpOworICAgIGdpbnQ2NCBwb3Np
dGlvbiA9IDA7CisKKyAgICBpZiAoZ3N0X2VsZW1lbnRfcXVlcnkobV93ZWJraXRWaWRlb1Npbmss
IHF1ZXJ5KSkKKyAgICAgICAgZ3N0X3F1ZXJ5X3BhcnNlX3Bvc2l0aW9uKHF1ZXJ5LCAwLCAmcG9z
aXRpb24pOworCisgICAgZ3N0X3F1ZXJ5X3VucmVmKHF1ZXJ5KTsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHBvc2l0aW9uKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OnVwZGF0ZUF1ZGlvU2luaygpCit7CisgICAgaWYgKCFtX3BsYXlCaW4pCisgICAg
ICAgIHJldHVybjsKKworICAgIEdPd25QdHI8R3N0RWxlbWVudD4gZWxlbWVudDsKKworICAgIGdf
b2JqZWN0X2dldChtX3BsYXlCaW4sICJhdWRpby1zaW5rIiwgJmVsZW1lbnQub3V0UHRyKCksIE5V
TEwpOworICAgIGdzdF9vYmplY3RfcmVwbGFjZShyZWludGVycHJldF9jYXN0PEdzdE9iamVjdCoq
PigmbV93ZWJraXRBdWRpb1NpbmspLAorICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJl
dF9jYXN0PEdzdE9iamVjdCo+KGVsZW1lbnQuZ2V0KCkpKTsKK30KKwogdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OmNhbmNlbExvYWQoKQogewogICAgIGlmIChtX25ldHdvcmtTdGF0
ZSA8IE1lZGlhUGxheWVyOjpMb2FkaW5nIHx8IG1fbmV0d29ya1N0YXRlID09IE1lZGlhUGxheWVy
OjpMb2FkZWQpCkBAIC0xMDExLDYgKzEwNjQsOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6dXBkYXRlU3RhdGVzKCkKICAgICAgICAgLy8gaW5mb3JtYXRpb24gZnJvbSBHU3Ry
ZWFtZXIsIHdoaWxlIHdlIHN5bmMgc3RhdGVzIHdoZXJlCiAgICAgICAgIC8vIG5lZWRlZC4KICAg
ICAgICAgaWYgKHN0YXRlID09IEdTVF9TVEFURV9QQVVTRUQpIHsKKyAgICAgICAgICAgIGlmICgh
bV93ZWJraXRBdWRpb1NpbmspCisgICAgICAgICAgICAgICAgdXBkYXRlQXVkaW9TaW5rKCk7CiAg
ICAgICAgICAgICBpZiAobV9idWZmZXJpbmcgJiYgbV9idWZmZXJpbmdQZXJjZW50YWdlID09IDEw
MCkgewogICAgICAgICAgICAgICAgIG1fYnVmZmVyaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAg
ICAgbV9idWZmZXJpbmdQZXJjZW50YWdlID0gMDsKQEAgLTE2MTMsMzAgKzE2NjgsMzcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4oKQogICAgIGdz
dF9vYmplY3RfdW5yZWYoR1NUX09CSkVDVChzcmNQYWQpKTsKICAgICBnc3Rfb2JqZWN0X3VucmVm
KEdTVF9PQkpFQ1Qoc2lua1BhZCkpOwogCi0gICAgV1RGTG9nQ2hhbm5lbCogY2hhbm5lbCA9IGdl
dENoYW5uZWxGcm9tTmFtZSgiTWVkaWEiKTsKLSAgICBpZiAoY2hhbm5lbC0+c3RhdGUgPT0gV1RG
TG9nQ2hhbm5lbE9uKSB7Ci0gICAgICAgIG1fZnBzU2luayA9IGdzdF9lbGVtZW50X2ZhY3Rvcnlf
bWFrZSgiZnBzZGlzcGxheXNpbmsiLCAic2luayIpOwotICAgICAgICBpZiAoZ19vYmplY3RfY2xh
c3NfZmluZF9wcm9wZXJ0eShHX09CSkVDVF9HRVRfQ0xBU1MobV9mcHNTaW5rKSwgInZpZGVvLXNp
bmsiKSkgewotICAgICAgICAgICAgZ19vYmplY3Rfc2V0KG1fZnBzU2luaywgInZpZGVvLXNpbmsi
LCBtX3dlYmtpdFZpZGVvU2luaywgTlVMTCk7Ci0gICAgICAgICAgICBnc3RfYmluX2FkZChHU1Rf
QklOKG1fdmlkZW9TaW5rQmluKSwgbV9mcHNTaW5rKTsKKyAgICBtX2Zwc1NpbmsgPSBnc3RfZWxl
bWVudF9mYWN0b3J5X21ha2UoImZwc2Rpc3BsYXlzaW5rIiwgInNpbmsiKTsKKworICAgIGlmICht
X2Zwc1NpbmspIHsKKyAgICAgICAgLy8gVGhlIHZlcmJvc2UgcHJvcGVydHkgaGFzIGJlZW4gYWRk
ZWQgaW4gLWJhZCAwLjEwLjIyLiBNYWtpbmcKKyAgICAgICAgLy8gdGhpcyB3aG9sZSBjb2RlIGRl
cGVuZCBvbiBpdCBiZWNhdXNlIHdlIGRvbid0IHdhbnQKKyAgICAgICAgLy8gZnBzZGlwbGF5c2lu
ayB0byBzcGl0IGRhdGEgb24gc3Rkb3V0LgorICAgICAgICBHc3RFbGVtZW50RmFjdG9yeSogZmFj
dG9yeSA9IEdTVF9FTEVNRU5UX0ZBQ1RPUlkoR1NUX0VMRU1FTlRfR0VUX0NMQVNTKG1fZnBzU2lu
ayktPmVsZW1lbnRmYWN0b3J5KTsKKyAgICAgICAgaWYgKGdzdF9wbHVnaW5fZmVhdHVyZV9jaGVj
a192ZXJzaW9uKEdTVF9QTFVHSU5fRkVBVFVSRShmYWN0b3J5KSwgMCwgMTAsIDIyKSkgeworICAg
ICAgICAgICAgZ19vYmplY3Rfc2V0KG1fZnBzU2luaywgInNpbGVudCIsIFRSVUUgLCBOVUxMKTsK
KworICAgICAgICAgICAgLy8gVHVybiBvZmYgdGV4dCBvdmVybGF5IHVubGVzcyBsb2dnaW5nIGlz
IGVuYWJsZWQuCisgICAgICAgICAgICBXVEZMb2dDaGFubmVsKiBjaGFubmVsID0gZ2V0Q2hhbm5l
bEZyb21OYW1lKCJNZWRpYSIpOworICAgICAgICAgICAgaWYgKGNoYW5uZWwtPnN0YXRlICE9IFdU
RkxvZ0NoYW5uZWxPbikKKyAgICAgICAgICAgICAgICBnX29iamVjdF9zZXQobV9mcHNTaW5rLCAi
dGV4dC1vdmVybGF5IiwgRkFMU0UgLCBOVUxMKTsKKworICAgICAgICAgICAgaWYgKGdfb2JqZWN0
X2NsYXNzX2ZpbmRfcHJvcGVydHkoR19PQkpFQ1RfR0VUX0NMQVNTKG1fZnBzU2luayksICJ2aWRl
by1zaW5rIikpIHsKKyAgICAgICAgICAgICAgICBnX29iamVjdF9zZXQobV9mcHNTaW5rLCAidmlk
ZW8tc2luayIsIG1fd2Via2l0VmlkZW9TaW5rLCBOVUxMKTsKKyAgICAgICAgICAgICAgICBnc3Rf
YmluX2FkZChHU1RfQklOKG1fdmlkZW9TaW5rQmluKSwgbV9mcHNTaW5rKTsKICNpZiBHU1RfQ0hF
Q0tfVkVSU0lPTigwLCAxMCwgMzApCi0gICAgICAgICAgICAvLyBGYXN0ZXIgZWxlbWVudHMgbGlu
a2luZywgaWYgcG9zc2libGUuCi0gICAgICAgICAgICBnc3RfZWxlbWVudF9saW5rX3BhZHNfZnVs
bChxdWV1ZSwgInNyYyIsIG1fZnBzU2luaywgInNpbmsiLCBHU1RfUEFEX0xJTktfQ0hFQ0tfTk9U
SElORyk7CisgICAgICAgICAgICAgICAgLy8gRmFzdGVyIGVsZW1lbnRzIGxpbmtpbmcsIGlmIHBv
c3NpYmxlLgorICAgICAgICAgICAgICAgIGdzdF9lbGVtZW50X2xpbmtfcGFkc19mdWxsKHF1ZXVl
LCAic3JjIiwgbV9mcHNTaW5rLCAic2luayIsIEdTVF9QQURfTElOS19DSEVDS19OT1RISU5HKTsK
ICNlbHNlCi0gICAgICAgICAgICBnc3RfZWxlbWVudF9saW5rKHF1ZXVlLCBtX2Zwc1NpbmspOwor
ICAgICAgICAgICAgICAgIGdzdF9lbGVtZW50X2xpbmsocXVldWUsIG1fZnBzU2luayk7CiAjZW5k
aWYKLSAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAg
IG1fZnBzU2luayA9IDA7CisgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbV9mcHNTaW5rID0g
MDsKLSAgICAgICAgICAgIGdzdF9iaW5fYWRkKEdTVF9CSU4obV92aWRlb1NpbmtCaW4pLCBtX3dl
YmtpdFZpZGVvU2luayk7Ci0jaWYgR1NUX0NIRUNLX1ZFUlNJT04oMCwgMTAsIDMwKQotICAgICAg
ICAgICAgLy8gRmFzdGVyIGVsZW1lbnRzIGxpbmtpbmcsIGlmIHBvc3NpYmxlLgotICAgICAgICAg
ICAgZ3N0X2VsZW1lbnRfbGlua19wYWRzX2Z1bGwocXVldWUsICJzcmMiLCBtX3dlYmtpdFZpZGVv
U2luaywgInNpbmsiLCBHU1RfUEFEX0xJTktfQ0hFQ0tfTk9USElORyk7Ci0jZWxzZQotICAgICAg
ICAgICAgZ3N0X2VsZW1lbnRfbGluayhxdWV1ZSwgbV93ZWJraXRWaWRlb1NpbmspOwotI2VuZGlm
Ci0gICAgICAgICAgICBMT0dfVkVSQk9TRShNZWRpYSwgIkNhbid0IGRpc3BsYXkgRlBTIHN0YXRp
c3RpY3MsIHlvdSBuZWVkIGdzdC1wbHVnaW5zLWJhZCA+PSAwLjEwLjE4Iik7Ci0gICAgICAgIH0K
LSAgICB9IGVsc2UgeworICAgIH0KKworICAgIGlmICghbV9mcHNTaW5rKSB7CiAgICAgICAgIGdz
dF9iaW5fYWRkKEdTVF9CSU4obV92aWRlb1NpbmtCaW4pLCBtX3dlYmtpdFZpZGVvU2luayk7CiAj
aWYgR1NUX0NIRUNLX1ZFUlNJT04oMCwgMTAsIDMwKQogICAgICAgICAvLyBGYXN0ZXIgZWxlbWVu
dHMgbGlua2luZywgaWYgcG9zc2libGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmgKaW5kZXggODAwMzg4Ny4uNjgwZTgxNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaApAQCAtMTM1LDYgKzEzNSwxMSBAQCBjbGFz
cyBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRl
SW50ZXJmYWNlIHsKICAgICAgICAgICAgIHZvaWQgbm90aWZ5UGxheWVyT2ZWaWRlb1RhZ3MoKTsK
ICAgICAgICAgICAgIHZvaWQgbm90aWZ5UGxheWVyT2ZBdWRpb1RhZ3MoKTsKIAorICAgICAgICAg
ICAgdW5zaWduZWQgZGVjb2RlZEZyYW1lQ291bnQoKSBjb25zdDsKKyAgICAgICAgICAgIHVuc2ln
bmVkIGRyb3BwZWRGcmFtZUNvdW50KCkgY29uc3Q7CisgICAgICAgICAgICB1bnNpZ25lZCBhdWRp
b0RlY29kZWRCeXRlQ291bnQoKSBjb25zdDsKKyAgICAgICAgICAgIHVuc2lnbmVkIHZpZGVvRGVj
b2RlZEJ5dGVDb3VudCgpIGNvbnN0OworCiAgICAgICAgIHByaXZhdGU6CiAgICAgICAgICAgICBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIoTWVkaWFQbGF5ZXIqKTsKICAgICAgICAgICAgIH5N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIoKTsKQEAgLTE0NSw2ICsxNTAsOCBAQCBjbGFzcyBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50
ZXJmYWNlIHsKICAgICAgICAgICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1
cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzKTsKICAg
ICAgICAgICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7CiAKKyAgICAgICAgICAgIHZvaWQg
dXBkYXRlQXVkaW9TaW5rKCk7CisKICAgICAgICAgICAgIHZvaWQgY2FjaGVEdXJhdGlvbigpOwog
ICAgICAgICAgICAgdm9pZCB1cGRhdGVTdGF0ZXMoKTsKICAgICAgICAgICAgIGZsb2F0IG1heFRp
bWVMb2FkZWQoKSBjb25zdDsKQEAgLTE5Myw2ICsyMDAsNyBAQCBjbGFzcyBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlIHsKICAg
ICAgICAgICAgIGJvb2wgbV9oYXNBdWRpbzsKICAgICAgICAgICAgIGd1aW50IG1fYXVkaW9UYWdz
VGltZXJIYW5kbGVyOwogICAgICAgICAgICAgZ3VpbnQgbV92aWRlb1RhZ3NUaW1lckhhbmRsZXI7
CisgICAgICAgICAgICBHc3RFbGVtZW50KiBtX3dlYmtpdEF1ZGlvU2luazsKICAgICB9OwogfQog
Ci0tIAoxLjcuNC4x
</data>
<flag name="review"
          id="81598"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
          </attachment>
      

    </bug>

</bugzilla>