<?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>83428</bug_id>
          
          <creation_ts>2012-04-07 12:33:13 -0700</creation_ts>
          <short_desc>[Qt][WK2] Zoom gesture with double tap crashes on iframe when main frame has scroll offset.</short_desc>
          <delta_ts>2012-04-13 04:13:37 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>79668</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>abecsi</cc>
    
    <cc>allan.jensen</cc>
    
    <cc>gustavo</cc>
    
    <cc>kenneth</cc>
    
    <cc>ossy</cc>
    
    <cc>pnormand</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>597997</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2012-04-07 12:33:13 -0700</bug_when>
    <thetext>tsia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598001</commentid>
    <comment_count>1</comment_count>
      <attachid>136138</attachid>
    <who name="alan">zalan</who>
    <bug_when>2012-04-07 12:54:42 -0700</bug_when>
    <thetext>Created attachment 136138
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598002</commentid>
    <comment_count>2</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2012-04-07 12:56:39 -0700</bug_when>
    <thetext>also, wondering if bestZoomableAreaForTouchPoint()&apos;s return value should be checked and do something like this

if (mainframe-&gt;eventHandler()-&gt;bestZoomableAreaForTouchPoint(point, IntSize(area.width() / 2, area.height() / 2), zoomableArea, node))
    return;

ASSERT(node);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598003</commentid>
    <comment_count>3</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2012-04-07 12:57:43 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; also, wondering if bestZoomableAreaForTouchPoint()&apos;s return value should be checked and do something like this
