<?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>89250</bug_id>
          
          <creation_ts>2012-06-15 15:15:19 -0700</creation_ts>
          <short_desc>[chromium] Make sure events are transformed correctly for plugins.</short_desc>
          <delta_ts>2013-04-11 12:09:40 -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>UI Events</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>lazyboy</reporter>
          <assigned_to name="Sadrul Habib Chowdhury">sadrul</assigned_to>
          <cc>abarth</cc>
    
    <cc>brettw</cc>
    
    <cc>fishd</cc>
    
    <cc>fsamuel</cc>
    
    <cc>rniwa</cc>
    
    <cc>sadrul</cc>
    
    <cc>schenney</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>650559</commentid>
    <comment_count>0</comment_count>
    <who name="">lazyboy</who>
    <bug_when>2012-06-15 15:15:19 -0700</bug_when>
    <thetext>[chromium] Browser Plugin/Pepper: Make mouse events to transform properly in WebPluginContainer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650567</commentid>
    <comment_count>1</comment_count>
      <attachid>147912</attachid>
    <who name="">lazyboy</who>
    <bug_when>2012-06-15 15:19:41 -0700</bug_when>
    <thetext>Created attachment 147912
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650593</commentid>
    <comment_count>2</comment_count>
      <attachid>147912</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-06-15 15:54:32 -0700</bug_when>
    <thetext>Comment on attachment 147912
Patch

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

&gt; Source/WebKit/chromium/src/WebInputEventConversion.cpp:355
&gt; +WebMouseEventBuilder::WebMouseEventBuilder(const Widget* widget, const RenderObject* renderer, const MouseEvent&amp; event)

I suspect that using a RenderObject here is a layering violation and you need to do something different.

&gt; Source/WebKit/chromium/src/WebPluginContainerImpl.cpp:598
&gt; +    WebMouseEventBuilder webEvent(this, m_element-&gt;renderer(), *event);

As I understand how things work, the events should be transformed appropriately by the time they arrive in this object -- so you should look into why this code is not receiving appropriately transformed events.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651653</commentid>
    <comment_count>3</comment_count>
      <attachid>147912</attachid>
    <who name="">lazyboy</who>
    <bug_when>2012-06-18 13:20:11 -0700</bug_when>
    <thetext>Comment on attachment 147912
Patch

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

&gt;&gt; Source/WebKit/chromium/src/WebInputEventConversion.cpp:355
&gt;&gt; +WebMouseEventBuilder::WebMouseEventBuilder(const Widget* widget, const RenderObject* renderer, const MouseEvent&amp; event)
&gt; 
&gt; I suspect that using a RenderObject here is a layering violation and you need to do something different.

I tried avoiding renderer(), but couldn&apos;t since seems like only it has the transformation info (I tried calling other mapping function in element/widget {similar to absoluteToLocal one below}).
I&apos;m also not sure RenderObject would be always nonNULL at the point when event arrives?

&gt;&gt; Source/WebKit/chromium/src/WebPluginContainerImpl.cpp:598
&gt;&gt; +    WebMouseEventBuilder webEvent(this, m_element-&gt;renderer(), *event);
&gt; 
&gt; As I understand how things work, the events should be transformed appropriately by the time they arrive in this object -- so you should look into why this code is not receiving appropriately transformed events.

This event handler gets called from WebCore, (HTMLPluginElement.defaultEventHandler), do you think it should be already transformed at that point?
I&apos;m currently looking into HTMLIFrameElement&apos;s event handling code path and trying figure out where in the chain the events gets transformed, do you think HTMLPluginElement should follow the same pattern for transforming events?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689975</commentid>
    <comment_count>4</comment_count>
      <attachid>147912</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-08-07 23:42:34 -0700</bug_when>
    <thetext>Comment on attachment 147912
Patch

We need a change log here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735691</commentid>
    <comment_count>5</comment_count>
      <attachid>167335</attachid>
    <who name="Sadrul Habib Chowdhury">sadrul</who>
    <bug_when>2012-10-05 09:19:49 -0700</bug_when>
    <thetext>Created attachment 167335
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735695</commentid>
    <comment_count>6</comment_count>
    <who name="Sadrul Habib Chowdhury">sadrul</who>
    <bug_when>2012-10-05 09:22:28 -0700</bug_when>
    <thetext>I have updated the original patch from lazyboy@ to also properly transform touch and gesture events, done some refactoring, and added a test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735963</commentid>
    <comment_count>7</comment_count>
      <attachid>167335</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-10-05 14:32:34 -0700</bug_when>
    <thetext>Comment on attachment 167335
Patch

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

&gt; Source/WebKit/chromium/src/WebInputEventConversion.cpp:412
&gt; +    IntPoint p = view-&gt;contentsToWindow(
&gt; +        IntPoint(event.absoluteLocation().x(), event.absoluteLocation().y()));

Nit: This fits in one line. Also, please don&apos;t use one-letter variable name like p.

&gt; LayoutTests/platform/chromium/plugins/transformed-events-expected.txt:8
&gt; +* 10, 10: Pressed
&gt; +* 10, 10: Pressed
&gt; +* 10, 10: Pressed
&gt; +Plugin received event: TouchMove
&gt; +* 20, 15: Moved
&gt; +* 20, 15: Moved
&gt; +* 20, 15: Moved

It&apos;s not obvious at all that these outputs are correct.
Please include js-test-pre.js and use shouldBe(), etc...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735969</commentid>
    <comment_count>8</comment_count>
      <attachid>167383</attachid>
    <who name="Sadrul Habib Chowdhury">sadrul</who>
    <bug_when>2012-10-05 14:39:09 -0700</bug_when>
    <thetext>Created attachment 167383
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735972</commentid>
    <comment_count>9</comment_count>
      <attachid>167335</attachid>
    <who name="Sadrul Habib Chowdhury">sadrul</who>
    <bug_when>2012-10-05 14:39:55 -0700</bug_when>
    <thetext>Comment on attachment 167335
Patch

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

&gt;&gt; Source/WebKit/chromium/src/WebInputEventConversion.cpp:412
&gt;&gt; +        IntPoint(event.absoluteLocation().x(), event.absoluteLocation().y()));
&gt; 
&gt; Nit: This fits in one line. Also, please don&apos;t use one-letter variable name like p.

Fixed.

&gt;&gt; LayoutTests/platform/chromium/plugins/transformed-events-expected.txt:8
&gt;&gt; +* 20, 15: Moved
&gt; 
&gt; It&apos;s not obvious at all that these outputs are correct.
&gt; Please include js-test-pre.js and use shouldBe(), etc...

This output comes form the plugin&apos;s printf statements, and from what I can see, those unfortunately cannot be tested from the JS (the other plugin related event-tests also do not use shouldBe)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736020</commentid>
    <comment_count>10</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-10-05 15:12:16 -0700</bug_when>
    <thetext>I think our use of TestWebPlugin when not testing the WebPlugin API is suboptimal.  The test doesn&apos;t seem specific to Chromium-- it could also run in Safari or other WebKit browsers.

Instead of using WebPlugin, would we be able to extend the NPAPI plugin in Tools/DumpRenderTree/TestNetscapePlugIn?  This would also make it possible to run these tests in Chromium or content_shell (which we&apos;ll want to do eventually anyway).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736043</commentid>
    <comment_count>11</comment_count>
    <who name="Sadrul Habib Chowdhury">sadrul</who>
    <bug_when>2012-10-05 15:36:47 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; I think our use of TestWebPlugin when not testing the WebPlugin API is suboptimal.  The test doesn&apos;t seem specific to Chromium-- it could also run in Safari or other WebKit browsers.
&gt; 
&gt; Instead of using WebPlugin, would we be able to extend the NPAPI plugin in Tools/DumpRenderTree/TestNetscapePlugIn?  This would also make it possible to run these tests in Chromium or content_shell (which we&apos;ll want to do eventually anyway).

I think it&apos;d be nice to move a number of the plugin event tests into a general non chromium place, and I can start looking into it. Would it be acceptable to do that in a separate subsequent patch, though?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736091</commentid>
    <comment_count>12</comment_count>
      <attachid>167383</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-10-05 16:37:29 -0700</bug_when>
    <thetext>Comment on attachment 167383
Patch

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

