<?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>17589</bug_id>
          
          <creation_ts>2008-02-28 07:07:13 -0800</creation_ts>
          <short_desc>Scroll wheel sensitivity ignored</short_desc>
          <delta_ts>2015-08-20 07:41:48 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows Vista</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, PlatformOnly</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Matt Lilek">dev+webkit</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aroben</cc>
    
    <cc>rondie.evans</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>72250</commentid>
    <comment_count>0</comment_count>
    <who name="Matt Lilek">dev+webkit</who>
    <bug_when>2008-02-28 07:07:13 -0800</bug_when>
    <thetext>On Vista, no matter how many lines I tell the machine to scroll at a time with my scroll wheel, it still scrolls the same amount (which is painfully slow).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>72255</commentid>
    <comment_count>1</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-02-28 08:26:46 -0800</bug_when>
    <thetext>&lt;rdar://problem/5770893&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>78536</commentid>
    <comment_count>2</comment_count>
      <attachid>20747</attachid>
    <who name="Marcus">gamander</who>
    <bug_when>2008-04-22 07:04:22 -0700</bug_when>
    <thetext>Created attachment 20747
patch attempt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>78540</commentid>
    <comment_count>3</comment_count>
      <attachid>20747</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-04-22 07:22:40 -0700</bug_when>
    <thetext>Comment on attachment 20747
patch attempt

Thanks for the patch! This is a good step in the right direction.

This patch won&apos;t fix the issue for overflow areas (e.g., &lt;div style=&quot;overflow: scroll&quot;&gt;). Overflow areas use RenderLayer::scroll to do their scrolling. We&apos;ll want to fix both at the same time, and hopefully in a way that avoids duplicating the code you&apos;ve added.

+        if (!::SystemParametersInfo(SPI_GETWHEELSCROLLLINES, 0, &amp;linesToScroll, 0))

On Vista there&apos;s also an SPI_GETWHEELSCROLLCHARS value that we should support for horizontal scrolling. Since this value isn&apos;t present in pre-Vista headers, you&apos;ll have to declare it at the top of this file, like this:

static const UINT SPI_GETWHEELSCROLLCHARS = &lt;the value that Vista uses&gt;;

+            linesToScroll = 3;  // Windows default value 

This should be placed into a named constant at the top of the file, like this:

static const unsigned defaultLinesToScroll = 3;

+            // Like Mozilla, use default font to determine the number of pixels per line.
+            const FrameView* frameView = static_cast&lt;const FrameView*&gt;(this);
+            const Frame* frame = frameView-&gt;frame();
+            int lineStep;
+            if (frame &amp;&amp; frame-&gt;contentRenderer() &amp;&amp; frame-&gt;contentRenderer()-&gt;style())
+                lineStep = linesToScroll * frame-&gt;contentRenderer()-&gt;style()-&gt;font().lineSpacing();
+            else
+                lineStep = linesToScroll * LINE_STEP / 2; // fallback value
+
+            scrollBy(-e.deltaX() * lineStep, -e.deltaY() * lineStep);

