<?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>15135</bug_id>
          
          <creation_ts>2007-09-02 23:45:56 -0700</creation_ts>
          <short_desc>REGRESSION (r19843-r19850): Changing a flexbox&apos;s contents makes its container scroll to the top</short_desc>
          <delta_ts>2009-07-06 14:53:57 -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>523.x (Safari 3)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://bugs.webkit.org/attachment.cgi?id=11093&amp;action=view</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HasReduction, Regression</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>mitz</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>emacemac7</cc>
    
    <cc>eric</cc>
    
    <cc>hamaji</cc>
    
    <cc>hyatt</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>993</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2007-09-02 23:45:56 -0700</bug_when>
    <thetext>To reproduce: open the URL and click the Test button. The overflow area should not scroll to the top.

&lt;http://trac.webkit.org/projects/webkit/changeset/19848&gt; is the likely suspect for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125288</commentid>
    <comment_count>1</comment_count>
      <attachid>31156</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-06-11 02:59:30 -0700</bug_when>
    <thetext>Created attachment 31156
Patch v1

 LayoutTests/ChangeLog                         |   15 ++++
 LayoutTests/fast/flexbox/repaint-expected.txt |   20 ++++++
 LayoutTests/fast/flexbox/repaint.html         |   18 +++++
 LayoutTests/fast/flexbox/resources/repaint.js |    9 +++
 WebCore/ChangeLog                             |   24 +++++++
 WebCore/rendering/RenderBlock.cpp             |   92 ++++++++++++++-----------
 WebCore/rendering/RenderBlock.h               |   14 ++++
 WebCore/rendering/RenderFlexibleBox.cpp       |   40 ++++++++++-
 8 files changed, 190 insertions(+), 42 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125289</commentid>
    <comment_count>2</comment_count>
      <attachid>31156</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-06-11 03:08:53 -0700</bug_when>
    <thetext>Comment on attachment 31156
Patch v1

I&apos;m not sure if this is the best fix for this issue. I think code around flexible box may need to be refactored. If reviewer considers we should fix this bug after some refactoring, please let me know. If so, I&apos;ll withdraw this patch and try refactoring if I can. Anyway, any kind of comments are really appreciated.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125451</commentid>
    <comment_count>3</comment_count>
      <attachid>31156</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-06-12 01:20:09 -0700</bug_when>
    <thetext>Comment on attachment 31156
Patch v1

You cannot add any member variables to RenderBlock, as this will significantly bloat the size of the render tree for real world HTML.  Doing so just to fix flexbox bugs is not a good real-world tradeoff.

I believe you can maybe just set a flag to avoid doing the work you refactored into repaintBlockAfterLayout in the case where an object is going to do double layouts because of flexing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125452</commentid>
    <comment_count>4</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-06-12 01:21:18 -0700</bug_when>
    <thetext>Note that in the case of a single flexing object, I imagine you could eliminate the double layouts completely.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125913</commentid>
    <comment_count>5</comment_count>
      <attachid>31283</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-06-15 02:47:43 -0700</bug_when>
    <thetext>Created attachment 31283
Patch v2

 LayoutTests/ChangeLog                              |   15 +++
 .../fast/flexbox/repaint-scrollbar-expected.html   |   20 ++++
 LayoutTests/fast/flexbox/repaint-scrollbar.html    |   18 +++
 .../fast/flexbox/resources/repaint-scrollbar.js    |    9 ++
 WebCore/ChangeLog                                  |   24 ++++
 WebCore/rendering/RenderBlock.cpp                  |  114 +++++++++++++-------
 WebCore/rendering/RenderBlock.h                    |   25 +++++
 WebCore/rendering/RenderFlexibleBox.cpp            |   40 +++++++-
 8 files changed, 223 insertions(+), 42 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125914</commentid>
    <comment_count>6</comment_count>
      <attachid>31283</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-06-15 02:55:37 -0700</bug_when>
    <thetext>Comment on attachment 31283
Patch v2

Thanks for the review!

I understood that we cannot add members into RenderBlock. As the delayed repaint needs some contexts of layout (repainter, repaintBottom and repaintTop), I created a hash map which holds the context information and is used only when a flexbox is layouting its children. This hack looks not so good, but it seems that this kind of technique is often used for flexible box support (e.g., gOverrideSizeMap in RenderBox.cpp) and this won&apos;t consume extra RAM for HTMLs which have no flexboxes.

Could you take a look again?

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125915</commentid>
    <comment_count>7</comment_count>
      <attachid>31284</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-06-15 02:56:59 -0700</bug_when>
    <thetext>Created attachment 31284
Patch v3

 LayoutTests/ChangeLog                              |   15 +++
 .../fast/flexbox/repaint-scrollbar-expected.html   |   20 ++++
 LayoutTests/fast/flexbox/repaint-scrollbar.html    |   18 +++
 .../fast/flexbox/resources/repaint-scrollbar.js    |    9 ++
 WebCore/ChangeLog                                  |   24 ++++
 WebCore/rendering/RenderBlock.cpp                  |  114 +++++++++++++-------
 WebCore/rendering/RenderBlock.h                    |   25 +++++
 WebCore/rendering/RenderFlexibleBox.cpp            |   40 +++++++-
 8 files changed, 223 insertions(+), 42 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125916</commentid>
    <comment_count>8</comment_count>
      <attachid>31284</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-06-15 02:57:50 -0700</bug_when>
    <thetext>Comment on attachment 31284
Patch v3

Sorry, I changed the name of layout tests but I forgot to update ChangeLog as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125918</commentid>
    <comment_count>9</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-06-15 03:43:07 -0700</bug_when>
    <thetext>Also, for now, I&apos;d like not to eliminate double layouts for the case of a single flexing object as this change may introduce additional complexity to my patch.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126146</commentid>
    <comment_count>10</comment_count>
      <attachid>31284</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-06-15 23:16:35 -0700</bug_when>
    <thetext>Comment on attachment 31284
Patch v3

You&apos;ve picked a very challenging bug to work on here.

I&apos;m not sure I&apos;d worry so much about repaint being wrong.  If the flexing block has kids that move during the first layout, your patch isn&apos;t going to help that case.  They are still going to repaint too much.  I think you should just concentrate on the scrolling issue and ignore repaint for now.

As for scrolling, trying to stop just the immediate child block from updating its scroll info during the first layout doesn&apos;t really generally solve the problem.  What about a scrollable object inside a flexing block that incorrectly adjusts its scroll position in response to the first layout?

I think a simpler fix for this bug is to just make the scroll position updating code immune to flex box layout thrashing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126906</commentid>
    <comment_count>11</comment_count>
      <attachid>31536</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-06-19 00:54:50 -0700</bug_when>
    <thetext>Created attachment 31536
Patch v4

 LayoutTests/ChangeLog                              |   15 ++
 .../fast/flexbox/repaint-scrollbar-expected.txt    |   44 ++++++
 LayoutTests/fast/flexbox/repaint-scrollbar.html    |   37 +++++
 .../fast/flexbox/resources/repaint-scrollbar.js    |   25 ++++
 WebCore/ChangeLog                                  |   24 +++
 WebCore/rendering/RenderBlock.cpp                  |  152 +++++++++++++++-----
 WebCore/rendering/RenderBlock.h                    |   11 ++
 WebCore/rendering/RenderFlexibleBox.cpp            |   12 ++-
 WebCore/rendering/bidi.cpp                         |    4 +-
 9 files changed, 281 insertions(+), 43 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126908</commentid>
    <comment_count>12</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-06-19 00:55:34 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 31284 [review])
&gt; You&apos;ve picked a very challenging bug to work on here.