(In reply to comment #11)
&gt; I think it&apos;d be nice to move a number of the plugin event tests into a general non chromium place, and I can start looking into it. Would it be acceptable to do that in a separate subsequent patch, though?

Sure, although the code for the NPAPI plugin is already there (well, it doesn&apos;t know about touch events and will probably just report them as mouse move events, but that doesn&apos;t seem like a big deal).

&gt; Source/WebKit/chromium/ChangeLog:11
&gt; +        space of the page containing the plugin. Before the events are
&gt; +        dispatched to the plugin, it is necessary to convert them into the
&gt; +        plugin&apos;s own coordinate system.

The bug is only for touch events and gesture events, right?  You&apos;re just refactoring the code already used by mousemove and scroll wheel events, right?

&gt; Source/WebKit/chromium/src/WebInputEventConversion.cpp:42
&gt; +#include &quot;RenderObject.h&quot;

This is OK because it&apos;s not exposed to the public API.  There are other files in Source/WebKit/chromium/src that use RenderObject.

&gt; Source/WebKit/chromium/src/WebInputEventConversion.cpp:405
&gt; +static void updateWebMouseEventFromWebCoreMouseEvent(WebMouseEvent* webEvent, const MouseEvent&amp; event, const Widget* widget, const WebCore::RenderObject* renderObject)

Normally out params come last.  WebKit style also normally uses pass by reference for out params.  Actually, why don&apos;t you just make this a protected member function so you don&apos;t have to pass |webEvent|?

&gt; Source/WebKit/chromium/src/WebInputEventConversion.h:102
&gt; +// Converts a WebCore::MouseEvent to a corresponding WebMouseEvent. widget and
&gt; +// renderObject are the Widget and RenderObject corresponding to the event.

I would just remove the second sentence.  It doesn&apos;t tell you anything that the code doesn&apos;t already tell you.

&gt; LayoutTests/platform/chromium/plugins/transformed-events-expected.txt:4
&gt; +* 10, 10: Pressed
&gt; +* 10, 10: Pressed
&gt; +* 10, 10: Pressed

Why does it print the point 3 times?

&gt; LayoutTests/platform/chromium/plugins/transformed-events-expected.txt:8
&gt; +* 20, 15: Moved
&gt; +* 20, 15: Moved
&gt; +* 20, 15: Moved

Why does it print the point 3 times?

&gt; LayoutTests/platform/chromium/plugins/transformed-events.html:17
&gt; +        document.write(&quot;This test does not work in manual mode.&quot;);

I&apos;m not sure what manual mode is.  I would say, &quot;This test requires DumpRenderTree.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736112</commentid>
    <comment_count>13</comment_count>
      <attachid>167383</attachid>
    <who name="Sadrul Habib Chowdhury">sadrul</who>
    <bug_when>2012-10-05 17:21:21 -0700</bug_when>
    <thetext>Comment on attachment 167383
Patch

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

&gt;&gt; Source/WebKit/chromium/ChangeLog:11
&gt;&gt; +        plugin&apos;s own coordinate system.
&gt; 
&gt; The bug is only for touch events and gesture events, right?  You&apos;re just refactoring the code already used by mousemove and scroll wheel events, right?

No. The fix is also for mouse and wheel events.

&gt;&gt; Source/WebKit/chromium/src/WebInputEventConversion.cpp:405
&gt;&gt; +static void updateWebMouseEventFromWebCoreMouseEvent(WebMouseEvent* webEvent, const MouseEvent&amp; event, const Widget* widget, const WebCore::RenderObject* renderObject)
&gt; 
&gt; Normally out params come last.  WebKit style also normally uses pass by reference for out params.  Actually, why don&apos;t you just make this a protected member function so you don&apos;t have to pass |webEvent|?

This is currently called from WebMouseEventBuilder, and WebMouseWheelEventBuilder (one is not a subclass of the other). So it would have to be added to both, and we would end up with code duplication again.

So I have kept this here, but I have updated to pass by reference, and move the out param last.

&gt; Source/WebKit/chromium/src/WebInputEventConversion.cpp:416
&gt; +    IntPoint localPoint = convertLocationForRenderObject(event.absoluteLocation(), renderObject);

This is the fix for mouse and wheel events.

&gt;&gt; Source/WebKit/chromium/src/WebInputEventConversion.h:102
&gt;&gt; +// renderObject are the Widget and RenderObject corresponding to the event.
&gt; 
&gt; I would just remove the second sentence.  It doesn&apos;t tell you anything that the code doesn&apos;t already tell you.

Done.

&gt;&gt; LayoutTests/platform/chromium/plugins/transformed-events-expected.txt:4
&gt;&gt; +* 10, 10: Pressed
&gt; 
&gt; Why does it print the point 3 times?

The touch-event details printout is a bit ... awkward. Each touch-event maintains three lists of touch-points (&apos;active&apos;, &apos;changed&apos; and &apos;target&apos;). The details prints out the details about each finger in each list. In this case, all three lists contain a single touch-point. So it prints it out three times.

&gt;&gt; LayoutTests/platform/chromium/plugins/transformed-events-expected.txt:8
&gt;&gt; +* 20, 15: Moved
&gt; 
&gt; Why does it print the point 3 times?

Ditto.

&gt;&gt; LayoutTests/platform/chromium/plugins/transformed-events.html:17
&gt;&gt; +        document.write(&quot;This test does not work in manual mode.&quot;);
&gt; 
&gt; I&apos;m not sure what manual mode is.  I would say, &quot;This test requires DumpRenderTree.&quot;

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736114</commentid>
    <comment_count>14</comment_count>
      <attachid>167421</attachid>
    <who name="Sadrul Habib Chowdhury">sadrul</who>
    <bug_when>2012-10-05 17:22:08 -0700</bug_when>
    <thetext>Created attachment 167421
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736748</commentid>
    <comment_count>15</comment_count>
      <attachid>167421</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-10-08 09:57:12 -0700</bug_when>
    <thetext>Comment on attachment 167421
Patch

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

&gt; Source/WebKit/chromium/src/WebInputEventConversion.cpp:405
&gt; +static void updateWebMouseEventFromWebCoreMouseEvent(const MouseEvent&amp; event, const Widget&amp; widget, const WebCore::RenderObject&amp; renderObject, WebMouseEvent&amp; webEvent)

Nit: I would have kept Widget and RenderObject as pointers, but this is OK.

&gt; LayoutTests/platform/chromium/plugins/transformed-events.html:40
&gt; +        // Test gesture events.
&gt; +        eventSender.gestureTapDown(positionX, positionY);
&gt; +        eventSender.gestureTap(positionX, positionY);

Can you add tests for scroll events too?  You said they&apos;re also not translating the points properly?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736749</commentid>
    <comment_count>16</comment_count>
      <attachid>167421</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-10-08 09:58:14 -0700</bug_when>
    <thetext>Comment on attachment 167421
Patch

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

&gt; LayoutTests/platform/chromium/plugins/transformed-events-expected.txt:4
&gt; +* 10, 10: Pressed
&gt; +* 10, 10: Pressed
&gt; +* 10, 10: Pressed

You could explain why there are three outputs perhaps in the ChangeLog or in the html file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737246</commentid>
    <comment_count>17</comment_count>
      <attachid>167421</attachid>
    <who name="Sadrul Habib Chowdhury">sadrul</who>
    <bug_when>2012-10-08 17:10:07 -0700</bug_when>
    <thetext>Comment on attachment 167421
Patch

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

&gt;&gt; LayoutTests/platform/chromium/plugins/transformed-events-expected.txt:4
&gt;&gt; +* 10, 10: Pressed
&gt; 
&gt; You could explain why there are three outputs perhaps in the ChangeLog or in the html file.

Fixed (explained in ChangeLog)

&gt;&gt; LayoutTests/platform/chromium/plugins/transformed-events.html:40
&gt;&gt; +        eventSender.gestureTap(positionX, positionY);
&gt; 
&gt; Can you add tests for scroll events too?  You said they&apos;re also not translating the points properly?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737247</commentid>
    <comment_count>18</comment_count>
      <attachid>167652</attachid>
    <who name="Sadrul Habib Chowdhury">sadrul</who>
    <bug_when>2012-10-08 17:11:26 -0700</bug_when>
    <thetext>Created attachment 167652
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737789</commentid>
    <comment_count>19</comment_count>
      <attachid>167652</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-09 08:13:25 -0700</bug_when>
    <thetext>Comment on attachment 167652
Patch for landing

Clearing flags on attachment: 167652

Committed r130765: &lt;http://trac.webkit.org/changeset/130765&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147912</attachid>
            <date>2012-06-15 15:19:41 -0700</date>
            <delta_ts>2012-10-05 09:19:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89250-20120615181940.patch</filename>
            <type>text/plain</type>
            <size>3085</size>
            <attacher>lazyboy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5ODMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5jcHAKaW5kZXggMjA3ZDgxY2EzODRk
MzZjODNhNGQxMDFlNDcwZGE5ZTA5MjIyMzRkOC4uMjdlZGRmM2MyNjY2OTU2NmYzOWEyZDE3YmE1
ZDM1ZjRiOTU4N2ZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SW5wdXRFdmVudENvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcApAQCAtMzUyLDcgKzM1Miw3IEBAIHN0YXRpYyBp
bnQgZ2V0V2ViSW5wdXRNb2RpZmllcnMoY29uc3QgVUlFdmVudFdpdGhLZXlTdGF0ZSYgZXZlbnQp
CiAgICAgcmV0dXJuIG1vZGlmaWVyczsKIH0KIAotV2ViTW91c2VFdmVudEJ1aWxkZXI6OldlYk1v
dXNlRXZlbnRCdWlsZGVyKGNvbnN0IFdpZGdldCogd2lkZ2V0LCBjb25zdCBNb3VzZUV2ZW50JiBl
dmVudCkKK1dlYk1vdXNlRXZlbnRCdWlsZGVyOjpXZWJNb3VzZUV2ZW50QnVpbGRlcihjb25zdCBX
aWRnZXQqIHdpZGdldCwgY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgTW91c2VF
dmVudCYgZXZlbnQpCiB7CiAgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91
c2Vtb3ZlRXZlbnQpCiAgICAgICAgIHR5cGUgPSBXZWJJbnB1dEV2ZW50OjpNb3VzZU1vdmU7CkBA
IC00MDEsOCArNDAxLDkgQEAgV2ViTW91c2VFdmVudEJ1aWxkZXI6OldlYk1vdXNlRXZlbnRCdWls
ZGVyKGNvbnN0IFdpZGdldCogd2lkZ2V0LCBjb25zdCBNb3VzZUV2ZW4KICAgICBnbG9iYWxZID0g
ZXZlbnQuc2NyZWVuWSgpOwogICAgIHdpbmRvd1ggPSBwLngoKTsKICAgICB3aW5kb3dZID0gcC55
KCk7Ci0gICAgeCA9IGV2ZW50LmFic29sdXRlTG9jYXRpb24oKS54KCkgLSB3aWRnZXQtPmxvY2F0
aW9uKCkueCgpOwotICAgIHkgPSBldmVudC5hYnNvbHV0ZUxvY2F0aW9uKCkueSgpIC0gd2lkZ2V0
LT5sb2NhdGlvbigpLnkoKTsKKyAgICBJbnRQb2ludCB0cmFuc2Zvcm1lZFBvaW50ID0gcm91bmRl
ZEludFBvaW50KHJlbmRlcmVyLT5hYnNvbHV0ZVRvTG9jYWwoZXZlbnQuYWJzb2x1dGVMb2NhdGlv
bigpLCBmYWxzZSAvKiBmaXhlZCAqLywgdHJ1ZSAvKiB1c2UgdHJhbnNmb3JtcyAqLykpOworICAg
IHggPSB0cmFuc2Zvcm1lZFBvaW50LngoKTsKKyAgICB5ID0gdHJhbnNmb3JtZWRQb2ludC55KCk7
CiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICBtb3ZlbWVudFggPSBldmVudC53ZWJraXRN
b3ZlbWVudFgoKTsKICAgICBtb3ZlbWVudFkgPSBldmVudC53ZWJraXRNb3ZlbWVudFkoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJz
aW9uLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lv
bi5oCmluZGV4IGQ0N2JkYTgxNDkyZjFiMDE5MTk2ZWQ2Mzk4YjU3YTY5OWY4NDAzMTAuLjQ1NDli
ZDhiNGNhNzIzNWY1YjEzYmY1MWJmYjg5NjMzMTk4ZGU4NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uaApAQCAtMzYsNiAr
MzYsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtVG91Y2hFdmVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgorI2luY2x1
ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIldlYklucHV0RXZlbnQuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtMTAzLDcgKzEwNCw3IEBAIHB1YmxpYzoKIC8vIGJlIHNldCB0byBV
bmRlZmluZWQuCiBjbGFzcyBXZWJNb3VzZUV2ZW50QnVpbGRlciA6IHB1YmxpYyBXZWJNb3VzZUV2
ZW50IHsKIHB1YmxpYzoKLSAgICBXZWJNb3VzZUV2ZW50QnVpbGRlcihjb25zdCBXZWJDb3JlOjpX
aWRnZXQqLCBjb25zdCBXZWJDb3JlOjpNb3VzZUV2ZW50Jik7CisgICAgV2ViTW91c2VFdmVudEJ1
aWxkZXIoY29uc3QgV2ViQ29yZTo6V2lkZ2V0KiwgY29uc3QgV2ViQ29yZTo6UmVuZGVyT2JqZWN0
KiwgY29uc3QgV2ViQ29yZTo6TW91c2VFdmVudCYpOwogfTsKIAogLy8gQ29udmVydHMgYSBXZWJD
b3JlOjpXaGVlbEV2ZW50IHRvIGEgY29ycmVzcG9uZGluZyBXZWJNb3VzZVdoZWVsRXZlbnQuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lcklt
cGwuY3BwCmluZGV4IGUxMGUwYWU4MTNkN2FjODk3ODEwZGJjODAxOTQ2MzE0N2FhYjQyZGUuLjE2
MzRlZTQ0N2E5N2MzYzhkNjRiYTMwNmEyOThjMWZjNGMwN2UyYmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwCkBAIC01
OTUsNyArNTk1LDcgQEAgdm9pZCBXZWJQbHVnaW5Db250YWluZXJJbXBsOjpoYW5kbGVNb3VzZUV2
ZW50KE1vdXNlRXZlbnQqIGV2ZW50KQogICAgIC8vIGluIHRoZSBjYWxsIHRvIEhhbmRsZUV2ZW50
LiBTZWUgaHR0cDovL2IvaXNzdWU/aWQ9MTM2Mjk0OAogICAgIEZyYW1lVmlldyogcGFyZW50Vmll
dyA9IHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KHBhcmVudCgpKTsKIAotICAgIFdlYk1vdXNlRXZl
bnRCdWlsZGVyIHdlYkV2ZW50KHRoaXMsICpldmVudCk7CisgICAgV2ViTW91c2VFdmVudEJ1aWxk
ZXIgd2ViRXZlbnQodGhpcywgbV9lbGVtZW50LT5yZW5kZXJlcigpLCAqZXZlbnQpOwogICAgIGlm
ICh3ZWJFdmVudC50eXBlID09IFdlYklucHV0RXZlbnQ6OlVuZGVmaW5lZCkKICAgICAgICAgcmV0
dXJuOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167335</attachid>
            <date>2012-10-05 09:19:49 -0700</date>
            <delta_ts>2012-10-05 14:39:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89250-20121005121857.patch</filename>
            <type>text/plain</type>
            <size>19758</size>
            <attacher name="Sadrul Habib Chowdhury">sadrul</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNDUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDAxNTZiYWM2ZjIxODBmYmM4MjZhNTgwNTE0ODY5ODRlOWI3MDA2ZjQuLjU1M2U0MThjM2YwZDNl
NzkxOGQ0MmU4Zjk2ZTcyYTMwYmYwYTc0YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzUgQEAKKzIwMTItMTAtMDUgIFNhZHJ1bCBIYWJpYiBDaG93ZGh1cnkgIDxzYWRy
dWxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gTWFrZSBzdXJlIGV2ZW50cyBh
cmUgdHJhbnNmb3JtZWQgY29ycmVjdGx5IGZvciBwbHVnaW5zLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODkyNTAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgZXZlbnRzIGFycml2aW5nIGluIFdlYlBs
dWdpbkNvbnRhaW5lckltcGwgYXJlIGluIHRoZSBjb29yZGluYXRlCisgICAgICAgIHNwYWNlIG9m
IHRoZSBwYWdlIGNvbnRhaW5pbmcgdGhlIHBsdWdpbi4gQmVmb3JlIHRoZSBldmVudHMgYXJlCisg
ICAgICAgIGRpc3BhdGNoZWQgdG8gdGhlIHBsdWdpbiwgaXQgaXMgbmVjZXNzYXJ5IHRvIGNvbnZl
cnQgdGhlbSBpbnRvIHRoZQorICAgICAgICBwbHVnaW4ncyBvd24gY29vcmRpbmF0ZSBzeXN0ZW0u
CisKKyAgICAgICAgKiBzcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uY3BwOgorICAgICAgICAo
V2ViS2l0Ojpjb252ZXJ0TG9jYXRpb25Gb3JSZW5kZXJPYmplY3QpOiBUcmFuc2Zvcm1zIGFuIGV2
ZW50IGxvY2F0aW9uIGZvciB0aGUgc3BlY2lmaWVkIFJlbmRlck9iamVjdC4KKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJLaXQ6OnVwZGF0ZVdlYk1vdXNlRXZlbnRGcm9tV2ViQ29yZU1v
dXNlRXZlbnQpOiBSZWZhY3RvcmVkIGNvZGUgdG8gcmVkdWNlIGNvZGUtZHVwbGljYXRpb24gZm9y
IG1vdXNlIGFuZCB3aGVlbCBldmVudHMuCisgICAgICAgIChXZWJLaXQ6OldlYk1vdXNlRXZlbnRC
dWlsZGVyOjpXZWJNb3VzZUV2ZW50QnVpbGRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYk1vdXNl
V2hlZWxFdmVudEJ1aWxkZXI6OldlYk1vdXNlV2hlZWxFdmVudEJ1aWxkZXIpOgorICAgICAgICAo
V2ViS2l0OjphZGRUb3VjaFBvaW50cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlRvdWNoRXZlbnRC
dWlsZGVyOjpXZWJUb3VjaEV2ZW50QnVpbGRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkdlc3R1
cmVFdmVudEJ1aWxkZXI6OldlYkdlc3R1cmVFdmVudEJ1aWxkZXIpOgorICAgICAgICAqIHNyYy9X
ZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViTW91c2VFdmVudEJ1aWxkZXIpOgorICAgICAgICAoV2ViTW91
c2VXaGVlbEV2ZW50QnVpbGRlcik6CisgICAgICAgIChXZWJUb3VjaEV2ZW50QnVpbGRlcik6Cisg
ICAgICAgIChXZWJHZXN0dXJlRXZlbnRCdWlsZGVyKToKKyAgICAgICAgKiBzcmMvV2ViUGx1Z2lu
Q29udGFpbmVySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkNvbnRhaW5lcklt
cGw6OmhhbmRsZU1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5Db250YWlu
ZXJJbXBsOjpoYW5kbGVXaGVlbEV2ZW50KToKKwogMjAxMi0xMC0wNCAgQWxwaGEgTGFtICA8aGNs
YW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZC4gQ2hyb21pdW0gREVQUyByb2xs
LiBVcGRhdGUgdG8gcjE2MDI4MS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcAppbmRleCAzODcxZjE3M2IzOWVkMDI2MDRk
ZmYyNGJkZGQ3NmVkNDI1YWFlMjY2Li5hMTEwMTNhYzBjYmI4MDZkNDJjNDFiNTRjNTdhNTAwZjE2
MjFlNTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2
ZW50Q29udmVyc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5w
dXRFdmVudENvbnZlcnNpb24uY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiUGxhdGZv
cm1LZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAj
aW5jbHVkZSAiU2Nyb2xsVmlldy5oIgogI2luY2x1ZGUgIlRvdWNoLmgiCiAjaW5jbHVkZSAiVG91
Y2hFdmVudC5oIgpAQCAtMzk2LDcgKzM5NywyOSBAQCBzdGF0aWMgaW50IGdldFdlYklucHV0TW9k
aWZpZXJzKGNvbnN0IFVJRXZlbnRXaXRoS2V5U3RhdGUmIGV2ZW50KQogICAgIHJldHVybiBtb2Rp
ZmllcnM7CiB9CiAKLVdlYk1vdXNlRXZlbnRCdWlsZGVyOjpXZWJNb3VzZUV2ZW50QnVpbGRlcihj
b25zdCBXaWRnZXQqIHdpZGdldCwgY29uc3QgTW91c2VFdmVudCYgZXZlbnQpCitzdGF0aWMgSW50
UG9pbnQgY29udmVydExvY2F0aW9uRm9yUmVuZGVyT2JqZWN0KGNvbnN0IExheW91dFBvaW50JiBs
b2NhdGlvbiwgY29uc3QgV2ViQ29yZTo6UmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QpCit7Cisg
ICAgcmV0dXJuIHJvdW5kZWRJbnRQb2ludChyZW5kZXJPYmplY3QtPmFic29sdXRlVG9Mb2NhbChs
b2NhdGlvbiwgZmFsc2UsIHRydWUpKTsKK30KKworc3RhdGljIHZvaWQgdXBkYXRlV2ViTW91c2VF
dmVudEZyb21XZWJDb3JlTW91c2VFdmVudChXZWJNb3VzZUV2ZW50KiB3ZWJFdmVudCwgY29uc3Qg
TW91c2VFdmVudCYgZXZlbnQsIGNvbnN0IFdpZGdldCogd2lkZ2V0LCBjb25zdCBXZWJDb3JlOjpS
ZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCkKK3sKKyAgICB3ZWJFdmVudC0+dGltZVN0YW1wU2Vj
b25kcyA9IGV2ZW50LnRpbWVTdGFtcCgpIC8gbWlsbGlzUGVyU2Vjb25kOworICAgIHdlYkV2ZW50
LT5tb2RpZmllcnMgPSBnZXRXZWJJbnB1dE1vZGlmaWVycyhldmVudCk7CisKKyAgICBTY3JvbGxW
aWV3KiB2aWV3ID0gd2lkZ2V0LT5wYXJlbnQoKTsKKyAgICBJbnRQb2ludCBwID0gdmlldy0+Y29u
dGVudHNUb1dpbmRvdygKKyAgICAgICAgSW50UG9pbnQoZXZlbnQuYWJzb2x1dGVMb2NhdGlvbigp
LngoKSwgZXZlbnQuYWJzb2x1dGVMb2NhdGlvbigpLnkoKSkpOworICAgIHdlYkV2ZW50LT5nbG9i
YWxYID0gZXZlbnQuc2NyZWVuWCgpOworICAgIHdlYkV2ZW50LT5nbG9iYWxZID0gZXZlbnQuc2Ny
ZWVuWSgpOworICAgIHdlYkV2ZW50LT53aW5kb3dYID0gcC54KCk7CisgICAgd2ViRXZlbnQtPndp
bmRvd1kgPSBwLnkoKTsKKyAgICBJbnRQb2ludCBsb2NhbFBvaW50ID0gY29udmVydExvY2F0aW9u
Rm9yUmVuZGVyT2JqZWN0KGV2ZW50LmFic29sdXRlTG9jYXRpb24oKSwgcmVuZGVyT2JqZWN0KTsK
KyAgICB3ZWJFdmVudC0+eCA9IGxvY2FsUG9pbnQueCgpOworICAgIHdlYkV2ZW50LT55ID0gbG9j
YWxQb2ludC55KCk7Cit9CisKK1dlYk1vdXNlRXZlbnRCdWlsZGVyOjpXZWJNb3VzZUV2ZW50QnVp
bGRlcihjb25zdCBXaWRnZXQqIHdpZGdldCwgY29uc3QgV2ViQ29yZTo6UmVuZGVyT2JqZWN0KiBy
ZW5kZXJPYmplY3QsIGNvbnN0IE1vdXNlRXZlbnQmIGV2ZW50KQogewogICAgIGlmIChldmVudC50
eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlbW92ZUV2ZW50KQogICAgICAgICB0eXBlID0gV2Vi
SW5wdXRFdmVudDo6TW91c2VNb3ZlOwpAQCAtNDEyLDcgKzQzNSw5IEBAIFdlYk1vdXNlRXZlbnRC
dWlsZGVyOjpXZWJNb3VzZUV2ZW50QnVpbGRlcihjb25zdCBXaWRnZXQqIHdpZGdldCwgY29uc3Qg
TW91c2VFdmVuCiAgICAgICAgIHR5cGUgPSBXZWJJbnB1dEV2ZW50OjpDb250ZXh0TWVudTsKICAg
ICBlbHNlCiAgICAgICAgIHJldHVybjsgLy8gU2tpcCBhbGwgb3RoZXIgbW91c2UgZXZlbnRzLgot
ICAgIHRpbWVTdGFtcFNlY29uZHMgPSBldmVudC50aW1lU3RhbXAoKSAvIG1pbGxpc1BlclNlY29u
ZDsKKworICAgIHVwZGF0ZVdlYk1vdXNlRXZlbnRGcm9tV2ViQ29yZU1vdXNlRXZlbnQodGhpcywg
ZXZlbnQsIHdpZGdldCwgcmVuZGVyT2JqZWN0KTsKKwogICAgIHN3aXRjaCAoZXZlbnQuYnV0dG9u
KCkpIHsKICAgICBjYXNlIExlZnRCdXR0b246CiAgICAgICAgIGJ1dHRvbiA9IFdlYk1vdXNlRXZl
bnQ6OkJ1dHRvbkxlZnQ7CkBAIC00MjQsNyArNDQ5LDYgQEAgV2ViTW91c2VFdmVudEJ1aWxkZXI6
OldlYk1vdXNlRXZlbnRCdWlsZGVyKGNvbnN0IFdpZGdldCogd2lkZ2V0LCBjb25zdCBNb3VzZUV2
ZW4KICAgICAgICAgYnV0dG9uID0gV2ViTW91c2VFdmVudDo6QnV0dG9uUmlnaHQ7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KLSAgICBtb2RpZmllcnMgPSBnZXRXZWJJbnB1dE1vZGlmaWVycyhldmVu
dCk7CiAgICAgaWYgKGV2ZW50LmJ1dHRvbkRvd24oKSkgewogICAgICAgICBzd2l0Y2ggKGV2ZW50
LmJ1dHRvbigpKSB7CiAgICAgICAgIGNhc2UgTGVmdEJ1dHRvbjoKQEAgLTQzOCwxNSArNDYyLDYg
QEAgV2ViTW91c2VFdmVudEJ1aWxkZXI6OldlYk1vdXNlRXZlbnRCdWlsZGVyKGNvbnN0IFdpZGdl
dCogd2lkZ2V0LCBjb25zdCBNb3VzZUV2ZW4KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgfQotICAgIFNjcm9sbFZpZXcqIHZpZXcgPSB3aWRnZXQtPnBhcmVudCgpOwotICAgIElu
dFBvaW50IHAgPSB2aWV3LT5jb250ZW50c1RvV2luZG93KAotICAgICAgICBJbnRQb2ludChldmVu
dC5hYnNvbHV0ZUxvY2F0aW9uKCkueCgpLCBldmVudC5hYnNvbHV0ZUxvY2F0aW9uKCkueSgpKSk7
Ci0gICAgZ2xvYmFsWCA9IGV2ZW50LnNjcmVlblgoKTsKLSAgICBnbG9iYWxZID0gZXZlbnQuc2Ny
ZWVuWSgpOwotICAgIHdpbmRvd1ggPSBwLngoKTsKLSAgICB3aW5kb3dZID0gcC55KCk7Ci0gICAg
eCA9IGV2ZW50LmFic29sdXRlTG9jYXRpb24oKS54KCkgLSB3aWRnZXQtPmxvY2F0aW9uKCkueCgp
OwotICAgIHkgPSBldmVudC5hYnNvbHV0ZUxvY2F0aW9uKCkueSgpIC0gd2lkZ2V0LT5sb2NhdGlv
bigpLnkoKTsKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgIG1vdmVtZW50WCA9IGV2ZW50
LndlYmtpdE1vdmVtZW50WCgpOwogICAgIG1vdmVtZW50WSA9IGV2ZW50LndlYmtpdE1vdmVtZW50
WSgpOwpAQCAtNDU0LDIyICs0NjksMTIgQEAgV2ViTW91c2VFdmVudEJ1aWxkZXI6OldlYk1vdXNl
RXZlbnRCdWlsZGVyKGNvbnN0IFdpZGdldCogd2lkZ2V0LCBjb25zdCBNb3VzZUV2ZW4KICAgICBj
bGlja0NvdW50ID0gZXZlbnQuZGV0YWlsKCk7CiB9CiAKLVdlYk1vdXNlV2hlZWxFdmVudEJ1aWxk
ZXI6OldlYk1vdXNlV2hlZWxFdmVudEJ1aWxkZXIoY29uc3QgV2lkZ2V0KiB3aWRnZXQsIGNvbnN0
IFdoZWVsRXZlbnQmIGV2ZW50KQorV2ViTW91c2VXaGVlbEV2ZW50QnVpbGRlcjo6V2ViTW91c2VX
aGVlbEV2ZW50QnVpbGRlcihjb25zdCBXaWRnZXQqIHdpZGdldCwgY29uc3QgV2ViQ29yZTo6UmVu
ZGVyT2JqZWN0KiByZW5kZXJPYmplY3QsIGNvbnN0IFdoZWVsRXZlbnQmIGV2ZW50KQogewogICAg
IGlmIChldmVudC50eXBlKCkgIT0gZXZlbnROYW1lcygpLm1vdXNld2hlZWxFdmVudCkKICAgICAg
ICAgcmV0dXJuOwogICAgIHR5cGUgPSBXZWJJbnB1dEV2ZW50OjpNb3VzZVdoZWVsOwotICAgIHRp
bWVTdGFtcFNlY29uZHMgPSBldmVudC50aW1lU3RhbXAoKSAvIG1pbGxpc1BlclNlY29uZDsKLSAg
ICBtb2RpZmllcnMgPSBnZXRXZWJJbnB1dE1vZGlmaWVycyhldmVudCk7Ci0gICAgU2Nyb2xsVmll
dyogdmlldyA9IHdpZGdldC0+cGFyZW50KCk7Ci0gICAgSW50UG9pbnQgcCA9IHZpZXctPmNvbnRl
bnRzVG9XaW5kb3coCi0gICAgICAgIEludFBvaW50KGV2ZW50LmFic29sdXRlTG9jYXRpb24oKS54
KCksIGV2ZW50LmFic29sdXRlTG9jYXRpb24oKS55KCkpKTsKLSAgICBnbG9iYWxYID0gZXZlbnQu
c2NyZWVuWCgpOwotICAgIGdsb2JhbFkgPSBldmVudC5zY3JlZW5ZKCk7Ci0gICAgd2luZG93WCA9
IHAueCgpOwotICAgIHdpbmRvd1kgPSBwLnkoKTsKLSAgICB4ID0gZXZlbnQuYWJzb2x1dGVMb2Nh
dGlvbigpLngoKSAtIHdpZGdldC0+bG9jYXRpb24oKS54KCk7Ci0gICAgeSA9IGV2ZW50LmFic29s
dXRlTG9jYXRpb24oKS55KCkgLSB3aWRnZXQtPmxvY2F0aW9uKCkueSgpOworICAgIHVwZGF0ZVdl
Yk1vdXNlRXZlbnRGcm9tV2ViQ29yZU1vdXNlRXZlbnQodGhpcywgZXZlbnQsIHdpZGdldCwgcmVu
ZGVyT2JqZWN0KTsKICAgICBkZWx0YVggPSBzdGF0aWNfY2FzdDxmbG9hdD4oZXZlbnQucmF3RGVs
dGFYKCkpOwogICAgIGRlbHRhWSA9IHN0YXRpY19jYXN0PGZsb2F0PihldmVudC5yYXdEZWx0YVko
KSk7CiAgICAgLy8gVGhlIDEyMCBpcyBmcm9tIFdoZWVsRXZlbnQ6OmluaXRXaGVlbEV2ZW50KCku
CkBAIC01MTUsNyArNTIwLDcgQEAgV2ViS2V5Ym9hcmRFdmVudEJ1aWxkZXI6OldlYktleWJvYXJk
RXZlbnRCdWlsZGVyKGNvbnN0IEtleWJvYXJkRXZlbnQmIGV2ZW50KQogCiAjaWYgRU5BQkxFKFRP
VUNIX0VWRU5UUykKIAotc3RhdGljIHZvaWQgYWRkVG91Y2hQb2ludHMoY29uc3QgQXRvbWljU3Ry
aW5nJiB0b3VjaFR5cGUsIFRvdWNoTGlzdCogdG91Y2hlcywgY29uc3QgSW50UG9pbnQmIG9mZnNl
dCwgV2ViVG91Y2hQb2ludCogdG91Y2hQb2ludHMsIHVuc2lnbmVkKiB0b3VjaFBvaW50c0xlbmd0
aCkKK3N0YXRpYyB2b2lkIGFkZFRvdWNoUG9pbnRzKGNvbnN0IEF0b21pY1N0cmluZyYgdG91Y2hU
eXBlLCBUb3VjaExpc3QqIHRvdWNoZXMsIFdlYlRvdWNoUG9pbnQqIHRvdWNoUG9pbnRzLCB1bnNp
Z25lZCogdG91Y2hQb2ludHNMZW5ndGgsIGNvbnN0IFdlYkNvcmU6OlJlbmRlck9iamVjdCogcmVu
ZGVyT2JqZWN0KQogewogICAgIHVuc2lnbmVkIG51bWJlck9mVG91Y2hlcyA9IHN0ZDo6bWluKHRv
dWNoZXMtPmxlbmd0aCgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oV2ViVG91Y2hFdmVudDo6dG91
Y2hlc0xlbmd0aENhcCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZlRv
dWNoZXM7ICsraSkgewpAQCAtNTI0LDcgKzUyOSw3IEBAIHN0YXRpYyB2b2lkIGFkZFRvdWNoUG9p
bnRzKGNvbnN0IEF0b21pY1N0cmluZyYgdG91Y2hUeXBlLCBUb3VjaExpc3QqIHRvdWNoZXMsIGNv
CiAgICAgICAgIFdlYlRvdWNoUG9pbnQgcG9pbnQ7CiAgICAgICAgIHBvaW50LmlkID0gdG91Y2gt
PmlkZW50aWZpZXIoKTsKICAgICAgICAgcG9pbnQuc2NyZWVuUG9zaXRpb24gPSBXZWJQb2ludCh0
b3VjaC0+c2NyZWVuWCgpLCB0b3VjaC0+c2NyZWVuWSgpKTsKLSAgICAgICAgcG9pbnQucG9zaXRp
b24gPSBXZWJQb2ludCh0b3VjaC0+cGFnZVgoKSAtIG9mZnNldC54KCksIHRvdWNoLT5wYWdlWSgp
IC0gb2Zmc2V0LnkoKSk7CisgICAgICAgIHBvaW50LnBvc2l0aW9uID0gY29udmVydExvY2F0aW9u
Rm9yUmVuZGVyT2JqZWN0KExheW91dFBvaW50KEludFBvaW50KHRvdWNoLT5wYWdlWCgpLCB0b3Vj
aC0+cGFnZVkoKSkpLCByZW5kZXJPYmplY3QpOwogICAgICAgICBwb2ludC5yYWRpdXNYID0gdG91
Y2gtPndlYmtpdFJhZGl1c1goKTsKICAgICAgICAgcG9pbnQucmFkaXVzWSA9IHRvdWNoLT53ZWJr
aXRSYWRpdXNZKCk7CiAgICAgICAgIHBvaW50LnJvdGF0aW9uQW5nbGUgPSB0b3VjaC0+d2Via2l0
Um90YXRpb25BbmdsZSgpOwpAQCAtNTM2LDcgKzU0MSw3IEBAIHN0YXRpYyB2b2lkIGFkZFRvdWNo
UG9pbnRzKGNvbnN0IEF0b21pY1N0cmluZyYgdG91Y2hUeXBlLCBUb3VjaExpc3QqIHRvdWNoZXMs
IGNvCiAgICAgKnRvdWNoUG9pbnRzTGVuZ3RoID0gbnVtYmVyT2ZUb3VjaGVzOwogfQogCi1XZWJU
b3VjaEV2ZW50QnVpbGRlcjo6V2ViVG91Y2hFdmVudEJ1aWxkZXIoY29uc3QgV2lkZ2V0KiB3aWRn
ZXQsIGNvbnN0IFRvdWNoRXZlbnQmIGV2ZW50KQorV2ViVG91Y2hFdmVudEJ1aWxkZXI6OldlYlRv
dWNoRXZlbnRCdWlsZGVyKGNvbnN0IFdpZGdldCogd2lkZ2V0LCBjb25zdCBXZWJDb3JlOjpSZW5k
ZXJPYmplY3QqIHJlbmRlck9iamVjdCwgY29uc3QgVG91Y2hFdmVudCYgZXZlbnQpCiB7CiAgICAg
aWYgKGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkudG91Y2hzdGFydEV2ZW50KQogICAgICAg
ICB0eXBlID0gVG91Y2hTdGFydDsKQEAgLTU1NSwxNSArNTYwLDE1IEBAIFdlYlRvdWNoRXZlbnRC
dWlsZGVyOjpXZWJUb3VjaEV2ZW50QnVpbGRlcihjb25zdCBXaWRnZXQqIHdpZGdldCwgY29uc3Qg
VG91Y2hFdmVuCiAgICAgbW9kaWZpZXJzID0gZ2V0V2ViSW5wdXRNb2RpZmllcnMoZXZlbnQpOwog
ICAgIHRpbWVTdGFtcFNlY29uZHMgPSBldmVudC50aW1lU3RhbXAoKSAvIG1pbGxpc1BlclNlY29u
ZDsKIAotICAgIGFkZFRvdWNoUG9pbnRzKGV2ZW50LnR5cGUoKSwgZXZlbnQudG91Y2hlcygpLCB3
aWRnZXQtPmxvY2F0aW9uKCksIHRvdWNoZXMsICZ0b3VjaGVzTGVuZ3RoKTsKLSAgICBhZGRUb3Vj
aFBvaW50cyhldmVudC50eXBlKCksIGV2ZW50LmNoYW5nZWRUb3VjaGVzKCksIHdpZGdldC0+bG9j
YXRpb24oKSwgY2hhbmdlZFRvdWNoZXMsICZjaGFuZ2VkVG91Y2hlc0xlbmd0aCk7Ci0gICAgYWRk
VG91Y2hQb2ludHMoZXZlbnQudHlwZSgpLCBldmVudC50YXJnZXRUb3VjaGVzKCksIHdpZGdldC0+
bG9jYXRpb24oKSwgdGFyZ2V0VG91Y2hlcywgJnRhcmdldFRvdWNoZXNMZW5ndGgpOworICAgIGFk
ZFRvdWNoUG9pbnRzKGV2ZW50LnR5cGUoKSwgZXZlbnQudG91Y2hlcygpLCB0b3VjaGVzLCAmdG91
Y2hlc0xlbmd0aCwgcmVuZGVyT2JqZWN0KTsKKyAgICBhZGRUb3VjaFBvaW50cyhldmVudC50eXBl
KCksIGV2ZW50LmNoYW5nZWRUb3VjaGVzKCksIGNoYW5nZWRUb3VjaGVzLCAmY2hhbmdlZFRvdWNo
ZXNMZW5ndGgsIHJlbmRlck9iamVjdCk7CisgICAgYWRkVG91Y2hQb2ludHMoZXZlbnQudHlwZSgp
LCBldmVudC50YXJnZXRUb3VjaGVzKCksIHRhcmdldFRvdWNoZXMsICZ0YXJnZXRUb3VjaGVzTGVu
Z3RoLCByZW5kZXJPYmplY3QpOwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFRPVUNIX0VWRU5UUykK
IAogI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKLVdlYkdlc3R1cmVFdmVudEJ1aWxkZXI6Oldl
Ykdlc3R1cmVFdmVudEJ1aWxkZXIoY29uc3QgV2lkZ2V0KiB3aWRnZXQsIGNvbnN0IEdlc3R1cmVF
dmVudCYgZXZlbnQpCitXZWJHZXN0dXJlRXZlbnRCdWlsZGVyOjpXZWJHZXN0dXJlRXZlbnRCdWls
ZGVyKGNvbnN0IFdpZGdldCogd2lkZ2V0LCBjb25zdCBXZWJDb3JlOjpSZW5kZXJPYmplY3QqIHJl
bmRlck9iamVjdCwgY29uc3QgR2VzdHVyZUV2ZW50JiBldmVudCkKIHsKICAgICBpZiAoZXZlbnQu
dHlwZSgpID09IGV2ZW50TmFtZXMoKS5nZXN0dXJldGFwRXZlbnQpCiAgICAgICAgIHR5cGUgPSBH
ZXN0dXJlVGFwOwpAQCAtNTg0LDggKzU4OSw5IEBAIFdlYkdlc3R1cmVFdmVudEJ1aWxkZXI6Oldl
Ykdlc3R1cmVFdmVudEJ1aWxkZXIoY29uc3QgV2lkZ2V0KiB3aWRnZXQsIGNvbnN0IEdlc3R1CiAK
ICAgICBnbG9iYWxYID0gZXZlbnQuc2NyZWVuWCgpOwogICAgIGdsb2JhbFkgPSBldmVudC5zY3Jl
ZW5ZKCk7Ci0gICAgeCA9IGV2ZW50LmFic29sdXRlTG9jYXRpb24oKS54KCkgLSB3aWRnZXQtPmxv
Y2F0aW9uKCkueCgpOwotICAgIHkgPSBldmVudC5hYnNvbHV0ZUxvY2F0aW9uKCkueSgpIC0gd2lk
Z2V0LT5sb2NhdGlvbigpLnkoKTsKKyAgICBJbnRQb2ludCBsb2NhbFBvaW50ID0gY29udmVydExv
Y2F0aW9uRm9yUmVuZGVyT2JqZWN0KGV2ZW50LmFic29sdXRlTG9jYXRpb24oKSwgcmVuZGVyT2Jq
ZWN0KTsKKyAgICB4ID0gbG9jYWxQb2ludC54KCk7CisgICAgeSA9IGxvY2FsUG9pbnQueSgpOwog
fQogI2VuZGlmIC8vIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmgKaW5kZXggNDg5NzVh
NDA0NmIyMTJiMGYyZGI5OTJiZTY0YjhjODM0OTc5MGU4Yi4uMjAzZWI5YmU5MmQ1ZDhlOTAzZmYw
MmY2ZjA3ZWJhMDQ0Njc4ODRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oCkBAIC00Miw5ICs0MiwxMCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBHZXN0dXJlRXZlbnQ7CiBjbGFzcyBLZXlib2FyZEV2ZW50Owog
Y2xhc3MgTW91c2VFdmVudDsKK2NsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFNjcm9sbFZpZXc7
Ci1jbGFzcyBXaGVlbEV2ZW50OwogY2xhc3MgVG91Y2hFdmVudDsKK2NsYXNzIFdoZWVsRXZlbnQ7
CiBjbGFzcyBXaWRnZXQ7CiB9CiAKQEAgLTk3LDIxICs5OCwyMSBAQCBwdWJsaWM6CiB9OwogI2Vu
ZGlmCiAKLS8vIENvbnZlcnRzIGEgV2ViQ29yZTo6TW91c2VFdmVudCB0byBhIGNvcnJlc3BvbmRp
bmcgV2ViTW91c2VFdmVudC4gdmlldyBpcwotLy8gdGhlIFNjcm9sbFZpZXcgY29ycmVzcG9uZGlu
ZyB0byB0aGUgZXZlbnQuCisvLyBDb252ZXJ0cyBhIFdlYkNvcmU6Ok1vdXNlRXZlbnQgdG8gYSBj
b3JyZXNwb25kaW5nIFdlYk1vdXNlRXZlbnQuIHdpZGdldCBhbmQKKy8vIHJlbmRlck9iamVjdCBh
cmUgdGhlIFdpZGdldCBhbmQgUmVuZGVyT2JqZWN0IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGV2ZW50
LgogLy8gTk9URTogVGhpcyBpcyBvbmx5IGltcGxlbWVudGVkIGZvciBtb3VzZW1vdmUsIG1vdXNl
b3ZlciwgbW91c2VvdXQsCiAvLyBtb3VzZWRvd24gYW5kIG1vdXNldXAuICBJZiB0aGUgZXZlbnQg
bWFwcGluZyBmYWlscywgdGhlIGV2ZW50IHR5cGUgd2lsbAogLy8gYmUgc2V0IHRvIFVuZGVmaW5l
ZC4KIGNsYXNzIFdlYk1vdXNlRXZlbnRCdWlsZGVyIDogcHVibGljIFdlYk1vdXNlRXZlbnQgewog
cHVibGljOgotICAgIFdlYk1vdXNlRXZlbnRCdWlsZGVyKGNvbnN0IFdlYkNvcmU6OldpZGdldCos
IGNvbnN0IFdlYkNvcmU6Ok1vdXNlRXZlbnQmKTsKKyAgICBXZWJNb3VzZUV2ZW50QnVpbGRlcihj
b25zdCBXZWJDb3JlOjpXaWRnZXQqLCBjb25zdCBXZWJDb3JlOjpSZW5kZXJPYmplY3QqLCBjb25z
dCBXZWJDb3JlOjpNb3VzZUV2ZW50Jik7CiB9OwogCiAvLyBDb252ZXJ0cyBhIFdlYkNvcmU6Oldo
ZWVsRXZlbnQgdG8gYSBjb3JyZXNwb25kaW5nIFdlYk1vdXNlV2hlZWxFdmVudC4KIC8vIElmIHRo
ZSBldmVudCBtYXBwaW5nIGZhaWxzLCB0aGUgZXZlbnQgdHlwZSB3aWxsIGJlIHNldCB0byBVbmRl
ZmluZWQuCiBjbGFzcyBXZWJNb3VzZVdoZWVsRXZlbnRCdWlsZGVyIDogcHVibGljIFdlYk1vdXNl
V2hlZWxFdmVudCB7CiBwdWJsaWM6Ci0gICAgV2ViTW91c2VXaGVlbEV2ZW50QnVpbGRlcihjb25z
dCBXZWJDb3JlOjpXaWRnZXQqLCBjb25zdCBXZWJDb3JlOjpXaGVlbEV2ZW50Jik7CisgICAgV2Vi
TW91c2VXaGVlbEV2ZW50QnVpbGRlcihjb25zdCBXZWJDb3JlOjpXaWRnZXQqLCBjb25zdCBXZWJD
b3JlOjpSZW5kZXJPYmplY3QqLCBjb25zdCBXZWJDb3JlOjpXaGVlbEV2ZW50Jik7CiB9OwogCiAv
LyBDb252ZXJ0cyBhIFdlYkNvcmU6OktleWJvYXJkRXZlbnQgdG8gYSBjb3JyZXNwb25kaW5nIFdl
YktleWJvYXJkRXZlbnQuCkBAIC0xMjgsNyArMTI5LDcgQEAgcHVibGljOgogLy8gZXhjZWVkaW5n
IHRoYXQgY2FwIHdpbGwgYmUgZHJvcHBlZC4KIGNsYXNzIFdlYlRvdWNoRXZlbnRCdWlsZGVyIDog
cHVibGljIFdlYlRvdWNoRXZlbnQgewogcHVibGljOgotICAgIFdlYlRvdWNoRXZlbnRCdWlsZGVy
KGNvbnN0IFdlYkNvcmU6OldpZGdldCosIGNvbnN0IFdlYkNvcmU6OlRvdWNoRXZlbnQmKTsKKyAg
ICBXZWJUb3VjaEV2ZW50QnVpbGRlcihjb25zdCBXZWJDb3JlOjpXaWRnZXQqLCBjb25zdCBXZWJD
b3JlOjpSZW5kZXJPYmplY3QqLCBjb25zdCBXZWJDb3JlOjpUb3VjaEV2ZW50Jik7CiB9OwogI2Vu
ZGlmIC8vIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAKQEAgLTEzNyw3ICsxMzgsNyBAQCBwdWJsaWM6
CiAvLyBOT1RFOiBJZiBldmVudCBtYXBwaW5nIGZhaWxzLCB0aGUgdHlwZSB3aWxsIGJlIHNldCB0
byBVbmRlZmluZWQuCiBjbGFzcyBXZWJHZXN0dXJlRXZlbnRCdWlsZGVyIDogcHVibGljIFdlYkdl
c3R1cmVFdmVudCB7CiBwdWJsaWM6Ci0gICAgV2ViR2VzdHVyZUV2ZW50QnVpbGRlcihjb25zdCBX
ZWJDb3JlOjpXaWRnZXQqLCBjb25zdCBXZWJDb3JlOjpHZXN0dXJlRXZlbnQmKTsKKyAgICBXZWJH
ZXN0dXJlRXZlbnRCdWlsZGVyKGNvbnN0IFdlYkNvcmU6OldpZGdldCosIGNvbnN0IFdlYkNvcmU6
OlJlbmRlck9iamVjdCosIGNvbnN0IFdlYkNvcmU6Okdlc3R1cmVFdmVudCYpOwogfTsKICNlbmRp
ZiAvLyBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHAKaW5kZXggZTNjNGJlZmI4M2Yy
MWFjZTllODA3YTViMGZmMzEyNGJjNTNmODI3Ni4uNTIzZDY4N2M5ZTcyZjg1ODZhNzhkNDNmMGNh
OTYzMGMxOGMxYjVmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
UGx1Z2luQ29udGFpbmVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHAKQEAgLTY1Nyw3ICs2NTcsNyBAQCB2b2lkIFdlYlBs
dWdpbkNvbnRhaW5lckltcGw6OmhhbmRsZU1vdXNlRXZlbnQoTW91c2VFdmVudCogZXZlbnQpCiAg
ICAgLy8gaW4gdGhlIGNhbGwgdG8gSGFuZGxlRXZlbnQuIFNlZSBodHRwOi8vYi9pc3N1ZT9pZD0x
MzYyOTQ4CiAgICAgRnJhbWVWaWV3KiBwYXJlbnRWaWV3ID0gc3RhdGljX2Nhc3Q8RnJhbWVWaWV3
Kj4ocGFyZW50KCkpOwogCi0gICAgV2ViTW91c2VFdmVudEJ1aWxkZXIgd2ViRXZlbnQodGhpcywg
KmV2ZW50KTsKKyAgICBXZWJNb3VzZUV2ZW50QnVpbGRlciB3ZWJFdmVudCh0aGlzLCBtX2VsZW1l
bnQtPnJlbmRlcmVyKCksICpldmVudCk7CiAgICAgaWYgKHdlYkV2ZW50LnR5cGUgPT0gV2ViSW5w
dXRFdmVudDo6VW5kZWZpbmVkKQogICAgICAgICByZXR1cm47CiAKQEAgLTY5OCw3ICs2OTgsNyBA
QCB2b2lkIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OmhhbmRsZU1vdXNlRXZlbnQoTW91c2VFdmVu
dCogZXZlbnQpCiAKIHZvaWQgV2ViUGx1Z2luQ29udGFpbmVySW1wbDo6aGFuZGxlV2hlZWxFdmVu
dChXaGVlbEV2ZW50KiBldmVudCkKIHsKLSAgICBXZWJNb3VzZVdoZWVsRXZlbnRCdWlsZGVyIHdl
YkV2ZW50KHRoaXMsICpldmVudCk7CisgICAgV2ViTW91c2VXaGVlbEV2ZW50QnVpbGRlciB3ZWJF
dmVudCh0aGlzLCBtX2VsZW1lbnQtPnJlbmRlcmVyKCksICpldmVudCk7CiAgICAgaWYgKHdlYkV2
ZW50LnR5cGUgPT0gV2ViSW5wdXRFdmVudDo6VW5kZWZpbmVkKQogICAgICAgICByZXR1cm47CiAK
QEAgLTc0OSw3ICs3NDksNyBAQCB2b2lkIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OmhhbmRsZVRv
dWNoRXZlbnQoVG91Y2hFdmVudCogZXZlbnQpCiB7CiAgICAgaWYgKCFtX2lzQWNjZXB0aW5nVG91
Y2hFdmVudHMpCiAgICAgICAgIHJldHVybjsKLSAgICBXZWJUb3VjaEV2ZW50QnVpbGRlciB3ZWJF
dmVudCh0aGlzLCAqZXZlbnQpOworICAgIFdlYlRvdWNoRXZlbnRCdWlsZGVyIHdlYkV2ZW50KHRo
aXMsIG1fZWxlbWVudC0+cmVuZGVyZXIoKSwgKmV2ZW50KTsKICAgICBpZiAod2ViRXZlbnQudHlw
ZSA9PSBXZWJJbnB1dEV2ZW50OjpVbmRlZmluZWQpCiAgICAgICAgIHJldHVybjsKICAgICBXZWJD
dXJzb3JJbmZvIGN1cnNvckluZm87CkBAIC03NjAsNyArNzYwLDcgQEAgdm9pZCBXZWJQbHVnaW5D
b250YWluZXJJbXBsOjpoYW5kbGVUb3VjaEV2ZW50KFRvdWNoRXZlbnQqIGV2ZW50KQogCiB2b2lk
IFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OmhhbmRsZUdlc3R1cmVFdmVudChHZXN0dXJlRXZlbnQq
IGV2ZW50KQogewotICAgIFdlYkdlc3R1cmVFdmVudEJ1aWxkZXIgd2ViRXZlbnQodGhpcywgKmV2
ZW50KTsKKyAgICBXZWJHZXN0dXJlRXZlbnRCdWlsZGVyIHdlYkV2ZW50KHRoaXMsIG1fZWxlbWVu
dC0+cmVuZGVyZXIoKSwgKmV2ZW50KTsKICAgICBpZiAod2ViRXZlbnQudHlwZSA9PSBXZWJJbnB1
dEV2ZW50OjpVbmRlZmluZWQpCiAgICAgICAgIHJldHVybjsKICAgICBXZWJDdXJzb3JJbmZvIGN1
cnNvckluZm87CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggMDAyOTU2OTJhNTIwNTliMTYwYTIxNzY3MWMxZDViOTY4OWE0NmVmMy4uZGJhMTI2Mzg0
M2JkYTgwYmQ2ZmVlYTg0ZmE1YWM2ZDgxN2RhNDk2MSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTEwLTA1ICBT
YWRydWwgSGFiaWIgQ2hvd2RodXJ5ICA8c2FkcnVsQGNocm9taXVtLm9yZz4KKworICAgICAgICBb
Y2hyb21pdW1dIE1ha2Ugc3VyZSBldmVudHMgYXJlIHRyYW5zZm9ybWVkIGNvcnJlY3RseSBmb3Ig
cGx1Z2lucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg5MjUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VXBkYXRlIHRoZSB0ZXN0IHBsdWdpbiB0byBwcmludCBldmVudCBkZXRhaWxzIGZvciBtb3VzZSBh
bmQgZ2VzdHVyZSBldmVudHMuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0V2ViUGx1Z2luLmNwcDoKKyAgICAgICAgKHByaW50RXZlbnREZXRhaWxzKToKKwogMjAxMi0x
MC0wNCAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VG
TF1bV0syXSBBZGQgQVBJcyB0byBnZXQvc2V0IHRoZSBmcmFtZSBmbGF0dGVuaW5nLgpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFdlYlBsdWdpbi5jcHAgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0V2ViUGx1Z2luLmNwcAppbmRleCBlOTVj
MGU0YjU1MmY1ZTRlODA0NzU2ZGIwYjIxZmY2MWFiNzQ2OGY0Li44Njg3OTc1NTYzNmFjYmFmNzdm
M2Y1OGE4MDgwYTBlODM0NDQ0N2U5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0V2ViUGx1Z2luLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0V2ViUGx1Z2luLmNwcApAQCAtMTA5LDYgKzEwOSwxMiBAQCBzdGF0aWMgdm9pZCBw
cmludEV2ZW50RGV0YWlscyhjb25zdCBXZWJLaXQ6OldlYklucHV0RXZlbnQmIGV2ZW50KQogICAg
ICAgICBwcmludFRvdWNoTGlzdCh0b3VjaC50b3VjaGVzLCB0b3VjaC50b3VjaGVzTGVuZ3RoKTsK
ICAgICAgICAgcHJpbnRUb3VjaExpc3QodG91Y2guY2hhbmdlZFRvdWNoZXMsIHRvdWNoLmNoYW5n
ZWRUb3VjaGVzTGVuZ3RoKTsKICAgICAgICAgcHJpbnRUb3VjaExpc3QodG91Y2gudGFyZ2V0VG91
Y2hlcywgdG91Y2gudGFyZ2V0VG91Y2hlc0xlbmd0aCk7CisgICAgfSBlbHNlIGlmIChXZWJLaXQ6
OldlYklucHV0RXZlbnQ6OmlzTW91c2VFdmVudFR5cGUoZXZlbnQudHlwZSkpIHsKKyAgICAgICAg
Y29uc3QgV2ViS2l0OjpXZWJNb3VzZUV2ZW50JiBtb3VzZSA9IHN0YXRpY19jYXN0PGNvbnN0IFdl
YktpdDo6V2ViTW91c2VFdmVudCY+KGV2ZW50KTsKKyAgICAgICAgcHJpbnRmKCIqICVkLCAlZFxu
IiwgbW91c2UueCwgbW91c2UueSk7CisgICAgfSBlbHNlIGlmIChXZWJLaXQ6OldlYklucHV0RXZl
bnQ6OmlzR2VzdHVyZUV2ZW50VHlwZShldmVudC50eXBlKSkgeworICAgICAgICBjb25zdCBXZWJL
aXQ6OldlYkdlc3R1cmVFdmVudCYgZ2VzdHVyZSA9IHN0YXRpY19jYXN0PGNvbnN0IFdlYktpdDo6
V2ViR2VzdHVyZUV2ZW50Jj4oZXZlbnQpOworICAgICAgICBwcmludGYoIiogJWQsICVkXG4iLCBn
ZXN0dXJlLngsIGdlc3R1cmUueSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzZiYzdhODhiY2M5MTNi
OTBmOTZiMWU5ZTU1NTQxMmY4MDk0ZWI2Ni4uMjJlNTZiMGQzMjMxOGIyMmViMGVkZDRlNGY4ZTE3
OTU5MjAyNjA5YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTEwLTA1ICBTYWRydWwgSGFi
aWIgQ2hvd2RodXJ5ICA8c2FkcnVsQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IE1ha2Ugc3VyZSBldmVudHMgYXJlIHRyYW5zZm9ybWVkIGNvcnJlY3RseSBmb3IgcGx1Z2lucy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5MjUwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgdGVz
dHMgdG8gbWFrZSBzdXJlIHRoYXQgZXZlbnRzIGFyZSB0cmFuc2Zvcm1lZCBwcm9wZXJseS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3BsdWdpbnMvdHJhbnNmb3JtZWQtZXZlbnRzLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vcGx1Z2lucy90
cmFuc2Zvcm1lZC1ldmVudHMuaHRtbDogQWRkZWQuCisKIDIwMTItMTAtMDQgIERpcmsgUHJhbmtl
ICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVXBkYXRlIGNocm9taXVtIGJhc2Vs
aW5lcyBmb3IgNTAwNjc3OS5odG1sIGFuZCBwYWludC1zdWJyZWN0LWdyaWQuaHRtbC4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3BsdWdpbnMvdHJhbnNmb3JtZWQt
ZXZlbnRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3BsdWdp
bnMvdHJhbnNmb3JtZWQtZXZlbnRzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNTA0ZWIxZjdk
ODM5OTA5NGU1ZGJiNmExZDRmZGNkMTU0NDg2YTM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vcGx1Z2lucy90cmFuc2Zvcm1lZC1ldmVudHMtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMzEgQEAKK1BsdWdpbiByZWNlaXZlZCBldmVudDogVG91Y2hTdGFy
dAorKiAxMCwgMTA6IFByZXNzZWQKKyogMTAsIDEwOiBQcmVzc2VkCisqIDEwLCAxMDogUHJlc3Nl
ZAorUGx1Z2luIHJlY2VpdmVkIGV2ZW50OiBUb3VjaE1vdmUKKyogMjAsIDE1OiBNb3ZlZAorKiAy
MCwgMTU6IE1vdmVkCisqIDIwLCAxNTogTW92ZWQKK1BsdWdpbiByZWNlaXZlZCBldmVudDogVG91
Y2hFbmQKKyogMjAsIDE1OiBSZWxlYXNlZAorUGx1Z2luIHJlY2VpdmVkIGV2ZW50OiBNb3VzZUVu
dGVyCisqIDEwLCAxMAorUGx1Z2luIHJlY2VpdmVkIGV2ZW50OiBNb3VzZU1vdmUKKyogMTAsIDEw
CitQbHVnaW4gcmVjZWl2ZWQgZXZlbnQ6IE1vdXNlRG93bgorKiAxMCwgMTAKK1BsdWdpbiByZWNl
aXZlZCBldmVudDogTW91c2VNb3ZlCisqIDIwLCAxNQorUGx1Z2luIHJlY2VpdmVkIGV2ZW50OiBN
b3VzZVVwCisqIDIwLCAxNQorUGx1Z2luIHJlY2VpdmVkIGV2ZW50OiBHZXN0dXJlVGFwRG93bgor
KiAxMCwgMTAKK1BsdWdpbiByZWNlaXZlZCBldmVudDogR2VzdHVyZVRhcAorKiAxMCwgMTAKK1Bs
dWdpbiByZWNlaXZlZCBldmVudDogTW91c2VNb3ZlCisqIDEwLCAxMAorUGx1Z2luIHJlY2VpdmVk
IGV2ZW50OiBNb3VzZURvd24KKyogMTAsIDEwCitQbHVnaW4gcmVjZWl2ZWQgZXZlbnQ6IE1vdXNl
VXAKKyogMTAsIDEwCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L3BsdWdpbnMvdHJhbnNmb3JtZWQtZXZlbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9wbHVnaW5zL3RyYW5zZm9ybWVkLWV2ZW50cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZiMTE3
ZjE4Zjk5OWZkM2M3YTZiMjRhYTkwMWViYmYwZjkxNjY0OWQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9wbHVnaW5zL3RyYW5zZm9ybWVkLWV2ZW50cy5o
dG1sCkBAIC0wLDAgKzEsNDYgQEAKKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CisgICNwbHVnaW4g
eworICAgIHdpZHRoOiAxNTBweDsKKyAgICBoZWlnaHQ6IDE1MHB4OworICAgIC13ZWJraXQtdHJh
bnNmb3JtOiByb3RhdGUoOTBkZWcpOworICB9Cis8L3N0eWxlPgorPC9oZWFkPgorCis8Ym9keT4K
KzxlbWJlZCBpZD0icGx1Z2luIiB0eXBlPSJhcHBsaWNhdGlvbi94LXdlYmtpdC10ZXN0LXdlYnBs
dWdpbiIgYWNjZXB0cy10b3VjaD0idHJ1ZSIgcHJpbnQtZXZlbnQtZGV0YWlscz0idHJ1ZSI+PC9l
bWJlZD4KKzxzY3JpcHQ+CisKKyAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyIHx8ICF3aW5kb3cu
ZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgZG9jdW1lbnQud3JpdGUoIlRoaXMgdGVzdCBkb2VzIG5v
dCB3b3JrIGluIG1hbnVhbCBtb2RlLiIpOworICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIC8vIFRlc3QgdG91Y2ggZXZlbnRzLgorICAgICAg
ICB2YXIgcG9zaXRpb25YID0gcGx1Z2luLm9mZnNldExlZnQgKyBwbHVnaW4ub2Zmc2V0V2lkdGgg
LSAxMDsKKyAgICAgICAgdmFyIHBvc2l0aW9uWSA9IHBsdWdpbi5vZmZzZXRUb3AgKyAxMDsKKyAg
ICAgICAgZXZlbnRTZW5kZXIuYWRkVG91Y2hQb2ludChwb3NpdGlvblgsIHBvc2l0aW9uWSk7Cisg
ICAgICAgIGV2ZW50U2VuZGVyLnRvdWNoU3RhcnQoKTsKKyAgICAgICAgZXZlbnRTZW5kZXIudXBk
YXRlVG91Y2hQb2ludCgwLCBwb3NpdGlvblggLSA1LCBwb3NpdGlvblkgKyAxMCk7CisgICAgICAg
IGV2ZW50U2VuZGVyLnRvdWNoTW92ZSgpOworICAgICAgICBldmVudFNlbmRlci5yZWxlYXNlVG91
Y2hQb2ludCgwKTsKKyAgICAgICAgZXZlbnRTZW5kZXIudG91Y2hFbmQoKTsKKworICAgICAgICAv
LyBUZXN0IG1vdXNlIGV2ZW50cy4KKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8ocG9z
aXRpb25YLCBwb3NpdGlvblkpOworICAgICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAg
ICAgICAgZXZlbnRTZW5kZXIubGVhcEZvcndhcmQoMTApOworICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyhwb3NpdGlvblggLSA1LCBwb3NpdGlvblkgKyAxMCk7CisgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlVXAoKTsKKworICAgICAgICAvLyBUZXN0IGdlc3R1cmUgZXZlbnRzLgorICAg
ICAgICBldmVudFNlbmRlci5nZXN0dXJlVGFwRG93bihwb3NpdGlvblgsIHBvc2l0aW9uWSk7Cisg
ICAgICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVUYXAocG9zaXRpb25YLCBwb3NpdGlvblkpOworICAg
IH0KKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167383</attachid>
            <date>2012-10-05 14:39:09 -0700</date>
            <delta_ts>2012-10-05 17:22:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89250-20121005173816.patch</filename>
            <type>text/plain</type>
            <size>19778</size>
            <attacher name="Sadrul Habib Chowdhury">sadrul</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNDUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDAxNTZiYWM2ZjIxODBmYmM4MjZhNTgwNTE0ODY5ODRlOWI3MDA2ZjQuLjU1M2U0MThjM2YwZDNl
NzkxOGQ0MmU4Zjk2ZTcyYTMwYmYwYTc0YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzUgQEAKKzIwMTItMTAtMDUgIFNhZHJ1bCBIYWJpYiBDaG93ZGh1cnkgIDxzYWRy
dWxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gTWFrZSBzdXJlIGV2ZW50cyBh
cmUgdHJhbnNmb3JtZWQgY29ycmVjdGx5IGZvciBwbHVnaW5zLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODkyNTAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgZXZlbnRzIGFycml2aW5nIGluIFdlYlBs
dWdpbkNvbnRhaW5lckltcGwgYXJlIGluIHRoZSBjb29yZGluYXRlCisgICAgICAgIHNwYWNlIG9m
IHRoZSBwYWdlIGNvbnRhaW5pbmcgdGhlIHBsdWdpbi4gQmVmb3JlIHRoZSBldmVudHMgYXJlCisg
ICAgICAgIGRpc3BhdGNoZWQgdG8gdGhlIHBsdWdpbiwgaXQgaXMgbmVjZXNzYXJ5IHRvIGNvbnZl
cnQgdGhlbSBpbnRvIHRoZQorICAgICAgICBwbHVnaW4ncyBvd24gY29vcmRpbmF0ZSBzeXN0ZW0u
CisKKyAgICAgICAgKiBzcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uY3BwOgorICAgICAgICAo
V2ViS2l0Ojpjb252ZXJ0TG9jYXRpb25Gb3JSZW5kZXJPYmplY3QpOiBUcmFuc2Zvcm1zIGFuIGV2
ZW50IGxvY2F0aW9uIGZvciB0aGUgc3BlY2lmaWVkIFJlbmRlck9iamVjdC4KKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJLaXQ6OnVwZGF0ZVdlYk1vdXNlRXZlbnRGcm9tV2ViQ29yZU1v
dXNlRXZlbnQpOiBSZWZhY3RvcmVkIGNvZGUgdG8gcmVkdWNlIGNvZGUtZHVwbGljYXRpb24gZm9y
IG1vdXNlIGFuZCB3aGVlbCBldmVudHMuCisgICAgICAgIChXZWJLaXQ6OldlYk1vdXNlRXZlbnRC
dWlsZGVyOjpXZWJNb3VzZUV2ZW50QnVpbGRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYk1vdXNl
V2hlZWxFdmVudEJ1aWxkZXI6OldlYk1vdXNlV2hlZWxFdmVudEJ1aWxkZXIpOgorICAgICAgICAo
V2ViS2l0OjphZGRUb3VjaFBvaW50cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlRvdWNoRXZlbnRC
dWlsZGVyOjpXZWJUb3VjaEV2ZW50QnVpbGRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkdlc3R1
cmVFdmVudEJ1aWxkZXI6OldlYkdlc3R1cmVFdmVudEJ1aWxkZXIpOgorICAgICAgICAqIHNyYy9X
ZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViTW91c2VFdmVudEJ1aWxkZXIpOgorICAgICAgICAoV2ViTW91
c2VXaGVlbEV2ZW50QnVpbGRlcik6CisgICAgICAgIChXZWJUb3VjaEV2ZW50QnVpbGRlcik6Cisg
ICAgICAgIChXZWJHZXN0dXJlRXZlbnRCdWlsZGVyKToKKyAgICAgICAgKiBzcmMvV2ViUGx1Z2lu
Q29udGFpbmVySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkNvbnRhaW5lcklt
cGw6OmhhbmRsZU1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5Db250YWlu
ZXJJbXBsOjpoYW5kbGVXaGVlbEV2ZW50KToKKwogMjAxMi0xMC0wNCAgQWxwaGEgTGFtICA8aGNs
YW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZC4gQ2hyb21pdW0gREVQUyByb2xs
LiBVcGRhdGUgdG8gcjE2MDI4MS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcAppbmRleCAzODcxZjE3M2IzOWVkMDI2MDRk
ZmYyNGJkZGQ3NmVkNDI1YWFlMjY2Li5kN2FjNzVkYTllNmEwY2Q4ZmJhMWVkNDhhMGJhOTAyNjk4
YjgyNTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2
ZW50Q29udmVyc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5w
dXRFdmVudENvbnZlcnNpb24uY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiUGxhdGZv
cm1LZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAj
aW5jbHVkZSAiU2Nyb2xsVmlldy5oIgogI2luY2x1ZGUgIlRvdWNoLmgiCiAjaW5jbHVkZSAiVG91
Y2hFdmVudC5oIgpAQCAtMzk2LDcgKzM5NywyOCBAQCBzdGF0aWMgaW50IGdldFdlYklucHV0TW9k
aWZpZXJzKGNvbnN0IFVJRXZlbnRXaXRoS2V5U3RhdGUmIGV2ZW50KQogICAgIHJldHVybiBtb2Rp
ZmllcnM7CiB9CiAKLVdlYk1vdXNlRXZlbnRCdWlsZGVyOjpXZWJNb3VzZUV2ZW50QnVpbGRlcihj
b25zdCBXaWRnZXQqIHdpZGdldCwgY29uc3QgTW91c2VFdmVudCYgZXZlbnQpCitzdGF0aWMgSW50
UG9pbnQgY29udmVydExvY2F0aW9uRm9yUmVuZGVyT2JqZWN0KGNvbnN0IExheW91dFBvaW50JiBs
b2NhdGlvbiwgY29uc3QgV2ViQ29yZTo6UmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QpCit7Cisg
ICAgcmV0dXJuIHJvdW5kZWRJbnRQb2ludChyZW5kZXJPYmplY3QtPmFic29sdXRlVG9Mb2NhbChs
b2NhdGlvbiwgZmFsc2UsIHRydWUpKTsKK30KKworc3RhdGljIHZvaWQgdXBkYXRlV2ViTW91c2VF
dmVudEZyb21XZWJDb3JlTW91c2VFdmVudChXZWJNb3VzZUV2ZW50KiB3ZWJFdmVudCwgY29uc3Qg
TW91c2VFdmVudCYgZXZlbnQsIGNvbnN0IFdpZGdldCogd2lkZ2V0LCBjb25zdCBXZWJDb3JlOjpS
ZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCkKK3sKKyAgICB3ZWJFdmVudC0+dGltZVN0YW1wU2Vj
b25kcyA9IGV2ZW50LnRpbWVTdGFtcCgpIC8gbWlsbGlzUGVyU2Vjb25kOworICAgIHdlYkV2ZW50
LT5tb2RpZmllcnMgPSBnZXRXZWJJbnB1dE1vZGlmaWVycyhldmVudCk7CisKKyAgICBTY3JvbGxW
aWV3KiB2aWV3ID0gd2lkZ2V0LT5wYXJlbnQoKTsKKyAgICBJbnRQb2ludCB3aW5kb3dQb2ludCA9
IHZpZXctPmNvbnRlbnRzVG9XaW5kb3coSW50UG9pbnQoZXZlbnQuYWJzb2x1dGVMb2NhdGlvbigp
LngoKSwgZXZlbnQuYWJzb2x1dGVMb2NhdGlvbigpLnkoKSkpOworICAgIHdlYkV2ZW50LT5nbG9i
YWxYID0gZXZlbnQuc2NyZWVuWCgpOworICAgIHdlYkV2ZW50LT5nbG9iYWxZID0gZXZlbnQuc2Ny
ZWVuWSgpOworICAgIHdlYkV2ZW50LT53aW5kb3dYID0gd2luZG93UG9pbnQueCgpOworICAgIHdl
YkV2ZW50LT53aW5kb3dZID0gd2luZG93UG9pbnQueSgpOworICAgIEludFBvaW50IGxvY2FsUG9p
bnQgPSBjb252ZXJ0TG9jYXRpb25Gb3JSZW5kZXJPYmplY3QoZXZlbnQuYWJzb2x1dGVMb2NhdGlv
bigpLCByZW5kZXJPYmplY3QpOworICAgIHdlYkV2ZW50LT54ID0gbG9jYWxQb2ludC54KCk7Cisg
ICAgd2ViRXZlbnQtPnkgPSBsb2NhbFBvaW50LnkoKTsKK30KKworV2ViTW91c2VFdmVudEJ1aWxk
ZXI6OldlYk1vdXNlRXZlbnRCdWlsZGVyKGNvbnN0IFdpZGdldCogd2lkZ2V0LCBjb25zdCBXZWJD
b3JlOjpSZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCwgY29uc3QgTW91c2VFdmVudCYgZXZlbnQp
CiB7CiAgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vtb3ZlRXZlbnQp
CiAgICAgICAgIHR5cGUgPSBXZWJJbnB1dEV2ZW50OjpNb3VzZU1vdmU7CkBAIC00MTIsNyArNDM0
LDkgQEAgV2ViTW91c2VFdmVudEJ1aWxkZXI6OldlYk1vdXNlRXZlbnRCdWlsZGVyKGNvbnN0IFdp
ZGdldCogd2lkZ2V0LCBjb25zdCBNb3VzZUV2ZW4KICAgICAgICAgdHlwZSA9IFdlYklucHV0RXZl
bnQ6OkNvbnRleHRNZW51OwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuOyAvLyBTa2lwIGFsbCBv
dGhlciBtb3VzZSBldmVudHMuCi0gICAgdGltZVN0YW1wU2Vjb25kcyA9IGV2ZW50LnRpbWVTdGFt
cCgpIC8gbWlsbGlzUGVyU2Vjb25kOworCisgICAgdXBkYXRlV2ViTW91c2VFdmVudEZyb21XZWJD
b3JlTW91c2VFdmVudCh0aGlzLCBldmVudCwgd2lkZ2V0LCByZW5kZXJPYmplY3QpOworCiAgICAg
c3dpdGNoIChldmVudC5idXR0b24oKSkgewogICAgIGNhc2UgTGVmdEJ1dHRvbjoKICAgICAgICAg
YnV0dG9uID0gV2ViTW91c2VFdmVudDo6QnV0dG9uTGVmdDsKQEAgLTQyNCw3ICs0NDgsNiBAQCBX
ZWJNb3VzZUV2ZW50QnVpbGRlcjo6V2ViTW91c2VFdmVudEJ1aWxkZXIoY29uc3QgV2lkZ2V0KiB3
aWRnZXQsIGNvbnN0IE1vdXNlRXZlbgogICAgICAgICBidXR0b24gPSBXZWJNb3VzZUV2ZW50OjpC
dXR0b25SaWdodDsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIG1vZGlmaWVycyA9IGdldFdl
YklucHV0TW9kaWZpZXJzKGV2ZW50KTsKICAgICBpZiAoZXZlbnQuYnV0dG9uRG93bigpKSB7CiAg
ICAgICAgIHN3aXRjaCAoZXZlbnQuYnV0dG9uKCkpIHsKICAgICAgICAgY2FzZSBMZWZ0QnV0dG9u
OgpAQCAtNDM4LDE1ICs0NjEsNiBAQCBXZWJNb3VzZUV2ZW50QnVpbGRlcjo6V2ViTW91c2VFdmVu
dEJ1aWxkZXIoY29uc3QgV2lkZ2V0KiB3aWRnZXQsIGNvbnN0IE1vdXNlRXZlbgogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9Ci0gICAgU2Nyb2xsVmlldyogdmlldyA9IHdpZGdl
dC0+cGFyZW50KCk7Ci0gICAgSW50UG9pbnQgcCA9IHZpZXctPmNvbnRlbnRzVG9XaW5kb3coCi0g
ICAgICAgIEludFBvaW50KGV2ZW50LmFic29sdXRlTG9jYXRpb24oKS54KCksIGV2ZW50LmFic29s
dXRlTG9jYXRpb24oKS55KCkpKTsKLSAgICBnbG9iYWxYID0gZXZlbnQuc2NyZWVuWCgpOwotICAg
IGdsb2JhbFkgPSBldmVudC5zY3JlZW5ZKCk7Ci0gICAgd2luZG93WCA9IHAueCgpOwotICAgIHdp
bmRvd1kgPSBwLnkoKTsKLSAgICB4ID0gZXZlbnQuYWJzb2x1dGVMb2NhdGlvbigpLngoKSAtIHdp
ZGdldC0+bG9jYXRpb24oKS54KCk7Ci0gICAgeSA9IGV2ZW50LmFic29sdXRlTG9jYXRpb24oKS55
KCkgLSB3aWRnZXQtPmxvY2F0aW9uKCkueSgpOwogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAg
ICAgbW92ZW1lbnRYID0gZXZlbnQud2Via2l0TW92ZW1lbnRYKCk7CiAgICAgbW92ZW1lbnRZID0g
ZXZlbnQud2Via2l0TW92ZW1lbnRZKCk7CkBAIC00NTQsMjIgKzQ2OCwxMiBAQCBXZWJNb3VzZUV2
ZW50QnVpbGRlcjo6V2ViTW91c2VFdmVudEJ1aWxkZXIoY29uc3QgV2lkZ2V0KiB3aWRnZXQsIGNv
bnN0IE1vdXNlRXZlbgogICAgIGNsaWNrQ291bnQgPSBldmVudC5kZXRhaWwoKTsKIH0KIAotV2Vi
TW91c2VXaGVlbEV2ZW50QnVpbGRlcjo6V2ViTW91c2VXaGVlbEV2ZW50QnVpbGRlcihjb25zdCBX
aWRnZXQqIHdpZGdldCwgY29uc3QgV2hlZWxFdmVudCYgZXZlbnQpCitXZWJNb3VzZVdoZWVsRXZl
bnRCdWlsZGVyOjpXZWJNb3VzZVdoZWVsRXZlbnRCdWlsZGVyKGNvbnN0IFdpZGdldCogd2lkZ2V0
LCBjb25zdCBXZWJDb3JlOjpSZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCwgY29uc3QgV2hlZWxF
dmVudCYgZXZlbnQpCiB7CiAgICAgaWYgKGV2ZW50LnR5cGUoKSAhPSBldmVudE5hbWVzKCkubW91
c2V3aGVlbEV2ZW50KQogICAgICAgICByZXR1cm47CiAgICAgdHlwZSA9IFdlYklucHV0RXZlbnQ6
Ok1vdXNlV2hlZWw7Ci0gICAgdGltZVN0YW1wU2Vjb25kcyA9IGV2ZW50LnRpbWVTdGFtcCgpIC8g
bWlsbGlzUGVyU2Vjb25kOwotICAgIG1vZGlmaWVycyA9IGdldFdlYklucHV0TW9kaWZpZXJzKGV2
ZW50KTsKLSAgICBTY3JvbGxWaWV3KiB2aWV3ID0gd2lkZ2V0LT5wYXJlbnQoKTsKLSAgICBJbnRQ
b2ludCBwID0gdmlldy0+Y29udGVudHNUb1dpbmRvdygKLSAgICAgICAgSW50UG9pbnQoZXZlbnQu
YWJzb2x1dGVMb2NhdGlvbigpLngoKSwgZXZlbnQuYWJzb2x1dGVMb2NhdGlvbigpLnkoKSkpOwot
ICAgIGdsb2JhbFggPSBldmVudC5zY3JlZW5YKCk7Ci0gICAgZ2xvYmFsWSA9IGV2ZW50LnNjcmVl
blkoKTsKLSAgICB3aW5kb3dYID0gcC54KCk7Ci0gICAgd2luZG93WSA9IHAueSgpOwotICAgIHgg
PSBldmVudC5hYnNvbHV0ZUxvY2F0aW9uKCkueCgpIC0gd2lkZ2V0LT5sb2NhdGlvbigpLngoKTsK
LSAgICB5ID0gZXZlbnQuYWJzb2x1dGVMb2NhdGlvbigpLnkoKSAtIHdpZGdldC0+bG9jYXRpb24o
KS55KCk7CisgICAgdXBkYXRlV2ViTW91c2VFdmVudEZyb21XZWJDb3JlTW91c2VFdmVudCh0aGlz
LCBldmVudCwgd2lkZ2V0LCByZW5kZXJPYmplY3QpOwogICAgIGRlbHRhWCA9IHN0YXRpY19jYXN0
PGZsb2F0PihldmVudC5yYXdEZWx0YVgoKSk7CiAgICAgZGVsdGFZID0gc3RhdGljX2Nhc3Q8Zmxv
YXQ+KGV2ZW50LnJhd0RlbHRhWSgpKTsKICAgICAvLyBUaGUgMTIwIGlzIGZyb20gV2hlZWxFdmVu
dDo6aW5pdFdoZWVsRXZlbnQoKS4KQEAgLTUxNSw3ICs1MTksNyBAQCBXZWJLZXlib2FyZEV2ZW50
QnVpbGRlcjo6V2ViS2V5Ym9hcmRFdmVudEJ1aWxkZXIoY29uc3QgS2V5Ym9hcmRFdmVudCYgZXZl
bnQpCiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogCi1zdGF0aWMgdm9pZCBhZGRUb3VjaFBv
aW50cyhjb25zdCBBdG9taWNTdHJpbmcmIHRvdWNoVHlwZSwgVG91Y2hMaXN0KiB0b3VjaGVzLCBj
b25zdCBJbnRQb2ludCYgb2Zmc2V0LCBXZWJUb3VjaFBvaW50KiB0b3VjaFBvaW50cywgdW5zaWdu
ZWQqIHRvdWNoUG9pbnRzTGVuZ3RoKQorc3RhdGljIHZvaWQgYWRkVG91Y2hQb2ludHMoY29uc3Qg
QXRvbWljU3RyaW5nJiB0b3VjaFR5cGUsIFRvdWNoTGlzdCogdG91Y2hlcywgV2ViVG91Y2hQb2lu
dCogdG91Y2hQb2ludHMsIHVuc2lnbmVkKiB0b3VjaFBvaW50c0xlbmd0aCwgY29uc3QgV2ViQ29y
ZTo6UmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QpCiB7CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZU
b3VjaGVzID0gc3RkOjptaW4odG91Y2hlcy0+bGVuZ3RoKCksIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihXZWJUb3VjaEV2ZW50Ojp0b3VjaGVzTGVuZ3RoQ2FwKSk7CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG51bWJlck9mVG91Y2hlczsgKytpKSB7CkBAIC01MjQsNyArNTI4LDcgQEAgc3Rh
dGljIHZvaWQgYWRkVG91Y2hQb2ludHMoY29uc3QgQXRvbWljU3RyaW5nJiB0b3VjaFR5cGUsIFRv
dWNoTGlzdCogdG91Y2hlcywgY28KICAgICAgICAgV2ViVG91Y2hQb2ludCBwb2ludDsKICAgICAg
ICAgcG9pbnQuaWQgPSB0b3VjaC0+aWRlbnRpZmllcigpOwogICAgICAgICBwb2ludC5zY3JlZW5Q
b3NpdGlvbiA9IFdlYlBvaW50KHRvdWNoLT5zY3JlZW5YKCksIHRvdWNoLT5zY3JlZW5ZKCkpOwot
ICAgICAgICBwb2ludC5wb3NpdGlvbiA9IFdlYlBvaW50KHRvdWNoLT5wYWdlWCgpIC0gb2Zmc2V0
LngoKSwgdG91Y2gtPnBhZ2VZKCkgLSBvZmZzZXQueSgpKTsKKyAgICAgICAgcG9pbnQucG9zaXRp
b24gPSBjb252ZXJ0TG9jYXRpb25Gb3JSZW5kZXJPYmplY3QoTGF5b3V0UG9pbnQoSW50UG9pbnQo
dG91Y2gtPnBhZ2VYKCksIHRvdWNoLT5wYWdlWSgpKSksIHJlbmRlck9iamVjdCk7CiAgICAgICAg
IHBvaW50LnJhZGl1c1ggPSB0b3VjaC0+d2Via2l0UmFkaXVzWCgpOwogICAgICAgICBwb2ludC5y
YWRpdXNZID0gdG91Y2gtPndlYmtpdFJhZGl1c1koKTsKICAgICAgICAgcG9pbnQucm90YXRpb25B
bmdsZSA9IHRvdWNoLT53ZWJraXRSb3RhdGlvbkFuZ2xlKCk7CkBAIC01MzYsNyArNTQwLDcgQEAg
c3RhdGljIHZvaWQgYWRkVG91Y2hQb2ludHMoY29uc3QgQXRvbWljU3RyaW5nJiB0b3VjaFR5cGUs
IFRvdWNoTGlzdCogdG91Y2hlcywgY28KICAgICAqdG91Y2hQb2ludHNMZW5ndGggPSBudW1iZXJP
ZlRvdWNoZXM7CiB9CiAKLVdlYlRvdWNoRXZlbnRCdWlsZGVyOjpXZWJUb3VjaEV2ZW50QnVpbGRl
cihjb25zdCBXaWRnZXQqIHdpZGdldCwgY29uc3QgVG91Y2hFdmVudCYgZXZlbnQpCitXZWJUb3Vj
aEV2ZW50QnVpbGRlcjo6V2ViVG91Y2hFdmVudEJ1aWxkZXIoY29uc3QgV2lkZ2V0KiB3aWRnZXQs
IGNvbnN0IFdlYkNvcmU6OlJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0LCBjb25zdCBUb3VjaEV2
ZW50JiBldmVudCkKIHsKICAgICBpZiAoZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS50b3Vj
aHN0YXJ0RXZlbnQpCiAgICAgICAgIHR5cGUgPSBUb3VjaFN0YXJ0OwpAQCAtNTU1LDE1ICs1NTks
MTUgQEAgV2ViVG91Y2hFdmVudEJ1aWxkZXI6OldlYlRvdWNoRXZlbnRCdWlsZGVyKGNvbnN0IFdp
ZGdldCogd2lkZ2V0LCBjb25zdCBUb3VjaEV2ZW4KICAgICBtb2RpZmllcnMgPSBnZXRXZWJJbnB1
dE1vZGlmaWVycyhldmVudCk7CiAgICAgdGltZVN0YW1wU2Vjb25kcyA9IGV2ZW50LnRpbWVTdGFt
cCgpIC8gbWlsbGlzUGVyU2Vjb25kOwogCi0gICAgYWRkVG91Y2hQb2ludHMoZXZlbnQudHlwZSgp
LCBldmVudC50b3VjaGVzKCksIHdpZGdldC0+bG9jYXRpb24oKSwgdG91Y2hlcywgJnRvdWNoZXNM
ZW5ndGgpOwotICAgIGFkZFRvdWNoUG9pbnRzKGV2ZW50LnR5cGUoKSwgZXZlbnQuY2hhbmdlZFRv
dWNoZXMoKSwgd2lkZ2V0LT5sb2NhdGlvbigpLCBjaGFuZ2VkVG91Y2hlcywgJmNoYW5nZWRUb3Vj
aGVzTGVuZ3RoKTsKLSAgICBhZGRUb3VjaFBvaW50cyhldmVudC50eXBlKCksIGV2ZW50LnRhcmdl
dFRvdWNoZXMoKSwgd2lkZ2V0LT5sb2NhdGlvbigpLCB0YXJnZXRUb3VjaGVzLCAmdGFyZ2V0VG91
Y2hlc0xlbmd0aCk7CisgICAgYWRkVG91Y2hQb2ludHMoZXZlbnQudHlwZSgpLCBldmVudC50b3Vj
aGVzKCksIHRvdWNoZXMsICZ0b3VjaGVzTGVuZ3RoLCByZW5kZXJPYmplY3QpOworICAgIGFkZFRv
dWNoUG9pbnRzKGV2ZW50LnR5cGUoKSwgZXZlbnQuY2hhbmdlZFRvdWNoZXMoKSwgY2hhbmdlZFRv
dWNoZXMsICZjaGFuZ2VkVG91Y2hlc0xlbmd0aCwgcmVuZGVyT2JqZWN0KTsKKyAgICBhZGRUb3Vj
aFBvaW50cyhldmVudC50eXBlKCksIGV2ZW50LnRhcmdldFRvdWNoZXMoKSwgdGFyZ2V0VG91Y2hl
cywgJnRhcmdldFRvdWNoZXNMZW5ndGgsIHJlbmRlck9iamVjdCk7CiB9CiAKICNlbmRpZiAvLyBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQogCiAjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQotV2ViR2Vz
dHVyZUV2ZW50QnVpbGRlcjo6V2ViR2VzdHVyZUV2ZW50QnVpbGRlcihjb25zdCBXaWRnZXQqIHdp
ZGdldCwgY29uc3QgR2VzdHVyZUV2ZW50JiBldmVudCkKK1dlYkdlc3R1cmVFdmVudEJ1aWxkZXI6
OldlYkdlc3R1cmVFdmVudEJ1aWxkZXIoY29uc3QgV2lkZ2V0KiB3aWRnZXQsIGNvbnN0IFdlYkNv
cmU6OlJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0LCBjb25zdCBHZXN0dXJlRXZlbnQmIGV2ZW50
KQogewogICAgIGlmIChldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLmdlc3R1cmV0YXBFdmVu
dCkKICAgICAgICAgdHlwZSA9IEdlc3R1cmVUYXA7CkBAIC01ODQsOCArNTg4LDkgQEAgV2ViR2Vz
dHVyZUV2ZW50QnVpbGRlcjo6V2ViR2VzdHVyZUV2ZW50QnVpbGRlcihjb25zdCBXaWRnZXQqIHdp
ZGdldCwgY29uc3QgR2VzdHUKIAogICAgIGdsb2JhbFggPSBldmVudC5zY3JlZW5YKCk7CiAgICAg
Z2xvYmFsWSA9IGV2ZW50LnNjcmVlblkoKTsKLSAgICB4ID0gZXZlbnQuYWJzb2x1dGVMb2NhdGlv
bigpLngoKSAtIHdpZGdldC0+bG9jYXRpb24oKS54KCk7Ci0gICAgeSA9IGV2ZW50LmFic29sdXRl
TG9jYXRpb24oKS55KCkgLSB3aWRnZXQtPmxvY2F0aW9uKCkueSgpOworICAgIEludFBvaW50IGxv
Y2FsUG9pbnQgPSBjb252ZXJ0TG9jYXRpb25Gb3JSZW5kZXJPYmplY3QoZXZlbnQuYWJzb2x1dGVM
b2NhdGlvbigpLCByZW5kZXJPYmplY3QpOworICAgIHggPSBsb2NhbFBvaW50LngoKTsKKyAgICB5
ID0gbG9jYWxQb2ludC55KCk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29u
dmVyc2lvbi5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZl
cnNpb24uaAppbmRleCA0ODk3NWE0MDQ2YjIxMmIwZjJkYjk5MmJlNjRiOGM4MzQ5NzkwZThiLi4y
MDNlYjliZTkyZDVkOGU5MDNmZjAyZjZmMDdlYmEwNDQ2Nzg4NGI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmgKQEAgLTQy
LDkgKzQyLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEdlc3R1cmVFdmVudDsKIGNs
YXNzIEtleWJvYXJkRXZlbnQ7CiBjbGFzcyBNb3VzZUV2ZW50OworY2xhc3MgUmVuZGVyT2JqZWN0
OwogY2xhc3MgU2Nyb2xsVmlldzsKLWNsYXNzIFdoZWVsRXZlbnQ7CiBjbGFzcyBUb3VjaEV2ZW50
OworY2xhc3MgV2hlZWxFdmVudDsKIGNsYXNzIFdpZGdldDsKIH0KIApAQCAtOTcsMjEgKzk4LDIx
IEBAIHB1YmxpYzoKIH07CiAjZW5kaWYKIAotLy8gQ29udmVydHMgYSBXZWJDb3JlOjpNb3VzZUV2
ZW50IHRvIGEgY29ycmVzcG9uZGluZyBXZWJNb3VzZUV2ZW50LiB2aWV3IGlzCi0vLyB0aGUgU2Ny
b2xsVmlldyBjb3JyZXNwb25kaW5nIHRvIHRoZSBldmVudC4KKy8vIENvbnZlcnRzIGEgV2ViQ29y
ZTo6TW91c2VFdmVudCB0byBhIGNvcnJlc3BvbmRpbmcgV2ViTW91c2VFdmVudC4gd2lkZ2V0IGFu
ZAorLy8gcmVuZGVyT2JqZWN0IGFyZSB0aGUgV2lkZ2V0IGFuZCBSZW5kZXJPYmplY3QgY29ycmVz
cG9uZGluZyB0byB0aGUgZXZlbnQuCiAvLyBOT1RFOiBUaGlzIGlzIG9ubHkgaW1wbGVtZW50ZWQg
Zm9yIG1vdXNlbW92ZSwgbW91c2VvdmVyLCBtb3VzZW91dCwKIC8vIG1vdXNlZG93biBhbmQgbW91
c2V1cC4gIElmIHRoZSBldmVudCBtYXBwaW5nIGZhaWxzLCB0aGUgZXZlbnQgdHlwZSB3aWxsCiAv
LyBiZSBzZXQgdG8gVW5kZWZpbmVkLgogY2xhc3MgV2ViTW91c2VFdmVudEJ1aWxkZXIgOiBwdWJs
aWMgV2ViTW91c2VFdmVudCB7CiBwdWJsaWM6Ci0gICAgV2ViTW91c2VFdmVudEJ1aWxkZXIoY29u
c3QgV2ViQ29yZTo6V2lkZ2V0KiwgY29uc3QgV2ViQ29yZTo6TW91c2VFdmVudCYpOworICAgIFdl
Yk1vdXNlRXZlbnRCdWlsZGVyKGNvbnN0IFdlYkNvcmU6OldpZGdldCosIGNvbnN0IFdlYkNvcmU6
OlJlbmRlck9iamVjdCosIGNvbnN0IFdlYkNvcmU6Ok1vdXNlRXZlbnQmKTsKIH07CiAKIC8vIENv
bnZlcnRzIGEgV2ViQ29yZTo6V2hlZWxFdmVudCB0byBhIGNvcnJlc3BvbmRpbmcgV2ViTW91c2VX
aGVlbEV2ZW50LgogLy8gSWYgdGhlIGV2ZW50IG1hcHBpbmcgZmFpbHMsIHRoZSBldmVudCB0eXBl
IHdpbGwgYmUgc2V0IHRvIFVuZGVmaW5lZC4KIGNsYXNzIFdlYk1vdXNlV2hlZWxFdmVudEJ1aWxk
ZXIgOiBwdWJsaWMgV2ViTW91c2VXaGVlbEV2ZW50IHsKIHB1YmxpYzoKLSAgICBXZWJNb3VzZVdo
ZWVsRXZlbnRCdWlsZGVyKGNvbnN0IFdlYkNvcmU6OldpZGdldCosIGNvbnN0IFdlYkNvcmU6Oldo
ZWVsRXZlbnQmKTsKKyAgICBXZWJNb3VzZVdoZWVsRXZlbnRCdWlsZGVyKGNvbnN0IFdlYkNvcmU6
OldpZGdldCosIGNvbnN0IFdlYkNvcmU6OlJlbmRlck9iamVjdCosIGNvbnN0IFdlYkNvcmU6Oldo
ZWVsRXZlbnQmKTsKIH07CiAKIC8vIENvbnZlcnRzIGEgV2ViQ29yZTo6S2V5Ym9hcmRFdmVudCB0
byBhIGNvcnJlc3BvbmRpbmcgV2ViS2V5Ym9hcmRFdmVudC4KQEAgLTEyOCw3ICsxMjksNyBAQCBw
dWJsaWM6CiAvLyBleGNlZWRpbmcgdGhhdCBjYXAgd2lsbCBiZSBkcm9wcGVkLgogY2xhc3MgV2Vi
VG91Y2hFdmVudEJ1aWxkZXIgOiBwdWJsaWMgV2ViVG91Y2hFdmVudCB7CiBwdWJsaWM6Ci0gICAg
V2ViVG91Y2hFdmVudEJ1aWxkZXIoY29uc3QgV2ViQ29yZTo6V2lkZ2V0KiwgY29uc3QgV2ViQ29y
ZTo6VG91Y2hFdmVudCYpOworICAgIFdlYlRvdWNoRXZlbnRCdWlsZGVyKGNvbnN0IFdlYkNvcmU6
OldpZGdldCosIGNvbnN0IFdlYkNvcmU6OlJlbmRlck9iamVjdCosIGNvbnN0IFdlYkNvcmU6OlRv
dWNoRXZlbnQmKTsKIH07CiAjZW5kaWYgLy8gRU5BQkxFKFRPVUNIX0VWRU5UUykKIApAQCAtMTM3
LDcgKzEzOCw3IEBAIHB1YmxpYzoKIC8vIE5PVEU6IElmIGV2ZW50IG1hcHBpbmcgZmFpbHMsIHRo
ZSB0eXBlIHdpbGwgYmUgc2V0IHRvIFVuZGVmaW5lZC4KIGNsYXNzIFdlYkdlc3R1cmVFdmVudEJ1
aWxkZXIgOiBwdWJsaWMgV2ViR2VzdHVyZUV2ZW50IHsKIHB1YmxpYzoKLSAgICBXZWJHZXN0dXJl
RXZlbnRCdWlsZGVyKGNvbnN0IFdlYkNvcmU6OldpZGdldCosIGNvbnN0IFdlYkNvcmU6Okdlc3R1
cmVFdmVudCYpOworICAgIFdlYkdlc3R1cmVFdmVudEJ1aWxkZXIoY29uc3QgV2ViQ29yZTo6V2lk
Z2V0KiwgY29uc3QgV2ViQ29yZTo6UmVuZGVyT2JqZWN0KiwgY29uc3QgV2ViQ29yZTo6R2VzdHVy
ZUV2ZW50Jik7CiB9OwogI2VuZGlmIC8vIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNw
cAppbmRleCBlM2M0YmVmYjgzZjIxYWNlOWU4MDdhNWIwZmYzMTI0YmM1M2Y4Mjc2Li41MjNkNjg3
YzllNzJmODU4NmE3OGQ0M2YwY2E5NjMwYzE4YzFiNWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcApAQCAtNjU3LDcg
KzY1Nyw3IEBAIHZvaWQgV2ViUGx1Z2luQ29udGFpbmVySW1wbDo6aGFuZGxlTW91c2VFdmVudChN
b3VzZUV2ZW50KiBldmVudCkKICAgICAvLyBpbiB0aGUgY2FsbCB0byBIYW5kbGVFdmVudC4gU2Vl
IGh0dHA6Ly9iL2lzc3VlP2lkPTEzNjI5NDgKICAgICBGcmFtZVZpZXcqIHBhcmVudFZpZXcgPSBz
dGF0aWNfY2FzdDxGcmFtZVZpZXcqPihwYXJlbnQoKSk7CiAKLSAgICBXZWJNb3VzZUV2ZW50QnVp
bGRlciB3ZWJFdmVudCh0aGlzLCAqZXZlbnQpOworICAgIFdlYk1vdXNlRXZlbnRCdWlsZGVyIHdl
YkV2ZW50KHRoaXMsIG1fZWxlbWVudC0+cmVuZGVyZXIoKSwgKmV2ZW50KTsKICAgICBpZiAod2Vi
RXZlbnQudHlwZSA9PSBXZWJJbnB1dEV2ZW50OjpVbmRlZmluZWQpCiAgICAgICAgIHJldHVybjsK
IApAQCAtNjk4LDcgKzY5OCw3IEBAIHZvaWQgV2ViUGx1Z2luQ29udGFpbmVySW1wbDo6aGFuZGxl
TW91c2VFdmVudChNb3VzZUV2ZW50KiBldmVudCkKIAogdm9pZCBXZWJQbHVnaW5Db250YWluZXJJ
bXBsOjpoYW5kbGVXaGVlbEV2ZW50KFdoZWVsRXZlbnQqIGV2ZW50KQogewotICAgIFdlYk1vdXNl
V2hlZWxFdmVudEJ1aWxkZXIgd2ViRXZlbnQodGhpcywgKmV2ZW50KTsKKyAgICBXZWJNb3VzZVdo
ZWVsRXZlbnRCdWlsZGVyIHdlYkV2ZW50KHRoaXMsIG1fZWxlbWVudC0+cmVuZGVyZXIoKSwgKmV2
ZW50KTsKICAgICBpZiAod2ViRXZlbnQudHlwZSA9PSBXZWJJbnB1dEV2ZW50OjpVbmRlZmluZWQp
CiAgICAgICAgIHJldHVybjsKIApAQCAtNzQ5LDcgKzc0OSw3IEBAIHZvaWQgV2ViUGx1Z2luQ29u
dGFpbmVySW1wbDo6aGFuZGxlVG91Y2hFdmVudChUb3VjaEV2ZW50KiBldmVudCkKIHsKICAgICBp
ZiAoIW1faXNBY2NlcHRpbmdUb3VjaEV2ZW50cykKICAgICAgICAgcmV0dXJuOwotICAgIFdlYlRv
dWNoRXZlbnRCdWlsZGVyIHdlYkV2ZW50KHRoaXMsICpldmVudCk7CisgICAgV2ViVG91Y2hFdmVu
dEJ1aWxkZXIgd2ViRXZlbnQodGhpcywgbV9lbGVtZW50LT5yZW5kZXJlcigpLCAqZXZlbnQpOwog
ICAgIGlmICh3ZWJFdmVudC50eXBlID09IFdlYklucHV0RXZlbnQ6OlVuZGVmaW5lZCkKICAgICAg
ICAgcmV0dXJuOwogICAgIFdlYkN1cnNvckluZm8gY3Vyc29ySW5mbzsKQEAgLTc2MCw3ICs3NjAs
NyBAQCB2b2lkIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OmhhbmRsZVRvdWNoRXZlbnQoVG91Y2hF
dmVudCogZXZlbnQpCiAKIHZvaWQgV2ViUGx1Z2luQ29udGFpbmVySW1wbDo6aGFuZGxlR2VzdHVy
ZUV2ZW50KEdlc3R1cmVFdmVudCogZXZlbnQpCiB7Ci0gICAgV2ViR2VzdHVyZUV2ZW50QnVpbGRl
ciB3ZWJFdmVudCh0aGlzLCAqZXZlbnQpOworICAgIFdlYkdlc3R1cmVFdmVudEJ1aWxkZXIgd2Vi
RXZlbnQodGhpcywgbV9lbGVtZW50LT5yZW5kZXJlcigpLCAqZXZlbnQpOwogICAgIGlmICh3ZWJF
dmVudC50eXBlID09IFdlYklucHV0RXZlbnQ6OlVuZGVmaW5lZCkKICAgICAgICAgcmV0dXJuOwog
ICAgIFdlYkN1cnNvckluZm8gY3Vyc29ySW5mbzsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwMDI5NTY5MmE1MjA1OWIxNjBhMjE3NjcxYzFkNWI5
Njg5YTQ2ZWYzLi5kYmExMjYzODQzYmRhODBiZDZmZWVhODRmYTVhYzZkODE3ZGE0OTYxIDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMTItMTAtMDUgIFNhZHJ1bCBIYWJpYiBDaG93ZGh1cnkgIDxzYWRydWxAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gTWFrZSBzdXJlIGV2ZW50cyBhcmUgdHJhbnNm
b3JtZWQgY29ycmVjdGx5IGZvciBwbHVnaW5zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODkyNTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgdGhlIHRlc3QgcGx1Z2luIHRvIHByaW50IGV2ZW50
IGRldGFpbHMgZm9yIG1vdXNlIGFuZCBnZXN0dXJlIGV2ZW50cy4KKworICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RXZWJQbHVnaW4uY3BwOgorICAgICAgICAocHJpbnRFdmVu
dERldGFpbHMpOgorCiAyMDEyLTEwLTA0ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5n
LmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdIEFkZCBBUElzIHRvIGdldC9zZXQgdGhlIGZyYW1l
IGZsYXR0ZW5pbmcuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0V2ViUGx1Z2luLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RXZWJQ
bHVnaW4uY3BwCmluZGV4IGU5NWMwZTRiNTUyZjVlNGU4MDQ3NTZkYjBiMjFmZjYxYWI3NDY4ZjQu
Ljg2ODc5NzU1NjM2YWNiYWY3N2YzZjU4YTgwODBhMGU4MzQ0NDQ3ZTkgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RXZWJQbHVnaW4uY3BwCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RXZWJQbHVnaW4uY3BwCkBAIC0xMDksNiArMTA5
LDEyIEBAIHN0YXRpYyB2b2lkIHByaW50RXZlbnREZXRhaWxzKGNvbnN0IFdlYktpdDo6V2ViSW5w
dXRFdmVudCYgZXZlbnQpCiAgICAgICAgIHByaW50VG91Y2hMaXN0KHRvdWNoLnRvdWNoZXMsIHRv
dWNoLnRvdWNoZXNMZW5ndGgpOwogICAgICAgICBwcmludFRvdWNoTGlzdCh0b3VjaC5jaGFuZ2Vk
VG91Y2hlcywgdG91Y2guY2hhbmdlZFRvdWNoZXNMZW5ndGgpOwogICAgICAgICBwcmludFRvdWNo
TGlzdCh0b3VjaC50YXJnZXRUb3VjaGVzLCB0b3VjaC50YXJnZXRUb3VjaGVzTGVuZ3RoKTsKKyAg
ICB9IGVsc2UgaWYgKFdlYktpdDo6V2ViSW5wdXRFdmVudDo6aXNNb3VzZUV2ZW50VHlwZShldmVu
dC50eXBlKSkgeworICAgICAgICBjb25zdCBXZWJLaXQ6OldlYk1vdXNlRXZlbnQmIG1vdXNlID0g
c3RhdGljX2Nhc3Q8Y29uc3QgV2ViS2l0OjpXZWJNb3VzZUV2ZW50Jj4oZXZlbnQpOworICAgICAg
ICBwcmludGYoIiogJWQsICVkXG4iLCBtb3VzZS54LCBtb3VzZS55KTsKKyAgICB9IGVsc2UgaWYg
KFdlYktpdDo6V2ViSW5wdXRFdmVudDo6aXNHZXN0dXJlRXZlbnRUeXBlKGV2ZW50LnR5cGUpKSB7
CisgICAgICAgIGNvbnN0IFdlYktpdDo6V2ViR2VzdHVyZUV2ZW50JiBnZXN0dXJlID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgV2ViS2l0OjpXZWJHZXN0dXJlRXZlbnQmPihldmVudCk7CisgICAgICAgIHBy
aW50ZigiKiAlZCwgJWRcbiIsIGdlc3R1cmUueCwgZ2VzdHVyZS55KTsKICAgICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCBjNmJjN2E4OGJjYzkxM2I5MGY5NmIxZTllNTU1NDEyZjgwOTRlYjY2Li4yMmU1NmIwZDMy
MzE4YjIyZWIwZWRkNGU0ZjhlMTc5NTkyMDI2MDliIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MTItMTAtMDUgIFNhZHJ1bCBIYWJpYiBDaG93ZGh1cnkgIDxzYWRydWxAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtjaHJvbWl1bV0gTWFrZSBzdXJlIGV2ZW50cyBhcmUgdHJhbnNmb3JtZWQgY29y
cmVjdGx5IGZvciBwbHVnaW5zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODkyNTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGRlZCB0ZXN0cyB0byBtYWtlIHN1cmUgdGhhdCBldmVudHMgYXJlIHRyYW5z
Zm9ybWVkIHByb3Blcmx5LgorCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vcGx1Z2lucy90
cmFuc2Zvcm1lZC1ldmVudHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9jaHJvbWl1bS9wbHVnaW5zL3RyYW5zZm9ybWVkLWV2ZW50cy5odG1sOiBBZGRlZC4KKwogMjAx
Mi0xMC0wNCAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBV
cGRhdGUgY2hyb21pdW0gYmFzZWxpbmVzIGZvciA1MDA2Nzc5Lmh0bWwgYW5kIHBhaW50LXN1YnJl
Y3QtZ3JpZC5odG1sLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
cGx1Z2lucy90cmFuc2Zvcm1lZC1ldmVudHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vcGx1Z2lucy90cmFuc2Zvcm1lZC1ldmVudHMtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQ1MDRlYjFmN2Q4Mzk5MDk0ZTVkYmI2YTFkNGZkY2QxNTQ0ODZhMzYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9wbHVnaW5zL3RyYW5z
Zm9ybWVkLWV2ZW50cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzMSBAQAorUGx1Z2luIHJlY2Vp
dmVkIGV2ZW50OiBUb3VjaFN0YXJ0CisqIDEwLCAxMDogUHJlc3NlZAorKiAxMCwgMTA6IFByZXNz
ZWQKKyogMTAsIDEwOiBQcmVzc2VkCitQbHVnaW4gcmVjZWl2ZWQgZXZlbnQ6IFRvdWNoTW92ZQor
KiAyMCwgMTU6IE1vdmVkCisqIDIwLCAxNTogTW92ZWQKKyogMjAsIDE1OiBNb3ZlZAorUGx1Z2lu
IHJlY2VpdmVkIGV2ZW50OiBUb3VjaEVuZAorKiAyMCwgMTU6IFJlbGVhc2VkCitQbHVnaW4gcmVj
ZWl2ZWQgZXZlbnQ6IE1vdXNlRW50ZXIKKyogMTAsIDEwCitQbHVnaW4gcmVjZWl2ZWQgZXZlbnQ6
IE1vdXNlTW92ZQorKiAxMCwgMTAKK1BsdWdpbiByZWNlaXZlZCBldmVudDogTW91c2VEb3duCisq
IDEwLCAxMAorUGx1Z2luIHJlY2VpdmVkIGV2ZW50OiBNb3VzZU1vdmUKKyogMjAsIDE1CitQbHVn
aW4gcmVjZWl2ZWQgZXZlbnQ6IE1vdXNlVXAKKyogMjAsIDE1CitQbHVnaW4gcmVjZWl2ZWQgZXZl
bnQ6IEdlc3R1cmVUYXBEb3duCisqIDEwLCAxMAorUGx1Z2luIHJlY2VpdmVkIGV2ZW50OiBHZXN0
dXJlVGFwCisqIDEwLCAxMAorUGx1Z2luIHJlY2VpdmVkIGV2ZW50OiBNb3VzZU1vdmUKKyogMTAs
IDEwCitQbHVnaW4gcmVjZWl2ZWQgZXZlbnQ6IE1vdXNlRG93bgorKiAxMCwgMTAKK1BsdWdpbiBy
ZWNlaXZlZCBldmVudDogTW91c2VVcAorKiAxMCwgMTAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vcGx1Z2lucy90cmFuc2Zvcm1lZC1ldmVudHMuaHRtbCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3BsdWdpbnMvdHJhbnNmb3JtZWQtZXZlbnRzLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZmIxMTdmMThmOTk5ZmQzYzdhNmIyNGFhOTAxZWJiZjBmOTE2NjQ5ZAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3BsdWdpbnMv
dHJhbnNmb3JtZWQtZXZlbnRzLmh0bWwKQEAgLTAsMCArMSw0NiBAQAorPGh0bWw+Cis8aGVhZD4K
KzxzdHlsZT4KKyAgI3BsdWdpbiB7CisgICAgd2lkdGg6IDE1MHB4OworICAgIGhlaWdodDogMTUw
cHg7CisgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7CisgIH0KKzwvc3R5bGU+
Cis8L2hlYWQ+CisKKzxib2R5PgorPGVtYmVkIGlkPSJwbHVnaW4iIHR5cGU9ImFwcGxpY2F0aW9u
L3gtd2Via2l0LXRlc3Qtd2VicGx1Z2luIiBhY2NlcHRzLXRvdWNoPSJ0cnVlIiBwcmludC1ldmVu
dC1kZXRhaWxzPSJ0cnVlIj48L2VtYmVkPgorPHNjcmlwdD4KKworICAgIGlmICghd2luZG93LnRl
c3RSdW5uZXIgfHwgIXdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICBkb2N1bWVudC53cml0
ZSgiVGhpcyB0ZXN0IGRvZXMgbm90IHdvcmsgaW4gbWFudWFsIG1vZGUuIik7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAgLy8gVGVzdCB0
b3VjaCBldmVudHMuCisgICAgICAgIHZhciBwb3NpdGlvblggPSBwbHVnaW4ub2Zmc2V0TGVmdCAr
IHBsdWdpbi5vZmZzZXRXaWR0aCAtIDEwOworICAgICAgICB2YXIgcG9zaXRpb25ZID0gcGx1Z2lu
Lm9mZnNldFRvcCArIDEwOworICAgICAgICBldmVudFNlbmRlci5hZGRUb3VjaFBvaW50KHBvc2l0
aW9uWCwgcG9zaXRpb25ZKTsKKyAgICAgICAgZXZlbnRTZW5kZXIudG91Y2hTdGFydCgpOworICAg
ICAgICBldmVudFNlbmRlci51cGRhdGVUb3VjaFBvaW50KDAsIHBvc2l0aW9uWCAtIDUsIHBvc2l0
aW9uWSArIDEwKTsKKyAgICAgICAgZXZlbnRTZW5kZXIudG91Y2hNb3ZlKCk7CisgICAgICAgIGV2
ZW50U2VuZGVyLnJlbGVhc2VUb3VjaFBvaW50KDApOworICAgICAgICBldmVudFNlbmRlci50b3Vj
aEVuZCgpOworCisgICAgICAgIC8vIFRlc3QgbW91c2UgZXZlbnRzLgorICAgICAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbyhwb3NpdGlvblgsIHBvc2l0aW9uWSk7CisgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlRG93bigpOworICAgICAgICBldmVudFNlbmRlci5sZWFwRm9yd2FyZCgxMCk7Cisg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHBvc2l0aW9uWCAtIDUsIHBvc2l0aW9uWSAr
IDEwKTsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworCisgICAgICAgIC8vIFRlc3Qg
Z2VzdHVyZSBldmVudHMuCisgICAgICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVUYXBEb3duKHBvc2l0
aW9uWCwgcG9zaXRpb25ZKTsKKyAgICAgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVRhcChwb3NpdGlv
blgsIHBvc2l0aW9uWSk7CisgICAgfQorCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167421</attachid>
            <date>2012-10-05 17:22:08 -0700</date>
            <delta_ts>2012-10-08 17:10:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89250-20121005202116.patch</filename>
            <type>text/plain</type>
            <size>19683</size>
            <attacher name="Sadrul Habib Chowdhury">sadrul</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNDUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDAxNTZiYWM2ZjIxODBmYmM4MjZhNTgwNTE0ODY5ODRlOWI3MDA2ZjQuLjU1M2U0MThjM2YwZDNl
NzkxOGQ0MmU4Zjk2ZTcyYTMwYmYwYTc0YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzUgQEAKKzIwMTItMTAtMDUgIFNhZHJ1bCBIYWJpYiBDaG93ZGh1cnkgIDxzYWRy
dWxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gTWFrZSBzdXJlIGV2ZW50cyBh
cmUgdHJhbnNmb3JtZWQgY29ycmVjdGx5IGZvciBwbHVnaW5zLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODkyNTAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgZXZlbnRzIGFycml2aW5nIGluIFdlYlBs
dWdpbkNvbnRhaW5lckltcGwgYXJlIGluIHRoZSBjb29yZGluYXRlCisgICAgICAgIHNwYWNlIG9m
IHRoZSBwYWdlIGNvbnRhaW5pbmcgdGhlIHBsdWdpbi4gQmVmb3JlIHRoZSBldmVudHMgYXJlCisg
ICAgICAgIGRpc3BhdGNoZWQgdG8gdGhlIHBsdWdpbiwgaXQgaXMgbmVjZXNzYXJ5IHRvIGNvbnZl
cnQgdGhlbSBpbnRvIHRoZQorICAgICAgICBwbHVnaW4ncyBvd24gY29vcmRpbmF0ZSBzeXN0ZW0u
CisKKyAgICAgICAgKiBzcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uY3BwOgorICAgICAgICAo
V2ViS2l0Ojpjb252ZXJ0TG9jYXRpb25Gb3JSZW5kZXJPYmplY3QpOiBUcmFuc2Zvcm1zIGFuIGV2
ZW50IGxvY2F0aW9uIGZvciB0aGUgc3BlY2lmaWVkIFJlbmRlck9iamVjdC4KKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJLaXQ6OnVwZGF0ZVdlYk1vdXNlRXZlbnRGcm9tV2ViQ29yZU1v
dXNlRXZlbnQpOiBSZWZhY3RvcmVkIGNvZGUgdG8gcmVkdWNlIGNvZGUtZHVwbGljYXRpb24gZm9y
IG1vdXNlIGFuZCB3aGVlbCBldmVudHMuCisgICAgICAgIChXZWJLaXQ6OldlYk1vdXNlRXZlbnRC
dWlsZGVyOjpXZWJNb3VzZUV2ZW50QnVpbGRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYk1vdXNl
V2hlZWxFdmVudEJ1aWxkZXI6OldlYk1vdXNlV2hlZWxFdmVudEJ1aWxkZXIpOgorICAgICAgICAo
V2ViS2l0OjphZGRUb3VjaFBvaW50cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlRvdWNoRXZlbnRC
dWlsZGVyOjpXZWJUb3VjaEV2ZW50QnVpbGRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkdlc3R1
cmVFdmVudEJ1aWxkZXI6OldlYkdlc3R1cmVFdmVudEJ1aWxkZXIpOgorICAgICAgICAqIHNyYy9X
ZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViTW91c2VFdmVudEJ1aWxkZXIpOgorICAgICAgICAoV2ViTW91
c2VXaGVlbEV2ZW50QnVpbGRlcik6CisgICAgICAgIChXZWJUb3VjaEV2ZW50QnVpbGRlcik6Cisg
ICAgICAgIChXZWJHZXN0dXJlRXZlbnRCdWlsZGVyKToKKyAgICAgICAgKiBzcmMvV2ViUGx1Z2lu
Q29udGFpbmVySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkNvbnRhaW5lcklt
cGw6OmhhbmRsZU1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5Db250YWlu
ZXJJbXBsOjpoYW5kbGVXaGVlbEV2ZW50KToKKwogMjAxMi0xMC0wNCAgQWxwaGEgTGFtICA8aGNs
YW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZC4gQ2hyb21pdW0gREVQUyByb2xs
LiBVcGRhdGUgdG8gcjE2MDI4MS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcAppbmRleCAzODcxZjE3M2IzOWVkMDI2MDRk
ZmYyNGJkZGQ3NmVkNDI1YWFlMjY2Li4zZjlmZTA5MWMyNGZmODM2Yjk4NWRkYmE0ZTQxZTM1OWM1
ZTdhMGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2
ZW50Q29udmVyc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5w
dXRFdmVudENvbnZlcnNpb24uY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiUGxhdGZv
cm1LZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAj
aW5jbHVkZSAiU2Nyb2xsVmlldy5oIgogI2luY2x1ZGUgIlRvdWNoLmgiCiAjaW5jbHVkZSAiVG91
Y2hFdmVudC5oIgpAQCAtMzk2LDcgKzM5NywyOCBAQCBzdGF0aWMgaW50IGdldFdlYklucHV0TW9k
aWZpZXJzKGNvbnN0IFVJRXZlbnRXaXRoS2V5U3RhdGUmIGV2ZW50KQogICAgIHJldHVybiBtb2Rp
ZmllcnM7CiB9CiAKLVdlYk1vdXNlRXZlbnRCdWlsZGVyOjpXZWJNb3VzZUV2ZW50QnVpbGRlcihj
b25zdCBXaWRnZXQqIHdpZGdldCwgY29uc3QgTW91c2VFdmVudCYgZXZlbnQpCitzdGF0aWMgSW50
UG9pbnQgY29udmVydExvY2F0aW9uRm9yUmVuZGVyT2JqZWN0KGNvbnN0IExheW91dFBvaW50JiBs
b2NhdGlvbiwgY29uc3QgV2ViQ29yZTo6UmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3QpCit7Cisg
ICAgcmV0dXJuIHJvdW5kZWRJbnRQb2ludChyZW5kZXJPYmplY3QuYWJzb2x1dGVUb0xvY2FsKGxv
Y2F0aW9uLCBmYWxzZSwgdHJ1ZSkpOworfQorCitzdGF0aWMgdm9pZCB1cGRhdGVXZWJNb3VzZUV2
ZW50RnJvbVdlYkNvcmVNb3VzZUV2ZW50KGNvbnN0IE1vdXNlRXZlbnQmIGV2ZW50LCBjb25zdCBX
aWRnZXQmIHdpZGdldCwgY29uc3QgV2ViQ29yZTo6UmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3Qs
IFdlYk1vdXNlRXZlbnQmIHdlYkV2ZW50KQoreworICAgIHdlYkV2ZW50LnRpbWVTdGFtcFNlY29u
ZHMgPSBldmVudC50aW1lU3RhbXAoKSAvIG1pbGxpc1BlclNlY29uZDsKKyAgICB3ZWJFdmVudC5t
b2RpZmllcnMgPSBnZXRXZWJJbnB1dE1vZGlmaWVycyhldmVudCk7CisKKyAgICBTY3JvbGxWaWV3
KiB2aWV3ID0gd2lkZ2V0LnBhcmVudCgpOworICAgIEludFBvaW50IHdpbmRvd1BvaW50ID0gdmll
dy0+Y29udGVudHNUb1dpbmRvdyhJbnRQb2ludChldmVudC5hYnNvbHV0ZUxvY2F0aW9uKCkueCgp
LCBldmVudC5hYnNvbHV0ZUxvY2F0aW9uKCkueSgpKSk7CisgICAgd2ViRXZlbnQuZ2xvYmFsWCA9
IGV2ZW50LnNjcmVlblgoKTsKKyAgICB3ZWJFdmVudC5nbG9iYWxZID0gZXZlbnQuc2NyZWVuWSgp
OworICAgIHdlYkV2ZW50LndpbmRvd1ggPSB3aW5kb3dQb2ludC54KCk7CisgICAgd2ViRXZlbnQu
d2luZG93WSA9IHdpbmRvd1BvaW50LnkoKTsKKyAgICBJbnRQb2ludCBsb2NhbFBvaW50ID0gY29u
dmVydExvY2F0aW9uRm9yUmVuZGVyT2JqZWN0KGV2ZW50LmFic29sdXRlTG9jYXRpb24oKSwgcmVu
ZGVyT2JqZWN0KTsKKyAgICB3ZWJFdmVudC54ID0gbG9jYWxQb2ludC54KCk7CisgICAgd2ViRXZl
bnQueSA9IGxvY2FsUG9pbnQueSgpOworfQorCitXZWJNb3VzZUV2ZW50QnVpbGRlcjo6V2ViTW91
c2VFdmVudEJ1aWxkZXIoY29uc3QgV2lkZ2V0KiB3aWRnZXQsIGNvbnN0IFdlYkNvcmU6OlJlbmRl
ck9iamVjdCogcmVuZGVyT2JqZWN0LCBjb25zdCBNb3VzZUV2ZW50JiBldmVudCkKIHsKICAgICBp
ZiAoZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVudCkKICAgICAgICAg
dHlwZSA9IFdlYklucHV0RXZlbnQ6Ok1vdXNlTW92ZTsKQEAgLTQxMiw3ICs0MzQsOSBAQCBXZWJN
b3VzZUV2ZW50QnVpbGRlcjo6V2ViTW91c2VFdmVudEJ1aWxkZXIoY29uc3QgV2lkZ2V0KiB3aWRn
ZXQsIGNvbnN0IE1vdXNlRXZlbgogICAgICAgICB0eXBlID0gV2ViSW5wdXRFdmVudDo6Q29udGV4
dE1lbnU7CiAgICAgZWxzZQogICAgICAgICByZXR1cm47IC8vIFNraXAgYWxsIG90aGVyIG1vdXNl
IGV2ZW50cy4KLSAgICB0aW1lU3RhbXBTZWNvbmRzID0gZXZlbnQudGltZVN0YW1wKCkgLyBtaWxs
aXNQZXJTZWNvbmQ7CisKKyAgICB1cGRhdGVXZWJNb3VzZUV2ZW50RnJvbVdlYkNvcmVNb3VzZUV2
ZW50KGV2ZW50LCAqd2lkZ2V0LCAqcmVuZGVyT2JqZWN0LCAqdGhpcyk7CisKICAgICBzd2l0Y2gg
KGV2ZW50LmJ1dHRvbigpKSB7CiAgICAgY2FzZSBMZWZ0QnV0dG9uOgogICAgICAgICBidXR0b24g
PSBXZWJNb3VzZUV2ZW50OjpCdXR0b25MZWZ0OwpAQCAtNDI0LDcgKzQ0OCw2IEBAIFdlYk1vdXNl
RXZlbnRCdWlsZGVyOjpXZWJNb3VzZUV2ZW50QnVpbGRlcihjb25zdCBXaWRnZXQqIHdpZGdldCwg
Y29uc3QgTW91c2VFdmVuCiAgICAgICAgIGJ1dHRvbiA9IFdlYk1vdXNlRXZlbnQ6OkJ1dHRvblJp
Z2h0OwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgbW9kaWZpZXJzID0gZ2V0V2ViSW5wdXRN
b2RpZmllcnMoZXZlbnQpOwogICAgIGlmIChldmVudC5idXR0b25Eb3duKCkpIHsKICAgICAgICAg
c3dpdGNoIChldmVudC5idXR0b24oKSkgewogICAgICAgICBjYXNlIExlZnRCdXR0b246CkBAIC00
MzgsMTUgKzQ2MSw2IEBAIFdlYk1vdXNlRXZlbnRCdWlsZGVyOjpXZWJNb3VzZUV2ZW50QnVpbGRl
cihjb25zdCBXaWRnZXQqIHdpZGdldCwgY29uc3QgTW91c2VFdmVuCiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgIH0KLSAgICBTY3JvbGxWaWV3KiB2aWV3ID0gd2lkZ2V0LT5wYXJl
bnQoKTsKLSAgICBJbnRQb2ludCBwID0gdmlldy0+Y29udGVudHNUb1dpbmRvdygKLSAgICAgICAg
SW50UG9pbnQoZXZlbnQuYWJzb2x1dGVMb2NhdGlvbigpLngoKSwgZXZlbnQuYWJzb2x1dGVMb2Nh
dGlvbigpLnkoKSkpOwotICAgIGdsb2JhbFggPSBldmVudC5zY3JlZW5YKCk7Ci0gICAgZ2xvYmFs
WSA9IGV2ZW50LnNjcmVlblkoKTsKLSAgICB3aW5kb3dYID0gcC54KCk7Ci0gICAgd2luZG93WSA9
IHAueSgpOwotICAgIHggPSBldmVudC5hYnNvbHV0ZUxvY2F0aW9uKCkueCgpIC0gd2lkZ2V0LT5s
b2NhdGlvbigpLngoKTsKLSAgICB5ID0gZXZlbnQuYWJzb2x1dGVMb2NhdGlvbigpLnkoKSAtIHdp
ZGdldC0+bG9jYXRpb24oKS55KCk7CiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICBtb3Zl
bWVudFggPSBldmVudC53ZWJraXRNb3ZlbWVudFgoKTsKICAgICBtb3ZlbWVudFkgPSBldmVudC53
ZWJraXRNb3ZlbWVudFkoKTsKQEAgLTQ1NCwyMiArNDY4LDEyIEBAIFdlYk1vdXNlRXZlbnRCdWls
ZGVyOjpXZWJNb3VzZUV2ZW50QnVpbGRlcihjb25zdCBXaWRnZXQqIHdpZGdldCwgY29uc3QgTW91
c2VFdmVuCiAgICAgY2xpY2tDb3VudCA9IGV2ZW50LmRldGFpbCgpOwogfQogCi1XZWJNb3VzZVdo
ZWVsRXZlbnRCdWlsZGVyOjpXZWJNb3VzZVdoZWVsRXZlbnRCdWlsZGVyKGNvbnN0IFdpZGdldCog
d2lkZ2V0LCBjb25zdCBXaGVlbEV2ZW50JiBldmVudCkKK1dlYk1vdXNlV2hlZWxFdmVudEJ1aWxk
ZXI6OldlYk1vdXNlV2hlZWxFdmVudEJ1aWxkZXIoY29uc3QgV2lkZ2V0KiB3aWRnZXQsIGNvbnN0
IFdlYkNvcmU6OlJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0LCBjb25zdCBXaGVlbEV2ZW50JiBl
dmVudCkKIHsKICAgICBpZiAoZXZlbnQudHlwZSgpICE9IGV2ZW50TmFtZXMoKS5tb3VzZXdoZWVs
RXZlbnQpCiAgICAgICAgIHJldHVybjsKICAgICB0eXBlID0gV2ViSW5wdXRFdmVudDo6TW91c2VX
aGVlbDsKLSAgICB0aW1lU3RhbXBTZWNvbmRzID0gZXZlbnQudGltZVN0YW1wKCkgLyBtaWxsaXNQ
ZXJTZWNvbmQ7Ci0gICAgbW9kaWZpZXJzID0gZ2V0V2ViSW5wdXRNb2RpZmllcnMoZXZlbnQpOwot
ICAgIFNjcm9sbFZpZXcqIHZpZXcgPSB3aWRnZXQtPnBhcmVudCgpOwotICAgIEludFBvaW50IHAg
PSB2aWV3LT5jb250ZW50c1RvV2luZG93KAotICAgICAgICBJbnRQb2ludChldmVudC5hYnNvbHV0
ZUxvY2F0aW9uKCkueCgpLCBldmVudC5hYnNvbHV0ZUxvY2F0aW9uKCkueSgpKSk7Ci0gICAgZ2xv
YmFsWCA9IGV2ZW50LnNjcmVlblgoKTsKLSAgICBnbG9iYWxZID0gZXZlbnQuc2NyZWVuWSgpOwot
ICAgIHdpbmRvd1ggPSBwLngoKTsKLSAgICB3aW5kb3dZID0gcC55KCk7Ci0gICAgeCA9IGV2ZW50
LmFic29sdXRlTG9jYXRpb24oKS54KCkgLSB3aWRnZXQtPmxvY2F0aW9uKCkueCgpOwotICAgIHkg
PSBldmVudC5hYnNvbHV0ZUxvY2F0aW9uKCkueSgpIC0gd2lkZ2V0LT5sb2NhdGlvbigpLnkoKTsK
KyAgICB1cGRhdGVXZWJNb3VzZUV2ZW50RnJvbVdlYkNvcmVNb3VzZUV2ZW50KGV2ZW50LCAqd2lk
Z2V0LCAqcmVuZGVyT2JqZWN0LCAqdGhpcyk7CiAgICAgZGVsdGFYID0gc3RhdGljX2Nhc3Q8Zmxv
YXQ+KGV2ZW50LnJhd0RlbHRhWCgpKTsKICAgICBkZWx0YVkgPSBzdGF0aWNfY2FzdDxmbG9hdD4o
ZXZlbnQucmF3RGVsdGFZKCkpOwogICAgIC8vIFRoZSAxMjAgaXMgZnJvbSBXaGVlbEV2ZW50Ojpp
bml0V2hlZWxFdmVudCgpLgpAQCAtNTE1LDcgKzUxOSw3IEBAIFdlYktleWJvYXJkRXZlbnRCdWls
ZGVyOjpXZWJLZXlib2FyZEV2ZW50QnVpbGRlcihjb25zdCBLZXlib2FyZEV2ZW50JiBldmVudCkK
IAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAKLXN0YXRpYyB2b2lkIGFkZFRvdWNoUG9pbnRz
KGNvbnN0IEF0b21pY1N0cmluZyYgdG91Y2hUeXBlLCBUb3VjaExpc3QqIHRvdWNoZXMsIGNvbnN0
IEludFBvaW50JiBvZmZzZXQsIFdlYlRvdWNoUG9pbnQqIHRvdWNoUG9pbnRzLCB1bnNpZ25lZCog
dG91Y2hQb2ludHNMZW5ndGgpCitzdGF0aWMgdm9pZCBhZGRUb3VjaFBvaW50cyhjb25zdCBBdG9t
aWNTdHJpbmcmIHRvdWNoVHlwZSwgVG91Y2hMaXN0KiB0b3VjaGVzLCBXZWJUb3VjaFBvaW50KiB0
b3VjaFBvaW50cywgdW5zaWduZWQqIHRvdWNoUG9pbnRzTGVuZ3RoLCBjb25zdCBXZWJDb3JlOjpS
ZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCkKIHsKICAgICB1bnNpZ25lZCBudW1iZXJPZlRvdWNo
ZXMgPSBzdGQ6Om1pbih0b3VjaGVzLT5sZW5ndGgoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFdl
YlRvdWNoRXZlbnQ6OnRvdWNoZXNMZW5ndGhDYXApKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbnVtYmVyT2ZUb3VjaGVzOyArK2kpIHsKQEAgLTUyNCw3ICs1MjgsNyBAQCBzdGF0aWMg
dm9pZCBhZGRUb3VjaFBvaW50cyhjb25zdCBBdG9taWNTdHJpbmcmIHRvdWNoVHlwZSwgVG91Y2hM
aXN0KiB0b3VjaGVzLCBjbwogICAgICAgICBXZWJUb3VjaFBvaW50IHBvaW50OwogICAgICAgICBw
b2ludC5pZCA9IHRvdWNoLT5pZGVudGlmaWVyKCk7CiAgICAgICAgIHBvaW50LnNjcmVlblBvc2l0
aW9uID0gV2ViUG9pbnQodG91Y2gtPnNjcmVlblgoKSwgdG91Y2gtPnNjcmVlblkoKSk7Ci0gICAg
ICAgIHBvaW50LnBvc2l0aW9uID0gV2ViUG9pbnQodG91Y2gtPnBhZ2VYKCkgLSBvZmZzZXQueCgp
LCB0b3VjaC0+cGFnZVkoKSAtIG9mZnNldC55KCkpOworICAgICAgICBwb2ludC5wb3NpdGlvbiA9
IGNvbnZlcnRMb2NhdGlvbkZvclJlbmRlck9iamVjdChMYXlvdXRQb2ludChJbnRQb2ludCh0b3Vj
aC0+cGFnZVgoKSwgdG91Y2gtPnBhZ2VZKCkpKSwgKnJlbmRlck9iamVjdCk7CiAgICAgICAgIHBv
aW50LnJhZGl1c1ggPSB0b3VjaC0+d2Via2l0UmFkaXVzWCgpOwogICAgICAgICBwb2ludC5yYWRp
dXNZID0gdG91Y2gtPndlYmtpdFJhZGl1c1koKTsKICAgICAgICAgcG9pbnQucm90YXRpb25Bbmds
ZSA9IHRvdWNoLT53ZWJraXRSb3RhdGlvbkFuZ2xlKCk7CkBAIC01MzYsNyArNTQwLDcgQEAgc3Rh
dGljIHZvaWQgYWRkVG91Y2hQb2ludHMoY29uc3QgQXRvbWljU3RyaW5nJiB0b3VjaFR5cGUsIFRv
dWNoTGlzdCogdG91Y2hlcywgY28KICAgICAqdG91Y2hQb2ludHNMZW5ndGggPSBudW1iZXJPZlRv
dWNoZXM7CiB9CiAKLVdlYlRvdWNoRXZlbnRCdWlsZGVyOjpXZWJUb3VjaEV2ZW50QnVpbGRlcihj
b25zdCBXaWRnZXQqIHdpZGdldCwgY29uc3QgVG91Y2hFdmVudCYgZXZlbnQpCitXZWJUb3VjaEV2
ZW50QnVpbGRlcjo6V2ViVG91Y2hFdmVudEJ1aWxkZXIoY29uc3QgV2lkZ2V0KiB3aWRnZXQsIGNv
bnN0IFdlYkNvcmU6OlJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0LCBjb25zdCBUb3VjaEV2ZW50
JiBldmVudCkKIHsKICAgICBpZiAoZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS50b3VjaHN0
YXJ0RXZlbnQpCiAgICAgICAgIHR5cGUgPSBUb3VjaFN0YXJ0OwpAQCAtNTU1LDE1ICs1NTksMTUg
QEAgV2ViVG91Y2hFdmVudEJ1aWxkZXI6OldlYlRvdWNoRXZlbnRCdWlsZGVyKGNvbnN0IFdpZGdl
dCogd2lkZ2V0LCBjb25zdCBUb3VjaEV2ZW4KICAgICBtb2RpZmllcnMgPSBnZXRXZWJJbnB1dE1v
ZGlmaWVycyhldmVudCk7CiAgICAgdGltZVN0YW1wU2Vjb25kcyA9IGV2ZW50LnRpbWVTdGFtcCgp
IC8gbWlsbGlzUGVyU2Vjb25kOwogCi0gICAgYWRkVG91Y2hQb2ludHMoZXZlbnQudHlwZSgpLCBl
dmVudC50b3VjaGVzKCksIHdpZGdldC0+bG9jYXRpb24oKSwgdG91Y2hlcywgJnRvdWNoZXNMZW5n
dGgpOwotICAgIGFkZFRvdWNoUG9pbnRzKGV2ZW50LnR5cGUoKSwgZXZlbnQuY2hhbmdlZFRvdWNo
ZXMoKSwgd2lkZ2V0LT5sb2NhdGlvbigpLCBjaGFuZ2VkVG91Y2hlcywgJmNoYW5nZWRUb3VjaGVz
TGVuZ3RoKTsKLSAgICBhZGRUb3VjaFBvaW50cyhldmVudC50eXBlKCksIGV2ZW50LnRhcmdldFRv
dWNoZXMoKSwgd2lkZ2V0LT5sb2NhdGlvbigpLCB0YXJnZXRUb3VjaGVzLCAmdGFyZ2V0VG91Y2hl
c0xlbmd0aCk7CisgICAgYWRkVG91Y2hQb2ludHMoZXZlbnQudHlwZSgpLCBldmVudC50b3VjaGVz
KCksIHRvdWNoZXMsICZ0b3VjaGVzTGVuZ3RoLCByZW5kZXJPYmplY3QpOworICAgIGFkZFRvdWNo
UG9pbnRzKGV2ZW50LnR5cGUoKSwgZXZlbnQuY2hhbmdlZFRvdWNoZXMoKSwgY2hhbmdlZFRvdWNo
ZXMsICZjaGFuZ2VkVG91Y2hlc0xlbmd0aCwgcmVuZGVyT2JqZWN0KTsKKyAgICBhZGRUb3VjaFBv
aW50cyhldmVudC50eXBlKCksIGV2ZW50LnRhcmdldFRvdWNoZXMoKSwgdGFyZ2V0VG91Y2hlcywg
JnRhcmdldFRvdWNoZXNMZW5ndGgsIHJlbmRlck9iamVjdCk7CiB9CiAKICNlbmRpZiAvLyBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQogCiAjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQotV2ViR2VzdHVy
ZUV2ZW50QnVpbGRlcjo6V2ViR2VzdHVyZUV2ZW50QnVpbGRlcihjb25zdCBXaWRnZXQqIHdpZGdl
dCwgY29uc3QgR2VzdHVyZUV2ZW50JiBldmVudCkKK1dlYkdlc3R1cmVFdmVudEJ1aWxkZXI6Oldl
Ykdlc3R1cmVFdmVudEJ1aWxkZXIoY29uc3QgV2lkZ2V0KiB3aWRnZXQsIGNvbnN0IFdlYkNvcmU6
OlJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0LCBjb25zdCBHZXN0dXJlRXZlbnQmIGV2ZW50KQog
ewogICAgIGlmIChldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLmdlc3R1cmV0YXBFdmVudCkK
ICAgICAgICAgdHlwZSA9IEdlc3R1cmVUYXA7CkBAIC01ODQsOCArNTg4LDkgQEAgV2ViR2VzdHVy
ZUV2ZW50QnVpbGRlcjo6V2ViR2VzdHVyZUV2ZW50QnVpbGRlcihjb25zdCBXaWRnZXQqIHdpZGdl
dCwgY29uc3QgR2VzdHUKIAogICAgIGdsb2JhbFggPSBldmVudC5zY3JlZW5YKCk7CiAgICAgZ2xv
YmFsWSA9IGV2ZW50LnNjcmVlblkoKTsKLSAgICB4ID0gZXZlbnQuYWJzb2x1dGVMb2NhdGlvbigp
LngoKSAtIHdpZGdldC0+bG9jYXRpb24oKS54KCk7Ci0gICAgeSA9IGV2ZW50LmFic29sdXRlTG9j
YXRpb24oKS55KCkgLSB3aWRnZXQtPmxvY2F0aW9uKCkueSgpOworICAgIEludFBvaW50IGxvY2Fs
UG9pbnQgPSBjb252ZXJ0TG9jYXRpb25Gb3JSZW5kZXJPYmplY3QoZXZlbnQuYWJzb2x1dGVMb2Nh
dGlvbigpLCAqcmVuZGVyT2JqZWN0KTsKKyAgICB4ID0gbG9jYWxQb2ludC54KCk7CisgICAgeSA9
IGxvY2FsUG9pbnQueSgpOwogfQogI2VuZGlmIC8vIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZl
cnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJz
aW9uLmgKaW5kZXggNDg5NzVhNDA0NmIyMTJiMGYyZGI5OTJiZTY0YjhjODM0OTc5MGU4Yi4uMzUx
MjY0NmViM2QyYzUyYjFlYTFhYzc5ZDdhNTg4NDJjOGY1YzYwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oCkBAIC00Miw5
ICs0MiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBHZXN0dXJlRXZlbnQ7CiBjbGFz
cyBLZXlib2FyZEV2ZW50OwogY2xhc3MgTW91c2VFdmVudDsKK2NsYXNzIFJlbmRlck9iamVjdDsK
IGNsYXNzIFNjcm9sbFZpZXc7Ci1jbGFzcyBXaGVlbEV2ZW50OwogY2xhc3MgVG91Y2hFdmVudDsK
K2NsYXNzIFdoZWVsRXZlbnQ7CiBjbGFzcyBXaWRnZXQ7CiB9CiAKQEAgLTk3LDIxICs5OCwyMCBA
QCBwdWJsaWM6CiB9OwogI2VuZGlmCiAKLS8vIENvbnZlcnRzIGEgV2ViQ29yZTo6TW91c2VFdmVu
dCB0byBhIGNvcnJlc3BvbmRpbmcgV2ViTW91c2VFdmVudC4gdmlldyBpcwotLy8gdGhlIFNjcm9s
bFZpZXcgY29ycmVzcG9uZGluZyB0byB0aGUgZXZlbnQuCisvLyBDb252ZXJ0cyBhIFdlYkNvcmU6
Ok1vdXNlRXZlbnQgdG8gYSBjb3JyZXNwb25kaW5nIFdlYk1vdXNlRXZlbnQuCiAvLyBOT1RFOiBU
aGlzIGlzIG9ubHkgaW1wbGVtZW50ZWQgZm9yIG1vdXNlbW92ZSwgbW91c2VvdmVyLCBtb3VzZW91
dCwKIC8vIG1vdXNlZG93biBhbmQgbW91c2V1cC4gIElmIHRoZSBldmVudCBtYXBwaW5nIGZhaWxz
LCB0aGUgZXZlbnQgdHlwZSB3aWxsCiAvLyBiZSBzZXQgdG8gVW5kZWZpbmVkLgogY2xhc3MgV2Vi
TW91c2VFdmVudEJ1aWxkZXIgOiBwdWJsaWMgV2ViTW91c2VFdmVudCB7CiBwdWJsaWM6Ci0gICAg
V2ViTW91c2VFdmVudEJ1aWxkZXIoY29uc3QgV2ViQ29yZTo6V2lkZ2V0KiwgY29uc3QgV2ViQ29y
ZTo6TW91c2VFdmVudCYpOworICAgIFdlYk1vdXNlRXZlbnRCdWlsZGVyKGNvbnN0IFdlYkNvcmU6
OldpZGdldCosIGNvbnN0IFdlYkNvcmU6OlJlbmRlck9iamVjdCosIGNvbnN0IFdlYkNvcmU6Ok1v
dXNlRXZlbnQmKTsKIH07CiAKIC8vIENvbnZlcnRzIGEgV2ViQ29yZTo6V2hlZWxFdmVudCB0byBh
IGNvcnJlc3BvbmRpbmcgV2ViTW91c2VXaGVlbEV2ZW50LgogLy8gSWYgdGhlIGV2ZW50IG1hcHBp
bmcgZmFpbHMsIHRoZSBldmVudCB0eXBlIHdpbGwgYmUgc2V0IHRvIFVuZGVmaW5lZC4KIGNsYXNz
IFdlYk1vdXNlV2hlZWxFdmVudEJ1aWxkZXIgOiBwdWJsaWMgV2ViTW91c2VXaGVlbEV2ZW50IHsK
IHB1YmxpYzoKLSAgICBXZWJNb3VzZVdoZWVsRXZlbnRCdWlsZGVyKGNvbnN0IFdlYkNvcmU6Oldp
ZGdldCosIGNvbnN0IFdlYkNvcmU6OldoZWVsRXZlbnQmKTsKKyAgICBXZWJNb3VzZVdoZWVsRXZl
bnRCdWlsZGVyKGNvbnN0IFdlYkNvcmU6OldpZGdldCosIGNvbnN0IFdlYkNvcmU6OlJlbmRlck9i
amVjdCosIGNvbnN0IFdlYkNvcmU6OldoZWVsRXZlbnQmKTsKIH07CiAKIC8vIENvbnZlcnRzIGEg
V2ViQ29yZTo6S2V5Ym9hcmRFdmVudCB0byBhIGNvcnJlc3BvbmRpbmcgV2ViS2V5Ym9hcmRFdmVu
dC4KQEAgLTEyOCw3ICsxMjgsNyBAQCBwdWJsaWM6CiAvLyBleGNlZWRpbmcgdGhhdCBjYXAgd2ls
bCBiZSBkcm9wcGVkLgogY2xhc3MgV2ViVG91Y2hFdmVudEJ1aWxkZXIgOiBwdWJsaWMgV2ViVG91
Y2hFdmVudCB7CiBwdWJsaWM6Ci0gICAgV2ViVG91Y2hFdmVudEJ1aWxkZXIoY29uc3QgV2ViQ29y
ZTo6V2lkZ2V0KiwgY29uc3QgV2ViQ29yZTo6VG91Y2hFdmVudCYpOworICAgIFdlYlRvdWNoRXZl
bnRCdWlsZGVyKGNvbnN0IFdlYkNvcmU6OldpZGdldCosIGNvbnN0IFdlYkNvcmU6OlJlbmRlck9i
amVjdCosIGNvbnN0IFdlYkNvcmU6OlRvdWNoRXZlbnQmKTsKIH07CiAjZW5kaWYgLy8gRU5BQkxF
KFRPVUNIX0VWRU5UUykKIApAQCAtMTM3LDcgKzEzNyw3IEBAIHB1YmxpYzoKIC8vIE5PVEU6IElm
IGV2ZW50IG1hcHBpbmcgZmFpbHMsIHRoZSB0eXBlIHdpbGwgYmUgc2V0IHRvIFVuZGVmaW5lZC4K
IGNsYXNzIFdlYkdlc3R1cmVFdmVudEJ1aWxkZXIgOiBwdWJsaWMgV2ViR2VzdHVyZUV2ZW50IHsK
IHB1YmxpYzoKLSAgICBXZWJHZXN0dXJlRXZlbnRCdWlsZGVyKGNvbnN0IFdlYkNvcmU6OldpZGdl
dCosIGNvbnN0IFdlYkNvcmU6Okdlc3R1cmVFdmVudCYpOworICAgIFdlYkdlc3R1cmVFdmVudEJ1
aWxkZXIoY29uc3QgV2ViQ29yZTo6V2lkZ2V0KiwgY29uc3QgV2ViQ29yZTo6UmVuZGVyT2JqZWN0
KiwgY29uc3QgV2ViQ29yZTo6R2VzdHVyZUV2ZW50Jik7CiB9OwogI2VuZGlmIC8vIEVOQUJMRShH
RVNUVVJFX0VWRU5UUykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcAppbmRleCBlM2M0YmVmYjgzZjIxYWNlOWU4MDdhNWIw
ZmYzMTI0YmM1M2Y4Mjc2Li41MjNkNjg3YzllNzJmODU4NmE3OGQ0M2YwY2E5NjMwYzE4YzFiNWYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWlu
ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250
YWluZXJJbXBsLmNwcApAQCAtNjU3LDcgKzY1Nyw3IEBAIHZvaWQgV2ViUGx1Z2luQ29udGFpbmVy
SW1wbDo6aGFuZGxlTW91c2VFdmVudChNb3VzZUV2ZW50KiBldmVudCkKICAgICAvLyBpbiB0aGUg
Y2FsbCB0byBIYW5kbGVFdmVudC4gU2VlIGh0dHA6Ly9iL2lzc3VlP2lkPTEzNjI5NDgKICAgICBG
cmFtZVZpZXcqIHBhcmVudFZpZXcgPSBzdGF0aWNfY2FzdDxGcmFtZVZpZXcqPihwYXJlbnQoKSk7
CiAKLSAgICBXZWJNb3VzZUV2ZW50QnVpbGRlciB3ZWJFdmVudCh0aGlzLCAqZXZlbnQpOworICAg
IFdlYk1vdXNlRXZlbnRCdWlsZGVyIHdlYkV2ZW50KHRoaXMsIG1fZWxlbWVudC0+cmVuZGVyZXIo
KSwgKmV2ZW50KTsKICAgICBpZiAod2ViRXZlbnQudHlwZSA9PSBXZWJJbnB1dEV2ZW50OjpVbmRl
ZmluZWQpCiAgICAgICAgIHJldHVybjsKIApAQCAtNjk4LDcgKzY5OCw3IEBAIHZvaWQgV2ViUGx1
Z2luQ29udGFpbmVySW1wbDo6aGFuZGxlTW91c2VFdmVudChNb3VzZUV2ZW50KiBldmVudCkKIAog
dm9pZCBXZWJQbHVnaW5Db250YWluZXJJbXBsOjpoYW5kbGVXaGVlbEV2ZW50KFdoZWVsRXZlbnQq
IGV2ZW50KQogewotICAgIFdlYk1vdXNlV2hlZWxFdmVudEJ1aWxkZXIgd2ViRXZlbnQodGhpcywg
KmV2ZW50KTsKKyAgICBXZWJNb3VzZVdoZWVsRXZlbnRCdWlsZGVyIHdlYkV2ZW50KHRoaXMsIG1f
ZWxlbWVudC0+cmVuZGVyZXIoKSwgKmV2ZW50KTsKICAgICBpZiAod2ViRXZlbnQudHlwZSA9PSBX
ZWJJbnB1dEV2ZW50OjpVbmRlZmluZWQpCiAgICAgICAgIHJldHVybjsKIApAQCAtNzQ5LDcgKzc0
OSw3IEBAIHZvaWQgV2ViUGx1Z2luQ29udGFpbmVySW1wbDo6aGFuZGxlVG91Y2hFdmVudChUb3Vj
aEV2ZW50KiBldmVudCkKIHsKICAgICBpZiAoIW1faXNBY2NlcHRpbmdUb3VjaEV2ZW50cykKICAg
ICAgICAgcmV0dXJuOwotICAgIFdlYlRvdWNoRXZlbnRCdWlsZGVyIHdlYkV2ZW50KHRoaXMsICpl
dmVudCk7CisgICAgV2ViVG91Y2hFdmVudEJ1aWxkZXIgd2ViRXZlbnQodGhpcywgbV9lbGVtZW50
LT5yZW5kZXJlcigpLCAqZXZlbnQpOwogICAgIGlmICh3ZWJFdmVudC50eXBlID09IFdlYklucHV0
RXZlbnQ6OlVuZGVmaW5lZCkKICAgICAgICAgcmV0dXJuOwogICAgIFdlYkN1cnNvckluZm8gY3Vy
c29ySW5mbzsKQEAgLTc2MCw3ICs3NjAsNyBAQCB2b2lkIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6
OmhhbmRsZVRvdWNoRXZlbnQoVG91Y2hFdmVudCogZXZlbnQpCiAKIHZvaWQgV2ViUGx1Z2luQ29u
dGFpbmVySW1wbDo6aGFuZGxlR2VzdHVyZUV2ZW50KEdlc3R1cmVFdmVudCogZXZlbnQpCiB7Ci0g
ICAgV2ViR2VzdHVyZUV2ZW50QnVpbGRlciB3ZWJFdmVudCh0aGlzLCAqZXZlbnQpOworICAgIFdl
Ykdlc3R1cmVFdmVudEJ1aWxkZXIgd2ViRXZlbnQodGhpcywgbV9lbGVtZW50LT5yZW5kZXJlcigp
LCAqZXZlbnQpOwogICAgIGlmICh3ZWJFdmVudC50eXBlID09IFdlYklucHV0RXZlbnQ6OlVuZGVm
aW5lZCkKICAgICAgICAgcmV0dXJuOwogICAgIFdlYkN1cnNvckluZm8gY3Vyc29ySW5mbzsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwMDI5NTY5
MmE1MjA1OWIxNjBhMjE3NjcxYzFkNWI5Njg5YTQ2ZWYzLi5kYmExMjYzODQzYmRhODBiZDZmZWVh
ODRmYTVhYzZkODE3ZGE0OTYxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMTAtMDUgIFNhZHJ1bCBIYWJpYiBD
aG93ZGh1cnkgIDxzYWRydWxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gTWFr
ZSBzdXJlIGV2ZW50cyBhcmUgdHJhbnNmb3JtZWQgY29ycmVjdGx5IGZvciBwbHVnaW5zLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODkyNTAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgdGhlIHRl
c3QgcGx1Z2luIHRvIHByaW50IGV2ZW50IGRldGFpbHMgZm9yIG1vdXNlIGFuZCBnZXN0dXJlIGV2
ZW50cy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RXZWJQbHVnaW4u
Y3BwOgorICAgICAgICAocHJpbnRFdmVudERldGFpbHMpOgorCiAyMDEyLTEwLTA0ICBSeXVhbiBD
aG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdIEFkZCBB
UElzIHRvIGdldC9zZXQgdGhlIGZyYW1lIGZsYXR0ZW5pbmcuCmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0V2ViUGx1Z2luLmNwcCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RXZWJQbHVnaW4uY3BwCmluZGV4IGU5NWMwZTRiNTUyZjVlNGU4
MDQ3NTZkYjBiMjFmZjYxYWI3NDY4ZjQuLjg2ODc5NzU1NjM2YWNiYWY3N2YzZjU4YTgwODBhMGU4
MzQ0NDQ3ZTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RX
ZWJQbHVnaW4uY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RXZWJQ
bHVnaW4uY3BwCkBAIC0xMDksNiArMTA5LDEyIEBAIHN0YXRpYyB2b2lkIHByaW50RXZlbnREZXRh
aWxzKGNvbnN0IFdlYktpdDo6V2ViSW5wdXRFdmVudCYgZXZlbnQpCiAgICAgICAgIHByaW50VG91
Y2hMaXN0KHRvdWNoLnRvdWNoZXMsIHRvdWNoLnRvdWNoZXNMZW5ndGgpOwogICAgICAgICBwcmlu
dFRvdWNoTGlzdCh0b3VjaC5jaGFuZ2VkVG91Y2hlcywgdG91Y2guY2hhbmdlZFRvdWNoZXNMZW5n
dGgpOwogICAgICAgICBwcmludFRvdWNoTGlzdCh0b3VjaC50YXJnZXRUb3VjaGVzLCB0b3VjaC50
YXJnZXRUb3VjaGVzTGVuZ3RoKTsKKyAgICB9IGVsc2UgaWYgKFdlYktpdDo6V2ViSW5wdXRFdmVu
dDo6aXNNb3VzZUV2ZW50VHlwZShldmVudC50eXBlKSkgeworICAgICAgICBjb25zdCBXZWJLaXQ6
OldlYk1vdXNlRXZlbnQmIG1vdXNlID0gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViS2l0OjpXZWJNb3Vz
ZUV2ZW50Jj4oZXZlbnQpOworICAgICAgICBwcmludGYoIiogJWQsICVkXG4iLCBtb3VzZS54LCBt
b3VzZS55KTsKKyAgICB9IGVsc2UgaWYgKFdlYktpdDo6V2ViSW5wdXRFdmVudDo6aXNHZXN0dXJl
RXZlbnRUeXBlKGV2ZW50LnR5cGUpKSB7CisgICAgICAgIGNvbnN0IFdlYktpdDo6V2ViR2VzdHVy
ZUV2ZW50JiBnZXN0dXJlID0gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViS2l0OjpXZWJHZXN0dXJlRXZl
bnQmPihldmVudCk7CisgICAgICAgIHByaW50ZigiKiAlZCwgJWRcbiIsIGdlc3R1cmUueCwgZ2Vz
dHVyZS55KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjNmJjN2E4OGJjYzkxM2I5MGY5NmIxZTllNTU1
NDEyZjgwOTRlYjY2Li4yMmU1NmIwZDMyMzE4YjIyZWIwZWRkNGU0ZjhlMTc5NTkyMDI2MDliIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMTAtMDUgIFNhZHJ1bCBIYWJpYiBDaG93ZGh1cnkg
IDxzYWRydWxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gTWFrZSBzdXJlIGV2
ZW50cyBhcmUgdHJhbnNmb3JtZWQgY29ycmVjdGx5IGZvciBwbHVnaW5zLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODkyNTAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCB0ZXN0cyB0byBtYWtlIHN1
cmUgdGhhdCBldmVudHMgYXJlIHRyYW5zZm9ybWVkIHByb3Blcmx5LgorCisgICAgICAgICogcGxh
dGZvcm0vY2hyb21pdW0vcGx1Z2lucy90cmFuc2Zvcm1lZC1ldmVudHMtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9wbHVnaW5zL3RyYW5zZm9ybWVkLWV2
ZW50cy5odG1sOiBBZGRlZC4KKwogMjAxMi0xMC0wNCAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBVcGRhdGUgY2hyb21pdW0gYmFzZWxpbmVzIGZvciA1MDA2
Nzc5Lmh0bWwgYW5kIHBhaW50LXN1YnJlY3QtZ3JpZC5odG1sLgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vcGx1Z2lucy90cmFuc2Zvcm1lZC1ldmVudHMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vcGx1Z2lucy90cmFuc2Zvcm1l
ZC1ldmVudHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1MDRlYjFmN2Q4Mzk5MDk0ZTVkYmI2
YTFkNGZkY2QxNTQ0ODZhMzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9wbHVnaW5zL3RyYW5zZm9ybWVkLWV2ZW50cy1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwzMSBAQAorUGx1Z2luIHJlY2VpdmVkIGV2ZW50OiBUb3VjaFN0YXJ0CisqIDEwLCAxMDog
UHJlc3NlZAorKiAxMCwgMTA6IFByZXNzZWQKKyogMTAsIDEwOiBQcmVzc2VkCitQbHVnaW4gcmVj
ZWl2ZWQgZXZlbnQ6IFRvdWNoTW92ZQorKiAyMCwgMTU6IE1vdmVkCisqIDIwLCAxNTogTW92ZWQK
KyogMjAsIDE1OiBNb3ZlZAorUGx1Z2luIHJlY2VpdmVkIGV2ZW50OiBUb3VjaEVuZAorKiAyMCwg
MTU6IFJlbGVhc2VkCitQbHVnaW4gcmVjZWl2ZWQgZXZlbnQ6IE1vdXNlRW50ZXIKKyogMTAsIDEw
CitQbHVnaW4gcmVjZWl2ZWQgZXZlbnQ6IE1vdXNlTW92ZQorKiAxMCwgMTAKK1BsdWdpbiByZWNl
aXZlZCBldmVudDogTW91c2VEb3duCisqIDEwLCAxMAorUGx1Z2luIHJlY2VpdmVkIGV2ZW50OiBN
b3VzZU1vdmUKKyogMjAsIDE1CitQbHVnaW4gcmVjZWl2ZWQgZXZlbnQ6IE1vdXNlVXAKKyogMjAs
IDE1CitQbHVnaW4gcmVjZWl2ZWQgZXZlbnQ6IEdlc3R1cmVUYXBEb3duCisqIDEwLCAxMAorUGx1
Z2luIHJlY2VpdmVkIGV2ZW50OiBHZXN0dXJlVGFwCisqIDEwLCAxMAorUGx1Z2luIHJlY2VpdmVk
IGV2ZW50OiBNb3VzZU1vdmUKKyogMTAsIDEwCitQbHVnaW4gcmVjZWl2ZWQgZXZlbnQ6IE1vdXNl
RG93bgorKiAxMCwgMTAKK1BsdWdpbiByZWNlaXZlZCBldmVudDogTW91c2VVcAorKiAxMCwgMTAK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vcGx1Z2lucy90cmFu
c2Zvcm1lZC1ldmVudHMuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3BsdWdp
bnMvdHJhbnNmb3JtZWQtZXZlbnRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzJiNTFiYjBlNzNkMTUyZWY1
ODZmOTc0ZDM4Nzc1OWQzMDExNTZkZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL3BsdWdpbnMvdHJhbnNmb3JtZWQtZXZlbnRzLmh0bWwKQEAgLTAsMCAr
MSw0NiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKyAgI3BsdWdpbiB7CisgICAgd2lkdGg6
IDE1MHB4OworICAgIGhlaWdodDogMTUwcHg7CisgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0
ZSg5MGRlZyk7CisgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+CisKKzxib2R5PgorPGVtYmVkIGlkPSJw
bHVnaW4iIHR5cGU9ImFwcGxpY2F0aW9uL3gtd2Via2l0LXRlc3Qtd2VicGx1Z2luIiBhY2NlcHRz
LXRvdWNoPSJ0cnVlIiBwcmludC1ldmVudC1kZXRhaWxzPSJ0cnVlIj48L2VtYmVkPgorPHNjcmlw
dD4KKworICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIgfHwgIXdpbmRvdy5ldmVudFNlbmRlcikg
eworICAgICAgICBkb2N1bWVudC53cml0ZSgiVGhpcyB0ZXN0IHJlcXVpcmVzIER1bXBSZW5kZXJU
cmVlLiIpOworICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwor
CisgICAgICAgIC8vIFRlc3QgdG91Y2ggZXZlbnRzLgorICAgICAgICB2YXIgcG9zaXRpb25YID0g
cGx1Z2luLm9mZnNldExlZnQgKyBwbHVnaW4ub2Zmc2V0V2lkdGggLSAxMDsKKyAgICAgICAgdmFy
IHBvc2l0aW9uWSA9IHBsdWdpbi5vZmZzZXRUb3AgKyAxMDsKKyAgICAgICAgZXZlbnRTZW5kZXIu
YWRkVG91Y2hQb2ludChwb3NpdGlvblgsIHBvc2l0aW9uWSk7CisgICAgICAgIGV2ZW50U2VuZGVy
LnRvdWNoU3RhcnQoKTsKKyAgICAgICAgZXZlbnRTZW5kZXIudXBkYXRlVG91Y2hQb2ludCgwLCBw
b3NpdGlvblggLSA1LCBwb3NpdGlvblkgKyAxMCk7CisgICAgICAgIGV2ZW50U2VuZGVyLnRvdWNo
TW92ZSgpOworICAgICAgICBldmVudFNlbmRlci5yZWxlYXNlVG91Y2hQb2ludCgwKTsKKyAgICAg
ICAgZXZlbnRTZW5kZXIudG91Y2hFbmQoKTsKKworICAgICAgICAvLyBUZXN0IG1vdXNlIGV2ZW50
cy4KKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8ocG9zaXRpb25YLCBwb3NpdGlvblkp
OworICAgICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgZXZlbnRTZW5kZXIu
bGVhcEZvcndhcmQoMTApOworICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhwb3NpdGlv
blggLSA1LCBwb3NpdGlvblkgKyAxMCk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsK
KworICAgICAgICAvLyBUZXN0IGdlc3R1cmUgZXZlbnRzLgorICAgICAgICBldmVudFNlbmRlci5n
ZXN0dXJlVGFwRG93bihwb3NpdGlvblgsIHBvc2l0aW9uWSk7CisgICAgICAgIGV2ZW50U2VuZGVy
Lmdlc3R1cmVUYXAocG9zaXRpb25YLCBwb3NpdGlvblkpOworICAgIH0KKworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CisK
</data>
<flag name="review"
          id="180094"
          type_id="1"
          status="+"
          setter="tony"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167652</attachid>
            <date>2012-10-08 17:11:26 -0700</date>
            <delta_ts>2012-10-09 08:13:25 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-89250-20121008201028.patch</filename>
            <type>text/plain</type>
            <size>20087</size>
            <attacher name="Sadrul Habib Chowdhury">sadrul</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGQ5NDIwZTk2MjQwYWM1OWIwNmJlM2RiMzU2MDY4NGRjZTNkNzEzODUuLmQ1MjM3ZWU1YzU1YzZl
ZjI5Y2E0MTI0MWQyOWIyMjk3ZWIyZDU2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzUgQEAKKzIwMTItMTAtMDkgIFNhZHJ1bCBIYWJpYiBDaG93ZGh1cnkgIDxzYWRy
dWxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gTWFrZSBzdXJlIGV2ZW50cyBh
cmUgdHJhbnNmb3JtZWQgY29ycmVjdGx5IGZvciBwbHVnaW5zLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODkyNTAKKworICAgICAgICBSZXZpZXdlZCBi
eSBUb255IENoYW5nLgorCisgICAgICAgIFRoZSBldmVudHMgYXJyaXZpbmcgaW4gV2ViUGx1Z2lu
Q29udGFpbmVySW1wbCBhcmUgaW4gdGhlIGNvb3JkaW5hdGUKKyAgICAgICAgc3BhY2Ugb2YgdGhl
IHBhZ2UgY29udGFpbmluZyB0aGUgcGx1Z2luLiBCZWZvcmUgdGhlIGV2ZW50cyBhcmUKKyAgICAg
ICAgZGlzcGF0Y2hlZCB0byB0aGUgcGx1Z2luLCBpdCBpcyBuZWNlc3NhcnkgdG8gY29udmVydCB0
aGVtIGludG8gdGhlCisgICAgICAgIHBsdWdpbidzIG93biBjb29yZGluYXRlIHN5c3RlbS4KKwor
ICAgICAgICAqIHNyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5jcHA6CisgICAgICAgIChXZWJL
aXQ6OmNvbnZlcnRMb2NhdGlvbkZvclJlbmRlck9iamVjdCk6IFRyYW5zZm9ybXMgYW4gZXZlbnQg
bG9jYXRpb24gZm9yIHRoZSBzcGVjaWZpZWQgUmVuZGVyT2JqZWN0LgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFdlYktpdDo6dXBkYXRlV2ViTW91c2VFdmVudEZyb21XZWJDb3JlTW91c2VF
dmVudCk6IFJlZmFjdG9yZWQgY29kZSB0byByZWR1Y2UgY29kZS1kdXBsaWNhdGlvbiBmb3IgbW91
c2UgYW5kIHdoZWVsIGV2ZW50cy4KKyAgICAgICAgKFdlYktpdDo6V2ViTW91c2VFdmVudEJ1aWxk
ZXI6OldlYk1vdXNlRXZlbnRCdWlsZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViTW91c2VXaGVl
bEV2ZW50QnVpbGRlcjo6V2ViTW91c2VXaGVlbEV2ZW50QnVpbGRlcik6CisgICAgICAgIChXZWJL
aXQ6OmFkZFRvdWNoUG9pbnRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVG91Y2hFdmVudEJ1aWxk
ZXI6OldlYlRvdWNoRXZlbnRCdWlsZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VzdHVyZUV2
ZW50QnVpbGRlcjo6V2ViR2VzdHVyZUV2ZW50QnVpbGRlcik6CisgICAgICAgICogc3JjL1dlYklu
cHV0RXZlbnRDb252ZXJzaW9uLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChXZWJNb3VzZUV2ZW50QnVpbGRlcik6CisgICAgICAgIChXZWJNb3VzZVdo
ZWVsRXZlbnRCdWlsZGVyKToKKyAgICAgICAgKFdlYlRvdWNoRXZlbnRCdWlsZGVyKToKKyAgICAg
ICAgKFdlYkdlc3R1cmVFdmVudEJ1aWxkZXIpOgorICAgICAgICAqIHNyYy9XZWJQbHVnaW5Db250
YWluZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luQ29udGFpbmVySW1wbDo6
aGFuZGxlTW91c2VFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkNvbnRhaW5lcklt
cGw6OmhhbmRsZVdoZWVsRXZlbnQpOgorCiAyMDEyLTEwLTA3ICBDYWlvIE1hcmNlbG8gZGUgT2xp
dmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgUmVu
YW1lIGZpcnN0L3NlY29uZCB0byBrZXkvdmFsdWUgaW4gSGFzaE1hcCBpdGVyYXRvcnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9u
LmNwcAppbmRleCAzODcxZjE3M2IzOWVkMDI2MDRkZmYyNGJkZGQ3NmVkNDI1YWFlMjY2Li4zZjlm
ZTA5MWMyNGZmODM2Yjk4NWRkYmE0ZTQxZTM1OWM1ZTdhMGNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uY3BwCkBAIC0z
OSw2ICszOSw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVk
ZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50Lmgi
CisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2Nyb2xsVmlldy5oIgogI2lu
Y2x1ZGUgIlRvdWNoLmgiCiAjaW5jbHVkZSAiVG91Y2hFdmVudC5oIgpAQCAtMzk2LDcgKzM5Nywy
OCBAQCBzdGF0aWMgaW50IGdldFdlYklucHV0TW9kaWZpZXJzKGNvbnN0IFVJRXZlbnRXaXRoS2V5
U3RhdGUmIGV2ZW50KQogICAgIHJldHVybiBtb2RpZmllcnM7CiB9CiAKLVdlYk1vdXNlRXZlbnRC
dWlsZGVyOjpXZWJNb3VzZUV2ZW50QnVpbGRlcihjb25zdCBXaWRnZXQqIHdpZGdldCwgY29uc3Qg
TW91c2VFdmVudCYgZXZlbnQpCitzdGF0aWMgSW50UG9pbnQgY29udmVydExvY2F0aW9uRm9yUmVu
ZGVyT2JqZWN0KGNvbnN0IExheW91dFBvaW50JiBsb2NhdGlvbiwgY29uc3QgV2ViQ29yZTo6UmVu
ZGVyT2JqZWN0JiByZW5kZXJPYmplY3QpCit7CisgICAgcmV0dXJuIHJvdW5kZWRJbnRQb2ludChy
ZW5kZXJPYmplY3QuYWJzb2x1dGVUb0xvY2FsKGxvY2F0aW9uLCBmYWxzZSwgdHJ1ZSkpOworfQor
CitzdGF0aWMgdm9pZCB1cGRhdGVXZWJNb3VzZUV2ZW50RnJvbVdlYkNvcmVNb3VzZUV2ZW50KGNv
bnN0IE1vdXNlRXZlbnQmIGV2ZW50LCBjb25zdCBXaWRnZXQmIHdpZGdldCwgY29uc3QgV2ViQ29y
ZTo6UmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3QsIFdlYk1vdXNlRXZlbnQmIHdlYkV2ZW50KQor
eworICAgIHdlYkV2ZW50LnRpbWVTdGFtcFNlY29uZHMgPSBldmVudC50aW1lU3RhbXAoKSAvIG1p
bGxpc1BlclNlY29uZDsKKyAgICB3ZWJFdmVudC5tb2RpZmllcnMgPSBnZXRXZWJJbnB1dE1vZGlm
aWVycyhldmVudCk7CisKKyAgICBTY3JvbGxWaWV3KiB2aWV3ID0gd2lkZ2V0LnBhcmVudCgpOwor
ICAgIEludFBvaW50IHdpbmRvd1BvaW50ID0gdmlldy0+Y29udGVudHNUb1dpbmRvdyhJbnRQb2lu
dChldmVudC5hYnNvbHV0ZUxvY2F0aW9uKCkueCgpLCBldmVudC5hYnNvbHV0ZUxvY2F0aW9uKCku
eSgpKSk7CisgICAgd2ViRXZlbnQuZ2xvYmFsWCA9IGV2ZW50LnNjcmVlblgoKTsKKyAgICB3ZWJF
dmVudC5nbG9iYWxZID0gZXZlbnQuc2NyZWVuWSgpOworICAgIHdlYkV2ZW50LndpbmRvd1ggPSB3
aW5kb3dQb2ludC54KCk7CisgICAgd2ViRXZlbnQud2luZG93WSA9IHdpbmRvd1BvaW50LnkoKTsK
KyAgICBJbnRQb2ludCBsb2NhbFBvaW50ID0gY29udmVydExvY2F0aW9uRm9yUmVuZGVyT2JqZWN0
KGV2ZW50LmFic29sdXRlTG9jYXRpb24oKSwgcmVuZGVyT2JqZWN0KTsKKyAgICB3ZWJFdmVudC54
ID0gbG9jYWxQb2ludC54KCk7CisgICAgd2ViRXZlbnQueSA9IGxvY2FsUG9pbnQueSgpOworfQor
CitXZWJNb3VzZUV2ZW50QnVpbGRlcjo6V2ViTW91c2VFdmVudEJ1aWxkZXIoY29uc3QgV2lkZ2V0
KiB3aWRnZXQsIGNvbnN0IFdlYkNvcmU6OlJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0LCBjb25z
dCBNb3VzZUV2ZW50JiBldmVudCkKIHsKICAgICBpZiAoZXZlbnQudHlwZSgpID09IGV2ZW50TmFt
ZXMoKS5tb3VzZW1vdmVFdmVudCkKICAgICAgICAgdHlwZSA9IFdlYklucHV0RXZlbnQ6Ok1vdXNl
TW92ZTsKQEAgLTQxMiw3ICs0MzQsOSBAQCBXZWJNb3VzZUV2ZW50QnVpbGRlcjo6V2ViTW91c2VF
dmVudEJ1aWxkZXIoY29uc3QgV2lkZ2V0KiB3aWRnZXQsIGNvbnN0IE1vdXNlRXZlbgogICAgICAg
ICB0eXBlID0gV2ViSW5wdXRFdmVudDo6Q29udGV4dE1lbnU7CiAgICAgZWxzZQogICAgICAgICBy
ZXR1cm47IC8vIFNraXAgYWxsIG90aGVyIG1vdXNlIGV2ZW50cy4KLSAgICB0aW1lU3RhbXBTZWNv
bmRzID0gZXZlbnQudGltZVN0YW1wKCkgLyBtaWxsaXNQZXJTZWNvbmQ7CisKKyAgICB1cGRhdGVX
ZWJNb3VzZUV2ZW50RnJvbVdlYkNvcmVNb3VzZUV2ZW50KGV2ZW50LCAqd2lkZ2V0LCAqcmVuZGVy
T2JqZWN0LCAqdGhpcyk7CisKICAgICBzd2l0Y2ggKGV2ZW50LmJ1dHRvbigpKSB7CiAgICAgY2Fz
ZSBMZWZ0QnV0dG9uOgogICAgICAgICBidXR0b24gPSBXZWJNb3VzZUV2ZW50OjpCdXR0b25MZWZ0
OwpAQCAtNDI0LDcgKzQ0OCw2IEBAIFdlYk1vdXNlRXZlbnRCdWlsZGVyOjpXZWJNb3VzZUV2ZW50
QnVpbGRlcihjb25zdCBXaWRnZXQqIHdpZGdldCwgY29uc3QgTW91c2VFdmVuCiAgICAgICAgIGJ1
dHRvbiA9IFdlYk1vdXNlRXZlbnQ6OkJ1dHRvblJpZ2h0OwogICAgICAgICBicmVhazsKICAgICB9
Ci0gICAgbW9kaWZpZXJzID0gZ2V0V2ViSW5wdXRNb2RpZmllcnMoZXZlbnQpOwogICAgIGlmIChl
dmVudC5idXR0b25Eb3duKCkpIHsKICAgICAgICAgc3dpdGNoIChldmVudC5idXR0b24oKSkgewog
ICAgICAgICBjYXNlIExlZnRCdXR0b246CkBAIC00MzgsMTUgKzQ2MSw2IEBAIFdlYk1vdXNlRXZl
bnRCdWlsZGVyOjpXZWJNb3VzZUV2ZW50QnVpbGRlcihjb25zdCBXaWRnZXQqIHdpZGdldCwgY29u
c3QgTW91c2VFdmVuCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KLSAgICBT
Y3JvbGxWaWV3KiB2aWV3ID0gd2lkZ2V0LT5wYXJlbnQoKTsKLSAgICBJbnRQb2ludCBwID0gdmll
dy0+Y29udGVudHNUb1dpbmRvdygKLSAgICAgICAgSW50UG9pbnQoZXZlbnQuYWJzb2x1dGVMb2Nh
dGlvbigpLngoKSwgZXZlbnQuYWJzb2x1dGVMb2NhdGlvbigpLnkoKSkpOwotICAgIGdsb2JhbFgg
PSBldmVudC5zY3JlZW5YKCk7Ci0gICAgZ2xvYmFsWSA9IGV2ZW50LnNjcmVlblkoKTsKLSAgICB3
aW5kb3dYID0gcC54KCk7Ci0gICAgd2luZG93WSA9IHAueSgpOwotICAgIHggPSBldmVudC5hYnNv
bHV0ZUxvY2F0aW9uKCkueCgpIC0gd2lkZ2V0LT5sb2NhdGlvbigpLngoKTsKLSAgICB5ID0gZXZl
bnQuYWJzb2x1dGVMb2NhdGlvbigpLnkoKSAtIHdpZGdldC0+bG9jYXRpb24oKS55KCk7CiAjaWYg
RU5BQkxFKFBPSU5URVJfTE9DSykKICAgICBtb3ZlbWVudFggPSBldmVudC53ZWJraXRNb3ZlbWVu
dFgoKTsKICAgICBtb3ZlbWVudFkgPSBldmVudC53ZWJraXRNb3ZlbWVudFkoKTsKQEAgLTQ1NCwy
MiArNDY4LDEyIEBAIFdlYk1vdXNlRXZlbnRCdWlsZGVyOjpXZWJNb3VzZUV2ZW50QnVpbGRlcihj
b25zdCBXaWRnZXQqIHdpZGdldCwgY29uc3QgTW91c2VFdmVuCiAgICAgY2xpY2tDb3VudCA9IGV2
ZW50LmRldGFpbCgpOwogfQogCi1XZWJNb3VzZVdoZWVsRXZlbnRCdWlsZGVyOjpXZWJNb3VzZVdo
ZWVsRXZlbnRCdWlsZGVyKGNvbnN0IFdpZGdldCogd2lkZ2V0LCBjb25zdCBXaGVlbEV2ZW50JiBl
dmVudCkKK1dlYk1vdXNlV2hlZWxFdmVudEJ1aWxkZXI6OldlYk1vdXNlV2hlZWxFdmVudEJ1aWxk
ZXIoY29uc3QgV2lkZ2V0KiB3aWRnZXQsIGNvbnN0IFdlYkNvcmU6OlJlbmRlck9iamVjdCogcmVu
ZGVyT2JqZWN0LCBjb25zdCBXaGVlbEV2ZW50JiBldmVudCkKIHsKICAgICBpZiAoZXZlbnQudHlw
ZSgpICE9IGV2ZW50TmFtZXMoKS5tb3VzZXdoZWVsRXZlbnQpCiAgICAgICAgIHJldHVybjsKICAg
ICB0eXBlID0gV2ViSW5wdXRFdmVudDo6TW91c2VXaGVlbDsKLSAgICB0aW1lU3RhbXBTZWNvbmRz
ID0gZXZlbnQudGltZVN0YW1wKCkgLyBtaWxsaXNQZXJTZWNvbmQ7Ci0gICAgbW9kaWZpZXJzID0g
Z2V0V2ViSW5wdXRNb2RpZmllcnMoZXZlbnQpOwotICAgIFNjcm9sbFZpZXcqIHZpZXcgPSB3aWRn
ZXQtPnBhcmVudCgpOwotICAgIEludFBvaW50IHAgPSB2aWV3LT5jb250ZW50c1RvV2luZG93KAot
ICAgICAgICBJbnRQb2ludChldmVudC5hYnNvbHV0ZUxvY2F0aW9uKCkueCgpLCBldmVudC5hYnNv
bHV0ZUxvY2F0aW9uKCkueSgpKSk7Ci0gICAgZ2xvYmFsWCA9IGV2ZW50LnNjcmVlblgoKTsKLSAg
ICBnbG9iYWxZID0gZXZlbnQuc2NyZWVuWSgpOwotICAgIHdpbmRvd1ggPSBwLngoKTsKLSAgICB3
aW5kb3dZID0gcC55KCk7Ci0gICAgeCA9IGV2ZW50LmFic29sdXRlTG9jYXRpb24oKS54KCkgLSB3
aWRnZXQtPmxvY2F0aW9uKCkueCgpOwotICAgIHkgPSBldmVudC5hYnNvbHV0ZUxvY2F0aW9uKCku
eSgpIC0gd2lkZ2V0LT5sb2NhdGlvbigpLnkoKTsKKyAgICB1cGRhdGVXZWJNb3VzZUV2ZW50RnJv
bVdlYkNvcmVNb3VzZUV2ZW50KGV2ZW50LCAqd2lkZ2V0LCAqcmVuZGVyT2JqZWN0LCAqdGhpcyk7
CiAgICAgZGVsdGFYID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGV2ZW50LnJhd0RlbHRhWCgpKTsKICAg
ICBkZWx0YVkgPSBzdGF0aWNfY2FzdDxmbG9hdD4oZXZlbnQucmF3RGVsdGFZKCkpOwogICAgIC8v
IFRoZSAxMjAgaXMgZnJvbSBXaGVlbEV2ZW50Ojppbml0V2hlZWxFdmVudCgpLgpAQCAtNTE1LDcg
KzUxOSw3IEBAIFdlYktleWJvYXJkRXZlbnRCdWlsZGVyOjpXZWJLZXlib2FyZEV2ZW50QnVpbGRl
cihjb25zdCBLZXlib2FyZEV2ZW50JiBldmVudCkKIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
CiAKLXN0YXRpYyB2b2lkIGFkZFRvdWNoUG9pbnRzKGNvbnN0IEF0b21pY1N0cmluZyYgdG91Y2hU
eXBlLCBUb3VjaExpc3QqIHRvdWNoZXMsIGNvbnN0IEludFBvaW50JiBvZmZzZXQsIFdlYlRvdWNo
UG9pbnQqIHRvdWNoUG9pbnRzLCB1bnNpZ25lZCogdG91Y2hQb2ludHNMZW5ndGgpCitzdGF0aWMg
dm9pZCBhZGRUb3VjaFBvaW50cyhjb25zdCBBdG9taWNTdHJpbmcmIHRvdWNoVHlwZSwgVG91Y2hM
aXN0KiB0b3VjaGVzLCBXZWJUb3VjaFBvaW50KiB0b3VjaFBvaW50cywgdW5zaWduZWQqIHRvdWNo
UG9pbnRzTGVuZ3RoLCBjb25zdCBXZWJDb3JlOjpSZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCkK
IHsKICAgICB1bnNpZ25lZCBudW1iZXJPZlRvdWNoZXMgPSBzdGQ6Om1pbih0b3VjaGVzLT5sZW5n
dGgoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFdlYlRvdWNoRXZlbnQ6OnRvdWNoZXNMZW5ndGhD
YXApKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZUb3VjaGVzOyArK2kp
IHsKQEAgLTUyNCw3ICs1MjgsNyBAQCBzdGF0aWMgdm9pZCBhZGRUb3VjaFBvaW50cyhjb25zdCBB
dG9taWNTdHJpbmcmIHRvdWNoVHlwZSwgVG91Y2hMaXN0KiB0b3VjaGVzLCBjbwogICAgICAgICBX
ZWJUb3VjaFBvaW50IHBvaW50OwogICAgICAgICBwb2ludC5pZCA9IHRvdWNoLT5pZGVudGlmaWVy
KCk7CiAgICAgICAgIHBvaW50LnNjcmVlblBvc2l0aW9uID0gV2ViUG9pbnQodG91Y2gtPnNjcmVl
blgoKSwgdG91Y2gtPnNjcmVlblkoKSk7Ci0gICAgICAgIHBvaW50LnBvc2l0aW9uID0gV2ViUG9p
bnQodG91Y2gtPnBhZ2VYKCkgLSBvZmZzZXQueCgpLCB0b3VjaC0+cGFnZVkoKSAtIG9mZnNldC55
KCkpOworICAgICAgICBwb2ludC5wb3NpdGlvbiA9IGNvbnZlcnRMb2NhdGlvbkZvclJlbmRlck9i
amVjdChMYXlvdXRQb2ludChJbnRQb2ludCh0b3VjaC0+cGFnZVgoKSwgdG91Y2gtPnBhZ2VZKCkp
KSwgKnJlbmRlck9iamVjdCk7CiAgICAgICAgIHBvaW50LnJhZGl1c1ggPSB0b3VjaC0+d2Via2l0
UmFkaXVzWCgpOwogICAgICAgICBwb2ludC5yYWRpdXNZID0gdG91Y2gtPndlYmtpdFJhZGl1c1ko
KTsKICAgICAgICAgcG9pbnQucm90YXRpb25BbmdsZSA9IHRvdWNoLT53ZWJraXRSb3RhdGlvbkFu
Z2xlKCk7CkBAIC01MzYsNyArNTQwLDcgQEAgc3RhdGljIHZvaWQgYWRkVG91Y2hQb2ludHMoY29u
c3QgQXRvbWljU3RyaW5nJiB0b3VjaFR5cGUsIFRvdWNoTGlzdCogdG91Y2hlcywgY28KICAgICAq
dG91Y2hQb2ludHNMZW5ndGggPSBudW1iZXJPZlRvdWNoZXM7CiB9CiAKLVdlYlRvdWNoRXZlbnRC
dWlsZGVyOjpXZWJUb3VjaEV2ZW50QnVpbGRlcihjb25zdCBXaWRnZXQqIHdpZGdldCwgY29uc3Qg
VG91Y2hFdmVudCYgZXZlbnQpCitXZWJUb3VjaEV2ZW50QnVpbGRlcjo6V2ViVG91Y2hFdmVudEJ1
aWxkZXIoY29uc3QgV2lkZ2V0KiB3aWRnZXQsIGNvbnN0IFdlYkNvcmU6OlJlbmRlck9iamVjdCog
cmVuZGVyT2JqZWN0LCBjb25zdCBUb3VjaEV2ZW50JiBldmVudCkKIHsKICAgICBpZiAoZXZlbnQu
dHlwZSgpID09IGV2ZW50TmFtZXMoKS50b3VjaHN0YXJ0RXZlbnQpCiAgICAgICAgIHR5cGUgPSBU
b3VjaFN0YXJ0OwpAQCAtNTU1LDE1ICs1NTksMTUgQEAgV2ViVG91Y2hFdmVudEJ1aWxkZXI6Oldl
YlRvdWNoRXZlbnRCdWlsZGVyKGNvbnN0IFdpZGdldCogd2lkZ2V0LCBjb25zdCBUb3VjaEV2ZW4K
ICAgICBtb2RpZmllcnMgPSBnZXRXZWJJbnB1dE1vZGlmaWVycyhldmVudCk7CiAgICAgdGltZVN0
YW1wU2Vjb25kcyA9IGV2ZW50LnRpbWVTdGFtcCgpIC8gbWlsbGlzUGVyU2Vjb25kOwogCi0gICAg
YWRkVG91Y2hQb2ludHMoZXZlbnQudHlwZSgpLCBldmVudC50b3VjaGVzKCksIHdpZGdldC0+bG9j
YXRpb24oKSwgdG91Y2hlcywgJnRvdWNoZXNMZW5ndGgpOwotICAgIGFkZFRvdWNoUG9pbnRzKGV2
ZW50LnR5cGUoKSwgZXZlbnQuY2hhbmdlZFRvdWNoZXMoKSwgd2lkZ2V0LT5sb2NhdGlvbigpLCBj
aGFuZ2VkVG91Y2hlcywgJmNoYW5nZWRUb3VjaGVzTGVuZ3RoKTsKLSAgICBhZGRUb3VjaFBvaW50
cyhldmVudC50eXBlKCksIGV2ZW50LnRhcmdldFRvdWNoZXMoKSwgd2lkZ2V0LT5sb2NhdGlvbigp
LCB0YXJnZXRUb3VjaGVzLCAmdGFyZ2V0VG91Y2hlc0xlbmd0aCk7CisgICAgYWRkVG91Y2hQb2lu
dHMoZXZlbnQudHlwZSgpLCBldmVudC50b3VjaGVzKCksIHRvdWNoZXMsICZ0b3VjaGVzTGVuZ3Ro
LCByZW5kZXJPYmplY3QpOworICAgIGFkZFRvdWNoUG9pbnRzKGV2ZW50LnR5cGUoKSwgZXZlbnQu
Y2hhbmdlZFRvdWNoZXMoKSwgY2hhbmdlZFRvdWNoZXMsICZjaGFuZ2VkVG91Y2hlc0xlbmd0aCwg
cmVuZGVyT2JqZWN0KTsKKyAgICBhZGRUb3VjaFBvaW50cyhldmVudC50eXBlKCksIGV2ZW50LnRh
cmdldFRvdWNoZXMoKSwgdGFyZ2V0VG91Y2hlcywgJnRhcmdldFRvdWNoZXNMZW5ndGgsIHJlbmRl
ck9iamVjdCk7CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogCiAjaWYgRU5B
QkxFKEdFU1RVUkVfRVZFTlRTKQotV2ViR2VzdHVyZUV2ZW50QnVpbGRlcjo6V2ViR2VzdHVyZUV2
ZW50QnVpbGRlcihjb25zdCBXaWRnZXQqIHdpZGdldCwgY29uc3QgR2VzdHVyZUV2ZW50JiBldmVu
dCkKK1dlYkdlc3R1cmVFdmVudEJ1aWxkZXI6OldlYkdlc3R1cmVFdmVudEJ1aWxkZXIoY29uc3Qg
V2lkZ2V0KiB3aWRnZXQsIGNvbnN0IFdlYkNvcmU6OlJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0
LCBjb25zdCBHZXN0dXJlRXZlbnQmIGV2ZW50KQogewogICAgIGlmIChldmVudC50eXBlKCkgPT0g
ZXZlbnROYW1lcygpLmdlc3R1cmV0YXBFdmVudCkKICAgICAgICAgdHlwZSA9IEdlc3R1cmVUYXA7
CkBAIC01ODQsOCArNTg4LDkgQEAgV2ViR2VzdHVyZUV2ZW50QnVpbGRlcjo6V2ViR2VzdHVyZUV2
ZW50QnVpbGRlcihjb25zdCBXaWRnZXQqIHdpZGdldCwgY29uc3QgR2VzdHUKIAogICAgIGdsb2Jh
bFggPSBldmVudC5zY3JlZW5YKCk7CiAgICAgZ2xvYmFsWSA9IGV2ZW50LnNjcmVlblkoKTsKLSAg
ICB4ID0gZXZlbnQuYWJzb2x1dGVMb2NhdGlvbigpLngoKSAtIHdpZGdldC0+bG9jYXRpb24oKS54
KCk7Ci0gICAgeSA9IGV2ZW50LmFic29sdXRlTG9jYXRpb24oKS55KCkgLSB3aWRnZXQtPmxvY2F0
aW9uKCkueSgpOworICAgIEludFBvaW50IGxvY2FsUG9pbnQgPSBjb252ZXJ0TG9jYXRpb25Gb3JS
ZW5kZXJPYmplY3QoZXZlbnQuYWJzb2x1dGVMb2NhdGlvbigpLCAqcmVuZGVyT2JqZWN0KTsKKyAg
ICB4ID0gbG9jYWxQb2ludC54KCk7CisgICAgeSA9IGxvY2FsUG9pbnQueSgpOwogfQogI2VuZGlm
IC8vIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmgKaW5kZXggNDg5NzVhNDA0NmIyMTJi
MGYyZGI5OTJiZTY0YjhjODM0OTc5MGU4Yi4uMzUxMjY0NmViM2QyYzUyYjFlYTFhYzc5ZDdhNTg4
NDJjOGY1YzYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5w
dXRFdmVudENvbnZlcnNpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
bnB1dEV2ZW50Q29udmVyc2lvbi5oCkBAIC00Miw5ICs0MiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBHZXN0dXJlRXZlbnQ7CiBjbGFzcyBLZXlib2FyZEV2ZW50OwogY2xhc3MgTW91
c2VFdmVudDsKK2NsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFNjcm9sbFZpZXc7Ci1jbGFzcyBX
aGVlbEV2ZW50OwogY2xhc3MgVG91Y2hFdmVudDsKK2NsYXNzIFdoZWVsRXZlbnQ7CiBjbGFzcyBX
aWRnZXQ7CiB9CiAKQEAgLTk3LDIxICs5OCwyMCBAQCBwdWJsaWM6CiB9OwogI2VuZGlmCiAKLS8v
IENvbnZlcnRzIGEgV2ViQ29yZTo6TW91c2VFdmVudCB0byBhIGNvcnJlc3BvbmRpbmcgV2ViTW91
c2VFdmVudC4gdmlldyBpcwotLy8gdGhlIFNjcm9sbFZpZXcgY29ycmVzcG9uZGluZyB0byB0aGUg
ZXZlbnQuCisvLyBDb252ZXJ0cyBhIFdlYkNvcmU6Ok1vdXNlRXZlbnQgdG8gYSBjb3JyZXNwb25k
aW5nIFdlYk1vdXNlRXZlbnQuCiAvLyBOT1RFOiBUaGlzIGlzIG9ubHkgaW1wbGVtZW50ZWQgZm9y
IG1vdXNlbW92ZSwgbW91c2VvdmVyLCBtb3VzZW91dCwKIC8vIG1vdXNlZG93biBhbmQgbW91c2V1
cC4gIElmIHRoZSBldmVudCBtYXBwaW5nIGZhaWxzLCB0aGUgZXZlbnQgdHlwZSB3aWxsCiAvLyBi
ZSBzZXQgdG8gVW5kZWZpbmVkLgogY2xhc3MgV2ViTW91c2VFdmVudEJ1aWxkZXIgOiBwdWJsaWMg
V2ViTW91c2VFdmVudCB7CiBwdWJsaWM6Ci0gICAgV2ViTW91c2VFdmVudEJ1aWxkZXIoY29uc3Qg
V2ViQ29yZTo6V2lkZ2V0KiwgY29uc3QgV2ViQ29yZTo6TW91c2VFdmVudCYpOworICAgIFdlYk1v
dXNlRXZlbnRCdWlsZGVyKGNvbnN0IFdlYkNvcmU6OldpZGdldCosIGNvbnN0IFdlYkNvcmU6OlJl
bmRlck9iamVjdCosIGNvbnN0IFdlYkNvcmU6Ok1vdXNlRXZlbnQmKTsKIH07CiAKIC8vIENvbnZl
cnRzIGEgV2ViQ29yZTo6V2hlZWxFdmVudCB0byBhIGNvcnJlc3BvbmRpbmcgV2ViTW91c2VXaGVl
bEV2ZW50LgogLy8gSWYgdGhlIGV2ZW50IG1hcHBpbmcgZmFpbHMsIHRoZSBldmVudCB0eXBlIHdp
bGwgYmUgc2V0IHRvIFVuZGVmaW5lZC4KIGNsYXNzIFdlYk1vdXNlV2hlZWxFdmVudEJ1aWxkZXIg
OiBwdWJsaWMgV2ViTW91c2VXaGVlbEV2ZW50IHsKIHB1YmxpYzoKLSAgICBXZWJNb3VzZVdoZWVs
RXZlbnRCdWlsZGVyKGNvbnN0IFdlYkNvcmU6OldpZGdldCosIGNvbnN0IFdlYkNvcmU6OldoZWVs
RXZlbnQmKTsKKyAgICBXZWJNb3VzZVdoZWVsRXZlbnRCdWlsZGVyKGNvbnN0IFdlYkNvcmU6Oldp
ZGdldCosIGNvbnN0IFdlYkNvcmU6OlJlbmRlck9iamVjdCosIGNvbnN0IFdlYkNvcmU6OldoZWVs
RXZlbnQmKTsKIH07CiAKIC8vIENvbnZlcnRzIGEgV2ViQ29yZTo6S2V5Ym9hcmRFdmVudCB0byBh
IGNvcnJlc3BvbmRpbmcgV2ViS2V5Ym9hcmRFdmVudC4KQEAgLTEyOCw3ICsxMjgsNyBAQCBwdWJs
aWM6CiAvLyBleGNlZWRpbmcgdGhhdCBjYXAgd2lsbCBiZSBkcm9wcGVkLgogY2xhc3MgV2ViVG91
Y2hFdmVudEJ1aWxkZXIgOiBwdWJsaWMgV2ViVG91Y2hFdmVudCB7CiBwdWJsaWM6Ci0gICAgV2Vi
VG91Y2hFdmVudEJ1aWxkZXIoY29uc3QgV2ViQ29yZTo6V2lkZ2V0KiwgY29uc3QgV2ViQ29yZTo6
VG91Y2hFdmVudCYpOworICAgIFdlYlRvdWNoRXZlbnRCdWlsZGVyKGNvbnN0IFdlYkNvcmU6Oldp
ZGdldCosIGNvbnN0IFdlYkNvcmU6OlJlbmRlck9iamVjdCosIGNvbnN0IFdlYkNvcmU6OlRvdWNo
RXZlbnQmKTsKIH07CiAjZW5kaWYgLy8gRU5BQkxFKFRPVUNIX0VWRU5UUykKIApAQCAtMTM3LDcg
KzEzNyw3IEBAIHB1YmxpYzoKIC8vIE5PVEU6IElmIGV2ZW50IG1hcHBpbmcgZmFpbHMsIHRoZSB0
eXBlIHdpbGwgYmUgc2V0IHRvIFVuZGVmaW5lZC4KIGNsYXNzIFdlYkdlc3R1cmVFdmVudEJ1aWxk
ZXIgOiBwdWJsaWMgV2ViR2VzdHVyZUV2ZW50IHsKIHB1YmxpYzoKLSAgICBXZWJHZXN0dXJlRXZl
bnRCdWlsZGVyKGNvbnN0IFdlYkNvcmU6OldpZGdldCosIGNvbnN0IFdlYkNvcmU6Okdlc3R1cmVF
dmVudCYpOworICAgIFdlYkdlc3R1cmVFdmVudEJ1aWxkZXIoY29uc3QgV2ViQ29yZTo6V2lkZ2V0
KiwgY29uc3QgV2ViQ29yZTo6UmVuZGVyT2JqZWN0KiwgY29uc3QgV2ViQ29yZTo6R2VzdHVyZUV2
ZW50Jik7CiB9OwogI2VuZGlmIC8vIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcApp
bmRleCAwODlhOWEzN2EzZTZjMDExZTMwNmE2MDc2N2ZkNGYzYjNlMTY2NTY3Li40ZmEwMzcxNzI5
ZTcyYTY4NjI5YzhiZDgwMjRmNGFiN2EyMjI3N2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcApAQCAtNjY5LDcgKzY2
OSw3IEBAIHZvaWQgV2ViUGx1Z2luQ29udGFpbmVySW1wbDo6aGFuZGxlTW91c2VFdmVudChNb3Vz
ZUV2ZW50KiBldmVudCkKICAgICAvLyBpbiB0aGUgY2FsbCB0byBIYW5kbGVFdmVudC4gU2VlIGh0
dHA6Ly9iL2lzc3VlP2lkPTEzNjI5NDgKICAgICBGcmFtZVZpZXcqIHBhcmVudFZpZXcgPSBzdGF0
aWNfY2FzdDxGcmFtZVZpZXcqPihwYXJlbnQoKSk7CiAKLSAgICBXZWJNb3VzZUV2ZW50QnVpbGRl
ciB3ZWJFdmVudCh0aGlzLCAqZXZlbnQpOworICAgIFdlYk1vdXNlRXZlbnRCdWlsZGVyIHdlYkV2
ZW50KHRoaXMsIG1fZWxlbWVudC0+cmVuZGVyZXIoKSwgKmV2ZW50KTsKICAgICBpZiAod2ViRXZl
bnQudHlwZSA9PSBXZWJJbnB1dEV2ZW50OjpVbmRlZmluZWQpCiAgICAgICAgIHJldHVybjsKIApA
QCAtNzM0LDcgKzczNCw3IEBAIHZvaWQgV2ViUGx1Z2luQ29udGFpbmVySW1wbDo6aGFuZGxlRHJh
Z0V2ZW50KE1vdXNlRXZlbnQqIGV2ZW50KQogCiB2b2lkIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6
OmhhbmRsZVdoZWVsRXZlbnQoV2hlZWxFdmVudCogZXZlbnQpCiB7Ci0gICAgV2ViTW91c2VXaGVl
bEV2ZW50QnVpbGRlciB3ZWJFdmVudCh0aGlzLCAqZXZlbnQpOworICAgIFdlYk1vdXNlV2hlZWxF
dmVudEJ1aWxkZXIgd2ViRXZlbnQodGhpcywgbV9lbGVtZW50LT5yZW5kZXJlcigpLCAqZXZlbnQp
OwogICAgIGlmICh3ZWJFdmVudC50eXBlID09IFdlYklucHV0RXZlbnQ6OlVuZGVmaW5lZCkKICAg
ICAgICAgcmV0dXJuOwogCkBAIC03ODUsNyArNzg1LDcgQEAgdm9pZCBXZWJQbHVnaW5Db250YWlu
ZXJJbXBsOjpoYW5kbGVUb3VjaEV2ZW50KFRvdWNoRXZlbnQqIGV2ZW50KQogewogICAgIGlmICgh
bV9pc0FjY2VwdGluZ1RvdWNoRXZlbnRzKQogICAgICAgICByZXR1cm47Ci0gICAgV2ViVG91Y2hF
dmVudEJ1aWxkZXIgd2ViRXZlbnQodGhpcywgKmV2ZW50KTsKKyAgICBXZWJUb3VjaEV2ZW50QnVp
bGRlciB3ZWJFdmVudCh0aGlzLCBtX2VsZW1lbnQtPnJlbmRlcmVyKCksICpldmVudCk7CiAgICAg
aWYgKHdlYkV2ZW50LnR5cGUgPT0gV2ViSW5wdXRFdmVudDo6VW5kZWZpbmVkKQogICAgICAgICBy
ZXR1cm47CiAgICAgV2ViQ3Vyc29ySW5mbyBjdXJzb3JJbmZvOwpAQCAtNzk2LDcgKzc5Niw3IEBA
IHZvaWQgV2ViUGx1Z2luQ29udGFpbmVySW1wbDo6aGFuZGxlVG91Y2hFdmVudChUb3VjaEV2ZW50
KiBldmVudCkKIAogdm9pZCBXZWJQbHVnaW5Db250YWluZXJJbXBsOjpoYW5kbGVHZXN0dXJlRXZl
bnQoR2VzdHVyZUV2ZW50KiBldmVudCkKIHsKLSAgICBXZWJHZXN0dXJlRXZlbnRCdWlsZGVyIHdl
YkV2ZW50KHRoaXMsICpldmVudCk7CisgICAgV2ViR2VzdHVyZUV2ZW50QnVpbGRlciB3ZWJFdmVu
dCh0aGlzLCBtX2VsZW1lbnQtPnJlbmRlcmVyKCksICpldmVudCk7CiAgICAgaWYgKHdlYkV2ZW50
LnR5cGUgPT0gV2ViSW5wdXRFdmVudDo6VW5kZWZpbmVkKQogICAgICAgICByZXR1cm47CiAgICAg
V2ViQ3Vyc29ySW5mbyBjdXJzb3JJbmZvOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDFhNTJjMDZmNzhhNjg0Y2E5MTRhOTViMDYxMmQwNGIyYzM1
MTk3ODcuLjBjYWFiNjI3Y2E3M2E5ZDhhMWQ5ZjQ2M2E4ODE0NmM3ZTJkYjFjNjUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBA
QAorMjAxMi0xMC0wOSAgU2FkcnVsIEhhYmliIENob3dkaHVyeSAgPHNhZHJ1bEBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBNYWtlIHN1cmUgZXZlbnRzIGFyZSB0cmFuc2Zvcm1l
ZCBjb3JyZWN0bHkgZm9yIHBsdWdpbnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04OTI1MAorCisgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcu
CisKKyAgICAgICAgVXBkYXRlIHRoZSB0ZXN0IHBsdWdpbiB0byBwcmludCBldmVudCBkZXRhaWxz
IGZvciBtb3VzZSBhbmQgZ2VzdHVyZSBldmVudHMuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0V2ViUGx1Z2luLmNwcDoKKyAgICAgICAgKHByaW50RXZlbnREZXRhaWxz
KToKKwogMjAxMi0xMC0wOCAgQmFsYXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgW1F0XSBSZWVuYWJsZSBwbHVnaW4gdGVzdHMKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RXZWJQbHVnaW4uY3BwIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFdlYlBsdWdpbi5jcHAKaW5kZXggNzExOTJiM2E1MWZjODZkZmQz
MTI1ZTJkM2U0MmRhMjE4OWU2MzE2My4uNmQ0MjY0ZjM0OWZjOWEwMDVmZmFlMjhiZTQ3NzBiNmYz
YjNiYTc3MyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFdl
YlBsdWdpbi5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFdlYlBs
dWdpbi5jcHAKQEAgLTEwOSw2ICsxMDksMTIgQEAgc3RhdGljIHZvaWQgcHJpbnRFdmVudERldGFp
bHMoY29uc3QgV2ViS2l0OjpXZWJJbnB1dEV2ZW50JiBldmVudCkKICAgICAgICAgcHJpbnRUb3Vj
aExpc3QodG91Y2gudG91Y2hlcywgdG91Y2gudG91Y2hlc0xlbmd0aCk7CiAgICAgICAgIHByaW50
VG91Y2hMaXN0KHRvdWNoLmNoYW5nZWRUb3VjaGVzLCB0b3VjaC5jaGFuZ2VkVG91Y2hlc0xlbmd0
aCk7CiAgICAgICAgIHByaW50VG91Y2hMaXN0KHRvdWNoLnRhcmdldFRvdWNoZXMsIHRvdWNoLnRh
cmdldFRvdWNoZXNMZW5ndGgpOworICAgIH0gZWxzZSBpZiAoV2ViS2l0OjpXZWJJbnB1dEV2ZW50
Ojppc01vdXNlRXZlbnRUeXBlKGV2ZW50LnR5cGUpIHx8IGV2ZW50LnR5cGUgPT0gV2ViS2l0OjpX
ZWJJbnB1dEV2ZW50OjpNb3VzZVdoZWVsKSB7CisgICAgICAgIGNvbnN0IFdlYktpdDo6V2ViTW91
c2VFdmVudCYgbW91c2UgPSBzdGF0aWNfY2FzdDxjb25zdCBXZWJLaXQ6OldlYk1vdXNlRXZlbnQm
PihldmVudCk7CisgICAgICAgIHByaW50ZigiKiAlZCwgJWRcbiIsIG1vdXNlLngsIG1vdXNlLnkp
OworICAgIH0gZWxzZSBpZiAoV2ViS2l0OjpXZWJJbnB1dEV2ZW50Ojppc0dlc3R1cmVFdmVudFR5
cGUoZXZlbnQudHlwZSkpIHsKKyAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJHZXN0dXJlRXZlbnQm
IGdlc3R1cmUgPSBzdGF0aWNfY2FzdDxjb25zdCBXZWJLaXQ6OldlYkdlc3R1cmVFdmVudCY+KGV2
ZW50KTsKKyAgICAgICAgcHJpbnRmKCIqICVkLCAlZFxuIiwgZ2VzdHVyZS54LCBnZXN0dXJlLnkp
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDE2OTQyYmYyMDdkOTUzMDE5NTc0MjhhMGRmOWYxZTM4ODdi
NmU4ZWQuLjRmYjU1Mzc4ZWI2ZDI3Y2M5NmE3NTk3MTIzMWViMGRiMWQzODdlZDggMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOCBAQAorMjAxMi0xMC0wOSAgU2FkcnVsIEhhYmliIENob3dkaHVyeSAgPHNhZHJ1
bEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBNYWtlIHN1cmUgZXZlbnRzIGFy
ZSB0cmFuc2Zvcm1lZCBjb3JyZWN0bHkgZm9yIHBsdWdpbnMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTI1MAorCisgICAgICAgIFJldmlld2VkIGJ5
IFRvbnkgQ2hhbmcuCisKKyAgICAgICAgQWRkZWQgdGVzdHMgdG8gbWFrZSBzdXJlIHRoYXQgZXZl
bnRzIGFyZSB0cmFuc2Zvcm1lZCBwcm9wZXJseS4gTm90ZSB0aGF0CisgICAgICAgIGZvciB0b3Vj
aC1ldmVudHMsIGVhY2ggcG9pbnQgaW4gdGhlIHRocmVlIHRvdWNoLXBvaW50IGxpc3RzIGluIHRo
ZQorICAgICAgICB0b3VjaC1ldmVudCBpcyBwcmludGVkLCBzbyB0aGUgc2FtZSB0b3VjaC1wb2lu
dCBpcyBwcmludGVkIG91dCB0aHJlZQorICAgICAgICB0aW1lcy4KKworICAgICAgICAqIHBsYXRm
b3JtL2Nocm9taXVtL3BsdWdpbnMvdHJhbnNmb3JtZWQtZXZlbnRzLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vcGx1Z2lucy90cmFuc2Zvcm1lZC1ldmVu
dHMuaHRtbDogQWRkZWQuCisKIDIwMTItMTAtMDggIE5hbmRvciBIdXN6a2EgIDxobmFuZG9yQGlu
Zi51LXN6ZWdlZC5odT4KIAogICAgICAgICBVbnJldmlld2VkIGdhcmRlbmluZywgc2tpcCBhbmQg
dXBkYXRlIHNvbWUgZmFpbGluZyB0ZXN0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vcGx1Z2lucy90cmFuc2Zvcm1lZC1ldmVudHMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vcGx1Z2lucy90cmFuc2Zvcm1lZC1ldmVudHMtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBlYzYxNDVjNzRlN2RlMWM2MGQ2MWQyYWQxOTRjZTk0ZjIw
MzUyNDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9w
bHVnaW5zL3RyYW5zZm9ybWVkLWV2ZW50cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzNSBAQAor
UGx1Z2luIHJlY2VpdmVkIGV2ZW50OiBUb3VjaFN0YXJ0CisqIDEwLCAxMDogUHJlc3NlZAorKiAx
MCwgMTA6IFByZXNzZWQKKyogMTAsIDEwOiBQcmVzc2VkCitQbHVnaW4gcmVjZWl2ZWQgZXZlbnQ6
IFRvdWNoTW92ZQorKiAyMCwgMTU6IE1vdmVkCisqIDIwLCAxNTogTW92ZWQKKyogMjAsIDE1OiBN
b3ZlZAorUGx1Z2luIHJlY2VpdmVkIGV2ZW50OiBUb3VjaEVuZAorKiAyMCwgMTU6IFJlbGVhc2Vk
CitQbHVnaW4gcmVjZWl2ZWQgZXZlbnQ6IE1vdXNlRW50ZXIKKyogMTAsIDEwCitQbHVnaW4gcmVj
ZWl2ZWQgZXZlbnQ6IE1vdXNlTW92ZQorKiAxMCwgMTAKK1BsdWdpbiByZWNlaXZlZCBldmVudDog
TW91c2VEb3duCisqIDEwLCAxMAorUGx1Z2luIHJlY2VpdmVkIGV2ZW50OiBNb3VzZU1vdmUKKyog
MjAsIDE1CitQbHVnaW4gcmVjZWl2ZWQgZXZlbnQ6IE1vdXNlVXAKKyogMjAsIDE1CitQbHVnaW4g
cmVjZWl2ZWQgZXZlbnQ6IE1vdXNlTW92ZQorKiAxMCwgMTAKK1BsdWdpbiByZWNlaXZlZCBldmVu
dDogTW91c2VXaGVlbAorKiAxMCwgMTAKK1BsdWdpbiByZWNlaXZlZCBldmVudDogR2VzdHVyZVRh
cERvd24KKyogMTAsIDEwCitQbHVnaW4gcmVjZWl2ZWQgZXZlbnQ6IEdlc3R1cmVUYXAKKyogMTAs
IDEwCitQbHVnaW4gcmVjZWl2ZWQgZXZlbnQ6IE1vdXNlTW92ZQorKiAxMCwgMTAKK1BsdWdpbiBy
ZWNlaXZlZCBldmVudDogTW91c2VEb3duCisqIDEwLCAxMAorUGx1Z2luIHJlY2VpdmVkIGV2ZW50
OiBNb3VzZVVwCisqIDEwLCAxMAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9wbHVnaW5zL3RyYW5zZm9ybWVkLWV2ZW50cy5odG1sIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vcGx1Z2lucy90cmFuc2Zvcm1lZC1ldmVudHMuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42NDk5NTM1ZWZlYmIyMjFlZjQxM2YwY2Q5ZWUyYThmNTVmOTQ1N2QxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vcGx1Z2lucy90cmFuc2Zvcm1lZC1l
dmVudHMuaHRtbApAQCAtMCwwICsxLDQ4IEBACis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorICAj
cGx1Z2luIHsKKyAgICB3aWR0aDogMTUwcHg7CisgICAgaGVpZ2h0OiAxNTBweDsKKyAgICAtd2Vi
a2l0LXRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKKyAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKwor
PGJvZHk+Cis8ZW1iZWQgaWQ9InBsdWdpbiIgdHlwZT0iYXBwbGljYXRpb24veC13ZWJraXQtdGVz
dC13ZWJwbHVnaW4iIGFjY2VwdHMtdG91Y2g9InRydWUiIHByaW50LWV2ZW50LWRldGFpbHM9InRy
dWUiPjwvZW1iZWQ+Cis8c2NyaXB0PgorCisgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lciB8fCAh
d2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgIGRvY3VtZW50LndyaXRlKCJUaGlzIHRlc3Qg
cmVxdWlyZXMgRHVtcFJlbmRlclRyZWUuIik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAgLy8gVGVzdCB0b3VjaCBldmVudHMuCisgICAg
ICAgIHZhciBwb3NpdGlvblggPSBwbHVnaW4ub2Zmc2V0TGVmdCArIHBsdWdpbi5vZmZzZXRXaWR0
aCAtIDEwOworICAgICAgICB2YXIgcG9zaXRpb25ZID0gcGx1Z2luLm9mZnNldFRvcCArIDEwOwor
ICAgICAgICBldmVudFNlbmRlci5hZGRUb3VjaFBvaW50KHBvc2l0aW9uWCwgcG9zaXRpb25ZKTsK
KyAgICAgICAgZXZlbnRTZW5kZXIudG91Y2hTdGFydCgpOworICAgICAgICBldmVudFNlbmRlci51
cGRhdGVUb3VjaFBvaW50KDAsIHBvc2l0aW9uWCAtIDUsIHBvc2l0aW9uWSArIDEwKTsKKyAgICAg
ICAgZXZlbnRTZW5kZXIudG91Y2hNb3ZlKCk7CisgICAgICAgIGV2ZW50U2VuZGVyLnJlbGVhc2VU
b3VjaFBvaW50KDApOworICAgICAgICBldmVudFNlbmRlci50b3VjaEVuZCgpOworCisgICAgICAg
IC8vIFRlc3QgbW91c2UgZXZlbnRzLgorICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhw
b3NpdGlvblgsIHBvc2l0aW9uWSk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOwor
ICAgICAgICBldmVudFNlbmRlci5sZWFwRm9yd2FyZCgxMCk7CisgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKHBvc2l0aW9uWCAtIDUsIHBvc2l0aW9uWSArIDEwKTsKKyAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VVcCgpOworICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhwb3Np
dGlvblgsIHBvc2l0aW9uWSk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnkoMTAs
IDApOworCisgICAgICAgIC8vIFRlc3QgZ2VzdHVyZSBldmVudHMuCisgICAgICAgIGV2ZW50U2Vu
ZGVyLmdlc3R1cmVUYXBEb3duKHBvc2l0aW9uWCwgcG9zaXRpb25ZKTsKKyAgICAgICAgZXZlbnRT
ZW5kZXIuZ2VzdHVyZVRhcChwb3NpdGlvblgsIHBvc2l0aW9uWSk7CisgICAgfQorCis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KKwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>