This is a layering violation. Classes in platform/ should not in general be aware of classes outside of platform/, so it seems unfortunate to be introducing RenderView usage here. We&apos;d also want this change to be made on all platforms, not just Windows, I believe. This change seems logically distinct from supporting the system preferences for scrolling amount, so this should be turned into a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>78541</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-04-22 07:26:09 -0700</bug_when>
    <thetext>This affects XP as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>78545</commentid>
    <comment_count>5</comment_count>
    <who name="Marcus">gamander</who>
    <bug_when>2008-04-22 11:18:43 -0700</bug_when>
    <thetext>(In reply to comment #3)
Thanks for the review! You guys are great :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84815</commentid>
    <comment_count>6</comment_count>
      <attachid>22015</attachid>
    <who name="Maxime Britto">maxime.britto</who>
    <bug_when>2008-06-30 20:10:40 -0700</bug_when>
    <thetext>Created attachment 22015
Patch attempt

I already explained some things in the changelog.
Also about the Screen Scroll option in windows, I hesitated to use a boolean instead of the value 150. I didn&apos;t know if it was better to simplify the reading or to limit the number of attributes/variables.
I&apos;ve finally chosen to keep only one variable and to test its value so see if it&apos;s a LineScroll or a ScreenScroll.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85022</commentid>
    <comment_count>7</comment_count>
      <attachid>22015</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-07-02 17:28:42 -0700</bug_when>
    <thetext>Comment on attachment 22015
Patch attempt

Looks good!

Is &quot;sensitivity&quot; really the right name for this? The Windows APIs don&apos;t seem to call it that. Is that the end-user name for this feature? Where does the term come from.

The magic number 150 appears multiple times in this patch. It needs to be a named constant if we&apos;re going to keep it.

But I don&apos;t think that using a magic number is a clean way to communicate that we&apos;re in page scroll mode -- I suggest a separate boolean for that.

 1364             //if (deltaX &amp;&amp; node-&gt;renderer()-&gt;scroll(deltaX &lt; 0 ? ScrollRight : ScrollLeft, e.isContinuous() ? ScrollByPixel : ScrollByLine,
 1365             //                                           deltaX &lt; 0 ? -deltaX : deltaX))
 1366             //    e.accept();

We don&apos;t want to check in commented-out code.

 1368                 int pixelsToScroll = abs(deltaX);
 1369                 if (!e.isContinuous() &amp;&amp; abs(deltaX) != 150) {

You&apos;re repeating abs(deltaX) a number of times here. Can you use pixelsToScroll instead?

You say &quot;sensibility&quot; in a few places where you mean &quot;sensitivity&quot;.

 74     //TODO: retrieve the user setting for the number of lines to scroll on each wheel event

We don&apos;t normally use &quot;TODO:&quot; -- consider FIXME instead.

 39     , m_charScrollSensitivity(1) //Values needed on other platforms to let the user to choose the numer of lines to scroll on each wheel event

I don&apos;t think this comment is helpful. You should just leave it out.

 68         if(! ::SystemParametersInfo(SPI_GETWHEELSCROLLCHARS, 0, &amp;scrollChars, 0))
 69             scrollChars = 1;

There should be a space after the if. There should not be a space after the &quot;(&quot;. We don&apos;t use the &quot;::&quot; when calling global functions.

 71         //If we are in a page scroll mode we choose an arbitrary high value 
 72         //which can be recongnized easily later when we&apos;ll choose the scroll granularity.

There should be spaces after the &quot;//&quot; and before the comments. Typo here: &quot;recongnized&quot; instead of &quot;recognized&quot;.

 82         if(! ::SystemParametersInfo(SPI_GETWHEELSCROLLLINES, 0, &amp;scrollLines, 0))
 83             scrollLines = 3;

Where does this number 3 come from?

 76         m_charScrollSensitivity = (int) scrollChars;

We normally use static_cast rather than C-style casts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85133</commentid>
    <comment_count>8</comment_count>
      <attachid>22075</attachid>
    <who name="Maxime Britto">maxime.britto</who>
    <bug_when>2008-07-03 16:01:25 -0700</bug_when>
    <thetext>Created attachment 22075
correctd patch

I changed the variable names for them to be more explicit and I added 2 bool for the page scroll (vertical and horizontal)

Here are the chosen names :

+        int m_charsToScrollPerDelta;
+        int m_linesToScrollPerDelta;
+        bool m_pageXScrollMode;
+        bool m_pageYScrollMode;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85892</commentid>
    <comment_count>9</comment_count>
      <attachid>22075</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-07-14 10:37:14 -0700</bug_when>
    <thetext>Comment on attachment 22075
correctd patch

The deltaX clause is incorrect.  Copy/paste bug.  Horizontal scroll events will cause vertical scrolling.

We talked over IRC about possibly abstracting these scroll + accept clauses into some nice static inline function(s).

Even stuff like this I would almost consider abstracting:

if (e.isPageXScrollModeEnabled())
+            deltaX = (deltaX &gt; 0 ? visibleWidth() : -visibleWidth()) / LINE_STEP_WIN;

adjustDeltaForPageScrollMode(deltaX, e.isPageScrollModeEnabled(), visibleWidth());

static inline adjustDeltaForPageScrollMode(int&amp; delta, bool pageScrollModeEnabled, int pageScroll)
{
  if (pageScrollModeEnabled)
          delta = (delta &gt; 0 ? pageScroll) : -pageScroll) / LINE_STEP_WIN;
}

But that is probably not worth it.  Just depends on your copy/paste code tolerance level... mine is extremely low in general. :)

is there any way we can test this with DRT?

We can fake scroll events, no?  The question would be getting the system settings to be the same on all machines...  or maybe DRT could hook in some special way to override the page scroll settings?

r- for the copy/paste error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85951</commentid>
    <comment_count>10</comment_count>
      <attachid>22284</attachid>
    <who name="Maxime Britto">maxime.britto</who>
    <bug_when>2008-07-15 12:04:49 -0700</bug_when>
    <thetext>Created attachment 22284
Corrected patch

Applyed the corrections, added the static inline functions.
For the DRT I couldn&apos;t find anything to override this system settings call : ::SystemParametersInfo(SPI_GETWHEELSCROLLCHARS, 0, &amp;scrollChars, 0)

It&apos;s Win32 generic system call which retrieves the user setting passed as parameter in the other parameter. This kind of call have to be implemented in the DRT since it&apos;s not possible right now in there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85956</commentid>
    <comment_count>11</comment_count>
      <attachid>22284</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-07-15 13:21:50 -0700</bug_when>
    <thetext>Comment on attachment 22284
Corrected patch

Looks great!

I suggest you make:
if (deltaX)

part of the 
scrollAndAcceptEvent inline
as an early return:

if (!delta)
   return;

Also, there are some spacing issues here:

+static inline void adjustDeltaForPageScrollMode(float&amp; delta, bool pageScrollEnabled, int visibleWidthOrHeight)
+{
+    if (pageScrollEnabled)
+            delta = (delta &gt; 0 ? visibleWidthOrHeight : -visibleWidthOrHeight) / LINE_STEP_WIN;
+}

Land away!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88084</commentid>
    <comment_count>12</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2008-08-07 20:56:59 -0700</bug_when>
    <thetext>Landed in r35633.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88085</commentid>
    <comment_count>13</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2008-08-07 20:57:46 -0700</bug_when>
    <thetext>Wrong bug. Reopening.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88088</commentid>
    <comment_count>14</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2008-08-07 21:03:11 -0700</bug_when>
    <thetext>This was landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88112</commentid>
    <comment_count>15</comment_count>
    <who name="Gavin Sherlock">gsherloc</who>
    <bug_when>2008-08-08 11:21:05 -0700</bug_when>
    <thetext>I suspect this has resulted in bug 20331</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119245</commentid>
    <comment_count>16</comment_count>
    <who name="Bhu">rondie.evans</who>
    <bug_when>2015-08-20 07:41:48 -0700</bug_when>
    <thetext>Hi 

Im new here and have suffered with this problemn for ever. Seeing this solution is great news with what apple had done! Nothing!

Only problem is I dont know how to apply this patch. How? Where do I apply this code to fix my safari mouse lag that we all get from the scrol whell...? 

Sorry if its obvious but any links how to apply this code much appredciated.

Thank you

Bhu</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20747</attachid>
            <date>2008-04-22 07:04:22 -0700</date>
            <delta_ts>2008-04-22 07:22:40 -0700</delta_ts>
            <desc>patch attempt</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>2646</size>
            <attacher name="Marcus">gamander</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzMjM5MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMDgtMDQtMjIgIE1hcmN1cyAgPGdhbWFuZGVyQGdtYWlsLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGp1c3Qg
bW91c2Ugd2hlZWwgc2Nyb2xsaW5nIGFjY29yZGluZyB0byB1c2VyIHNldHRpbmcgaW4gV2luZG93
cy4KKyAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NTg5CisgICAgICAgIFNjcm9sbCB3aGVlbCBzZW5zaXRpdml0eSBpZ25vcmVkIG9uIFZpc3RhCisK
KyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2Nyb2xsVmlld1dpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxWaWV3Ojp3aGVlbEV2ZW50KToKKwogMjAwOC0wNC0yMiAgQW5kcmUgUG9lbml0
eiAgPGFuZHJlLnBvZW5pdHpAdHJvbGx0ZWNoLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBT
aW1vbi4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbFZpZXdXaW4uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbFZpZXdXaW4uY3BwCShyZXZpc2lv
biAzMTM3MSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbFZpZXdXaW4uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhl
bWUuaCIgCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIiAKICNpbmNsdWRlICJTY3JvbGxCYXIuaCIK
ICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d2luc29jazIuaD4KQEAgLTY4MSw3ICs2
ODIsMzAgQEAgdm9pZCBTY3JvbGxWaWV3Ojp3aGVlbEV2ZW50KFBsYXRmb3JtV2hlZQogICAgICAg
ICAoZS5kZWx0YVkoKSA8IDAgJiYgbWF4U2Nyb2xsRGVsdGEuaGVpZ2h0KCkgPiAwKSB8fAogICAg
ICAgICAoZS5kZWx0YVkoKSA+IDAgJiYgc2Nyb2xsT2Zmc2V0KCkuaGVpZ2h0KCkgPiAwKSkgewog
ICAgICAgICBlLmFjY2VwdCgpOwotICAgICAgICBzY3JvbGxCeSgtZS5kZWx0YVgoKSAqIExJTkVf
U1RFUCwgLWUuZGVsdGFZKCkgKiBMSU5FX1NURVApOworCisgICAgICAgIC8vIEZJWE1FOiBDYWNo
ZSB0aGUgbW91c2Ugd2hlZWwgc2V0dGluZyBhbmQgdXBkYXRlIGl0IG9uIFdNX1NFVFRJTkdDSEFO
R0UgbWVzc2FnZS4KKyAgICAgICAgdW5zaWduZWQgbGluZXNUb1Njcm9sbDsKKyAgICAgICAgaWYg
KCE6OlN5c3RlbVBhcmFtZXRlcnNJbmZvKFNQSV9HRVRXSEVFTFNDUk9MTExJTkVTLCAwLCAmbGlu
ZXNUb1Njcm9sbCwgMCkpCisgICAgICAgICAgICBsaW5lc1RvU2Nyb2xsID0gMzsgIC8vIFdpbmRv
d3MgZGVmYXVsdCB2YWx1ZSAKKworICAgICAgICBpZiAobGluZXNUb1Njcm9sbCA9PSBXSEVFTF9Q
QUdFU0NST0xMKSB7CisgICAgICAgICAgICBTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uICA9ICAo
ZS5kZWx0YVgoKT4wKSA/IFNjcm9sbExlZnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA6IChlLmRlbHRhWCgpPDApID8gU2Nyb2xsUmlnaHQKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA6IChlLmRlbHRhWSgpPjApID8gU2Nyb2xsVXAKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICAgICAgICAgICAgICAgICAg
U2Nyb2xsRG93bjsKKyAgICAgICAgICAgIHNjcm9sbChkaXJlY3Rpb24sIFNjcm9sbEJ5UGFnZSk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBMaWtlIE1vemlsbGEsIHVzZSBkZWZh
dWx0IGZvbnQgdG8gZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgcGl4ZWxzIHBlciBsaW5lLgorICAg
ICAgICAgICAgY29uc3QgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBzdGF0aWNfY2FzdDxjb25zdCBG
cmFtZVZpZXcqPih0aGlzKTsKKyAgICAgICAgICAgIGNvbnN0IEZyYW1lKiBmcmFtZSA9IGZyYW1l
Vmlldy0+ZnJhbWUoKTsKKyAgICAgICAgICAgIGludCBsaW5lU3RlcDsKKyAgICAgICAgICAgIGlm
IChmcmFtZSAmJiBmcmFtZS0+Y29udGVudFJlbmRlcmVyKCkgJiYgZnJhbWUtPmNvbnRlbnRSZW5k
ZXJlcigpLT5zdHlsZSgpKQorICAgICAgICAgICAgICAgIGxpbmVTdGVwID0gbGluZXNUb1Njcm9s
bCAqIGZyYW1lLT5jb250ZW50UmVuZGVyZXIoKS0+c3R5bGUoKS0+Zm9udCgpLmxpbmVTcGFjaW5n
KCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbGluZVN0ZXAgPSBsaW5lc1Rv
U2Nyb2xsICogTElORV9TVEVQIC8gMjsgLy8gZmFsbGJhY2sgdmFsdWUKKworICAgICAgICAgICAg
c2Nyb2xsQnkoLWUuZGVsdGFYKCkgKiBsaW5lU3RlcCwgLWUuZGVsdGFZKCkgKiBsaW5lU3RlcCk7
CisgICAgICAgIH0KICAgICB9CiB9CiAK
</data>
<flag name="review"
          id="9072"
          type_id="1"
          status="-"
          setter="aroben"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22015</attachid>
            <date>2008-06-30 20:10:40 -0700</date>
            <delta_ts>2008-07-03 16:01:25 -0700</delta_ts>
            <desc>Patch attempt</desc>
            <filename>mbritto_bug17589_20080630.txt</filename>
            <type>text/plain</type>
            <size>11223</size>
            <attacher name="Maxime Britto">maxime.britto</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNDkwNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMDgtMDYtMzAgIE1heGltZSBCcml0dG8gIDxicml0dG9AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU4OQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNTc3MDg5Mz4KKyAgICAgICAgUmV0cmlldmUgdGhlIHdoZWVsIHNlbnNpdGl2
aXR5IHNldHRpbmcgZnJvbSB3aW5kb3dzIGZvciB0aGUgaG9yaXpvbnRhbCBhbmQgdGhlIHZlcnRp
Y2FsIHNjcm9sbGluZy4KKyAgICAgICAgQWxsb3cgdGhlIHBhZ2Ugc2Nyb2xsaW5nIHdpdGggdGhl
IHdoZWVsIChpZiBhY3RpdmF0ZWQgaW4gd2luZG93cyBzZXR0aW5ncykKKyAgICAgICAgRm9yIHRo
ZSBvdGhlciBwbGF0Zm9ybXMsIG5vdGhpbmcgaXMgY2hhbmdlZCBidXQgaWYgc29tZW9uZSB3YW50
IHRvIGFjdGl2YXRlIHRoaXMgZmVhdHVyZSBoZS9zaGUgaGFzIHRvIHJldHJpZXZlIHRoZSBzZXR0
aW5ncyBhbmQgZmlsbCBvdXQgdGhlIG1fbGluZVNjcm9sbFNlbnNpdGl2aXR5IGFuZC9vciBtX2No
YXJTY3JvbGxTZW5zaXRpdml0eSBpbiBoaXMvaGVyIFBsYXRmb3JtV2hlZWxFdmVudCBjb25zdHJ1
Y3Rvci4KKworICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0v
UGxhdGZvcm1XaGVlbEV2ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZl
bnQ6OmRlbHRhWCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZlbnQ6OmRlbHRh
WSk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1doZWVsRXZlbnRHdGsuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQpOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9XaGVlbEV2ZW50TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L3F0L1doZWVsRXZlbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZl
bnQ6OlBsYXRmb3JtV2hlZWxFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1Njcm9sbFZp
ZXdXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6d2hlZWxFdmVudCk6Cisg
ICAgICAgICogcGxhdGZvcm0vd2luL1doZWVsRXZlbnRXaW4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQpOgorICAgICAgICAqIHBs
YXRmb3JtL3d4L01vdXNlV2hlZWxFdmVudFd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KToKKwogMjAwOC0wNi0zMCAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IERhcmlu
IEFkbGVyLgpJbmRleDogV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHJldmlzaW9uIDM0Njk1KQorKysgV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcg
QEAKICNpbmNsdWRlICJFZGl0b3IuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVk
ZSAiRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZvY3Vz
Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIu
aCIKQEAgLTEzNTksMTIgKzEzNjAsMzYgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVs
RXZlbnQoUGxhdAogICAgICAgICAgICAgLy8gYSBNYWNCb29rIHBybyBpcyBhbiBleGFtcGxlIG9m
IGEgMi1kaW1lbnNpb25hbCBtb3VzZSB3aGVlbCBldmVudCAod2hlcmUgYm90aCBkZWx0YVggYW5k
IGRlbHRhWSBjYW4gYmUgc2V0KS4KICAgICAgICAgICAgIGZsb2F0IGRlbHRhWCA9IGUuaXNDb250
aW51b3VzKCkgPyBlLmNvbnRpbnVvdXNEZWx0YVgoKSA6IGUuZGVsdGFYKCk7CiAgICAgICAgICAg
ICBmbG9hdCBkZWx0YVkgPSBlLmlzQ29udGludW91cygpID8gZS5jb250aW51b3VzRGVsdGFZKCkg
OiBlLmRlbHRhWSgpOwotICAgICAgICAgICAgaWYgKGRlbHRhWCAmJiBub2RlLT5yZW5kZXJlcigp
LT5zY3JvbGwoZGVsdGFYIDwgMCA/IFNjcm9sbFJpZ2h0IDogU2Nyb2xsTGVmdCwgZS5pc0NvbnRp
bnVvdXMoKSA/IFNjcm9sbEJ5UGl4ZWwgOiBTY3JvbGxCeUxpbmUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsdGFYIDwgMCA/IC1kZWx0
YVggOiBkZWx0YVgpKQotICAgICAgICAgICAgICAgIGUuYWNjZXB0KCk7Ci0gICAgICAgICAgICBp
ZiAoZGVsdGFZICYmIG5vZGUtPnJlbmRlcmVyKCktPnNjcm9sbChkZWx0YVkgPCAwID8gU2Nyb2xs
RG93biA6IFNjcm9sbFVwLCBlLmlzQ29udGludW91cygpID8gU2Nyb2xsQnlQaXhlbCA6IFNjcm9s
bEJ5TGluZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZWx0YVkgPCAwID8gLWRlbHRhWSA6IGRlbHRhWSkpCi0gICAgICAgICAgICAgICAg
ZS5hY2NlcHQoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy9pZiAoZGVsdGFYICYmIG5v
ZGUtPnJlbmRlcmVyKCktPnNjcm9sbChkZWx0YVggPCAwID8gU2Nyb2xsUmlnaHQgOiBTY3JvbGxM
ZWZ0LCBlLmlzQ29udGludW91cygpID8gU2Nyb2xsQnlQaXhlbCA6IFNjcm9sbEJ5TGluZSwKKyAg
ICAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl
bHRhWCA8IDAgPyAtZGVsdGFYIDogZGVsdGFYKSkKKyAgICAgICAgICAgIC8vICAgIGUuYWNjZXB0
KCk7CisgICAgICAgICAgICBpZiAoZGVsdGFYKSB7CisgICAgICAgICAgICAgICAgaW50IHBpeGVs
c1RvU2Nyb2xsID0gYWJzKGRlbHRhWCk7CisgICAgICAgICAgICAgICAgaWYgKCFlLmlzQ29udGlu
dW91cygpICYmIGFicyhkZWx0YVgpICE9IDE1MCkgeworICAgICAgICAgICAgICAgICAgICBpZiAo
bm9kZS0+cmVuZGVyZXIoKS0+c2Nyb2xsKGRlbHRhWCA8IDAgPyBTY3JvbGxEb3duIDogU2Nyb2xs
VXAsIFNjcm9sbEJ5TGluZSwgcGl4ZWxzVG9TY3JvbGwpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgZS5hY2NlcHQoKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICBpZiAoYWJzKGRlbHRhWCkgPT0gMTUwKQorICAgICAgICAgICAgICAgICAgICAgICAgcGl4
ZWxzVG9TY3JvbGwgPSBtX2ZyYW1lLT5wYWdlKCktPmNocm9tZSgpLT53aW5kb3dSZWN0KCkud2lk
dGgoKTsgCisgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5yZW5kZXJlcigpLT5zY3JvbGwo
ZGVsdGFYIDwgMCA/IFNjcm9sbERvd24gOiBTY3JvbGxVcCwgU2Nyb2xsQnlQaXhlbCwgcGl4ZWxz
VG9TY3JvbGwpKQorICAgICAgICAgICAgICAgICAgICAgICAgZS5hY2NlcHQoKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChkZWx0YVkpIHsKKyAg
ICAgICAgICAgICAgICBpbnQgcGl4ZWxzVG9TY3JvbGwgPSBkZWx0YVkgPCAwID8gLWRlbHRhWSA6
IGRlbHRhWTsKKyAgICAgICAgICAgICAgICBpZiAoIWUuaXNDb250aW51b3VzKCkgJiYgYWJzKGRl
bHRhWSkgIT0gMTUwKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5yZW5kZXJlcigp
LT5zY3JvbGwoZGVsdGFZIDwgMCA/IFNjcm9sbERvd24gOiBTY3JvbGxVcCwgU2Nyb2xsQnlMaW5l
LCBwaXhlbHNUb1Njcm9sbCkpCisgICAgICAgICAgICAgICAgICAgICAgICBlLmFjY2VwdCgpOwor
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChhYnMoZGVs
dGFZKSA9PSAxNTApCisgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbHNUb1Njcm9sbCA9IG1f
ZnJhbWUtPnBhZ2UoKS0+Y2hyb21lKCktPndpbmRvd1JlY3QoKS5oZWlnaHQoKTsgCisgICAgICAg
ICAgICAgICAgICAgIGlmIChub2RlLT5yZW5kZXJlcigpLT5zY3JvbGwoZGVsdGFZIDwgMCA/IFNj
cm9sbERvd24gOiBTY3JvbGxVcCwgU2Nyb2xsQnlQaXhlbCwgcGl4ZWxzVG9TY3JvbGwpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgZS5hY2NlcHQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgCiAgICAgICAgIH0KICAgICB9CiAKSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaAkocmV2aXNpb24gMzQ2OTUpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw4
ICs2NCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY29uc3QgSW50UG9pbnQmIHBv
cygpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247IH0KICAgICAgICAgY29uc3QgSW50UG9pbnQm
IGdsb2JhbFBvcygpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsUG9zaXRpb247IH0KIAotICAgICAg
ICBmbG9hdCBkZWx0YVgoKSBjb25zdCB7IHJldHVybiBtX2RlbHRhWDsgfQotICAgICAgICBmbG9h
dCBkZWx0YVkoKSBjb25zdCB7IHJldHVybiBtX2RlbHRhWTsgfQorICAgICAgICBmbG9hdCBkZWx0
YVgoYm9vbCB3aXRoU2Nyb2xsU2Vuc2liaWxpdHlGYWN0b3IgPSB0cnVlKSBjb25zdCB7IHJldHVy
biAod2l0aFNjcm9sbFNlbnNpYmlsaXR5RmFjdG9yID8gbV9kZWx0YVggKiBtX2NoYXJTY3JvbGxT
ZW5zaXRpdml0eSA6IG1fZGVsdGFYKTsgfQorICAgICAgICBmbG9hdCBkZWx0YVkoYm9vbCB3aXRo
U2Nyb2xsU2Vuc2liaWxpdHlGYWN0b3IgPSB0cnVlKSBjb25zdCB7IHJldHVybiAod2l0aFNjcm9s
bFNlbnNpYmlsaXR5RmFjdG9yID8gbV9kZWx0YVkgKiBtX2xpbmVTY3JvbGxTZW5zaXRpdml0eSA6
IG1fZGVsdGFZKTsgfQogCiAgICAgICAgIGJvb2wgaXNBY2NlcHRlZCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNBY2NlcHRlZDsgfQogICAgICAgICBib29sIHNoaWZ0S2V5KCkgY29uc3QgeyByZXR1cm4g
bV9zaGlmdEtleTsgfQpAQCAtMTA2LDYgKzEwNiw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgSW50UG9pbnQgbV9nbG9iYWxQb3NpdGlvbjsKICAgICAgICAgZmxvYXQgbV9kZWx0YVg7
CiAgICAgICAgIGZsb2F0IG1fZGVsdGFZOworICAgICAgICBpbnQgbV9jaGFyU2Nyb2xsU2Vuc2l0
aXZpdHk7CisgICAgICAgIGludCBtX2xpbmVTY3JvbGxTZW5zaXRpdml0eTsKICAgICAgICAgYm9v
bCBtX2lzQWNjZXB0ZWQ7CiAgICAgICAgIGJvb2wgbV9zaGlmdEtleTsKICAgICAgICAgYm9vbCBt
X2N0cmxLZXk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2d0ay9XaGVlbEV2ZW50R3RrLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2d0ay9XaGVlbEV2ZW50R3RrLmNwcAkocmV2
aXNpb24gMzQ2OTUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2d0ay9XaGVlbEV2ZW50R3RrLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsMTAgQEAgUGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0
Zm9ybVdoZWVsRXZlbnQoRwogICAgIG1fbWV0YUtleSA9IGZhbHNlOwogI2VuZGlmCiAgICAgbV9p
c0NvbnRpbnVvdXMgPSBmYWxzZTsKKworICAgIC8vVE9ETzogcmV0cmlldmUgdGhlIHVzZXIgc2V0
dGluZyBmb3IgdGhlIG51bWJlciBvZiBsaW5lcyB0byBzY3JvbGwgb24gZWFjaCB3aGVlbCBldmVu
dAorICAgIG1fbGluZVNjcm9sbFNlbnNpdGl2aXR5ID0gMTsKKyAgICBtX2NoYXJTY3JvbGxTZW5z
aXRpdml0eSA9IDE7CiB9CiAKIH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbWFjL1doZWVsRXZl
bnRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2hlZWxFdmVudE1h
Yy5tbQkocmV2aXNpb24gMzQ2OTUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL21hYy9XaGVlbEV2ZW50
TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw4IEBAIFBsYXRmb3JtV2hlZWxFdmVu
dDo6UGxhdGZvcm1XaGVlbEV2ZW50KE4KICAgICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9p
bnRGb3JFdmVudChldmVudCkpCiAgICAgLCBtX2RlbHRhWChbZXZlbnQgZGVsdGFYXSkKICAgICAs
IG1fZGVsdGFZKFtldmVudCBkZWx0YVldKQorICAgICwgbV9jaGFyU2Nyb2xsU2Vuc2l0aXZpdHko
MSkgLy9WYWx1ZXMgbmVlZGVkIG9uIG90aGVyIHBsYXRmb3JtcyB0byBsZXQgdGhlIHVzZXIgdG8g
Y2hvb3NlIHRoZSBudW1lciBvZiBsaW5lcyB0byBzY3JvbGwgb24gZWFjaCB3aGVlbCBldmVudAor
ICAgICwgbV9saW5lU2Nyb2xsU2Vuc2l0aXZpdHkoMSkKICAgICAsIG1faXNBY2NlcHRlZChmYWxz
ZSkKICAgICAsIG1fc2hpZnRLZXkoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNTaGlmdEtleU1h
c2spCiAgICAgLCBtX2N0cmxLZXkoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNDb250cm9sS2V5
TWFzaykKQEAgLTQ1LDYgKzQ3LDcgQEAgUGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVs
RXZlbnQoTgogICAgIEJPT0wgY29udGludW91czsKICAgICB3a0dldFdoZWVsRXZlbnREZWx0YXMo
ZXZlbnQsICZtX2NvbnRpbnVvdXNEZWx0YVgsICZtX2NvbnRpbnVvdXNEZWx0YVksICZjb250aW51
b3VzKTsKICAgICBtX2lzQ29udGludW91cyA9IGNvbnRpbnVvdXM7CisgICAgCiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vcXQvV2hlZWxFdmVudFF0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3F0L1doZWVsRXZlbnRRdC5jcHAJ
KHJldmlzaW9uIDM0Njk1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9xdC9XaGVlbEV2ZW50UXQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0MywxMCBAQCBQbGF0Zm9ybVdoZWVsRXZlbnQ6OlBs
YXRmb3JtV2hlZWxFdmVudChRCiAgICAgICAgIG1fZGVsdGFYID0gMDsKICAgICAgICAgbV9kZWx0
YVkgPSAoZS0+ZGVsdGEoKSAvIDEyMCk7CiAgICAgfQorCisgICAgLy9UT0RPOiByZXRyaWV2ZSB0
aGUgdXNlciBzZXR0aW5nIGZvciB0aGUgbnVtYmVyIG9mIGxpbmVzIHRvIHNjcm9sbCBvbiBlYWNo
IHdoZWVsIGV2ZW50CisgICAgbV9saW5lU2Nyb2xsU2Vuc2l0aXZpdHkgPSAxOworICAgIG1fY2hh
clNjcm9sbFNlbnNpdGl2aXR5ID0gMTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsVmlld1dpbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsVmlld1dpbi5jcHAJKHJldmlzaW9uIDM0Njk1KQor
KysgV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsVmlld1dpbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY4MSw3ICs2ODEsMTMgQEAgdm9pZCBTY3JvbGxWaWV3Ojp3aGVlbEV2ZW50KFBsYXRmb3Jt
V2hlZQogICAgICAgICAoZS5kZWx0YVkoKSA8IDAgJiYgbWF4U2Nyb2xsRGVsdGEuaGVpZ2h0KCkg
PiAwKSB8fAogICAgICAgICAoZS5kZWx0YVkoKSA+IDAgJiYgc2Nyb2xsT2Zmc2V0KCkuaGVpZ2h0
KCkgPiAwKSkgewogICAgICAgICBlLmFjY2VwdCgpOwotICAgICAgICBzY3JvbGxCeSgtZS5kZWx0
YVgoKSAqIExJTkVfU1RFUCwgLWUuZGVsdGFZKCkgKiBMSU5FX1NURVApOworICAgICAgICBmbG9h
dCBkZWx0YVggPSBlLmRlbHRhWCgpLCBkZWx0YVkgPSBlLmRlbHRhWSgpOworICAgICAgICBpZiAo
YWJzKGRlbHRhWCkgPT0gMTUwKQorICAgICAgICAgICAgZGVsdGFYID0gKGRlbHRhWCA+IDAgPyB2
aXNpYmxlV2lkdGgoKSA6IC12aXNpYmxlV2lkdGgoKSkgLyBMSU5FX1NURVA7CisgICAgICAgIGlm
IChhYnMoZGVsdGFZKSA9PSAxNTApCisgICAgICAgICAgICBkZWx0YVkgPSAoZGVsdGFZID4gMCA/
IHZpc2libGVIZWlnaHQoKSA6IC12aXNpYmxlSGVpZ2h0KCkpIC8gTElORV9TVEVQOworCisgICAg
ICAgIHNjcm9sbEJ5KC1kZWx0YVggKiBMSU5FX1NURVAsIC1kZWx0YVkgKiBMSU5FX1NURVApOwog
ICAgIH0KIH0KIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2hlZWxFdmVudFdpbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2hlZWxFdmVudFdpbi5jcHAJKHJl
dmlzaW9uIDM0Njk1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2hlZWxFdmVudFdpbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
I2RlZmluZSBISUdIX0JJVF9NQVNLX1NIT1JUIDB4ODAwMAorI2RlZmluZSBTUElfR0VUV0hFRUxT
Q1JPTExDSEFSUyAweDAwNkMKIAogc3RhdGljIEludFBvaW50IHBvc2l0aW9uRm9yRXZlbnQoSFdO
RCBoV25kLCBMUEFSQU0gbFBhcmFtKQogewpAQCAtNTUsNiArNTYsNyBAQCBQbGF0Zm9ybVdoZWVs
RXZlbnQ6OlBsYXRmb3JtV2hlZWxFdmVudChICiAgICAgLCBtX21ldGFLZXkobV9hbHRLZXkpIC8v
IEZJWE1FOiBXZSdsbCBoYXZlIHRvIHRlc3Qgb3RoZXIgYnJvd3NlcnMKICAgICAsIG1faXNDb250
aW51b3VzKGZhbHNlKQogeworICAgIHN0YXRpYyBVTE9ORyBzY3JvbGxMaW5lcywgc2Nyb2xsQ2hh
cnM7CiAgICAgZmxvYXQgZGVsdGEgPSBHRVRfV0hFRUxfREVMVEFfV1BBUkFNKHdQYXJhbSkgLyAo
ZmxvYXQpV0hFRUxfREVMVEE7CiAgICAgaWYgKGlzSG9yaXpvbnRhbCkgewogICAgICAgICAvLyBX
aW5kb3dzIHNlbmRzIGEgcG9zaXRpdmUgZGVsdGEgZm9yIHNjcm9sbGluZyByaWdodCwgd2hpbGUg
QXBwS2l0CkBAIC02MiwxMCArNjQsMzMgQEAgUGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdo
ZWVsRXZlbnQoSAogICAgICAgICAvLyBzbyB3ZSBoYXZlIHRvIG5lZ2F0ZSBvdXIgaG9yaXpvbnRh
bCBkZWx0YSB0byBtYXRjaC4KICAgICAgICAgbV9kZWx0YVggPSAtZGVsdGE7CiAgICAgICAgIG1f
ZGVsdGFZID0gMDsKKworICAgICAgICBpZighIDo6U3lzdGVtUGFyYW1ldGVyc0luZm8oU1BJX0dF
VFdIRUVMU0NST0xMQ0hBUlMsIDAsICZzY3JvbGxDaGFycywgMCkpCisgICAgICAgICAgICBzY3Jv
bGxDaGFycyA9IDE7CisKKyAgICAgICAgLy9JZiB3ZSBhcmUgaW4gYSBwYWdlIHNjcm9sbCBtb2Rl
IHdlIGNob29zZSBhbiBhcmJpdHJhcnkgaGlnaCB2YWx1ZSAKKyAgICAgICAgLy93aGljaCBjYW4g
YmUgcmVjb25nbml6ZWQgZWFzaWx5IGxhdGVyIHdoZW4gd2UnbGwgY2hvb3NlIHRoZSBzY3JvbGwg
Z3JhbnVsYXJpdHkuCisgICAgICAgIGlmIChzY3JvbGxDaGFycyA+IFdIRUVMX0RFTFRBKQorICAg
ICAgICAgICAgc2Nyb2xsQ2hhcnMgPSAxNTA7CisKKyAgICAgICAgbV9jaGFyU2Nyb2xsU2Vuc2l0
aXZpdHkgPSAoaW50KSBzY3JvbGxDaGFyczsKKyAgICAgICAgbV9saW5lU2Nyb2xsU2Vuc2l0aXZp
dHkgPSAxOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fZGVsdGFYID0gMDsKICAgICAgICAgbV9k
ZWx0YVkgPSBkZWx0YTsKKworICAgICAgICBpZighIDo6U3lzdGVtUGFyYW1ldGVyc0luZm8oU1BJ
X0dFVFdIRUVMU0NST0xMTElORVMsIDAsICZzY3JvbGxMaW5lcywgMCkpCisgICAgICAgICAgICBz
Y3JvbGxMaW5lcyA9IDM7CisKKyAgICAgICAgLy9JZiB3ZSBhcmUgaW4gYSBwYWdlIHNjcm9sbCBt
b2RlIHdlIGNob29zZSBhbiBhcmJpdHJhcnkgaGlnaCB2YWx1ZSAKKyAgICAgICAgLy93aGljaCBj
YW4gYmUgcmVjb25nbml6ZWQgZWFzaWx5IGxhdGVyIHdoZW4gd2UnbGwgY2hvb3NlIHRoZSBzY3Jv
bGwgZ3JhbnVsYXJpdHkuCisgICAgICAgIGlmIChzY3JvbGxMaW5lcyA+IFdIRUVMX0RFTFRBKQor
ICAgICAgICAgICAgc2Nyb2xsTGluZXMgPSAxNTA7CisKKyAgICAgICAgbV9saW5lU2Nyb2xsU2Vu
c2l0aXZpdHkgPSAoaW50KSBzY3JvbGxMaW5lczsKKyAgICAgICAgbV9jaGFyU2Nyb2xsU2Vuc2l0
aXZpdHkgPSAxOwogICAgIH0KKyAgICAKIH0KIAogfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS93
eC9Nb3VzZVdoZWVsRXZlbnRXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS93
eC9Nb3VzZVdoZWVsRXZlbnRXeC5jcHAJKHJldmlzaW9uIDM0Njk1KQorKysgV2ViQ29yZS9wbGF0
Zm9ybS93eC9Nb3VzZVdoZWVsRXZlbnRXeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1
LDkgQEAgUGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQoYwogICAgICwgbV9j
b250aW51b3VzRGVsdGFYKDApCiAgICAgLCBtX2NvbnRpbnVvdXNEZWx0YVkoMCkKIHsKLQorICAg
IC8vVE9ETzogcmV0cmlldmUgdGhlIHVzZXIgc2V0dGluZyBmb3IgdGhlIG51bWJlciBvZiBsaW5l
cyB0byBzY3JvbGwgb24gZWFjaCB3aGVlbCBldmVudAorICAgIG1fbGluZVNjcm9sbFNlbnNpdGl2
aXR5ID0gMTsKKyAgICBtX2NoYXJTY3JvbGxTZW5zaXRpdml0eSA9IDE7CiB9CiAKIH0K
</data>
<flag name="review"
          id="9684"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22075</attachid>
            <date>2008-07-03 16:01:25 -0700</date>
            <delta_ts>2008-07-15 12:04:49 -0700</delta_ts>
            <desc>correctd patch</desc>
            <filename>mbritto_bug17589_20080703.diff</filename>
            <type>text/plain</type>
            <size>12919</size>
            <attacher name="Maxime Britto">maxime.britto</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
ICAgKHJldmlzaW9uIDM0OTY0KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cgICAod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDMxIEBACisyMDA4LTA3LTAzICBNYXhpbWUgQnJpdHRvICA8YnJpdHRvQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1ODkKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzU3NzA4OTM+CisgICAgICAgIFJldHJpZXZlIHRoZSB3aGVlbCBzZW5z
aXRpdml0eSBzZXR0aW5nIGZyb20gd2luZG93cyBmb3IgdGhlIGhvcml6b250YWwgYW5kIHRoZSB2
ZXJ0aWNhbCBzY3JvbGxpbmcuCisgICAgICAgIEFsbG93IHRoZSBwYWdlIHNjcm9sbGluZyB3aXRo
IHRoZSB3aGVlbCAoaWYgYWN0aXZhdGVkIGluIHdpbmRvd3Mgc2V0dGluZ3MpCisgICAgICAgIEZv
ciB0aGUgb3RoZXIgcGxhdGZvcm1zLCBub3RoaW5nIGlzIGNoYW5nZWQgYnV0IGlmIHNvbWVvbmUg
d2FudCB0byBhY3RpdmF0ZSB0aGlzIGZlYXR1cmUgaGUvc2hlIGhhcyB0byByZXRyaWV2ZSB0aGUg
c2V0dGluZ3MgYW5kIGZpbGwgb3V0IHRoZSBtX2xpbmVTY3JvbGxTZW5zaXRpdml0eSBhbmQvb3Ig
bV9jaGFyU2Nyb2xsU2Vuc2l0aXZpdHkgaW4gaGlzL2hlciBQbGF0Zm9ybVdoZWVsRXZlbnQgY29u
c3RydWN0b3IuCisKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnQpOgorICAgICAgICAqIHBsYXRm
b3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1XaGVl
bEV2ZW50OjpkZWx0YVgpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50Ojpk
ZWx0YVkpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9XaGVlbEV2ZW50R3RrLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvV2hlZWxFdmVudE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9xdC9XaGVlbEV2ZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1XaGVl
bEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TY3Jv
bGxWaWV3V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OndoZWVsRXZlbnQp
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9XaGVlbEV2ZW50V2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAg
KiBwbGF0Zm9ybS93eC9Nb3VzZVdoZWVsRXZlbnRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybVdoZWVsRXZlbnQ6OlBsYXRmb3JtV2hlZWxFdmVudCk6CisKIDIwMDgtMDctMDIgIEJl
dGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
LgpJbmRleDogV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgICAocmV2aXNpb24gMzQ2OTUpCisrKyBXZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCAgICh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBA
CiAjaW5jbHVkZSAiRWRpdG9yLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUg
IkZsb2F0UG9pbnQuaCIKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJGb2N1c0Nv
bnRyb2xsZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgi
CkBAIC0xMzU5LDEyICsxMzYwLDMzIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2
ZW50KFBsYXQKICAgICAgICAgICAgIC8vIGEgTWFjQm9vayBwcm8gaXMgYW4gZXhhbXBsZSBvZiBh
IDItZGltZW5zaW9uYWwgbW91c2Ugd2hlZWwgZXZlbnQgKHdoZXJlIGJvdGggZGVsdGFYIGFuZCBk
ZWx0YVkgY2FuIGJlIHNldCkuCiAgICAgICAgICAgICBmbG9hdCBkZWx0YVggPSBlLmlzQ29udGlu
dW91cygpID8gZS5jb250aW51b3VzRGVsdGFYKCkgOiBlLmRlbHRhWCgpOwogICAgICAgICAgICAg
ZmxvYXQgZGVsdGFZID0gZS5pc0NvbnRpbnVvdXMoKSA/IGUuY29udGludW91c0RlbHRhWSgpIDog
ZS5kZWx0YVkoKTsKLSAgICAgICAgICAgIGlmIChkZWx0YVggJiYgbm9kZS0+cmVuZGVyZXIoKS0+
c2Nyb2xsKGRlbHRhWCA8IDAgPyBTY3JvbGxSaWdodCA6IFNjcm9sbExlZnQsIGUuaXNDb250aW51
b3VzKCkgPyBTY3JvbGxCeVBpeGVsIDogU2Nyb2xsQnlMaW5lLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbHRhWCA8IDAgPyAtZGVsdGFY
IDogZGVsdGFYKSkKLSAgICAgICAgICAgICAgICBlLmFjY2VwdCgpOwotICAgICAgICAgICAgaWYg
KGRlbHRhWSAmJiBub2RlLT5yZW5kZXJlcigpLT5zY3JvbGwoZGVsdGFZIDwgMCA/IFNjcm9sbERv
d24gOiBTY3JvbGxVcCwgZS5pc0NvbnRpbnVvdXMoKSA/IFNjcm9sbEJ5UGl4ZWwgOiBTY3JvbGxC
eUxpbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGVsdGFZIDwgMCA/IC1kZWx0YVkgOiBkZWx0YVkpKQotICAgICAgICAgICAgICAgIGUu
YWNjZXB0KCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChkZWx0YVgpIHsKKyAgICAg
ICAgICAgICAgICBpbnQgcGl4ZWxzVG9TY3JvbGwgPSBhYnMoZGVsdGFYKTsKKyAgICAgICAgICAg
ICAgICBpZiAoIWUuaXNDb250aW51b3VzKCkgJiYgIWUuaXNQYWdlWFNjcm9sbE1vZGVFbmFibGVk
KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPnJlbmRlcmVyKCktPnNjcm9sbChk
ZWx0YVggPCAwID8gU2Nyb2xsRG93biA6IFNjcm9sbFVwLCBTY3JvbGxCeUxpbmUsIHBpeGVsc1Rv
U2Nyb2xsKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGUuYWNjZXB0KCk7CisgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGUuaXNQYWdlWFNjcm9sbE1v
ZGVFbmFibGVkKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbHNUb1Njcm9sbCA9IG1f
ZnJhbWUtPnBhZ2UoKS0+Y2hyb21lKCktPndpbmRvd1JlY3QoKS53aWR0aCgpOyAKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKG5vZGUtPnJlbmRlcmVyKCktPnNjcm9sbChkZWx0YVggPCAwID8gU2Ny
b2xsRG93biA6IFNjcm9sbFVwLCBTY3JvbGxCeVBpeGVsLCBwaXhlbHNUb1Njcm9sbCkpCisgICAg
ICAgICAgICAgICAgICAgICAgICBlLmFjY2VwdCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGRlbHRhWSkgeworICAgICAgICAgICAgICAgIGlu
dCBwaXhlbHNUb1Njcm9sbCA9IGRlbHRhWSA8IDAgPyAtZGVsdGFZIDogZGVsdGFZOworICAgICAg
ICAgICAgICAgIGlmICghZS5pc0NvbnRpbnVvdXMoKSAmJiAhZS5pc1BhZ2VZU2Nyb2xsTW9kZUVu
YWJsZWQoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+cmVuZGVyZXIoKS0+c2Ny
b2xsKGRlbHRhWSA8IDAgPyBTY3JvbGxEb3duIDogU2Nyb2xsVXAsIFNjcm9sbEJ5TGluZSwgcGl4
ZWxzVG9TY3JvbGwpKQorICAgICAgICAgICAgICAgICAgICAgICAgZS5hY2NlcHQoKTsKKyAgICAg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAoZS5pc1BhZ2VZU2Ny
b2xsTW9kZUVuYWJsZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHBpeGVsc1RvU2Nyb2xs
ID0gbV9mcmFtZS0+cGFnZSgpLT5jaHJvbWUoKS0+d2luZG93UmVjdCgpLmhlaWdodCgpOyAKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPnJlbmRlcmVyKCktPnNjcm9sbChkZWx0YVkgPCAw
ID8gU2Nyb2xsRG93biA6IFNjcm9sbFVwLCBTY3JvbGxCeVBpeGVsLCBwaXhlbHNUb1Njcm9sbCkp
CisgICAgICAgICAgICAgICAgICAgICAgICBlLmFjY2VwdCgpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKICAgICAgICAgfQogICAgIH0KIApJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oICAgKHJldmlzaW9uIDM0Njk1KQor
KysgV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaCAgICh3b3JraW5nIGNvcHkp
CkBAIC02NCw5ICs2NCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNvbnN0IElu
dFBvaW50JiBwb3MoKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9CiAgICAgICAgIGNvbnN0
IEludFBvaW50JiBnbG9iYWxQb3MoKSBjb25zdCB7IHJldHVybiBtX2dsb2JhbFBvc2l0aW9uOyB9
CiAKLSAgICAgICAgZmxvYXQgZGVsdGFYKCkgY29uc3QgeyByZXR1cm4gbV9kZWx0YVg7IH0KLSAg
ICAgICAgZmxvYXQgZGVsdGFZKCkgY29uc3QgeyByZXR1cm4gbV9kZWx0YVk7IH0KKyAgICAgICAg
ZmxvYXQgZGVsdGFYKGJvb2wgd2l0aFNjcm9sbFNlbnNpYmlsaXR5RmFjdG9yID0gdHJ1ZSkgY29u
c3QgeyByZXR1cm4gKHdpdGhTY3JvbGxTZW5zaWJpbGl0eUZhY3RvciA/IG1fZGVsdGFYICogbV9j
aGFyc1RvU2Nyb2xsUGVyRGVsdGEgOiBtX2RlbHRhWCk7IH0KKyAgICAgICAgZmxvYXQgZGVsdGFZ
KGJvb2wgd2l0aFNjcm9sbFNlbnNpYmlsaXR5RmFjdG9yID0gdHJ1ZSkgY29uc3QgeyByZXR1cm4g
KHdpdGhTY3JvbGxTZW5zaWJpbGl0eUZhY3RvciA/IG1fZGVsdGFZICogbV9saW5lc1RvU2Nyb2xs
UGVyRGVsdGEgOiBtX2RlbHRhWSk7IH0KIAorICAgICAgICBib29sIGlzUGFnZVhTY3JvbGxNb2Rl
RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVhTY3JvbGxNb2RlOyB9CisgICAgICAgIGJv
b2wgaXNQYWdlWVNjcm9sbE1vZGVFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlWVNjcm9s
bE1vZGU7IH0KICAgICAgICAgYm9vbCBpc0FjY2VwdGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fj
Y2VwdGVkOyB9CiAgICAgICAgIGJvb2wgc2hpZnRLZXkoKSBjb25zdCB7IHJldHVybiBtX3NoaWZ0
S2V5OyB9CiAgICAgICAgIGJvb2wgY3RybEtleSgpIGNvbnN0IHsgcmV0dXJuIG1fY3RybEtleTsg
fQpAQCAtMTA2LDYgKzEwOCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEludFBv
aW50IG1fZ2xvYmFsUG9zaXRpb247CiAgICAgICAgIGZsb2F0IG1fZGVsdGFYOwogICAgICAgICBm
bG9hdCBtX2RlbHRhWTsKKyAgICAgICAgaW50IG1fY2hhcnNUb1Njcm9sbFBlckRlbHRhOworICAg
ICAgICBpbnQgbV9saW5lc1RvU2Nyb2xsUGVyRGVsdGE7CisgICAgICAgIGJvb2wgbV9wYWdlWFNj
cm9sbE1vZGU7CisgICAgICAgIGJvb2wgbV9wYWdlWVNjcm9sbE1vZGU7CiAgICAgICAgIGJvb2wg
bV9pc0FjY2VwdGVkOwogICAgICAgICBib29sIG1fc2hpZnRLZXk7CiAgICAgICAgIGJvb2wgbV9j
dHJsS2V5OwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2hlZWxFdmVudEd0ay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2hlZWxFdmVudEd0ay5jcHAgIChyZXZp
c2lvbiAzNDY5NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3RrL1doZWVsRXZlbnRHdGsuY3BwICAo
d29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsMTIgQEAgUGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0
Zm9ybVdoZWVsRXZlbnQoRwogICAgIG1fbWV0YUtleSA9IGZhbHNlOwogI2VuZGlmCiAgICAgbV9p
c0NvbnRpbnVvdXMgPSBmYWxzZTsKKworICAgIC8vIEZJWE1FOiByZXRyaWV2ZSB0aGUgdXNlciBz
ZXR0aW5nIGZvciB0aGUgbnVtYmVyIG9mIGxpbmVzIHRvIHNjcm9sbCBvbiBlYWNoIHdoZWVsIGV2
ZW50CisgICAgbV9jaGFyc1RvU2Nyb2xsUGVyRGVsdGEgPSAxOworICAgIG1fbGluZXNUb1Njcm9s
bFBlckRlbHRhID0gMTsKKyAgICBtX3BhZ2VYU2Nyb2xsTW9kZSA9IGZhbHNlOworICAgIG1fcGFn
ZVlTY3JvbGxNb2RlID0gZmFsc2U7CiB9CiAKIH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbWFj
L1doZWVsRXZlbnRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2hl
ZWxFdmVudE1hYy5tbSAgIChyZXZpc2lvbiAzNDY5NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbWFj
L1doZWVsRXZlbnRNYWMubW0gICAod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsMTAgQEAgUGxh
dGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQoTgogICAgICwgbV9nbG9iYWxQb3Np
dGlvbihnbG9iYWxQb2ludEZvckV2ZW50KGV2ZW50KSkKICAgICAsIG1fZGVsdGFYKFtldmVudCBk
ZWx0YVhdKQogICAgICwgbV9kZWx0YVkoW2V2ZW50IGRlbHRhWV0pCisgICAgLCBtX2NoYXJzVG9T
Y3JvbGxQZXJEZWx0YSgxKQorICAgICwgbV9saW5lc1RvU2Nyb2xsUGVyRGVsdGEoMSkKKyAgICwg
bV9wYWdlWFNjcm9sbE1vZGUoZmFsc2UpCisgICAsIG1fcGFnZVlTY3JvbGxNb2RlKGZhbHNlKQog
ICAgICwgbV9pc0FjY2VwdGVkKGZhbHNlKQogICAgICwgbV9zaGlmdEtleShbZXZlbnQgbW9kaWZp
ZXJGbGFnc10gJiBOU1NoaWZ0S2V5TWFzaykKICAgICAsIG1fY3RybEtleShbZXZlbnQgbW9kaWZp
ZXJGbGFnc10gJiBOU0NvbnRyb2xLZXlNYXNrKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9xdC9X
aGVlbEV2ZW50UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vcXQvV2hlZWxF
dmVudFF0LmNwcCAgICAocmV2aXNpb24gMzQ2OTUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL3F0L1do
ZWVsRXZlbnRRdC5jcHAgICAgKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDEyIEBAIFBsYXRm
b3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KFEKICAgICAgICAgbV9kZWx0YVggPSAw
OwogICAgICAgICBtX2RlbHRhWSA9IChlLT5kZWx0YSgpIC8gMTIwKTsKICAgICB9CisKKyAgICAv
LyBGSVhNRTogcmV0cmlldmUgdGhlIHVzZXIgc2V0dGluZyBmb3IgdGhlIG51bWJlciBvZiBsaW5l
cyB0byBzY3JvbGwgb24gZWFjaCB3aGVlbCBldmVudAorICAgIG1fY2hhcnNUb1Njcm9sbFBlckRl
bHRhID0gMTsKKyAgICBtX2xpbmVzVG9TY3JvbGxQZXJEZWx0YSA9IDE7CisgICAgbV9wYWdlWFNj
cm9sbE1vZGUgPSBmYWxzZTsKKyAgICBtX3BhZ2VZU2Nyb2xsTW9kZSA9IGZhbHNlOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxW
aWV3V2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxWaWV3
V2luLmNwcCAgKHJldmlzaW9uIDM0Njk1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xs
Vmlld1dpbi5jcHAgICh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw4IEBAIHVzaW5nIG5hbWVz
cGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorI2RlZmluZSBMSU5FX1NURVBfV0lO
IDE1IC8vIFRvIGtlZXAgdGhlIGJlaGF2aW9yIHdlIGhhZCBiZWZvcmUgYWRkaW5nIHRoZSBzY3Jv
bGwgd2hlZWwgc2Vuc2l0aXZpdHkgOiA8cmRhcjovL3Byb2JsZW0vNTc3MDg5Mz4KKwogY2xhc3Mg
U2Nyb2xsVmlldzo6U2Nyb2xsVmlld1ByaXZhdGUgOiBwdWJsaWMgU2Nyb2xsYmFyQ2xpZW50IHsK
IHB1YmxpYzoKICAgICBTY3JvbGxWaWV3UHJpdmF0ZShTY3JvbGxWaWV3KiB2aWV3KQpAQCAtNTMx
LDcgKzUzMyw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyhjb25zdCAKIAog
ICAgICAgICBpZiAobV9kYXRhLT5tX3Njcm9sbGJhcnNTdXBwcmVzc2VkKQogICAgICAgICAgICAg
bV9kYXRhLT5tX2hCYXItPnNldFN1cHByZXNzSW52YWxpZGF0aW9uKHRydWUpOwotICAgICAgICBt
X2RhdGEtPm1faEJhci0+c2V0U3RlcHMoTElORV9TVEVQLCBwYWdlU3RlcCk7CisgICAgICAgIG1f
ZGF0YS0+bV9oQmFyLT5zZXRTdGVwcyhMSU5FX1NURVBfV0lOLCBwYWdlU3RlcCk7CiAgICAgICAg
IG1fZGF0YS0+bV9oQmFyLT5zZXRQcm9wb3J0aW9uKGNsaWVudFdpZHRoLCBjb250ZW50c1dpZHRo
KCkpOwogICAgICAgICBtX2RhdGEtPm1faEJhci0+c2V0VmFsdWUoc2Nyb2xsLndpZHRoKCkpOwog
ICAgICAgICBpZiAobV9kYXRhLT5tX3Njcm9sbGJhcnNTdXBwcmVzc2VkKQpAQCAtNTU0LDcgKzU1
Niw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyhjb25zdCAKIAogICAgICAg
ICBpZiAobV9kYXRhLT5tX3Njcm9sbGJhcnNTdXBwcmVzc2VkKQogICAgICAgICAgICAgbV9kYXRh
LT5tX3ZCYXItPnNldFN1cHByZXNzSW52YWxpZGF0aW9uKHRydWUpOwotICAgICAgICBtX2RhdGEt
Pm1fdkJhci0+c2V0U3RlcHMoTElORV9TVEVQLCBwYWdlU3RlcCk7CisgICAgICAgIG1fZGF0YS0+
bV92QmFyLT5zZXRTdGVwcyhMSU5FX1NURVBfV0lOLCBwYWdlU3RlcCk7CiAgICAgICAgIG1fZGF0
YS0+bV92QmFyLT5zZXRQcm9wb3J0aW9uKGNsaWVudEhlaWdodCwgY29udGVudHNIZWlnaHQoKSk7
CiAgICAgICAgIG1fZGF0YS0+bV92QmFyLT5zZXRWYWx1ZShzY3JvbGwuaGVpZ2h0KCkpOwogICAg
ICAgICBpZiAobV9kYXRhLT5tX3Njcm9sbGJhcnNTdXBwcmVzc2VkKQpAQCAtNjgxLDcgKzY4Mywx
MyBAQCB2b2lkIFNjcm9sbFZpZXc6OndoZWVsRXZlbnQoUGxhdGZvcm1XaGVlCiAgICAgICAgIChl
LmRlbHRhWSgpIDwgMCAmJiBtYXhTY3JvbGxEZWx0YS5oZWlnaHQoKSA+IDApIHx8CiAgICAgICAg
IChlLmRlbHRhWSgpID4gMCAmJiBzY3JvbGxPZmZzZXQoKS5oZWlnaHQoKSA+IDApKSB7CiAgICAg
ICAgIGUuYWNjZXB0KCk7Ci0gICAgICAgIHNjcm9sbEJ5KC1lLmRlbHRhWCgpICogTElORV9TVEVQ
LCAtZS5kZWx0YVkoKSAqIExJTkVfU1RFUCk7CisgICAgICAgIGZsb2F0IGRlbHRhWCA9IGUuZGVs
dGFYKCksIGRlbHRhWSA9IGUuZGVsdGFZKCk7CisgICAgICAgIGlmIChlLmlzUGFnZVhTY3JvbGxN
b2RlRW5hYmxlZCgpKQorICAgICAgICAgICAgZGVsdGFYID0gKGRlbHRhWCA+IDAgPyB2aXNpYmxl
V2lkdGgoKSA6IC12aXNpYmxlV2lkdGgoKSkgLyBMSU5FX1NURVBfV0lOOworICAgICAgICBpZiAo
ZS5pc1BhZ2VZU2Nyb2xsTW9kZUVuYWJsZWQoKSkKKyAgICAgICAgICAgIGRlbHRhWSA9IChkZWx0
YVkgPiAwID8gdmlzaWJsZUhlaWdodCgpIDogLXZpc2libGVIZWlnaHQoKSkgLyBMSU5FX1NURVBf
V0lOOworCisgICAgICAgIHNjcm9sbEJ5KC1kZWx0YVggKiBMSU5FX1NURVBfV0lOLCAtZGVsdGFZ
ICogTElORV9TVEVQX1dJTik7CiAgICAgfQogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3dp
bi9XaGVlbEV2ZW50V2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3dpbi9X
aGVlbEV2ZW50V2luLmNwcCAgKHJldmlzaW9uIDM0Njk1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS93
aW4vV2hlZWxFdmVudFdpbi5jcHAgICh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICNkZWZpbmUgSElHSF9CSVRfTUFTS19TSE9SVCAweDgwMDAK
KyNkZWZpbmUgU1BJX0dFVFdIRUVMU0NST0xMQ0hBUlMgMHgwMDZDCiAKIHN0YXRpYyBJbnRQb2lu
dCBwb3NpdGlvbkZvckV2ZW50KEhXTkQgaFduZCwgTFBBUkFNIGxQYXJhbSkKIHsKQEAgLTQ4LDYg
KzQ5LDggQEAgc3RhdGljIEludFBvaW50IGdsb2JhbFBvc2l0aW9uRm9yRXZlbnQoSAogUGxhdGZv
cm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQoSFdORCBoV25kLCBXUEFSQU0gd1BhcmFt
LCBMUEFSQU0gbFBhcmFtLCBib29sIGlzSG9yaXpvbnRhbCkKICAgICA6IG1fcG9zaXRpb24ocG9z
aXRpb25Gb3JFdmVudChoV25kLCBsUGFyYW0pKQogICAgICwgbV9nbG9iYWxQb3NpdGlvbihnbG9i
YWxQb3NpdGlvbkZvckV2ZW50KGhXbmQsIGxQYXJhbSkpCisgICAgLCBtX3BhZ2VYU2Nyb2xsTW9k
ZShmYWxzZSkKKyAgICAsIG1fcGFnZVlTY3JvbGxNb2RlKGZhbHNlKQogICAgICwgbV9pc0FjY2Vw
dGVkKGZhbHNlKQogICAgICwgbV9zaGlmdEtleSh3UGFyYW0gJiBNS19TSElGVCkKICAgICAsIG1f
Y3RybEtleSh3UGFyYW0gJiBNS19DT05UUk9MKQpAQCAtNTUsNiArNTgsNyBAQCBQbGF0Zm9ybVdo
ZWVsRXZlbnQ6OlBsYXRmb3JtV2hlZWxFdmVudChICiAgICAgLCBtX21ldGFLZXkobV9hbHRLZXkp
IC8vIEZJWE1FOiBXZSdsbCBoYXZlIHRvIHRlc3Qgb3RoZXIgYnJvd3NlcnMKICAgICAsIG1faXND
b250aW51b3VzKGZhbHNlKQogeworICAgIHN0YXRpYyBVTE9ORyBzY3JvbGxMaW5lcywgc2Nyb2xs
Q2hhcnM7CiAgICAgZmxvYXQgZGVsdGEgPSBHRVRfV0hFRUxfREVMVEFfV1BBUkFNKHdQYXJhbSkg
LyAoZmxvYXQpV0hFRUxfREVMVEE7CiAgICAgaWYgKGlzSG9yaXpvbnRhbCkgewogICAgICAgICAv
LyBXaW5kb3dzIHNlbmRzIGEgcG9zaXRpdmUgZGVsdGEgZm9yIHNjcm9sbGluZyByaWdodCwgd2hp
bGUgQXBwS2l0CkBAIC02MiwxMCArNjYsMzUgQEAgUGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9y
bVdoZWVsRXZlbnQoSAogICAgICAgICAvLyBzbyB3ZSBoYXZlIHRvIG5lZ2F0ZSBvdXIgaG9yaXpv
bnRhbCBkZWx0YSB0byBtYXRjaC4KICAgICAgICAgbV9kZWx0YVggPSAtZGVsdGE7CiAgICAgICAg
IG1fZGVsdGFZID0gMDsKKworICAgICAgICBpZiAoIVN5c3RlbVBhcmFtZXRlcnNJbmZvKFNQSV9H
RVRXSEVFTFNDUk9MTENIQVJTLCAwLCAmc2Nyb2xsQ2hhcnMsIDApKQorICAgICAgICAgICAgc2Ny
b2xsQ2hhcnMgPSAxOworCisgICAgICAgIC8vIElmIHdlIGFyZSBpbiBhIHBhZ2Ugc2Nyb2xsIG1v
ZGUgZm9yIHRoZSBjaGFycyB3ZSBzZXQgdGhlIGJvb2xlYW4KKyAgICAgICAgaWYgKHNjcm9sbENo
YXJzID4gV0hFRUxfREVMVEEpIHsKKyAgICAgICAgICAgIG1fcGFnZVhTY3JvbGxNb2RlID0gdHJ1
ZTsKKyAgICAgICAgICAgIHNjcm9sbENoYXJzID0gMTsKKyAgICAgICAgfQorCisgICAgICAgIG1f
Y2hhcnNUb1Njcm9sbFBlckRlbHRhID0gIHN0YXRpY19jYXN0PGludD4oc2Nyb2xsQ2hhcnMpOwor
ICAgICAgICBtX2xpbmVzVG9TY3JvbGxQZXJEZWx0YSA9IDE7CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgbV9kZWx0YVggPSAwOwogICAgICAgICBtX2RlbHRhWSA9IGRlbHRhOworCisgICAgICAgIGlm
ICghU3lzdGVtUGFyYW1ldGVyc0luZm8oU1BJX0dFVFdIRUVMU0NST0xMTElORVMsIDAsICZzY3Jv
bGxMaW5lcywgMCkpCisgICAgICAgICAgICBzY3JvbGxMaW5lcyA9IDM7IC8vIDMgaXMgdGhlIGRl
ZmF1bHQgd2luZG93cyB2YWx1ZSBmb3IgdGhlIG51bWJlciBvZiBsaW5lcyB0byBzY3JvbGwgZm9y
IGVhY2ggd2hlZWwgZXZlbnQKKworICAgICAgICAvLyBJZiB3ZSBhcmUgaW4gYSBwYWdlIHNjcm9s
bCBtb2RlIGZvciB0aGUgbGluZXMgd2Ugc2V0IHRoZSBib29sZWFuCisgICAgICAgIGlmIChzY3Jv
bGxMaW5lcyA+IFdIRUVMX0RFTFRBKSB7CisgICAgICAgICAgICBtX3BhZ2VZU2Nyb2xsTW9kZSA9
IHRydWU7CisgICAgICAgICAgICBzY3JvbGxMaW5lcyA9IDE7CisgICAgICAgIH0KKworICAgICAg
ICBtX2xpbmVzVG9TY3JvbGxQZXJEZWx0YSA9IHN0YXRpY19jYXN0PGludD4oc2Nyb2xsTGluZXMp
OworICAgICAgICBtX2NoYXJzVG9TY3JvbGxQZXJEZWx0YSA9IDE7CiAgICAgfQorICAgIAogfQog
CiB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3d4L01vdXNlV2hlZWxFdmVudFd4LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3d4L01vdXNlV2hlZWxFdmVudFd4LmNwcCAgIChy
ZXZpc2lvbiAzNDY5NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vd3gvTW91c2VXaGVlbEV2ZW50V3gu
Y3BwICAgKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDExIEBAIFBsYXRmb3JtV2hlZWxFdmVu
dDo6UGxhdGZvcm1XaGVlbEV2ZW50KGMKICAgICAsIG1fY29udGludW91c0RlbHRhWCgwKQogICAg
ICwgbV9jb250aW51b3VzRGVsdGFZKDApCiB7Ci0KKyAgICAvLyBGSVhNRTogcmV0cmlldmUgdGhl
IHVzZXIgc2V0dGluZyBmb3IgdGhlIG51bWJlciBvZiBsaW5lcyB0byBzY3JvbGwgb24gZWFjaCB3
aGVlbCBldmVudAorICAgIG1fY2hhcnNUb1Njcm9sbFBlckRlbHRhID0gMTsKKyAgICBtX2xpbmVz
VG9TY3JvbGxQZXJEZWx0YSA9IDE7CisgICAgbV9wYWdlWFNjcm9sbE1vZGUgPSBmYWxzZTsKKyAg
ICBtX3BhZ2VZU2Nyb2xsTW9kZSA9IGZhbHNlOwogfQogCiB9Cg==
</data>
<flag name="review"
          id="9717"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22284</attachid>
            <date>2008-07-15 12:04:49 -0700</date>
            <delta_ts>2008-07-15 13:21:50 -0700</delta_ts>
            <desc>Corrected patch</desc>
            <filename>mbritto_bug17589_20080715.diff</filename>
            <type>text/plain</type>
            <size>14373</size>
            <attacher name="Maxime Britto">maxime.britto</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
ICAgKHJldmlzaW9uIDM1MTg0KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cgICAod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDM4IEBACisyMDA4LTA3LTE1ICBNYXhpbWUgQnJpdHRvICA8YnJpdHRvQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1ODkKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzU3NzA4OTM+CisgICAgICAgIFJldHJpZXZlIHRoZSB3aGVlbCBzZW5z
aXRpdml0eSBzZXR0aW5nIGZyb20gd2luZG93cyBzeXN0ZW0gc2V0dGluZ3MgZm9yIHRoZSBob3Jp
em9udGFsIGFuZCB0aGUgdmVydGljYWwgc2Nyb2xsaW5nLgorICAgICAgICBBbGxvd3MgdGhlIHBh
Z2Ugc2Nyb2xsaW5nIHdpdGggdGhlIHdoZWVsIChpZiBhY3RpdmF0ZWQgaW4gd2luZG93cyBzZXR0
aW5ncykgb24gYm90aCBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCB3YXlzCisgICAgICAgIEZvciB0
aGUgb3RoZXIgcGxhdGZvcm1zLCBub3RoaW5nIGlzIGNoYW5nZWQgYnV0IGlmIHNvbWVvbmUgd2Fu
dCB0byBhY3RpdmF0ZSB0aGlzIGZlYXR1cmUgCisgICAgICAgIGhlL3NoZSBoYXMgdG8gcmV0cmll
dmUgdGhlIHNldHRpbmdzIGFuZCBmaWxsIG91dCB0aGUgbV9saW5lU2Nyb2xsU2Vuc2l0aXZpdHkg
YW5kL29yIG1fY2hhclNjcm9sbFNlbnNpdGl2aXR5IGluIGhpcy9oZXIgUGxhdGZvcm1XaGVlbEV2
ZW50IGNvbnN0cnVjdG9yLgorCisgICAgICAgICogQ2hhbmdlTG9nOgorICAgICAgICAqIHBhZ2Uv
RXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNjcm9sbEFuZEFjY2VwdEV2ZW50
KTogc3RhdGljIGlubGluZSBmdW5jdGlvbiB0byBhdm9pZCBjb3B5L3Bhc3RlIGluIHRoZSBtZW1i
ZXIgZnVuY3Rpb25zCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVs
RXZlbnQpOiBDYWxsIHRvIHRoZSBhYm92ZSBtZW50aW9ubmVkIHN0YXRpYyBpbmxpbmUgZnVuY3Rp
b24gd2l0aCB0aGUgcmlnaHQgcGFyYW1ldGVycyAKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9y
bVdoZWVsRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6ZGVs
dGFYKTogTm93IHJldHVybnMgdGhlIGRlbHRhIG11bHRpcGxpZWQgYnkgdGhlIHVzZXIgc2V0dGlu
Z3MgZm9yIHRoZSBudW1iZXIgb2YgbGluZXMgdG8gc2Nyb2xsCisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybVdoZWVsRXZlbnQ6OmRlbHRhWSk6IE5vdyByZXR1cm5zIHRoZSBkZWx0YSBtdWx0aXBs
aWVkIGJ5IHRoZSB1c2VyIHNldHRpbmdzIGZvciB0aGUgbnVtYmVyIG9mIGNoYXJzIHRvIHNjcm9s
bAorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50Ojppc1BhZ2VYU2Nyb2xsTW9k
ZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50Ojppc1BhZ2VZ
U2Nyb2xsTW9kZUVuYWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9XaGVlbEV2ZW50R3Rr
LmNwcDogQWRkIHRoZSB2YWx1ZXMgdG8gYXZvaWQgYnVpbGQgYnJlYWsgYnV0IHRoZSBmYWN0b3Jz
IGFyZSBpbml0aWFsaXplZCB0byAxIG5vdCB0byBjaGFuZ2UgdGhlIHByZXZpb3VzIGJlaGF2aW9y
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZlbnQ6OlBsYXRmb3JtV2hlZWxFdmVu
dCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1doZWVsRXZlbnRNYWMubW06IEFkZCB0aGUgdmFs
dWVzIHRvIGF2b2lkIGJ1aWxkIGJyZWFrIGJ1dCB0aGUgZmFjdG9ycyBhcmUgaW5pdGlhbGl6ZWQg
dG8gMSBub3QgdG8gY2hhbmdlIHRoZSBwcmV2aW91cyBiZWhhdmlvcgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQpOgorICAgICAgICAqIHBs
YXRmb3JtL3F0L1doZWVsRXZlbnRRdC5jcHA6IEFkZCB0aGUgdmFsdWVzIHRvIGF2b2lkIGJ1aWxk
IGJyZWFrIGJ1dCB0aGUgZmFjdG9ycyBhcmUgaW5pdGlhbGl6ZWQgdG8gMSBub3QgdG8gY2hhbmdl
IHRoZSBwcmV2aW91cyBiZWhhdmlvcgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2
ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TY3JvbGxW
aWV3V2luLmNwcDogQWRkZWQgdGhlIHBhZ2Ugc2Nyb2xsIChob3Jpei92ZXJ0aWNhbCkgYW5kIHJl
ZHVjZWQgdGhlIG51bWJlciBvZiBwaXhlbHMgdG8gc2Nyb2xsIHBlciBsaW5lIHRvIGtlZXAgdGhl
IHN0YW5kYXJkIGJlaGF2aW9yIHdpdGggdGhlIGZhY3RvcgorICAgICAgICAoV2ViQ29yZTo6YWRq
dXN0RGVsdGFGb3JQYWdlU2Nyb2xsTW9kZSk6IHN0YXRpYyBpbmxpbmUgZnVuY3Rpb24gdG8gYXZv
aWQgY29weS9wYXN0ZSBpbiB0aGUgbWVtYmVyIGZ1bmN0aW9ucworICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxW
aWV3Ojp3aGVlbEV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vV2hlZWxFdmVudFdpbi5j
cHA6IFJldHJpZXZlcyB0aGUgbmV3IHZhbHVlcyBieSB1c2luZyB0aGUgd2luMzIgQVBJLgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL3d4L01vdXNlV2hlZWxFdmVudFd4LmNwcDogQWRkIHRoZSB2YWx1
ZXMgdG8gYXZvaWQgYnVpbGQgYnJlYWsgYnV0IHRoZSBmYWN0b3JzIGFyZSBpbml0aWFsaXplZCB0
byAxIG5vdCB0byBjaGFuZ2UgdGhlIHByZXZpb3VzIGJlaGF2aW9yCisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVdoZWVsRXZlbnQ6OlBsYXRmb3JtV2hlZWxFdmVudCk6CisKIDIwMDgtMDctMTUg
IEtldmluIE1jQ3VsbG91Z2ggIDxrbWNjdWxsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgR2VvZmYuCkluZGV4OiBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCAgIChyZXZpc2lvbiAzNDY5
NSkKKysrIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwICAgKHdvcmtpbmcgY29weSkKQEAg
LTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJFZGl0b3IuaCIKICNpbmNsdWRlICJFdmVudE5hbWVz
LmgiCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2lu
Y2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAi
RnJhbWVMb2FkZXIuaCIKQEAgLTkyLDYgKzkzLDIwIEBAIGNvbnN0IGRvdWJsZSBhdXRvc2Nyb2xs
SW50ZXJ2YWwgPSAwLjE7CiAKIHN0YXRpYyBGcmFtZSogc3ViZnJhbWVGb3JUYXJnZXROb2RlKE5v
ZGUqIG5vZGUpOwogCitzdGF0aWMgaW5saW5lIHZvaWQgc2Nyb2xsQW5kQWNjZXB0RXZlbnQoaW50
IGRlbHRhLCBTY3JvbGxEaXJlY3Rpb24gcG9zaXRpdmVEaXJlY3Rpb24sIFNjcm9sbERpcmVjdGlv
biBuZWdhdGl2ZURpcmVjdGlvbiwgYm9vbCBwYWdlU2Nyb2xsRW5hYmxlZCwgUGxhdGZvcm1XaGVl
bEV2ZW50JiBlLCBOb2RlKiBub2RlLCBmbG9hdCB3aW5kb3dIZWlnaHRPcldpZHRoKQoreworICAg
IGludCBwaXhlbHNUb1Njcm9sbCA9IGFicyhkZWx0YSk7CisgICAgaWYgKCFlLmlzQ29udGludW91
cygpICYmICFwYWdlU2Nyb2xsRW5hYmxlZCkgeworICAgICAgICBpZiAobm9kZS0+cmVuZGVyZXIo
KS0+c2Nyb2xsKGRlbHRhIDwgMCA/IG5lZ2F0aXZlRGlyZWN0aW9uIDogcG9zaXRpdmVEaXJlY3Rp
b24sIFNjcm9sbEJ5TGluZSwgcGl4ZWxzVG9TY3JvbGwpKQorICAgICAgICAgICAgZS5hY2NlcHQo
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAocGFnZVNjcm9sbEVuYWJsZWQpCisgICAgICAg
ICAgICBwaXhlbHNUb1Njcm9sbCA9IHdpbmRvd0hlaWdodE9yV2lkdGg7IAorICAgICAgICBpZiAo
bm9kZS0+cmVuZGVyZXIoKS0+c2Nyb2xsKGRlbHRhIDwgMCA/IG5lZ2F0aXZlRGlyZWN0aW9uIDog
cG9zaXRpdmVEaXJlY3Rpb24sIFNjcm9sbEJ5UGl4ZWwsIHBpeGVsc1RvU2Nyb2xsKSkKKyAgICAg
ICAgICAgIGUuYWNjZXB0KCk7CisgICAgfQorfQorCiBFdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxl
cihGcmFtZSogZnJhbWUpCiAgICAgOiBtX2ZyYW1lKGZyYW1lKQogICAgICwgbV9tb3VzZVByZXNz
ZWQoZmFsc2UpCkBAIC0xMzU5LDEyICsxMzc0LDEyIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5k
bGVXaGVlbEV2ZW50KFBsYXQKICAgICAgICAgICAgIC8vIGEgTWFjQm9vayBwcm8gaXMgYW4gZXhh
bXBsZSBvZiBhIDItZGltZW5zaW9uYWwgbW91c2Ugd2hlZWwgZXZlbnQgKHdoZXJlIGJvdGggZGVs
dGFYIGFuZCBkZWx0YVkgY2FuIGJlIHNldCkuCiAgICAgICAgICAgICBmbG9hdCBkZWx0YVggPSBl
LmlzQ29udGludW91cygpID8gZS5jb250aW51b3VzRGVsdGFYKCkgOiBlLmRlbHRhWCgpOwogICAg
ICAgICAgICAgZmxvYXQgZGVsdGFZID0gZS5pc0NvbnRpbnVvdXMoKSA/IGUuY29udGludW91c0Rl
bHRhWSgpIDogZS5kZWx0YVkoKTsKLSAgICAgICAgICAgIGlmIChkZWx0YVggJiYgbm9kZS0+cmVu
ZGVyZXIoKS0+c2Nyb2xsKGRlbHRhWCA8IDAgPyBTY3JvbGxSaWdodCA6IFNjcm9sbExlZnQsIGUu
aXNDb250aW51b3VzKCkgPyBTY3JvbGxCeVBpeGVsIDogU2Nyb2xsQnlMaW5lLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbHRhWCA8IDAg
PyAtZGVsdGFYIDogZGVsdGFYKSkKLSAgICAgICAgICAgICAgICBlLmFjY2VwdCgpOwotICAgICAg
ICAgICAgaWYgKGRlbHRhWSAmJiBub2RlLT5yZW5kZXJlcigpLT5zY3JvbGwoZGVsdGFZIDwgMCA/
IFNjcm9sbERvd24gOiBTY3JvbGxVcCwgZS5pc0NvbnRpbnVvdXMoKSA/IFNjcm9sbEJ5UGl4ZWwg
OiBTY3JvbGxCeUxpbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGVsdGFZIDwgMCA/IC1kZWx0YVkgOiBkZWx0YVkpKQotICAgICAgICAg
ICAgICAgIGUuYWNjZXB0KCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChkZWx0YVgp
CisgICAgICAgICAgICAgICAgc2Nyb2xsQW5kQWNjZXB0RXZlbnQoZGVsdGFYLCBTY3JvbGxSaWdo
dCwgU2Nyb2xsTGVmdCwgZS5pc1BhZ2VYU2Nyb2xsTW9kZUVuYWJsZWQoKSwgZSwgbm9kZSwgbV9m
cmFtZS0+cGFnZSgpLT5jaHJvbWUoKS0+d2luZG93UmVjdCgpLndpZHRoKCkpOworCisgICAgICAg
ICAgICBpZiAoZGVsdGFZKQorICAgICAgICAgICAgICAgIHNjcm9sbEFuZEFjY2VwdEV2ZW50KGRl
bHRhWSwgU2Nyb2xsVXAsIFNjcm9sbERvd24sIGUuaXNQYWdlWVNjcm9sbE1vZGVFbmFibGVkKCks
IGUsIG5vZGUsIG1fZnJhbWUtPnBhZ2UoKS0+Y2hyb21lKCktPndpbmRvd1JlY3QoKS5oZWlnaHQo
KSk7CiAgICAgICAgIH0KICAgICB9CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1X
aGVlbEV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVs
RXZlbnQuaCAgIChyZXZpc2lvbiAzNDY5NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1X
aGVlbEV2ZW50LmggICAod29ya2luZyBjb3B5KQpAQCAtNjQsOSArNjQsMTEgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBjb25zdCBJbnRQb2ludCYgcG9zKCkgY29uc3QgeyByZXR1cm4g
bV9wb3NpdGlvbjsgfQogICAgICAgICBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zKCkgY29uc3Qg
eyByZXR1cm4gbV9nbG9iYWxQb3NpdGlvbjsgfQogCi0gICAgICAgIGZsb2F0IGRlbHRhWCgpIGNv
bnN0IHsgcmV0dXJuIG1fZGVsdGFYOyB9Ci0gICAgICAgIGZsb2F0IGRlbHRhWSgpIGNvbnN0IHsg
cmV0dXJuIG1fZGVsdGFZOyB9CisgICAgICAgIGZsb2F0IGRlbHRhWChib29sIHdpdGhTY3JvbGxT
ZW5zaWJpbGl0eUZhY3RvciA9IHRydWUpIGNvbnN0IHsgcmV0dXJuICh3aXRoU2Nyb2xsU2Vuc2li
aWxpdHlGYWN0b3IgPyBtX2RlbHRhWCAqIG1fY2hhcnNUb1Njcm9sbFBlckRlbHRhIDogbV9kZWx0
YVgpOyB9CisgICAgICAgIGZsb2F0IGRlbHRhWShib29sIHdpdGhTY3JvbGxTZW5zaWJpbGl0eUZh
Y3RvciA9IHRydWUpIGNvbnN0IHsgcmV0dXJuICh3aXRoU2Nyb2xsU2Vuc2liaWxpdHlGYWN0b3Ig
PyBtX2RlbHRhWSAqIG1fbGluZXNUb1Njcm9sbFBlckRlbHRhIDogbV9kZWx0YVkpOyB9CiAKKyAg
ICAgICAgYm9vbCBpc1BhZ2VYU2Nyb2xsTW9kZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3Bh
Z2VYU2Nyb2xsTW9kZTsgfQorICAgICAgICBib29sIGlzUGFnZVlTY3JvbGxNb2RlRW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFnZVlTY3JvbGxNb2RlOyB9CiAgICAgICAgIGJvb2wgaXNBY2Nl
cHRlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNBY2NlcHRlZDsgfQogICAgICAgICBib29sIHNoaWZ0
S2V5KCkgY29uc3QgeyByZXR1cm4gbV9zaGlmdEtleTsgfQogICAgICAgICBib29sIGN0cmxLZXko
KSBjb25zdCB7IHJldHVybiBtX2N0cmxLZXk7IH0KQEAgLTEwNiw2ICsxMDgsMTAgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBJbnRQb2ludCBtX2dsb2JhbFBvc2l0aW9uOwogICAgICAg
ICBmbG9hdCBtX2RlbHRhWDsKICAgICAgICAgZmxvYXQgbV9kZWx0YVk7CisgICAgICAgIGludCBt
X2NoYXJzVG9TY3JvbGxQZXJEZWx0YTsKKyAgICAgICAgaW50IG1fbGluZXNUb1Njcm9sbFBlckRl
bHRhOworICAgICAgICBib29sIG1fcGFnZVhTY3JvbGxNb2RlOworICAgICAgICBib29sIG1fcGFn
ZVlTY3JvbGxNb2RlOwogICAgICAgICBib29sIG1faXNBY2NlcHRlZDsKICAgICAgICAgYm9vbCBt
X3NoaWZ0S2V5OwogICAgICAgICBib29sIG1fY3RybEtleTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vZ3RrL1doZWVsRXZlbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
Z3RrL1doZWVsRXZlbnRHdGsuY3BwICAocmV2aXNpb24gMzQ2OTUpCisrKyBXZWJDb3JlL3BsYXRm
b3JtL2d0ay9XaGVlbEV2ZW50R3RrLmNwcCAgKHdvcmtpbmcgY29weSkKQEAgLTcwLDYgKzcwLDEy
IEBAIFBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KEcKICAgICBtX21ldGFL
ZXkgPSBmYWxzZTsKICNlbmRpZgogICAgIG1faXNDb250aW51b3VzID0gZmFsc2U7CisKKyAgICAv
LyBGSVhNRTogcmV0cmlldmUgdGhlIHVzZXIgc2V0dGluZyBmb3IgdGhlIG51bWJlciBvZiBsaW5l
cyB0byBzY3JvbGwgb24gZWFjaCB3aGVlbCBldmVudAorICAgIG1fY2hhcnNUb1Njcm9sbFBlckRl
bHRhID0gMTsKKyAgICBtX2xpbmVzVG9TY3JvbGxQZXJEZWx0YSA9IDE7CisgICAgbV9wYWdlWFNj
cm9sbE1vZGUgPSBmYWxzZTsKKyAgICBtX3BhZ2VZU2Nyb2xsTW9kZSA9IGZhbHNlOwogfQogCiB9
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21hYy9XaGVlbEV2ZW50TWFjLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vbWFjL1doZWVsRXZlbnRNYWMubW0gICAocmV2aXNpb24gMzQ2
OTUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL21hYy9XaGVlbEV2ZW50TWFjLm1tICAgKHdvcmtpbmcg
Y29weSkKQEAgLTM2LDYgKzM2LDEwIEBAIFBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVl
bEV2ZW50KE4KICAgICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9pbnRGb3JFdmVudChldmVu
dCkpCiAgICAgLCBtX2RlbHRhWChbZXZlbnQgZGVsdGFYXSkKICAgICAsIG1fZGVsdGFZKFtldmVu
dCBkZWx0YVldKQorICAgICwgbV9jaGFyc1RvU2Nyb2xsUGVyRGVsdGEoMSkKKyAgICAsIG1fbGlu
ZXNUb1Njcm9sbFBlckRlbHRhKDEpCisgICAsIG1fcGFnZVhTY3JvbGxNb2RlKGZhbHNlKQorICAg
LCBtX3BhZ2VZU2Nyb2xsTW9kZShmYWxzZSkKICAgICAsIG1faXNBY2NlcHRlZChmYWxzZSkKICAg
ICAsIG1fc2hpZnRLZXkoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNTaGlmdEtleU1hc2spCiAg
ICAgLCBtX2N0cmxLZXkoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNDb250cm9sS2V5TWFzaykK
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vcXQvV2hlZWxFdmVudFF0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL3F0L1doZWVsRXZlbnRRdC5jcHAgICAgKHJldmlzaW9uIDM0Njk1
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9xdC9XaGVlbEV2ZW50UXQuY3BwICAgICh3b3JraW5nIGNv
cHkpCkBAIC00Myw2ICs0MywxMiBAQCBQbGF0Zm9ybVdoZWVsRXZlbnQ6OlBsYXRmb3JtV2hlZWxF
dmVudChRCiAgICAgICAgIG1fZGVsdGFYID0gMDsKICAgICAgICAgbV9kZWx0YVkgPSAoZS0+ZGVs
dGEoKSAvIDEyMCk7CiAgICAgfQorCisgICAgLy8gRklYTUU6IHJldHJpZXZlIHRoZSB1c2VyIHNl
dHRpbmcgZm9yIHRoZSBudW1iZXIgb2YgbGluZXMgdG8gc2Nyb2xsIG9uIGVhY2ggd2hlZWwgZXZl
bnQKKyAgICBtX2NoYXJzVG9TY3JvbGxQZXJEZWx0YSA9IDE7CisgICAgbV9saW5lc1RvU2Nyb2xs
UGVyRGVsdGEgPSAxOworICAgIG1fcGFnZVhTY3JvbGxNb2RlID0gZmFsc2U7CisgICAgbV9wYWdl
WVNjcm9sbE1vZGUgPSBmYWxzZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsVmlld1dpbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsVmlld1dpbi5jcHAgIChyZXZpc2lvbiAzNDY5NSkKKysr
IFdlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbFZpZXdXaW4uY3BwICAod29ya2luZyBjb3B5KQpA
QCAtNTEsNiArNTEsMTQgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCisjZGVmaW5lIExJTkVfU1RFUF9XSU4gMTUgLy8gVG8ga2VlcCB0aGUgYmVoYXZpb3Ig
d2UgaGFkIGJlZm9yZSBhZGRpbmcgdGhlIHNjcm9sbCB3aGVlbCBzZW5zaXRpdml0eSA6IDxyZGFy
Oi8vcHJvYmxlbS81NzcwODkzPgorCitzdGF0aWMgaW5saW5lIHZvaWQgYWRqdXN0RGVsdGFGb3JQ
YWdlU2Nyb2xsTW9kZShmbG9hdCYgZGVsdGEsIGJvb2wgcGFnZVNjcm9sbEVuYWJsZWQsIGludCB2
aXNpYmxlV2lkdGhPckhlaWdodCkKK3sKKyAgICBpZiAocGFnZVNjcm9sbEVuYWJsZWQpCisgICAg
ICAgICAgICBkZWx0YSA9IChkZWx0YSA+IDAgPyB2aXNpYmxlV2lkdGhPckhlaWdodCA6IC12aXNp
YmxlV2lkdGhPckhlaWdodCkgLyBMSU5FX1NURVBfV0lOOworfQorCiBjbGFzcyBTY3JvbGxWaWV3
OjpTY3JvbGxWaWV3UHJpdmF0ZSA6IHB1YmxpYyBTY3JvbGxiYXJDbGllbnQgewogcHVibGljOgog
ICAgIFNjcm9sbFZpZXdQcml2YXRlKFNjcm9sbFZpZXcqIHZpZXcpCkBAIC01MzEsNyArNTM5LDcg
QEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxiYXJzKGNvbnN0IAogCiAgICAgICAgIGlm
IChtX2RhdGEtPm1fc2Nyb2xsYmFyc1N1cHByZXNzZWQpCiAgICAgICAgICAgICBtX2RhdGEtPm1f
aEJhci0+c2V0U3VwcHJlc3NJbnZhbGlkYXRpb24odHJ1ZSk7Ci0gICAgICAgIG1fZGF0YS0+bV9o
QmFyLT5zZXRTdGVwcyhMSU5FX1NURVAsIHBhZ2VTdGVwKTsKKyAgICAgICAgbV9kYXRhLT5tX2hC
YXItPnNldFN0ZXBzKExJTkVfU1RFUF9XSU4sIHBhZ2VTdGVwKTsKICAgICAgICAgbV9kYXRhLT5t
X2hCYXItPnNldFByb3BvcnRpb24oY2xpZW50V2lkdGgsIGNvbnRlbnRzV2lkdGgoKSk7CiAgICAg
ICAgIG1fZGF0YS0+bV9oQmFyLT5zZXRWYWx1ZShzY3JvbGwud2lkdGgoKSk7CiAgICAgICAgIGlm
IChtX2RhdGEtPm1fc2Nyb2xsYmFyc1N1cHByZXNzZWQpCkBAIC01NTQsNyArNTYyLDcgQEAgdm9p
ZCBTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxiYXJzKGNvbnN0IAogCiAgICAgICAgIGlmIChtX2Rh
dGEtPm1fc2Nyb2xsYmFyc1N1cHByZXNzZWQpCiAgICAgICAgICAgICBtX2RhdGEtPm1fdkJhci0+
c2V0U3VwcHJlc3NJbnZhbGlkYXRpb24odHJ1ZSk7Ci0gICAgICAgIG1fZGF0YS0+bV92QmFyLT5z
ZXRTdGVwcyhMSU5FX1NURVAsIHBhZ2VTdGVwKTsKKyAgICAgICAgbV9kYXRhLT5tX3ZCYXItPnNl
dFN0ZXBzKExJTkVfU1RFUF9XSU4sIHBhZ2VTdGVwKTsKICAgICAgICAgbV9kYXRhLT5tX3ZCYXIt
PnNldFByb3BvcnRpb24oY2xpZW50SGVpZ2h0LCBjb250ZW50c0hlaWdodCgpKTsKICAgICAgICAg
bV9kYXRhLT5tX3ZCYXItPnNldFZhbHVlKHNjcm9sbC5oZWlnaHQoKSk7CiAgICAgICAgIGlmICht
X2RhdGEtPm1fc2Nyb2xsYmFyc1N1cHByZXNzZWQpCkBAIC02ODEsNyArNjg5LDExIEBAIHZvaWQg
U2Nyb2xsVmlldzo6d2hlZWxFdmVudChQbGF0Zm9ybVdoZWUKICAgICAgICAgKGUuZGVsdGFZKCkg
PCAwICYmIG1heFNjcm9sbERlbHRhLmhlaWdodCgpID4gMCkgfHwKICAgICAgICAgKGUuZGVsdGFZ
KCkgPiAwICYmIHNjcm9sbE9mZnNldCgpLmhlaWdodCgpID4gMCkpIHsKICAgICAgICAgZS5hY2Nl
cHQoKTsKLSAgICAgICAgc2Nyb2xsQnkoLWUuZGVsdGFYKCkgKiBMSU5FX1NURVAsIC1lLmRlbHRh
WSgpICogTElORV9TVEVQKTsKKyAgICAgICAgZmxvYXQgZGVsdGFYID0gZS5kZWx0YVgoKSwgZGVs
dGFZID0gZS5kZWx0YVkoKTsKKyAgICAgICAgYWRqdXN0RGVsdGFGb3JQYWdlU2Nyb2xsTW9kZShk
ZWx0YVgsIGUuaXNQYWdlWFNjcm9sbE1vZGVFbmFibGVkKCksIHZpc2libGVXaWR0aCgpKTsKKyAg
ICAgICAgYWRqdXN0RGVsdGFGb3JQYWdlU2Nyb2xsTW9kZShkZWx0YVksIGUuaXNQYWdlWVNjcm9s
bE1vZGVFbmFibGVkKCksIHZpc2libGVIZWlnaHQoKSk7CisKKyAgICAgICAgc2Nyb2xsQnkoLWRl
bHRhWCAqIExJTkVfU1RFUF9XSU4sIC1kZWx0YVkgKiBMSU5FX1NURVBfV0lOKTsKICAgICB9CiB9
CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vd2luL1doZWVsRXZlbnRXaW4uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vd2luL1doZWVsRXZlbnRXaW4uY3BwICAocmV2aXNpb24g
MzQ2OTUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL3dpbi9XaGVlbEV2ZW50V2luLmNwcCAgKHdvcmtp
bmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2RlZmlu
ZSBISUdIX0JJVF9NQVNLX1NIT1JUIDB4ODAwMAorI2RlZmluZSBTUElfR0VUV0hFRUxTQ1JPTExD
SEFSUyAweDAwNkMKIAogc3RhdGljIEludFBvaW50IHBvc2l0aW9uRm9yRXZlbnQoSFdORCBoV25k
LCBMUEFSQU0gbFBhcmFtKQogewpAQCAtNDgsNiArNDksOCBAQCBzdGF0aWMgSW50UG9pbnQgZ2xv
YmFsUG9zaXRpb25Gb3JFdmVudChICiBQbGF0Zm9ybVdoZWVsRXZlbnQ6OlBsYXRmb3JtV2hlZWxF
dmVudChIV05EIGhXbmQsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0sIGJvb2wgaXNIb3Jp
em9udGFsKQogICAgIDogbV9wb3NpdGlvbihwb3NpdGlvbkZvckV2ZW50KGhXbmQsIGxQYXJhbSkp
CiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9uRm9yRXZlbnQoaFduZCwgbFBh
cmFtKSkKKyAgICAsIG1fcGFnZVhTY3JvbGxNb2RlKGZhbHNlKQorICAgICwgbV9wYWdlWVNjcm9s
bE1vZGUoZmFsc2UpCiAgICAgLCBtX2lzQWNjZXB0ZWQoZmFsc2UpCiAgICAgLCBtX3NoaWZ0S2V5
KHdQYXJhbSAmIE1LX1NISUZUKQogICAgICwgbV9jdHJsS2V5KHdQYXJhbSAmIE1LX0NPTlRST0wp
CkBAIC01NSw2ICs1OCw3IEBAIFBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50
KEgKICAgICAsIG1fbWV0YUtleShtX2FsdEtleSkgLy8gRklYTUU6IFdlJ2xsIGhhdmUgdG8gdGVz
dCBvdGhlciBicm93c2VycwogICAgICwgbV9pc0NvbnRpbnVvdXMoZmFsc2UpCiB7CisgICAgc3Rh
dGljIFVMT05HIHNjcm9sbExpbmVzLCBzY3JvbGxDaGFyczsKICAgICBmbG9hdCBkZWx0YSA9IEdF
VF9XSEVFTF9ERUxUQV9XUEFSQU0od1BhcmFtKSAvIChmbG9hdClXSEVFTF9ERUxUQTsKICAgICBp
ZiAoaXNIb3Jpem9udGFsKSB7CiAgICAgICAgIC8vIFdpbmRvd3Mgc2VuZHMgYSBwb3NpdGl2ZSBk
ZWx0YSBmb3Igc2Nyb2xsaW5nIHJpZ2h0LCB3aGlsZSBBcHBLaXQKQEAgLTYyLDEwICs2NiwzNSBA
QCBQbGF0Zm9ybVdoZWVsRXZlbnQ6OlBsYXRmb3JtV2hlZWxFdmVudChICiAgICAgICAgIC8vIHNv
IHdlIGhhdmUgdG8gbmVnYXRlIG91ciBob3Jpem9udGFsIGRlbHRhIHRvIG1hdGNoLgogICAgICAg
ICBtX2RlbHRhWCA9IC1kZWx0YTsKICAgICAgICAgbV9kZWx0YVkgPSAwOworCisgICAgICAgIGlm
ICghU3lzdGVtUGFyYW1ldGVyc0luZm8oU1BJX0dFVFdIRUVMU0NST0xMQ0hBUlMsIDAsICZzY3Jv
bGxDaGFycywgMCkpCisgICAgICAgICAgICBzY3JvbGxDaGFycyA9IDE7CisKKyAgICAgICAgLy8g
SWYgd2UgYXJlIGluIGEgcGFnZSBzY3JvbGwgbW9kZSBmb3IgdGhlIGNoYXJzIHdlIHNldCB0aGUg
Ym9vbGVhbgorICAgICAgICBpZiAoc2Nyb2xsQ2hhcnMgPiBXSEVFTF9ERUxUQSkgeworICAgICAg
ICAgICAgbV9wYWdlWFNjcm9sbE1vZGUgPSB0cnVlOworICAgICAgICAgICAgc2Nyb2xsQ2hhcnMg
PSAxOworICAgICAgICB9CisKKyAgICAgICAgbV9jaGFyc1RvU2Nyb2xsUGVyRGVsdGEgPSAgc3Rh
dGljX2Nhc3Q8aW50PihzY3JvbGxDaGFycyk7CisgICAgICAgIG1fbGluZXNUb1Njcm9sbFBlckRl
bHRhID0gMTsKICAgICB9IGVsc2UgewogICAgICAgICBtX2RlbHRhWCA9IDA7CiAgICAgICAgIG1f
ZGVsdGFZID0gZGVsdGE7CisKKyAgICAgICAgaWYgKCFTeXN0ZW1QYXJhbWV0ZXJzSW5mbyhTUElf
R0VUV0hFRUxTQ1JPTExMSU5FUywgMCwgJnNjcm9sbExpbmVzLCAwKSkKKyAgICAgICAgICAgIHNj
cm9sbExpbmVzID0gMzsgLy8gMyBpcyB0aGUgZGVmYXVsdCB3aW5kb3dzIHZhbHVlIGZvciB0aGUg
bnVtYmVyIG9mIGxpbmVzIHRvIHNjcm9sbCBmb3IgZWFjaCB3aGVlbCBldmVudAorCisgICAgICAg
IC8vIElmIHdlIGFyZSBpbiBhIHBhZ2Ugc2Nyb2xsIG1vZGUgZm9yIHRoZSBsaW5lcyB3ZSBzZXQg
dGhlIGJvb2xlYW4KKyAgICAgICAgaWYgKHNjcm9sbExpbmVzID4gV0hFRUxfREVMVEEpIHsKKyAg
ICAgICAgICAgIG1fcGFnZVlTY3JvbGxNb2RlID0gdHJ1ZTsKKyAgICAgICAgICAgIHNjcm9sbExp
bmVzID0gMTsKKyAgICAgICAgfQorCisgICAgICAgIG1fbGluZXNUb1Njcm9sbFBlckRlbHRhID0g
c3RhdGljX2Nhc3Q8aW50PihzY3JvbGxMaW5lcyk7CisgICAgICAgIG1fY2hhcnNUb1Njcm9sbFBl
ckRlbHRhID0gMTsKICAgICB9CisgICAgCiB9CiAKIH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
d3gvTW91c2VXaGVlbEV2ZW50V3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
d3gvTW91c2VXaGVlbEV2ZW50V3guY3BwICAgKHJldmlzaW9uIDM0Njk1KQorKysgV2ViQ29yZS9w
bGF0Zm9ybS93eC9Nb3VzZVdoZWVsRXZlbnRXeC5jcHAgICAod29ya2luZyBjb3B5KQpAQCAtNDUs
NyArNDUsMTEgQEAgUGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQoYwogICAg
ICwgbV9jb250aW51b3VzRGVsdGFYKDApCiAgICAgLCBtX2NvbnRpbnVvdXNEZWx0YVkoMCkKIHsK
LQorICAgIC8vIEZJWE1FOiByZXRyaWV2ZSB0aGUgdXNlciBzZXR0aW5nIGZvciB0aGUgbnVtYmVy
IG9mIGxpbmVzIHRvIHNjcm9sbCBvbiBlYWNoIHdoZWVsIGV2ZW50CisgICAgbV9jaGFyc1RvU2Ny
b2xsUGVyRGVsdGEgPSAxOworICAgIG1fbGluZXNUb1Njcm9sbFBlckRlbHRhID0gMTsKKyAgICBt
X3BhZ2VYU2Nyb2xsTW9kZSA9IGZhbHNlOworICAgIG1fcGFnZVlTY3JvbGxNb2RlID0gZmFsc2U7
CiB9CiAKIH0K
</data>
<flag name="review"
          id="9803"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>