Yeah, it was more difficult than I expected :( Sorry and thanks for your time to check my wrong patches.

&gt; I&apos;m not sure I&apos;d worry so much about repaint being wrong.  If the flexing block
&gt; has kids that move during the first layout, your patch isn&apos;t going to help that
&gt; case.  They are still going to repaint too much.  I think you should just
&gt; concentrate on the scrolling issue and ignore repaint for now.
&gt; 
&gt; As for scrolling, trying to stop just the immediate child block from updating
&gt; its scroll info during the first layout doesn&apos;t really generally solve the
&gt; problem.  What about a scrollable object inside a flexing block that
&gt; incorrectly adjusts its scroll position in response to the first layout?

Ah yes, I didn&apos;t care about grandchild nodes at all.

&gt; I think a simpler fix for this bug is to just make the scroll position updating
&gt; code immune to flex box layout thrashing.

I&apos;m not sure if I understand what you are suggesting here correctly. I tried two ways to fix only scrollbar, but both attempts failed so far :( I tried

- Just disable RenderLayer::updateScrollInfoAfterLayout() while layouting descendants of flexible box: Scrollbars are never painted. Maybe updateScrollInfoAfterLayout() is painting as well as updating?
- Disable updateScrollInfoAfterLayout(), and after layout descendants of the flexible box, call updateScrollInfoAfterLayout() for delayed objects: This means that we update scrollbar after repainting. This change seems to break some existing layout tests.

I also tried to create a patch which fixes both update of scrollbar and repainting (the uploaded patch), and it seems to be working. I also added layout tests for nested flexible boxes, which my previous patch didn&apos;t handle properly.

In this change, we skip all update of scrollbar and repaint during layout of flexible boxes, and keep the skipped objects and contexts into global-static hashmap (so that we don&apos;t increase the size of RenderBlock). Then, after the layout of descendants of a flexible box finishes, we process all delayed repainting. When we are layouting nested flexible boxes, we don&apos;t process the delayed repainting until the first flexible finishes to layout its children.

If there are something I&apos;m still missing, and/or you still think I should concentrate on the scrolling, I&apos;m happy to do so, of course. Please let me know in this case.

Thanks!
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127882</commentid>
    <comment_count>13</comment_count>
      <attachid>31777</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-06-24 02:56:07 -0700</bug_when>
    <thetext>Created attachment 31777
Patch v5

 .../fast/flexbox/repaint-scrollbar-expected.txt    |   44 +++++++++++++++++++
 LayoutTests/fast/flexbox/repaint-scrollbar.html    |   37 ++++++++++++++++
 .../fast/flexbox/resources/repaint-scrollbar.js    |   25 +++++++++++
 WebCore/rendering/RenderBlock.cpp                  |   46 ++++++++++++++++++--
 WebCore/rendering/RenderBlock.h                    |   10 ++++
 WebCore/rendering/RenderFlexibleBox.cpp            |   12 ++++-
 6 files changed, 168 insertions(+), 6 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127883</commentid>
    <comment_count>14</comment_count>
      <attachid>31777</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-06-24 02:57:05 -0700</bug_when>
    <thetext>Comment on attachment 31777
Patch v5

Sorry, delaying RenderLayer::updateScrollInfoAfterLayout() was working, actually. I introduced a bug when I tried first. I also noticed that my previous patch won&apos;t work for some nested cases as it may change the order of painting. So, I uploaded another patch, which only fixes the scrollbar issue as you suggested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128119</commentid>
    <comment_count>15</comment_count>
      <attachid>31834</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-06-25 00:53:50 -0700</bug_when>
    <thetext>Created attachment 31834
Patch v6

 LayoutTests/ChangeLog                              |   17 +++++++
 .../fast/flexbox/repaint-scrollbar-expected.txt    |   44 +++++++++++++++++++
 LayoutTests/fast/flexbox/repaint-scrollbar.html    |   37 ++++++++++++++++
 .../fast/flexbox/resources/repaint-scrollbar.js    |   25 +++++++++++
 WebCore/ChangeLog                                  |   26 +++++++++++
 WebCore/rendering/RenderBlock.cpp                  |   46 ++++++++++++++++++--
 WebCore/rendering/RenderBlock.h                    |   10 ++++
 WebCore/rendering/RenderFlexibleBox.cpp            |   12 ++++-
 8 files changed, 211 insertions(+), 6 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128120</commentid>
    <comment_count>16</comment_count>
      <attachid>31834</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-06-25 00:54:31 -0700</bug_when>
    <thetext>Comment on attachment 31834
Patch v6

I forgot to add ChangeLogs in the previous patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130030</commentid>
    <comment_count>17</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-07-06 14:53:57 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	LayoutTests/ChangeLog
	A	LayoutTests/fast/flexbox/repaint-scrollbar-expected.txt
	A	LayoutTests/fast/flexbox/repaint-scrollbar.html
	A	LayoutTests/fast/flexbox/resources/repaint-scrollbar.js
	M	WebCore/ChangeLog
	M	WebCore/rendering/RenderBlock.cpp
	M	WebCore/rendering/RenderBlock.h
	M	WebCore/rendering/RenderFlexibleBox.cpp
Committed r45568
	M	WebCore/ChangeLog
	M	WebCore/rendering/RenderFlexibleBox.cpp
	M	WebCore/rendering/RenderBlock.cpp
	M	WebCore/rendering/RenderBlock.h
	M	LayoutTests/ChangeLog
	A	LayoutTests/fast/flexbox/repaint-scrollbar-expected.txt
	A	LayoutTests/fast/flexbox/repaint-scrollbar.html
	A	LayoutTests/fast/flexbox/resources/repaint-scrollbar.js
r45568 = 52339b5a0ebb8366f59f26c4b326f14f225fb789 (trunk)
No changes between current HEAD and refs/remotes/trunk
Resetting to the latest refs/remotes/trunk
http://trac.webkit.org/changeset/45568</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31156</attachid>
            <date>2009-06-11 02:59:30 -0700</date>
            <delta_ts>2009-06-15 02:57:10 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>Patch-v1.patch</filename>
            <type>text/plain</type>
            <size>13590</size>
            <attacher name="Shinichiro Hamaji">hamaji</attacher>
            
              <data encoding="base64">MTVlMmFhODVhNjA1NGMyYTc4ZTk4NmI2ZGI3NjJhOTc5ZDg0ZWQ5YwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDJjMTY1NDUu
LmFjMWYwMmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAwOS0wNi0xMSAgU2hpbmljaGlybyBI
YW1hamkgIDxoYW1hamlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTEzNQorICAgICAgICBEZWxheSB1cGRhdGluZyBzY3JvbGwgYmFyIGFuZCByZXBhaW50
aW5nIGNoaWxkcmVuIG9mIGZsZXhpYmxlCisgICAgICAgIGJveGVzIHVudGlsIHRoZWlyIHBvc2l0
aW9ucyBhcmUgZGV0ZXJtaW5lZC4gIEluIHRoaXMgd2F5IHdlIGNhbgorICAgICAgICBwcmV2ZW50
IGNoaWxkcmVuIG9mIGZsZXhpYmxlIGJveGVzIGZyb20gY2hhbmdpbmcgcG9zaXRpb25zIG9mCisg
ICAgICAgIHRoZWlyIHNjcm9sbGJhcnMgdXNpbmcgdGVudGF0aXZlIHBvc2l0aW9ucy4gIEFsc28s
IHRoaXMgbWF5CisgICAgICAgIGltcHJvdmUgdGhlIHBlcmZvcm1hbmNlIGEgYml0LgorCisgICAg
ICAgICogZmFzdC9mbGV4Ym94L3JlcGFpbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2ZsZXhib3gvcmVwYWludC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZsZXhi
b3gvcmVzb3VyY2VzL3JlcGFpbnQuanM6IEFkZGVkLgorCiAyMDA5LTA2LTA5ICBCcmVudCBGdWxn
aGFtICA8YmZ1bGdoYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBObyByZXZpZXcsIGJ1aWxkIGZp
eCBvbmx5LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mbGV4Ym94L3JlcGFpbnQtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mbGV4Ym94L3JlcGFpbnQtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmZjA0YjQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZsZXhib3gvcmVwYWludC1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwyMCBAQAorQ2hlY2sgaWYgY2hhbmdpbmcgZmxleGJveCdzIGNvbnRlbnQgZG9lc24n
dCBjaGFuZ2UgdGhlIHN0YXRlIG9mIHNjcm9sbC4gU2VlIHRoaXMgYnVnIGZvciBkZXRhaWw6IGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTEzNQorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworCisKKworCisKKworCisKKworbWVyb0wgaXBzdW0KK1BBU1Mg
ZWxlbWVudC5zY3JvbGxUb3AgaXMgMTA4CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mbGV4Ym94
L3JlcGFpbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZmxleGJveC9yZXBhaW50Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNhMzQ3OQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZmxleGJveC9yZXBhaW50Lmh0bWwKQEAgLTAsMCArMSwxOCBA
QAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+
Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwv
cD4KKzxkaXYgc3R5bGU9ImRpc3BsYXk6IC13ZWJraXQtYm94Oy13ZWJraXQtYm94LW9yaWVudDog
dmVydGljYWw7IGhlaWdodDogNjlweDsiPgorICAgIDxkaXYgaWQ9ImRpdiIgc3R5bGU9Im92ZXJm
bG93LXk6IHNjcm9sbDsgb3V0bGluZTogbm9uZTsgd2lkdGg6IDgwcHg7IC13ZWJraXQtYm94LWZs
ZXg6MTsiPgorICAgICAgICA8YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj5Mb3Jl
bSBpcHN1bQorICAgIDwvZGl2PgorPC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvcmVwYWludC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZsZXhib3gvcmVzb3VyY2VzL3JlcGFp
bnQuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2ZsZXhib3gvcmVzb3VyY2VzL3JlcGFpbnQuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGNjYjBhNwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZmxleGJveC9yZXNvdXJjZXMvcmVwYWludC5qcwpAQCAtMCww
ICsxLDkgQEAKK2Rlc2NyaXB0aW9uKCJDaGVjayBpZiBjaGFuZ2luZyBmbGV4Ym94J3MgY29udGVu
dCBkb2Vzbid0IGNoYW5nZSB0aGUgc3RhdGUgb2Ygc2Nyb2xsLiBTZWUgdGhpcyBidWcgZm9yIGRl
dGFpbDogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTM1Iik7CisK
K3ZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpdiIpOworZWxlbWVudC5z
Y3JvbGxUb3AgPSAxMDg7CitlbGVtZW50Lmxhc3RDaGlsZC5kYXRhPSdtZXJvTCBpcHN1bSc7CisK
K3Nob3VsZEJlKCJlbGVtZW50LnNjcm9sbFRvcCIsICIxMDgiKTsKKworc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggZGU3ZWE2ZS4uNjIzZGZiNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAwOS0wNi0xMSAg
U2hpbmljaGlybyBIYW1hamkgIDxoYW1hamlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTEzNQorICAgICAgICBEZWxheSB1cGRhdGluZyBzY3JvbGwgYmFy
IGFuZCByZXBhaW50aW5nIGNoaWxkcmVuIG9mIGZsZXhpYmxlCisgICAgICAgIGJveGVzIHVudGls
IHRoZWlyIHBvc2l0aW9ucyBhcmUgZGV0ZXJtaW5lZC4gIEluIHRoaXMgd2F5IHdlIGNhbgorICAg
ICAgICBwcmV2ZW50IGNoaWxkcmVuIG9mIGZsZXhpYmxlIGJveGVzIGZyb20gY2hhbmdpbmcgcG9z
aXRpb25zIG9mCisgICAgICAgIHRoZWlyIHNjcm9sbGJhcnMgdXNpbmcgdGVudGF0aXZlIHBvc2l0
aW9ucy4gIEFsc28sIHRoaXMgbWF5CisgICAgICAgIGltcHJvdmUgdGhlIHBlcmZvcm1hbmNlIGEg
Yml0LgorCisgICAgICAgIFRlc3Q6IGZhc3QvZmxleGJveC9yZXBhaW50Lmh0bWwKKworICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
bG9jazo6UmVuZGVyQmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnJlcGFp
bnRCbG9ja0FmdGVyTGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsYXlv
dXRCbG9jayk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9jazo6ZGVsYXlSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrOjpzZXREZWxheVJlcGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJG
bGV4aWJsZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6bGF5
b3V0SG9yaXpvbnRhbEJveCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6
bGF5b3V0VmVydGljYWxCb3gpOgorCiAyMDA5LTA2LTA5ICBQZXRlciBLYXN0aW5nICA8cGthc3Rp
bmdAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCA4OWNmMTEyLi45MzdjZjdlIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suY3BwCkBAIC0xMjQsNiArMTI0LDEwIEBAIFJlbmRlckJsb2NrOjpSZW5kZXJC
bG9jayhOb2RlKiBub2RlKQogICAgICAgLCBtX3Bvc2l0aW9uZWRPYmplY3RzKDApCiAgICAgICAs
IG1faW5saW5lQ29udGludWF0aW9uKDApCiAgICAgICAsIG1fbWF4TWFyZ2luKDApCisgICAgICAs
IG1fZGVsYXlSZXBhaW50KGZhbHNlKQorICAgICAgLCBtX3JlcGFpbnRlcigwKQorICAgICAgLCBt
X3JlcGFpbnRUb3AoLTEpCisgICAgICAsIG1fcmVwYWludEJvdHRvbSgtMSkKICAgICAgICwgbV9v
dmVyZmxvd0hlaWdodCgwKQogICAgICAgLCBtX292ZXJmbG93V2lkdGgoMCkKICAgICAgICwgbV9v
dmVyZmxvd0xlZnQoMCkKQEAgLTcwNyw2ICs3MTEsNDkgQEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5
b3V0KCkKICAgICB9CiB9CiAKK3ZvaWQgUmVuZGVyQmxvY2s6OnJlcGFpbnRCbG9ja0FmdGVyTGF5
b3V0KCkKK3sKKyAgICBBU1NFUlQobmVlZHNMYXlvdXQoKSk7CisKKyAgICAvLyBVcGRhdGUgb3Vy
IHNjcm9sbCBpbmZvcm1hdGlvbiBpZiB3ZSdyZSBvdmVyZmxvdzphdXRvL3Njcm9sbC9oaWRkZW4g
bm93IHRoYXQgd2Uga25vdyBpZgorICAgIC8vIHdlIG92ZXJmbG93IG9yIG5vdC4KKyAgICBpZiAo
aGFzT3ZlcmZsb3dDbGlwKCkpCisgICAgICAgIGxheWVyKCktPnVwZGF0ZVNjcm9sbEluZm9BZnRl
ckxheW91dCgpOworCisgICAgLy8gUmVwYWludCB3aXRoIG91ciBuZXcgYm91bmRzIGlmIHRoZXkg
YXJlIGRpZmZlcmVudCBmcm9tIG91ciBvbGQgYm91bmRzLgorICAgIGJvb2wgZGlkRnVsbFJlcGFp
bnQgPSBtX3JlcGFpbnRlci0+cmVwYWludEFmdGVyTGF5b3V0KCk7CisgICAgaWYgKCFkaWRGdWxs
UmVwYWludCAmJiBtX3JlcGFpbnRUb3AgIT0gbV9yZXBhaW50Qm90dG9tICYmIChzdHlsZSgpLT52
aXNpYmlsaXR5KCkgPT0gVklTSUJMRSB8fCBlbmNsb3NpbmdMYXllcigpLT5oYXNWaXNpYmxlQ29u
dGVudCgpKSkgeworICAgICAgICBJbnRSZWN0IHJlcGFpbnRSZWN0KG1fb3ZlcmZsb3dMZWZ0LCBt
X3JlcGFpbnRUb3AsIG1fb3ZlcmZsb3dXaWR0aCAtIG1fb3ZlcmZsb3dMZWZ0LCBtX3JlcGFpbnRC
b3R0b20gLSBtX3JlcGFpbnRUb3ApOworCisgICAgICAgIC8vIEZJWE1FOiBEZWFsIHdpdGggbXVs
dGlwbGUgY29sdW1uIHJlcGFpbnRpbmcuICBXZSBoYXZlIHRvIHNwbGl0IHRoZSByZXBhaW50Cisg
ICAgICAgIC8vIHJlY3QgdXAgaW50byBtdWx0aXBsZSByZWN0cyBpZiBpdCBzcGFucyBjb2x1bW5z
LgorCisgICAgICAgIHJlcGFpbnRSZWN0LmluZmxhdGUobWF4aW1hbE91dGxpbmVTaXplKFBhaW50
UGhhc2VPdXRsaW5lKSk7CisKKyAgICAgICAgaWYgKGhhc092ZXJmbG93Q2xpcCgpKSB7CisgICAg
ICAgICAgICAvLyBBZGp1c3QgcmVwYWludCByZWN0IGZvciBzY3JvbGwgb2Zmc2V0CisgICAgICAg
ICAgICBpbnQgeCA9IHJlcGFpbnRSZWN0LngoKTsKKyAgICAgICAgICAgIGludCB5ID0gcmVwYWlu
dFJlY3QueSgpOworICAgICAgICAgICAgbGF5ZXIoKS0+c3VidHJhY3RTY3JvbGxlZENvbnRlbnRP
ZmZzZXQoeCwgeSk7CisgICAgICAgICAgICByZXBhaW50UmVjdC5zZXRYKHgpOworICAgICAgICAg
ICAgcmVwYWludFJlY3Quc2V0WSh5KTsKKworICAgICAgICAgICAgLy8gRG9uJ3QgYWxsb3cgdGhp
cyByZWN0IHRvIHNwaWxsIG91dCBvZiBvdXIgb3ZlcmZsb3cgYm94LgorICAgICAgICAgICAgcmVw
YWludFJlY3QuaW50ZXJzZWN0KEludFJlY3QoMCwgMCwgd2lkdGgoKSwgaGVpZ2h0KCkpKTsKKyAg
ICAgICAgfQorCisgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgcmVjdCBpcyBzdGlsbCBub24tZW1w
dHkgYWZ0ZXIgaW50ZXJzZWN0aW5nIGZvciBvdmVyZmxvdyBhYm92ZQorICAgICAgICBpZiAoIXJl
cGFpbnRSZWN0LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgcmVwYWludFJlY3RhbmdsZShyZXBh
aW50UmVjdCk7IC8vIFdlIG5lZWQgdG8gZG8gYSBwYXJ0aWFsIHJlcGFpbnQgb2Ygb3VyIGNvbnRl
bnQuCisgICAgICAgICAgICBpZiAoaGFzUmVmbGVjdGlvbigpKQorICAgICAgICAgICAgICAgIHJl
cGFpbnRSZWN0YW5nbGUocmVmbGVjdGVkUmVjdChyZXBhaW50UmVjdCkpOworICAgICAgICB9Cisg
ICAgfQorICAgIHNldE5lZWRzTGF5b3V0KGZhbHNlKTsKKworICAgIGRlbGV0ZSBtX3JlcGFpbnRl
cjsKK30KKwogdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxk
cmVuKQogewogICAgIEFTU0VSVChuZWVkc0xheW91dCgpKTsKQEAgLTcxNyw3ICs3NjQsNyBAQCB2
b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4pCiAgICAg
aWYgKCFyZWxheW91dENoaWxkcmVuICYmIGxheW91dE9ubHlQb3NpdGlvbmVkT2JqZWN0cygpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBMYXlvdXRSZXBhaW50ZXIgcmVwYWludGVyKCp0aGlzLCBt
X2V2ZXJIYWRMYXlvdXQgJiYgY2hlY2tGb3JSZXBhaW50RHVyaW5nTGF5b3V0KCkpOworICAgIG1f
cmVwYWludGVyID0gbmV3IExheW91dFJlcGFpbnRlcigqdGhpcywgbV9ldmVySGFkTGF5b3V0ICYm
IGNoZWNrRm9yUmVwYWludER1cmluZ0xheW91dCgpKTsKICAgICBMYXlvdXRTdGF0ZU1haW50YWlu
ZXIgc3RhdGVQdXNoZXIodmlldygpLCB0aGlzLCBJbnRTaXplKHgoKSwgeSgpKSwgaGFzQ29sdW1u
cygpIHx8IGhhc1RyYW5zZm9ybSgpIHx8IGhhc1JlZmxlY3Rpb24oKSk7CiAKICAgICBpbnQgb2xk
V2lkdGggPSB3aWR0aCgpOwpAQCAtNzcyLDExICs4MTksMTEgQEAgdm9pZCBSZW5kZXJCbG9jazo6
bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuKQogICAgICAgICAgICAgbGF5ZXIoKS0+
c2V0SGFzVmVydGljYWxTY3JvbGxiYXIodHJ1ZSk7CiAgICAgfQogCi0gICAgaW50IHJlcGFpbnRU
b3AgPSAwOwotICAgIGludCByZXBhaW50Qm90dG9tID0gMDsKKyAgICBtX3JlcGFpbnRUb3AgPSAw
OworICAgIG1fcmVwYWludEJvdHRvbSA9IDA7CiAgICAgaW50IG1heEZsb2F0Qm90dG9tID0gMDsK
ICAgICBpZiAoY2hpbGRyZW5JbmxpbmUoKSkKLSAgICAgICAgbGF5b3V0SW5saW5lQ2hpbGRyZW4o
cmVsYXlvdXRDaGlsZHJlbiwgcmVwYWludFRvcCwgcmVwYWludEJvdHRvbSk7CisgICAgICAgIGxh
eW91dElubGluZUNoaWxkcmVuKHJlbGF5b3V0Q2hpbGRyZW4sIG1fcmVwYWludFRvcCwgbV9yZXBh
aW50Qm90dG9tKTsKICAgICBlbHNlCiAgICAgICAgIGxheW91dEJsb2NrQ2hpbGRyZW4ocmVsYXlv
dXRDaGlsZHJlbiwgbWF4RmxvYXRCb3R0b20pOwogCkBAIC04NDIsNDEgKzg4OSw4IEBAIHZvaWQg
UmVuZGVyQmxvY2s6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbikKIAogICAgIHN0
YXRlUHVzaGVyLnBvcCgpOwogCi0gICAgLy8gVXBkYXRlIG91ciBzY3JvbGwgaW5mb3JtYXRpb24g
aWYgd2UncmUgb3ZlcmZsb3c6YXV0by9zY3JvbGwvaGlkZGVuIG5vdyB0aGF0IHdlIGtub3cgaWYK
LSAgICAvLyB3ZSBvdmVyZmxvdyBvciBub3QuCi0gICAgaWYgKGhhc092ZXJmbG93Q2xpcCgpKQot
ICAgICAgICBsYXllcigpLT51cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXQoKTsKLQotICAgIC8v
IFJlcGFpbnQgd2l0aCBvdXIgbmV3IGJvdW5kcyBpZiB0aGV5IGFyZSBkaWZmZXJlbnQgZnJvbSBv
dXIgb2xkIGJvdW5kcy4KLSAgICBib29sIGRpZEZ1bGxSZXBhaW50ID0gcmVwYWludGVyLnJlcGFp
bnRBZnRlckxheW91dCgpOwotICAgIGlmICghZGlkRnVsbFJlcGFpbnQgJiYgcmVwYWludFRvcCAh
PSByZXBhaW50Qm90dG9tICYmIChzdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSB8fCBl
bmNsb3NpbmdMYXllcigpLT5oYXNWaXNpYmxlQ29udGVudCgpKSkgewotICAgICAgICBJbnRSZWN0
IHJlcGFpbnRSZWN0KG1fb3ZlcmZsb3dMZWZ0LCByZXBhaW50VG9wLCBtX292ZXJmbG93V2lkdGgg
LSBtX292ZXJmbG93TGVmdCwgcmVwYWludEJvdHRvbSAtIHJlcGFpbnRUb3ApOwotCi0gICAgICAg
IC8vIEZJWE1FOiBEZWFsIHdpdGggbXVsdGlwbGUgY29sdW1uIHJlcGFpbnRpbmcuICBXZSBoYXZl
IHRvIHNwbGl0IHRoZSByZXBhaW50Ci0gICAgICAgIC8vIHJlY3QgdXAgaW50byBtdWx0aXBsZSBy
ZWN0cyBpZiBpdCBzcGFucyBjb2x1bW5zLgotCi0gICAgICAgIHJlcGFpbnRSZWN0LmluZmxhdGUo
bWF4aW1hbE91dGxpbmVTaXplKFBhaW50UGhhc2VPdXRsaW5lKSk7Ci0gICAgICAgIAotICAgICAg
ICBpZiAoaGFzT3ZlcmZsb3dDbGlwKCkpIHsKLSAgICAgICAgICAgIC8vIEFkanVzdCByZXBhaW50
IHJlY3QgZm9yIHNjcm9sbCBvZmZzZXQKLSAgICAgICAgICAgIGludCB4ID0gcmVwYWludFJlY3Qu
eCgpOwotICAgICAgICAgICAgaW50IHkgPSByZXBhaW50UmVjdC55KCk7Ci0gICAgICAgICAgICBs
YXllcigpLT5zdWJ0cmFjdFNjcm9sbGVkQ29udGVudE9mZnNldCh4LCB5KTsKLSAgICAgICAgICAg
IHJlcGFpbnRSZWN0LnNldFgoeCk7Ci0gICAgICAgICAgICByZXBhaW50UmVjdC5zZXRZKHkpOwot
Ci0gICAgICAgICAgICAvLyBEb24ndCBhbGxvdyB0aGlzIHJlY3QgdG8gc3BpbGwgb3V0IG9mIG91
ciBvdmVyZmxvdyBib3guCi0gICAgICAgICAgICByZXBhaW50UmVjdC5pbnRlcnNlY3QoSW50UmVj
dCgwLCAwLCB3aWR0aCgpLCBoZWlnaHQoKSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gTWFr
ZSBzdXJlIHRoZSByZWN0IGlzIHN0aWxsIG5vbi1lbXB0eSBhZnRlciBpbnRlcnNlY3RpbmcgZm9y
IG92ZXJmbG93IGFib3ZlCi0gICAgICAgIGlmICghcmVwYWludFJlY3QuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgICAgICByZXBhaW50UmVjdGFuZ2xlKHJlcGFpbnRSZWN0KTsgLy8gV2UgbmVlZCB0byBk
byBhIHBhcnRpYWwgcmVwYWludCBvZiBvdXIgY29udGVudC4KLSAgICAgICAgICAgIGlmIChoYXNS
ZWZsZWN0aW9uKCkpCi0gICAgICAgICAgICAgICAgcmVwYWludFJlY3RhbmdsZShyZWZsZWN0ZWRS
ZWN0KHJlcGFpbnRSZWN0KSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgc2V0TmVlZHNMYXlvdXQo
ZmFsc2UpOworICAgIGlmICghbV9kZWxheVJlcGFpbnQpCisgICAgICAgIHJlcGFpbnRCbG9ja0Fm
dGVyTGF5b3V0KCk7CiB9CiAKIGJvb2wgUmVuZGVyQmxvY2s6OmV4cGFuZHNUb0VuY2xvc2VPdmVy
aGFuZ2luZ0Zsb2F0cygpIGNvbnN0CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAppbmRleCBmMzEzYjNk
Li4wNTQ2MWUzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCisr
KyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKQEAgLTMyNSw2ICszMjUsMTEgQEAg
cHVibGljOgogICAgIC8vIHN0eWxlIGZyb20gdGhpcyBSZW5kZXJCbG9jay4KICAgICBSZW5kZXJC
bG9jayogY3JlYXRlQW5vbnltb3VzQmxvY2soKSBjb25zdDsKIAorICAgIHZvaWQgcmVwYWludEJs
b2NrQWZ0ZXJMYXlvdXQoKTsKKworICAgIGJvb2wgZGVsYXlSZXBhaW50KCkgY29uc3QgeyByZXR1
cm4gbV9kZWxheVJlcGFpbnQ7IH0KKyAgICB2b2lkIHNldERlbGF5UmVwYWludChib29sIGQpIHsg
bV9kZWxheVJlcGFpbnQgPSBkOyB9CisKIHByaXZhdGU6CiAgICAgdm9pZCBhZGp1c3RQb2ludFRv
Q29sdW1uQ29udGVudHMoSW50UG9pbnQmKSBjb25zdDsKICAgICB2b2lkIGFkanVzdEZvckJvcmRl
ckZpdChpbnQgeCwgaW50JiBsZWZ0LCBpbnQmIHJpZ2h0KSBjb25zdDsgLy8gSGVscGVyIGZ1bmN0
aW9uIGZvciBib3JkZXJGaXRBZGp1c3QKQEAgLTQ5OSw2ICs1MDQsMTUgQEAgcHJpdmF0ZToKIAog
ICAgIE1heE1hcmdpbiogbV9tYXhNYXJnaW47CiAKKyAgICAvLyBUaGUgZm9sbG93aW5nIGZpZWxk
cyBhcmUgdXNlZCB3aGVuIGEgZmxleGlibGUgYm94IGlzIGxheW91dGluZworICAgIC8vIGl0cyBj
aGlsZHJlbi4gIEFzIGEgZmxleGlibGUgYm94IG1heSBsYXlvdXQgaXRzIGNoaWxkcmVuIHR3aWNl
LAorICAgIC8vIHdlIHNob3VsZCBub3QgdXBkYXRlIHRoZSBjaGlsZHJlbidzIHJlcGFpbnQgc2Ny
b2xsYmFycyBhbmQKKyAgICAvLyByZXBhaW50IHRoZW0gZm9yIHRoZSBmaXJzdCB0aW1lLgorICAg
IGJvb2wgbV9kZWxheVJlcGFpbnQ7CisgICAgTGF5b3V0UmVwYWludGVyKiBtX3JlcGFpbnRlcjsK
KyAgICBpbnQgbV9yZXBhaW50VG9wOworICAgIGludCBtX3JlcGFpbnRCb3R0b207CisKIHByb3Rl
Y3RlZDoKICAgICBSZW5kZXJPYmplY3RDaGlsZExpc3QgbV9jaGlsZHJlbjsKICAgICBSZW5kZXJM
aW5lQm94TGlzdCBtX2xpbmVCb3hlczsgICAvLyBBbGwgb2YgdGhlIHJvb3QgbGluZSBib3hlcyBj
cmVhdGVkIGZvciB0aGlzIGJsb2NrIGZsb3cuICBGb3IgZXhhbXBsZSwgPGRpdj5IZWxsbzxicj53
b3JsZC48L2Rpdj4gd2lsbCBoYXZlIHR3byB0b3RhbCBsaW5lcyBmb3IgdGhlIDxkaXY+LgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCmluZGV4IDFkY2VmMzYuLjhiMjYwNzUg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAorKysg
Yi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKQEAgLTQyOSw4ICs0Mjks
MTMgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0SG9yaXpvbnRhbEJveChib29sIHJl
bGF5b3V0Q2hpbGRyZW4pCiAgICAgICAgICAgICBjaGlsZC0+Y2FsY0hlaWdodCgpOwogICAgICAg
ICAgICAgaWYgKG9sZENoaWxkSGVpZ2h0ICE9IGNoaWxkLT5oZWlnaHQoKSkKICAgICAgICAgICAg
ICAgICBjaGlsZC0+c2V0Q2hpbGROZWVkc0xheW91dCh0cnVlLCBmYWxzZSk7Ci0gICAgICAgICAg
ICBjaGlsZC0+bGF5b3V0SWZOZWVkZWQoKTsKLSAgICAKKyAgICAgICAgICAgIGlmIChjaGlsZC0+
bmVlZHNMYXlvdXQoKSkgeworICAgICAgICAgICAgICAgIC8vIERlbGF5IHJlcGFpbnQgdW50aWwg
dGhlIHBvc2l0aW9uIGlzIGRldGVybWluZWQuCisgICAgICAgICAgICAgICAgaWYgKGNoaWxkLT5p
c1JlbmRlckJsb2NrKCkpCisgICAgICAgICAgICAgICAgICAgIHRvUmVuZGVyQmxvY2soY2hpbGQp
LT5zZXREZWxheVJlcGFpbnQodHJ1ZSk7CisgICAgICAgICAgICAgICAgY2hpbGQtPmxheW91dCgp
OworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAvLyBXZSBjYW4gcGxhY2UgdGhlIGNoaWxk
IG5vdywgdXNpbmcgb3VyIHZhbHVlIG9mIGJveC1hbGlnbi4KICAgICAgICAgICAgIHhQb3MgKz0g
Y2hpbGQtPm1hcmdpbkxlZnQoKTsKICAgICAgICAgICAgIGludCBjaGlsZFkgPSB5UG9zOwpAQCAt
NTYwLDYgKzU2NSwxOCBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRIb3Jpem9udGFs
Qm94KGJvb2wgcmVsYXlvdXRDaGlsZHJlbikKICAgICAgICAgfQogICAgIH0gd2hpbGUgKGhhdmVG
bGV4KTsKIAorICAgIGNoaWxkID0gaXRlcmF0b3IuZmlyc3QoKTsKKyAgICB3aGlsZSAoY2hpbGQp
IHsKKyAgICAgICAgaWYgKGNoaWxkLT5uZWVkc0xheW91dCgpICYmIGNoaWxkLT5pc1JlbmRlckJs
b2NrKCkpIHsKKyAgICAgICAgICAgIFJlbmRlckJsb2NrKiBibG9jayA9IHRvUmVuZGVyQmxvY2so
Y2hpbGQpOworICAgICAgICAgICAgaWYgKGJsb2NrLT5kZWxheVJlcGFpbnQoKSkgeworICAgICAg
ICAgICAgICAgIGJsb2NrLT5yZXBhaW50QmxvY2tBZnRlckxheW91dCgpOworICAgICAgICAgICAg
ICAgIGJsb2NrLT5zZXREZWxheVJlcGFpbnQoZmFsc2UpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIGNoaWxkID0gaXRlcmF0b3IubmV4dCgpOworICAgIH0KKwogICAgIG1fZmxl
eGluZ0NoaWxkcmVuID0gZmFsc2U7CiAgICAgCiAgICAgaWYgKHJlbWFpbmluZ1NwYWNlID4gMCAm
JiAoKHN0eWxlKCktPmRpcmVjdGlvbigpID09IExUUiAmJiBzdHlsZSgpLT5ib3hQYWNrKCkgIT0g
QlNUQVJUKSB8fApAQCAtODI2LDcgKzg0MywxMiBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94Ojps
YXlvdXRWZXJ0aWNhbEJveChib29sIHJlbGF5b3V0Q2hpbGRyZW4pCiAgICAgICAgICAgICBzZXRI
ZWlnaHQoaGVpZ2h0KCkgKyBjaGlsZC0+bWFyZ2luVG9wKCkpOwogICAgIAogICAgICAgICAgICAg
Ly8gTm93IGRvIGEgbGF5b3V0LgotICAgICAgICAgICAgY2hpbGQtPmxheW91dElmTmVlZGVkKCk7
CisgICAgICAgICAgICBpZiAoY2hpbGQtPm5lZWRzTGF5b3V0KCkpIHsKKyAgICAgICAgICAgICAg
ICAvLyBEZWxheSByZXBhaW50IHVudGlsIHRoZSBwb3NpdGlvbiBpcyBkZXRlcm1pbmVkLgorICAg
ICAgICAgICAgICAgIGlmIChjaGlsZC0+aXNSZW5kZXJCbG9jaygpKQorICAgICAgICAgICAgICAg
ICAgICB0b1JlbmRlckJsb2NrKGNoaWxkKS0+c2V0RGVsYXlSZXBhaW50KHRydWUpOworICAgICAg
ICAgICAgICAgIGNoaWxkLT5sYXlvdXQoKTsKKyAgICAgICAgICAgIH0KICAgICAKICAgICAgICAg
ICAgIC8vIFdlIGNhbiBwbGFjZSB0aGUgY2hpbGQgbm93LCB1c2luZyBvdXIgdmFsdWUgb2YgYm94
LWFsaWduLgogICAgICAgICAgICAgaW50IGNoaWxkWCA9IGJvcmRlckxlZnQoKSArIHBhZGRpbmdM
ZWZ0KCk7CkBAIC05NzcsNiArOTk5LDE4IEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmxheW91
dFZlcnRpY2FsQm94KGJvb2wgcmVsYXlvdXRDaGlsZHJlbikKICAgICAgICAgfSAgICAgICAgCiAg
ICAgfSB3aGlsZSAoaGF2ZUZsZXgpOwogCisgICAgY2hpbGQgPSBpdGVyYXRvci5maXJzdCgpOwor
ICAgIHdoaWxlIChjaGlsZCkgeworICAgICAgICBpZiAoY2hpbGQtPm5lZWRzTGF5b3V0KCkgJiYg
Y2hpbGQtPmlzUmVuZGVyQmxvY2soKSkgeworICAgICAgICAgICAgUmVuZGVyQmxvY2sqIGJsb2Nr
ID0gdG9SZW5kZXJCbG9jayhjaGlsZCk7CisgICAgICAgICAgICBpZiAoYmxvY2stPmRlbGF5UmVw
YWludCgpKSB7CisgICAgICAgICAgICAgICAgYmxvY2stPnJlcGFpbnRCbG9ja0FmdGVyTGF5b3V0
KCk7CisgICAgICAgICAgICAgICAgYmxvY2stPnNldERlbGF5UmVwYWludChmYWxzZSk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2hpbGQgPSBpdGVyYXRvci5uZXh0KCk7Cisg
ICAgfQorCiAgICAgaWYgKHN0eWxlKCktPmJveFBhY2soKSAhPSBCU1RBUlQgJiYgcmVtYWluaW5n
U3BhY2UgPiAwKSB7CiAgICAgICAgIC8vIENoaWxkcmVuIG11c3QgYmUgcmVwb3NpdGlvbmVkLgog
ICAgICAgICBpbnQgb2Zmc2V0ID0gMDsK
</data>
<flag name="review"
          id="15883"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31283</attachid>
            <date>2009-06-15 02:47:43 -0700</date>
            <delta_ts>2009-06-15 02:57:03 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>Patch-v2.patch</filename>
            <type>text/plain</type>
            <size>15007</size>
            <attacher name="Shinichiro Hamaji">hamaji</attacher>
            
              <data encoding="base64">NTUyM2I3NmRjYzljM2JkYjU2MzZiOWNmMmFkNjA1YjExOWViYWNkNwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDJjMTY1NDUu
LmFjMWYwMmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAwOS0wNi0xMSAgU2hpbmljaGlybyBI
YW1hamkgIDxoYW1hamlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTEzNQorICAgICAgICBEZWxheSB1cGRhdGluZyBzY3JvbGwgYmFyIGFuZCByZXBhaW50
aW5nIGNoaWxkcmVuIG9mIGZsZXhpYmxlCisgICAgICAgIGJveGVzIHVudGlsIHRoZWlyIHBvc2l0
aW9ucyBhcmUgZGV0ZXJtaW5lZC4gIEluIHRoaXMgd2F5IHdlIGNhbgorICAgICAgICBwcmV2ZW50
IGNoaWxkcmVuIG9mIGZsZXhpYmxlIGJveGVzIGZyb20gY2hhbmdpbmcgcG9zaXRpb25zIG9mCisg
ICAgICAgIHRoZWlyIHNjcm9sbGJhcnMgdXNpbmcgdGVudGF0aXZlIHBvc2l0aW9ucy4gIEFsc28s
IHRoaXMgbWF5CisgICAgICAgIGltcHJvdmUgdGhlIHBlcmZvcm1hbmNlIGEgYml0LgorCisgICAg
ICAgICogZmFzdC9mbGV4Ym94L3JlcGFpbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2ZsZXhib3gvcmVwYWludC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZsZXhi
b3gvcmVzb3VyY2VzL3JlcGFpbnQuanM6IEFkZGVkLgorCiAyMDA5LTA2LTA5ICBCcmVudCBGdWxn
aGFtICA8YmZ1bGdoYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBObyByZXZpZXcsIGJ1aWxkIGZp
eCBvbmx5LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mbGV4Ym94L3JlcGFpbnQtc2Ny
b2xsYmFyLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ZsZXhib3gvcmVwYWludC1z
Y3JvbGxiYXItZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5mZmYwNGI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mbGV4Ym94L3Jl
cGFpbnQtc2Nyb2xsYmFyLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwyMCBAQAorQ2hlY2sgaWYg
Y2hhbmdpbmcgZmxleGJveCdzIGNvbnRlbnQgZG9lc24ndCBjaGFuZ2UgdGhlIHN0YXRlIG9mIHNj
cm9sbC4gU2VlIHRoaXMgYnVnIGZvciBkZXRhaWw6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTEzNQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworCisK
KworCisKKworCisKKworbWVyb0wgaXBzdW0KK1BBU1MgZWxlbWVudC5zY3JvbGxUb3AgaXMgMTA4
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mbGV4Ym94L3JlcGFpbnQtc2Nyb2xsYmFyLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2ZsZXhib3gvcmVwYWludC1zY3JvbGxiYXIuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZGI3NTFmCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9mbGV4Ym94L3JlcGFpbnQtc2Nyb2xsYmFyLmh0bWwKQEAgLTAsMCAr
MSwxOCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgor
PGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRp
b24iPjwvcD4KKzxkaXYgc3R5bGU9ImRpc3BsYXk6IC13ZWJraXQtYm94Oy13ZWJraXQtYm94LW9y
aWVudDogdmVydGljYWw7IGhlaWdodDogNjlweDsiPgorICAgIDxkaXYgaWQ9ImRpdiIgc3R5bGU9
Im92ZXJmbG93LXk6IHNjcm9sbDsgb3V0bGluZTogbm9uZTsgd2lkdGg6IDgwcHg7IC13ZWJraXQt
Ym94LWZsZXg6MTsiPgorICAgICAgICA8YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxi
cj5Mb3JlbSBpcHN1bQorICAgIDwvZGl2PgorPC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcmVwYWludC1zY3JvbGxiYXIuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mbGV4Ym94
L3Jlc291cmNlcy9yZXBhaW50LXNjcm9sbGJhci5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZmxleGJv
eC9yZXNvdXJjZXMvcmVwYWludC1zY3JvbGxiYXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMGNjYjBhNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZmxleGJveC9yZXNvdXJjZXMvcmVwYWludC1zY3JvbGxiYXIuanMKQEAgLTAsMCArMSw5IEBACitk
ZXNjcmlwdGlvbigiQ2hlY2sgaWYgY2hhbmdpbmcgZmxleGJveCdzIGNvbnRlbnQgZG9lc24ndCBj
aGFuZ2UgdGhlIHN0YXRlIG9mIHNjcm9sbC4gU2VlIHRoaXMgYnVnIGZvciBkZXRhaWw6IGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTEzNSIpOworCit2YXIgZWxlbWVu
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXYiKTsKK2VsZW1lbnQuc2Nyb2xsVG9wID0g
MTA4OworZWxlbWVudC5sYXN0Q2hpbGQuZGF0YT0nbWVyb0wgaXBzdW0nOworCitzaG91bGRCZSgi
ZWxlbWVudC5zY3JvbGxUb3AiLCAiMTA4Iik7CisKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IGRlN2VhNmUuLjYyM2RmYjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMDktMDYtMTEgIFNoaW5pY2hpcm8g
SGFtYWppICA8aGFtYWppQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTUxMzUKKyAgICAgICAgRGVsYXkgdXBkYXRpbmcgc2Nyb2xsIGJhciBhbmQgcmVwYWlu
dGluZyBjaGlsZHJlbiBvZiBmbGV4aWJsZQorICAgICAgICBib3hlcyB1bnRpbCB0aGVpciBwb3Np
dGlvbnMgYXJlIGRldGVybWluZWQuICBJbiB0aGlzIHdheSB3ZSBjYW4KKyAgICAgICAgcHJldmVu
dCBjaGlsZHJlbiBvZiBmbGV4aWJsZSBib3hlcyBmcm9tIGNoYW5naW5nIHBvc2l0aW9ucyBvZgor
ICAgICAgICB0aGVpciBzY3JvbGxiYXJzIHVzaW5nIHRlbnRhdGl2ZSBwb3NpdGlvbnMuICBBbHNv
LCB0aGlzIG1heQorICAgICAgICBpbXByb3ZlIHRoZSBwZXJmb3JtYW5jZSBhIGJpdC4KKworICAg
ICAgICBUZXN0OiBmYXN0L2ZsZXhib3gvcmVwYWludC5odG1sCisKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OlJlbmRl
ckJsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpyZXBhaW50QmxvY2tBZnRl
ckxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bGF5b3V0QmxvY2spOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5oOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2s6OmRlbGF5UmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6
c2V0RGVsYXlSZXBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3gu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmxheW91dEhvcml6b250
YWxCb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmxheW91dFZlcnRp
Y2FsQm94KToKKwogMjAwOS0wNi0wOSAgUGV0ZXIgS2FzdGluZyAgPHBrYXN0aW5nQGdvb2dsZS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAKaW5kZXggODljZjExMi4uYjhjNTg2ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmNwcApAQCAtODQsNiArODQsOCBAQCBzdGF0aWMgUGVyY2VudEhlaWdodENvbnRhaW5lck1hcCog
Z1BlcmNlbnRIZWlnaHRDb250YWluZXJNYXAgPSAwOwogICAgIAogdHlwZWRlZiBXVEY6Okhhc2hN
YXA8UmVuZGVyQmxvY2sqLCBMaXN0SGFzaFNldDxSZW5kZXJJbmxpbmUqPio+IENvbnRpbnVhdGlv
bk91dGxpbmVUYWJsZU1hcDsKIAorUmVuZGVyQmxvY2s6OkRlbGF5ZWRSZXBhaW50TWFwKiBSZW5k
ZXJCbG9jazo6c19EZWxheWVkUmVwYWludE1hcCA9IDA7CisKIC8vIE91ciBNYXJnaW5JbmZvIHN0
YXRlIHVzZWQgd2hlbiBsYXlpbmcgb3V0IGJsb2NrIGNoaWxkcmVuLgogUmVuZGVyQmxvY2s6Ok1h
cmdpbkluZm86Ok1hcmdpbkluZm8oUmVuZGVyQmxvY2sqIGJsb2NrLCBpbnQgdG9wLCBpbnQgYm90
dG9tKQogewpAQCAtNzA3LDYgKzcwOSw2NyBAQCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXQoKQog
ICAgIH0KIH0KIAorUmVuZGVyQmxvY2s6OkRlbGF5ZWRSZXBhaW50KiBSZW5kZXJCbG9jazo6ZGVs
YXllZFJlcGFpbnQoKSBjb25zdAoreworICAgIERlbGF5ZWRSZXBhaW50KiByZXBhaW50ID0gMDsK
KyAgICBpZiAoc19EZWxheWVkUmVwYWludE1hcCkKKyAgICAgICAgcmVwYWludCA9IHNfRGVsYXll
ZFJlcGFpbnRNYXAtPmdldCh0aGlzKTsKKyAgICByZXR1cm4gcmVwYWludDsKK30KKwordm9pZCBS
ZW5kZXJCbG9jazo6c2V0RGVsYXlSZXBhaW50KGJvb2wgZCkKK3sKKyAgICBpZiAoZCkgeworICAg
ICAgICBpZiAoIXNfRGVsYXllZFJlcGFpbnRNYXApCisgICAgICAgICAgICBzX0RlbGF5ZWRSZXBh
aW50TWFwID0gbmV3IERlbGF5ZWRSZXBhaW50TWFwKCk7CisgICAgICAgIERlbGF5ZWRSZXBhaW50
KiByZXBhaW50ID0gbmV3IERlbGF5ZWRSZXBhaW50KCk7CisgICAgICAgIHNfRGVsYXllZFJlcGFp
bnRNYXAtPmFkZCh0aGlzLCByZXBhaW50KTsKKyAgICB9IGVsc2UgeworICAgICAgICBkZWxldGUg
c19EZWxheWVkUmVwYWludE1hcC0+dGFrZSh0aGlzKTsKKyAgICB9Cit9CisKK3ZvaWQgUmVuZGVy
QmxvY2s6OnJlcGFpbnRCbG9ja0FmdGVyTGF5b3V0KERlbGF5ZWRSZXBhaW50KiByZXBhaW50KQor
eworICAgIEFTU0VSVChuZWVkc0xheW91dCgpKTsKKworICAgIC8vIFVwZGF0ZSBvdXIgc2Nyb2xs
IGluZm9ybWF0aW9uIGlmIHdlJ3JlIG92ZXJmbG93OmF1dG8vc2Nyb2xsL2hpZGRlbiBub3cgdGhh
dCB3ZSBrbm93IGlmCisgICAgLy8gd2Ugb3ZlcmZsb3cgb3Igbm90LgorICAgIGlmIChoYXNPdmVy
Zmxvd0NsaXAoKSkKKyAgICAgICAgbGF5ZXIoKS0+dXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0
KCk7CisKKyAgICAvLyBSZXBhaW50IHdpdGggb3VyIG5ldyBib3VuZHMgaWYgdGhleSBhcmUgZGlm
ZmVyZW50IGZyb20gb3VyIG9sZCBib3VuZHMuCisgICAgYm9vbCBkaWRGdWxsUmVwYWludCA9IHJl
cGFpbnQtPm1fcmVwYWludGVyLT5yZXBhaW50QWZ0ZXJMYXlvdXQoKTsKKyAgICBpZiAoIWRpZEZ1
bGxSZXBhaW50ICYmIHJlcGFpbnQtPm1fcmVwYWludFRvcCAhPSByZXBhaW50LT5tX3JlcGFpbnRC
b3R0b20gJiYgKHN0eWxlKCktPnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFIHx8IGVuY2xvc2luZ0xh
eWVyKCktPmhhc1Zpc2libGVDb250ZW50KCkpKSB7CisgICAgICAgIEludFJlY3QgcmVwYWludFJl
Y3QobV9vdmVyZmxvd0xlZnQsIHJlcGFpbnQtPm1fcmVwYWludFRvcCwgbV9vdmVyZmxvd1dpZHRo
IC0gbV9vdmVyZmxvd0xlZnQsIHJlcGFpbnQtPm1fcmVwYWludEJvdHRvbSAtIHJlcGFpbnQtPm1f
cmVwYWludFRvcCk7CisKKyAgICAgICAgLy8gRklYTUU6IERlYWwgd2l0aCBtdWx0aXBsZSBjb2x1
bW4gcmVwYWludGluZy4gIFdlIGhhdmUgdG8gc3BsaXQgdGhlIHJlcGFpbnQKKyAgICAgICAgLy8g
cmVjdCB1cCBpbnRvIG11bHRpcGxlIHJlY3RzIGlmIGl0IHNwYW5zIGNvbHVtbnMuCisKKyAgICAg
ICAgcmVwYWludFJlY3QuaW5mbGF0ZShtYXhpbWFsT3V0bGluZVNpemUoUGFpbnRQaGFzZU91dGxp
bmUpKTsKKworICAgICAgICBpZiAoaGFzT3ZlcmZsb3dDbGlwKCkpIHsKKyAgICAgICAgICAgIC8v
IEFkanVzdCByZXBhaW50IHJlY3QgZm9yIHNjcm9sbCBvZmZzZXQKKyAgICAgICAgICAgIGludCB4
ID0gcmVwYWludFJlY3QueCgpOworICAgICAgICAgICAgaW50IHkgPSByZXBhaW50UmVjdC55KCk7
CisgICAgICAgICAgICBsYXllcigpLT5zdWJ0cmFjdFNjcm9sbGVkQ29udGVudE9mZnNldCh4LCB5
KTsKKyAgICAgICAgICAgIHJlcGFpbnRSZWN0LnNldFgoeCk7CisgICAgICAgICAgICByZXBhaW50
UmVjdC5zZXRZKHkpOworCisgICAgICAgICAgICAvLyBEb24ndCBhbGxvdyB0aGlzIHJlY3QgdG8g
c3BpbGwgb3V0IG9mIG91ciBvdmVyZmxvdyBib3guCisgICAgICAgICAgICByZXBhaW50UmVjdC5p
bnRlcnNlY3QoSW50UmVjdCgwLCAwLCB3aWR0aCgpLCBoZWlnaHQoKSkpOworICAgICAgICB9CisK
KyAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSByZWN0IGlzIHN0aWxsIG5vbi1lbXB0eSBhZnRlciBp
bnRlcnNlY3RpbmcgZm9yIG92ZXJmbG93IGFib3ZlCisgICAgICAgIGlmICghcmVwYWludFJlY3Qu
aXNFbXB0eSgpKSB7CisgICAgICAgICAgICByZXBhaW50UmVjdGFuZ2xlKHJlcGFpbnRSZWN0KTsg
Ly8gV2UgbmVlZCB0byBkbyBhIHBhcnRpYWwgcmVwYWludCBvZiBvdXIgY29udGVudC4KKyAgICAg
ICAgICAgIGlmIChoYXNSZWZsZWN0aW9uKCkpCisgICAgICAgICAgICAgICAgcmVwYWludFJlY3Rh
bmdsZShyZWZsZWN0ZWRSZWN0KHJlcGFpbnRSZWN0KSk7CisgICAgICAgIH0KKyAgICB9CisgICAg
c2V0TmVlZHNMYXlvdXQoZmFsc2UpOworfQorCiB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRCbG9j
ayhib29sIHJlbGF5b3V0Q2hpbGRyZW4pCiB7CiAgICAgQVNTRVJUKG5lZWRzTGF5b3V0KCkpOwpA
QCAtNzE3LDcgKzc4MCwxMyBAQCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRCbG9jayhib29sIHJl
bGF5b3V0Q2hpbGRyZW4pCiAgICAgaWYgKCFyZWxheW91dENoaWxkcmVuICYmIGxheW91dE9ubHlQ
b3NpdGlvbmVkT2JqZWN0cygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBMYXlvdXRSZXBhaW50
ZXIgcmVwYWludGVyKCp0aGlzLCBtX2V2ZXJIYWRMYXlvdXQgJiYgY2hlY2tGb3JSZXBhaW50RHVy
aW5nTGF5b3V0KCkpOworICAgIERlbGF5ZWRSZXBhaW50KiByZXBhaW50ID0gZGVsYXllZFJlcGFp
bnQoKTsKKyAgICBib29sIGRlbGF5UmVwYWludCA9IHJlcGFpbnQgIT0gMDsKKyAgICBEZWxheWVk
UmVwYWludCBub3REZWxheWVkOworICAgIGlmICghcmVwYWludCkKKyAgICAgICAgcmVwYWludCA9
ICZub3REZWxheWVkOworICAgIHJlcGFpbnQtPm1fcmVwYWludGVyID0gbmV3IExheW91dFJlcGFp
bnRlcigqdGhpcywgbV9ldmVySGFkTGF5b3V0ICYmIGNoZWNrRm9yUmVwYWludER1cmluZ0xheW91
dCgpKTsKKwogICAgIExheW91dFN0YXRlTWFpbnRhaW5lciBzdGF0ZVB1c2hlcih2aWV3KCksIHRo
aXMsIEludFNpemUoeCgpLCB5KCkpLCBoYXNDb2x1bW5zKCkgfHwgaGFzVHJhbnNmb3JtKCkgfHwg
aGFzUmVmbGVjdGlvbigpKTsKIAogICAgIGludCBvbGRXaWR0aCA9IHdpZHRoKCk7CkBAIC03NzIs
MTEgKzg0MSwxMSBAQCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0
Q2hpbGRyZW4pCiAgICAgICAgICAgICBsYXllcigpLT5zZXRIYXNWZXJ0aWNhbFNjcm9sbGJhcih0
cnVlKTsKICAgICB9CiAKLSAgICBpbnQgcmVwYWludFRvcCA9IDA7Ci0gICAgaW50IHJlcGFpbnRC
b3R0b20gPSAwOworICAgIHJlcGFpbnQtPm1fcmVwYWludFRvcCA9IDA7CisgICAgcmVwYWludC0+
bV9yZXBhaW50Qm90dG9tID0gMDsKICAgICBpbnQgbWF4RmxvYXRCb3R0b20gPSAwOwogICAgIGlm
IChjaGlsZHJlbklubGluZSgpKQotICAgICAgICBsYXlvdXRJbmxpbmVDaGlsZHJlbihyZWxheW91
dENoaWxkcmVuLCByZXBhaW50VG9wLCByZXBhaW50Qm90dG9tKTsKKyAgICAgICAgbGF5b3V0SW5s
aW5lQ2hpbGRyZW4ocmVsYXlvdXRDaGlsZHJlbiwgcmVwYWludC0+bV9yZXBhaW50VG9wLCByZXBh
aW50LT5tX3JlcGFpbnRCb3R0b20pOwogICAgIGVsc2UKICAgICAgICAgbGF5b3V0QmxvY2tDaGls
ZHJlbihyZWxheW91dENoaWxkcmVuLCBtYXhGbG9hdEJvdHRvbSk7CiAKQEAgLTg0Miw0MSArOTEx
LDggQEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVu
KQogCiAgICAgc3RhdGVQdXNoZXIucG9wKCk7CiAKLSAgICAvLyBVcGRhdGUgb3VyIHNjcm9sbCBp
bmZvcm1hdGlvbiBpZiB3ZSdyZSBvdmVyZmxvdzphdXRvL3Njcm9sbC9oaWRkZW4gbm93IHRoYXQg
d2Uga25vdyBpZgotICAgIC8vIHdlIG92ZXJmbG93IG9yIG5vdC4KLSAgICBpZiAoaGFzT3ZlcmZs
b3dDbGlwKCkpCi0gICAgICAgIGxheWVyKCktPnVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dCgp
OwotCi0gICAgLy8gUmVwYWludCB3aXRoIG91ciBuZXcgYm91bmRzIGlmIHRoZXkgYXJlIGRpZmZl
cmVudCBmcm9tIG91ciBvbGQgYm91bmRzLgotICAgIGJvb2wgZGlkRnVsbFJlcGFpbnQgPSByZXBh
aW50ZXIucmVwYWludEFmdGVyTGF5b3V0KCk7Ci0gICAgaWYgKCFkaWRGdWxsUmVwYWludCAmJiBy
ZXBhaW50VG9wICE9IHJlcGFpbnRCb3R0b20gJiYgKHN0eWxlKCktPnZpc2liaWxpdHkoKSA9PSBW
SVNJQkxFIHx8IGVuY2xvc2luZ0xheWVyKCktPmhhc1Zpc2libGVDb250ZW50KCkpKSB7Ci0gICAg
ICAgIEludFJlY3QgcmVwYWludFJlY3QobV9vdmVyZmxvd0xlZnQsIHJlcGFpbnRUb3AsIG1fb3Zl
cmZsb3dXaWR0aCAtIG1fb3ZlcmZsb3dMZWZ0LCByZXBhaW50Qm90dG9tIC0gcmVwYWludFRvcCk7
Ci0KLSAgICAgICAgLy8gRklYTUU6IERlYWwgd2l0aCBtdWx0aXBsZSBjb2x1bW4gcmVwYWludGlu
Zy4gIFdlIGhhdmUgdG8gc3BsaXQgdGhlIHJlcGFpbnQKLSAgICAgICAgLy8gcmVjdCB1cCBpbnRv
IG11bHRpcGxlIHJlY3RzIGlmIGl0IHNwYW5zIGNvbHVtbnMuCi0KLSAgICAgICAgcmVwYWludFJl
Y3QuaW5mbGF0ZShtYXhpbWFsT3V0bGluZVNpemUoUGFpbnRQaGFzZU91dGxpbmUpKTsKLSAgICAg
ICAgCi0gICAgICAgIGlmIChoYXNPdmVyZmxvd0NsaXAoKSkgewotICAgICAgICAgICAgLy8gQWRq
dXN0IHJlcGFpbnQgcmVjdCBmb3Igc2Nyb2xsIG9mZnNldAotICAgICAgICAgICAgaW50IHggPSBy
ZXBhaW50UmVjdC54KCk7Ci0gICAgICAgICAgICBpbnQgeSA9IHJlcGFpbnRSZWN0LnkoKTsKLSAg
ICAgICAgICAgIGxheWVyKCktPnN1YnRyYWN0U2Nyb2xsZWRDb250ZW50T2Zmc2V0KHgsIHkpOwot
ICAgICAgICAgICAgcmVwYWludFJlY3Quc2V0WCh4KTsKLSAgICAgICAgICAgIHJlcGFpbnRSZWN0
LnNldFkoeSk7Ci0KLSAgICAgICAgICAgIC8vIERvbid0IGFsbG93IHRoaXMgcmVjdCB0byBzcGls
bCBvdXQgb2Ygb3VyIG92ZXJmbG93IGJveC4KLSAgICAgICAgICAgIHJlcGFpbnRSZWN0LmludGVy
c2VjdChJbnRSZWN0KDAsIDAsIHdpZHRoKCksIGhlaWdodCgpKSk7Ci0gICAgICAgIH0KLQotICAg
ICAgICAvLyBNYWtlIHN1cmUgdGhlIHJlY3QgaXMgc3RpbGwgbm9uLWVtcHR5IGFmdGVyIGludGVy
c2VjdGluZyBmb3Igb3ZlcmZsb3cgYWJvdmUKLSAgICAgICAgaWYgKCFyZXBhaW50UmVjdC5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgICAgIHJlcGFpbnRSZWN0YW5nbGUocmVwYWludFJlY3QpOyAvLyBX
ZSBuZWVkIHRvIGRvIGEgcGFydGlhbCByZXBhaW50IG9mIG91ciBjb250ZW50LgotICAgICAgICAg
ICAgaWYgKGhhc1JlZmxlY3Rpb24oKSkKLSAgICAgICAgICAgICAgICByZXBhaW50UmVjdGFuZ2xl
KHJlZmxlY3RlZFJlY3QocmVwYWludFJlY3QpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBzZXRO
ZWVkc0xheW91dChmYWxzZSk7CisgICAgaWYgKCFkZWxheVJlcGFpbnQpCisgICAgICAgIHJlcGFp
bnRCbG9ja0FmdGVyTGF5b3V0KHJlcGFpbnQpOwogfQogCiBib29sIFJlbmRlckJsb2NrOjpleHBh
bmRzVG9FbmNsb3NlT3ZlcmhhbmdpbmdGbG9hdHMoKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmgKaW5kZXggZjMxM2IzZC4uYTdjYTU1OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCkBAIC0z
MjUsNiArMzI1LDI4IEBAIHB1YmxpYzoKICAgICAvLyBzdHlsZSBmcm9tIHRoaXMgUmVuZGVyQmxv
Y2suCiAgICAgUmVuZGVyQmxvY2sqIGNyZWF0ZUFub255bW91c0Jsb2NrKCkgY29uc3Q7CiAKKyAg
ICAvLyBVc2VkIHdoZW4gYSBmbGV4aWJsZSBib3ggaXMgbGF5b3V0aW5nIGl0cyBjaGlsZHJlbi4g
IEFzIGEKKyAgICAvLyBmbGV4aWJsZSBib3ggbWF5IGxheW91dCBpdHMgY2hpbGRyZW4gdHdpY2Us
IHdlIHNob3VsZCBub3QKKyAgICAvLyB1cGRhdGUgdGhlIGNoaWxkcmVuJ3MgcmVwYWludCBzY3Jv
bGxiYXJzIGFuZCByZXBhaW50IHRoZW0gZm9yCisgICAgLy8gdGhlIGZpcnN0IHRpbWUuCisgICAg
c3RydWN0IERlbGF5ZWRSZXBhaW50IHsKKyAgICAgICAgRGVsYXllZFJlcGFpbnQoKQorICAgICAg
ICAgICAgOiBtX3JlcGFpbnRlcigwKQorICAgICAgICAgICAgLCBtX3JlcGFpbnRUb3AoMCkKKyAg
ICAgICAgICAgICwgbV9yZXBhaW50Qm90dG9tKDApCisgICAgICAgICAgICB7IH0KKyAgICAgICAg
fkRlbGF5ZWRSZXBhaW50KCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVsZXRlIG1fcmVwYWlu
dGVyOworICAgICAgICB9CisgICAgICAgIExheW91dFJlcGFpbnRlciogbV9yZXBhaW50ZXI7Cisg
ICAgICAgIGludCBtX3JlcGFpbnRUb3A7CisgICAgICAgIGludCBtX3JlcGFpbnRCb3R0b207Cisg
ICAgfTsKKyAgICBEZWxheWVkUmVwYWludCogZGVsYXllZFJlcGFpbnQoKSBjb25zdDsKKyAgICB2
b2lkIHNldERlbGF5UmVwYWludChib29sIGQpOworICAgIHZvaWQgcmVwYWludEJsb2NrQWZ0ZXJM
YXlvdXQoRGVsYXllZFJlcGFpbnQqIHJlcGFpbnQpOworCiBwcml2YXRlOgogICAgIHZvaWQgYWRq
dXN0UG9pbnRUb0NvbHVtbkNvbnRlbnRzKEludFBvaW50JikgY29uc3Q7CiAgICAgdm9pZCBhZGp1
c3RGb3JCb3JkZXJGaXQoaW50IHgsIGludCYgbGVmdCwgaW50JiByaWdodCkgY29uc3Q7IC8vIEhl
bHBlciBmdW5jdGlvbiBmb3IgYm9yZGVyRml0QWRqdXN0CkBAIC00OTksNiArNTIxLDkgQEAgcHJp
dmF0ZToKIAogICAgIE1heE1hcmdpbiogbV9tYXhNYXJnaW47CiAKKyAgICB0eXBlZGVmIFdURjo6
SGFzaE1hcDxjb25zdCBSZW5kZXJCbG9jayosIERlbGF5ZWRSZXBhaW50Kj4gRGVsYXllZFJlcGFp
bnRNYXA7CisgICAgc3RhdGljIERlbGF5ZWRSZXBhaW50TWFwKiBzX0RlbGF5ZWRSZXBhaW50TWFw
OworCiBwcm90ZWN0ZWQ6CiAgICAgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0IG1fY2hpbGRyZW47CiAg
ICAgUmVuZGVyTGluZUJveExpc3QgbV9saW5lQm94ZXM7ICAgLy8gQWxsIG9mIHRoZSByb290IGxp
bmUgYm94ZXMgY3JlYXRlZCBmb3IgdGhpcyBibG9jayBmbG93LiAgRm9yIGV4YW1wbGUsIDxkaXY+
SGVsbG88YnI+d29ybGQuPC9kaXY+IHdpbGwgaGF2ZSB0d28gdG90YWwgbGluZXMgZm9yIHRoZSA8
ZGl2Pi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNw
cCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAppbmRleCAxZGNlZjM2
Li42MzY5YWYwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJv
eC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCkBAIC00
MjksOCArNDI5LDEzIEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmxheW91dEhvcml6b250YWxC
b3goYm9vbCByZWxheW91dENoaWxkcmVuKQogICAgICAgICAgICAgY2hpbGQtPmNhbGNIZWlnaHQo
KTsKICAgICAgICAgICAgIGlmIChvbGRDaGlsZEhlaWdodCAhPSBjaGlsZC0+aGVpZ2h0KCkpCiAg
ICAgICAgICAgICAgICAgY2hpbGQtPnNldENoaWxkTmVlZHNMYXlvdXQodHJ1ZSwgZmFsc2UpOwot
ICAgICAgICAgICAgY2hpbGQtPmxheW91dElmTmVlZGVkKCk7Ci0gICAgCisgICAgICAgICAgICBp
ZiAoY2hpbGQtPm5lZWRzTGF5b3V0KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBEZWxheSByZXBh
aW50IHVudGlsIHRoZSBwb3NpdGlvbiBpcyBkZXRlcm1pbmVkLgorICAgICAgICAgICAgICAgIGlm
IChjaGlsZC0+aXNSZW5kZXJCbG9jaygpKQorICAgICAgICAgICAgICAgICAgICB0b1JlbmRlckJs
b2NrKGNoaWxkKS0+c2V0RGVsYXlSZXBhaW50KHRydWUpOworICAgICAgICAgICAgICAgIGNoaWxk
LT5sYXlvdXQoKTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgLy8gV2UgY2FuIHBsYWNl
IHRoZSBjaGlsZCBub3csIHVzaW5nIG91ciB2YWx1ZSBvZiBib3gtYWxpZ24uCiAgICAgICAgICAg
ICB4UG9zICs9IGNoaWxkLT5tYXJnaW5MZWZ0KCk7CiAgICAgICAgICAgICBpbnQgY2hpbGRZID0g
eVBvczsKQEAgLTU2MCw2ICs1NjUsMTggQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0
SG9yaXpvbnRhbEJveChib29sIHJlbGF5b3V0Q2hpbGRyZW4pCiAgICAgICAgIH0KICAgICB9IHdo
aWxlIChoYXZlRmxleCk7CiAKKyAgICBjaGlsZCA9IGl0ZXJhdG9yLmZpcnN0KCk7CisgICAgd2hp
bGUgKGNoaWxkKSB7CisgICAgICAgIGlmIChjaGlsZC0+bmVlZHNMYXlvdXQoKSAmJiBjaGlsZC0+
aXNSZW5kZXJCbG9jaygpKSB7CisgICAgICAgICAgICBSZW5kZXJCbG9jayogYmxvY2sgPSB0b1Jl
bmRlckJsb2NrKGNoaWxkKTsKKyAgICAgICAgICAgIGlmIChSZW5kZXJCbG9jazo6RGVsYXllZFJl
cGFpbnQqIHJlcGFpbnQgPSBibG9jay0+ZGVsYXllZFJlcGFpbnQoKSkgeworICAgICAgICAgICAg
ICAgIGJsb2NrLT5yZXBhaW50QmxvY2tBZnRlckxheW91dChyZXBhaW50KTsKKyAgICAgICAgICAg
ICAgICBibG9jay0+c2V0RGVsYXlSZXBhaW50KGZhbHNlKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICBjaGlsZCA9IGl0ZXJhdG9yLm5leHQoKTsKKyAgICB9CisKICAgICBtX2Zs
ZXhpbmdDaGlsZHJlbiA9IGZhbHNlOwogICAgIAogICAgIGlmIChyZW1haW5pbmdTcGFjZSA+IDAg
JiYgKChzdHlsZSgpLT5kaXJlY3Rpb24oKSA9PSBMVFIgJiYgc3R5bGUoKS0+Ym94UGFjaygpICE9
IEJTVEFSVCkgfHwKQEAgLTgyNiw3ICs4NDMsMTIgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6
bGF5b3V0VmVydGljYWxCb3goYm9vbCByZWxheW91dENoaWxkcmVuKQogICAgICAgICAgICAgc2V0
SGVpZ2h0KGhlaWdodCgpICsgY2hpbGQtPm1hcmdpblRvcCgpKTsKICAgICAKICAgICAgICAgICAg
IC8vIE5vdyBkbyBhIGxheW91dC4KLSAgICAgICAgICAgIGNoaWxkLT5sYXlvdXRJZk5lZWRlZCgp
OworICAgICAgICAgICAgaWYgKGNoaWxkLT5uZWVkc0xheW91dCgpKSB7CisgICAgICAgICAgICAg
ICAgLy8gRGVsYXkgcmVwYWludCB1bnRpbCB0aGUgcG9zaXRpb24gaXMgZGV0ZXJtaW5lZC4KKyAg
ICAgICAgICAgICAgICBpZiAoY2hpbGQtPmlzUmVuZGVyQmxvY2soKSkKKyAgICAgICAgICAgICAg
ICAgICAgdG9SZW5kZXJCbG9jayhjaGlsZCktPnNldERlbGF5UmVwYWludCh0cnVlKTsKKyAgICAg
ICAgICAgICAgICBjaGlsZC0+bGF5b3V0KCk7CisgICAgICAgICAgICB9CiAgICAgCiAgICAgICAg
ICAgICAvLyBXZSBjYW4gcGxhY2UgdGhlIGNoaWxkIG5vdywgdXNpbmcgb3VyIHZhbHVlIG9mIGJv
eC1hbGlnbi4KICAgICAgICAgICAgIGludCBjaGlsZFggPSBib3JkZXJMZWZ0KCkgKyBwYWRkaW5n
TGVmdCgpOwpAQCAtOTc3LDYgKzk5OSwxOCBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94OjpsYXlv
dXRWZXJ0aWNhbEJveChib29sIHJlbGF5b3V0Q2hpbGRyZW4pCiAgICAgICAgIH0gICAgICAgIAog
ICAgIH0gd2hpbGUgKGhhdmVGbGV4KTsKIAorICAgIGNoaWxkID0gaXRlcmF0b3IuZmlyc3QoKTsK
KyAgICB3aGlsZSAoY2hpbGQpIHsKKyAgICAgICAgaWYgKGNoaWxkLT5uZWVkc0xheW91dCgpICYm
IGNoaWxkLT5pc1JlbmRlckJsb2NrKCkpIHsKKyAgICAgICAgICAgIFJlbmRlckJsb2NrKiBibG9j
ayA9IHRvUmVuZGVyQmxvY2soY2hpbGQpOworICAgICAgICAgICAgaWYgKFJlbmRlckJsb2NrOjpE
ZWxheWVkUmVwYWludCogcmVwYWludCA9IGJsb2NrLT5kZWxheWVkUmVwYWludCgpKSB7CisgICAg
ICAgICAgICAgICAgYmxvY2stPnJlcGFpbnRCbG9ja0FmdGVyTGF5b3V0KHJlcGFpbnQpOworICAg
ICAgICAgICAgICAgIGJsb2NrLT5zZXREZWxheVJlcGFpbnQoZmFsc2UpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIGNoaWxkID0gaXRlcmF0b3IubmV4dCgpOworICAgIH0KKwog
ICAgIGlmIChzdHlsZSgpLT5ib3hQYWNrKCkgIT0gQlNUQVJUICYmIHJlbWFpbmluZ1NwYWNlID4g
MCkgewogICAgICAgICAvLyBDaGlsZHJlbiBtdXN0IGJlIHJlcG9zaXRpb25lZC4KICAgICAgICAg
aW50IG9mZnNldCA9IDA7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31284</attachid>
            <date>2009-06-15 02:56:59 -0700</date>
            <delta_ts>2009-06-19 00:43:27 -0700</delta_ts>
            <desc>Patch v3</desc>
            <filename>Patch-v3.patch</filename>
            <type>text/plain</type>
            <size>15047</size>
            <attacher name="Shinichiro Hamaji">hamaji</attacher>
            
              <data encoding="base64">MDViY2E1ZDQ4MjM2ODYxY2I4YjFhYTJlNTU2OWExZGY4N2VmMzgyYgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDJjMTY1NDUu
LmE1MzJlMTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAwOS0wNi0xMSAgU2hpbmljaGlybyBI
YW1hamkgIDxoYW1hamlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTEzNQorICAgICAgICBEZWxheSB1cGRhdGluZyBzY3JvbGwgYmFyIGFuZCByZXBhaW50
aW5nIGNoaWxkcmVuIG9mIGZsZXhpYmxlCisgICAgICAgIGJveGVzIHVudGlsIHRoZWlyIHBvc2l0
aW9ucyBhcmUgZGV0ZXJtaW5lZC4gIEluIHRoaXMgd2F5IHdlIGNhbgorICAgICAgICBwcmV2ZW50
IGNoaWxkcmVuIG9mIGZsZXhpYmxlIGJveGVzIGZyb20gY2hhbmdpbmcgcG9zaXRpb25zIG9mCisg
ICAgICAgIHRoZWlyIHNjcm9sbGJhcnMgdXNpbmcgdGVudGF0aXZlIHBvc2l0aW9ucy4gIEFsc28s
IHRoaXMgbWF5CisgICAgICAgIGltcHJvdmUgdGhlIHBlcmZvcm1hbmNlIGEgYml0LgorCisgICAg
ICAgICogZmFzdC9mbGV4Ym94L3JlcGFpbnQtc2Nyb2xsYmFyLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9mbGV4Ym94L3JlcGFpbnQtc2Nyb2xsYmFyLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZmxleGJveC9yZXNvdXJjZXMvcmVwYWludC1zY3JvbGxiYXIuanM6IEFk
ZGVkLgorCiAyMDA5LTA2LTA5ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBObyByZXZpZXcsIGJ1aWxkIGZpeCBvbmx5LgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9mbGV4Ym94L3JlcGFpbnQtc2Nyb2xsYmFyLWV4cGVjdGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2ZsZXhib3gvcmVwYWludC1zY3JvbGxiYXItZXhwZWN0ZWQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZmYwNGI0Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9mbGV4Ym94L3JlcGFpbnQtc2Nyb2xsYmFyLWV4cGVjdGVkLmh0
bWwKQEAgLTAsMCArMSwyMCBAQAorQ2hlY2sgaWYgY2hhbmdpbmcgZmxleGJveCdzIGNvbnRlbnQg
ZG9lc24ndCBjaGFuZ2UgdGhlIHN0YXRlIG9mIHNjcm9sbC4gU2VlIHRoaXMgYnVnIGZvciBkZXRh
aWw6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTEzNQorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworCisKKworCisKKworCisKKworbWVyb0wgaXBzdW0K
K1BBU1MgZWxlbWVudC5zY3JvbGxUb3AgaXMgMTA4CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9m
bGV4Ym94L3JlcGFpbnQtc2Nyb2xsYmFyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ZsZXhib3gv
cmVwYWludC1zY3JvbGxiYXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4wZGI3NTFmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mbGV4Ym94L3Jl
cGFpbnQtc2Nyb2xsYmFyLmh0bWwKQEAgLTAsMCArMSwxOCBAQAorPCFET0NUWVBFIEhUTUwgUFVC
TElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxz
Y3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgc3R5bGU9ImRpc3Bs
YXk6IC13ZWJraXQtYm94Oy13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7IGhlaWdodDogNjlw
eDsiPgorICAgIDxkaXYgaWQ9ImRpdiIgc3R5bGU9Im92ZXJmbG93LXk6IHNjcm9sbDsgb3V0bGlu
ZTogbm9uZTsgd2lkdGg6IDgwcHg7IC13ZWJraXQtYm94LWZsZXg6MTsiPgorICAgICAgICA8YnI+
PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj5Mb3JlbSBpcHN1bQorICAgIDwvZGl2Pgor
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
cmVwYWludC1zY3JvbGxiYXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mbGV4Ym94L3Jlc291cmNlcy9yZXBhaW50LXNjcm9sbGJh
ci5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZmxleGJveC9yZXNvdXJjZXMvcmVwYWludC1zY3JvbGxi
YXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGNjYjBhNwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZmxleGJveC9yZXNvdXJjZXMvcmVwYWludC1z
Y3JvbGxiYXIuanMKQEAgLTAsMCArMSw5IEBACitkZXNjcmlwdGlvbigiQ2hlY2sgaWYgY2hhbmdp
bmcgZmxleGJveCdzIGNvbnRlbnQgZG9lc24ndCBjaGFuZ2UgdGhlIHN0YXRlIG9mIHNjcm9sbC4g
U2VlIHRoaXMgYnVnIGZvciBkZXRhaWw6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTEzNSIpOworCit2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJkaXYiKTsKK2VsZW1lbnQuc2Nyb2xsVG9wID0gMTA4OworZWxlbWVudC5sYXN0Q2hpbGQuZGF0
YT0nbWVyb0wgaXBzdW0nOworCitzaG91bGRCZSgiZWxlbWVudC5zY3JvbGxUb3AiLCAiMTA4Iik7
CisKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGRlN2VhNmUuLmZhMmZhZjEgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjcgQEAKKzIwMDktMDYtMTEgIFNoaW5pY2hpcm8gSGFtYWppICA8aGFtYWppQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxMzUKKyAgICAgICAgRGVsYXkg
dXBkYXRpbmcgc2Nyb2xsIGJhciBhbmQgcmVwYWludGluZyBjaGlsZHJlbiBvZiBmbGV4aWJsZQor
ICAgICAgICBib3hlcyB1bnRpbCB0aGVpciBwb3NpdGlvbnMgYXJlIGRldGVybWluZWQuICBJbiB0
aGlzIHdheSB3ZSBjYW4KKyAgICAgICAgcHJldmVudCBjaGlsZHJlbiBvZiBmbGV4aWJsZSBib3hl
cyBmcm9tIGNoYW5naW5nIHBvc2l0aW9ucyBvZgorICAgICAgICB0aGVpciBzY3JvbGxiYXJzIHVz
aW5nIHRlbnRhdGl2ZSBwb3NpdGlvbnMuICBBbHNvLCB0aGlzIG1heQorICAgICAgICBpbXByb3Zl
IHRoZSBwZXJmb3JtYW5jZSBhIGJpdC4KKworICAgICAgICBUZXN0OiBmYXN0L2ZsZXhib3gvcmVw
YWludC1zY3JvbGxiYXIuaHRtbAorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpSZW5kZXJCbG9jayk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cmVwYWludEJsb2NrQWZ0ZXJMYXlvdXQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxheW91dEJsb2NrKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQmxvY2suaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpkZWxheVJl
cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnNldERlbGF5UmVwYWludCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRIb3Jpem9udGFsQm94KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRWZXJ0aWNhbEJveCk6CisKIDIwMDkt
MDYtMDkgIFBldGVyIEthc3RpbmcgIDxwa2FzdGluZ0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IDg5
Y2YxMTIuLmI4YzU4NmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTg0LDYgKzg0
LDggQEAgc3RhdGljIFBlcmNlbnRIZWlnaHRDb250YWluZXJNYXAqIGdQZXJjZW50SGVpZ2h0Q29u
dGFpbmVyTWFwID0gMDsKICAgICAKIHR5cGVkZWYgV1RGOjpIYXNoTWFwPFJlbmRlckJsb2NrKiwg
TGlzdEhhc2hTZXQ8UmVuZGVySW5saW5lKj4qPiBDb250aW51YXRpb25PdXRsaW5lVGFibGVNYXA7
CiAKK1JlbmRlckJsb2NrOjpEZWxheWVkUmVwYWludE1hcCogUmVuZGVyQmxvY2s6OnNfRGVsYXll
ZFJlcGFpbnRNYXAgPSAwOworCiAvLyBPdXIgTWFyZ2luSW5mbyBzdGF0ZSB1c2VkIHdoZW4gbGF5
aW5nIG91dCBibG9jayBjaGlsZHJlbi4KIFJlbmRlckJsb2NrOjpNYXJnaW5JbmZvOjpNYXJnaW5J
bmZvKFJlbmRlckJsb2NrKiBibG9jaywgaW50IHRvcCwgaW50IGJvdHRvbSkKIHsKQEAgLTcwNyw2
ICs3MDksNjcgQEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0KCkKICAgICB9CiB9CiAKK1JlbmRl
ckJsb2NrOjpEZWxheWVkUmVwYWludCogUmVuZGVyQmxvY2s6OmRlbGF5ZWRSZXBhaW50KCkgY29u
c3QKK3sKKyAgICBEZWxheWVkUmVwYWludCogcmVwYWludCA9IDA7CisgICAgaWYgKHNfRGVsYXll
ZFJlcGFpbnRNYXApCisgICAgICAgIHJlcGFpbnQgPSBzX0RlbGF5ZWRSZXBhaW50TWFwLT5nZXQo
dGhpcyk7CisgICAgcmV0dXJuIHJlcGFpbnQ7Cit9CisKK3ZvaWQgUmVuZGVyQmxvY2s6OnNldERl
bGF5UmVwYWludChib29sIGQpCit7CisgICAgaWYgKGQpIHsKKyAgICAgICAgaWYgKCFzX0RlbGF5
ZWRSZXBhaW50TWFwKQorICAgICAgICAgICAgc19EZWxheWVkUmVwYWludE1hcCA9IG5ldyBEZWxh
eWVkUmVwYWludE1hcCgpOworICAgICAgICBEZWxheWVkUmVwYWludCogcmVwYWludCA9IG5ldyBE
ZWxheWVkUmVwYWludCgpOworICAgICAgICBzX0RlbGF5ZWRSZXBhaW50TWFwLT5hZGQodGhpcywg
cmVwYWludCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZGVsZXRlIHNfRGVsYXllZFJlcGFpbnRN
YXAtPnRha2UodGhpcyk7CisgICAgfQorfQorCit2b2lkIFJlbmRlckJsb2NrOjpyZXBhaW50Qmxv
Y2tBZnRlckxheW91dChEZWxheWVkUmVwYWludCogcmVwYWludCkKK3sKKyAgICBBU1NFUlQobmVl
ZHNMYXlvdXQoKSk7CisKKyAgICAvLyBVcGRhdGUgb3VyIHNjcm9sbCBpbmZvcm1hdGlvbiBpZiB3
ZSdyZSBvdmVyZmxvdzphdXRvL3Njcm9sbC9oaWRkZW4gbm93IHRoYXQgd2Uga25vdyBpZgorICAg
IC8vIHdlIG92ZXJmbG93IG9yIG5vdC4KKyAgICBpZiAoaGFzT3ZlcmZsb3dDbGlwKCkpCisgICAg
ICAgIGxheWVyKCktPnVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dCgpOworCisgICAgLy8gUmVw
YWludCB3aXRoIG91ciBuZXcgYm91bmRzIGlmIHRoZXkgYXJlIGRpZmZlcmVudCBmcm9tIG91ciBv
bGQgYm91bmRzLgorICAgIGJvb2wgZGlkRnVsbFJlcGFpbnQgPSByZXBhaW50LT5tX3JlcGFpbnRl
ci0+cmVwYWludEFmdGVyTGF5b3V0KCk7CisgICAgaWYgKCFkaWRGdWxsUmVwYWludCAmJiByZXBh
aW50LT5tX3JlcGFpbnRUb3AgIT0gcmVwYWludC0+bV9yZXBhaW50Qm90dG9tICYmIChzdHlsZSgp
LT52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSB8fCBlbmNsb3NpbmdMYXllcigpLT5oYXNWaXNpYmxl
Q29udGVudCgpKSkgeworICAgICAgICBJbnRSZWN0IHJlcGFpbnRSZWN0KG1fb3ZlcmZsb3dMZWZ0
LCByZXBhaW50LT5tX3JlcGFpbnRUb3AsIG1fb3ZlcmZsb3dXaWR0aCAtIG1fb3ZlcmZsb3dMZWZ0
LCByZXBhaW50LT5tX3JlcGFpbnRCb3R0b20gLSByZXBhaW50LT5tX3JlcGFpbnRUb3ApOworCisg
ICAgICAgIC8vIEZJWE1FOiBEZWFsIHdpdGggbXVsdGlwbGUgY29sdW1uIHJlcGFpbnRpbmcuICBX
ZSBoYXZlIHRvIHNwbGl0IHRoZSByZXBhaW50CisgICAgICAgIC8vIHJlY3QgdXAgaW50byBtdWx0
aXBsZSByZWN0cyBpZiBpdCBzcGFucyBjb2x1bW5zLgorCisgICAgICAgIHJlcGFpbnRSZWN0Lmlu
ZmxhdGUobWF4aW1hbE91dGxpbmVTaXplKFBhaW50UGhhc2VPdXRsaW5lKSk7CisKKyAgICAgICAg
aWYgKGhhc092ZXJmbG93Q2xpcCgpKSB7CisgICAgICAgICAgICAvLyBBZGp1c3QgcmVwYWludCBy
ZWN0IGZvciBzY3JvbGwgb2Zmc2V0CisgICAgICAgICAgICBpbnQgeCA9IHJlcGFpbnRSZWN0Lngo
KTsKKyAgICAgICAgICAgIGludCB5ID0gcmVwYWludFJlY3QueSgpOworICAgICAgICAgICAgbGF5
ZXIoKS0+c3VidHJhY3RTY3JvbGxlZENvbnRlbnRPZmZzZXQoeCwgeSk7CisgICAgICAgICAgICBy
ZXBhaW50UmVjdC5zZXRYKHgpOworICAgICAgICAgICAgcmVwYWludFJlY3Quc2V0WSh5KTsKKwor
ICAgICAgICAgICAgLy8gRG9uJ3QgYWxsb3cgdGhpcyByZWN0IHRvIHNwaWxsIG91dCBvZiBvdXIg
b3ZlcmZsb3cgYm94LgorICAgICAgICAgICAgcmVwYWludFJlY3QuaW50ZXJzZWN0KEludFJlY3Qo
MCwgMCwgd2lkdGgoKSwgaGVpZ2h0KCkpKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIE1ha2Ug
c3VyZSB0aGUgcmVjdCBpcyBzdGlsbCBub24tZW1wdHkgYWZ0ZXIgaW50ZXJzZWN0aW5nIGZvciBv
dmVyZmxvdyBhYm92ZQorICAgICAgICBpZiAoIXJlcGFpbnRSZWN0LmlzRW1wdHkoKSkgeworICAg
ICAgICAgICAgcmVwYWludFJlY3RhbmdsZShyZXBhaW50UmVjdCk7IC8vIFdlIG5lZWQgdG8gZG8g
YSBwYXJ0aWFsIHJlcGFpbnQgb2Ygb3VyIGNvbnRlbnQuCisgICAgICAgICAgICBpZiAoaGFzUmVm
bGVjdGlvbigpKQorICAgICAgICAgICAgICAgIHJlcGFpbnRSZWN0YW5nbGUocmVmbGVjdGVkUmVj
dChyZXBhaW50UmVjdCkpOworICAgICAgICB9CisgICAgfQorICAgIHNldE5lZWRzTGF5b3V0KGZh
bHNlKTsKK30KKwogdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENo
aWxkcmVuKQogewogICAgIEFTU0VSVChuZWVkc0xheW91dCgpKTsKQEAgLTcxNyw3ICs3ODAsMTMg
QEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuKQog
ICAgIGlmICghcmVsYXlvdXRDaGlsZHJlbiAmJiBsYXlvdXRPbmx5UG9zaXRpb25lZE9iamVjdHMo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTGF5b3V0UmVwYWludGVyIHJlcGFpbnRlcigqdGhp
cywgbV9ldmVySGFkTGF5b3V0ICYmIGNoZWNrRm9yUmVwYWludER1cmluZ0xheW91dCgpKTsKKyAg
ICBEZWxheWVkUmVwYWludCogcmVwYWludCA9IGRlbGF5ZWRSZXBhaW50KCk7CisgICAgYm9vbCBk
ZWxheVJlcGFpbnQgPSByZXBhaW50ICE9IDA7CisgICAgRGVsYXllZFJlcGFpbnQgbm90RGVsYXll
ZDsKKyAgICBpZiAoIXJlcGFpbnQpCisgICAgICAgIHJlcGFpbnQgPSAmbm90RGVsYXllZDsKKyAg
ICByZXBhaW50LT5tX3JlcGFpbnRlciA9IG5ldyBMYXlvdXRSZXBhaW50ZXIoKnRoaXMsIG1fZXZl
ckhhZExheW91dCAmJiBjaGVja0ZvclJlcGFpbnREdXJpbmdMYXlvdXQoKSk7CisKICAgICBMYXlv
dXRTdGF0ZU1haW50YWluZXIgc3RhdGVQdXNoZXIodmlldygpLCB0aGlzLCBJbnRTaXplKHgoKSwg
eSgpKSwgaGFzQ29sdW1ucygpIHx8IGhhc1RyYW5zZm9ybSgpIHx8IGhhc1JlZmxlY3Rpb24oKSk7
CiAKICAgICBpbnQgb2xkV2lkdGggPSB3aWR0aCgpOwpAQCAtNzcyLDExICs4NDEsMTEgQEAgdm9p
ZCBSZW5kZXJCbG9jazo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuKQogICAgICAg
ICAgICAgbGF5ZXIoKS0+c2V0SGFzVmVydGljYWxTY3JvbGxiYXIodHJ1ZSk7CiAgICAgfQogCi0g
ICAgaW50IHJlcGFpbnRUb3AgPSAwOwotICAgIGludCByZXBhaW50Qm90dG9tID0gMDsKKyAgICBy
ZXBhaW50LT5tX3JlcGFpbnRUb3AgPSAwOworICAgIHJlcGFpbnQtPm1fcmVwYWludEJvdHRvbSA9
IDA7CiAgICAgaW50IG1heEZsb2F0Qm90dG9tID0gMDsKICAgICBpZiAoY2hpbGRyZW5JbmxpbmUo
KSkKLSAgICAgICAgbGF5b3V0SW5saW5lQ2hpbGRyZW4ocmVsYXlvdXRDaGlsZHJlbiwgcmVwYWlu
dFRvcCwgcmVwYWludEJvdHRvbSk7CisgICAgICAgIGxheW91dElubGluZUNoaWxkcmVuKHJlbGF5
b3V0Q2hpbGRyZW4sIHJlcGFpbnQtPm1fcmVwYWludFRvcCwgcmVwYWludC0+bV9yZXBhaW50Qm90
dG9tKTsKICAgICBlbHNlCiAgICAgICAgIGxheW91dEJsb2NrQ2hpbGRyZW4ocmVsYXlvdXRDaGls
ZHJlbiwgbWF4RmxvYXRCb3R0b20pOwogCkBAIC04NDIsNDEgKzkxMSw4IEBAIHZvaWQgUmVuZGVy
QmxvY2s6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbikKIAogICAgIHN0YXRlUHVz
aGVyLnBvcCgpOwogCi0gICAgLy8gVXBkYXRlIG91ciBzY3JvbGwgaW5mb3JtYXRpb24gaWYgd2Un
cmUgb3ZlcmZsb3c6YXV0by9zY3JvbGwvaGlkZGVuIG5vdyB0aGF0IHdlIGtub3cgaWYKLSAgICAv
LyB3ZSBvdmVyZmxvdyBvciBub3QuCi0gICAgaWYgKGhhc092ZXJmbG93Q2xpcCgpKQotICAgICAg
ICBsYXllcigpLT51cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXQoKTsKLQotICAgIC8vIFJlcGFp
bnQgd2l0aCBvdXIgbmV3IGJvdW5kcyBpZiB0aGV5IGFyZSBkaWZmZXJlbnQgZnJvbSBvdXIgb2xk
IGJvdW5kcy4KLSAgICBib29sIGRpZEZ1bGxSZXBhaW50ID0gcmVwYWludGVyLnJlcGFpbnRBZnRl
ckxheW91dCgpOwotICAgIGlmICghZGlkRnVsbFJlcGFpbnQgJiYgcmVwYWludFRvcCAhPSByZXBh
aW50Qm90dG9tICYmIChzdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSB8fCBlbmNsb3Np
bmdMYXllcigpLT5oYXNWaXNpYmxlQ29udGVudCgpKSkgewotICAgICAgICBJbnRSZWN0IHJlcGFp
bnRSZWN0KG1fb3ZlcmZsb3dMZWZ0LCByZXBhaW50VG9wLCBtX292ZXJmbG93V2lkdGggLSBtX292
ZXJmbG93TGVmdCwgcmVwYWludEJvdHRvbSAtIHJlcGFpbnRUb3ApOwotCi0gICAgICAgIC8vIEZJ
WE1FOiBEZWFsIHdpdGggbXVsdGlwbGUgY29sdW1uIHJlcGFpbnRpbmcuICBXZSBoYXZlIHRvIHNw
bGl0IHRoZSByZXBhaW50Ci0gICAgICAgIC8vIHJlY3QgdXAgaW50byBtdWx0aXBsZSByZWN0cyBp
ZiBpdCBzcGFucyBjb2x1bW5zLgotCi0gICAgICAgIHJlcGFpbnRSZWN0LmluZmxhdGUobWF4aW1h
bE91dGxpbmVTaXplKFBhaW50UGhhc2VPdXRsaW5lKSk7Ci0gICAgICAgIAotICAgICAgICBpZiAo
aGFzT3ZlcmZsb3dDbGlwKCkpIHsKLSAgICAgICAgICAgIC8vIEFkanVzdCByZXBhaW50IHJlY3Qg
Zm9yIHNjcm9sbCBvZmZzZXQKLSAgICAgICAgICAgIGludCB4ID0gcmVwYWludFJlY3QueCgpOwot
ICAgICAgICAgICAgaW50IHkgPSByZXBhaW50UmVjdC55KCk7Ci0gICAgICAgICAgICBsYXllcigp
LT5zdWJ0cmFjdFNjcm9sbGVkQ29udGVudE9mZnNldCh4LCB5KTsKLSAgICAgICAgICAgIHJlcGFp
bnRSZWN0LnNldFgoeCk7Ci0gICAgICAgICAgICByZXBhaW50UmVjdC5zZXRZKHkpOwotCi0gICAg
ICAgICAgICAvLyBEb24ndCBhbGxvdyB0aGlzIHJlY3QgdG8gc3BpbGwgb3V0IG9mIG91ciBvdmVy
ZmxvdyBib3guCi0gICAgICAgICAgICByZXBhaW50UmVjdC5pbnRlcnNlY3QoSW50UmVjdCgwLCAw
LCB3aWR0aCgpLCBoZWlnaHQoKSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gTWFrZSBzdXJl
IHRoZSByZWN0IGlzIHN0aWxsIG5vbi1lbXB0eSBhZnRlciBpbnRlcnNlY3RpbmcgZm9yIG92ZXJm
bG93IGFib3ZlCi0gICAgICAgIGlmICghcmVwYWludFJlY3QuaXNFbXB0eSgpKSB7Ci0gICAgICAg
ICAgICByZXBhaW50UmVjdGFuZ2xlKHJlcGFpbnRSZWN0KTsgLy8gV2UgbmVlZCB0byBkbyBhIHBh
cnRpYWwgcmVwYWludCBvZiBvdXIgY29udGVudC4KLSAgICAgICAgICAgIGlmIChoYXNSZWZsZWN0
aW9uKCkpCi0gICAgICAgICAgICAgICAgcmVwYWludFJlY3RhbmdsZShyZWZsZWN0ZWRSZWN0KHJl
cGFpbnRSZWN0KSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgc2V0TmVlZHNMYXlvdXQoZmFsc2Up
OworICAgIGlmICghZGVsYXlSZXBhaW50KQorICAgICAgICByZXBhaW50QmxvY2tBZnRlckxheW91
dChyZXBhaW50KTsKIH0KIAogYm9vbCBSZW5kZXJCbG9jazo6ZXhwYW5kc1RvRW5jbG9zZU92ZXJo
YW5naW5nRmxvYXRzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCmluZGV4IGYzMTNiM2Qu
LmE3Y2E1NTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysr
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApAQCAtMzI1LDYgKzMyNSwyOCBAQCBw
dWJsaWM6CiAgICAgLy8gc3R5bGUgZnJvbSB0aGlzIFJlbmRlckJsb2NrLgogICAgIFJlbmRlckJs
b2NrKiBjcmVhdGVBbm9ueW1vdXNCbG9jaygpIGNvbnN0OwogCisgICAgLy8gVXNlZCB3aGVuIGEg
ZmxleGlibGUgYm94IGlzIGxheW91dGluZyBpdHMgY2hpbGRyZW4uICBBcyBhCisgICAgLy8gZmxl
eGlibGUgYm94IG1heSBsYXlvdXQgaXRzIGNoaWxkcmVuIHR3aWNlLCB3ZSBzaG91bGQgbm90Cisg
ICAgLy8gdXBkYXRlIHRoZSBjaGlsZHJlbidzIHJlcGFpbnQgc2Nyb2xsYmFycyBhbmQgcmVwYWlu
dCB0aGVtIGZvcgorICAgIC8vIHRoZSBmaXJzdCB0aW1lLgorICAgIHN0cnVjdCBEZWxheWVkUmVw
YWludCB7CisgICAgICAgIERlbGF5ZWRSZXBhaW50KCkKKyAgICAgICAgICAgIDogbV9yZXBhaW50
ZXIoMCkKKyAgICAgICAgICAgICwgbV9yZXBhaW50VG9wKDApCisgICAgICAgICAgICAsIG1fcmVw
YWludEJvdHRvbSgwKQorICAgICAgICAgICAgeyB9CisgICAgICAgIH5EZWxheWVkUmVwYWludCgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGRlbGV0ZSBtX3JlcGFpbnRlcjsKKyAgICAgICAgfQor
ICAgICAgICBMYXlvdXRSZXBhaW50ZXIqIG1fcmVwYWludGVyOworICAgICAgICBpbnQgbV9yZXBh
aW50VG9wOworICAgICAgICBpbnQgbV9yZXBhaW50Qm90dG9tOworICAgIH07CisgICAgRGVsYXll
ZFJlcGFpbnQqIGRlbGF5ZWRSZXBhaW50KCkgY29uc3Q7CisgICAgdm9pZCBzZXREZWxheVJlcGFp
bnQoYm9vbCBkKTsKKyAgICB2b2lkIHJlcGFpbnRCbG9ja0FmdGVyTGF5b3V0KERlbGF5ZWRSZXBh
aW50KiByZXBhaW50KTsKKwogcHJpdmF0ZToKICAgICB2b2lkIGFkanVzdFBvaW50VG9Db2x1bW5D
b250ZW50cyhJbnRQb2ludCYpIGNvbnN0OwogICAgIHZvaWQgYWRqdXN0Rm9yQm9yZGVyRml0KGlu
dCB4LCBpbnQmIGxlZnQsIGludCYgcmlnaHQpIGNvbnN0OyAvLyBIZWxwZXIgZnVuY3Rpb24gZm9y
IGJvcmRlckZpdEFkanVzdApAQCAtNDk5LDYgKzUyMSw5IEBAIHByaXZhdGU6CiAKICAgICBNYXhN
YXJnaW4qIG1fbWF4TWFyZ2luOwogCisgICAgdHlwZWRlZiBXVEY6Okhhc2hNYXA8Y29uc3QgUmVu
ZGVyQmxvY2sqLCBEZWxheWVkUmVwYWludCo+IERlbGF5ZWRSZXBhaW50TWFwOworICAgIHN0YXRp
YyBEZWxheWVkUmVwYWludE1hcCogc19EZWxheWVkUmVwYWludE1hcDsKKwogcHJvdGVjdGVkOgog
ICAgIFJlbmRlck9iamVjdENoaWxkTGlzdCBtX2NoaWxkcmVuOwogICAgIFJlbmRlckxpbmVCb3hM
aXN0IG1fbGluZUJveGVzOyAgIC8vIEFsbCBvZiB0aGUgcm9vdCBsaW5lIGJveGVzIGNyZWF0ZWQg
Zm9yIHRoaXMgYmxvY2sgZmxvdy4gIEZvciBleGFtcGxlLCA8ZGl2PkhlbGxvPGJyPndvcmxkLjwv
ZGl2PiB3aWxsIGhhdmUgdHdvIHRvdGFsIGxpbmVzIGZvciB0aGUgPGRpdj4uCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAgYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKaW5kZXggMWRjZWYzNi4uNjM2OWFmMCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCisrKyBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcApAQCAtNDI5LDggKzQyOSwxMyBAQCB2
b2lkIFJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRIb3Jpem9udGFsQm94KGJvb2wgcmVsYXlvdXRD
aGlsZHJlbikKICAgICAgICAgICAgIGNoaWxkLT5jYWxjSGVpZ2h0KCk7CiAgICAgICAgICAgICBp
ZiAob2xkQ2hpbGRIZWlnaHQgIT0gY2hpbGQtPmhlaWdodCgpKQogICAgICAgICAgICAgICAgIGNo
aWxkLT5zZXRDaGlsZE5lZWRzTGF5b3V0KHRydWUsIGZhbHNlKTsKLSAgICAgICAgICAgIGNoaWxk
LT5sYXlvdXRJZk5lZWRlZCgpOwotICAgIAorICAgICAgICAgICAgaWYgKGNoaWxkLT5uZWVkc0xh
eW91dCgpKSB7CisgICAgICAgICAgICAgICAgLy8gRGVsYXkgcmVwYWludCB1bnRpbCB0aGUgcG9z
aXRpb24gaXMgZGV0ZXJtaW5lZC4KKyAgICAgICAgICAgICAgICBpZiAoY2hpbGQtPmlzUmVuZGVy
QmxvY2soKSkKKyAgICAgICAgICAgICAgICAgICAgdG9SZW5kZXJCbG9jayhjaGlsZCktPnNldERl
bGF5UmVwYWludCh0cnVlKTsKKyAgICAgICAgICAgICAgICBjaGlsZC0+bGF5b3V0KCk7CisgICAg
ICAgICAgICB9CisKICAgICAgICAgICAgIC8vIFdlIGNhbiBwbGFjZSB0aGUgY2hpbGQgbm93LCB1
c2luZyBvdXIgdmFsdWUgb2YgYm94LWFsaWduLgogICAgICAgICAgICAgeFBvcyArPSBjaGlsZC0+
bWFyZ2luTGVmdCgpOwogICAgICAgICAgICAgaW50IGNoaWxkWSA9IHlQb3M7CkBAIC01NjAsNiAr
NTY1LDE4IEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmxheW91dEhvcml6b250YWxCb3goYm9v
bCByZWxheW91dENoaWxkcmVuKQogICAgICAgICB9CiAgICAgfSB3aGlsZSAoaGF2ZUZsZXgpOwog
CisgICAgY2hpbGQgPSBpdGVyYXRvci5maXJzdCgpOworICAgIHdoaWxlIChjaGlsZCkgeworICAg
ICAgICBpZiAoY2hpbGQtPm5lZWRzTGF5b3V0KCkgJiYgY2hpbGQtPmlzUmVuZGVyQmxvY2soKSkg
eworICAgICAgICAgICAgUmVuZGVyQmxvY2sqIGJsb2NrID0gdG9SZW5kZXJCbG9jayhjaGlsZCk7
CisgICAgICAgICAgICBpZiAoUmVuZGVyQmxvY2s6OkRlbGF5ZWRSZXBhaW50KiByZXBhaW50ID0g
YmxvY2stPmRlbGF5ZWRSZXBhaW50KCkpIHsKKyAgICAgICAgICAgICAgICBibG9jay0+cmVwYWlu
dEJsb2NrQWZ0ZXJMYXlvdXQocmVwYWludCk7CisgICAgICAgICAgICAgICAgYmxvY2stPnNldERl
bGF5UmVwYWludChmYWxzZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2hp
bGQgPSBpdGVyYXRvci5uZXh0KCk7CisgICAgfQorCiAgICAgbV9mbGV4aW5nQ2hpbGRyZW4gPSBm
YWxzZTsKICAgICAKICAgICBpZiAocmVtYWluaW5nU3BhY2UgPiAwICYmICgoc3R5bGUoKS0+ZGly
ZWN0aW9uKCkgPT0gTFRSICYmIHN0eWxlKCktPmJveFBhY2soKSAhPSBCU1RBUlQpIHx8CkBAIC04
MjYsNyArODQzLDEyIEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmxheW91dFZlcnRpY2FsQm94
KGJvb2wgcmVsYXlvdXRDaGlsZHJlbikKICAgICAgICAgICAgIHNldEhlaWdodChoZWlnaHQoKSAr
IGNoaWxkLT5tYXJnaW5Ub3AoKSk7CiAgICAgCiAgICAgICAgICAgICAvLyBOb3cgZG8gYSBsYXlv
dXQuCi0gICAgICAgICAgICBjaGlsZC0+bGF5b3V0SWZOZWVkZWQoKTsKKyAgICAgICAgICAgIGlm
IChjaGlsZC0+bmVlZHNMYXlvdXQoKSkgeworICAgICAgICAgICAgICAgIC8vIERlbGF5IHJlcGFp
bnQgdW50aWwgdGhlIHBvc2l0aW9uIGlzIGRldGVybWluZWQuCisgICAgICAgICAgICAgICAgaWYg
KGNoaWxkLT5pc1JlbmRlckJsb2NrKCkpCisgICAgICAgICAgICAgICAgICAgIHRvUmVuZGVyQmxv
Y2soY2hpbGQpLT5zZXREZWxheVJlcGFpbnQodHJ1ZSk7CisgICAgICAgICAgICAgICAgY2hpbGQt
PmxheW91dCgpOworICAgICAgICAgICAgfQogICAgIAogICAgICAgICAgICAgLy8gV2UgY2FuIHBs
YWNlIHRoZSBjaGlsZCBub3csIHVzaW5nIG91ciB2YWx1ZSBvZiBib3gtYWxpZ24uCiAgICAgICAg
ICAgICBpbnQgY2hpbGRYID0gYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKTsKQEAgLTk3Nyw2
ICs5OTksMTggQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0VmVydGljYWxCb3goYm9v
bCByZWxheW91dENoaWxkcmVuKQogICAgICAgICB9ICAgICAgICAKICAgICB9IHdoaWxlIChoYXZl
RmxleCk7CiAKKyAgICBjaGlsZCA9IGl0ZXJhdG9yLmZpcnN0KCk7CisgICAgd2hpbGUgKGNoaWxk
KSB7CisgICAgICAgIGlmIChjaGlsZC0+bmVlZHNMYXlvdXQoKSAmJiBjaGlsZC0+aXNSZW5kZXJC
bG9jaygpKSB7CisgICAgICAgICAgICBSZW5kZXJCbG9jayogYmxvY2sgPSB0b1JlbmRlckJsb2Nr
KGNoaWxkKTsKKyAgICAgICAgICAgIGlmIChSZW5kZXJCbG9jazo6RGVsYXllZFJlcGFpbnQqIHJl
cGFpbnQgPSBibG9jay0+ZGVsYXllZFJlcGFpbnQoKSkgeworICAgICAgICAgICAgICAgIGJsb2Nr
LT5yZXBhaW50QmxvY2tBZnRlckxheW91dChyZXBhaW50KTsKKyAgICAgICAgICAgICAgICBibG9j
ay0+c2V0RGVsYXlSZXBhaW50KGZhbHNlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBjaGlsZCA9IGl0ZXJhdG9yLm5leHQoKTsKKyAgICB9CisKICAgICBpZiAoc3R5bGUoKS0+
Ym94UGFjaygpICE9IEJTVEFSVCAmJiByZW1haW5pbmdTcGFjZSA+IDApIHsKICAgICAgICAgLy8g
Q2hpbGRyZW4gbXVzdCBiZSByZXBvc2l0aW9uZWQuCiAgICAgICAgIGludCBvZmZzZXQgPSAwOwo=
</data>
<flag name="review"
          id="15977"
          type_id="1"
          status="-"
          setter="hamaji"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31536</attachid>
            <date>2009-06-19 00:54:50 -0700</date>
            <delta_ts>2009-06-24 02:14:32 -0700</delta_ts>
            <desc>Patch v4</desc>
            <filename>Patch-v4.patch</filename>
            <type>text/plain</type>
            <size>16995</size>
            <attacher name="Shinichiro Hamaji">hamaji</attacher>
            
              <data encoding="base64">MTQ2MGI1YWQzODAyNzBkMjgwNTVkOGE0YzczNTI0OWMzMTVhYWRkYgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDJjMTY1NDUu
LjJiMGY5MjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAwOS0wNi0xMSAgU2hpbmljaGlybyBI
YW1hamkgIDxoYW1hamlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTEzNQorICAgICAgICBEZWxheSB1cGRhdGluZyBzY3JvbGwgYmFyIGFuZCByZXBhaW50
aW5nIGRlc2NlbmRhbnRzIG9mIGZsZXhpYmxlCisgICAgICAgIGJveGVzIHVudGlsIHRoZWlyIHBv
c2l0aW9ucyBhcmUgZGV0ZXJtaW5lZC4gIEluIHRoaXMgd2F5IHdlIGNhbgorICAgICAgICBwcmV2
ZW50IGRlc2NlbmRhbnRzIG9mIGZsZXhpYmxlIGJveGVzIGZyb20gY2hhbmdpbmcgcG9zaXRpb25z
IG9mCisgICAgICAgIHRoZWlyIHNjcm9sbGJhcnMgdXNpbmcgdGVudGF0aXZlIHBvc2l0aW9ucy4g
IEFsc28sIHRoaXMgbWF5CisgICAgICAgIGltcHJvdmUgdGhlIHBlcmZvcm1hbmNlIGEgYml0Lgor
CisgICAgICAgICogZmFzdC9mbGV4Ym94L3JlcGFpbnQtc2Nyb2xsYmFyLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9mbGV4Ym94L3JlcGFpbnQtc2Nyb2xsYmFyLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZmxleGJveC9yZXNvdXJjZXMvcmVwYWludC1zY3JvbGxiYXIu
anM6IEFkZGVkLgorCiAyMDA5LTA2LTA5ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBObyByZXZpZXcsIGJ1aWxkIGZpeCBvbmx5LgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9mbGV4Ym94L3JlcGFpbnQtc2Nyb2xsYmFyLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvZmxleGJveC9yZXBhaW50LXNjcm9sbGJhci1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDllNGE3NgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZmxleGJveC9yZXBhaW50LXNjcm9sbGJhci1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw0NCBAQAorQ2hlY2sgaWYgY2hhbmdpbmcgZmxleGJveCdzIGNvbnRl
bnQgZG9lc24ndCBjaGFuZ2UgdGhlIHN0YXRlIG9mIHNjcm9sbC4gU2VlIHRoaXMgYnVnIGZvciBk
ZXRhaWw6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTEzNQorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworCisKKworCisKKworCisKKworbWVyb0wgaXBz
dW0KK2Zvb29vb29vb29vb29vb28gbWVyb0wgaXBzdW0KKworCisKKworCisKKworCisKK21lcm9M
IGlwc3VtCisKKworCisKKworCisKKworCittZXJvTCBpcHN1bQorUEFTUyBlbGVtZW50LnNjcm9s
bFRvcCBpcyAxMDgKK1BBU1MgZWxlbWVudC5zY3JvbGxMZWZ0IGlzIDEwOAorUEFTUyBlbGVtZW50
LnNjcm9sbFRvcCBpcyAxMDgKK1BBU1MgZWxlbWVudC5zY3JvbGxUb3AgaXMgMTA4CitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9mbGV4Ym94L3JlcGFpbnQtc2Nyb2xsYmFyLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2ZsZXhib3gvcmVwYWludC1zY3JvbGxiYXIuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5lYTUwMmIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9mbGV4Ym94L3JlcGFpbnQtc2Nyb2xsYmFyLmh0bWwKQEAgLTAsMCArMSwzNyBAQAor
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8
aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4K
KzxkaXYgc3R5bGU9ImRpc3BsYXk6IC13ZWJraXQtYm94Oy13ZWJraXQtYm94LW9yaWVudDogdmVy
dGljYWw7IGhlaWdodDogNjlweDsiPgorICAgIDxkaXYgaWQ9InZlcnRpY2FsIiBzdHlsZT0ib3Zl
cmZsb3cteTogc2Nyb2xsOyBvdXRsaW5lOiBub25lOyB3aWR0aDogODBweDsgLXdlYmtpdC1ib3gt
ZmxleDoxOyI+CisgICAgICAgIDxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPkxv
cmVtIGlwc3VtCisgICAgPC9kaXY+Cis8L2Rpdj4KKzxkaXYgc3R5bGU9ImRpc3BsYXk6IC13ZWJr
aXQtYm94Oy13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDsgd2lkdGg6IDY5cHg7Ij4KKyAg
ICA8cHJlIGlkPSJob3Jpem9udGFsIiBzdHlsZT0ib3ZlcmZsb3cteDogc2Nyb2xsOyBvdXRsaW5l
OiBub25lOyBoZWlnaHQ6IDgwcHg7IC13ZWJraXQtYm94LWZsZXg6MTsiPgorZm9vb29vb29vb29v
b29vbyBMb3JlbSBpcHN1bQorICAgIDwvcHJlPgorPC9kaXY+Cis8ZGl2IHN0eWxlPSJkaXNwbGF5
OiAtd2Via2l0LWJveDstd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsOyBoZWlnaHQ6IDY5cHg7
Ij4KKzxkaXYgc3R5bGU9ImRpc3BsYXk6IC13ZWJraXQtYm94OyBoZWlnaHQ6IDY5cHg7IHdpZHRo
OiA4MHB4OyI+CisgICAgPGRpdiBpZD0ibmVzdCIgc3R5bGU9Im92ZXJmbG93LXk6IHNjcm9sbDsg
b3V0bGluZTogbm9uZTsgd2lkdGg6IDgwcHg7IC13ZWJraXQtYm94LWZsZXg6MTsiPgorICAgICAg
ICA8YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj5Mb3JlbSBpcHN1bQorICAgIDwv
ZGl2PgorPC9kaXY+Cis8L2Rpdj4KKzxkaXYgc3R5bGU9ImRpc3BsYXk6IC13ZWJraXQtYm94Oy13
ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7IGhlaWdodDogNjlweDsiPgorPGRpdiBzdHlsZT0i
aGVpZ2h0OiA2OXB4OyB3aWR0aDogODBweDsiPgorICAgIDxkaXYgaWQ9Im5lc3QyIiBzdHlsZT0i
b3ZlcmZsb3cteTogc2Nyb2xsOyBvdXRsaW5lOiBub25lOyB3aWR0aDogODBweDsgaGVpZ2h0OiA2
OXB4OyAtd2Via2l0LWJveC1mbGV4OjE7Ij4KKyAgICAgICAgPGJyPjxicj48YnI+PGJyPjxicj48
YnI+PGJyPjxicj48YnI+TG9yZW0gaXBzdW0KKyAgICA8L2Rpdj4KKzwvZGl2PgorPC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcmVwYWludC1z
Y3JvbGxiYXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9mbGV4Ym94L3Jlc291cmNlcy9yZXBhaW50LXNjcm9sbGJhci5qcyBiL0xh
eW91dFRlc3RzL2Zhc3QvZmxleGJveC9yZXNvdXJjZXMvcmVwYWludC1zY3JvbGxiYXIuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGI5NDc0MAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZmxleGJveC9yZXNvdXJjZXMvcmVwYWludC1zY3JvbGxiYXIu
anMKQEAgLTAsMCArMSwyNSBAQAorZGVzY3JpcHRpb24oIkNoZWNrIGlmIGNoYW5naW5nIGZsZXhi
b3gncyBjb250ZW50IGRvZXNuJ3QgY2hhbmdlIHRoZSBzdGF0ZSBvZiBzY3JvbGwuIFNlZSB0aGlz
IGJ1ZyBmb3IgZGV0YWlsOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTUxMzUiKTsKKwordmFyIGVsZW1lbnQgPSBudWxsOworCitlbGVtZW50ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInZlcnRpY2FsIik7CitlbGVtZW50LnNjcm9sbFRvcCA9IDEwODsKK2VsZW1l
bnQubGFzdENoaWxkLmRhdGE9J21lcm9MIGlwc3VtJzsKK3Nob3VsZEJlKCJlbGVtZW50LnNjcm9s
bFRvcCIsICIxMDgiKTsKKworZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJob3Jp
em9udGFsIik7CitlbGVtZW50LnNjcm9sbExlZnQgPSAxMDg7CitlbGVtZW50Lmxhc3RDaGlsZC5k
YXRhPSdmb29vb29vb29vb29vb29vIG1lcm9MIGlwc3VtJzsKK3Nob3VsZEJlKCJlbGVtZW50LnNj
cm9sbExlZnQiLCAiMTA4Iik7CisKK2VsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
bmVzdCIpOworZWxlbWVudC5zY3JvbGxUb3AgPSAxMDg7CitlbGVtZW50Lmxhc3RDaGlsZC5kYXRh
PSdtZXJvTCBpcHN1bSc7CitzaG91bGRCZSgiZWxlbWVudC5zY3JvbGxUb3AiLCAiMTA4Iik7CisK
K2VsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibmVzdDIiKTsKK2VsZW1lbnQuc2Ny
b2xsVG9wID0gMTA4OworZWxlbWVudC5sYXN0Q2hpbGQuZGF0YT0nbWVyb0wgaXBzdW0nOworc2hv
dWxkQmUoImVsZW1lbnQuc2Nyb2xsVG9wIiwgIjEwOCIpOworCitzdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCBkZTdlYTZlLi5lMTZmYmY2IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDA5LTA2LTExICBTaGlu
aWNoaXJvIEhhbWFqaSAgPGhhbWFqaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1MTM1CisgICAgICAgIERlbGF5IHVwZGF0aW5nIHNjcm9sbCBiYXIgYW5k
IHJlcGFpbnRpbmcgZGVzY2VuZGFudHMgb2YgZmxleGlibGUKKyAgICAgICAgYm94ZXMgdW50aWwg
dGhlaXIgcG9zaXRpb25zIGFyZSBkZXRlcm1pbmVkLiAgSW4gdGhpcyB3YXkgd2UgY2FuCisgICAg
ICAgIHByZXZlbnQgZGVzY2VuZGFudHMgb2YgZmxleGlibGUgYm94ZXMgZnJvbSBjaGFuZ2luZyBw
b3NpdGlvbnMgb2YKKyAgICAgICAgdGhlaXIgc2Nyb2xsYmFycyB1c2luZyB0ZW50YXRpdmUgcG9z
aXRpb25zLiAgQWxzbywgdGhpcyBtYXkKKyAgICAgICAgaW1wcm92ZSB0aGUgcGVyZm9ybWFuY2Ug
YSBiaXQuCisKKyAgICAgICAgVGVzdDogZmFzdC9mbGV4Ym94L3JlcGFpbnQtc2Nyb2xsYmFyLmh0
bWwKKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9jazo6UmVuZGVyQmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2s6OnJlcGFpbnRCbG9ja0FmdGVyTGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJsb2NrOjpsYXlvdXRCbG9jayk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6ZGVsYXlSZXBhaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJsb2NrOjpzZXREZWxheVJlcGFpbnQpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4
aWJsZUJveDo6bGF5b3V0SG9yaXpvbnRhbEJveCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJG
bGV4aWJsZUJveDo6bGF5b3V0VmVydGljYWxCb3gpOgorCiAyMDA5LTA2LTA5ICBQZXRlciBLYXN0
aW5nICA8cGthc3RpbmdAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNl
aWRlbC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCA4OWNmMTEyLi41NjY2YjNjIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC04NCw2ICs4NCwyOSBAQCBzdGF0aWMgUGVy
Y2VudEhlaWdodENvbnRhaW5lck1hcCogZ1BlcmNlbnRIZWlnaHRDb250YWluZXJNYXAgPSAwOwog
ICAgIAogdHlwZWRlZiBXVEY6Okhhc2hNYXA8UmVuZGVyQmxvY2sqLCBMaXN0SGFzaFNldDxSZW5k
ZXJJbmxpbmUqPio+IENvbnRpbnVhdGlvbk91dGxpbmVUYWJsZU1hcDsKIAorLy8gVXNlZCB3aGVu
IGEgZmxleGlibGUgYm94IGlzIGxheW91dGluZyBpdHMgY2hpbGRyZW4uICBBcyBhCisvLyBmbGV4
aWJsZSBib3ggbWF5IGxheW91dCBpdHMgY2hpbGRyZW4gdHdpY2UsIHdlIHNob3VsZCBub3QKKy8v
IHVwZGF0ZSB0aGUgY2hpbGRyZW4ncyByZXBhaW50IHNjcm9sbGJhcnMgYW5kIHJlcGFpbnQgdGhl
bSBmb3IKKy8vIHRoZSBmaXJzdCB0aW1lLgorc3RydWN0IFJlbmRlckJsb2NrOjpEZWxheWVkUmVw
YWludCB7CisgICAgRGVsYXllZFJlcGFpbnQoKQorICAgICAgICAgICAgOiBtX3JlcGFpbnRlcigw
KQorICAgICAgICAgICAgLCBtX3JlcGFpbnRUb3AoLTEpCisgICAgICAgICAgICAsIG1fcmVwYWlu
dEJvdHRvbSgtMSkKKyAgICB7IH0KKyAgICB+RGVsYXllZFJlcGFpbnQoKQorICAgIHsKKyAgICAg
ICAgZGVsZXRlIG1fcmVwYWludGVyOworICAgIH0KKyAgICBMYXlvdXRSZXBhaW50ZXIqIG1fcmVw
YWludGVyOworICAgIGludCBtX3JlcGFpbnRUb3A7CisgICAgaW50IG1fcmVwYWludEJvdHRvbTsK
K307CisKK3R5cGVkZWYgV1RGOjpIYXNoTWFwPFJlbmRlckJsb2NrKiwgUmVuZGVyQmxvY2s6OkRl
bGF5ZWRSZXBhaW50Kj4gRGVsYXllZFJlcGFpbnRNYXA7CitzdGF0aWMgRGVsYXllZFJlcGFpbnRN
YXAqIHNfZGVsYXllZFJlcGFpbnRNYXAgPSAwOworc3RhdGljIGludCBzX2RlbGF5ZWRSZXBhaW50
Q291bnQgPSAwOworCiAvLyBPdXIgTWFyZ2luSW5mbyBzdGF0ZSB1c2VkIHdoZW4gbGF5aW5nIG91
dCBibG9jayBjaGlsZHJlbi4KIFJlbmRlckJsb2NrOjpNYXJnaW5JbmZvOjpNYXJnaW5JbmZvKFJl
bmRlckJsb2NrKiBibG9jaywgaW50IHRvcCwgaW50IGJvdHRvbSkKIHsKQEAgLTcwNyw2ICs3MzAs
NzIgQEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0KCkKICAgICB9CiB9CiAKK3ZvaWQgUmVuZGVy
QmxvY2s6OnN0YXJ0RGVsYXlSZXBhaW50KCkgeworICAgIHNfZGVsYXllZFJlcGFpbnRDb3VudCsr
OworICAgIGlmIChzX2RlbGF5ZWRSZXBhaW50Q291bnQgPT0gMSkgeworICAgICAgICBBU1NFUlQo
IXNfZGVsYXllZFJlcGFpbnRNYXApOworICAgICAgICBzX2RlbGF5ZWRSZXBhaW50TWFwID0gbmV3
IERlbGF5ZWRSZXBhaW50TWFwKCk7CisgICAgfQorfQorCit2b2lkIFJlbmRlckJsb2NrOjpmaW5p
c2hEZWxheVJlcGFpbnQoKQoreworICAgIEFTU0VSVChzX2RlbGF5ZWRSZXBhaW50Q291bnQgPiAw
KTsKKyAgICBzX2RlbGF5ZWRSZXBhaW50Q291bnQtLTsKKyAgICBpZiAoc19kZWxheWVkUmVwYWlu
dENvdW50ID09IDApIHsKKyAgICAgICAgQVNTRVJUKHNfZGVsYXllZFJlcGFpbnRNYXApOworCisg
ICAgICAgIGZvciAoRGVsYXllZFJlcGFpbnRNYXA6Oml0ZXJhdG9yIGl0ID0gc19kZWxheWVkUmVw
YWludE1hcC0+YmVnaW4oKTsgaXQgIT0gc19kZWxheWVkUmVwYWludE1hcC0+ZW5kKCk7ICsraXQp
IHsKKyAgICAgICAgICAgIFJlbmRlckJsb2NrKiBibG9jayA9IGl0LT5maXJzdDsKKyAgICAgICAg
ICAgIERlbGF5ZWRSZXBhaW50KiByZXBhaW50ID0gaXQtPnNlY29uZDsKKyAgICAgICAgICAgIGJs
b2NrLT5yZXBhaW50QmxvY2tBZnRlckxheW91dChyZXBhaW50KTsKKyAgICAgICAgICAgIGRlbGV0
ZSByZXBhaW50OworICAgICAgICB9CisKKyAgICAgICAgZGVsZXRlIHNfZGVsYXllZFJlcGFpbnRN
YXA7CisgICAgICAgIHNfZGVsYXllZFJlcGFpbnRNYXAgPSAwOworICAgIH0KK30KKwordm9pZCBS
ZW5kZXJCbG9jazo6cmVwYWludEJsb2NrQWZ0ZXJMYXlvdXQoRGVsYXllZFJlcGFpbnQqIHJlcGFp
bnQpCit7CisgICAgLy8gVXBkYXRlIG91ciBzY3JvbGwgaW5mb3JtYXRpb24gaWYgd2UncmUgb3Zl
cmZsb3c6YXV0by9zY3JvbGwvaGlkZGVuIG5vdyB0aGF0IHdlIGtub3cgaWYKKyAgICAvLyB3ZSBv
dmVyZmxvdyBvciBub3QuCisgICAgaWYgKGhhc092ZXJmbG93Q2xpcCgpKQorICAgICAgICBsYXll
cigpLT51cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXQoKTsKKworICAgIC8vIFJlcGFpbnQgd2l0
aCBvdXIgbmV3IGJvdW5kcyBpZiB0aGV5IGFyZSBkaWZmZXJlbnQgZnJvbSBvdXIgb2xkIGJvdW5k
cy4KKyAgICBib29sIGRpZEZ1bGxSZXBhaW50ID0gcmVwYWludC0+bV9yZXBhaW50ZXItPnJlcGFp
bnRBZnRlckxheW91dCgpOworICAgIGlmICghZGlkRnVsbFJlcGFpbnQgJiYgcmVwYWludC0+bV9y
ZXBhaW50VG9wICE9IHJlcGFpbnQtPm1fcmVwYWludEJvdHRvbSAmJiAoc3R5bGUoKS0+dmlzaWJp
bGl0eSgpID09IFZJU0lCTEUgfHwgZW5jbG9zaW5nTGF5ZXIoKS0+aGFzVmlzaWJsZUNvbnRlbnQo
KSkpIHsKKyAgICAgICAgSW50UmVjdCByZXBhaW50UmVjdChtX292ZXJmbG93TGVmdCwgcmVwYWlu
dC0+bV9yZXBhaW50VG9wLCBtX292ZXJmbG93V2lkdGggLSBtX292ZXJmbG93TGVmdCwgcmVwYWlu
dC0+bV9yZXBhaW50Qm90dG9tIC0gcmVwYWludC0+bV9yZXBhaW50VG9wKTsKKworICAgICAgICAv
LyBGSVhNRTogRGVhbCB3aXRoIG11bHRpcGxlIGNvbHVtbiByZXBhaW50aW5nLiAgV2UgaGF2ZSB0
byBzcGxpdCB0aGUgcmVwYWludAorICAgICAgICAvLyByZWN0IHVwIGludG8gbXVsdGlwbGUgcmVj
dHMgaWYgaXQgc3BhbnMgY29sdW1ucy4KKworICAgICAgICByZXBhaW50UmVjdC5pbmZsYXRlKG1h
eGltYWxPdXRsaW5lU2l6ZShQYWludFBoYXNlT3V0bGluZSkpOworCisgICAgICAgIGlmIChoYXNP
dmVyZmxvd0NsaXAoKSkgeworICAgICAgICAgICAgLy8gQWRqdXN0IHJlcGFpbnQgcmVjdCBmb3Ig
c2Nyb2xsIG9mZnNldAorICAgICAgICAgICAgaW50IHggPSByZXBhaW50UmVjdC54KCk7CisgICAg
ICAgICAgICBpbnQgeSA9IHJlcGFpbnRSZWN0LnkoKTsKKyAgICAgICAgICAgIGxheWVyKCktPnN1
YnRyYWN0U2Nyb2xsZWRDb250ZW50T2Zmc2V0KHgsIHkpOworICAgICAgICAgICAgcmVwYWludFJl
Y3Quc2V0WCh4KTsKKyAgICAgICAgICAgIHJlcGFpbnRSZWN0LnNldFkoeSk7CisKKyAgICAgICAg
ICAgIC8vIERvbid0IGFsbG93IHRoaXMgcmVjdCB0byBzcGlsbCBvdXQgb2Ygb3VyIG92ZXJmbG93
IGJveC4KKyAgICAgICAgICAgIHJlcGFpbnRSZWN0LmludGVyc2VjdChJbnRSZWN0KDAsIDAsIHdp
ZHRoKCksIGhlaWdodCgpKSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBNYWtlIHN1cmUgdGhl
IHJlY3QgaXMgc3RpbGwgbm9uLWVtcHR5IGFmdGVyIGludGVyc2VjdGluZyBmb3Igb3ZlcmZsb3cg
YWJvdmUKKyAgICAgICAgaWYgKCFyZXBhaW50UmVjdC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAg
IHJlcGFpbnRSZWN0YW5nbGUocmVwYWludFJlY3QpOyAvLyBXZSBuZWVkIHRvIGRvIGEgcGFydGlh
bCByZXBhaW50IG9mIG91ciBjb250ZW50LgorICAgICAgICAgICAgaWYgKGhhc1JlZmxlY3Rpb24o
KSkKKyAgICAgICAgICAgICAgICByZXBhaW50UmVjdGFuZ2xlKHJlZmxlY3RlZFJlY3QocmVwYWlu
dFJlY3QpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBzZXROZWVkc0xheW91dChmYWxzZSk7Cit9
CisKIHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbikK
IHsKICAgICBBU1NFUlQobmVlZHNMYXlvdXQoKSk7CkBAIC03MTcsNyArODA2LDIwIEBAIHZvaWQg
UmVuZGVyQmxvY2s6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbikKICAgICBpZiAo
IXJlbGF5b3V0Q2hpbGRyZW4gJiYgbGF5b3V0T25seVBvc2l0aW9uZWRPYmplY3RzKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIExheW91dFJlcGFpbnRlciByZXBhaW50ZXIoKnRoaXMsIG1fZXZl
ckhhZExheW91dCAmJiBjaGVja0ZvclJlcGFpbnREdXJpbmdMYXlvdXQoKSk7CisgICAgRGVsYXll
ZFJlcGFpbnQqIHJlcGFpbnQ7CisgICAgRGVsYXllZFJlcGFpbnQgbm90RGVsYXllZDsKKyAgICBp
ZiAoc19kZWxheWVkUmVwYWludENvdW50ID4gMCkgeworICAgICAgICBBU1NFUlQoc19kZWxheWVk
UmVwYWludE1hcCk7CisgICAgICAgIHJlcGFpbnQgPSBzX2RlbGF5ZWRSZXBhaW50TWFwLT5nZXQo
dGhpcyk7CisgICAgICAgIGlmICghcmVwYWludCkgeworICAgICAgICAgICAgcmVwYWludCA9IG5l
dyBEZWxheWVkUmVwYWludCgpOworICAgICAgICAgICAgc19kZWxheWVkUmVwYWludE1hcC0+YWRk
KHRoaXMsIHJlcGFpbnQpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmVwYWlu
dCA9ICZub3REZWxheWVkOworICAgIH0KKyAgICByZXBhaW50LT5tX3JlcGFpbnRlciA9IG5ldyBM
YXlvdXRSZXBhaW50ZXIoKnRoaXMsIG1fZXZlckhhZExheW91dCAmJiBjaGVja0ZvclJlcGFpbnRE
dXJpbmdMYXlvdXQoKSk7CisKICAgICBMYXlvdXRTdGF0ZU1haW50YWluZXIgc3RhdGVQdXNoZXIo
dmlldygpLCB0aGlzLCBJbnRTaXplKHgoKSwgeSgpKSwgaGFzQ29sdW1ucygpIHx8IGhhc1RyYW5z
Zm9ybSgpIHx8IGhhc1JlZmxlY3Rpb24oKSk7CiAKICAgICBpbnQgb2xkV2lkdGggPSB3aWR0aCgp
OwpAQCAtNzcyLDExICs4NzQsMTYgQEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0QmxvY2soYm9v
bCByZWxheW91dENoaWxkcmVuKQogICAgICAgICAgICAgbGF5ZXIoKS0+c2V0SGFzVmVydGljYWxT
Y3JvbGxiYXIodHJ1ZSk7CiAgICAgfQogCi0gICAgaW50IHJlcGFpbnRUb3AgPSAwOwotICAgIGlu
dCByZXBhaW50Qm90dG9tID0gMDsKKyAgICAvLyBEb24ndCBpbml0aWFsaXplIHRoZXNlIHZhbHVl
cyBpZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3QgYXR0ZW1wdAorICAgIC8vIG9mIGxheW91dCBmb3Ig
dGhpcyBvYmplY3QuICBJZiB0aGlzIG9iamVjdCBpcyBkZXNjZW5kYW50cyBvZiBhCisgICAgLy8g
ZmxleGlibGUgYm94LCB0aGUgbGF5b3V0IGNhbiBiZSBkb25lIG11bHRpcGxlIHRpbWVzLgorICAg
IGlmIChyZXBhaW50LT5tX3JlcGFpbnRUb3AgPCAwKSB7CisgICAgICAgIHJlcGFpbnQtPm1fcmVw
YWludFRvcCA9IElOVF9NQVg7CisgICAgICAgIHJlcGFpbnQtPm1fcmVwYWludEJvdHRvbSA9IDA7
CisgICAgfQogICAgIGludCBtYXhGbG9hdEJvdHRvbSA9IDA7CiAgICAgaWYgKGNoaWxkcmVuSW5s
aW5lKCkpCi0gICAgICAgIGxheW91dElubGluZUNoaWxkcmVuKHJlbGF5b3V0Q2hpbGRyZW4sIHJl
cGFpbnRUb3AsIHJlcGFpbnRCb3R0b20pOworICAgICAgICBsYXlvdXRJbmxpbmVDaGlsZHJlbihy
ZWxheW91dENoaWxkcmVuLCByZXBhaW50LT5tX3JlcGFpbnRUb3AsIHJlcGFpbnQtPm1fcmVwYWlu
dEJvdHRvbSk7CiAgICAgZWxzZQogICAgICAgICBsYXlvdXRCbG9ja0NoaWxkcmVuKHJlbGF5b3V0
Q2hpbGRyZW4sIG1heEZsb2F0Qm90dG9tKTsKIApAQCAtODQyLDQxICs5NDksOCBAQCB2b2lkIFJl
bmRlckJsb2NrOjpsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4pCiAKICAgICBzdGF0
ZVB1c2hlci5wb3AoKTsKIAotICAgIC8vIFVwZGF0ZSBvdXIgc2Nyb2xsIGluZm9ybWF0aW9uIGlm
IHdlJ3JlIG92ZXJmbG93OmF1dG8vc2Nyb2xsL2hpZGRlbiBub3cgdGhhdCB3ZSBrbm93IGlmCi0g
ICAgLy8gd2Ugb3ZlcmZsb3cgb3Igbm90LgotICAgIGlmIChoYXNPdmVyZmxvd0NsaXAoKSkKLSAg
ICAgICAgbGF5ZXIoKS0+dXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0KCk7Ci0KLSAgICAvLyBS
ZXBhaW50IHdpdGggb3VyIG5ldyBib3VuZHMgaWYgdGhleSBhcmUgZGlmZmVyZW50IGZyb20gb3Vy
IG9sZCBib3VuZHMuCi0gICAgYm9vbCBkaWRGdWxsUmVwYWludCA9IHJlcGFpbnRlci5yZXBhaW50
QWZ0ZXJMYXlvdXQoKTsKLSAgICBpZiAoIWRpZEZ1bGxSZXBhaW50ICYmIHJlcGFpbnRUb3AgIT0g
cmVwYWludEJvdHRvbSAmJiAoc3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUgfHwgZW5j
bG9zaW5nTGF5ZXIoKS0+aGFzVmlzaWJsZUNvbnRlbnQoKSkpIHsKLSAgICAgICAgSW50UmVjdCBy
ZXBhaW50UmVjdChtX292ZXJmbG93TGVmdCwgcmVwYWludFRvcCwgbV9vdmVyZmxvd1dpZHRoIC0g
bV9vdmVyZmxvd0xlZnQsIHJlcGFpbnRCb3R0b20gLSByZXBhaW50VG9wKTsKLQotICAgICAgICAv
LyBGSVhNRTogRGVhbCB3aXRoIG11bHRpcGxlIGNvbHVtbiByZXBhaW50aW5nLiAgV2UgaGF2ZSB0
byBzcGxpdCB0aGUgcmVwYWludAotICAgICAgICAvLyByZWN0IHVwIGludG8gbXVsdGlwbGUgcmVj
dHMgaWYgaXQgc3BhbnMgY29sdW1ucy4KLQotICAgICAgICByZXBhaW50UmVjdC5pbmZsYXRlKG1h
eGltYWxPdXRsaW5lU2l6ZShQYWludFBoYXNlT3V0bGluZSkpOwotICAgICAgICAKLSAgICAgICAg
aWYgKGhhc092ZXJmbG93Q2xpcCgpKSB7Ci0gICAgICAgICAgICAvLyBBZGp1c3QgcmVwYWludCBy
ZWN0IGZvciBzY3JvbGwgb2Zmc2V0Ci0gICAgICAgICAgICBpbnQgeCA9IHJlcGFpbnRSZWN0Lngo
KTsKLSAgICAgICAgICAgIGludCB5ID0gcmVwYWludFJlY3QueSgpOwotICAgICAgICAgICAgbGF5
ZXIoKS0+c3VidHJhY3RTY3JvbGxlZENvbnRlbnRPZmZzZXQoeCwgeSk7Ci0gICAgICAgICAgICBy
ZXBhaW50UmVjdC5zZXRYKHgpOwotICAgICAgICAgICAgcmVwYWludFJlY3Quc2V0WSh5KTsKLQot
ICAgICAgICAgICAgLy8gRG9uJ3QgYWxsb3cgdGhpcyByZWN0IHRvIHNwaWxsIG91dCBvZiBvdXIg
b3ZlcmZsb3cgYm94LgotICAgICAgICAgICAgcmVwYWludFJlY3QuaW50ZXJzZWN0KEludFJlY3Qo
MCwgMCwgd2lkdGgoKSwgaGVpZ2h0KCkpKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIE1ha2Ug
c3VyZSB0aGUgcmVjdCBpcyBzdGlsbCBub24tZW1wdHkgYWZ0ZXIgaW50ZXJzZWN0aW5nIGZvciBv
dmVyZmxvdyBhYm92ZQotICAgICAgICBpZiAoIXJlcGFpbnRSZWN0LmlzRW1wdHkoKSkgewotICAg
ICAgICAgICAgcmVwYWludFJlY3RhbmdsZShyZXBhaW50UmVjdCk7IC8vIFdlIG5lZWQgdG8gZG8g
YSBwYXJ0aWFsIHJlcGFpbnQgb2Ygb3VyIGNvbnRlbnQuCi0gICAgICAgICAgICBpZiAoaGFzUmVm
bGVjdGlvbigpKQotICAgICAgICAgICAgICAgIHJlcGFpbnRSZWN0YW5nbGUocmVmbGVjdGVkUmVj
dChyZXBhaW50UmVjdCkpOwotICAgICAgICB9Ci0gICAgfQotICAgIHNldE5lZWRzTGF5b3V0KGZh
bHNlKTsKKyAgICBpZiAoIXNfZGVsYXllZFJlcGFpbnRDb3VudCA+IDApCisgICAgICAgIHJlcGFp
bnRCbG9ja0FmdGVyTGF5b3V0KHJlcGFpbnQpOwogfQogCiBib29sIFJlbmRlckJsb2NrOjpleHBh
bmRzVG9FbmNsb3NlT3ZlcmhhbmdpbmdGbG9hdHMoKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmgKaW5kZXggZjMxM2IzZC4uYmQ5N2RiOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCkBAIC0z
MjUsNiArMzI1LDE1IEBAIHB1YmxpYzoKICAgICAvLyBzdHlsZSBmcm9tIHRoaXMgUmVuZGVyQmxv
Y2suCiAgICAgUmVuZGVyQmxvY2sqIGNyZWF0ZUFub255bW91c0Jsb2NrKCkgY29uc3Q7CiAKKyAg
ICBzdHJ1Y3QgRGVsYXllZFJlcGFpbnQ7CisgICAgLy8gRGVsYXkgcmVwYWludCBhbmQgdXBkYXRl
IG9mIHNjcm9sbGJhciB1bnRpbCBmaW5pc2hEZWxheVJlcGFpbnQoKQorICAgIC8vIHdpbGwgYmUg
Y2FsbGVkLiAgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHdoZW4gYSBmbGV4Ym94IGlzIGxheW91dGlu
ZworICAgIC8vIGl0cyBkZXNjZW5kYW50LiAgSWYgbXVsdGlwbGUgc3RhcnREZWxheVJlcGFpbnQo
KSBpcyBjYWxsZWQsCisgICAgLy8gZmluaXNoRGVsYXlSZXBhaW50KCkgd2lsbCBkbyBub3RoaW5n
IHVudGlsIGZpbmlzaERlbGF5UmVwYWludCgpCisgICAgLy8gaXMgY2FsbGVkIHNhbWUgdGltZXMu
CisgICAgc3RhdGljIHZvaWQgc3RhcnREZWxheVJlcGFpbnQoKTsKKyAgICBzdGF0aWMgdm9pZCBm
aW5pc2hEZWxheVJlcGFpbnQoKTsKKwogcHJpdmF0ZToKICAgICB2b2lkIGFkanVzdFBvaW50VG9D
b2x1bW5Db250ZW50cyhJbnRQb2ludCYpIGNvbnN0OwogICAgIHZvaWQgYWRqdXN0Rm9yQm9yZGVy
Rml0KGludCB4LCBpbnQmIGxlZnQsIGludCYgcmlnaHQpIGNvbnN0OyAvLyBIZWxwZXIgZnVuY3Rp
b24gZm9yIGJvcmRlckZpdEFkanVzdApAQCAtNDY2LDYgKzQ3NSw4IEBAIHByb3RlY3RlZDoKICAg
ICAvLyBFbmQgaGVscGVyIGZ1bmN0aW9ucyBhbmQgc3RydWN0cyB1c2VkIGJ5IGxheW91dEJsb2Nr
Q2hpbGRyZW4uCiAKIHByaXZhdGU6CisgICAgdm9pZCByZXBhaW50QmxvY2tBZnRlckxheW91dChE
ZWxheWVkUmVwYWludCogcmVwYWludCk7CisKICAgICB0eXBlZGVmIExpc3RIYXNoU2V0PFJlbmRl
ckJveCo+Ojpjb25zdF9pdGVyYXRvciBJdGVyYXRvcjsKICAgICBEZXByZWNhdGVkUHRyTGlzdDxG
bG9hdGluZ09iamVjdD4qIG1fZmxvYXRpbmdPYmplY3RzOwogICAgIExpc3RIYXNoU2V0PFJlbmRl
ckJveCo+KiBtX3Bvc2l0aW9uZWRPYmplY3RzOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmxleGlibGVCb3guY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGli
bGVCb3guY3BwCmluZGV4IDFkY2VmMzYuLmZiOGFhZTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGbGV4aWJsZUJveC5jcHAKQEAgLTMzNiw3ICszMzYsOSBAQCB2b2lkIFJlbmRlckZsZXhpYmxl
Qm94OjpsYXlvdXRIb3Jpem9udGFsQm94KGJvb2wgcmVsYXlvdXRDaGlsZHJlbikKICAgICAgICAg
fQogICAgICAgICBjaGlsZCA9IGl0ZXJhdG9yLm5leHQoKTsKICAgICB9Ci0gICAgCisKKyAgICBS
ZW5kZXJCbG9jazo6c3RhcnREZWxheVJlcGFpbnQoKTsKKwogICAgIC8vIFdlIGRvIDIgcGFzc2Vz
LiAgVGhlIGZpcnN0IHBhc3MgaXMgc2ltcGx5IHRvIGxheSBldmVyeW9uZSBvdXQgYXQKICAgICAv
LyB0aGVpciBwcmVmZXJyZWQgd2lkdGhzLiAgVGhlIHNlY29uZCBwYXNzIGhhbmRsZXMgZmxleGlu
ZyB0aGUgY2hpbGRyZW4uCiAgICAgZG8gewpAQCAtNTYxLDcgKzU2Myw5IEBAIHZvaWQgUmVuZGVy
RmxleGlibGVCb3g6OmxheW91dEhvcml6b250YWxCb3goYm9vbCByZWxheW91dENoaWxkcmVuKQog
ICAgIH0gd2hpbGUgKGhhdmVGbGV4KTsKIAogICAgIG1fZmxleGluZ0NoaWxkcmVuID0gZmFsc2U7
Ci0gICAgCisKKyAgICBSZW5kZXJCbG9jazo6ZmluaXNoRGVsYXlSZXBhaW50KCk7CisKICAgICBp
ZiAocmVtYWluaW5nU3BhY2UgPiAwICYmICgoc3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gTFRSICYm
IHN0eWxlKCktPmJveFBhY2soKSAhPSBCU1RBUlQpIHx8CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKHN0eWxlKCktPmRpcmVjdGlvbigpID09IFJUTCAmJiBzdHlsZSgpLT5ib3hQYWNr
KCkgIT0gQkVORCkpKSB7CiAgICAgICAgIC8vIENoaWxkcmVuIG11c3QgYmUgcmVwb3NpdGlvbmVk
LgpAQCAtNzg5LDYgKzc5Myw4IEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmxheW91dFZlcnRp
Y2FsQm94KGJvb2wgcmVsYXlvdXRDaGlsZHJlbikKICAgICAgICAgfQogICAgIH0KIAorICAgIFJl
bmRlckJsb2NrOjpzdGFydERlbGF5UmVwYWludCgpOworCiAgICAgLy8gV2UgZG8gMiBwYXNzZXMu
ICBUaGUgZmlyc3QgcGFzcyBpcyBzaW1wbHkgdG8gbGF5IGV2ZXJ5b25lIG91dCBhdAogICAgIC8v
IHRoZWlyIHByZWZlcnJlZCB3aWR0aHMuICBUaGUgc2Vjb25kIHBhc3MgaGFuZGxlcyBmbGV4aW5n
IHRoZSBjaGlsZHJlbi4KICAgICAvLyBPdXIgZmlyc3QgcGFzcyBpcyBkb25lIHdpdGhvdXQgZmxl
eGluZy4gIFdlIHNpbXBseSBsYXkgdGhlIGNoaWxkcmVuCkBAIC05NzcsNiArOTgzLDggQEAgdm9p
ZCBSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0VmVydGljYWxCb3goYm9vbCByZWxheW91dENoaWxk
cmVuKQogICAgICAgICB9ICAgICAgICAKICAgICB9IHdoaWxlIChoYXZlRmxleCk7CiAKKyAgICBS
ZW5kZXJCbG9jazo6ZmluaXNoRGVsYXlSZXBhaW50KCk7CisKICAgICBpZiAoc3R5bGUoKS0+Ym94
UGFjaygpICE9IEJTVEFSVCAmJiByZW1haW5pbmdTcGFjZSA+IDApIHsKICAgICAgICAgLy8gQ2hp
bGRyZW4gbXVzdCBiZSByZXBvc2l0aW9uZWQuCiAgICAgICAgIGludCBvZmZzZXQgPSAwOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvYmlkaS5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9i
aWRpLmNwcAppbmRleCAzNjU5OTEyLi5iZmIzMTkyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRl
cmluZy9iaWRpLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9iaWRpLmNwcApAQCAtOTA3LDgg
KzkwNyw4IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dElubGluZUNoaWxkcmVuKGJvb2wgcmVs
YXlvdXRDaGlsZHJlbiwgaW50JiByZXBhaW50VG9wLCBpCiAKICAgICAgICAgaWYgKHN0YXJ0TGlu
ZSkgewogICAgICAgICAgICAgdXNlUmVwYWludEJvdW5kcyA9IHRydWU7Ci0gICAgICAgICAgICBy
ZXBhaW50VG9wID0gaGVpZ2h0KCk7Ci0gICAgICAgICAgICByZXBhaW50Qm90dG9tID0gaGVpZ2h0
KCk7CisgICAgICAgICAgICByZXBhaW50VG9wID0gbWluKHJlcGFpbnRUb3AsIGhlaWdodCgpKTsK
KyAgICAgICAgICAgIHJlcGFpbnRCb3R0b20gPSBtYXgocmVwYWludEJvdHRvbSwgaGVpZ2h0KCkp
OwogICAgICAgICAgICAgUmVuZGVyQXJlbmEqIGFyZW5hID0gcmVuZGVyQXJlbmEoKTsKICAgICAg
ICAgICAgIFJvb3RJbmxpbmVCb3gqIGJveCA9IHN0YXJ0TGluZTsKICAgICAgICAgICAgIHdoaWxl
IChib3gpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31777</attachid>
            <date>2009-06-24 02:56:07 -0700</date>
            <delta_ts>2009-06-25 00:53:55 -0700</delta_ts>
            <desc>Patch v5</desc>
            <filename>Patch-v5.patch</filename>
            <type>text/plain</type>
            <size>9234</size>
            <attacher name="Shinichiro Hamaji">hamaji</attacher>
            
              <data encoding="base64">ZDEwNzg3NDJhMmUwYzg2MmM0NmUwY2E1ZjcyMTY5NDk4NTQ2ZDQ5ZgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9mbGV4Ym94L3JlcGFpbnQtc2Nyb2xsYmFyLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvZmxleGJveC9yZXBhaW50LXNjcm9sbGJhci1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDllNGE3NgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZmxleGJveC9yZXBhaW50LXNjcm9sbGJhci1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw0NCBAQAorQ2hlY2sgaWYgY2hhbmdpbmcgZmxleGJveCdzIGNvbnRlbnQg
ZG9lc24ndCBjaGFuZ2UgdGhlIHN0YXRlIG9mIHNjcm9sbC4gU2VlIHRoaXMgYnVnIGZvciBkZXRh
aWw6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTEzNQorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworCisKKworCisKKworCisKKworbWVyb0wgaXBzdW0K
K2Zvb29vb29vb29vb29vb28gbWVyb0wgaXBzdW0KKworCisKKworCisKKworCisKK21lcm9MIGlw
c3VtCisKKworCisKKworCisKKworCittZXJvTCBpcHN1bQorUEFTUyBlbGVtZW50LnNjcm9sbFRv
cCBpcyAxMDgKK1BBU1MgZWxlbWVudC5zY3JvbGxMZWZ0IGlzIDEwOAorUEFTUyBlbGVtZW50LnNj
cm9sbFRvcCBpcyAxMDgKK1BBU1MgZWxlbWVudC5zY3JvbGxUb3AgaXMgMTA4CitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9mbGV4Ym94L3JlcGFpbnQtc2Nyb2xsYmFyLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2ZsZXhib3gvcmVwYWludC1zY3JvbGxiYXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5lYTUwMmIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9mbGV4Ym94L3JlcGFpbnQtc2Nyb2xsYmFyLmh0bWwKQEAgLTAsMCArMSwzNyBAQAorPCFE
T0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVh
ZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxk
aXYgc3R5bGU9ImRpc3BsYXk6IC13ZWJraXQtYm94Oy13ZWJraXQtYm94LW9yaWVudDogdmVydGlj
YWw7IGhlaWdodDogNjlweDsiPgorICAgIDxkaXYgaWQ9InZlcnRpY2FsIiBzdHlsZT0ib3ZlcmZs
b3cteTogc2Nyb2xsOyBvdXRsaW5lOiBub25lOyB3aWR0aDogODBweDsgLXdlYmtpdC1ib3gtZmxl
eDoxOyI+CisgICAgICAgIDxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPkxvcmVt
IGlwc3VtCisgICAgPC9kaXY+Cis8L2Rpdj4KKzxkaXYgc3R5bGU9ImRpc3BsYXk6IC13ZWJraXQt
Ym94Oy13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDsgd2lkdGg6IDY5cHg7Ij4KKyAgICA8
cHJlIGlkPSJob3Jpem9udGFsIiBzdHlsZT0ib3ZlcmZsb3cteDogc2Nyb2xsOyBvdXRsaW5lOiBu
b25lOyBoZWlnaHQ6IDgwcHg7IC13ZWJraXQtYm94LWZsZXg6MTsiPgorZm9vb29vb29vb29vb29v
byBMb3JlbSBpcHN1bQorICAgIDwvcHJlPgorPC9kaXY+Cis8ZGl2IHN0eWxlPSJkaXNwbGF5OiAt
d2Via2l0LWJveDstd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsOyBoZWlnaHQ6IDY5cHg7Ij4K
KzxkaXYgc3R5bGU9ImRpc3BsYXk6IC13ZWJraXQtYm94OyBoZWlnaHQ6IDY5cHg7IHdpZHRoOiA4
MHB4OyI+CisgICAgPGRpdiBpZD0ibmVzdCIgc3R5bGU9Im92ZXJmbG93LXk6IHNjcm9sbDsgb3V0
bGluZTogbm9uZTsgd2lkdGg6IDgwcHg7IC13ZWJraXQtYm94LWZsZXg6MTsiPgorICAgICAgICA8
YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj5Mb3JlbSBpcHN1bQorICAgIDwvZGl2
PgorPC9kaXY+Cis8L2Rpdj4KKzxkaXYgc3R5bGU9ImRpc3BsYXk6IC13ZWJraXQtYm94Oy13ZWJr
aXQtYm94LW9yaWVudDogdmVydGljYWw7IGhlaWdodDogNjlweDsiPgorPGRpdiBzdHlsZT0iaGVp
Z2h0OiA2OXB4OyB3aWR0aDogODBweDsiPgorICAgIDxkaXYgaWQ9Im5lc3QyIiBzdHlsZT0ib3Zl
cmZsb3cteTogc2Nyb2xsOyBvdXRsaW5lOiBub25lOyB3aWR0aDogODBweDsgaGVpZ2h0OiA2OXB4
OyAtd2Via2l0LWJveC1mbGV4OjE7Ij4KKyAgICAgICAgPGJyPjxicj48YnI+PGJyPjxicj48YnI+
PGJyPjxicj48YnI+TG9yZW0gaXBzdW0KKyAgICA8L2Rpdj4KKzwvZGl2PgorPC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcmVwYWludC1zY3Jv
bGxiYXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9mbGV4Ym94L3Jlc291cmNlcy9yZXBhaW50LXNjcm9sbGJhci5qcyBiL0xheW91
dFRlc3RzL2Zhc3QvZmxleGJveC9yZXNvdXJjZXMvcmVwYWludC1zY3JvbGxiYXIuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGI5NDc0MAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZmxleGJveC9yZXNvdXJjZXMvcmVwYWludC1zY3JvbGxiYXIuanMK
QEAgLTAsMCArMSwyNSBAQAorZGVzY3JpcHRpb24oIkNoZWNrIGlmIGNoYW5naW5nIGZsZXhib3gn
cyBjb250ZW50IGRvZXNuJ3QgY2hhbmdlIHRoZSBzdGF0ZSBvZiBzY3JvbGwuIFNlZSB0aGlzIGJ1
ZyBmb3IgZGV0YWlsOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUx
MzUiKTsKKwordmFyIGVsZW1lbnQgPSBudWxsOworCitlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInZlcnRpY2FsIik7CitlbGVtZW50LnNjcm9sbFRvcCA9IDEwODsKK2VsZW1lbnQu
bGFzdENoaWxkLmRhdGE9J21lcm9MIGlwc3VtJzsKK3Nob3VsZEJlKCJlbGVtZW50LnNjcm9sbFRv
cCIsICIxMDgiKTsKKworZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJob3Jpem9u
dGFsIik7CitlbGVtZW50LnNjcm9sbExlZnQgPSAxMDg7CitlbGVtZW50Lmxhc3RDaGlsZC5kYXRh
PSdmb29vb29vb29vb29vb29vIG1lcm9MIGlwc3VtJzsKK3Nob3VsZEJlKCJlbGVtZW50LnNjcm9s
bExlZnQiLCAiMTA4Iik7CisKK2VsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibmVz
dCIpOworZWxlbWVudC5zY3JvbGxUb3AgPSAxMDg7CitlbGVtZW50Lmxhc3RDaGlsZC5kYXRhPSdt
ZXJvTCBpcHN1bSc7CitzaG91bGRCZSgiZWxlbWVudC5zY3JvbGxUb3AiLCAiMTA4Iik7CisKK2Vs
ZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibmVzdDIiKTsKK2VsZW1lbnQuc2Nyb2xs
VG9wID0gMTA4OworZWxlbWVudC5sYXN0Q2hpbGQuZGF0YT0nbWVyb0wgaXBzdW0nOworc2hvdWxk
QmUoImVsZW1lbnQuc2Nyb2xsVG9wIiwgIjEwOCIpOworCitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0
cnVlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IDk4NDI2ZWQuLmJmNDUwNjEgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTg0LDYgKzg0LDEwIEBAIHN0YXRpYyBQZXJj
ZW50SGVpZ2h0Q29udGFpbmVyTWFwKiBnUGVyY2VudEhlaWdodENvbnRhaW5lck1hcCA9IDA7CiAg
ICAgCiB0eXBlZGVmIFdURjo6SGFzaE1hcDxSZW5kZXJCbG9jayosIExpc3RIYXNoU2V0PFJlbmRl
cklubGluZSo+Kj4gQ29udGludWF0aW9uT3V0bGluZVRhYmxlTWFwOwogCit0eXBlZGVmIFdURjo6
SGFzaFNldDxSZW5kZXJCbG9jayo+IERlbGF5ZWRVcGRhdGVTY3JvbGxJbmZvU2V0Oworc3RhdGlj
IGludCBnRGVsYXlVcGRhdGVTY3JvbGxJbmZvID0gMDsKK3N0YXRpYyBEZWxheWVkVXBkYXRlU2Ny
b2xsSW5mb1NldCogZ0RlbGF5ZWRVcGRhdGVTY3JvbGxJbmZvU2V0ID0gMDsKKwogLy8gT3VyIE1h
cmdpbkluZm8gc3RhdGUgdXNlZCB3aGVuIGxheWluZyBvdXQgYmxvY2sgY2hpbGRyZW4uCiBSZW5k
ZXJCbG9jazo6TWFyZ2luSW5mbzo6TWFyZ2luSW5mbyhSZW5kZXJCbG9jayogYmxvY2ssIGludCB0
b3AsIGludCBib3R0b20pCiB7CkBAIC02ODgsNiArNjkyLDQyIEBAIGJvb2wgUmVuZGVyQmxvY2s6
OmlzU2VsZkNvbGxhcHNpbmdCbG9jaygpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2
b2lkIFJlbmRlckJsb2NrOjpzdGFydERlbGF5VXBkYXRlU2Nyb2xsSW5mbygpIHsKKyAgICBpZiAo
Z0RlbGF5VXBkYXRlU2Nyb2xsSW5mbyA9PSAwKSB7CisgICAgICAgIEFTU0VSVCghZ0RlbGF5ZWRV
cGRhdGVTY3JvbGxJbmZvU2V0KTsKKyAgICAgICAgZ0RlbGF5ZWRVcGRhdGVTY3JvbGxJbmZvU2V0
ID0gbmV3IERlbGF5ZWRVcGRhdGVTY3JvbGxJbmZvU2V0OworICAgIH0KKyAgICBBU1NFUlQoZ0Rl
bGF5ZWRVcGRhdGVTY3JvbGxJbmZvU2V0KTsKKyAgICArK2dEZWxheVVwZGF0ZVNjcm9sbEluZm87
Cit9CisKK3ZvaWQgUmVuZGVyQmxvY2s6OmZpbmlzaERlbGF5VXBkYXRlU2Nyb2xsSW5mbygpIHsK
KyAgICAtLWdEZWxheVVwZGF0ZVNjcm9sbEluZm87CisgICAgQVNTRVJUKGdEZWxheVVwZGF0ZVNj
cm9sbEluZm8gPj0gMCk7CisgICAgaWYgKGdEZWxheVVwZGF0ZVNjcm9sbEluZm8gPT0gMCkgewor
ICAgICAgICBBU1NFUlQoZ0RlbGF5ZWRVcGRhdGVTY3JvbGxJbmZvU2V0KTsKKworICAgICAgICBm
b3IgKERlbGF5ZWRVcGRhdGVTY3JvbGxJbmZvU2V0OjppdGVyYXRvciBpdCA9IGdEZWxheWVkVXBk
YXRlU2Nyb2xsSW5mb1NldC0+YmVnaW4oKTsgaXQgIT0gZ0RlbGF5ZWRVcGRhdGVTY3JvbGxJbmZv
U2V0LT5lbmQoKTsgKytpdCkgeworICAgICAgICAgICAgUmVuZGVyQmxvY2sqIGJsb2NrID0gKml0
OworICAgICAgICAgICAgaWYgKGJsb2NrLT5oYXNPdmVyZmxvd0NsaXAoKSkgeworICAgICAgICAg
ICAgICAgIGJsb2NrLT5sYXllcigpLT51cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXQoKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGRlbGV0ZSBnRGVsYXllZFVwZGF0ZVNj
cm9sbEluZm9TZXQ7CisgICAgICAgIGdEZWxheWVkVXBkYXRlU2Nyb2xsSW5mb1NldCA9IDA7Cisg
ICAgfQorfQorCit2b2lkIFJlbmRlckJsb2NrOjp1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXQo
KSB7CisgICAgaWYgKGhhc092ZXJmbG93Q2xpcCgpKSB7CisgICAgICAgIGlmIChnRGVsYXlVcGRh
dGVTY3JvbGxJbmZvKQorICAgICAgICAgICAgZ0RlbGF5ZWRVcGRhdGVTY3JvbGxJbmZvU2V0LT5h
ZGQodGhpcyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxheWVyKCktPnVwZGF0ZVNjcm9s
bEluZm9BZnRlckxheW91dCgpOworICAgIH0KK30KKwogdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0
KCkKIHsKICAgICAvLyBVcGRhdGUgb3VyIGZpcnN0IGxldHRlciBpbmZvIG5vdy4KQEAgLTg0NCw4
ICs4ODQsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hp
bGRyZW4pCiAKICAgICAvLyBVcGRhdGUgb3VyIHNjcm9sbCBpbmZvcm1hdGlvbiBpZiB3ZSdyZSBv
dmVyZmxvdzphdXRvL3Njcm9sbC9oaWRkZW4gbm93IHRoYXQgd2Uga25vdyBpZgogICAgIC8vIHdl
IG92ZXJmbG93IG9yIG5vdC4KLSAgICBpZiAoaGFzT3ZlcmZsb3dDbGlwKCkpCi0gICAgICAgIGxh
eWVyKCktPnVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dCgpOworICAgIHVwZGF0ZVNjcm9sbElu
Zm9BZnRlckxheW91dCgpOwogCiAgICAgLy8gUmVwYWludCB3aXRoIG91ciBuZXcgYm91bmRzIGlm
IHRoZXkgYXJlIGRpZmZlcmVudCBmcm9tIG91ciBvbGQgYm91bmRzLgogICAgIGJvb2wgZGlkRnVs
bFJlcGFpbnQgPSByZXBhaW50ZXIucmVwYWludEFmdGVyTGF5b3V0KCk7CkBAIC0xNDY1LDggKzE1
MDQsNyBAQCBib29sIFJlbmRlckJsb2NrOjpsYXlvdXRPbmx5UG9zaXRpb25lZE9iamVjdHMoKQog
CiAgICAgc3RhdGVQdXNoZXIucG9wKCk7CiAKLSAgICBpZiAoaGFzT3ZlcmZsb3dDbGlwKCkpCi0g
ICAgICAgIGxheWVyKCktPnVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dCgpOworICAgIHVwZGF0
ZVNjcm9sbEluZm9BZnRlckxheW91dCgpOwogCiAgICAgc2V0TmVlZHNMYXlvdXQoZmFsc2UpOwog
ICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKaW5kZXggMzFlYWU3Yy4uMjQ5
MGE4MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAorKysgYi9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCkBAIC0zMjgsNiArMzI4LDE0IEBAIHB1Ymxp
YzoKICAgICAvLyBzdHlsZSBmcm9tIHRoaXMgUmVuZGVyQmxvY2suCiAgICAgUmVuZGVyQmxvY2sq
IGNyZWF0ZUFub255bW91c0Jsb2NrKCkgY29uc3Q7CiAKKyAgICAvLyBEZWxheSB1cGRhdGUgc2Ny
b2xsYmFyIHVudGlsIGZpbmlzaERlbGF5UmVwYWludCgpIHdpbGwgYmUKKyAgICAvLyBjYWxsZWQu
ICBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgd2hlbiBhIGZsZXhib3ggaXMgbGF5b3V0aW5nIGl0cwor
ICAgIC8vIGRlc2NlbmRhbnQuICBJZiBtdWx0aXBsZSBzdGFydERlbGF5UmVwYWludCgpIGlzIGNh
bGxlZCwKKyAgICAvLyBmaW5pc2hEZWxheVJlcGFpbnQoKSB3aWxsIGRvIG5vdGhpbmcgdW50aWwg
ZmluaXNoRGVsYXlSZXBhaW50KCkKKyAgICAvLyBpcyBjYWxsZWQgc2FtZSB0aW1lcy4KKyAgICBz
dGF0aWMgdm9pZCBzdGFydERlbGF5VXBkYXRlU2Nyb2xsSW5mbygpOworICAgIHN0YXRpYyB2b2lk
IGZpbmlzaERlbGF5VXBkYXRlU2Nyb2xsSW5mbygpOworCiBwcml2YXRlOgogICAgIHZvaWQgYWRq
dXN0UG9pbnRUb0NvbHVtbkNvbnRlbnRzKEludFBvaW50JikgY29uc3Q7CiAgICAgdm9pZCBhZGp1
c3RGb3JCb3JkZXJGaXQoaW50IHgsIGludCYgbGVmdCwgaW50JiByaWdodCkgY29uc3Q7IC8vIEhl
bHBlciBmdW5jdGlvbiBmb3IgYm9yZGVyRml0QWRqdXN0CkBAIC0zNTcsNiArMzY1LDggQEAgcHJp
dmF0ZToKIAogICAgIGJvb2wgZXhwYW5kc1RvRW5jbG9zZU92ZXJoYW5naW5nRmxvYXRzKCkgY29u
c3Q7CiAKKyAgICB2b2lkIHVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dCgpOworCiBwcm90ZWN0
ZWQ6CiAgICAgc3RydWN0IEZsb2F0aW5nT2JqZWN0IHsKICAgICAgICAgZW51bSBUeXBlIHsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcCBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAppbmRleCAxZGNlZjM2Li5jZGZiYTM1
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKKysr
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCkBAIC0zMzYsNyArMzM2
LDkgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0SG9yaXpvbnRhbEJveChib29sIHJl
bGF5b3V0Q2hpbGRyZW4pCiAgICAgICAgIH0KICAgICAgICAgY2hpbGQgPSBpdGVyYXRvci5uZXh0
KCk7CiAgICAgfQotICAgIAorCisgICAgUmVuZGVyQmxvY2s6OnN0YXJ0RGVsYXlVcGRhdGVTY3Jv
bGxJbmZvKCk7CisKICAgICAvLyBXZSBkbyAyIHBhc3Nlcy4gIFRoZSBmaXJzdCBwYXNzIGlzIHNp
bXBseSB0byBsYXkgZXZlcnlvbmUgb3V0IGF0CiAgICAgLy8gdGhlaXIgcHJlZmVycmVkIHdpZHRo
cy4gIFRoZSBzZWNvbmQgcGFzcyBoYW5kbGVzIGZsZXhpbmcgdGhlIGNoaWxkcmVuLgogICAgIGRv
IHsKQEAgLTU2MSw3ICs1NjMsOSBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRIb3Jp
em9udGFsQm94KGJvb2wgcmVsYXlvdXRDaGlsZHJlbikKICAgICB9IHdoaWxlIChoYXZlRmxleCk7
CiAKICAgICBtX2ZsZXhpbmdDaGlsZHJlbiA9IGZhbHNlOwotICAgIAorCisgICAgUmVuZGVyQmxv
Y2s6OmZpbmlzaERlbGF5VXBkYXRlU2Nyb2xsSW5mbygpOworCiAgICAgaWYgKHJlbWFpbmluZ1Nw
YWNlID4gMCAmJiAoKHN0eWxlKCktPmRpcmVjdGlvbigpID09IExUUiAmJiBzdHlsZSgpLT5ib3hQ
YWNrKCkgIT0gQlNUQVJUKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHls
ZSgpLT5kaXJlY3Rpb24oKSA9PSBSVEwgJiYgc3R5bGUoKS0+Ym94UGFjaygpICE9IEJFTkQpKSkg
ewogICAgICAgICAvLyBDaGlsZHJlbiBtdXN0IGJlIHJlcG9zaXRpb25lZC4KQEAgLTc4OSw2ICs3
OTMsOCBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRWZXJ0aWNhbEJveChib29sIHJl
bGF5b3V0Q2hpbGRyZW4pCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBSZW5kZXJCbG9jazo6c3Rh
cnREZWxheVVwZGF0ZVNjcm9sbEluZm8oKTsKKwogICAgIC8vIFdlIGRvIDIgcGFzc2VzLiAgVGhl
IGZpcnN0IHBhc3MgaXMgc2ltcGx5IHRvIGxheSBldmVyeW9uZSBvdXQgYXQKICAgICAvLyB0aGVp
ciBwcmVmZXJyZWQgd2lkdGhzLiAgVGhlIHNlY29uZCBwYXNzIGhhbmRsZXMgZmxleGluZyB0aGUg
Y2hpbGRyZW4uCiAgICAgLy8gT3VyIGZpcnN0IHBhc3MgaXMgZG9uZSB3aXRob3V0IGZsZXhpbmcu
ICBXZSBzaW1wbHkgbGF5IHRoZSBjaGlsZHJlbgpAQCAtOTc3LDYgKzk4Myw4IEBAIHZvaWQgUmVu
ZGVyRmxleGlibGVCb3g6OmxheW91dFZlcnRpY2FsQm94KGJvb2wgcmVsYXlvdXRDaGlsZHJlbikK
ICAgICAgICAgfSAgICAgICAgCiAgICAgfSB3aGlsZSAoaGF2ZUZsZXgpOwogCisgICAgUmVuZGVy
QmxvY2s6OmZpbmlzaERlbGF5VXBkYXRlU2Nyb2xsSW5mbygpOworCiAgICAgaWYgKHN0eWxlKCkt
PmJveFBhY2soKSAhPSBCU1RBUlQgJiYgcmVtYWluaW5nU3BhY2UgPiAwKSB7CiAgICAgICAgIC8v
IENoaWxkcmVuIG11c3QgYmUgcmVwb3NpdGlvbmVkLgogICAgICAgICBpbnQgb2Zmc2V0ID0gMDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31834</attachid>
            <date>2009-06-25 00:53:50 -0700</date>
            <delta_ts>2009-07-06 11:29:09 -0700</delta_ts>
            <desc>Patch v6</desc>
            <filename>Patch-v6.patch</filename>
            <type>text/plain</type>
            <size>11553</size>
            <attacher name="Shinichiro Hamaji">hamaji</attacher>
            
              <data encoding="base64">YTEyMjJlZTcxYjM5ZWU0NzAzYWI3MjMyZTdmNDYyMDIzZDQ1NTAyNgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGEyYmFhZGMu
LjZkNGYxNjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAwOS0wNi0yNCAgU2hpbmljaGlybyBI
YW1hamkgIDxoYW1hamlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyAxNTEzNTogUkVHUkVTU0lPTiAocjE5ODQzLXIxOTg1
MCk6IENoYW5naW5nIGEgZmxleGJveCdzCisgICAgICAgIGNvbnRlbnRzIG1ha2VzIGl0cyBjb250
YWluZXIgc2Nyb2xsIHRvIHRoZSB0b3AKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1MTM1CisKKyAgICAgICAgRGVsYXkgdXBkYXRlaW5nIHNjcm9sbCBi
YXIgb2YgZGVzY2VuZGFudHMgb2YgZmxleGJveCB1bnRpbCB0aGVpcgorICAgICAgICBwb3NpdGlv
bnMgYXJlIGRldGVybWluZWQuICBJbiB0aGlzIHdheSB3ZSBjYW4gcHJldmVudCBkZXNjZW5kYW50
cworICAgICAgICBvZiBmbGV4aWJsZSBib3hlcyBmcm9tIGNoYW5naW5nIHBvc2l0aW9ucyBvZiB0
aGVpciBzY3JvbGxiYXJzCisgICAgICAgIHVzaW5nIHRlbnRhdGl2ZSBwb3NpdGlvbnMuCisKKyAg
ICAgICAgKiBmYXN0L2ZsZXhib3gvcmVwYWludC1zY3JvbGxiYXItZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2ZsZXhib3gvcmVwYWludC1zY3JvbGxiYXIuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9mbGV4Ym94L3Jlc291cmNlcy9yZXBhaW50LXNjcm9sbGJhci5qczog
QWRkZWQuCisKIDIwMDktMDYtMjQgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IE1hcmsgUm93ZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZmxleGJveC9yZXBhaW50LXNjcm9sbGJhci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2ZsZXhib3gvcmVwYWludC1zY3JvbGxiYXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5ZTRhNzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2ZsZXhib3gvcmVwYWludC1zY3JvbGxiYXItZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsNDQgQEAKK0NoZWNrIGlmIGNoYW5naW5nIGZsZXhib3gncyBjb250ZW50IGRvZXNuJ3QgY2hh
bmdlIHRoZSBzdGF0ZSBvZiBzY3JvbGwuIFNlZSB0aGlzIGJ1ZyBmb3IgZGV0YWlsOiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxMzUKKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKKworCisKKworCisKKworCisKK21lcm9MIGlwc3VtCitmb29vb29vb29v
b29vb29vIG1lcm9MIGlwc3VtCisKKworCisKKworCisKKworCittZXJvTCBpcHN1bQorCisKKwor
CisKKworCisKKworbWVyb0wgaXBzdW0KK1BBU1MgZWxlbWVudC5zY3JvbGxUb3AgaXMgMTA4CitQ
QVNTIGVsZW1lbnQuc2Nyb2xsTGVmdCBpcyAxMDgKK1BBU1MgZWxlbWVudC5zY3JvbGxUb3AgaXMg
MTA4CitQQVNTIGVsZW1lbnQuc2Nyb2xsVG9wIGlzIDEwOAorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZmxleGJveC9yZXBhaW50LXNjcm9sbGJhci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mbGV4
Ym94L3JlcGFpbnQtc2Nyb2xsYmFyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uZWE1MDJiMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZmxleGJv
eC9yZXBhaW50LXNjcm9sbGJhci5odG1sCkBAIC0wLDAgKzEsMzcgQEAKKzwhRE9DVFlQRSBIVE1M
IFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+
Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IHN0eWxlPSJk
aXNwbGF5OiAtd2Via2l0LWJveDstd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsOyBoZWlnaHQ6
IDY5cHg7Ij4KKyAgICA8ZGl2IGlkPSJ2ZXJ0aWNhbCIgc3R5bGU9Im92ZXJmbG93LXk6IHNjcm9s
bDsgb3V0bGluZTogbm9uZTsgd2lkdGg6IDgwcHg7IC13ZWJraXQtYm94LWZsZXg6MTsiPgorICAg
ICAgICA8YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj5Mb3JlbSBpcHN1bQorICAg
IDwvZGl2PgorPC9kaXY+Cis8ZGl2IHN0eWxlPSJkaXNwbGF5OiAtd2Via2l0LWJveDstd2Via2l0
LWJveC1vcmllbnQ6IGhvcml6b250YWw7IHdpZHRoOiA2OXB4OyI+CisgICAgPHByZSBpZD0iaG9y
aXpvbnRhbCIgc3R5bGU9Im92ZXJmbG93LXg6IHNjcm9sbDsgb3V0bGluZTogbm9uZTsgaGVpZ2h0
OiA4MHB4OyAtd2Via2l0LWJveC1mbGV4OjE7Ij4KK2Zvb29vb29vb29vb29vb28gTG9yZW0gaXBz
dW0KKyAgICA8L3ByZT4KKzwvZGl2PgorPGRpdiBzdHlsZT0iZGlzcGxheTogLXdlYmtpdC1ib3g7
LXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsgaGVpZ2h0OiA2OXB4OyI+Cis8ZGl2IHN0eWxl
PSJkaXNwbGF5OiAtd2Via2l0LWJveDsgaGVpZ2h0OiA2OXB4OyB3aWR0aDogODBweDsiPgorICAg
IDxkaXYgaWQ9Im5lc3QiIHN0eWxlPSJvdmVyZmxvdy15OiBzY3JvbGw7IG91dGxpbmU6IG5vbmU7
IHdpZHRoOiA4MHB4OyAtd2Via2l0LWJveC1mbGV4OjE7Ij4KKyAgICAgICAgPGJyPjxicj48YnI+
PGJyPjxicj48YnI+PGJyPjxicj48YnI+TG9yZW0gaXBzdW0KKyAgICA8L2Rpdj4KKzwvZGl2Pgor
PC9kaXY+Cis8ZGl2IHN0eWxlPSJkaXNwbGF5OiAtd2Via2l0LWJveDstd2Via2l0LWJveC1vcmll
bnQ6IHZlcnRpY2FsOyBoZWlnaHQ6IDY5cHg7Ij4KKzxkaXYgc3R5bGU9ImhlaWdodDogNjlweDsg
d2lkdGg6IDgwcHg7Ij4KKyAgICA8ZGl2IGlkPSJuZXN0MiIgc3R5bGU9Im92ZXJmbG93LXk6IHNj
cm9sbDsgb3V0bGluZTogbm9uZTsgd2lkdGg6IDgwcHg7IGhlaWdodDogNjlweDsgLXdlYmtpdC1i
b3gtZmxleDoxOyI+CisgICAgICAgIDxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJy
PkxvcmVtIGlwc3VtCisgICAgPC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JlcGFpbnQtc2Nyb2xsYmFyLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZmxleGJveC9yZXNvdXJjZXMvcmVwYWludC1zY3JvbGxiYXIuanMgYi9MYXlvdXRUZXN0cy9mYXN0
L2ZsZXhib3gvcmVzb3VyY2VzL3JlcGFpbnQtc2Nyb2xsYmFyLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmRiOTQ3NDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2ZsZXhib3gvcmVzb3VyY2VzL3JlcGFpbnQtc2Nyb2xsYmFyLmpzCkBAIC0wLDAgKzEs
MjUgQEAKK2Rlc2NyaXB0aW9uKCJDaGVjayBpZiBjaGFuZ2luZyBmbGV4Ym94J3MgY29udGVudCBk
b2Vzbid0IGNoYW5nZSB0aGUgc3RhdGUgb2Ygc2Nyb2xsLiBTZWUgdGhpcyBidWcgZm9yIGRldGFp
bDogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTM1Iik7CisKK3Zh
ciBlbGVtZW50ID0gbnVsbDsKKworZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2
ZXJ0aWNhbCIpOworZWxlbWVudC5zY3JvbGxUb3AgPSAxMDg7CitlbGVtZW50Lmxhc3RDaGlsZC5k
YXRhPSdtZXJvTCBpcHN1bSc7CitzaG91bGRCZSgiZWxlbWVudC5zY3JvbGxUb3AiLCAiMTA4Iik7
CisKK2VsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaG9yaXpvbnRhbCIpOworZWxl
bWVudC5zY3JvbGxMZWZ0ID0gMTA4OworZWxlbWVudC5sYXN0Q2hpbGQuZGF0YT0nZm9vb29vb29v
b29vb29vbyBtZXJvTCBpcHN1bSc7CitzaG91bGRCZSgiZWxlbWVudC5zY3JvbGxMZWZ0IiwgIjEw
OCIpOworCitlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5lc3QiKTsKK2VsZW1l
bnQuc2Nyb2xsVG9wID0gMTA4OworZWxlbWVudC5sYXN0Q2hpbGQuZGF0YT0nbWVyb0wgaXBzdW0n
Oworc2hvdWxkQmUoImVsZW1lbnQuc2Nyb2xsVG9wIiwgIjEwOCIpOworCitlbGVtZW50ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5lc3QyIik7CitlbGVtZW50LnNjcm9sbFRvcCA9IDEwODsK
K2VsZW1lbnQubGFzdENoaWxkLmRhdGE9J21lcm9MIGlwc3VtJzsKK3Nob3VsZEJlKCJlbGVtZW50
LnNjcm9sbFRvcCIsICIxMDgiKTsKKworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGY5OTU0
OC4uNjllOWE5ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAwOS0wNi0yNCAgU2hpbmljaGlybyBIYW1hamkg
IDxoYW1hamlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEJ1ZyAxNTEzNTogUkVHUkVTU0lPTiAocjE5ODQzLXIxOTg1MCk6IENo
YW5naW5nIGEgZmxleGJveCdzCisgICAgICAgIGNvbnRlbnRzIG1ha2VzIGl0cyBjb250YWluZXIg
c2Nyb2xsIHRvIHRoZSB0b3AKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1MTM1CisKKyAgICAgICAgRGVsYXkgdXBkYXRlaW5nIHNjcm9sbCBiYXIgb2Yg
ZGVzY2VuZGFudHMgb2YgZmxleGJveCB1bnRpbCB0aGVpcgorICAgICAgICBwb3NpdGlvbnMgYXJl
IGRldGVybWluZWQuICBJbiB0aGlzIHdheSB3ZSBjYW4gcHJldmVudCBkZXNjZW5kYW50cworICAg
ICAgICBvZiBmbGV4aWJsZSBib3hlcyBmcm9tIGNoYW5naW5nIHBvc2l0aW9ucyBvZiB0aGVpciBz
Y3JvbGxiYXJzCisgICAgICAgIHVzaW5nIHRlbnRhdGl2ZSBwb3NpdGlvbnMuCisKKyAgICAgICAg
VGVzdDogZmFzdC9mbGV4Ym94L3JlcGFpbnQtc2Nyb2xsYmFyLmh0bWwKKworICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6
c3RhcnREZWxheVVwZGF0ZVNjcm9sbEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxv
Y2s6OmZpbmlzaERlbGF5VXBkYXRlU2Nyb2xsSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCbG9jazo6dXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJsb2NrOjpsYXlvdXRCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9j
azo6bGF5b3V0T25seVBvc2l0aW9uZWRPYmplY3RzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyQmxvY2suaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmxheW91dEhvcml6b250YWxCb3gp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmxheW91dFZlcnRpY2FsQm94
KToKKwogMjAwOS0wNi0yNCAgU2lkZGhhcnRoYSBDaGF0dG9wYWRoeWF5ICA8c2lkY2hhdEBnb29n
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwCmluZGV4IDk4NDI2ZWQuLmJmNDUwNjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAKQEAgLTg0LDYgKzg0LDEwIEBAIHN0YXRpYyBQZXJjZW50SGVpZ2h0Q29udGFpbmVy
TWFwKiBnUGVyY2VudEhlaWdodENvbnRhaW5lck1hcCA9IDA7CiAgICAgCiB0eXBlZGVmIFdURjo6
SGFzaE1hcDxSZW5kZXJCbG9jayosIExpc3RIYXNoU2V0PFJlbmRlcklubGluZSo+Kj4gQ29udGlu
dWF0aW9uT3V0bGluZVRhYmxlTWFwOwogCit0eXBlZGVmIFdURjo6SGFzaFNldDxSZW5kZXJCbG9j
ayo+IERlbGF5ZWRVcGRhdGVTY3JvbGxJbmZvU2V0Oworc3RhdGljIGludCBnRGVsYXlVcGRhdGVT
Y3JvbGxJbmZvID0gMDsKK3N0YXRpYyBEZWxheWVkVXBkYXRlU2Nyb2xsSW5mb1NldCogZ0RlbGF5
ZWRVcGRhdGVTY3JvbGxJbmZvU2V0ID0gMDsKKwogLy8gT3VyIE1hcmdpbkluZm8gc3RhdGUgdXNl
ZCB3aGVuIGxheWluZyBvdXQgYmxvY2sgY2hpbGRyZW4uCiBSZW5kZXJCbG9jazo6TWFyZ2luSW5m
bzo6TWFyZ2luSW5mbyhSZW5kZXJCbG9jayogYmxvY2ssIGludCB0b3AsIGludCBib3R0b20pCiB7
CkBAIC02ODgsNiArNjkyLDQyIEBAIGJvb2wgUmVuZGVyQmxvY2s6OmlzU2VsZkNvbGxhcHNpbmdC
bG9jaygpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIFJlbmRlckJsb2NrOjpz
dGFydERlbGF5VXBkYXRlU2Nyb2xsSW5mbygpIHsKKyAgICBpZiAoZ0RlbGF5VXBkYXRlU2Nyb2xs
SW5mbyA9PSAwKSB7CisgICAgICAgIEFTU0VSVCghZ0RlbGF5ZWRVcGRhdGVTY3JvbGxJbmZvU2V0
KTsKKyAgICAgICAgZ0RlbGF5ZWRVcGRhdGVTY3JvbGxJbmZvU2V0ID0gbmV3IERlbGF5ZWRVcGRh
dGVTY3JvbGxJbmZvU2V0OworICAgIH0KKyAgICBBU1NFUlQoZ0RlbGF5ZWRVcGRhdGVTY3JvbGxJ
bmZvU2V0KTsKKyAgICArK2dEZWxheVVwZGF0ZVNjcm9sbEluZm87Cit9CisKK3ZvaWQgUmVuZGVy
QmxvY2s6OmZpbmlzaERlbGF5VXBkYXRlU2Nyb2xsSW5mbygpIHsKKyAgICAtLWdEZWxheVVwZGF0
ZVNjcm9sbEluZm87CisgICAgQVNTRVJUKGdEZWxheVVwZGF0ZVNjcm9sbEluZm8gPj0gMCk7Cisg
ICAgaWYgKGdEZWxheVVwZGF0ZVNjcm9sbEluZm8gPT0gMCkgeworICAgICAgICBBU1NFUlQoZ0Rl
bGF5ZWRVcGRhdGVTY3JvbGxJbmZvU2V0KTsKKworICAgICAgICBmb3IgKERlbGF5ZWRVcGRhdGVT
Y3JvbGxJbmZvU2V0OjppdGVyYXRvciBpdCA9IGdEZWxheWVkVXBkYXRlU2Nyb2xsSW5mb1NldC0+
YmVnaW4oKTsgaXQgIT0gZ0RlbGF5ZWRVcGRhdGVTY3JvbGxJbmZvU2V0LT5lbmQoKTsgKytpdCkg
eworICAgICAgICAgICAgUmVuZGVyQmxvY2sqIGJsb2NrID0gKml0OworICAgICAgICAgICAgaWYg
KGJsb2NrLT5oYXNPdmVyZmxvd0NsaXAoKSkgeworICAgICAgICAgICAgICAgIGJsb2NrLT5sYXll
cigpLT51cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXQoKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorCisgICAgICAgIGRlbGV0ZSBnRGVsYXllZFVwZGF0ZVNjcm9sbEluZm9TZXQ7CisgICAg
ICAgIGdEZWxheWVkVXBkYXRlU2Nyb2xsSW5mb1NldCA9IDA7CisgICAgfQorfQorCit2b2lkIFJl
bmRlckJsb2NrOjp1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXQoKSB7CisgICAgaWYgKGhhc092
ZXJmbG93Q2xpcCgpKSB7CisgICAgICAgIGlmIChnRGVsYXlVcGRhdGVTY3JvbGxJbmZvKQorICAg
ICAgICAgICAgZ0RlbGF5ZWRVcGRhdGVTY3JvbGxJbmZvU2V0LT5hZGQodGhpcyk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGxheWVyKCktPnVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dCgp
OworICAgIH0KK30KKwogdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0KCkKIHsKICAgICAvLyBVcGRh
dGUgb3VyIGZpcnN0IGxldHRlciBpbmZvIG5vdy4KQEAgLTg0NCw4ICs4ODQsNyBAQCB2b2lkIFJl
bmRlckJsb2NrOjpsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4pCiAKICAgICAvLyBV
cGRhdGUgb3VyIHNjcm9sbCBpbmZvcm1hdGlvbiBpZiB3ZSdyZSBvdmVyZmxvdzphdXRvL3Njcm9s
bC9oaWRkZW4gbm93IHRoYXQgd2Uga25vdyBpZgogICAgIC8vIHdlIG92ZXJmbG93IG9yIG5vdC4K
LSAgICBpZiAoaGFzT3ZlcmZsb3dDbGlwKCkpCi0gICAgICAgIGxheWVyKCktPnVwZGF0ZVNjcm9s
bEluZm9BZnRlckxheW91dCgpOworICAgIHVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dCgpOwog
CiAgICAgLy8gUmVwYWludCB3aXRoIG91ciBuZXcgYm91bmRzIGlmIHRoZXkgYXJlIGRpZmZlcmVu
dCBmcm9tIG91ciBvbGQgYm91bmRzLgogICAgIGJvb2wgZGlkRnVsbFJlcGFpbnQgPSByZXBhaW50
ZXIucmVwYWludEFmdGVyTGF5b3V0KCk7CkBAIC0xNDY1LDggKzE1MDQsNyBAQCBib29sIFJlbmRl
ckJsb2NrOjpsYXlvdXRPbmx5UG9zaXRpb25lZE9iamVjdHMoKQogCiAgICAgc3RhdGVQdXNoZXIu
cG9wKCk7CiAKLSAgICBpZiAoaGFzT3ZlcmZsb3dDbGlwKCkpCi0gICAgICAgIGxheWVyKCktPnVw
ZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dCgpOworICAgIHVwZGF0ZVNjcm9sbEluZm9BZnRlckxh
eW91dCgpOwogCiAgICAgc2V0TmVlZHNMYXlvdXQoZmFsc2UpOwogICAgIHJldHVybiB0cnVlOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaCBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmgKaW5kZXggMzFlYWU3Yy4uMjQ5MGE4MCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5oCkBAIC0zMjgsNiArMzI4LDE0IEBAIHB1YmxpYzoKICAgICAvLyBzdHlsZSBm
cm9tIHRoaXMgUmVuZGVyQmxvY2suCiAgICAgUmVuZGVyQmxvY2sqIGNyZWF0ZUFub255bW91c0Js
b2NrKCkgY29uc3Q7CiAKKyAgICAvLyBEZWxheSB1cGRhdGUgc2Nyb2xsYmFyIHVudGlsIGZpbmlz
aERlbGF5UmVwYWludCgpIHdpbGwgYmUKKyAgICAvLyBjYWxsZWQuICBUaGlzIGZ1bmN0aW9uIGlz
IHVzZWQgd2hlbiBhIGZsZXhib3ggaXMgbGF5b3V0aW5nIGl0cworICAgIC8vIGRlc2NlbmRhbnQu
ICBJZiBtdWx0aXBsZSBzdGFydERlbGF5UmVwYWludCgpIGlzIGNhbGxlZCwKKyAgICAvLyBmaW5p
c2hEZWxheVJlcGFpbnQoKSB3aWxsIGRvIG5vdGhpbmcgdW50aWwgZmluaXNoRGVsYXlSZXBhaW50
KCkKKyAgICAvLyBpcyBjYWxsZWQgc2FtZSB0aW1lcy4KKyAgICBzdGF0aWMgdm9pZCBzdGFydERl
bGF5VXBkYXRlU2Nyb2xsSW5mbygpOworICAgIHN0YXRpYyB2b2lkIGZpbmlzaERlbGF5VXBkYXRl
U2Nyb2xsSW5mbygpOworCiBwcml2YXRlOgogICAgIHZvaWQgYWRqdXN0UG9pbnRUb0NvbHVtbkNv
bnRlbnRzKEludFBvaW50JikgY29uc3Q7CiAgICAgdm9pZCBhZGp1c3RGb3JCb3JkZXJGaXQoaW50
IHgsIGludCYgbGVmdCwgaW50JiByaWdodCkgY29uc3Q7IC8vIEhlbHBlciBmdW5jdGlvbiBmb3Ig
Ym9yZGVyRml0QWRqdXN0CkBAIC0zNTcsNiArMzY1LDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wg
ZXhwYW5kc1RvRW5jbG9zZU92ZXJoYW5naW5nRmxvYXRzKCkgY29uc3Q7CiAKKyAgICB2b2lkIHVw
ZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dCgpOworCiBwcm90ZWN0ZWQ6CiAgICAgc3RydWN0IEZs
b2F0aW5nT2JqZWN0IHsKICAgICAgICAgZW51bSBUeXBlIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZsZXhpYmxlQm94LmNwcAppbmRleCAxZGNlZjM2Li5jZGZiYTM1IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmxleGlibGVCb3guY3BwCkBAIC0zMzYsNyArMzM2LDkgQEAgdm9pZCBSZW5kZXJG
bGV4aWJsZUJveDo6bGF5b3V0SG9yaXpvbnRhbEJveChib29sIHJlbGF5b3V0Q2hpbGRyZW4pCiAg
ICAgICAgIH0KICAgICAgICAgY2hpbGQgPSBpdGVyYXRvci5uZXh0KCk7CiAgICAgfQotICAgIAor
CisgICAgUmVuZGVyQmxvY2s6OnN0YXJ0RGVsYXlVcGRhdGVTY3JvbGxJbmZvKCk7CisKICAgICAv
LyBXZSBkbyAyIHBhc3Nlcy4gIFRoZSBmaXJzdCBwYXNzIGlzIHNpbXBseSB0byBsYXkgZXZlcnlv
bmUgb3V0IGF0CiAgICAgLy8gdGhlaXIgcHJlZmVycmVkIHdpZHRocy4gIFRoZSBzZWNvbmQgcGFz
cyBoYW5kbGVzIGZsZXhpbmcgdGhlIGNoaWxkcmVuLgogICAgIGRvIHsKQEAgLTU2MSw3ICs1NjMs
OSBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRIb3Jpem9udGFsQm94KGJvb2wgcmVs
YXlvdXRDaGlsZHJlbikKICAgICB9IHdoaWxlIChoYXZlRmxleCk7CiAKICAgICBtX2ZsZXhpbmdD
aGlsZHJlbiA9IGZhbHNlOwotICAgIAorCisgICAgUmVuZGVyQmxvY2s6OmZpbmlzaERlbGF5VXBk
YXRlU2Nyb2xsSW5mbygpOworCiAgICAgaWYgKHJlbWFpbmluZ1NwYWNlID4gMCAmJiAoKHN0eWxl
KCktPmRpcmVjdGlvbigpID09IExUUiAmJiBzdHlsZSgpLT5ib3hQYWNrKCkgIT0gQlNUQVJUKSB8
fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHlsZSgpLT5kaXJlY3Rpb24oKSA9
PSBSVEwgJiYgc3R5bGUoKS0+Ym94UGFjaygpICE9IEJFTkQpKSkgewogICAgICAgICAvLyBDaGls
ZHJlbiBtdXN0IGJlIHJlcG9zaXRpb25lZC4KQEAgLTc4OSw2ICs3OTMsOCBAQCB2b2lkIFJlbmRl
ckZsZXhpYmxlQm94OjpsYXlvdXRWZXJ0aWNhbEJveChib29sIHJlbGF5b3V0Q2hpbGRyZW4pCiAg
ICAgICAgIH0KICAgICB9CiAKKyAgICBSZW5kZXJCbG9jazo6c3RhcnREZWxheVVwZGF0ZVNjcm9s
bEluZm8oKTsKKwogICAgIC8vIFdlIGRvIDIgcGFzc2VzLiAgVGhlIGZpcnN0IHBhc3MgaXMgc2lt
cGx5IHRvIGxheSBldmVyeW9uZSBvdXQgYXQKICAgICAvLyB0aGVpciBwcmVmZXJyZWQgd2lkdGhz
LiAgVGhlIHNlY29uZCBwYXNzIGhhbmRsZXMgZmxleGluZyB0aGUgY2hpbGRyZW4uCiAgICAgLy8g
T3VyIGZpcnN0IHBhc3MgaXMgZG9uZSB3aXRob3V0IGZsZXhpbmcuICBXZSBzaW1wbHkgbGF5IHRo
ZSBjaGlsZHJlbgpAQCAtOTc3LDYgKzk4Myw4IEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6Omxh
eW91dFZlcnRpY2FsQm94KGJvb2wgcmVsYXlvdXRDaGlsZHJlbikKICAgICAgICAgfSAgICAgICAg
CiAgICAgfSB3aGlsZSAoaGF2ZUZsZXgpOwogCisgICAgUmVuZGVyQmxvY2s6OmZpbmlzaERlbGF5
VXBkYXRlU2Nyb2xsSW5mbygpOworCiAgICAgaWYgKHN0eWxlKCktPmJveFBhY2soKSAhPSBCU1RB
UlQgJiYgcmVtYWluaW5nU3BhY2UgPiAwKSB7CiAgICAgICAgIC8vIENoaWxkcmVuIG11c3QgYmUg
cmVwb3NpdGlvbmVkLgogICAgICAgICBpbnQgb2Zmc2V0ID0gMDsK
</data>
<flag name="review"
          id="16411"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>