&gt; 
&gt; if (mainframe-&gt;eventHandler()-&gt;bestZoomableAreaForTouchPoint(point, IntSize(area.width() / 2, area.height() / 2), zoomableArea, node))
&gt;     return;
&gt; 
&gt; ASSERT(node);
&apos;if (!mainframe&apos; obviously.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598316</commentid>
    <comment_count>4</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-04-09 09:13:48 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; also, wondering if bestZoomableAreaForTouchPoint()&apos;s return value should be checked and do something like this
&gt; 
&gt; if (mainframe-&gt;eventHandler()-&gt;bestZoomableAreaForTouchPoint(point, IntSize(area.width() / 2, area.height() / 2), zoomableArea, node))
&gt;     return;
&gt; 
&gt; ASSERT(node);

I am not sure if the return makes sense. The ASSERT is better. If nothing else is found the root element should be returned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598410</commentid>
    <comment_count>5</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2012-04-09 10:39:23 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #2)
&gt; &gt; also, wondering if bestZoomableAreaForTouchPoint()&apos;s return value should be checked and do something like this
&gt; &gt; 
&gt; &gt; if (mainframe-&gt;eventHandler()-&gt;bestZoomableAreaForTouchPoint(point, IntSize(area.width() / 2, area.height() / 2), zoomableArea, node))
&gt; &gt;     return;
&gt; &gt; 
&gt; &gt; ASSERT(node);
&gt; 
&gt; I am not sure if the return makes sense. The ASSERT is better. If nothing else is found the root element should be returned.

ok, sounds good. We lose(ignore) a bool return value on this callstack (findZoomableAreaForPoint()-&gt;bestZoomableAreaForTouchPoint()-&gt;findBestZoomableArea()-&gt;findNodeWithLowestDistanceMetric()) and that is either defective or it suggests that it was originally designed with a different mindset and needs to be changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598486</commentid>
    <comment_count>6</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-04-09 11:58:10 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; (In reply to comment #2)
&gt; &gt; &gt; also, wondering if bestZoomableAreaForTouchPoint()&apos;s return value should be checked and do something like this
&gt; &gt; &gt; 
&gt; &gt; &gt; if (mainframe-&gt;eventHandler()-&gt;bestZoomableAreaForTouchPoint(point, IntSize(area.width() / 2, area.height() / 2), zoomableArea, node))
&gt; &gt; &gt;     return;
&gt; &gt; &gt; 
&gt; &gt; &gt; ASSERT(node);
&gt; &gt; 
&gt; &gt; I am not sure if the return makes sense. The ASSERT is better. If nothing else is found the root element should be returned.
&gt; 
&gt; ok, sounds good. We lose(ignore) a bool return value on this callstack (findZoomableAreaForPoint()-&gt;bestZoomableAreaForTouchPoint()-&gt;findBestZoomableArea()-&gt;findNodeWithLowestDistanceMetric()) and that is either defective or it suggests that it was originally designed with a different mindset and needs to be changed.

True. More accurately I have no problem with the return if it happens after an ASSERT. It can theoretically happen, but would mean the touch-point given is outside the frame, which is not really wrong, but indicates something has transformed the pointer wrong, or has send the event to the wrong application.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599495</commentid>
    <comment_count>7</comment_count>
      <attachid>136507</attachid>
    <who name="alan">zalan</who>
    <bug_when>2012-04-10 12:25:17 -0700</bug_when>
    <thetext>Created attachment 136507
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599500</commentid>
    <comment_count>8</comment_count>
      <attachid>136507</attachid>
    <who name="alan">zalan</who>
    <bug_when>2012-04-10 12:27:26 -0700</bug_when>
    <thetext>Comment on attachment 136507
Patch

Now looking at the patch, I might need to split it up. I&apos;ll do after the review if the direction is okay.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599511</commentid>
    <comment_count>9</comment_count>
      <attachid>136507</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-04-10 12:33:22 -0700</bug_when>
    <thetext>Comment on attachment 136507
Patch

Attachment 136507 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/12380445</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599548</commentid>
    <comment_count>10</comment_count>
      <attachid>136507</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-04-10 12:57:23 -0700</bug_when>
    <thetext>Comment on attachment 136507
Patch

Attachment 136507 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12381436</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599561</commentid>
    <comment_count>11</comment_count>
      <attachid>136507</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-04-10 13:17:18 -0700</bug_when>
    <thetext>Comment on attachment 136507
Patch

Attachment 136507 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12385246</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600459</commentid>
    <comment_count>12</comment_count>
      <attachid>136716</attachid>
    <who name="alan">zalan</who>
    <bug_when>2012-04-11 11:50:40 -0700</bug_when>
    <thetext>Created attachment 136716
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600460</commentid>
    <comment_count>13</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2012-04-11 11:51:52 -0700</bug_when>
    <thetext>ixed exporting. (hopefully for gtk too)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600461</commentid>
    <comment_count>14</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2012-04-11 11:58:32 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 136507 [details])
&gt; Now looking at the patch, I might need to split it up. I&apos;ll do after the review if the direction is okay.

This patch also modifies the behavior of highlighting a bit. Previously when hittest returned no valid node, the ongoing highlighting was cancelled, even though the UI process sends (0,0) to cancel it. With this patch, only explicit cancelling terminates highlighting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600991</commentid>
    <comment_count>15</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-04-12 01:25:03 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #8)
&gt; &gt; (From update of attachment 136507 [details] [details])
&gt; &gt; Now looking at the patch, I might need to split it up. I&apos;ll do after the review if the direction is okay.
&gt; 
&gt; This patch also modifies the behavior of highlighting a bit. Previously when hittest returned no valid node, the ongoing highlighting was cancelled, even though the UI process sends (0,0) to cancel it. With this patch, only explicit cancelling terminates highlighting.

That is fine I guess, but it is kinda of theoretical. The highlight is only active for a short time during or shortly after a touch and I guess the gesture recognizer will cancel the old highlight before trying to highlight a new touch.

The patch looks great btw.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601002</commentid>
    <comment_count>16</comment_count>
      <attachid>136716</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-04-12 01:32:43 -0700</bug_when>
    <thetext>Comment on attachment 136716
Patch

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

&gt; Source/WebCore/testing/Internals.cpp:650
&gt; +void Internals::setDelegatesScrolling(bool enabled, Document* document, ExceptionCode&amp; ec)

Nice!

&gt; LayoutTests/touchadjustment/iframe-with-mainframe-scroll-offset.html:1
&gt; +&lt;html&gt;

Shouldn\t the name of this file indicate that it is using scroll delegation? or subdir?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601009</commentid>
    <comment_count>17</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2012-04-12 01:45:45 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; &gt; (In reply to comment #8)
&gt; &gt; &gt; (From update of attachment 136507 [details] [details] [details])
&gt; &gt; &gt; Now looking at the patch, I might need to split it up. I&apos;ll do after the review if the direction is okay.
&gt; &gt; 
&gt; &gt; This patch also modifies the behavior of highlighting a bit. Previously when hittest returned no valid node, the ongoing highlighting was cancelled, even though the UI process sends (0,0) to cancel it. With this patch, only explicit cancelling terminates highlighting.
&gt; 
&gt; That is fine I guess, but it is kinda of theoretical. The highlight is only active for a short time during or shortly after a touch and I guess the gesture recognizer will cancel the old highlight before trying to highlight a new touch.
Yes, this is merely making the functionality more explicit, but hardly involves change in real life usecases. the code looked more compact after this change which was the only reason to have it included.
Thanks for the review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601010</commentid>
    <comment_count>18</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2012-04-12 01:47:00 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 136716 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=136716&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/testing/Internals.cpp:650
&gt; &gt; +void Internals::setDelegatesScrolling(bool enabled, Document* document, ExceptionCode&amp; ec)
&gt; 
&gt; Nice!
&gt; 
&gt; &gt; LayoutTests/touchadjustment/iframe-with-mainframe-scroll-offset.html:1
&gt; &gt; +&lt;html&gt;
&gt; 
&gt; Shouldn\t the name of this file indicate that it is using scroll delegation? or subdir?

Good idea. i&apos;ll make a subdir for scroll delegation cases.
Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601036</commentid>
    <comment_count>19</comment_count>
      <attachid>136859</attachid>
    <who name="alan">zalan</who>
    <bug_when>2012-04-12 02:35:45 -0700</bug_when>
    <thetext>Created attachment 136859
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601090</commentid>
    <comment_count>20</comment_count>
      <attachid>136859</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-12 04:12:29 -0700</bug_when>
    <thetext>Comment on attachment 136859
Patch

Clearing flags on attachment: 136859

Committed r113962: &lt;http://trac.webkit.org/changeset/113962&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601091</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-12 04:12:34 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601215</commentid>
    <comment_count>22</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-04-12 07:30:25 -0700</bug_when>
    <thetext>Reopen, because a test started to assert from this change.

crash log for DumpRenderTree (pid 15712):
STDOUT: &lt;empty&gt;
STDERR: ASSERTION FAILED: compositor-&gt;inCompositingMode()
STDERR: ../../../../Source/WebCore/page/FrameView.cpp(657) : void WebCore::FrameView::clearBackingStores()
STDERR: 1   0x7f2815382862 /home/webkitbuildbot/slaves/debug64bit/buildslave/qt-linux-64-debug/build/WebKitBuild/Debug/lib/libQtWebKit.so.4(_ZN7WebCore9FrameView18clearBackingStoresEv+0x6a) [0x7f2815382862]
STDERR: 2   0x7f2815386428 /home/webkitbuildbot/slaves/debug64bit/buildslave/qt-linux-64-debug/build/WebKitBuild/Debug/lib/libQtWebKit.so.4(_ZN7WebCore9FrameView27delegatesScrollingDidChangeEv+0x18) [0x7f2815386428]
STDERR: 3   0x7f281548c430 /home/webkitbuildbot/slaves/debug64bit/buildslave/qt-linux-64-debug/build/WebKitBuild/Debug/lib/libQtWebKit.so.4(_ZN7WebCore10ScrollView21setDelegatesScrollingEb+0x48) [0x7f281548c430]
STDERR: 4   0x7f28156ea9e3 /home/webkitbuildbot/slaves/debug64bit/buildslave/qt-linux-64-debug/build/WebKitBuild/Debug/lib/libQtWebKit.so.4(_ZN7WebCore9Internals21setDelegatesScrollingEbPNS_8DocumentERi+0xa1) [0x7f28156ea9e3]
STDERR: 5   0x7f2815dcf76f /home/webkitbuildbot/slaves/debug64bit/buildslave/qt-linux-64-debug/build/WebKitBuild/Debug/lib/libQtWebKit.so.4(_ZN7WebCore49jsInternalsPrototypeFunctionSetDelegatesScrollingEPN3JSC9ExecStateE+0x297) [0x7f2815dcf76f]
STDERR: 6   0x7f27c8ef7258 [0x7f27c8ef7258]

Could you check it, please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601836</commentid>
    <comment_count>23</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2012-04-12 22:45:46 -0700</bug_when>
    <thetext>created bug#83860 for this problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601966</commentid>
    <comment_count>24</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2012-04-13 04:13:37 -0700</bug_when>
    <thetext>fixed in http://trac.webkit.org/changeset/114109</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136138</attachid>
            <date>2012-04-07 12:54:42 -0700</date>
            <delta_ts>2012-04-10 12:25:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83428-20120407215439.patch</filename>
            <type>text/plain</type>
            <size>7015</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDExMzU0
OSkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEyLTA0
LTA3ICBaYWxhbiBCdWp0YXMgIDx6YnVqdGFzQGdtYWlsLmNvbT4KKworICAgICAgICBbUXRdW1dL
Ml0gWm9vbSBnZXN0dXJlIHdpdGggZG91YmxlIHRhcCBjcmFzaGVzIG9uIGlmcmFtZSB3aGVuIG1h
aW4gZnJhbWUgaGFzIHNjcm9sbCBvZmZzZXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04MzQyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogTWFudWFsVGVzdHMvZmluZC1iZXN0LXpvb21hYmxlLWFyZWEt
d2l0aC1zY3JvbGwtb2Zmc2V0LWFuZC1pZnJhbWUtY3Jhc2guaHRtbDogQWRkZWQuCisKIDIwMTIt
MDQtMDcgIFJvYiBCdWlzICA8cmJ1aXNAcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0g
QWRkIEJhdHRlcnkgU3RhdHVzIEFQSSBzdXBwb3J0CkluZGV4OiBNYW51YWxUZXN0cy9maW5kLWJl
c3Qtem9vbWFibGUtYXJlYS13aXRoLXNjcm9sbC1vZmZzZXQtYW5kLWlmcmFtZS1jcmFzaC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIE1hbnVhbFRlc3RzL2ZpbmQtYmVzdC16b29tYWJsZS1hcmVhLXdpdGgt
c2Nyb2xsLW9mZnNldC1hbmQtaWZyYW1lLWNyYXNoLmh0bWwJKHJldmlzaW9uIDApCisrKyBNYW51
YWxUZXN0cy9maW5kLWJlc3Qtem9vbWFibGUtYXJlYS13aXRoLXNjcm9sbC1vZmZzZXQtYW5kLWlm
cmFtZS1jcmFzaC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIyIEBACis8aHRtbD4KKzxo
ZWFkPgorICAgIDxzdHlsZT4KKyAgICAgICAgZGl2IHsKKyAgICAgICAgICAgIHBvc2l0aW9uOiBh
YnNvbHV0ZTsKKyAgICAgICAgICAgIGhlaWdodDogMTAwMHB4OworICAgICAgICAgICAgdG9wOiA1
MDBweDsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9J3Nl
dFRpbWVvdXQoIndpbmRvdy5zY3JvbGxCeSgwLCA1MDApOyIsIDApOyc+CisgICAgPGRpdj4KKyAg
ICAgICAgPHA+VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgem9vbSBnZXN0dXJlIG9uIGFuIGlmcmFt
ZSBkb2VzIG5vdCBjcmFzaDxicj4KKyAgICAgICAgICAgd2hlbiB0aGUgbWFpbiBmcmFtZSBoYXMg
c2Nyb2xsaW5nIG9mZnNldC48L3A+CisgICAgICAgIDxpZnJhbWUgc3JjPSdkYXRhOnRleHQvaHRt
bCwKKyAgICAgICAgICAgIDxodG1sPgorICAgICAgICAgICAgPGJvZHk+PHAgc3R5bGU9ImNvbG9y
OmdyZWVuIj5Eb3VibGUgdGFwIGhlcmUgc2hvdWxkIG5vdCBjcmFzaC48L3A+PC9ib2R5PgorICAg
ICAgICAgICAgPC9odG1sPic+CisgICAgICAgIDwvaWZyYW1lPgorICAgIDwvZGl2PgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTEzNTQ5KQorKysgU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMDQt
MDcgIFphbGFuIEJ1anRhcyAgPHpidWp0YXNAZ21haWwuY29tPgorCisgICAgICAgIFtRdF1bV0sy
XSBab29tIGdlc3R1cmUgd2l0aCBkb3VibGUgdGFwIGNyYXNoZXMgb24gaWZyYW1lIHdoZW4gbWFp
biBmcmFtZSBoYXMgc2Nyb2xsIG9mZnNldC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTgzNDI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgV2hlbiBkZWxlZ2F0ZSBzY3JvbGxpbmcgaXMgb24sIHRoZSBtYWlu
IGZyYW1lIG5lZWRzIHRvIGlnbm9yZSBzY3JvbGxpbmcgb2Zmc2V0IHdoZW4gY29udmVydGluZwor
ICAgICAgICBjb29yZGluYXRlcy4gSXQgaXMgYWxyZWFkeSBkb25lIGF0IFNjcm9sbFZpZXcgYmFz
ZSBjbGFzcyBhbmQgdGhpcyBwYXRjaCBjb3BpZXMgdGhlIGxvZ2ljIHRvIHRoZQorICAgICAgICBG
cmFtZVZpZXcgc3ViY2xhc3MuCisKKyAgICAgICAgTWFudWFsIHRlc3QgYWRkZWQuIE1hbnVhbFRl
c3RzL2ZpbmQtYmVzdC16b29tYWJsZS1hcmVhLXdpdGgtc2Nyb2xsLW9mZnNldC1hbmQtaWZyYW1l
LWNyYXNoLmh0bWwKKworICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lVmlldzo6Y29udmVydEZyb21SZW5kZXJlcik6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZVZpZXc6OmNvbnZlcnRUb1JlbmRlcmVyKToKKyAgICAgICAgKiBwYWdlL0dlc3R1cmVU
YXBIaWdobGlnaHRlci5jcHA6CisKIDIwMTItMDQtMDcgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFy
b2dhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0NNYWtlXSBDbGVhbnVwIFdURiBpbmNsdWRlIGRp
cmVjdG9yaWVzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCShyZXZpc2lvbiAxMTM1
NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMyNDYsNyArMzI0Niw4IEBAIEludFJlY3QgRnJhbWVWaWV3Ojpjb252ZXJ0RnJvbVJlbmRl
cmVyKGMKICAgICBJbnRSZWN0IHJlY3QgPSByZW5kZXJlci0+bG9jYWxUb0Fic29sdXRlUXVhZChG
bG9hdFJlY3QocmVuZGVyZXJSZWN0KSkuZW5jbG9zaW5nQm91bmRpbmdCb3goKTsKIAogICAgIC8v
IENvbnZlcnQgZnJvbSBwYWdlICgiYWJzb2x1dGUiKSB0byBGcmFtZVZpZXcgY29vcmRpbmF0ZXMu
Ci0gICAgcmVjdC5tb3ZlQnkoLXNjcm9sbFBvc2l0aW9uKCkpOworICAgIGlmICghZGVsZWdhdGVz
U2Nyb2xsaW5nKCkpCisgICAgICAgIHJlY3QubW92ZUJ5KC1zY3JvbGxQb3NpdGlvbigpKTsKIAog
ICAgIHJldHVybiByZWN0OwogfQpAQCAtMzI1Niw3ICszMjU3LDggQEAgSW50UmVjdCBGcmFtZVZp
ZXc6OmNvbnZlcnRUb1JlbmRlcmVyKGNvbgogICAgIEludFJlY3QgcmVjdCA9IHZpZXdSZWN0Owog
ICAgIAogICAgIC8vIENvbnZlcnQgZnJvbSBGcmFtZVZpZXcgY29vcmRzIGludG8gcGFnZSAoImFi
c29sdXRlIikgY29vcmRpbmF0ZXMuCi0gICAgcmVjdC5tb3ZlQnkoc2Nyb2xsUG9zaXRpb24oKSk7
CisgICAgaWYgKCFkZWxlZ2F0ZXNTY3JvbGxpbmcoKSkKKyAgICAgICAgcmVjdC5tb3ZlQnkoc2Ny
b2xsUG9zaXRpb24oKSk7CiAKICAgICAvLyBGSVhNRTogd2UgZG9uJ3QgaGF2ZSBhIHdheSB0byBt
YXAgYW4gYWJzb2x1dGUgcmVjdCBkb3duIHRvIGEgbG9jYWwgcXVhZCwgc28ganVzdAogICAgIC8v
IG1vdmUgdGhlIHJlY3QgZm9yIG5vdy4KQEAgLTMyNjksMTYgKzMyNzEsMTggQEAgSW50UG9pbnQg
RnJhbWVWaWV3Ojpjb252ZXJ0RnJvbVJlbmRlcmVyKAogICAgIEludFBvaW50IHBvaW50ID0gcm91
bmRlZEludFBvaW50KHJlbmRlcmVyLT5sb2NhbFRvQWJzb2x1dGUocmVuZGVyZXJQb2ludCwgZmFs
c2UsIHRydWUgLyogdXNlIHRyYW5zZm9ybXMgKi8pKTsKIAogICAgIC8vIENvbnZlcnQgZnJvbSBw
YWdlICgiYWJzb2x1dGUiKSB0byBGcmFtZVZpZXcgY29vcmRpbmF0ZXMuCi0gICAgcG9pbnQubW92
ZUJ5KC1zY3JvbGxQb3NpdGlvbigpKTsKKyAgICBpZiAoIWRlbGVnYXRlc1Njcm9sbGluZygpKQor
ICAgICAgICBwb2ludC5tb3ZlQnkoLXNjcm9sbFBvc2l0aW9uKCkpOwogICAgIHJldHVybiBwb2lu
dDsKIH0KIAogSW50UG9pbnQgRnJhbWVWaWV3Ojpjb252ZXJ0VG9SZW5kZXJlcihjb25zdCBSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBJbnRQb2ludCYgdmlld1BvaW50KSBjb25zdAogewog
ICAgIEludFBvaW50IHBvaW50ID0gdmlld1BvaW50OwotICAgIAorCiAgICAgLy8gQ29udmVydCBm
cm9tIEZyYW1lVmlldyBjb29yZHMgaW50byBwYWdlICgiYWJzb2x1dGUiKSBjb29yZGluYXRlcy4K
LSAgICBwb2ludCArPSBJbnRTaXplKHNjcm9sbFgoKSwgc2Nyb2xsWSgpKTsKKyAgICBpZiAoIWRl
bGVnYXRlc1Njcm9sbGluZygpKQorICAgICAgICBwb2ludCArPSBJbnRTaXplKHNjcm9sbFgoKSwg
c2Nyb2xsWSgpKTsKIAogICAgIHJldHVybiByb3VuZGVkSW50UG9pbnQocmVuZGVyZXItPmFic29s
dXRlVG9Mb2NhbChwb2ludCwgZmFsc2UsIHRydWUgLyogdXNlIHRyYW5zZm9ybXMgKi8pKTsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvR2VzdHVyZVRhcEhpZ2hsaWdodGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0dlc3R1cmVUYXBIaWdobGlnaHRlci5jcHAJ
KHJldmlzaW9uIDExMzU0OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvR2VzdHVyZVRhcEhpZ2hs
aWdodGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBpbmxpbmUgTGF5b3V0
UG9pbnQgb3duZXJGcmFtZVRvTWFpbkZyYW1lCiAKICAgICBGcmFtZSogbWFpbkZyYW1lID0gY29u
dGFpbmluZ0ZyYW1lLT5wYWdlKCktPm1haW5GcmFtZSgpOwogCi0gICAgTGF5b3V0UG9pbnQgbWFp
bkZyYW1lUG9pbnQgPSBtYWluRnJhbWUtPnZpZXcoKS0+cm9vdFZpZXdUb0NvbnRlbnRzKGNvbnRh
aW5pbmdGcmFtZS0+dmlldygpLT5jb250ZW50c1RvUm9vdFZpZXcoSW50UG9pbnQoKSkpOworICAg
IExheW91dFBvaW50IG1haW5GcmFtZVBvaW50ID0gbWFpbkZyYW1lLT52aWV3KCktPndpbmRvd1Rv
Q29udGVudHMoY29udGFpbmluZ0ZyYW1lLT52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3coSW50UG9p
bnQoKSkpOwogICAgIHJldHVybiBtYWluRnJhbWVQb2ludDsKIH0KIApJbmRleDogU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwko
cmV2aXNpb24gMTEzNTQ5KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDQtMDcgIFphbGFuIEJ1anRhcyAgPHpidWp0YXNA
Z21haWwuY29tPgorCisgICAgICAgIFtRdF1bV0syXSBab29tIGdlc3R1cmUgd2l0aCBkb3VibGUg
dGFwIGNyYXNoZXMgb24gaWZyYW1lIHdoZW4gbWFpbiBmcmFtZSBoYXMgc2Nyb2xsIG9mZnNldC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzNDI4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBkZWxl
Z2F0ZSBzY3JvbGxpbmcgaXMgb24sIHRoZSBtYWluIGZyYW1lIG5lZWRzIHRvIGlnbm9yZSBzY3Jv
bGxpbmcgb2Zmc2V0IHdoZW4gY29udmVydGluZworICAgICAgICBjb29yZGluYXRlcy4gSXQgaXMg
YWxyZWFkeSBkb25lIGF0IFNjcm9sbFZpZXcgYmFzZSBjbGFzcyBhbmQgdGhpcyBwYXRjaCBjb3Bp
ZXMgdGhlIGxvZ2ljIHRvIHRoZQorICAgICAgICBGcmFtZVZpZXcgc3ViY2xhc3MuCisgICAgICAg
IEFsc28gQVNTRVJUIHJldHVybmluZyBub2RlIGF0IFdlYlBhZ2U6OmhpZ2hsaWdodFBvdGVudGlh
bEFjdGl2YXRpb24gYnkgYmVzdENsaWNrYWJsZU5vZGVGb3JUb3VjaFBvaW50KCkuCisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmhpZ2hsaWdodFBvdGVudGlhbEFjdGl2YXRpb24pOgorCiAyMDEyLTA0LTA3ICBQYXRy
aWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtDTWFrZV0gQ2xl
YW51cCBXVEYgaW5jbHVkZSBkaXJlY3RvcmllcwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMTEzNTQ5KQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDY2LDYgKzE0NjYsOCBAQCB2b2lkIFdlYlBhZ2U6OmhpZ2hsaWdodFBvdGVudGlhbEFjdGl2
YXRpCiAgICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gbWFpbmZyYW1lLT5ldmVudEhhbmRs
ZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQobWFpbmZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29u
dGVudHMocG9pbnQpLCAvKmFsbG93U2hhZG93Q29udGVudCovIGZhbHNlLCAvKmlnbm9yZUNsaXBw
aW5nKi8gdHJ1ZSk7CiAgICAgICAgIGFkanVzdGVkTm9kZSA9IHJlc3VsdC5pbm5lck5vZGUoKTsK
ICNlbmRpZgorICAgICAgICBBU1NFUlQoYWRqdXN0ZWROb2RlKTsKKwogICAgICAgICAvLyBGaW5k
IHRoZSBub2RlIHRvIGhpZ2hsaWdodC4gVGhpcyBpcyBub3QgdGhlIHNhbWUgYXMgdGhlIG5vZGUg
cmVzcG9uZGluZyB0aGUgdGFwIGdlc3R1cmUsIGJlY2F1c2UgbWFueQogICAgICAgICAvLyBwYWdl
cyBoYXMgYSBnbG9iYWwgY2xpY2sgaGFuZGxlciBhbmQgd2UgZG8gbm90IHdhbnQgdG8gaGlnaGxp
Z2h0IHRoZSBib2R5LgogICAgICAgICAvLyBJbnN0ZWFkIGZpbmQgdGhlIGVuY2xvc2luZyBsaW5r
IG9yIGZvY3VzYWJsZSBlbGVtZW50LCBvciB0aGUgbGFzdCBlbmNsb3NpbmcgaW5saW5lIGVsZW1l
bnQuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136507</attachid>
            <date>2012-04-10 12:25:17 -0700</date>
            <delta_ts>2012-04-11 11:50:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83428-20120410212516.patch</filename>
            <type>text/plain</type>
            <size>19920</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMzc0NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDEyLTA0LTEwICBaYWxhbiBC
dWp0YXMgIDx6YnVqdGFzQGdtYWlsLmNvbT4KKworICAgICAgICBbUXRdW1dLMl0gWm9vbSBnZXN0
dXJlIHdpdGggZG91YmxlIHRhcCBjcmFzaGVzIG9uIGlmcmFtZSB3aGVuIG1haW4gZnJhbWUgaGFz
IHNjcm9sbCBvZmZzZXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04MzQyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFdoZW4gZGVsZWdhdGUgc2Nyb2xsaW5nIGlzIG9uLCB0aGUgZnJhbWUgdmlldyBuZWVk
cyB0byBpZ25vcmUgc2Nyb2xsaW5nIG9mZnNldCB3aGVuIGNvbnZlcnRpbmcKKyAgICAgICAgY29v
cmRpbmF0ZXMuIEl0IGlzIGFscmVhZHkgZG9uZSBhdCBTY3JvbGxWaWV3IGJhc2UgY2xhc3MgYW5k
IHRoaXMgcGF0Y2ggY29waWVzIHRoZSBsb2dpYyB0byB0aGUKKyAgICAgICAgRnJhbWVWaWV3IHN1
YmNsYXNzLgorICAgICAgICBBbHNvIG1ha2Ugc3VyZSB0aGF0IFRvdWNoQWRqdXN0bWVudCdzIGZp
bmRCZXN0KigpIGZ1bmN0aW9ucycgcmV0dXJuIHZhbHVlIGFyZSBub3QgaWdub3JlZCBieSB0aGUg
Y2FsbGVyLgorCisgICAgICAgIFRlc3Q6IHRvdWNoYWRqdXN0bWVudC9pZnJhbWUtd2l0aC1tYWlu
ZnJhbWUtc2Nyb2xsLW9mZnNldC5odG1sCisKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmJlc3RDbGlja2FibGVOb2RlRm9y
VG91Y2hQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmJlc3Rab29tYWJs
ZUFyZWFGb3JUb3VjaFBvaW50KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAg
ICAgICAoRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmNvbnZlcnRGcm9tUmVuZGVyZXIpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVWaWV3Ojpjb252ZXJ0VG9SZW5kZXJlcik6CisgICAgICAgICogcGFnZS9H
ZXN0dXJlVGFwSGlnaGxpZ2h0ZXIuY3BwOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2V0RGVsZWdhdGVzU2Nyb2xsaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6dG91Y2hQb3NpdGlvbkFkanVzdGVkVG9CZXN0
Q2xpY2thYmxlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmJlc3Rab29tYWJs
ZUFyZWFGb3JUb3VjaFBvaW50KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAg
ICAgICAoSW50ZXJuYWxzKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIw
MTItMDQtMTAgIE5vZWwgR29yZG9uICA8bm9lbC5nb3Jkb25AZ21haWwuY29tPgogCiAgICAgICAg
IFtHVEtdIFNlcGFyYXRlIGltYWdlIGVuY29kaW5nIGZyb20gZGF0YVVSTCBjb25zdHJ1Y3Rpb24K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHJldmlzaW9uIDExMzczNikK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjQ2NCwyNCArMjQ2NCwyNCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZVNj
cm9sbENvCiAjZW5kaWYKIAogI2lmIEVOQUJMRShUT1VDSF9BREpVU1RNRU5UKQotdm9pZCBFdmVu
dEhhbmRsZXI6OmJlc3RDbGlja2FibGVOb2RlRm9yVG91Y2hQb2ludChjb25zdCBJbnRQb2ludCYg
dG91Y2hDZW50ZXIsIGNvbnN0IEludFNpemUmIHRvdWNoUmFkaXVzLCBJbnRQb2ludCYgdGFyZ2V0
UG9pbnQsIE5vZGUqJiB0YXJnZXROb2RlKQorYm9vbCBFdmVudEhhbmRsZXI6OmJlc3RDbGlja2Fi
bGVOb2RlRm9yVG91Y2hQb2ludChjb25zdCBJbnRQb2ludCYgdG91Y2hDZW50ZXIsIGNvbnN0IElu
dFNpemUmIHRvdWNoUmFkaXVzLCBJbnRQb2ludCYgdGFyZ2V0UG9pbnQsIE5vZGUqJiB0YXJnZXRO
b2RlKQogewogICAgIEhpdFRlc3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVzdFR5cGUgaGl0VHlwZSA9
IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmU7CiAgICAg
SGl0VGVzdFJlc3VsdCByZXN1bHQgPSBoaXRUZXN0UmVzdWx0QXRQb2ludCh0b3VjaENlbnRlciwg
LyphbGxvd1NoYWRvd0NvbnRlbnQqLyBmYWxzZSwgLyppZ25vcmVDbGlwcGluZyovIGZhbHNlLCBE
b250SGl0VGVzdFNjcm9sbGJhcnMsIGhpdFR5cGUsIHRvdWNoUmFkaXVzKTsKIAogICAgIEludFJl
Y3QgdG91Y2hSZWN0ID0gcmVzdWx0LnJlY3RGb3JQb2ludCh0b3VjaENlbnRlcik7CiAgICAgUmVm
UHRyPFN0YXRpY0hhc2hTZXROb2RlTGlzdD4gbm9kZUxpc3QgPSBTdGF0aWNIYXNoU2V0Tm9kZUxp
c3Q6OmFkb3B0KHJlc3VsdC5yZWN0QmFzZWRUZXN0UmVzdWx0KCkpOwotICAgIGZpbmRCZXN0Q2xp
Y2thYmxlQ2FuZGlkYXRlKHRhcmdldE5vZGUsIHRhcmdldFBvaW50LCB0b3VjaENlbnRlciwgdG91
Y2hSZWN0LCAqbm9kZUxpc3QuZ2V0KCkpOworICAgIHJldHVybiBmaW5kQmVzdENsaWNrYWJsZUNh
bmRpZGF0ZSh0YXJnZXROb2RlLCB0YXJnZXRQb2ludCwgdG91Y2hDZW50ZXIsIHRvdWNoUmVjdCwg
Km5vZGVMaXN0LmdldCgpKTsKIH0KIAotdm9pZCBFdmVudEhhbmRsZXI6OmJlc3Rab29tYWJsZUFy
ZWFGb3JUb3VjaFBvaW50KGNvbnN0IEludFBvaW50JiB0b3VjaENlbnRlciwgY29uc3QgSW50U2l6
ZSYgdG91Y2hSYWRpdXMsIEludFJlY3QmIHRhcmdldEFyZWEsIE5vZGUqJiB0YXJnZXROb2RlKQor
Ym9vbCBFdmVudEhhbmRsZXI6OmJlc3Rab29tYWJsZUFyZWFGb3JUb3VjaFBvaW50KGNvbnN0IElu
dFBvaW50JiB0b3VjaENlbnRlciwgY29uc3QgSW50U2l6ZSYgdG91Y2hSYWRpdXMsIEludFJlY3Qm
IHRhcmdldEFyZWEsIE5vZGUqJiB0YXJnZXROb2RlKQogewogICAgIEhpdFRlc3RSZXF1ZXN0OjpI
aXRUZXN0UmVxdWVzdFR5cGUgaGl0VHlwZSA9IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhp
dFRlc3RSZXF1ZXN0OjpBY3RpdmU7CiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBoaXRUZXN0
UmVzdWx0QXRQb2ludCh0b3VjaENlbnRlciwgLyphbGxvd1NoYWRvd0NvbnRlbnQqLyBmYWxzZSwg
LyppZ25vcmVDbGlwcGluZyovIGZhbHNlLCBEb250SGl0VGVzdFNjcm9sbGJhcnMsIGhpdFR5cGUs
IHRvdWNoUmFkaXVzKTsKIAogICAgIEludFJlY3QgdG91Y2hSZWN0ID0gcmVzdWx0LnJlY3RGb3JQ
b2ludCh0b3VjaENlbnRlcik7CiAgICAgUmVmUHRyPFN0YXRpY0hhc2hTZXROb2RlTGlzdD4gbm9k
ZUxpc3QgPSBTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q6OmFkb3B0KHJlc3VsdC5yZWN0QmFzZWRUZXN0
UmVzdWx0KCkpOwotICAgIGZpbmRCZXN0Wm9vbWFibGVBcmVhKHRhcmdldE5vZGUsIHRhcmdldEFy
ZWEsIHRvdWNoQ2VudGVyLCB0b3VjaFJlY3QsICpub2RlTGlzdC5nZXQoKSk7CisgICAgcmV0dXJu
IGZpbmRCZXN0Wm9vbWFibGVBcmVhKHRhcmdldE5vZGUsIHRhcmdldEFyZWEsIHRvdWNoQ2VudGVy
LCB0b3VjaFJlY3QsICpub2RlTGlzdC5nZXQoKSk7CiB9CiAjZW5kaWYKIApJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5oCShyZXZpc2lvbiAxMTM3MzYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsOCArMTY4LDggQEAg
cHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoVE9VQ0hfQURKVVNUTUVOVCkKLSAgICB2b2lk
IGJlc3RDbGlja2FibGVOb2RlRm9yVG91Y2hQb2ludChjb25zdCBJbnRQb2ludCYgdG91Y2hDZW50
ZXIsIGNvbnN0IEludFNpemUmIHRvdWNoUmFkaXVzLCBJbnRQb2ludCYgdGFyZ2V0UG9pbnQsIE5v
ZGUqJiB0YXJnZXROb2RlKTsKLSAgICB2b2lkIGJlc3Rab29tYWJsZUFyZWFGb3JUb3VjaFBvaW50
KGNvbnN0IEludFBvaW50JiB0b3VjaENlbnRlciwgY29uc3QgSW50U2l6ZSYgdG91Y2hSYWRpdXMs
IEludFJlY3QmIHRhcmdldEFyZWEsIE5vZGUqJiB0YXJnZXROb2RlKTsKKyAgICBib29sIGJlc3RD
bGlja2FibGVOb2RlRm9yVG91Y2hQb2ludChjb25zdCBJbnRQb2ludCYgdG91Y2hDZW50ZXIsIGNv
bnN0IEludFNpemUmIHRvdWNoUmFkaXVzLCBJbnRQb2ludCYgdGFyZ2V0UG9pbnQsIE5vZGUqJiB0
YXJnZXROb2RlKTsKKyAgICBib29sIGJlc3Rab29tYWJsZUFyZWFGb3JUb3VjaFBvaW50KGNvbnN0
IEludFBvaW50JiB0b3VjaENlbnRlciwgY29uc3QgSW50U2l6ZSYgdG91Y2hSYWRpdXMsIEludFJl
Y3QmIHRhcmdldEFyZWEsIE5vZGUqJiB0YXJnZXROb2RlKTsKICNlbmRpZgogCiAjaWYgRU5BQkxF
KENPTlRFWFRfTUVOVVMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCShyZXZpc2lv
biAxMTM3MzYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMyNDYsNyArMzI0Niw4IEBAIEludFJlY3QgRnJhbWVWaWV3Ojpjb252ZXJ0RnJv
bVJlbmRlcmVyKGMKICAgICBJbnRSZWN0IHJlY3QgPSByZW5kZXJlci0+bG9jYWxUb0Fic29sdXRl
UXVhZChGbG9hdFJlY3QocmVuZGVyZXJSZWN0KSkuZW5jbG9zaW5nQm91bmRpbmdCb3goKTsKIAog
ICAgIC8vIENvbnZlcnQgZnJvbSBwYWdlICgiYWJzb2x1dGUiKSB0byBGcmFtZVZpZXcgY29vcmRp
bmF0ZXMuCi0gICAgcmVjdC5tb3ZlQnkoLXNjcm9sbFBvc2l0aW9uKCkpOworICAgIGlmICghZGVs
ZWdhdGVzU2Nyb2xsaW5nKCkpCisgICAgICAgIHJlY3QubW92ZUJ5KC1zY3JvbGxQb3NpdGlvbigp
KTsKIAogICAgIHJldHVybiByZWN0OwogfQpAQCAtMzI1Niw3ICszMjU3LDggQEAgSW50UmVjdCBG
cmFtZVZpZXc6OmNvbnZlcnRUb1JlbmRlcmVyKGNvbgogICAgIEludFJlY3QgcmVjdCA9IHZpZXdS
ZWN0OwogICAgIAogICAgIC8vIENvbnZlcnQgZnJvbSBGcmFtZVZpZXcgY29vcmRzIGludG8gcGFn
ZSAoImFic29sdXRlIikgY29vcmRpbmF0ZXMuCi0gICAgcmVjdC5tb3ZlQnkoc2Nyb2xsUG9zaXRp
b24oKSk7CisgICAgaWYgKCFkZWxlZ2F0ZXNTY3JvbGxpbmcoKSkKKyAgICAgICAgcmVjdC5tb3Zl
Qnkoc2Nyb2xsUG9zaXRpb24oKSk7CiAKICAgICAvLyBGSVhNRTogd2UgZG9uJ3QgaGF2ZSBhIHdh
eSB0byBtYXAgYW4gYWJzb2x1dGUgcmVjdCBkb3duIHRvIGEgbG9jYWwgcXVhZCwgc28ganVzdAog
ICAgIC8vIG1vdmUgdGhlIHJlY3QgZm9yIG5vdy4KQEAgLTMyNjksMTYgKzMyNzEsMTggQEAgSW50
UG9pbnQgRnJhbWVWaWV3Ojpjb252ZXJ0RnJvbVJlbmRlcmVyKAogICAgIEludFBvaW50IHBvaW50
ID0gcm91bmRlZEludFBvaW50KHJlbmRlcmVyLT5sb2NhbFRvQWJzb2x1dGUocmVuZGVyZXJQb2lu
dCwgZmFsc2UsIHRydWUgLyogdXNlIHRyYW5zZm9ybXMgKi8pKTsKIAogICAgIC8vIENvbnZlcnQg
ZnJvbSBwYWdlICgiYWJzb2x1dGUiKSB0byBGcmFtZVZpZXcgY29vcmRpbmF0ZXMuCi0gICAgcG9p
bnQubW92ZUJ5KC1zY3JvbGxQb3NpdGlvbigpKTsKKyAgICBpZiAoIWRlbGVnYXRlc1Njcm9sbGlu
ZygpKQorICAgICAgICBwb2ludC5tb3ZlQnkoLXNjcm9sbFBvc2l0aW9uKCkpOwogICAgIHJldHVy
biBwb2ludDsKIH0KIAogSW50UG9pbnQgRnJhbWVWaWV3Ojpjb252ZXJ0VG9SZW5kZXJlcihjb25z
dCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBJbnRQb2ludCYgdmlld1BvaW50KSBjb25z
dAogewogICAgIEludFBvaW50IHBvaW50ID0gdmlld1BvaW50OwotICAgIAorCiAgICAgLy8gQ29u
dmVydCBmcm9tIEZyYW1lVmlldyBjb29yZHMgaW50byBwYWdlICgiYWJzb2x1dGUiKSBjb29yZGlu
YXRlcy4KLSAgICBwb2ludCArPSBJbnRTaXplKHNjcm9sbFgoKSwgc2Nyb2xsWSgpKTsKKyAgICBp
ZiAoIWRlbGVnYXRlc1Njcm9sbGluZygpKQorICAgICAgICBwb2ludCArPSBJbnRTaXplKHNjcm9s
bFgoKSwgc2Nyb2xsWSgpKTsKIAogICAgIHJldHVybiByb3VuZGVkSW50UG9pbnQocmVuZGVyZXIt
PmFic29sdXRlVG9Mb2NhbChwb2ludCwgZmFsc2UsIHRydWUgLyogdXNlIHRyYW5zZm9ybXMgKi8p
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvR2VzdHVyZVRhcEhpZ2hsaWdodGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0dlc3R1cmVUYXBIaWdobGlnaHRl
ci5jcHAJKHJldmlzaW9uIDExMzczNikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvR2VzdHVyZVRh
cEhpZ2hsaWdodGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBpbmxpbmUg
TGF5b3V0UG9pbnQgb3duZXJGcmFtZVRvTWFpbkZyYW1lCiAKICAgICBGcmFtZSogbWFpbkZyYW1l
ID0gY29udGFpbmluZ0ZyYW1lLT5wYWdlKCktPm1haW5GcmFtZSgpOwogCi0gICAgTGF5b3V0UG9p
bnQgbWFpbkZyYW1lUG9pbnQgPSBtYWluRnJhbWUtPnZpZXcoKS0+cm9vdFZpZXdUb0NvbnRlbnRz
KGNvbnRhaW5pbmdGcmFtZS0+dmlldygpLT5jb250ZW50c1RvUm9vdFZpZXcoSW50UG9pbnQoKSkp
OworICAgIExheW91dFBvaW50IG1haW5GcmFtZVBvaW50ID0gbWFpbkZyYW1lLT52aWV3KCktPndp
bmRvd1RvQ29udGVudHMoY29udGFpbmluZ0ZyYW1lLT52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3co
SW50UG9pbnQoKSkpOwogICAgIHJldHVybiBtYWluRnJhbWVQb2ludDsKIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMTEzNzM2KQorKysgU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NDcsNiAr
NjQ3LDE2IEBAIFN0cmluZyBJbnRlcm5hbHM6OnJhbmdlQXNUZXh0KGNvbnN0IFJhbmcKICAgICBy
ZXR1cm4gcmFuZ2UtPnRleHQoKTsKIH0KIAordm9pZCBJbnRlcm5hbHM6OnNldERlbGVnYXRlc1Nj
cm9sbGluZyhib29sIGVuYWJsZWQsIERvY3VtZW50KiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYg
ZWMpCit7CisgICAgLy8gRGVsZWdhdGUgc2Nyb2xsaW5nIGlzIHZhbGlkIG9ubHkgb24gbWFpbmZy
YW1lJ3Mgdmlldy4KKyAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+dmlldygpIHx8ICFk
b2N1bWVudC0+cGFnZSgpIHx8IGRvY3VtZW50LT5wYWdlKCktPm1haW5GcmFtZSgpICE9IGRvY3Vt
ZW50LT5mcmFtZSgpKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgZG9jdW1lbnQtPnZpZXcoKS0+c2V0RGVsZWdhdGVzU2Ny
b2xsaW5nKGVuYWJsZWQpOworfQogCiAjaWYgRU5BQkxFKFRPVUNIX0FESlVTVE1FTlQpCiBQYXNz
UmVmUHRyPFdlYktpdFBvaW50PiBJbnRlcm5hbHM6OnRvdWNoUG9zaXRpb25BZGp1c3RlZFRvQmVz
dENsaWNrYWJsZU5vZGUobG9uZyB4LCBsb25nIHksIGxvbmcgd2lkdGgsIGxvbmcgaGVpZ2h0LCBE
b2N1bWVudCogZG9jdW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtNjYyLDYgKzY3Miw5IEBA
IFBhc3NSZWZQdHI8V2ViS2l0UG9pbnQ+IEludGVybmFsczo6dG91Y2gKICAgICBOb2RlKiB0YXJn
ZXROb2RlOwogICAgIEludFBvaW50IGFkanVzdGVkUG9pbnQ7CiAgICAgZG9jdW1lbnQtPmZyYW1l
KCktPmV2ZW50SGFuZGxlcigpLT5iZXN0Q2xpY2thYmxlTm9kZUZvclRvdWNoUG9pbnQocG9pbnQs
IHJhZGl1cywgYWRqdXN0ZWRQb2ludCwgdGFyZ2V0Tm9kZSk7CisgICAgaWYgKHRhcmdldE5vZGUp
CisgICAgICAgIGFkanVzdGVkUG9pbnQgPSB0YXJnZXROb2RlLT5kb2N1bWVudCgpLT52aWV3KCkt
PmNvbnRlbnRzVG9XaW5kb3coYWRqdXN0ZWRQb2ludCk7CisKICAgICByZXR1cm4gV2ViS2l0UG9p
bnQ6OmNyZWF0ZShhZGp1c3RlZFBvaW50LngoKSwgYWRqdXN0ZWRQb2ludC55KCkpOwogfQogCkBA
IC02OTEsMTAgKzcwNCwxMiBAQCBQYXNzUmVmUHRyPENsaWVudFJlY3Q+IEludGVybmFsczo6YmVz
dFpvCiAgICAgSW50U2l6ZSByYWRpdXMod2lkdGggLyAyLCBoZWlnaHQgLyAyKTsKICAgICBJbnRQ
b2ludCBwb2ludCh4ICsgcmFkaXVzLndpZHRoKCksIHkgKyByYWRpdXMuaGVpZ2h0KCkpOwogCi0K
ICAgICBOb2RlKiB0YXJnZXROb2RlOwogICAgIEludFJlY3Qgem9vbWFibGVBcmVhOwogICAgIGRv
Y3VtZW50LT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+YmVzdFpvb21hYmxlQXJlYUZvclRvdWNo
UG9pbnQocG9pbnQsIHJhZGl1cywgem9vbWFibGVBcmVhLCB0YXJnZXROb2RlKTsKKyAgICBpZiAo
dGFyZ2V0Tm9kZSkKKyAgICAgICAgem9vbWFibGVBcmVhID0gdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQo
KS0+dmlldygpLT5jb250ZW50c1RvV2luZG93KHpvb21hYmxlQXJlYSk7CisKICAgICByZXR1cm4g
Q2xpZW50UmVjdDo6Y3JlYXRlKHpvb21hYmxlQXJlYSk7CiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaAkocmV2aXNpb24gMTEzNzM2KQorKysgU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDYgKzEyMCw3IEBA
IHB1YmxpYzoKICAgICB1bnNpZ25lZCBsZW5ndGhGcm9tUmFuZ2UoRWxlbWVudCogc2NvcGUsIGNv
bnN0IFJhbmdlKiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFN0cmluZyByYW5nZUFzVGV4dChjb25z
dCBSYW5nZSosIEV4Y2VwdGlvbkNvZGUmKTsKIAorICAgIHZvaWQgc2V0RGVsZWdhdGVzU2Nyb2xs
aW5nKGJvb2wgZW5hYmxlZCwgRG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJik7CiAjaWYgRU5BQkxF
KFRPVUNIX0FESlVTVE1FTlQpCiAgICAgUGFzc1JlZlB0cjxXZWJLaXRQb2ludD4gdG91Y2hQb3Np
dGlvbkFkanVzdGVkVG9CZXN0Q2xpY2thYmxlTm9kZShsb25nIHgsIGxvbmcgeSwgbG9uZyB3aWR0
aCwgbG9uZyBoZWlnaHQsIERvY3VtZW50KiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIE5vZGUqIHRv
dWNoTm9kZUFkanVzdGVkVG9CZXN0Q2xpY2thYmxlTm9kZShsb25nIHgsIGxvbmcgeSwgbG9uZyB3
aWR0aCwgbG9uZyBoZWlnaHQsIERvY3VtZW50KiwgRXhjZXB0aW9uQ29kZSYpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkocmV2aXNpb24gMTEzNzM2KQorKysgU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC05Myw2ICs5
Myw3IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICB1bnNpZ25lZCBsb25nIGxlbmd0aEZyb21S
YW5nZShpbiBFbGVtZW50IHNjb3BlLCBpbiBSYW5nZSByYW5nZSkgcmFpc2VzIChET01FeGNlcHRp
b24pOwogICAgICAgICBET01TdHJpbmcgcmFuZ2VBc1RleHQoaW4gUmFuZ2UgcmFuZ2UpIHJhaXNl
cyAoRE9NRXhjZXB0aW9uKTsKIAorICAgICAgICB2b2lkIHNldERlbGVnYXRlc1Njcm9sbGluZyhp
biBib29sZWFuIGVuYWJsZWQsIGluIERvY3VtZW50IGRvY3VtZW50KSByYWlzZXMgKERPTUV4Y2Vw
dGlvbik7CiAjaWYgZGVmaW5lZChFTkFCTEVfVE9VQ0hfQURKVVNUTUVOVCkgJiYgRU5BQkxFX1RP
VUNIX0FESlVTVE1FTlQKICAgICAgICAgV2ViS2l0UG9pbnQgdG91Y2hQb3NpdGlvbkFkanVzdGVk
VG9CZXN0Q2xpY2thYmxlTm9kZShpbiBsb25nIHgsIGluIGxvbmcgeSwgaW4gbG9uZyB3aWR0aCwg
aW4gbG9uZyBoZWlnaHQsIGluIERvY3VtZW50IGRvY3VtZW50KSByYWlzZXMgKERPTUV4Y2VwdGlv
bik7CiAgICAgICAgIE5vZGUgdG91Y2hOb2RlQWRqdXN0ZWRUb0Jlc3RDbGlja2FibGVOb2RlKGlu
IGxvbmcgeCwgaW4gbG9uZyB5LCBpbiBsb25nIHdpZHRoLCBpbiBsb25nIGhlaWdodCwgaW4gRG9j
dW1lbnQgZG9jdW1lbnQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDExMzc0NSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA0LTEwICBaYWxhbiBCdWp0YXMgIDx6YnVqdGFzQGdt
YWlsLmNvbT4KKworICAgICAgICBbUXRdW1dLMl0gWm9vbSBnZXN0dXJlIHdpdGggZG91YmxlIHRh
cCBjcmFzaGVzIG9uIGlmcmFtZSB3aGVuIG1haW4gZnJhbWUgaGFzIHNjcm9sbCBvZmZzZXQuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzQyOAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gZGVsZWdh
dGUgc2Nyb2xsaW5nIGlzIG9uLCB0aGUgZnJhbWUgdmlldyBuZWVkcyB0byBpZ25vcmUgc2Nyb2xs
aW5nIG9mZnNldCB3aGVuIGNvbnZlcnRpbmcKKyAgICAgICAgY29vcmRpbmF0ZXMuIEl0IGlzIGFs
cmVhZHkgZG9uZSBhdCBTY3JvbGxWaWV3IGJhc2UgY2xhc3MgYW5kIHRoaXMgcGF0Y2ggY29waWVz
IHRoZSBsb2dpYyB0byB0aGUKKyAgICAgICAgRnJhbWVWaWV3IHN1YmNsYXNzLgorICAgICAgICBB
bHNvIG1ha2Ugc3VyZSB0aGF0IFRvdWNoQWRqdXN0bWVudCdzIGZpbmRCZXN0KigpIGZ1bmN0aW9u
cycgcmV0dXJuIHZhbHVlIGFyZSBub3QgaWdub3JlZCBieSB0aGUgY2FsbGVyLgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpoaWdobGlnaHRQb3RlbnRpYWxBY3RpdmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6ZmluZFpvb21hYmxlQXJlYUZvclBvaW50KToKKwogMjAxMi0wNC0xMCAgRGludSBKYWNv
YiAgPGRpbnUuamFjb2JAbm9raWEuY29tPgogCiAgICAgICAgIFtRdF1bV0syXSBBc3NlcnRpb24g
ZmFpbHVyZSBvbiBsb2FkaW5nIG5ldyBwYWdlIGFmdGVyIHBhbm5pbmcvem9vbWluZwpJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNp
b24gMTEzNzM2KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDU0LDE0ICsxNDU0LDE5IEBAIHZvaWQgV2ViUGFnZTo6
cmVzdG9yZVNlc3Npb25BbmROYXZpZ2F0ZVQKICNpZiBQTEFURk9STShRVCkKIHZvaWQgV2ViUGFn
ZTo6aGlnaGxpZ2h0UG90ZW50aWFsQWN0aXZhdGlvbihjb25zdCBJbnRQb2ludCYgcG9pbnQsIGNv
bnN0IEludFNpemUmIGFyZWEpCiB7Ci0gICAgTm9kZSogYWN0aXZhdGlvbk5vZGUgPSAwOwotICAg
IEZyYW1lKiBtYWluZnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpOwotICAgIEludFBvaW50IGFk
anVzdGVkUG9pbnQ7Ci0KLSAgICBpZiAocG9pbnQgIT0gSW50UG9pbnQ6Onplcm8oKSkgeworICAg
IGlmIChwb2ludCA9PSBJbnRQb2ludDo6emVybygpKSB7CisgICAgICAgIC8vIEFuIGVtcHR5IHBv
aW50IGRlYWN0aXZhdGVzIHRoZSBoaWdobGlnaHRpbmcuCisgICAgICAgIHRhcEhpZ2hsaWdodENv
bnRyb2xsZXIoKS5oaWRlSGlnaGxpZ2h0KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgRnJhbWUq
IG1haW5mcmFtZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCk7CisgICAgICAgIE5vZGUqIGFjdGl2YXRp
b25Ob2RlID0gMDsKICAgICAgICAgTm9kZSogYWRqdXN0ZWROb2RlID0gMDsKKyAgICAgICAgSW50
UG9pbnQgYWRqdXN0ZWRQb2ludDsKKwogI2lmIEVOQUJMRShUT1VDSF9BREpVU1RNRU5UKQotICAg
ICAgICBtYWluZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5iZXN0Q2xpY2thYmxlTm9kZUZvclRvdWNo
UG9pbnQocG9pbnQsIEludFNpemUoYXJlYS53aWR0aCgpIC8gMiwgYXJlYS5oZWlnaHQoKSAvIDIp
LCBhZGp1c3RlZFBvaW50LCBhZGp1c3RlZE5vZGUpOworICAgICAgICBpZiAoIW1haW5mcmFtZS0+
ZXZlbnRIYW5kbGVyKCktPmJlc3RDbGlja2FibGVOb2RlRm9yVG91Y2hQb2ludChwb2ludCwgSW50
U2l6ZShhcmVhLndpZHRoKCkgLyAyLCBhcmVhLmhlaWdodCgpIC8gMiksIGFkanVzdGVkUG9pbnQs
IGFkanVzdGVkTm9kZSkpCisgICAgICAgICAgICByZXR1cm47CisKICNlbHNlCiAgICAgICAgIEhp
dFRlc3RSZXN1bHQgcmVzdWx0ID0gbWFpbmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJl
c3VsdEF0UG9pbnQobWFpbmZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMocG9pbnQpLCAv
KmFsbG93U2hhZG93Q29udGVudCovIGZhbHNlLCAvKmlnbm9yZUNsaXBwaW5nKi8gdHJ1ZSk7CiAg
ICAgICAgIGFkanVzdGVkTm9kZSA9IHJlc3VsdC5pbm5lck5vZGUoKTsKQEAgLTE0NzksMTIgKzE0
ODQsMTAgQEAgdm9pZCBXZWJQYWdlOjpoaWdobGlnaHRQb3RlbnRpYWxBY3RpdmF0aQogICAgICAg
ICAgICAgZWxzZSBpZiAoYWN0aXZhdGlvbk5vZGUpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KLSAgICB9CiAKLSAgICBpZiAoYWN0aXZhdGlvbk5vZGUpCi0gICAgICAgIHRhcEhp
Z2hsaWdodENvbnRyb2xsZXIoKS5oaWdobGlnaHQoYWN0aXZhdGlvbk5vZGUpOwotICAgIGVsc2UK
LSAgICAgICAgdGFwSGlnaGxpZ2h0Q29udHJvbGxlcigpLmhpZGVIaWdobGlnaHQoKTsKKyAgICAg
ICAgaWYgKGFjdGl2YXRpb25Ob2RlKQorICAgICAgICAgICAgdGFwSGlnaGxpZ2h0Q29udHJvbGxl
cigpLmhpZ2hsaWdodChhY3RpdmF0aW9uTm9kZSk7CisgICAgfQogfQogI2VuZGlmCiAKQEAgLTI1
MzMsMTYgKzI1MzYsMTYgQEAgSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3QqIFdlYlBhZ2U6
OgogI2lmIEVOQUJMRShUT1VDSF9BREpVU1RNRU5UKQogdm9pZCBXZWJQYWdlOjpmaW5kWm9vbWFi
bGVBcmVhRm9yUG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBhcmVhKQogewotICAgIEZyYW1lKiBtYWluZnJhbWUgPSBtX21haW5GcmFt
ZS0+Y29yZUZyYW1lKCk7CiAgICAgTm9kZSogbm9kZSA9IDA7CiAgICAgSW50UmVjdCB6b29tYWJs
ZUFyZWE7Ci0gICAgbWFpbmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+YmVzdFpvb21hYmxlQXJlYUZv
clRvdWNoUG9pbnQocG9pbnQsIEludFNpemUoYXJlYS53aWR0aCgpIC8gMiwgYXJlYS5oZWlnaHQo
KSAvIDIpLCB6b29tYWJsZUFyZWEsIG5vZGUpOwotCisgICAgYm9vbCBmb3VuZEFyZWFGb3JUb3Vj
aFBvaW50ID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+YmVzdFpv
b21hYmxlQXJlYUZvclRvdWNoUG9pbnQocG9pbnQsIEludFNpemUoYXJlYS53aWR0aCgpIC8gMiwg
YXJlYS5oZWlnaHQoKSAvIDIpLCB6b29tYWJsZUFyZWEsIG5vZGUpOwogICAgIEFTU0VSVChub2Rl
KTsKLSAgICBpZiAobm9kZS0+ZG9jdW1lbnQoKSAmJiBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgp
ICYmIG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCktPnZpZXcoKSkgewotICAgICAgICBjb25zdCBT
Y3JvbGxWaWV3KiB2aWV3ID0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+dmlldygpOwotICAg
ICAgICB6b29tYWJsZUFyZWEgPSB2aWV3LT5jb250ZW50c1RvV2luZG93KHpvb21hYmxlQXJlYSk7
Ci0gICAgfQorCisgICAgaWYgKCFmb3VuZEFyZWFGb3JUb3VjaFBvaW50KQorICAgICAgICByZXR1
cm47CisKKyAgICBpZiAobm9kZS0+ZG9jdW1lbnQoKSAmJiBub2RlLT5kb2N1bWVudCgpLT52aWV3
KCkpCisgICAgICAgIHpvb21hYmxlQXJlYSA9IG5vZGUtPmRvY3VtZW50KCktPnZpZXcoKS0+Y29u
dGVudHNUb1dpbmRvdyh6b29tYWJsZUFyZWEpOwogCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEaWRGaW5kWm9vbWFibGVBcmVhKHBvaW50LCB6b29tYWJsZUFyZWEpKTsKIH0KSW5k
ZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDExMzc0NSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA0LTEwICBaYWxhbiBCdWp0YXMgIDx6YnVq
dGFzQGdtYWlsLmNvbT4KKworICAgICAgICBbUXRdW1dLMl0gWm9vbSBnZXN0dXJlIHdpdGggZG91
YmxlIHRhcCBjcmFzaGVzIG9uIGlmcmFtZSB3aGVuIG1haW4gZnJhbWUgaGFzIHNjcm9sbCBvZmZz
ZXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzQy
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdG91
Y2hhZGp1c3RtZW50L2lmcmFtZS13aXRoLW1haW5mcmFtZS1zY3JvbGwtb2Zmc2V0LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogdG91Y2hhZGp1c3RtZW50L2lmcmFtZS13aXRoLW1haW5m
cmFtZS1zY3JvbGwtb2Zmc2V0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRvdWNoYWRqdXN0bWVu
dC96b29tLWJhc2ljLmh0bWw6CisKIDIwMTItMDQtMTAgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVy
c2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgZmFzdC9ldmVudHMvZHJvcC1oYW5kbGVyLXNo
b3VsZC1ub3Qtc3RvcC1uYXZpZ2F0ZS5odG1sLgpJbmRleDogTGF5b3V0VGVzdHMvdG91Y2hhZGp1
c3RtZW50L2lmcmFtZS13aXRoLW1haW5mcmFtZS1zY3JvbGwtb2Zmc2V0LWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvaWZyYW1lLXdpdGgtbWFp
bmZyYW1lLXNjcm9sbC1vZmZzZXQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvdG91Y2hhZGp1c3RtZW50L2lmcmFtZS13aXRoLW1haW5mcmFtZS1zY3JvbGwtb2Zmc2V0
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorCitUZXN0IGlmcmFt
ZSB3aXRoIG1haW4gZnJhbWUgc2Nyb2xsIG9mZnNldCBjYXNlIG9mIHRhcC10by16b29tIG1lY2hh
bmljcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgem9vbWFibGVBcmVh
LnRvcCBpcyA2MDAKK1BBU1Mgem9vbWFibGVBcmVhLmxlZnQgaXMgMTAwCitQQVNTIHpvb21hYmxl
QXJlYS53aWR0aCBpcyAyMDAKK1BBU1Mgem9vbWFibGVBcmVhLmhlaWdodCBpcyAxMDAKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlv
dXRUZXN0cy90b3VjaGFkanVzdG1lbnQvaWZyYW1lLXdpdGgtbWFpbmZyYW1lLXNjcm9sbC1vZmZz
ZXQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvaWZyYW1l
LXdpdGgtbWFpbmZyYW1lLXNjcm9sbC1vZmZzZXQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9pZnJhbWUtd2l0aC1tYWluZnJhbWUtc2Nyb2xsLW9mZnNl
dC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcyIEBACis8aHRtbD4KKzxoZWFkPgorICAg
IDxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+CisgICAgPHN0eWxlPgorICAgICAgICAjc2Nyb2xsb2Zmc2V0Y29udGFpbmVyIHsKKyAgICAg
ICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgICAgIHRvcDogNTAwcHg7CisgICAg
ICAgICAgICBoZWlnaHQ6IDEwMDBweDsKKyAgICAgICAgfQorICAgICAgICBib2R5IHsKKyAgICAg
ICAgICAgIG1hcmdpbjogMHB4OworICAgICAgICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxi
b2R5IG9ubG9hZD0icnVuVGVzdHMoKSI+CisKKzxkaXYgaWQ9c2Nyb2xsb2Zmc2V0Y29udGFpbmVy
PgorICAgIDxpZnJhbWUgZnJhbWVib3JkZXI9JzBweCcgc3JjPSdkYXRhOnRleHQvaHRtbCwKKyAg
ICAgICAgPGh0bWw+CisgICAgICAgIDxoZWFkPgorICAgICAgICAgICAgPHN0eWxlPgorICAgICAg
ICAgICAgICAgICNkaXYwIHsgcG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiA1MHB4OyB0b3A6IDUw
cHg7IHdpZHRoOiAzMDBweDsgaGVpZ2h0OiAzMDBweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsg
fQorICAgICAgICAgICAgICAgICNkaXYxIHsgcG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiA1MHB4
OyB0b3A6IDUwcHg7IHdpZHRoOiAyMDBweDsgaGVpZ2h0OiAxMDBweDsgYm94LXNpemluZzogYm9y
ZGVyLWJveDsgfQorICAgICAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPC9oZWFkPgorICAgICAg
ICA8Ym9keT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ZGl2MD4KKyAgICAgICAgICAgICAgICA8ZGl2
IGlkPWRpdjE+PC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9ib2R5PgorICAg
ICAgICA8L2h0bWw+Jz4KKyAgICA8L2lmcmFtZT4KKyAgICA8cCBpZD0nZGVzY3JpcHRpb24nPjwv
cD4KKyAgICA8ZGl2IGlkPSdjb25zb2xlJz48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorICAg
IGZ1bmN0aW9uIHRlc3RSb3VuZFRvdWNoKHgsIHksIHJhZGl1cykKKyAgICB7CisgICAgICAgIHZh
ciB4ID0geCAtIHJhZGl1czsKKyAgICAgICAgdmFyIHkgPSB5IC0gcmFkaXVzOworICAgICAgICB2
YXIgd2lkdGggPSByYWRpdXMgKiAyOworICAgICAgICB2YXIgaGVpZ2h0ID0gcmFkaXVzICogMjsK
KyAgICAgICAgdmFyIHpvb21hYmxlUmVjdCA9IGludGVybmFscy5iZXN0Wm9vbWFibGVBcmVhRm9y
VG91Y2hQb2ludCh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBkb2N1bWVudCk7CisgICAgICAgIHJldHVy
biB6b29tYWJsZVJlY3Q7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdERpcmVjdFRvdWNoZXMo
KQorICAgIHsKKyAgICAgICAgem9vbWFibGVBcmVhID0gdGVzdFJvdW5kVG91Y2goMTAwLCA2MDAs
IDEwKTsKKyAgICAgICAgc2hvdWxkRXZhbHVhdGVUbygnem9vbWFibGVBcmVhLnRvcCcsIDYwMCk7
CisgICAgICAgIHNob3VsZEV2YWx1YXRlVG8oJ3pvb21hYmxlQXJlYS5sZWZ0JywgMTAwKTsKKyAg
ICAgICAgc2hvdWxkRXZhbHVhdGVUbygnem9vbWFibGVBcmVhLndpZHRoJywgMjAwKTsKKyAgICAg
ICAgc2hvdWxkRXZhbHVhdGVUbygnem9vbWFibGVBcmVhLmhlaWdodCcsIDEwMCk7CisgICAgfQor
CisgICAgZnVuY3Rpb24gcnVuVGVzdHMoKQorICAgIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlciAmJiB3aW5kb3cuaW50ZXJuYWxzICYmIGludGVybmFscy50b3VjaE5v
ZGVBZGp1c3RlZFRvQmVzdENsaWNrYWJsZU5vZGUgJiYgaW50ZXJuYWxzLnNldERlbGVnYXRlc1Nj
cm9sbGluZykgeworICAgICAgICAgICAgZGVzY3JpcHRpb24oJ1Rlc3QgaWZyYW1lIHdpdGggbWFp
biBmcmFtZSBzY3JvbGwgb2Zmc2V0IGNhc2Ugb2YgdGFwLXRvLXpvb20gbWVjaGFuaWNzLicpOwor
ICAgICAgICAgICAgd2luZG93LnNjcm9sbEJ5KDAsNTAwKTsKKyAgICAgICAgICAgIGludGVybmFs
cy5zZXREZWxlZ2F0ZXNTY3JvbGxpbmcodHJ1ZSwgZG9jdW1lbnQpOworICAgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgdGVzdERpcmVjdFRvdWNoZXMo
KTsKKyAgICAgICAgICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7CisgICAgICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0KKyAgICB9Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC96
b29tLWJhc2ljLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50
L3pvb20tYmFzaWMuaHRtbAkocmV2aXNpb24gMTEzNzM2KQorKysgTGF5b3V0VGVzdHMvdG91Y2hh
ZGp1c3RtZW50L3pvb20tYmFzaWMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw4ICszLDcgQEAK
ICAgICA8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgogICAgIDxzdHlsZT4KICAgICAgICAgI2RpdjAgeyBwb3NpdGlvbjogYWJzb2x1dGU7
IGxlZnQ6IDUwcHg7IHRvcDogNTBweDsgd2lkdGg6IDMwMHB4OyBoZWlnaHQ6IDMwMHB4OyBib3gt
c2l6aW5nOiBib3JkZXItYm94OyB9Ci0gICAgICAgICNkaXYxIHsgcG9zaXRpb246IGFic29sdXRl
OyBsZWZ0OiA1MHB4OyB0b3A6IDUwCi1weDsgd2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDEwMHB4OyBi
b3gtc2l6aW5nOiBib3JkZXItYm94OyB9CisgICAgICAgICNkaXYxIHsgcG9zaXRpb246IGFic29s
dXRlOyBsZWZ0OiA1MHB4OyB0b3A6IDUwcHg7IHdpZHRoOiAyMDBweDsgaGVpZ2h0OiAxMDBweDsg
Ym94LXNpemluZzogYm9yZGVyLWJveDsgfQogICAgICAgICAjZGl2MiB7IHBvc2l0aW9uOiBhYnNv
bHV0ZTsgbGVmdDogNTBweDsgdG9wOiAxNTBweDsgd2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDEwMHB4
OyBwYWRkaW5nOiAxMHB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9CiAgICAgPC9zdHlsZT4K
IDwvaGVhZD4KQEAgLTY5LDQgKzY4LDQgQEAgcHg7IHdpZHRoOiAyMDBweDsgaGVpZ2h0OiAxMDBw
eDsgYm94LXNpegogICAgIH0KIDwvc2NyaXB0PgogPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136716</attachid>
            <date>2012-04-11 11:50:40 -0700</date>
            <delta_ts>2012-04-12 02:35:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83428-20120411205037.patch</filename>
            <type>text/plain</type>
            <size>22972</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMzc0NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDEyLTA0LTEwICBaYWxhbiBC
dWp0YXMgIDx6YnVqdGFzQGdtYWlsLmNvbT4KKworICAgICAgICBbUXRdW1dLMl0gWm9vbSBnZXN0
dXJlIHdpdGggZG91YmxlIHRhcCBjcmFzaGVzIG9uIGlmcmFtZSB3aGVuIG1haW4gZnJhbWUgaGFz
IHNjcm9sbCBvZmZzZXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04MzQyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFdoZW4gZGVsZWdhdGUgc2Nyb2xsaW5nIGlzIG9uLCB0aGUgZnJhbWUgdmlldyBuZWVk
cyB0byBpZ25vcmUgc2Nyb2xsaW5nIG9mZnNldCB3aGVuIGNvbnZlcnRpbmcKKyAgICAgICAgY29v
cmRpbmF0ZXMuIEl0IGlzIGFscmVhZHkgZG9uZSBhdCBTY3JvbGxWaWV3IGJhc2UgY2xhc3MgYW5k
IHRoaXMgcGF0Y2ggY29waWVzIHRoZSBsb2dpYyB0byB0aGUKKyAgICAgICAgRnJhbWVWaWV3IHN1
YmNsYXNzLgorICAgICAgICBBbHNvIG1ha2Ugc3VyZSB0aGF0IFRvdWNoQWRqdXN0bWVudCdzIGZp
bmRCZXN0KigpIGZ1bmN0aW9ucycgcmV0dXJuIHZhbHVlIGFyZSBub3QgaWdub3JlZCBieSB0aGUg
Y2FsbGVyLgorCisgICAgICAgIFRlc3Q6IHRvdWNoYWRqdXN0bWVudC9pZnJhbWUtd2l0aC1tYWlu
ZnJhbWUtc2Nyb2xsLW9mZnNldC5odG1sCisKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmJlc3RDbGlja2FibGVOb2RlRm9y
VG91Y2hQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmJlc3Rab29tYWJs
ZUFyZWFGb3JUb3VjaFBvaW50KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAg
ICAgICAoRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmNvbnZlcnRGcm9tUmVuZGVyZXIpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVWaWV3Ojpjb252ZXJ0VG9SZW5kZXJlcik6CisgICAgICAgICogcGFnZS9H
ZXN0dXJlVGFwSGlnaGxpZ2h0ZXIuY3BwOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2V0RGVsZWdhdGVzU2Nyb2xsaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6dG91Y2hQb3NpdGlvbkFkanVzdGVkVG9CZXN0
Q2xpY2thYmxlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmJlc3Rab29tYWJs
ZUFyZWFGb3JUb3VjaFBvaW50KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAg
ICAgICAoSW50ZXJuYWxzKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIw
MTItMDQtMTAgIE5vZWwgR29yZG9uICA8bm9lbC5nb3Jkb25AZ21haWwuY29tPgogCiAgICAgICAg
IFtHVEtdIFNlcGFyYXRlIGltYWdlIGVuY29kaW5nIGZyb20gZGF0YVVSTCBjb25zdHJ1Y3Rpb24K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxMTM3MzYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMTUwLDYgKzE1MCw3IEBAIF9f
Wk43V2ViQ29yZTEwUmVuZGVyVmlldzEwY29tcG9zaXRvckV2CiBfX1pON1dlYkNvcmUxMFNoYWRv
d1RyZWUyMHJlbW92ZUFsbFNoYWRvd1Jvb3RzRXYKIF9fWk43V2ViQ29yZTEwU2Nyb2xsVmlldzE3
c2V0VXNlRml4ZWRMYXlvdXRFYgogX19aTjdXZWJDb3JlMTBTY3JvbGxWaWV3MThzZXRGaXhlZExh
eW91dFNpemVFUktOU183SW50U2l6ZUUKK19fWk43V2ViQ29yZTEwU2Nyb2xsVmlldzIxc2V0RGVs
ZWdhdGVzU2Nyb2xsaW5nRWIKIF9fWk43V2ViQ29yZTEwU2Nyb2xsVmlldzIwc2V0Q2FuSGF2ZVNj
cm9sbGJhcnNFYgogX19aTjdXZWJDb3JlMTBTY3JvbGxWaWV3MjNzZXRTY3JvbGxiYXJzU3VwcHJl
c3NlZEViYgogX19aTjdXZWJDb3JlMTBTY3JvbGxWaWV3MjR3aW5kb3dSZXNpemVyUmVjdENoYW5n
ZWRFdgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkocmV2aXNpb24gMTEz
NzM2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNDY0LDI0ICsyNDY0LDI0IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0
dXJlU2Nyb2xsQ28KICNlbmRpZgogCiAjaWYgRU5BQkxFKFRPVUNIX0FESlVTVE1FTlQpCi12b2lk
IEV2ZW50SGFuZGxlcjo6YmVzdENsaWNrYWJsZU5vZGVGb3JUb3VjaFBvaW50KGNvbnN0IEludFBv
aW50JiB0b3VjaENlbnRlciwgY29uc3QgSW50U2l6ZSYgdG91Y2hSYWRpdXMsIEludFBvaW50JiB0
YXJnZXRQb2ludCwgTm9kZSomIHRhcmdldE5vZGUpCitib29sIEV2ZW50SGFuZGxlcjo6YmVzdENs
aWNrYWJsZU5vZGVGb3JUb3VjaFBvaW50KGNvbnN0IEludFBvaW50JiB0b3VjaENlbnRlciwgY29u
c3QgSW50U2l6ZSYgdG91Y2hSYWRpdXMsIEludFBvaW50JiB0YXJnZXRQb2ludCwgTm9kZSomIHRh
cmdldE5vZGUpCiB7CiAgICAgSGl0VGVzdFJlcXVlc3Q6OkhpdFRlc3RSZXF1ZXN0VHlwZSBoaXRU
eXBlID0gSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZTsK
ICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGhpdFRlc3RSZXN1bHRBdFBvaW50KHRvdWNoQ2Vu
dGVyLCAvKmFsbG93U2hhZG93Q29udGVudCovIGZhbHNlLCAvKmlnbm9yZUNsaXBwaW5nKi8gZmFs
c2UsIERvbnRIaXRUZXN0U2Nyb2xsYmFycywgaGl0VHlwZSwgdG91Y2hSYWRpdXMpOwogCiAgICAg
SW50UmVjdCB0b3VjaFJlY3QgPSByZXN1bHQucmVjdEZvclBvaW50KHRvdWNoQ2VudGVyKTsKICAg
ICBSZWZQdHI8U3RhdGljSGFzaFNldE5vZGVMaXN0PiBub2RlTGlzdCA9IFN0YXRpY0hhc2hTZXRO
b2RlTGlzdDo6YWRvcHQocmVzdWx0LnJlY3RCYXNlZFRlc3RSZXN1bHQoKSk7Ci0gICAgZmluZEJl
c3RDbGlja2FibGVDYW5kaWRhdGUodGFyZ2V0Tm9kZSwgdGFyZ2V0UG9pbnQsIHRvdWNoQ2VudGVy
LCB0b3VjaFJlY3QsICpub2RlTGlzdC5nZXQoKSk7CisgICAgcmV0dXJuIGZpbmRCZXN0Q2xpY2th
YmxlQ2FuZGlkYXRlKHRhcmdldE5vZGUsIHRhcmdldFBvaW50LCB0b3VjaENlbnRlciwgdG91Y2hS
ZWN0LCAqbm9kZUxpc3QuZ2V0KCkpOwogfQogCi12b2lkIEV2ZW50SGFuZGxlcjo6YmVzdFpvb21h
YmxlQXJlYUZvclRvdWNoUG9pbnQoY29uc3QgSW50UG9pbnQmIHRvdWNoQ2VudGVyLCBjb25zdCBJ
bnRTaXplJiB0b3VjaFJhZGl1cywgSW50UmVjdCYgdGFyZ2V0QXJlYSwgTm9kZSomIHRhcmdldE5v
ZGUpCitib29sIEV2ZW50SGFuZGxlcjo6YmVzdFpvb21hYmxlQXJlYUZvclRvdWNoUG9pbnQoY29u
c3QgSW50UG9pbnQmIHRvdWNoQ2VudGVyLCBjb25zdCBJbnRTaXplJiB0b3VjaFJhZGl1cywgSW50
UmVjdCYgdGFyZ2V0QXJlYSwgTm9kZSomIHRhcmdldE5vZGUpCiB7CiAgICAgSGl0VGVzdFJlcXVl
c3Q6OkhpdFRlc3RSZXF1ZXN0VHlwZSBoaXRUeXBlID0gSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5
IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZTsKICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGhp
dFRlc3RSZXN1bHRBdFBvaW50KHRvdWNoQ2VudGVyLCAvKmFsbG93U2hhZG93Q29udGVudCovIGZh
bHNlLCAvKmlnbm9yZUNsaXBwaW5nKi8gZmFsc2UsIERvbnRIaXRUZXN0U2Nyb2xsYmFycywgaGl0
VHlwZSwgdG91Y2hSYWRpdXMpOwogCiAgICAgSW50UmVjdCB0b3VjaFJlY3QgPSByZXN1bHQucmVj
dEZvclBvaW50KHRvdWNoQ2VudGVyKTsKICAgICBSZWZQdHI8U3RhdGljSGFzaFNldE5vZGVMaXN0
PiBub2RlTGlzdCA9IFN0YXRpY0hhc2hTZXROb2RlTGlzdDo6YWRvcHQocmVzdWx0LnJlY3RCYXNl
ZFRlc3RSZXN1bHQoKSk7Ci0gICAgZmluZEJlc3Rab29tYWJsZUFyZWEodGFyZ2V0Tm9kZSwgdGFy
Z2V0QXJlYSwgdG91Y2hDZW50ZXIsIHRvdWNoUmVjdCwgKm5vZGVMaXN0LmdldCgpKTsKKyAgICBy
ZXR1cm4gZmluZEJlc3Rab29tYWJsZUFyZWEodGFyZ2V0Tm9kZSwgdGFyZ2V0QXJlYSwgdG91Y2hD
ZW50ZXIsIHRvdWNoUmVjdCwgKm5vZGVMaXN0LmdldCgpKTsKIH0KICNlbmRpZgogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgJKHJldmlzaW9uIDExMzczNikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2OCw4ICsxNjgs
OCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShUT1VDSF9BREpVU1RNRU5UKQotICAg
IHZvaWQgYmVzdENsaWNrYWJsZU5vZGVGb3JUb3VjaFBvaW50KGNvbnN0IEludFBvaW50JiB0b3Vj
aENlbnRlciwgY29uc3QgSW50U2l6ZSYgdG91Y2hSYWRpdXMsIEludFBvaW50JiB0YXJnZXRQb2lu
dCwgTm9kZSomIHRhcmdldE5vZGUpOwotICAgIHZvaWQgYmVzdFpvb21hYmxlQXJlYUZvclRvdWNo
UG9pbnQoY29uc3QgSW50UG9pbnQmIHRvdWNoQ2VudGVyLCBjb25zdCBJbnRTaXplJiB0b3VjaFJh
ZGl1cywgSW50UmVjdCYgdGFyZ2V0QXJlYSwgTm9kZSomIHRhcmdldE5vZGUpOworICAgIGJvb2wg
YmVzdENsaWNrYWJsZU5vZGVGb3JUb3VjaFBvaW50KGNvbnN0IEludFBvaW50JiB0b3VjaENlbnRl
ciwgY29uc3QgSW50U2l6ZSYgdG91Y2hSYWRpdXMsIEludFBvaW50JiB0YXJnZXRQb2ludCwgTm9k
ZSomIHRhcmdldE5vZGUpOworICAgIGJvb2wgYmVzdFpvb21hYmxlQXJlYUZvclRvdWNoUG9pbnQo
Y29uc3QgSW50UG9pbnQmIHRvdWNoQ2VudGVyLCBjb25zdCBJbnRTaXplJiB0b3VjaFJhZGl1cywg
SW50UmVjdCYgdGFyZ2V0QXJlYSwgTm9kZSomIHRhcmdldE5vZGUpOwogI2VuZGlmCiAKICNpZiBF
TkFCTEUoQ09OVEVYVF9NRU5VUykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJl
dmlzaW9uIDExMzczNikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzI0Niw3ICszMjQ2LDggQEAgSW50UmVjdCBGcmFtZVZpZXc6OmNvbnZl
cnRGcm9tUmVuZGVyZXIoYwogICAgIEludFJlY3QgcmVjdCA9IHJlbmRlcmVyLT5sb2NhbFRvQWJz
b2x1dGVRdWFkKEZsb2F0UmVjdChyZW5kZXJlclJlY3QpKS5lbmNsb3NpbmdCb3VuZGluZ0JveCgp
OwogCiAgICAgLy8gQ29udmVydCBmcm9tIHBhZ2UgKCJhYnNvbHV0ZSIpIHRvIEZyYW1lVmlldyBj
b29yZGluYXRlcy4KLSAgICByZWN0Lm1vdmVCeSgtc2Nyb2xsUG9zaXRpb24oKSk7CisgICAgaWYg
KCFkZWxlZ2F0ZXNTY3JvbGxpbmcoKSkKKyAgICAgICAgcmVjdC5tb3ZlQnkoLXNjcm9sbFBvc2l0
aW9uKCkpOwogCiAgICAgcmV0dXJuIHJlY3Q7CiB9CkBAIC0zMjU2LDcgKzMyNTcsOCBAQCBJbnRS
ZWN0IEZyYW1lVmlldzo6Y29udmVydFRvUmVuZGVyZXIoY29uCiAgICAgSW50UmVjdCByZWN0ID0g
dmlld1JlY3Q7CiAgICAgCiAgICAgLy8gQ29udmVydCBmcm9tIEZyYW1lVmlldyBjb29yZHMgaW50
byBwYWdlICgiYWJzb2x1dGUiKSBjb29yZGluYXRlcy4KLSAgICByZWN0Lm1vdmVCeShzY3JvbGxQ
b3NpdGlvbigpKTsKKyAgICBpZiAoIWRlbGVnYXRlc1Njcm9sbGluZygpKQorICAgICAgICByZWN0
Lm1vdmVCeShzY3JvbGxQb3NpdGlvbigpKTsKIAogICAgIC8vIEZJWE1FOiB3ZSBkb24ndCBoYXZl
IGEgd2F5IHRvIG1hcCBhbiBhYnNvbHV0ZSByZWN0IGRvd24gdG8gYSBsb2NhbCBxdWFkLCBzbyBq
dXN0CiAgICAgLy8gbW92ZSB0aGUgcmVjdCBmb3Igbm93LgpAQCAtMzI2OSwxNiArMzI3MSwxOCBA
QCBJbnRQb2ludCBGcmFtZVZpZXc6OmNvbnZlcnRGcm9tUmVuZGVyZXIoCiAgICAgSW50UG9pbnQg
cG9pbnQgPSByb3VuZGVkSW50UG9pbnQocmVuZGVyZXItPmxvY2FsVG9BYnNvbHV0ZShyZW5kZXJl
clBvaW50LCBmYWxzZSwgdHJ1ZSAvKiB1c2UgdHJhbnNmb3JtcyAqLykpOwogCiAgICAgLy8gQ29u
dmVydCBmcm9tIHBhZ2UgKCJhYnNvbHV0ZSIpIHRvIEZyYW1lVmlldyBjb29yZGluYXRlcy4KLSAg
ICBwb2ludC5tb3ZlQnkoLXNjcm9sbFBvc2l0aW9uKCkpOworICAgIGlmICghZGVsZWdhdGVzU2Ny
b2xsaW5nKCkpCisgICAgICAgIHBvaW50Lm1vdmVCeSgtc2Nyb2xsUG9zaXRpb24oKSk7CiAgICAg
cmV0dXJuIHBvaW50OwogfQogCiBJbnRQb2ludCBGcmFtZVZpZXc6OmNvbnZlcnRUb1JlbmRlcmVy
KGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IEludFBvaW50JiB2aWV3UG9pbnQp
IGNvbnN0CiB7CiAgICAgSW50UG9pbnQgcG9pbnQgPSB2aWV3UG9pbnQ7Ci0gICAgCisKICAgICAv
LyBDb252ZXJ0IGZyb20gRnJhbWVWaWV3IGNvb3JkcyBpbnRvIHBhZ2UgKCJhYnNvbHV0ZSIpIGNv
b3JkaW5hdGVzLgotICAgIHBvaW50ICs9IEludFNpemUoc2Nyb2xsWCgpLCBzY3JvbGxZKCkpOwor
ICAgIGlmICghZGVsZWdhdGVzU2Nyb2xsaW5nKCkpCisgICAgICAgIHBvaW50ICs9IEludFNpemUo
c2Nyb2xsWCgpLCBzY3JvbGxZKCkpOwogCiAgICAgcmV0dXJuIHJvdW5kZWRJbnRQb2ludChyZW5k
ZXJlci0+YWJzb2x1dGVUb0xvY2FsKHBvaW50LCBmYWxzZSwgdHJ1ZSAvKiB1c2UgdHJhbnNmb3Jt
cyAqLykpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9HZXN0dXJlVGFwSGlnaGxpZ2h0
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvR2VzdHVyZVRhcEhpZ2hs
aWdodGVyLmNwcAkocmV2aXNpb24gMTEzNzM2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9HZXN0
dXJlVGFwSGlnaGxpZ2h0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIGlu
bGluZSBMYXlvdXRQb2ludCBvd25lckZyYW1lVG9NYWluRnJhbWUKIAogICAgIEZyYW1lKiBtYWlu
RnJhbWUgPSBjb250YWluaW5nRnJhbWUtPnBhZ2UoKS0+bWFpbkZyYW1lKCk7CiAKLSAgICBMYXlv
dXRQb2ludCBtYWluRnJhbWVQb2ludCA9IG1haW5GcmFtZS0+dmlldygpLT5yb290Vmlld1RvQ29u
dGVudHMoY29udGFpbmluZ0ZyYW1lLT52aWV3KCktPmNvbnRlbnRzVG9Sb290VmlldyhJbnRQb2lu
dCgpKSk7CisgICAgTGF5b3V0UG9pbnQgbWFpbkZyYW1lUG9pbnQgPSBtYWluRnJhbWUtPnZpZXco
KS0+d2luZG93VG9Db250ZW50cyhjb250YWluaW5nRnJhbWUtPnZpZXcoKS0+Y29udGVudHNUb1dp
bmRvdyhJbnRQb2ludCgpKSk7CiAgICAgcmV0dXJuIG1haW5GcmFtZVBvaW50OwogfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCShyZXZpc2lvbiAxMTM3MzYpCisrKyBT
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0
Nyw2ICs2NDcsMTYgQEAgU3RyaW5nIEludGVybmFsczo6cmFuZ2VBc1RleHQoY29uc3QgUmFuZwog
ICAgIHJldHVybiByYW5nZS0+dGV4dCgpOwogfQogCit2b2lkIEludGVybmFsczo6c2V0RGVsZWdh
dGVzU2Nyb2xsaW5nKGJvb2wgZW5hYmxlZCwgRG9jdW1lbnQqIGRvY3VtZW50LCBFeGNlcHRpb25D
b2RlJiBlYykKK3sKKyAgICAvLyBEZWxlZ2F0ZSBzY3JvbGxpbmcgaXMgdmFsaWQgb25seSBvbiBt
YWluZnJhbWUncyB2aWV3LgorICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT52aWV3KCkg
fHwgIWRvY3VtZW50LT5wYWdlKCkgfHwgZG9jdW1lbnQtPnBhZ2UoKS0+bWFpbkZyYW1lKCkgIT0g
ZG9jdW1lbnQtPmZyYW1lKCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBkb2N1bWVudC0+dmlldygpLT5zZXREZWxlZ2F0
ZXNTY3JvbGxpbmcoZW5hYmxlZCk7Cit9CiAKICNpZiBFTkFCTEUoVE9VQ0hfQURKVVNUTUVOVCkK
IFBhc3NSZWZQdHI8V2ViS2l0UG9pbnQ+IEludGVybmFsczo6dG91Y2hQb3NpdGlvbkFkanVzdGVk
VG9CZXN0Q2xpY2thYmxlTm9kZShsb25nIHgsIGxvbmcgeSwgbG9uZyB3aWR0aCwgbG9uZyBoZWln
aHQsIERvY3VtZW50KiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC02NjIsNiArNjcy
LDkgQEAgUGFzc1JlZlB0cjxXZWJLaXRQb2ludD4gSW50ZXJuYWxzOjp0b3VjaAogICAgIE5vZGUq
IHRhcmdldE5vZGU7CiAgICAgSW50UG9pbnQgYWRqdXN0ZWRQb2ludDsKICAgICBkb2N1bWVudC0+
ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmJlc3RDbGlja2FibGVOb2RlRm9yVG91Y2hQb2ludChw
b2ludCwgcmFkaXVzLCBhZGp1c3RlZFBvaW50LCB0YXJnZXROb2RlKTsKKyAgICBpZiAodGFyZ2V0
Tm9kZSkKKyAgICAgICAgYWRqdXN0ZWRQb2ludCA9IHRhcmdldE5vZGUtPmRvY3VtZW50KCktPnZp
ZXcoKS0+Y29udGVudHNUb1dpbmRvdyhhZGp1c3RlZFBvaW50KTsKKwogICAgIHJldHVybiBXZWJL
aXRQb2ludDo6Y3JlYXRlKGFkanVzdGVkUG9pbnQueCgpLCBhZGp1c3RlZFBvaW50LnkoKSk7CiB9
CiAKQEAgLTY5MSwxMCArNzA0LDEyIEBAIFBhc3NSZWZQdHI8Q2xpZW50UmVjdD4gSW50ZXJuYWxz
OjpiZXN0Wm8KICAgICBJbnRTaXplIHJhZGl1cyh3aWR0aCAvIDIsIGhlaWdodCAvIDIpOwogICAg
IEludFBvaW50IHBvaW50KHggKyByYWRpdXMud2lkdGgoKSwgeSArIHJhZGl1cy5oZWlnaHQoKSk7
CiAKLQogICAgIE5vZGUqIHRhcmdldE5vZGU7CiAgICAgSW50UmVjdCB6b29tYWJsZUFyZWE7CiAg
ICAgZG9jdW1lbnQtPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5iZXN0Wm9vbWFibGVBcmVhRm9y
VG91Y2hQb2ludChwb2ludCwgcmFkaXVzLCB6b29tYWJsZUFyZWEsIHRhcmdldE5vZGUpOworICAg
IGlmICh0YXJnZXROb2RlKQorICAgICAgICB6b29tYWJsZUFyZWEgPSB0YXJnZXROb2RlLT5kb2N1
bWVudCgpLT52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3coem9vbWFibGVBcmVhKTsKKwogICAgIHJl
dHVybiBDbGllbnRSZWN0OjpjcmVhdGUoem9vbWFibGVBcmVhKTsKIH0KICNlbmRpZgpJbmRleDog
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCShyZXZpc2lvbiAxMTM3MzYpCisrKyBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsNiArMTIw
LDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGxlbmd0aEZyb21SYW5nZShFbGVtZW50KiBzY29w
ZSwgY29uc3QgUmFuZ2UqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgU3RyaW5nIHJhbmdlQXNUZXh0
KGNvbnN0IFJhbmdlKiwgRXhjZXB0aW9uQ29kZSYpOwogCisgICAgdm9pZCBzZXREZWxlZ2F0ZXNT
Y3JvbGxpbmcoYm9vbCBlbmFibGVkLCBEb2N1bWVudCosIEV4Y2VwdGlvbkNvZGUmKTsKICNpZiBF
TkFCTEUoVE9VQ0hfQURKVVNUTUVOVCkKICAgICBQYXNzUmVmUHRyPFdlYktpdFBvaW50PiB0b3Vj
aFBvc2l0aW9uQWRqdXN0ZWRUb0Jlc3RDbGlja2FibGVOb2RlKGxvbmcgeCwgbG9uZyB5LCBsb25n
IHdpZHRoLCBsb25nIGhlaWdodCwgRG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgTm9k
ZSogdG91Y2hOb2RlQWRqdXN0ZWRUb0Jlc3RDbGlja2FibGVOb2RlKGxvbmcgeCwgbG9uZyB5LCBs
b25nIHdpZHRoLCBsb25nIGhlaWdodCwgRG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJik7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCShyZXZpc2lvbiAxMTM3MzYpCisrKyBT
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTkz
LDYgKzkzLDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgbGVuZ3Ro
RnJvbVJhbmdlKGluIEVsZW1lbnQgc2NvcGUsIGluIFJhbmdlIHJhbmdlKSByYWlzZXMgKERPTUV4
Y2VwdGlvbik7CiAgICAgICAgIERPTVN0cmluZyByYW5nZUFzVGV4dChpbiBSYW5nZSByYW5nZSkg
cmFpc2VzIChET01FeGNlcHRpb24pOwogCisgICAgICAgIHZvaWQgc2V0RGVsZWdhdGVzU2Nyb2xs
aW5nKGluIGJvb2xlYW4gZW5hYmxlZCwgaW4gRG9jdW1lbnQgZG9jdW1lbnQpIHJhaXNlcyAoRE9N
RXhjZXB0aW9uKTsKICNpZiBkZWZpbmVkKEVOQUJMRV9UT1VDSF9BREpVU1RNRU5UKSAmJiBFTkFC
TEVfVE9VQ0hfQURKVVNUTUVOVAogICAgICAgICBXZWJLaXRQb2ludCB0b3VjaFBvc2l0aW9uQWRq
dXN0ZWRUb0Jlc3RDbGlja2FibGVOb2RlKGluIGxvbmcgeCwgaW4gbG9uZyB5LCBpbiBsb25nIHdp
ZHRoLCBpbiBsb25nIGhlaWdodCwgaW4gRG9jdW1lbnQgZG9jdW1lbnQpIHJhaXNlcyAoRE9NRXhj
ZXB0aW9uKTsKICAgICAgICAgTm9kZSB0b3VjaE5vZGVBZGp1c3RlZFRvQmVzdENsaWNrYWJsZU5v
ZGUoaW4gbG9uZyB4LCBpbiBsb25nIHksIGluIGxvbmcgd2lkdGgsIGluIGxvbmcgaGVpZ2h0LCBp
biBEb2N1bWVudCBkb2N1bWVudCkgcmFpc2VzIChET01FeGNlcHRpb24pOwpJbmRleDogU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwkocmV2aXNpb24gMTEzNzQ1KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDQtMTAgIFphbGFuIEJ1anRhcyAgPHpidWp0
YXNAZ21haWwuY29tPgorCisgICAgICAgIFtRdF1bV0syXSBab29tIGdlc3R1cmUgd2l0aCBkb3Vi
bGUgdGFwIGNyYXNoZXMgb24gaWZyYW1lIHdoZW4gbWFpbiBmcmFtZSBoYXMgc2Nyb2xsIG9mZnNl
dC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzNDI4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBk
ZWxlZ2F0ZSBzY3JvbGxpbmcgaXMgb24sIHRoZSBmcmFtZSB2aWV3IG5lZWRzIHRvIGlnbm9yZSBz
Y3JvbGxpbmcgb2Zmc2V0IHdoZW4gY29udmVydGluZworICAgICAgICBjb29yZGluYXRlcy4gSXQg
aXMgYWxyZWFkeSBkb25lIGF0IFNjcm9sbFZpZXcgYmFzZSBjbGFzcyBhbmQgdGhpcyBwYXRjaCBj
b3BpZXMgdGhlIGxvZ2ljIHRvIHRoZQorICAgICAgICBGcmFtZVZpZXcgc3ViY2xhc3MuCisgICAg
ICAgIEFsc28gbWFrZSBzdXJlIHRoYXQgVG91Y2hBZGp1c3RtZW50J3MgZmluZEJlc3QqKCkgZnVu
Y3Rpb25zJyByZXR1cm4gdmFsdWUgYXJlIG5vdCBpZ25vcmVkIGJ5IHRoZSBjYWxsZXIuCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmhpZ2hsaWdodFBvdGVudGlhbEFjdGl2YXRpb24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpmaW5kWm9vbWFibGVBcmVhRm9yUG9pbnQpOgorCiAyMDEyLTA0LTEwICBEaW51
IEphY29iICA8ZGludS5qYWNvYkBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XVtXSzJdIEFzc2Vy
dGlvbiBmYWlsdXJlIG9uIGxvYWRpbmcgbmV3IHBhZ2UgYWZ0ZXIgcGFubmluZy96b29taW5nCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShy
ZXZpc2lvbiAxMTM3MzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NTQsMTQgKzE0NTQsMTkgQEAgdm9pZCBXZWJQ
YWdlOjpyZXN0b3JlU2Vzc2lvbkFuZE5hdmlnYXRlVAogI2lmIFBMQVRGT1JNKFFUKQogdm9pZCBX
ZWJQYWdlOjpoaWdobGlnaHRQb3RlbnRpYWxBY3RpdmF0aW9uKGNvbnN0IEludFBvaW50JiBwb2lu
dCwgY29uc3QgSW50U2l6ZSYgYXJlYSkKIHsKLSAgICBOb2RlKiBhY3RpdmF0aW9uTm9kZSA9IDA7
Ci0gICAgRnJhbWUqIG1haW5mcmFtZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCk7Ci0gICAgSW50UG9p
bnQgYWRqdXN0ZWRQb2ludDsKLQotICAgIGlmIChwb2ludCAhPSBJbnRQb2ludDo6emVybygpKSB7
CisgICAgaWYgKHBvaW50ID09IEludFBvaW50Ojp6ZXJvKCkpIHsKKyAgICAgICAgLy8gQW4gZW1w
dHkgcG9pbnQgZGVhY3RpdmF0ZXMgdGhlIGhpZ2hsaWdodGluZy4KKyAgICAgICAgdGFwSGlnaGxp
Z2h0Q29udHJvbGxlcigpLmhpZGVIaWdobGlnaHQoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBG
cmFtZSogbWFpbmZyYW1lID0gbV9wYWdlLT5tYWluRnJhbWUoKTsKKyAgICAgICAgTm9kZSogYWN0
aXZhdGlvbk5vZGUgPSAwOwogICAgICAgICBOb2RlKiBhZGp1c3RlZE5vZGUgPSAwOworICAgICAg
ICBJbnRQb2ludCBhZGp1c3RlZFBvaW50OworCiAjaWYgRU5BQkxFKFRPVUNIX0FESlVTVE1FTlQp
Ci0gICAgICAgIG1haW5mcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmJlc3RDbGlja2FibGVOb2RlRm9y
VG91Y2hQb2ludChwb2ludCwgSW50U2l6ZShhcmVhLndpZHRoKCkgLyAyLCBhcmVhLmhlaWdodCgp
IC8gMiksIGFkanVzdGVkUG9pbnQsIGFkanVzdGVkTm9kZSk7CisgICAgICAgIGlmICghbWFpbmZy
YW1lLT5ldmVudEhhbmRsZXIoKS0+YmVzdENsaWNrYWJsZU5vZGVGb3JUb3VjaFBvaW50KHBvaW50
LCBJbnRTaXplKGFyZWEud2lkdGgoKSAvIDIsIGFyZWEuaGVpZ2h0KCkgLyAyKSwgYWRqdXN0ZWRQ
b2ludCwgYWRqdXN0ZWROb2RlKSkKKyAgICAgICAgICAgIHJldHVybjsKKwogI2Vsc2UKICAgICAg
ICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBtYWluZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRU
ZXN0UmVzdWx0QXRQb2ludChtYWluZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhwb2lu
dCksIC8qYWxsb3dTaGFkb3dDb250ZW50Ki8gZmFsc2UsIC8qaWdub3JlQ2xpcHBpbmcqLyB0cnVl
KTsKICAgICAgICAgYWRqdXN0ZWROb2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwpAQCAtMTQ3OSwx
MiArMTQ4NCwxMCBAQCB2b2lkIFdlYlBhZ2U6OmhpZ2hsaWdodFBvdGVudGlhbEFjdGl2YXRpCiAg
ICAgICAgICAgICBlbHNlIGlmIChhY3RpdmF0aW9uTm9kZSkKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQotICAgIH0KIAotICAgIGlmIChhY3RpdmF0aW9uTm9kZSkKLSAgICAgICAg
dGFwSGlnaGxpZ2h0Q29udHJvbGxlcigpLmhpZ2hsaWdodChhY3RpdmF0aW9uTm9kZSk7Ci0gICAg
ZWxzZQotICAgICAgICB0YXBIaWdobGlnaHRDb250cm9sbGVyKCkuaGlkZUhpZ2hsaWdodCgpOwor
ICAgICAgICBpZiAoYWN0aXZhdGlvbk5vZGUpCisgICAgICAgICAgICB0YXBIaWdobGlnaHRDb250
cm9sbGVyKCkuaGlnaGxpZ2h0KGFjdGl2YXRpb25Ob2RlKTsKKyAgICB9CiB9CiAjZW5kaWYKIApA
QCAtMjUzMywxNiArMjUzNiwxNiBAQCBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdCogV2Vi
UGFnZTo6CiAjaWYgRU5BQkxFKFRPVUNIX0FESlVTVE1FTlQpCiB2b2lkIFdlYlBhZ2U6OmZpbmRa
b29tYWJsZUFyZWFGb3JQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIGNvbnN0
IFdlYkNvcmU6OkludFNpemUmIGFyZWEpCiB7Ci0gICAgRnJhbWUqIG1haW5mcmFtZSA9IG1fbWFp
bkZyYW1lLT5jb3JlRnJhbWUoKTsKICAgICBOb2RlKiBub2RlID0gMDsKICAgICBJbnRSZWN0IHpv
b21hYmxlQXJlYTsKLSAgICBtYWluZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5iZXN0Wm9vbWFibGVB
cmVhRm9yVG91Y2hQb2ludChwb2ludCwgSW50U2l6ZShhcmVhLndpZHRoKCkgLyAyLCBhcmVhLmhl
aWdodCgpIC8gMiksIHpvb21hYmxlQXJlYSwgbm9kZSk7Ci0KKyAgICBib29sIGZvdW5kQXJlYUZv
clRvdWNoUG9pbnQgPSBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5i
ZXN0Wm9vbWFibGVBcmVhRm9yVG91Y2hQb2ludChwb2ludCwgSW50U2l6ZShhcmVhLndpZHRoKCkg
LyAyLCBhcmVhLmhlaWdodCgpIC8gMiksIHpvb21hYmxlQXJlYSwgbm9kZSk7CiAgICAgQVNTRVJU
KG5vZGUpOwotICAgIGlmIChub2RlLT5kb2N1bWVudCgpICYmIG5vZGUtPmRvY3VtZW50KCktPmZy
YW1lKCkgJiYgbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+dmlldygpKSB7Ci0gICAgICAgIGNv
bnN0IFNjcm9sbFZpZXcqIHZpZXcgPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpLT52aWV3KCk7
Ci0gICAgICAgIHpvb21hYmxlQXJlYSA9IHZpZXctPmNvbnRlbnRzVG9XaW5kb3coem9vbWFibGVB
cmVhKTsKLSAgICB9CisKKyAgICBpZiAoIWZvdW5kQXJlYUZvclRvdWNoUG9pbnQpCisgICAgICAg
IHJldHVybjsKKworICAgIGlmIChub2RlLT5kb2N1bWVudCgpICYmIG5vZGUtPmRvY3VtZW50KCkt
PnZpZXcoKSkKKyAgICAgICAgem9vbWFibGVBcmVhID0gbm9kZS0+ZG9jdW1lbnQoKS0+dmlldygp
LT5jb250ZW50c1RvV2luZG93KHpvb21hYmxlQXJlYSk7CiAKICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRpZEZpbmRab29tYWJsZUFyZWEocG9pbnQsIHpvb21hYmxlQXJlYSkpOwog
fQpJbmRleDogU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgkocmV2aXNpb24gMTEzNzM2KQorKysgU291cmNl
L1dlYktpdDIvd2luL1dlYktpdDIuZGVmCSh3b3JraW5nIGNvcHkpCkBAIC0yMTUsNiArMjE1LDcg
QEAgRVhQT1JUUwogICAgICAgICA/c2V0UmVzb3VyY2VzRGF0YVNpemVMaW1pdHNGcm9tSW50ZXJu
YWxzQEluc3BlY3RvckNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFWEhIQFoKICAgICAgICAgP3NldFNh
bnNTZXJpZkZvbnRGYW1pbHlAU2V0dGluZ3NAV2ViQ29yZUBAUUFFWEFCVkF0b21pY1N0cmluZ0BX
VEZAQFc0VVNjcmlwdENvZGVAQEBaCiAgICAgICAgID9zZXRTY3JvbGxiYXJzU3VwcHJlc3NlZEBT
Y3JvbGxWaWV3QFdlYkNvcmVAQFFBRVhfTjBAWgorICAgICAgICA/c2V0RGVsZWdhdGVzU2Nyb2xs
aW5nQFNjcm9sbFZpZXdAV2ViQ29yZUBAUUFFWF9OQFoKICAgICAgICAgP3NldFNjcm9sbE9mZnNl
dEZyb21JbnRlcm5hbHNAU2Nyb2xsYWJsZUFyZWFAV2ViQ29yZUBAUUFFWEFCVkludFBvaW50QDJA
QFoKICAgICAgICAgP3NldFNlcmlmRm9udEZhbWlseUBTZXR0aW5nc0BXZWJDb3JlQEBRQUVYQUJW
QXRvbWljU3RyaW5nQFdURkBAVzRVU2NyaXB0Q29kZUBAQFoKICAgICAgICAgP3NldFN0YW5kYXJk
Rm9udEZhbWlseUBTZXR0aW5nc0BXZWJDb3JlQEBRQUVYQUJWQXRvbWljU3RyaW5nQFdURkBAVzRV
U2NyaXB0Q29kZUBAQFoKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRl
Zgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYJKHJl
dmlzaW9uIDExMzczNikKKysrIFNvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgko
d29ya2luZyBjb3B5KQpAQCAtMjA3LDYgKzIwNyw3IEBAIEVYUE9SVFMKICAgICAgICAgP3NldFJl
c291cmNlc0RhdGFTaXplTGltaXRzRnJvbUludGVybmFsc0BJbnNwZWN0b3JDb250cm9sbGVyQFdl
YkNvcmVAQFFBRVhISEBaCiAgICAgICAgID9zZXRTYW5zU2VyaWZGb250RmFtaWx5QFNldHRpbmdz
QFdlYkNvcmVAQFFBRVhBQlZBdG9taWNTdHJpbmdAV1RGQEBXNFVTY3JpcHRDb2RlQEBAWgogICAg
ICAgICA/c2V0U2Nyb2xsYmFyc1N1cHByZXNzZWRAU2Nyb2xsVmlld0BXZWJDb3JlQEBRQUVYX04w
QFoKKyAgICAgICAgP3NldERlbGVnYXRlc1Njcm9sbGluZ0BTY3JvbGxWaWV3QFdlYkNvcmVAQFFB
RVhfTkBaCiAgICAgICAgID9zZXRTY3JvbGxPZmZzZXRGcm9tSW50ZXJuYWxzQFNjcm9sbGFibGVB
cmVhQFdlYkNvcmVAQFFBRVhBQlZJbnRQb2ludEAyQEBaCiAgICAgICAgID9zZXRTZXJpZkZvbnRG
YW1pbHlAU2V0dGluZ3NAV2ViQ29yZUBAUUFFWEFCVkF0b21pY1N0cmluZ0BXVEZAQFc0VVNjcmlw
dENvZGVAQEBaCiAgICAgICAgID9zZXRTdGFuZGFyZEZvbnRGYW1pbHlAU2V0dGluZ3NAV2ViQ29y
ZUBAUUFFWEFCVkF0b21pY1N0cmluZ0BXVEZAQFc0VVNjcmlwdENvZGVAQEBaCkluZGV4OiBTb3Vy
Y2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9hdXRvdG9v
bHMvc3ltYm9scy5maWx0ZXIJKHJldmlzaW9uIDExMzczNikKKysrIFNvdXJjZS9hdXRvdG9vbHMv
c3ltYm9scy5maWx0ZXIJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw2ICsxMDksNyBAQCBfWk43V2Vi
Q29yZTI0SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uMTdkCiBfWk43V2ViQ29yZTI0SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uMThkaWRDYW5jZWxGcmFtZUltcGxFUE5TXzE5SW5zdHJ1bWVudGluZ0Fn
ZW50c0U7CiBfWk43V2ViQ29yZTE0U2Nyb2xsYWJsZUFyZWEyOHNldFNjcm9sbE9mZnNldEZyb21J
bnRlcm5hbHNFUktOU184SW50UG9pbnRFOwogX1pON1dlYkNvcmUxMFNjcm9sbFZpZXcyM3NldFNj
cm9sbGJhcnNTdXBwcmVzc2VkRWJiOworX1pON1dlYkNvcmUxMFNjcm9sbFZpZXcyMXNldERlbGVn
YXRlc1Njcm9sbGluZ0ViOwogX1pON1dlYkNvcmU4U2V0dGluZ3MxOHNldEZpeGVkRm9udEZhbWls
eUVSS04zV1RGMTJBdG9taWNTdHJpbmdFMTFVU2NyaXB0Q29kZTsKIF9aTjdXZWJDb3JlOFNldHRp
bmdzMThzZXRTZXJpZkZvbnRGYW1pbHlFUktOM1dURjEyQXRvbWljU3RyaW5nRTExVVNjcmlwdENv
ZGU7CiBfWk43V2ViQ29yZThTZXR0aW5nczIwc2V0Q3Vyc2l2ZUZvbnRGYW1pbHlFUktOM1dURjEy
QXRvbWljU3RyaW5nRTExVVNjcmlwdENvZGU7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTM3NDUpCisr
KyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAor
MjAxMi0wNC0xMCAgWmFsYW4gQnVqdGFzICA8emJ1anRhc0BnbWFpbC5jb20+CisKKyAgICAgICAg
W1F0XVtXSzJdIFpvb20gZ2VzdHVyZSB3aXRoIGRvdWJsZSB0YXAgY3Jhc2hlcyBvbiBpZnJhbWUg
d2hlbiBtYWluIGZyYW1lIGhhcyBzY3JvbGwgb2Zmc2V0LgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODM0MjgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRvdWNoYWRqdXN0bWVudC9pZnJhbWUtd2l0aC1t
YWluZnJhbWUtc2Nyb2xsLW9mZnNldC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRv
dWNoYWRqdXN0bWVudC9pZnJhbWUtd2l0aC1tYWluZnJhbWUtc2Nyb2xsLW9mZnNldC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiB0b3VjaGFkanVzdG1lbnQvem9vbS1iYXNpYy5odG1sOgorCiAyMDEy
LTA0LTEwICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAg
QWRkIGZhc3QvZXZlbnRzL2Ryb3AtaGFuZGxlci1zaG91bGQtbm90LXN0b3AtbmF2aWdhdGUuaHRt
bC4KSW5kZXg6IExheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9pZnJhbWUtd2l0aC1tYWluZnJh
bWUtc2Nyb2xsLW9mZnNldC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
dG91Y2hhZGp1c3RtZW50L2lmcmFtZS13aXRoLW1haW5mcmFtZS1zY3JvbGwtb2Zmc2V0LWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9pZnJh
bWUtd2l0aC1tYWluZnJhbWUtc2Nyb2xsLW9mZnNldC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTQgQEAKKworVGVzdCBpZnJhbWUgd2l0aCBtYWluIGZyYW1lIHNjcm9sbCBv
ZmZzZXQgY2FzZSBvZiB0YXAtdG8tem9vbSBtZWNoYW5pY3MuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTIHpvb21hYmxlQXJlYS50b3AgaXMgNjAwCitQQVNTIHpvb21hYmxl
QXJlYS5sZWZ0IGlzIDEwMAorUEFTUyB6b29tYWJsZUFyZWEud2lkdGggaXMgMjAwCitQQVNTIHpv
b21hYmxlQXJlYS5oZWlnaHQgaXMgMTAwCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L2lm
cmFtZS13aXRoLW1haW5mcmFtZS1zY3JvbGwtb2Zmc2V0Lmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L2lmcmFtZS13aXRoLW1haW5mcmFtZS1zY3JvbGwtb2Zm
c2V0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvaWZy
YW1lLXdpdGgtbWFpbmZyYW1lLXNjcm9sbC1vZmZzZXQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw3MiBAQAorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxzdHlsZT4KKyAgICAgICAg
I3Njcm9sbG9mZnNldGNvbnRhaW5lciB7CisgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7
CisgICAgICAgICAgICB0b3A6IDUwMHB4OworICAgICAgICAgICAgaGVpZ2h0OiAxMDAwcHg7Cisg
ICAgICAgIH0KKyAgICAgICAgYm9keSB7CisgICAgICAgICAgICBtYXJnaW46IDBweDsKKyAgICAg
ICAgfQorICAgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3RzKCkiPgor
Cis8ZGl2IGlkPXNjcm9sbG9mZnNldGNvbnRhaW5lcj4KKyAgICA8aWZyYW1lIGZyYW1lYm9yZGVy
PScwcHgnIHNyYz0nZGF0YTp0ZXh0L2h0bWwsCisgICAgICAgIDxodG1sPgorICAgICAgICA8aGVh
ZD4KKyAgICAgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgICAgICAjZGl2MCB7IHBvc2l0aW9u
OiBhYnNvbHV0ZTsgbGVmdDogNTBweDsgdG9wOiA1MHB4OyB3aWR0aDogMzAwcHg7IGhlaWdodDog
MzAwcHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH0KKyAgICAgICAgICAgICAgICAjZGl2MSB7
IHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogNTBweDsgdG9wOiA1MHB4OyB3aWR0aDogMjAwcHg7
IGhlaWdodDogMTAwcHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH0KKyAgICAgICAgICAgIDwv
c3R5bGU+CisgICAgICAgIDwvaGVhZD4KKyAgICAgICAgPGJvZHk+CisgICAgICAgICAgICA8ZGl2
IGlkPWRpdjA+CisgICAgICAgICAgICAgICAgPGRpdiBpZD1kaXYxPjwvZGl2PgorICAgICAgICAg
ICAgPC9kaXY+CisgICAgICAgIDwvYm9keT4KKyAgICAgICAgPC9odG1sPic+CisgICAgPC9pZnJh
bWU+CisgICAgPHAgaWQ9J2Rlc2NyaXB0aW9uJz48L3A+CisgICAgPGRpdiBpZD0nY29uc29sZSc+
PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KKyAgICBmdW5jdGlvbiB0ZXN0Um91bmRUb3VjaCh4
LCB5LCByYWRpdXMpCisgICAgeworICAgICAgICB2YXIgeCA9IHggLSByYWRpdXM7CisgICAgICAg
IHZhciB5ID0geSAtIHJhZGl1czsKKyAgICAgICAgdmFyIHdpZHRoID0gcmFkaXVzICogMjsKKyAg
ICAgICAgdmFyIGhlaWdodCA9IHJhZGl1cyAqIDI7CisgICAgICAgIHZhciB6b29tYWJsZVJlY3Qg
PSBpbnRlcm5hbHMuYmVzdFpvb21hYmxlQXJlYUZvclRvdWNoUG9pbnQoeCwgeSwgd2lkdGgsIGhl
aWdodCwgZG9jdW1lbnQpOworICAgICAgICByZXR1cm4gem9vbWFibGVSZWN0OworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIHRlc3REaXJlY3RUb3VjaGVzKCkKKyAgICB7CisgICAgICAgIHpvb21hYmxl
QXJlYSA9IHRlc3RSb3VuZFRvdWNoKDEwMCwgNjAwLCAxMCk7CisgICAgICAgIHNob3VsZEV2YWx1
YXRlVG8oJ3pvb21hYmxlQXJlYS50b3AnLCA2MDApOworICAgICAgICBzaG91bGRFdmFsdWF0ZVRv
KCd6b29tYWJsZUFyZWEubGVmdCcsIDEwMCk7CisgICAgICAgIHNob3VsZEV2YWx1YXRlVG8oJ3pv
b21hYmxlQXJlYS53aWR0aCcsIDIwMCk7CisgICAgICAgIHNob3VsZEV2YWx1YXRlVG8oJ3pvb21h
YmxlQXJlYS5oZWlnaHQnLCAxMDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1blRlc3RzKCkK
KyAgICB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgd2luZG93
LmludGVybmFscyAmJiBpbnRlcm5hbHMudG91Y2hOb2RlQWRqdXN0ZWRUb0Jlc3RDbGlja2FibGVO
b2RlICYmIGludGVybmFscy5zZXREZWxlZ2F0ZXNTY3JvbGxpbmcpIHsKKyAgICAgICAgICAgIGRl
c2NyaXB0aW9uKCdUZXN0IGlmcmFtZSB3aXRoIG1haW4gZnJhbWUgc2Nyb2xsIG9mZnNldCBjYXNl
IG9mIHRhcC10by16b29tIG1lY2hhbmljcy4nKTsKKyAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxC
eSgwLDUwMCk7CisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0RGVsZWdhdGVzU2Nyb2xsaW5nKHRy
dWUsIGRvY3VtZW50KTsKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
KyAgICAgICAgICAgIHRlc3REaXJlY3RUb3VjaGVzKCk7CisgICAgICAgICAgICBpc1N1Y2Nlc3Nm
dWxseVBhcnNlZCgpOworICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworICAgICAgICB9CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvem9vbS1iYXNpYy5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC96b29tLWJhc2ljLmh0bWwJKHJldmlzaW9u
IDExMzczNikKKysrIExheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC96b29tLWJhc2ljLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTMsOCArMyw3IEBACiAgICAgPHNjcmlwdCBzcmM9Ii4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KICAgICA8c3R5bGU+CiAgICAg
ICAgICNkaXYwIHsgcG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiA1MHB4OyB0b3A6IDUwcHg7IHdp
ZHRoOiAzMDBweDsgaGVpZ2h0OiAzMDBweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgfQotICAg
ICAgICAjZGl2MSB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogNTBweDsgdG9wOiA1MAotcHg7
IHdpZHRoOiAyMDBweDsgaGVpZ2h0OiAxMDBweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgfQor
ICAgICAgICAjZGl2MSB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogNTBweDsgdG9wOiA1MHB4
OyB3aWR0aDogMjAwcHg7IGhlaWdodDogMTAwcHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH0K
ICAgICAgICAgI2RpdjIgeyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDUwcHg7IHRvcDogMTUw
cHg7IHdpZHRoOiAyMDBweDsgaGVpZ2h0OiAxMDBweDsgcGFkZGluZzogMTBweDsgYm94LXNpemlu
ZzogYm9yZGVyLWJveDsgfQogICAgIDwvc3R5bGU+CiA8L2hlYWQ+CkBAIC02OSw0ICs2OCw0IEBA
IHB4OyB3aWR0aDogMjAwcHg7IGhlaWdodDogMTAwcHg7IGJveC1zaXoKICAgICB9CiA8L3Njcmlw
dD4KIDwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L2h0bWw+
Cg==
</data>
<flag name="review"
          id="141609"
          type_id="1"
          status="+"
          setter="kenneth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136859</attachid>
            <date>2012-04-12 02:35:45 -0700</date>
            <delta_ts>2012-04-12 04:12:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>double_tap_crash.patch</filename>
            <type>text/plain</type>
            <size>22558</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxMTM5NTMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMTUwLDYgKzE1MCw3IEBACiBf
X1pON1dlYkNvcmUxMFNoYWRvd1RyZWUyMHJlbW92ZUFsbFNoYWRvd1Jvb3RzRXYKIF9fWk43V2Vi
Q29yZTEwU2Nyb2xsVmlldzE3c2V0VXNlRml4ZWRMYXlvdXRFYgogX19aTjdXZWJDb3JlMTBTY3Jv
bGxWaWV3MThzZXRGaXhlZExheW91dFNpemVFUktOU183SW50U2l6ZUUKK19fWk43V2ViQ29yZTEw
U2Nyb2xsVmlldzIxc2V0RGVsZWdhdGVzU2Nyb2xsaW5nRWIKIF9fWk43V2ViQ29yZTEwU2Nyb2xs
VmlldzIwc2V0Q2FuSGF2ZVNjcm9sbGJhcnNFYgogX19aTjdXZWJDb3JlMTBTY3JvbGxWaWV3MjNz
ZXRTY3JvbGxiYXJzU3VwcHJlc3NlZEViYgogX19aTjdXZWJDb3JlMTBTY3JvbGxWaWV3MjR3aW5k
b3dSZXNpemVyUmVjdENoYW5nZWRFdgpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAkocmV2aXNpb24gMTEzOTUzKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NDcsNyArNjQ3LDE3IEBACiAgICAgcmV0dXJuIHJh
bmdlLT50ZXh0KCk7CiB9CiAKK3ZvaWQgSW50ZXJuYWxzOjpzZXREZWxlZ2F0ZXNTY3JvbGxpbmco
Ym9vbCBlbmFibGVkLCBEb2N1bWVudCogZG9jdW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQorewor
ICAgIC8vIERlbGVnYXRlIHNjcm9sbGluZyBpcyB2YWxpZCBvbmx5IG9uIG1haW5mcmFtZSdzIHZp
ZXcuCisgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPnZpZXcoKSB8fCAhZG9jdW1lbnQt
PnBhZ2UoKSB8fCBkb2N1bWVudC0+cGFnZSgpLT5tYWluRnJhbWUoKSAhPSBkb2N1bWVudC0+ZnJh
bWUoKSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KIAorICAgIGRvY3VtZW50LT52aWV3KCktPnNldERlbGVnYXRlc1Njcm9sbGluZyhl
bmFibGVkKTsKK30KKwogI2lmIEVOQUJMRShUT1VDSF9BREpVU1RNRU5UKQogUGFzc1JlZlB0cjxX
ZWJLaXRQb2ludD4gSW50ZXJuYWxzOjp0b3VjaFBvc2l0aW9uQWRqdXN0ZWRUb0Jlc3RDbGlja2Fi
bGVOb2RlKGxvbmcgeCwgbG9uZyB5LCBsb25nIHdpZHRoLCBsb25nIGhlaWdodCwgRG9jdW1lbnQq
IGRvY3VtZW50LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKQEAgLTY2Miw2ICs2NzIsOSBAQAogICAg
IE5vZGUqIHRhcmdldE5vZGU7CiAgICAgSW50UG9pbnQgYWRqdXN0ZWRQb2ludDsKICAgICBkb2N1
bWVudC0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmJlc3RDbGlja2FibGVOb2RlRm9yVG91Y2hQ
b2ludChwb2ludCwgcmFkaXVzLCBhZGp1c3RlZFBvaW50LCB0YXJnZXROb2RlKTsKKyAgICBpZiAo
dGFyZ2V0Tm9kZSkKKyAgICAgICAgYWRqdXN0ZWRQb2ludCA9IHRhcmdldE5vZGUtPmRvY3VtZW50
KCktPnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhhZGp1c3RlZFBvaW50KTsKKwogICAgIHJldHVy
biBXZWJLaXRQb2ludDo6Y3JlYXRlKGFkanVzdGVkUG9pbnQueCgpLCBhZGp1c3RlZFBvaW50Lnko
KSk7CiB9CiAKQEAgLTY5MSwxMCArNzA0LDEyIEBACiAgICAgSW50U2l6ZSByYWRpdXMod2lkdGgg
LyAyLCBoZWlnaHQgLyAyKTsKICAgICBJbnRQb2ludCBwb2ludCh4ICsgcmFkaXVzLndpZHRoKCks
IHkgKyByYWRpdXMuaGVpZ2h0KCkpOwogCi0KICAgICBOb2RlKiB0YXJnZXROb2RlOwogICAgIElu
dFJlY3Qgem9vbWFibGVBcmVhOwogICAgIGRvY3VtZW50LT5mcmFtZSgpLT5ldmVudEhhbmRsZXIo
KS0+YmVzdFpvb21hYmxlQXJlYUZvclRvdWNoUG9pbnQocG9pbnQsIHJhZGl1cywgem9vbWFibGVB
cmVhLCB0YXJnZXROb2RlKTsKKyAgICBpZiAodGFyZ2V0Tm9kZSkKKyAgICAgICAgem9vbWFibGVB
cmVhID0gdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS0+dmlldygpLT5jb250ZW50c1RvV2luZG93KHpv
b21hYmxlQXJlYSk7CisKICAgICByZXR1cm4gQ2xpZW50UmVjdDo6Y3JlYXRlKHpvb21hYmxlQXJl
YSk7CiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAkocmV2aXNp
b24gMTEzOTUzKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTIwLDYgKzEyMCw3IEBACiAgICAgdW5zaWduZWQgbGVuZ3RoRnJvbVJhbmdl
KEVsZW1lbnQqIHNjb3BlLCBjb25zdCBSYW5nZSosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBTdHJp
bmcgcmFuZ2VBc1RleHQoY29uc3QgUmFuZ2UqLCBFeGNlcHRpb25Db2RlJik7CiAKKyAgICB2b2lk
IHNldERlbGVnYXRlc1Njcm9sbGluZyhib29sIGVuYWJsZWQsIERvY3VtZW50KiwgRXhjZXB0aW9u
Q29kZSYpOwogI2lmIEVOQUJMRShUT1VDSF9BREpVU1RNRU5UKQogICAgIFBhc3NSZWZQdHI8V2Vi
S2l0UG9pbnQ+IHRvdWNoUG9zaXRpb25BZGp1c3RlZFRvQmVzdENsaWNrYWJsZU5vZGUobG9uZyB4
LCBsb25nIHksIGxvbmcgd2lkdGgsIGxvbmcgaGVpZ2h0LCBEb2N1bWVudCosIEV4Y2VwdGlvbkNv
ZGUmKTsKICAgICBOb2RlKiB0b3VjaE5vZGVBZGp1c3RlZFRvQmVzdENsaWNrYWJsZU5vZGUobG9u
ZyB4LCBsb25nIHksIGxvbmcgd2lkdGgsIGxvbmcgaGVpZ2h0LCBEb2N1bWVudCosIEV4Y2VwdGlv
bkNvZGUmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwJKHJldmlzaW9u
IDExMzk1MykKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtOTMsNiArOTMsNyBAQAogICAgICAgICB1bnNpZ25lZCBsb25nIGxlbmd0aEZy
b21SYW5nZShpbiBFbGVtZW50IHNjb3BlLCBpbiBSYW5nZSByYW5nZSkgcmFpc2VzIChET01FeGNl
cHRpb24pOwogICAgICAgICBET01TdHJpbmcgcmFuZ2VBc1RleHQoaW4gUmFuZ2UgcmFuZ2UpIHJh
aXNlcyAoRE9NRXhjZXB0aW9uKTsKIAorICAgICAgICB2b2lkIHNldERlbGVnYXRlc1Njcm9sbGlu
ZyhpbiBib29sZWFuIGVuYWJsZWQsIGluIERvY3VtZW50IGRvY3VtZW50KSByYWlzZXMgKERPTUV4
Y2VwdGlvbik7CiAjaWYgZGVmaW5lZChFTkFCTEVfVE9VQ0hfQURKVVNUTUVOVCkgJiYgRU5BQkxF
X1RPVUNIX0FESlVTVE1FTlQKICAgICAgICAgV2ViS2l0UG9pbnQgdG91Y2hQb3NpdGlvbkFkanVz
dGVkVG9CZXN0Q2xpY2thYmxlTm9kZShpbiBsb25nIHgsIGluIGxvbmcgeSwgaW4gbG9uZyB3aWR0
aCwgaW4gbG9uZyBoZWlnaHQsIGluIERvY3VtZW50IGRvY3VtZW50KSByYWlzZXMgKERPTUV4Y2Vw
dGlvbik7CiAgICAgICAgIE5vZGUgdG91Y2hOb2RlQWRqdXN0ZWRUb0Jlc3RDbGlja2FibGVOb2Rl
KGluIGxvbmcgeCwgaW4gbG9uZyB5LCBpbiBsb25nIHdpZHRoLCBpbiBsb25nIGhlaWdodCwgaW4g
RG9jdW1lbnQgZG9jdW1lbnQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDExMzk1MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDEyLTA0LTEyICBaYWxhbiBCdWp0YXMgIDx6YnVqdGFz
QGdtYWlsLmNvbT4KKworICAgICAgICBbUXRdW1dLMl0gWm9vbSBnZXN0dXJlIHdpdGggZG91Ymxl
IHRhcCBjcmFzaGVzIG9uIGlmcmFtZSB3aGVuIG1haW4gZnJhbWUgaGFzIHNjcm9sbCBvZmZzZXQu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzQyOAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gZGVs
ZWdhdGUgc2Nyb2xsaW5nIGlzIG9uLCB0aGUgZnJhbWUgdmlldyBuZWVkcyB0byBpZ25vcmUgc2Ny
b2xsaW5nIG9mZnNldCB3aGVuIGNvbnZlcnRpbmcKKyAgICAgICAgY29vcmRpbmF0ZXMuIEl0IGlz
IGFscmVhZHkgZG9uZSBhdCBTY3JvbGxWaWV3IGJhc2UgY2xhc3MgYW5kIHRoaXMgcGF0Y2ggY29w
aWVzIHRoZSBsb2dpYyB0byB0aGUKKyAgICAgICAgRnJhbWVWaWV3IHN1YmNsYXNzLgorICAgICAg
ICBBbHNvIG1ha2Ugc3VyZSB0aGF0IFRvdWNoQWRqdXN0bWVudCdzIGZpbmRCZXN0KigpIGZ1bmN0
aW9ucycgcmV0dXJuIHZhbHVlIGFyZSBub3QgaWdub3JlZCBieSB0aGUgY2FsbGVyLgorCisgICAg
ICAgIFRlc3Q6IHRvdWNoYWRqdXN0bWVudC9pZnJhbWUtd2l0aC1tYWluZnJhbWUtc2Nyb2xsLW9m
ZnNldC5odG1sCisKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OmJlc3RDbGlja2FibGVOb2RlRm9yVG91Y2hQb2ludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmJlc3Rab29tYWJsZUFyZWFGb3JUb3VjaFBv
aW50KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAoRXZlbnRIYW5k
bGVyKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVZpZXc6OmNvbnZlcnRGcm9tUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3Ojpjb252ZXJ0VG9SZW5kZXJlcik6CisgICAgICAgICogcGFnZS9HZXN0dXJlVGFwSGlnaGxp
Z2h0ZXIuY3BwOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkludGVybmFsczo6c2V0RGVsZWdhdGVzU2Nyb2xsaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsczo6dG91Y2hQb3NpdGlvbkFkanVzdGVkVG9CZXN0Q2xpY2thYmxlTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmJlc3Rab29tYWJsZUFyZWFGb3JUb3VjaFBv
aW50KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAoSW50ZXJuYWxz
KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIwMTItMDQtMTIgIENoYXJs
ZXMgV2VpICA8Y2hhcmxlcy53ZWlAdG9yY2htb2JpbGUuY29tLmNuPgogCiAgICAgICAgIFtCbGFj
a0JlcnJ5XSBVcHN0cmVhbWluZyBCbGFja0JlcnJ5LXNwZWNpZmljIGNoYW5nZXMgdG8gUGx1Z2lu
VmlldyAtLSByZW1vdmUgdW51c2VkIGZ1bmN0aW9ucwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcAkocmV2aXNpb24gMTEzOTUzKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjQ5LDcgKzMyNDksOCBAQAogICAgIEludFJlY3Qg
cmVjdCA9IHJlbmRlcmVyLT5sb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdChyZW5kZXJlclJl
Y3QpKS5lbmNsb3NpbmdCb3VuZGluZ0JveCgpOwogCiAgICAgLy8gQ29udmVydCBmcm9tIHBhZ2Ug
KCJhYnNvbHV0ZSIpIHRvIEZyYW1lVmlldyBjb29yZGluYXRlcy4KLSAgICByZWN0Lm1vdmVCeSgt
c2Nyb2xsUG9zaXRpb24oKSk7CisgICAgaWYgKCFkZWxlZ2F0ZXNTY3JvbGxpbmcoKSkKKyAgICAg
ICAgcmVjdC5tb3ZlQnkoLXNjcm9sbFBvc2l0aW9uKCkpOwogCiAgICAgcmV0dXJuIHJlY3Q7CiB9
CkBAIC0zMjU5LDcgKzMyNjAsOCBAQAogICAgIEludFJlY3QgcmVjdCA9IHZpZXdSZWN0OwogICAg
IAogICAgIC8vIENvbnZlcnQgZnJvbSBGcmFtZVZpZXcgY29vcmRzIGludG8gcGFnZSAoImFic29s
dXRlIikgY29vcmRpbmF0ZXMuCi0gICAgcmVjdC5tb3ZlQnkoc2Nyb2xsUG9zaXRpb24oKSk7Cisg
ICAgaWYgKCFkZWxlZ2F0ZXNTY3JvbGxpbmcoKSkKKyAgICAgICAgcmVjdC5tb3ZlQnkoc2Nyb2xs
UG9zaXRpb24oKSk7CiAKICAgICAvLyBGSVhNRTogd2UgZG9uJ3QgaGF2ZSBhIHdheSB0byBtYXAg
YW4gYWJzb2x1dGUgcmVjdCBkb3duIHRvIGEgbG9jYWwgcXVhZCwgc28ganVzdAogICAgIC8vIG1v
dmUgdGhlIHJlY3QgZm9yIG5vdy4KQEAgLTMyNzIsMTYgKzMyNzQsMTggQEAKICAgICBJbnRQb2lu
dCBwb2ludCA9IHJvdW5kZWRJbnRQb2ludChyZW5kZXJlci0+bG9jYWxUb0Fic29sdXRlKHJlbmRl
cmVyUG9pbnQsIGZhbHNlLCB0cnVlIC8qIHVzZSB0cmFuc2Zvcm1zICovKSk7CiAKICAgICAvLyBD
b252ZXJ0IGZyb20gcGFnZSAoImFic29sdXRlIikgdG8gRnJhbWVWaWV3IGNvb3JkaW5hdGVzLgot
ICAgIHBvaW50Lm1vdmVCeSgtc2Nyb2xsUG9zaXRpb24oKSk7CisgICAgaWYgKCFkZWxlZ2F0ZXNT
Y3JvbGxpbmcoKSkKKyAgICAgICAgcG9pbnQubW92ZUJ5KC1zY3JvbGxQb3NpdGlvbigpKTsKICAg
ICByZXR1cm4gcG9pbnQ7CiB9CiAKIEludFBvaW50IEZyYW1lVmlldzo6Y29udmVydFRvUmVuZGVy
ZXIoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgSW50UG9pbnQmIHZpZXdQb2lu
dCkgY29uc3QKIHsKICAgICBJbnRQb2ludCBwb2ludCA9IHZpZXdQb2ludDsKLSAgICAKKwogICAg
IC8vIENvbnZlcnQgZnJvbSBGcmFtZVZpZXcgY29vcmRzIGludG8gcGFnZSAoImFic29sdXRlIikg
Y29vcmRpbmF0ZXMuCi0gICAgcG9pbnQgKz0gSW50U2l6ZShzY3JvbGxYKCksIHNjcm9sbFkoKSk7
CisgICAgaWYgKCFkZWxlZ2F0ZXNTY3JvbGxpbmcoKSkKKyAgICAgICAgcG9pbnQgKz0gSW50U2l6
ZShzY3JvbGxYKCksIHNjcm9sbFkoKSk7CiAKICAgICByZXR1cm4gcm91bmRlZEludFBvaW50KHJl
bmRlcmVyLT5hYnNvbHV0ZVRvTG9jYWwocG9pbnQsIGZhbHNlLCB0cnVlIC8qIHVzZSB0cmFuc2Zv
cm1zICovKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgJKHJldmlzaW9u
IDExMzk1MykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE2OCw4ICsxNjgsOCBAQAogI2VuZGlmCiAKICNpZiBFTkFCTEUoVE9VQ0hfQURK
VVNUTUVOVCkKLSAgICB2b2lkIGJlc3RDbGlja2FibGVOb2RlRm9yVG91Y2hQb2ludChjb25zdCBJ
bnRQb2ludCYgdG91Y2hDZW50ZXIsIGNvbnN0IEludFNpemUmIHRvdWNoUmFkaXVzLCBJbnRQb2lu
dCYgdGFyZ2V0UG9pbnQsIE5vZGUqJiB0YXJnZXROb2RlKTsKLSAgICB2b2lkIGJlc3Rab29tYWJs
ZUFyZWFGb3JUb3VjaFBvaW50KGNvbnN0IEludFBvaW50JiB0b3VjaENlbnRlciwgY29uc3QgSW50
U2l6ZSYgdG91Y2hSYWRpdXMsIEludFJlY3QmIHRhcmdldEFyZWEsIE5vZGUqJiB0YXJnZXROb2Rl
KTsKKyAgICBib29sIGJlc3RDbGlja2FibGVOb2RlRm9yVG91Y2hQb2ludChjb25zdCBJbnRQb2lu
dCYgdG91Y2hDZW50ZXIsIGNvbnN0IEludFNpemUmIHRvdWNoUmFkaXVzLCBJbnRQb2ludCYgdGFy
Z2V0UG9pbnQsIE5vZGUqJiB0YXJnZXROb2RlKTsKKyAgICBib29sIGJlc3Rab29tYWJsZUFyZWFG
b3JUb3VjaFBvaW50KGNvbnN0IEludFBvaW50JiB0b3VjaENlbnRlciwgY29uc3QgSW50U2l6ZSYg
dG91Y2hSYWRpdXMsIEludFJlY3QmIHRhcmdldEFyZWEsIE5vZGUqJiB0YXJnZXROb2RlKTsKICNl
bmRpZgogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL0dlc3R1cmVUYXBIaWdobGlnaHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9HZXN0dXJlVGFwSGlnaGxpZ2h0ZXIuY3BwCShyZXZpc2lvbiAxMTM5NTMpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL0dlc3R1cmVUYXBIaWdobGlnaHRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU1LDcgKzU1LDcgQEAKIAogICAgIEZyYW1lKiBtYWluRnJhbWUgPSBjb250YWluaW5n
RnJhbWUtPnBhZ2UoKS0+bWFpbkZyYW1lKCk7CiAKLSAgICBMYXlvdXRQb2ludCBtYWluRnJhbWVQ
b2ludCA9IG1haW5GcmFtZS0+dmlldygpLT5yb290Vmlld1RvQ29udGVudHMoY29udGFpbmluZ0Zy
YW1lLT52aWV3KCktPmNvbnRlbnRzVG9Sb290VmlldyhJbnRQb2ludCgpKSk7CisgICAgTGF5b3V0
UG9pbnQgbWFpbkZyYW1lUG9pbnQgPSBtYWluRnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50
cyhjb250YWluaW5nRnJhbWUtPnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhJbnRQb2ludCgpKSk7
CiAgICAgcmV0dXJuIG1haW5GcmFtZVBvaW50OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuY3BwCShyZXZpc2lvbiAxMTM5NTMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NjgsMjQgKzI0NjgsMjQgQEAK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKFRPVUNIX0FESlVTVE1FTlQpCi12b2lkIEV2ZW50SGFuZGxl
cjo6YmVzdENsaWNrYWJsZU5vZGVGb3JUb3VjaFBvaW50KGNvbnN0IEludFBvaW50JiB0b3VjaENl
bnRlciwgY29uc3QgSW50U2l6ZSYgdG91Y2hSYWRpdXMsIEludFBvaW50JiB0YXJnZXRQb2ludCwg
Tm9kZSomIHRhcmdldE5vZGUpCitib29sIEV2ZW50SGFuZGxlcjo6YmVzdENsaWNrYWJsZU5vZGVG
b3JUb3VjaFBvaW50KGNvbnN0IEludFBvaW50JiB0b3VjaENlbnRlciwgY29uc3QgSW50U2l6ZSYg
dG91Y2hSYWRpdXMsIEludFBvaW50JiB0YXJnZXRQb2ludCwgTm9kZSomIHRhcmdldE5vZGUpCiB7
CiAgICAgSGl0VGVzdFJlcXVlc3Q6OkhpdFRlc3RSZXF1ZXN0VHlwZSBoaXRUeXBlID0gSGl0VGVz
dFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZTsKICAgICBIaXRUZXN0
UmVzdWx0IHJlc3VsdCA9IGhpdFRlc3RSZXN1bHRBdFBvaW50KHRvdWNoQ2VudGVyLCAvKmFsbG93
U2hhZG93Q29udGVudCovIGZhbHNlLCAvKmlnbm9yZUNsaXBwaW5nKi8gZmFsc2UsIERvbnRIaXRU
ZXN0U2Nyb2xsYmFycywgaGl0VHlwZSwgdG91Y2hSYWRpdXMpOwogCiAgICAgSW50UmVjdCB0b3Vj
aFJlY3QgPSByZXN1bHQucmVjdEZvclBvaW50KHRvdWNoQ2VudGVyKTsKICAgICBSZWZQdHI8U3Rh
dGljSGFzaFNldE5vZGVMaXN0PiBub2RlTGlzdCA9IFN0YXRpY0hhc2hTZXROb2RlTGlzdDo6YWRv
cHQocmVzdWx0LnJlY3RCYXNlZFRlc3RSZXN1bHQoKSk7Ci0gICAgZmluZEJlc3RDbGlja2FibGVD
YW5kaWRhdGUodGFyZ2V0Tm9kZSwgdGFyZ2V0UG9pbnQsIHRvdWNoQ2VudGVyLCB0b3VjaFJlY3Qs
ICpub2RlTGlzdC5nZXQoKSk7CisgICAgcmV0dXJuIGZpbmRCZXN0Q2xpY2thYmxlQ2FuZGlkYXRl
KHRhcmdldE5vZGUsIHRhcmdldFBvaW50LCB0b3VjaENlbnRlciwgdG91Y2hSZWN0LCAqbm9kZUxp
c3QuZ2V0KCkpOwogfQogCi12b2lkIEV2ZW50SGFuZGxlcjo6YmVzdFpvb21hYmxlQXJlYUZvclRv
dWNoUG9pbnQoY29uc3QgSW50UG9pbnQmIHRvdWNoQ2VudGVyLCBjb25zdCBJbnRTaXplJiB0b3Vj
aFJhZGl1cywgSW50UmVjdCYgdGFyZ2V0QXJlYSwgTm9kZSomIHRhcmdldE5vZGUpCitib29sIEV2
ZW50SGFuZGxlcjo6YmVzdFpvb21hYmxlQXJlYUZvclRvdWNoUG9pbnQoY29uc3QgSW50UG9pbnQm
IHRvdWNoQ2VudGVyLCBjb25zdCBJbnRTaXplJiB0b3VjaFJhZGl1cywgSW50UmVjdCYgdGFyZ2V0
QXJlYSwgTm9kZSomIHRhcmdldE5vZGUpCiB7CiAgICAgSGl0VGVzdFJlcXVlc3Q6OkhpdFRlc3RS
ZXF1ZXN0VHlwZSBoaXRUeXBlID0gSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJl
cXVlc3Q6OkFjdGl2ZTsKICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGhpdFRlc3RSZXN1bHRB
dFBvaW50KHRvdWNoQ2VudGVyLCAvKmFsbG93U2hhZG93Q29udGVudCovIGZhbHNlLCAvKmlnbm9y
ZUNsaXBwaW5nKi8gZmFsc2UsIERvbnRIaXRUZXN0U2Nyb2xsYmFycywgaGl0VHlwZSwgdG91Y2hS
YWRpdXMpOwogCiAgICAgSW50UmVjdCB0b3VjaFJlY3QgPSByZXN1bHQucmVjdEZvclBvaW50KHRv
dWNoQ2VudGVyKTsKICAgICBSZWZQdHI8U3RhdGljSGFzaFNldE5vZGVMaXN0PiBub2RlTGlzdCA9
IFN0YXRpY0hhc2hTZXROb2RlTGlzdDo6YWRvcHQocmVzdWx0LnJlY3RCYXNlZFRlc3RSZXN1bHQo
KSk7Ci0gICAgZmluZEJlc3Rab29tYWJsZUFyZWEodGFyZ2V0Tm9kZSwgdGFyZ2V0QXJlYSwgdG91
Y2hDZW50ZXIsIHRvdWNoUmVjdCwgKm5vZGVMaXN0LmdldCgpKTsKKyAgICByZXR1cm4gZmluZEJl
c3Rab29tYWJsZUFyZWEodGFyZ2V0Tm9kZSwgdGFyZ2V0QXJlYSwgdG91Y2hDZW50ZXIsIHRvdWNo
UmVjdCwgKm5vZGVMaXN0LmdldCgpKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvYXV0b3Rv
b2xzL3N5bWJvbHMuZmlsdGVyCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9s
cy5maWx0ZXIJKHJldmlzaW9uIDExMzk1MykKKysrIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5m
aWx0ZXIJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw2ICsxMDksNyBAQAogX1pON1dlYkNvcmUyNElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjE4ZGlkQ2FuY2VsRnJhbWVJbXBsRVBOU18xOUluc3RydW1l
bnRpbmdBZ2VudHNFOwogX1pON1dlYkNvcmUxNFNjcm9sbGFibGVBcmVhMjhzZXRTY3JvbGxPZmZz
ZXRGcm9tSW50ZXJuYWxzRVJLTlNfOEludFBvaW50RTsKIF9aTjdXZWJDb3JlMTBTY3JvbGxWaWV3
MjNzZXRTY3JvbGxiYXJzU3VwcHJlc3NlZEViYjsKK19aTjdXZWJDb3JlMTBTY3JvbGxWaWV3MjFz
ZXREZWxlZ2F0ZXNTY3JvbGxpbmdFYjsKIF9aTjdXZWJDb3JlOFNldHRpbmdzMThzZXRGaXhlZEZv
bnRGYW1pbHlFUktOM1dURjEyQXRvbWljU3RyaW5nRTExVVNjcmlwdENvZGU7CiBfWk43V2ViQ29y
ZThTZXR0aW5nczE4c2V0U2VyaWZGb250RmFtaWx5RVJLTjNXVEYxMkF0b21pY1N0cmluZ0UxMVVT
Y3JpcHRDb2RlOwogX1pON1dlYkNvcmU4U2V0dGluZ3MyMHNldEN1cnNpdmVGb250RmFtaWx5RVJL
TjNXVEYxMkF0b21pY1N0cmluZ0UxMVVTY3JpcHRDb2RlOwpJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMTEzOTUzKQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDU2LDE0ICsxNDU2LDE5IEBACiAjaWYgUExBVEZPUk0oUVQpCiB2b2lkIFdlYlBh
Z2U6OmhpZ2hsaWdodFBvdGVudGlhbEFjdGl2YXRpb24oY29uc3QgSW50UG9pbnQmIHBvaW50LCBj
b25zdCBJbnRTaXplJiBhcmVhKQogewotICAgIE5vZGUqIGFjdGl2YXRpb25Ob2RlID0gMDsKLSAg
ICBGcmFtZSogbWFpbmZyYW1lID0gbV9wYWdlLT5tYWluRnJhbWUoKTsKLSAgICBJbnRQb2ludCBh
ZGp1c3RlZFBvaW50OworICAgIGlmIChwb2ludCA9PSBJbnRQb2ludDo6emVybygpKSB7CisgICAg
ICAgIC8vIEFuIGVtcHR5IHBvaW50IGRlYWN0aXZhdGVzIHRoZSBoaWdobGlnaHRpbmcuCisgICAg
ICAgIHRhcEhpZ2hsaWdodENvbnRyb2xsZXIoKS5oaWRlSGlnaGxpZ2h0KCk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgRnJhbWUqIG1haW5mcmFtZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCk7CisgICAg
ICAgIE5vZGUqIGFjdGl2YXRpb25Ob2RlID0gMDsKKyAgICAgICAgTm9kZSogYWRqdXN0ZWROb2Rl
ID0gMDsKKyAgICAgICAgSW50UG9pbnQgYWRqdXN0ZWRQb2ludDsKIAotICAgIGlmIChwb2ludCAh
PSBJbnRQb2ludDo6emVybygpKSB7Ci0gICAgICAgIE5vZGUqIGFkanVzdGVkTm9kZSA9IDA7CiAj
aWYgRU5BQkxFKFRPVUNIX0FESlVTVE1FTlQpCi0gICAgICAgIG1haW5mcmFtZS0+ZXZlbnRIYW5k
bGVyKCktPmJlc3RDbGlja2FibGVOb2RlRm9yVG91Y2hQb2ludChwb2ludCwgSW50U2l6ZShhcmVh
LndpZHRoKCkgLyAyLCBhcmVhLmhlaWdodCgpIC8gMiksIGFkanVzdGVkUG9pbnQsIGFkanVzdGVk
Tm9kZSk7CisgICAgICAgIGlmICghbWFpbmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+YmVzdENsaWNr
YWJsZU5vZGVGb3JUb3VjaFBvaW50KHBvaW50LCBJbnRTaXplKGFyZWEud2lkdGgoKSAvIDIsIGFy
ZWEuaGVpZ2h0KCkgLyAyKSwgYWRqdXN0ZWRQb2ludCwgYWRqdXN0ZWROb2RlKSkKKyAgICAgICAg
ICAgIHJldHVybjsKKwogI2Vsc2UKICAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBtYWlu
ZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChtYWluZnJhbWUtPnZp
ZXcoKS0+d2luZG93VG9Db250ZW50cyhwb2ludCksIC8qYWxsb3dTaGFkb3dDb250ZW50Ki8gZmFs
c2UsIC8qaWdub3JlQ2xpcHBpbmcqLyB0cnVlKTsKICAgICAgICAgYWRqdXN0ZWROb2RlID0gcmVz
dWx0LmlubmVyTm9kZSgpOwpAQCAtMTQ4MSwxMiArMTQ4NiwxMCBAQAogICAgICAgICAgICAgZWxz
ZSBpZiAoYWN0aXZhdGlvbk5vZGUpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
KworICAgICAgICBpZiAoYWN0aXZhdGlvbk5vZGUpCisgICAgICAgICAgICB0YXBIaWdobGlnaHRD
b250cm9sbGVyKCkuaGlnaGxpZ2h0KGFjdGl2YXRpb25Ob2RlKTsKICAgICB9Ci0KLSAgICBpZiAo
YWN0aXZhdGlvbk5vZGUpCi0gICAgICAgIHRhcEhpZ2hsaWdodENvbnRyb2xsZXIoKS5oaWdobGln
aHQoYWN0aXZhdGlvbk5vZGUpOwotICAgIGVsc2UKLSAgICAgICAgdGFwSGlnaGxpZ2h0Q29udHJv
bGxlcigpLmhpZGVIaWdobGlnaHQoKTsKIH0KICNlbmRpZgogCkBAIC0yNTM1LDE3ICsyNTM4LDE3
IEBACiAjaWYgRU5BQkxFKFRPVUNIX0FESlVTVE1FTlQpCiB2b2lkIFdlYlBhZ2U6OmZpbmRab29t
YWJsZUFyZWFGb3JQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIGNvbnN0IFdl
YkNvcmU6OkludFNpemUmIGFyZWEpCiB7Ci0gICAgRnJhbWUqIG1haW5mcmFtZSA9IG1fbWFpbkZy
YW1lLT5jb3JlRnJhbWUoKTsKICAgICBOb2RlKiBub2RlID0gMDsKICAgICBJbnRSZWN0IHpvb21h
YmxlQXJlYTsKLSAgICBtYWluZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5iZXN0Wm9vbWFibGVBcmVh
Rm9yVG91Y2hQb2ludChwb2ludCwgSW50U2l6ZShhcmVhLndpZHRoKCkgLyAyLCBhcmVhLmhlaWdo
dCgpIC8gMiksIHpvb21hYmxlQXJlYSwgbm9kZSk7Ci0KKyAgICBib29sIGZvdW5kQXJlYUZvclRv
dWNoUG9pbnQgPSBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5iZXN0
Wm9vbWFibGVBcmVhRm9yVG91Y2hQb2ludChwb2ludCwgSW50U2l6ZShhcmVhLndpZHRoKCkgLyAy
LCBhcmVhLmhlaWdodCgpIC8gMiksIHpvb21hYmxlQXJlYSwgbm9kZSk7CiAgICAgQVNTRVJUKG5v
ZGUpOwotICAgIGlmIChub2RlLT5kb2N1bWVudCgpICYmIG5vZGUtPmRvY3VtZW50KCktPmZyYW1l
KCkgJiYgbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+dmlldygpKSB7Ci0gICAgICAgIGNvbnN0
IFNjcm9sbFZpZXcqIHZpZXcgPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpLT52aWV3KCk7Ci0g
ICAgICAgIHpvb21hYmxlQXJlYSA9IHZpZXctPmNvbnRlbnRzVG9XaW5kb3coem9vbWFibGVBcmVh
KTsKLSAgICB9CiAKKyAgICBpZiAoIWZvdW5kQXJlYUZvclRvdWNoUG9pbnQpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmIChub2RlLT5kb2N1bWVudCgpICYmIG5vZGUtPmRvY3VtZW50KCktPnZp
ZXcoKSkKKyAgICAgICAgem9vbWFibGVBcmVhID0gbm9kZS0+ZG9jdW1lbnQoKS0+dmlldygpLT5j
b250ZW50c1RvV2luZG93KHpvb21hYmxlQXJlYSk7CisKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRpZEZpbmRab29tYWJsZUFyZWEocG9pbnQsIHpvb21hYmxlQXJlYSkpOwogfQog
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTM5NTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wNC0xMiAgWmFsYW4g
QnVqdGFzICA8emJ1anRhc0BnbWFpbC5jb20+CisKKyAgICAgICAgW1F0XVtXSzJdIFpvb20gZ2Vz
dHVyZSB3aXRoIGRvdWJsZSB0YXAgY3Jhc2hlcyBvbiBpZnJhbWUgd2hlbiBtYWluIGZyYW1lIGhh
cyBzY3JvbGwgb2Zmc2V0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODM0MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBXaGVuIGRlbGVnYXRlIHNjcm9sbGluZyBpcyBvbiwgdGhlIGZyYW1lIHZpZXcgbmVl
ZHMgdG8gaWdub3JlIHNjcm9sbGluZyBvZmZzZXQgd2hlbiBjb252ZXJ0aW5nCisgICAgICAgIGNv
b3JkaW5hdGVzLiBJdCBpcyBhbHJlYWR5IGRvbmUgYXQgU2Nyb2xsVmlldyBiYXNlIGNsYXNzIGFu
ZCB0aGlzIHBhdGNoIGNvcGllcyB0aGUgbG9naWMgdG8gdGhlCisgICAgICAgIEZyYW1lVmlldyBz
dWJjbGFzcy4KKyAgICAgICAgQWxzbyBtYWtlIHN1cmUgdGhhdCBUb3VjaEFkanVzdG1lbnQncyBm
aW5kQmVzdCooKSBmdW5jdGlvbnMnIHJldHVybiB2YWx1ZSBhcmUgbm90IGlnbm9yZWQgYnkgdGhl
IGNhbGxlci4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aGlnaGxpZ2h0UG90ZW50aWFsQWN0aXZhdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmZpbmRab29tYWJsZUFyZWFGb3JQb2ludCk6CisKIDIw
MTItMDQtMTEgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92
ZSBhbiBhdXRvcmVsZWFzZSBwb29sIG1hZGUgcmVkdW5kYW50IGJ5IHIxMTM5MjMuCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCShyZXZpc2lvbiAxMTM5NTMpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYJKHdvcmtpbmcgY29weSkKQEAgLTIwNyw2
ICsyMDcsNyBAQAogICAgICAgICA/c2V0UmVzb3VyY2VzRGF0YVNpemVMaW1pdHNGcm9tSW50ZXJu
YWxzQEluc3BlY3RvckNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFWEhIQFoKICAgICAgICAgP3NldFNh
bnNTZXJpZkZvbnRGYW1pbHlAU2V0dGluZ3NAV2ViQ29yZUBAUUFFWEFCVkF0b21pY1N0cmluZ0BX
VEZAQFc0VVNjcmlwdENvZGVAQEBaCiAgICAgICAgID9zZXRTY3JvbGxiYXJzU3VwcHJlc3NlZEBT
Y3JvbGxWaWV3QFdlYkNvcmVAQFFBRVhfTjBAWgorICAgICAgICA/c2V0RGVsZWdhdGVzU2Nyb2xs
aW5nQFNjcm9sbFZpZXdAV2ViQ29yZUBAUUFFWF9OQFoKICAgICAgICAgP3NldFNjcm9sbE9mZnNl
dEZyb21JbnRlcm5hbHNAU2Nyb2xsYWJsZUFyZWFAV2ViQ29yZUBAUUFFWEFCVkludFBvaW50QDJA
QFoKICAgICAgICAgP3NldFNlcmlmRm9udEZhbWlseUBTZXR0aW5nc0BXZWJDb3JlQEBRQUVYQUJW
QXRvbWljU3RyaW5nQFdURkBAVzRVU2NyaXB0Q29kZUBAQFoKICAgICAgICAgP3NldFN0YW5kYXJk
Rm9udEZhbWlseUBTZXR0aW5nc0BXZWJDb3JlQEBRQUVYQUJWQXRvbWljU3RyaW5nQFdURkBAVzRV
U2NyaXB0Q29kZUBAQFoKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYJKHJldmlzaW9uIDExMzk1
MykKKysrIFNvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgkod29ya2luZyBjb3B5KQpAQCAt
MjE1LDYgKzIxNSw3IEBACiAgICAgICAgID9zZXRSZXNvdXJjZXNEYXRhU2l6ZUxpbWl0c0Zyb21J
bnRlcm5hbHNASW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3JlQEBRQUVYSEhAWgogICAgICAgICA/
c2V0U2Fuc1NlcmlmRm9udEZhbWlseUBTZXR0aW5nc0BXZWJDb3JlQEBRQUVYQUJWQXRvbWljU3Ry
aW5nQFdURkBAVzRVU2NyaXB0Q29kZUBAQFoKICAgICAgICAgP3NldFNjcm9sbGJhcnNTdXBwcmVz
c2VkQFNjcm9sbFZpZXdAV2ViQ29yZUBAUUFFWF9OMEBaCisgICAgICAgID9zZXREZWxlZ2F0ZXNT
Y3JvbGxpbmdAU2Nyb2xsVmlld0BXZWJDb3JlQEBRQUVYX05AWgogICAgICAgICA/c2V0U2Nyb2xs
T2Zmc2V0RnJvbUludGVybmFsc0BTY3JvbGxhYmxlQXJlYUBXZWJDb3JlQEBRQUVYQUJWSW50UG9p
bnRAMkBAWgogICAgICAgICA/c2V0U2VyaWZGb250RmFtaWx5QFNldHRpbmdzQFdlYkNvcmVAQFFB
RVhBQlZBdG9taWNTdHJpbmdAV1RGQEBXNFVTY3JpcHRDb2RlQEBAWgogICAgICAgICA/c2V0U3Rh
bmRhcmRGb250RmFtaWx5QFNldHRpbmdzQFdlYkNvcmVAQFFBRVhBQlZBdG9taWNTdHJpbmdAV1RG
QEBXNFVTY3JpcHRDb2RlQEBAWgpJbmRleDogTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3pv
b20tYmFzaWMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQv
em9vbS1iYXNpYy5odG1sCShyZXZpc2lvbiAxMTM5NTMpCisrKyBMYXlvdXRUZXN0cy90b3VjaGFk
anVzdG1lbnQvem9vbS1iYXNpYy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDggKzMsNyBAQAog
ICAgIDxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHN0eWxlPgogICAgICAgICAjZGl2MCB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsg
bGVmdDogNTBweDsgdG9wOiA1MHB4OyB3aWR0aDogMzAwcHg7IGhlaWdodDogMzAwcHg7IGJveC1z
aXppbmc6IGJvcmRlci1ib3g7IH0KLSAgICAgICAgI2RpdjEgeyBwb3NpdGlvbjogYWJzb2x1dGU7
IGxlZnQ6IDUwcHg7IHRvcDogNTAKLXB4OyB3aWR0aDogMjAwcHg7IGhlaWdodDogMTAwcHg7IGJv
eC1zaXppbmc6IGJvcmRlci1ib3g7IH0KKyAgICAgICAgI2RpdjEgeyBwb3NpdGlvbjogYWJzb2x1
dGU7IGxlZnQ6IDUwcHg7IHRvcDogNTBweDsgd2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDEwMHB4OyBi
b3gtc2l6aW5nOiBib3JkZXItYm94OyB9CiAgICAgICAgICNkaXYyIHsgcG9zaXRpb246IGFic29s
dXRlOyBsZWZ0OiA1MHB4OyB0b3A6IDE1MHB4OyB3aWR0aDogMjAwcHg7IGhlaWdodDogMTAwcHg7
IHBhZGRpbmc6IDEwcHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH0KICAgICA8L3N0eWxlPgog
PC9oZWFkPgpAQCAtNjksNCArNjgsNCBAQAogICAgIH0KIDwvc2NyaXB0PgogPC9ib2R5PgotPC9o
dG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL3RvdWNoYWRqdXN0bWVudC9zY3JvbGwtZGVsZWdhdGlvbi9pZnJhbWUtd2l0aC1tYWluZnJh
bWUtc2Nyb2xsLW9mZnNldC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
dG91Y2hhZGp1c3RtZW50L3Njcm9sbC1kZWxlZ2F0aW9uL2lmcmFtZS13aXRoLW1haW5mcmFtZS1z
Y3JvbGwtb2Zmc2V0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3Rv
dWNoYWRqdXN0bWVudC9zY3JvbGwtZGVsZWdhdGlvbi9pZnJhbWUtd2l0aC1tYWluZnJhbWUtc2Ny
b2xsLW9mZnNldC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAKKwor
VGVzdCBpZnJhbWUgd2l0aCBtYWluIGZyYW1lIHNjcm9sbCBvZmZzZXQgY2FzZSBvZiB0YXAtdG8t
em9vbSBtZWNoYW5pY3MuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHpv
b21hYmxlQXJlYS50b3AgaXMgNjAwCitQQVNTIHpvb21hYmxlQXJlYS5sZWZ0IGlzIDEwMAorUEFT
UyB6b29tYWJsZUFyZWEud2lkdGggaXMgMjAwCitQQVNTIHpvb21hYmxlQXJlYS5oZWlnaHQgaXMg
MTAwCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJ
bmRleDogTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3Njcm9sbC1kZWxlZ2F0aW9uL2lmcmFt
ZS13aXRoLW1haW5mcmFtZS1zY3JvbGwtb2Zmc2V0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvdG91Y2hhZGp1c3RtZW50L3Njcm9sbC1kZWxlZ2F0aW9uL2lmcmFtZS13aXRoLW1haW5m
cmFtZS1zY3JvbGwtb2Zmc2V0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy90b3Vj
aGFkanVzdG1lbnQvc2Nyb2xsLWRlbGVnYXRpb24vaWZyYW1lLXdpdGgtbWFpbmZyYW1lLXNjcm9s
bC1vZmZzZXQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MiBAQAorPGh0bWw+Cis8aGVh
ZD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorICAgIDxzdHlsZT4KKyAgICAgICAgI3Njcm9sbG9mZnNldGNvbnRhaW5l
ciB7CisgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgICAgICB0b3A6IDUw
MHB4OworICAgICAgICAgICAgaGVpZ2h0OiAxMDAwcHg7CisgICAgICAgIH0KKyAgICAgICAgYm9k
eSB7CisgICAgICAgICAgICBtYXJnaW46IDBweDsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+Cis8
L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3RzKCkiPgorCis8ZGl2IGlkPXNjcm9sbG9mZnNl
dGNvbnRhaW5lcj4KKyAgICA8aWZyYW1lIGZyYW1lYm9yZGVyPScwcHgnIHNyYz0nZGF0YTp0ZXh0
L2h0bWwsCisgICAgICAgIDxodG1sPgorICAgICAgICA8aGVhZD4KKyAgICAgICAgICAgIDxzdHls
ZT4KKyAgICAgICAgICAgICAgICAjZGl2MCB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogNTBw
eDsgdG9wOiA1MHB4OyB3aWR0aDogMzAwcHg7IGhlaWdodDogMzAwcHg7IGJveC1zaXppbmc6IGJv
cmRlci1ib3g7IH0KKyAgICAgICAgICAgICAgICAjZGl2MSB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsg
bGVmdDogNTBweDsgdG9wOiA1MHB4OyB3aWR0aDogMjAwcHg7IGhlaWdodDogMTAwcHg7IGJveC1z
aXppbmc6IGJvcmRlci1ib3g7IH0KKyAgICAgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDwvaGVh
ZD4KKyAgICAgICAgPGJvZHk+CisgICAgICAgICAgICA8ZGl2IGlkPWRpdjA+CisgICAgICAgICAg
ICAgICAgPGRpdiBpZD1kaXYxPjwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwv
Ym9keT4KKyAgICAgICAgPC9odG1sPic+CisgICAgPC9pZnJhbWU+CisgICAgPHAgaWQ9J2Rlc2Ny
aXB0aW9uJz48L3A+CisgICAgPGRpdiBpZD0nY29uc29sZSc+PC9kaXY+Cis8L2Rpdj4KKworPHNj
cmlwdD4KKyAgICBmdW5jdGlvbiB0ZXN0Um91bmRUb3VjaCh4LCB5LCByYWRpdXMpCisgICAgewor
ICAgICAgICB2YXIgeCA9IHggLSByYWRpdXM7CisgICAgICAgIHZhciB5ID0geSAtIHJhZGl1czsK
KyAgICAgICAgdmFyIHdpZHRoID0gcmFkaXVzICogMjsKKyAgICAgICAgdmFyIGhlaWdodCA9IHJh
ZGl1cyAqIDI7CisgICAgICAgIHZhciB6b29tYWJsZVJlY3QgPSBpbnRlcm5hbHMuYmVzdFpvb21h
YmxlQXJlYUZvclRvdWNoUG9pbnQoeCwgeSwgd2lkdGgsIGhlaWdodCwgZG9jdW1lbnQpOworICAg
ICAgICByZXR1cm4gem9vbWFibGVSZWN0OworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3REaXJl
Y3RUb3VjaGVzKCkKKyAgICB7CisgICAgICAgIHpvb21hYmxlQXJlYSA9IHRlc3RSb3VuZFRvdWNo
KDEwMCwgNjAwLCAxMCk7CisgICAgICAgIHNob3VsZEV2YWx1YXRlVG8oJ3pvb21hYmxlQXJlYS50
b3AnLCA2MDApOworICAgICAgICBzaG91bGRFdmFsdWF0ZVRvKCd6b29tYWJsZUFyZWEubGVmdCcs
IDEwMCk7CisgICAgICAgIHNob3VsZEV2YWx1YXRlVG8oJ3pvb21hYmxlQXJlYS53aWR0aCcsIDIw
MCk7CisgICAgICAgIHNob3VsZEV2YWx1YXRlVG8oJ3pvb21hYmxlQXJlYS5oZWlnaHQnLCAxMDAp
OworICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1blRlc3RzKCkKKyAgICB7CisgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgd2luZG93LmludGVybmFscyAmJiBpbnRlcm5h
bHMudG91Y2hOb2RlQWRqdXN0ZWRUb0Jlc3RDbGlja2FibGVOb2RlICYmIGludGVybmFscy5zZXRE
ZWxlZ2F0ZXNTY3JvbGxpbmcpIHsKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uKCdUZXN0IGlmcmFt
ZSB3aXRoIG1haW4gZnJhbWUgc2Nyb2xsIG9mZnNldCBjYXNlIG9mIHRhcC10by16b29tIG1lY2hh
bmljcy4nKTsKKyAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxCeSgwLDUwMCk7CisgICAgICAgICAg
ICBpbnRlcm5hbHMuc2V0RGVsZWdhdGVzU2Nyb2xsaW5nKHRydWUsIGRvY3VtZW50KTsKKyAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAgIHRlc3REaXJl
Y3RUb3VjaGVzKCk7CisgICAgICAgICAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOworICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9CisgICAg
fQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTM5NTMp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBA
QAorMjAxMi0wNC0xMiAgWmFsYW4gQnVqdGFzICA8emJ1anRhc0BnbWFpbC5jb20+CisKKyAgICAg
ICAgW1F0XVtXSzJdIFpvb20gZ2VzdHVyZSB3aXRoIGRvdWJsZSB0YXAgY3Jhc2hlcyBvbiBpZnJh
bWUgd2hlbiBtYWluIGZyYW1lIGhhcyBzY3JvbGwgb2Zmc2V0LgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODM0MjgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRvdWNoYWRqdXN0bWVudC9zY3JvbGwtZGVs
ZWdhdGlvbi9pZnJhbWUtd2l0aC1tYWluZnJhbWUtc2Nyb2xsLW9mZnNldC1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHRvdWNoYWRqdXN0bWVudC9zY3JvbGwtZGVsZWdhdGlvbi9pZnJh
bWUtd2l0aC1tYWluZnJhbWUtc2Nyb2xsLW9mZnNldC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0
b3VjaGFkanVzdG1lbnQvem9vbS1iYXNpYy5odG1sOgorCiAyMDEyLTA0LTEyICBLcmlzdMOzZiBL
b3N6dHnDsyAgPGtrcmlzdG9mQGluZi51LXN6ZWdlZC5odT4KIAogICAgICAgICBbUXRdIFVucmV2
ZWl3ZWQgZ2FyZGVuaW5nLiBTa2lwIHRoZSBmYWlsaW5nIHJlZnRlc3QuCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>