<?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>48385</bug_id>
          
          <creation_ts>2010-10-26 15:45:56 -0700</creation_ts>
          <short_desc>Add WebKit SPI to scale a WebView</short_desc>
          <delta_ts>2010-10-27 14:49:10 -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>WebKit API</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Beth Dakin">bdakin</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bdakin</cc>
    
    <cc>eric</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-ews</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>299858</commentid>
    <comment_count>0</comment_count>
      <attachid>71952</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2010-10-26 15:45:56 -0700</bug_when>
    <thetext>Created attachment 71952
Patch

Add WebKit SPI to scale a WebView.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299894</commentid>
    <comment_count>1</comment_count>
      <attachid>71952</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-10-26 16:54:23 -0700</bug_when>
    <thetext>Comment on attachment 71952
Patch

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

r- because I think this isn&apos;t quite right yet.

&gt; WebCore/ChangeLog:5
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        This patch adds SPI to Mac WebKit that scales the page by the given 

You should file a bugzilla or put a radar number here.

&gt; WebCore/page/Frame.cpp:988
&gt; +    root-&gt;setStyle(newStyle.release());

It worries me that this style might get clobbered by something else. I thought that styleWillChange() was the right place to &quot;fix up&quot; the style, but that doesn&apos;t seem to be the case.

&gt; WebCore/page/Frame.cpp:992
&gt; +    m_pageScaleFactor = scale;
&gt; +    m_pageScaleOrigin = origin;
&gt; +

I don&apos;t see m_pageScaleOrigin being used anywhere.

&gt; WebKit/mac/WebView/WebViewData.h:84
&gt; +    float viewScaleFactor;
&gt; +

Do you really need to store the scale in two places (here and Frame)?

&gt; WebKitTools/DumpRenderTree/mac/DumpRenderTreeDraggingInfo.mm:108
&gt; -#if !defined(BUILDING_ON_TIGER) &amp;&amp; !defined(BUILDING_ON_LEOPARD) &amp;&amp; !defined(BUILDING_ON_SNOW_LEOPARD)
&gt; +#if 0

I don&apos;t think you want to commit this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299897</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-10-26 17:02:11 -0700</bug_when>
    <thetext>&gt; &gt; WebCore/ChangeLog:5
&gt; &gt; +        Reviewed by NOBODY (OOPS!).
&gt; &gt; +
&gt; &gt; +        This patch adds SPI to Mac WebKit that scales the page by the given 
&gt; 
&gt; You should file a bugzilla or put a radar number here.

Er, mention this bug! :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299941</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-26 19:46:17 -0700</bug_when>
    <thetext>Attachment 71952 did not build on mac:
Build output: http://queues.webkit.org/results/4748030</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300280</commentid>
    <comment_count>4</comment_count>
      <attachid>72044</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2010-10-27 09:29:09 -0700</bug_when>
    <thetext>Created attachment 72044
New patch

Here is a new patch that addresses all of Simon&apos;s concerns and takes a stab at the WebKit2 SPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300283</commentid>
    <comment_count>5</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-10-27 09:41:43 -0700</bug_when>
    <thetext>Attachment 72044 did not build on qt:
Build output: http://queues.webkit.org/results/4846040</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300405</commentid>
    <comment_count>6</comment_count>
      <attachid>72044</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-10-27 11:44:15 -0700</bug_when>
    <thetext>Comment on attachment 72044
New patch

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

&gt; WebCore/page/Frame.cpp:163
&gt; +    , m_pageScaleFactor(1)

I’m disappointed to see more being added to Frame. I’ve been trying to cut down on operations in Frame, and would normally look for a different home for such a thing. On the other hand, I was unsuccessful at moving the page and text zoom factor out.

If this does have to be on the central “god object” maybe it makes more sense to put it on Page than on Frame.

&gt; WebCore/page/Frame.cpp:967
&gt; +    if (m_pageScaleFactor == scale)
&gt; +        return;

Will this do the right thing in the case where the scale factor is the same, but the origin is different?

&gt; WebCore/page/Frame.cpp:979
&gt; +    // Update the scroll position to the origin of the scale.
&gt; +    if (FrameView* view = this-&gt;view())
&gt; +        view-&gt;setScrollPosition(IntPoint(origin.x(), origin.y()));

I really don’t understand why this is the right thing to do and why we need a single function call that does both of these things? Can’t we set the scroll position another way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300533</commentid>
    <comment_count>7</comment_count>
      <attachid>72083</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2010-10-27 13:57:25 -0700</bug_when>
    <thetext>Created attachment 72083
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300535</commentid>
    <comment_count>8</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2010-10-27 14:00:14 -0700</bug_when>
    <thetext>Thanks for the review, Darin! I thought I would post a new patch with some of the tweaks I made.

(In reply to comment #6)
&gt; (From update of attachment 72044 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=72044&amp;action=review
&gt; 
&gt; &gt; WebCore/page/Frame.cpp:163
&gt; &gt; +    , m_pageScaleFactor(1)
&gt; 
&gt; I’m disappointed to see more being added to Frame. I’ve been trying to cut down on operations in Frame, and would normally look for a different home for such a thing. On the other hand, I was unsuccessful at moving the page and text zoom factor out.
&gt; 
&gt; If this does have to be on the central “god object” maybe it makes more sense to put it on Page than on Frame.

This is the one change I did not make. I kept the scale factor on the Frame because zoom is there too. But I don&apos;t think there would be a problem moving it to Page, and you could convince me to do that.

&gt; 
&gt; &gt; WebCore/page/Frame.cpp:967
&gt; &gt; +    if (m_pageScaleFactor == scale)
&gt; &gt; +        return;
&gt; 
&gt; Will this do the right thing in the case where the scale factor is the same, but the origin is different?
&gt; 
&gt; &gt; WebCore/page/Frame.cpp:979
&gt; &gt; +    // Update the scroll position to the origin of the scale.
&gt; &gt; +    if (FrameView* view = this-&gt;view())
&gt; &gt; +        view-&gt;setScrollPosition(IntPoint(origin.x(), origin.y()));
&gt; 
&gt; I really don’t understand why this is the right thing to do and why we need a single function call that does both of these things? Can’t we set the scroll position another way.

I decided to get rid of the whole origin concept for the time being. We might want to add it back in later, but for now, I think we should make it the caller&apos;s problem after all. We can add new SPI or tweak this SPI to handle to origin if we decide it doesn&apos;t make sense for the caller.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300560</commentid>
    <comment_count>9</comment_count>
      <attachid>72083</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-10-27 14:10:38 -0700</bug_when>
    <thetext>Comment on attachment 72083
Patch

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

I noticed that the Qt EWS had a failure; you should check into that.

&gt; WebCore/page/Frame.cpp:977
&gt; +    Document* document = this-&gt;document();
&gt; +    if (!document)
&gt; +        return;
&gt; +
&gt; +    m_pageScaleFactor = scale;

We should probably set m_pageScaleFactor even before checking the document for 0.

&gt; WebCore/page/Frame.cpp:987
&gt; +    document-&gt;recalcStyle(Node::Force);
&gt; +
&gt; +    if (FrameView* view = this-&gt;view()) {
&gt; +        if (document-&gt;renderer() &amp;&amp; document-&gt;renderer()-&gt;needsLayout() &amp;&amp; view-&gt;didFirstLayout())
&gt; +            view-&gt;layout();
&gt; +    }

Why do we need to do all this synchronously? Can’t we use the normal machinery to do the style and layout instead of forcing it immediately? This is probably OK for now, but I think we can tighten it up later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300600</commentid>
    <comment_count>10</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2010-10-27 14:49:10 -0700</bug_when>
    <thetext>Thanks Darin! Fixed with r70716.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71952</attachid>
            <date>2010-10-26 15:45:56 -0700</date>
            <delta_ts>2010-10-27 09:29:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review.txt</filename>
            <type>text/plain</type>
            <size>7563</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MDU4MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTAtMTAtMjYgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggYWRkcyBTUEkgdG8gTWFjIFdlYktpdCB0aGF0IHNjYWxlcyB0aGUgcGFnZSBieSB0aGUg
Z2l2ZW4gCisgICAgICAgIHNjYWxlIGZhY3Rvci4gVGhlIHNjYWxlIGZhY3RvciBpcyBiYWtlZCBp
bnRvIHRoZSB0cmFuc2Zvcm1hdGlvbiAKKyAgICAgICAgbWF0cml4IG9mIHRoZSByb290IGxheWVy
LgorCisgICAgICAgIEZyYW1lIGtlZXBzIHRyYWNrIG9mIHRoZSBwYWdlIHNjYWxlIGZhY3RvciBh
bmQgb3JpZ2luLiBXaGVuIAorICAgICAgICBzY2FsZVBhZ2UoKSBpcyBjYWxsZWQsIG1vZGlmaWVz
IHRoZSBSZW5kZXJWaWV3J3Mgc3R5bGUgdG8gaW5jbHVkZSBhIAorICAgICAgICB0cmFuc2Zvcm0g
b2YgdGhlIGFwcHJvcHJpYXRlIHNjYWxlLgorICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAg
ICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OkZyYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpzY2FsZVBhZ2UpOgorICAgICAgICAqIHBhZ2UvRnJh
bWUuaDoKKwogMjAxMC0xMC0yNiAgRGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI3MDU3My4KSW5kZXg6IFdl
YkNvcmUvcGFnZS9GcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1lLmNw
cAkocmV2aXNpb24gNzA0NzIpCisrKyBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03MCw2ICs3MCw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRyb2wuaCIKICNp
bmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKKyNpbmNsdWRl
ICJTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIu
aCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIK
QEAgLTE1OSw2ICsxNjAsNyBAQCBpbmxpbmUgRnJhbWU6OkZyYW1lKFBhZ2UqIHBhZ2UsIEhUTUxG
cmFtCiAgICAgLCBtX2xpZmVTdXBwb3J0VGltZXIodGhpcywgJkZyYW1lOjpsaWZlU3VwcG9ydFRp
bWVyRmlyZWQpCiAgICAgLCBtX3BhZ2Vab29tRmFjdG9yKHBhcmVudFBhZ2Vab29tRmFjdG9yKHRo
aXMpKQogICAgICwgbV90ZXh0Wm9vbUZhY3RvcihwYXJlbnRUZXh0Wm9vbUZhY3Rvcih0aGlzKSkK
KyAgICAsIG1fcGFnZVNjYWxlRmFjdG9yKDEpCiAjaWYgRU5BQkxFKE9SSUVOVEFUSU9OX0VWRU5U
UykKICAgICAsIG1fb3JpZW50YXRpb24oMCkKICNlbmRpZgpAQCAtOTU5LDQgKzk2MSwzOSBAQCB2
b2lkIEZyYW1lOjpzZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKGZsCiAgICAgfQogfQogCit2b2lk
IEZyYW1lOjpzY2FsZVBhZ2UoZmxvYXQgc2NhbGUsIGNvbnN0IEludFBvaW50JiBvcmlnaW4pCit7
CisgICAgaWYgKG1fcGFnZVNjYWxlRmFjdG9yID09IHNjYWxlKQorICAgICAgICByZXR1cm47CisK
KyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOworICAgIGlmICghZG9j
dW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIFJlbmRlclZpZXcqIHJvb3QgPSBjb250ZW50
UmVuZGVyZXIoKTsKKyAgICBpZiAoIXJvb3QpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFVw
ZGF0ZSB0aGUgc2Nyb2xsIHBvc2l0aW9uIHRvIHRoZSBvcmlnaW4gb2YgdGhlIHNjYWxlLgorICAg
IGlmIChGcmFtZVZpZXcqIHZpZXcgPSB0aGlzLT52aWV3KCkpCisgICAgICAgIHZpZXctPnNldFNj
cm9sbFBvc2l0aW9uKEludFBvaW50KG9yaWdpbi54KCksIG9yaWdpbi55KCkpKTsKKworICAgIC8v
IFNjYWxlIHRoZSBSZW5kZXJWaWV3IGJ5IGFkZGluZyBhIHNjYWxlIHRyYW5mb3JtYXRpb24gdG8g
aXRzIHN0eWxlCisgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBuZXdTdHlsZSA9IFJlbmRlclN0eWxl
OjpjbG9uZShyb290LT5zdHlsZSgpKTsKKyAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIHRyYW5zZm9y
bTsKKyAgICB0cmFuc2Zvcm0ub3BlcmF0aW9ucygpLmFwcGVuZChTY2FsZVRyYW5zZm9ybU9wZXJh
dGlvbjo6Y3JlYXRlKHNjYWxlLCBzY2FsZSwgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxF
KSk7CisgICAgbmV3U3R5bGUtPnNldFRyYW5zZm9ybSh0cmFuc2Zvcm0pOworICAgIG5ld1N0eWxl
LT5zZXRUcmFuc2Zvcm1PcmlnaW5YKExlbmd0aCgwLCBGaXhlZCkpOworICAgIG5ld1N0eWxlLT5z
ZXRUcmFuc2Zvcm1PcmlnaW5ZKExlbmd0aCgwLCBGaXhlZCkpOworICAgIHJvb3QtPnNldFN0eWxl
KG5ld1N0eWxlLnJlbGVhc2UoKSk7CisKKyAgICBtX3BhZ2VTY2FsZUZhY3RvciA9IHNjYWxlOwor
ICAgIG1fcGFnZVNjYWxlT3JpZ2luID0gb3JpZ2luOworCisgICAgaWYgKEZyYW1lVmlldyogdmll
dyA9IHRoaXMtPnZpZXcoKSkgeworICAgICAgICBpZiAoZG9jdW1lbnQtPnJlbmRlcmVyKCkgJiYg
ZG9jdW1lbnQtPnJlbmRlcmVyKCktPm5lZWRzTGF5b3V0KCkgJiYgdmlldy0+ZGlkRmlyc3RMYXlv
dXQoKSkKKyAgICAgICAgICAgIHZpZXctPmxheW91dCgpOworICAgIH0KK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wYWdlL0ZyYW1lLmgJKHJldmlzaW9uIDcwNDcyKQorKysgV2ViQ29yZS9wYWdlL0Zy
YW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NCw2ICsxNDQsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIGZsb2F0IHRleHRab29tRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0
Wm9vbUZhY3RvcjsgfQogICAgICAgICB2b2lkIHNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMoZmxv
YXQgcGFnZVpvb21GYWN0b3IsIGZsb2F0IHRleHRab29tRmFjdG9yKTsKIAorICAgICAgICB2b2lk
IHNjYWxlUGFnZShmbG9hdCBzY2FsZSwgY29uc3QgSW50UG9pbnQmIG9yaWdpbik7CisKICNpZiBF
TkFCTEUoT1JJRU5UQVRJT05fRVZFTlRTKQogICAgICAgICAvLyBPcmllbnRhdGlvbiBpcyB0aGUg
aW50ZXJmYWNlIG9yaWVudGF0aW9uIGluIGRlZ3JlZXMuIFNvbWUgZXhhbXBsZXMgYXJlOgogICAg
ICAgICAvLyAgMCBpcyBzdHJhaWdodCB1cDsgLTkwIGlzIHdoZW4gdGhlIGRldmljZSBpcyByb3Rh
dGVkIDkwIGNsb2Nrd2lzZTsKQEAgLTIxNSw2ICsyMTcsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIGZsb2F0IG1fcGFnZVpvb21GYWN0b3I7CiAgICAgICAgIGZsb2F0IG1fdGV4dFpv
b21GYWN0b3I7CiAKKyAgICAgICAgZmxvYXQgbV9wYWdlU2NhbGVGYWN0b3I7CisgICAgICAgIElu
dFBvaW50IG1fcGFnZVNjYWxlT3JpZ2luOworCiAjaWYgRU5BQkxFKE9SSUVOVEFUSU9OX0VWRU5U
UykKICAgICAgICAgaW50IG1fb3JpZW50YXRpb247CiAjZW5kaWYKSW5kZXg6IFdlYktpdC9tYWMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3
MDQ5MikKKysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MjAgQEAKKzIwMTAtMTAtMjYgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBmb3IgPHJkYXI6
Ly9wcm9ibGVtLzgxMDc2Njc+CisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIFNQSSB0byBNYWMg
V2ViS2l0IHRoYXQgc2NhbGVzIHRoZSBwYWdlIGJ5IHRoZSBnaXZlbiAKKyAgICAgICAgc2NhbGUg
ZmFjdG9yLgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJW
aWV3IF9zY2FsZVdlYlZpZXc6YXRPcmlnaW46XSk6CisgICAgICAgICgtW1dlYlZpZXcgX3ZpZXdT
Y2FsZUZhY3Rvcl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0RhdGEuaDoKKyAgICAgICAg
KiBXZWJWaWV3L1dlYlZpZXdEYXRhLm1tOgorICAgICAgICAoLVtXZWJWaWV3UHJpdmF0ZSBpbml0
XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oOgorCiAyMDEwLTEwLTI0ICBE
YW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5k
ZXJzIENhcmxzc29uLgpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDcwNDcyKQor
KysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTE0NCw2
ICsxNDQsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9QYWdlR3JvdXAuaD4KICNpbXBvcnQgPFdlYkNv
cmUvUGxhdGZvcm1Nb3VzZUV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Byb2dyZXNzVHJhY2tl
ci5oPgorI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jl
bmRlcldpZGdldC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KQEAgLTI2MTgsNiArMjYxOSwy
MSBAQCArICh2b2lkKV9yZWdpc3RlclVSTFNjaGVtZUFzU2VjdXJlOihOU1N0CiAgICAgU2NoZW1l
UmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNTZWN1cmUoc2NoZW1lKTsKIH0KIAorLSAodm9p
ZClfc2NhbGVXZWJWaWV3OihmbG9hdClzY2FsZSBhdE9yaWdpbjooTlNQb2ludClvcmlnaW4KK3sK
KyAgICBfcHJpdmF0ZS0+dmlld1NjYWxlRmFjdG9yID0gc2NhbGU7CisgICAgRnJhbWUqIGNvcmVG
cmFtZSA9IFtzZWxmIF9tYWluQ29yZUZyYW1lXTsKKyAgICBpZiAoIWNvcmVGcmFtZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgY29yZUZyYW1lLT5zY2FsZVBhZ2Uoc2NhbGUsIEludFBvaW50KG9y
aWdpbikpOworfQorCistIChmbG9hdClfdmlld1NjYWxlRmFjdG9yCit7CisgICAgcmV0dXJuIF9w
cml2YXRlLT52aWV3U2NhbGVGYWN0b3I7Cit9CisKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIF9X
ZWJTYWZlRm9yd2FyZGVyCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaAkocmV2aXNpb24g
NzA0NzIpCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaAkod29ya2luZyBjb3B5
KQpAQCAtODAsNiArODAsOCBAQCBAaW50ZXJmYWNlIFdlYlZpZXdQcml2YXRlIDogTlNPYmplY3Qg
ewogICAgIGZsb2F0IHpvb21NdWx0aXBsaWVyOwogICAgIEJPT0wgem9vbXNUZXh0T25seTsKIAor
ICAgIGZsb2F0IHZpZXdTY2FsZUZhY3RvcjsKKwogICAgIE5TU3RyaW5nICphcHBsaWNhdGlvbk5h
bWVGb3JVc2VyQWdlbnQ7CiAgICAgV1RGOjpTdHJpbmcgdXNlckFnZW50OwogICAgIEJPT0wgdXNl
ckFnZW50T3ZlcnJpZGRlbjsKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0JKHJldmlz
aW9uIDcwNDcyKQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC02NCw2ICs2NCw4IEBAIC0gKGlkKWluaXQgCiAgICAgem9vbU11bHRpcGxpZXIg
PSAxOwogICAgIHpvb21zVGV4dE9ubHkgPSBOTzsKIAorICAgIHZpZXdTY2FsZUZhY3RvciA9IDE7
CisKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAgICAgZGFzaGJvYXJkQmVoYXZpb3JB
bGxvd1doZWVsU2Nyb2xsaW5nID0gWUVTOwogI2VuZGlmCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlld1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlld1ByaXZhdGUuaAkocmV2aXNpb24gNzA0NzIpCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlld1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTQyLDYgKzU0Miw5IEBAIENvdWxkIGJl
IHdvcnRoIGFkZGluZyB0byB0aGUgQVBJLgogKyAodm9pZClfc2V0RG9tYWluUmVsYXhhdGlvbkZv
cmJpZGRlbjooQk9PTClmb3JiaWRkZW4gZm9yVVJMU2NoZW1lOihOU1N0cmluZyAqKXNjaGVtZTsK
ICsgKHZvaWQpX3JlZ2lzdGVyVVJMU2NoZW1lQXNTZWN1cmU6KE5TU3RyaW5nICopc2NoZW1lOwog
CistICh2b2lkKV9zY2FsZVdlYlZpZXc6KGZsb2F0KXNjYWxlIGF0T3JpZ2luOihOU1BvaW50KW9y
aWdpbjsKKy0gKGZsb2F0KV92aWV3U2NhbGVGYWN0b3I7CisKIEBlbmQKIAogQGludGVyZmFjZSBX
ZWJWaWV3IChXZWJWaWV3UHJpbnRpbmdQcml2YXRlKQpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZvLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5m
by5tbQkocmV2aXNpb24gNzA0NzIpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
RHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8ubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwNSw3ICsx
MDUsNyBAQCAtIChOU0FycmF5ICopbmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkCiAgICAgcmV0
dXJuIG5pbDsKIH0KIAotI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5l
ZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BB
UkQpCisjaWYgMAogLSAoTlNEcmFnZ2luZ0Zvcm1hdGlvbilkcmFnZ2luZ0Zvcm1hdGlvbgogewog
ICAgIHJldHVybiBOU0RyYWdnaW5nRm9ybWF0aW9uRGVmYXVsdDsK
</data>
<flag name="review"
          id="62101"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72044</attachid>
            <date>2010-10-27 09:29:09 -0700</date>
            <delta_ts>2010-10-27 13:57:25 -0700</delta_ts>
            <desc>New patch</desc>
            <filename>for-review2.txt</filename>
            <type>text/plain</type>
            <size>17195</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MDY1MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzUgQEAKKzIwMTAtMTAtMjcgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBm
b3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4Mzg1IEFkZCBXZWJL
aXQgU1BJIAorICAgICAgICB0byBzY2FsZSBhIFdlYlZpZXcKKyAgICAgICAgLWFuZCBjb3JyZXNw
b25kaW5nLQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODEwNzY2Nz4KKworICAgICAgICBUaGlz
IHBhdGNoIGFkZHMgU1BJIHRvIE1hYyBXZWJLaXQgdGhhdCBzY2FsZXMgdGhlIHBhZ2UgYnkgdGhl
IGdpdmVuIAorICAgICAgICBzY2FsZSBmYWN0b3IuIFRoZSBzY2FsZSBmYWN0b3IgaXMgZmFjdG9y
ZWQgaW50byB0aGUgUmVuZGVyU3R5bGUncyAKKyAgICAgICAgdHJhbnNmb3JtLgorCisgICAgICAg
IFNldCB0aGUgY3VycmVudCBwYWdlU2NhbGUgZm9yIHRoZSBkb2N1bWVudC4KKyAgICAgICAgKiBj
c3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVj
dG9yOjpzdHlsZUZvckRvY3VtZW50KToKKworICAgICAgICBGcmFtZSBrZWVwcyB0cmFjayBvZiB0
aGUgcGFnZSBzY2FsZSBmYWN0b3IgYW5kIG9yaWdpbi4gV2hlbiAKKyAgICAgICAgc2NhbGVQYWdl
KCkgaXMgY2FsbGVkLCBpdCBtb2RpZmllcyB0aGUgUmVuZGVyVmlldydzIHN0eWxlIHRvIGluY2x1
ZGUgCisgICAgICAgIGEgdHJhbnNmb3JtIG9mIHRoZSBhcHByb3ByaWF0ZSBzY2FsZSBhbmQgZm9y
Y2VzIGEgc3R5bGUgcmVjYWxjLgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWU6OkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpzY2FsZVBh
Z2UpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpw
YWdlU2NhbGVGYWN0b3IpOgorICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorCisgICAgICAgIEFk
ZCBhIHNjYWxlIHRvIHRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXguCisgICAgICAgICogcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxl
OjpzZXRQYWdlU2NhbGVUcmFuc2Zvcm0pOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5oOgorCiAyMDEwLTEwLTI3ICBBZGVtYXIgZGUgU291emEgUmVpcyBKciAgPGFkZW1h
ci5yZWlzQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGlu
Zy4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gNzA0NzIpCisrKyBXZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CSh3b3JraW5nIGNvcHkpCkBAIC02MjUsNiArNjI1LDcgQEAgX19aTjdXZWJDb3JlNUZyYW1lMjhz
ZWFyY2hGb3JMYWJlbHNCZWZvcgogX19aTjdXZWJDb3JlNUZyYW1lNmNyZWF0ZUVQTlNfNFBhZ2VF
UE5TXzIxSFRNTEZyYW1lT3duZXJFbGVtZW50RVBOU18xN0ZyYW1lTG9hZGVyQ2xpZW50RQogX19a
TjdXZWJDb3JlNUZyYW1lN3NldFZpZXdFTjNXVEYxMFBhc3NSZWZQdHJJTlNfOUZyYW1lVmlld0VF
RQogX19aTjdXZWJDb3JlNUZyYW1lOW5vZGVJbWFnZUVQTlNfNE5vZGVFCitfX1pON1dlYkNvcmU1
RnJhbWU5c2NhbGVQYWdlRWZSS05TXzhJbnRQb2ludEUKIF9fWk43V2ViQ29yZTVGcmFtZUQxRXYK
IF9fWk43V2ViQ29yZTVJbWFnZTEyc3VwcG9ydHNUeXBlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdX
ZWJDb3JlNUltYWdlMjBsb2FkUGxhdGZvcm1SZXNvdXJjZUVQS2MKSW5kZXg6IFdlYkNvcmUvY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1N0eWxl
U2VsZWN0b3IuY3BwCShyZXZpc2lvbiA3MDQ3MikKKysrIFdlYkNvcmUvY3NzL0NTU1N0eWxlU2Vs
ZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTA4LDYgKzExMDgsNyBAQCBQYXNzUmVmUHRy
PFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVjdG9yCiAgICAgZG9jdW1lbnRTdHlsZS0+c2V0RGlz
cGxheShCTE9DSyk7CiAgICAgZG9jdW1lbnRTdHlsZS0+c2V0VmlzdWFsbHlPcmRlcmVkKGRvY3Vt
ZW50LT52aXN1YWxseU9yZGVyZWQoKSk7CiAgICAgZG9jdW1lbnRTdHlsZS0+c2V0Wm9vbShmcmFt
ZSA/IGZyYW1lLT5wYWdlWm9vbUZhY3RvcigpIDogMSk7CisgICAgZG9jdW1lbnRTdHlsZS0+c2V0
UGFnZVNjYWxlVHJhbnNmb3JtKGZyYW1lID8gZnJhbWUtPnBhZ2VTY2FsZUZhY3RvcigpIDogMSk7
CiAgICAgCiAgICAgRWxlbWVudCogZG9jRWxlbWVudCA9IGRvY3VtZW50LT5kb2N1bWVudEVsZW1l
bnQoKTsKICAgICBpZiAoZG9jRWxlbWVudCAmJiBkb2NFbGVtZW50LT5yZW5kZXJlcigpKSB7Cklu
ZGV4OiBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9G
cmFtZS5jcHAJKHJldmlzaW9uIDcwNDcyKQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzAsNiArNzAsNyBAQAogI2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9s
LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCisj
aW5jbHVkZSAiU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKICNpbmNsdWRlICJTY3JpcHRDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlNldHRp
bmdzLmgiCkBAIC0xNTksNiArMTYwLDcgQEAgaW5saW5lIEZyYW1lOjpGcmFtZShQYWdlKiBwYWdl
LCBIVE1MRnJhbQogICAgICwgbV9saWZlU3VwcG9ydFRpbWVyKHRoaXMsICZGcmFtZTo6bGlmZVN1
cHBvcnRUaW1lckZpcmVkKQogICAgICwgbV9wYWdlWm9vbUZhY3RvcihwYXJlbnRQYWdlWm9vbUZh
Y3Rvcih0aGlzKSkKICAgICAsIG1fdGV4dFpvb21GYWN0b3IocGFyZW50VGV4dFpvb21GYWN0b3Io
dGhpcykpCisgICAgLCBtX3BhZ2VTY2FsZUZhY3RvcigxKQogI2lmIEVOQUJMRShPUklFTlRBVElP
Tl9FVkVOVFMpCiAgICAgLCBtX29yaWVudGF0aW9uKDApCiAjZW5kaWYKQEAgLTk1OSw0ICs5NjEs
MzIgQEAgdm9pZCBGcmFtZTo6c2V0UGFnZUFuZFRleHRab29tRmFjdG9ycyhmbAogICAgIH0KIH0K
IAordm9pZCBGcmFtZTo6c2NhbGVQYWdlKGZsb2F0IHNjYWxlLCBjb25zdCBJbnRQb2ludCYgb3Jp
Z2luKQoreworICAgIGlmIChtX3BhZ2VTY2FsZUZhY3RvciA9PSBzY2FsZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsKKyAgICBp
ZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBSZW5kZXJWaWV3KiByb290ID0g
Y29udGVudFJlbmRlcmVyKCk7CisgICAgaWYgKCFyb290KQorICAgICAgICByZXR1cm47CisKKyAg
ICAvLyBVcGRhdGUgdGhlIHNjcm9sbCBwb3NpdGlvbiB0byB0aGUgb3JpZ2luIG9mIHRoZSBzY2Fs
ZS4KKyAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gdGhpcy0+dmlldygpKQorICAgICAgICB2aWV3
LT5zZXRTY3JvbGxQb3NpdGlvbihJbnRQb2ludChvcmlnaW4ueCgpLCBvcmlnaW4ueSgpKSk7CisK
KyAgICBtX3BhZ2VTY2FsZUZhY3RvciA9IHNjYWxlOworCisgICAgcm9vdC0+c3R5bGUoKS0+c2V0
UGFnZVNjYWxlVHJhbnNmb3JtKHNjYWxlKTsKKyAgICBkb2N1bWVudC0+cmVjYWxjU3R5bGUoTm9k
ZTo6Rm9yY2UpOworCisgICAgaWYgKEZyYW1lVmlldyogdmlldyA9IHRoaXMtPnZpZXcoKSkgewor
ICAgICAgICBpZiAoZG9jdW1lbnQtPnJlbmRlcmVyKCkgJiYgZG9jdW1lbnQtPnJlbmRlcmVyKCkt
Pm5lZWRzTGF5b3V0KCkgJiYgdmlldy0+ZGlkRmlyc3RMYXlvdXQoKSkKKyAgICAgICAgICAgIHZp
ZXctPmxheW91dCgpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
V2ViQ29yZS9wYWdlL0ZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1lLmgJ
KHJldmlzaW9uIDcwNDcyKQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE0NCw2ICsxNDQsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGZsb2F0IHRl
eHRab29tRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0Wm9vbUZhY3RvcjsgfQogICAgICAg
ICB2b2lkIHNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMoZmxvYXQgcGFnZVpvb21GYWN0b3IsIGZs
b2F0IHRleHRab29tRmFjdG9yKTsKIAorICAgICAgICB2b2lkIHNjYWxlUGFnZShmbG9hdCBzY2Fs
ZSwgY29uc3QgSW50UG9pbnQmIG9yaWdpbik7CisgICAgICAgIGZsb2F0IHBhZ2VTY2FsZUZhY3Rv
cigpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVNjYWxlRmFjdG9yOyB9CisKICNpZiBFTkFCTEUoT1JJ
RU5UQVRJT05fRVZFTlRTKQogICAgICAgICAvLyBPcmllbnRhdGlvbiBpcyB0aGUgaW50ZXJmYWNl
IG9yaWVudGF0aW9uIGluIGRlZ3JlZXMuIFNvbWUgZXhhbXBsZXMgYXJlOgogICAgICAgICAvLyAg
MCBpcyBzdHJhaWdodCB1cDsgLTkwIGlzIHdoZW4gdGhlIGRldmljZSBpcyByb3RhdGVkIDkwIGNs
b2Nrd2lzZTsKQEAgLTIxNSw2ICsyMTgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IGZsb2F0IG1fcGFnZVpvb21GYWN0b3I7CiAgICAgICAgIGZsb2F0IG1fdGV4dFpvb21GYWN0b3I7
CiAKKyAgICAgICAgZmxvYXQgbV9wYWdlU2NhbGVGYWN0b3I7CisKICNpZiBFTkFCTEUoT1JJRU5U
QVRJT05fRVZFTlRTKQogICAgICAgICBpbnQgbV9vcmllbnRhdGlvbjsKICNlbmRpZgpJbmRleDog
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAkocmV2aXNpb24gNzA0NzIpCisr
KyBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJGb250U2VsZWN0b3IuaCIKICNpbmNsdWRlICJS
ZW5kZXJBcmVuYS5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUgIlNjYWxl
VHJhbnNmb3JtT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiU3R5bGVJbWFnZS5oIgogI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDxhbGdvcml0aG0+CkBAIC02ODAsNiArNjgx
LDE3IEBAIHZvaWQgUmVuZGVyU3R5bGU6OmFwcGx5VHJhbnNmb3JtKFRyYW5zZm8KICAgICB9CiB9
CiAKK3ZvaWQgUmVuZGVyU3R5bGU6OnNldFBhZ2VTY2FsZVRyYW5zZm9ybShmbG9hdCBzY2FsZSkK
K3sKKyAgICBpZiAoc2NhbGUgPT0gMSkKKyAgICAgICAgcmV0dXJuOworICAgIFRyYW5zZm9ybU9w
ZXJhdGlvbnMgdHJhbnNmb3JtOworICAgIHRyYW5zZm9ybS5vcGVyYXRpb25zKCkuYXBwZW5kKFNj
YWxlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoc2NhbGUsIHNjYWxlLCBTY2FsZVRyYW5zZm9y
bU9wZXJhdGlvbjo6U0NBTEUpKTsKKyAgICBzZXRUcmFuc2Zvcm0odHJhbnNmb3JtKTsKKyAgICBz
ZXRUcmFuc2Zvcm1PcmlnaW5YKExlbmd0aCgwLCBGaXhlZCkpOworICAgIHNldFRyYW5zZm9ybU9y
aWdpblkoTGVuZ3RoKDAsIEZpeGVkKSk7Cit9CisKIHZvaWQgUmVuZGVyU3R5bGU6OnNldFRleHRT
aGFkb3coU2hhZG93RGF0YSogdmFsLCBib29sIGFkZCkKIHsKICAgICBBU1NFUlQoIXZhbCB8fCAo
IXZhbC0+c3ByZWFkKCkgJiYgdmFsLT5zdHlsZSgpID09IE5vcm1hbCkpOwpJbmRleDogV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCShyZXZpc2lvbiA3MDQ3MikKKysrIFdlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTcxMyw2ICs3
MTMsNyBAQCBwdWJsaWM6CiAKICAgICBlbnVtIEFwcGx5VHJhbnNmb3JtT3JpZ2luIHsgSW5jbHVk
ZVRyYW5zZm9ybU9yaWdpbiwgRXhjbHVkZVRyYW5zZm9ybU9yaWdpbiB9OwogICAgIHZvaWQgYXBw
bHlUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBJbnRTaXplJiBib3JkZXJC
b3hTaXplLCBBcHBseVRyYW5zZm9ybU9yaWdpbiA9IEluY2x1ZGVUcmFuc2Zvcm1PcmlnaW4pIGNv
bnN0OworICAgIHZvaWQgc2V0UGFnZVNjYWxlVHJhbnNmb3JtKGZsb2F0KTsKIAogICAgIGJvb2wg
aGFzTWFzaygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hc2suaGFz
SW1hZ2UoKSB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tYXNrQm94SW1hZ2UuaGFzSW1hZ2Uo
KTsgfQogICAgIC8vIEVuZCBDU1MzIEdldHRlcnMKSW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MDYwMikKKysrIFdlYktp
dDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTAtMTAtMjcg
IEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQ4Mzg1IEFkZCBXZWJLaXQgU1BJIAorICAgICAgICB0byBzY2FsZSBh
IFdlYlZpZXcKKyAgICAgICAgLWFuZCBjb3JyZXNwb25kaW5nLQorICAgICAgICA8cmRhcjovL3By
b2JsZW0vODEwNzY2Nz4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgU1BJIHRvIE1hYyBXZWJL
aXQgdGhhdCBzY2FsZXMgdGhlIHBhZ2UgYnkgdGhlIGdpdmVuIAorICAgICAgICBzY2FsZSBmYWN0
b3IuCisKKyAgICAgICAgTmV3IHRvSW1wbCBjb252ZXJ0cyBiZXR3ZWVuIFdLUG9pbnQgYW5kIElu
dFBvaW50CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oOgorICAgICAg
ICAoV2ViS2l0Ojp0b0ltcGwpOgorCisgICAgICAgIEltcGxlbWVudCBzY2FsZVdlYlZpZXcoKSwg
d2hpY2ggdGVsbHMgV2ViQ29yZTo6RnJhbWUgdG8gc2NhbGUsIGFuZCAKKyAgICAgICAgdmlld1Nj
YWxlRmFjdG9yKCkgd2hpY2ggcmV0dXJucyB0aGUgY3VycmVudCBzY2FsZSBmYWN0b3IuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VTY2FsZVdl
YlZpZXcpOgorICAgICAgICAoV0tQYWdlR2V0Vmlld1NjYWxlRmFjdG9yKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0MvV0tQYWdlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzY2FsZVdlYlZpZXcpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp2
aWV3U2NhbGVGYWN0b3IpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2NhbGVXZWJWaWV3KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6dmlld1NjYWxlRmFjdG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluOgorCiAyMDEwLTEwLTI2ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeC4KSW5kZXg6IFdlYktpdDIvU2hh
cmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvU2hhcmVk
L0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oCShyZXZpc2lvbiA3MDQ3MikKKysrIFdlYktpdDIvU2hh
cmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3
IEBACiAjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViVVJMLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ludFBvaW50Lmg+CiAj
aW5jbHVkZSA8d3RmL1R5cGVUcmFpdHMuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xNjQs
NiArMTY1LDExIEBAIGlubGluZSBXZWJDb3JlOjpGbG9hdFJlY3QgdG9JbXBsKGNvbnN0IFcKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGZsb2F0Pih3a1JlY3Quc2l6
ZS53aWR0aCksIHN0YXRpY19jYXN0PGZsb2F0Pih3a1JlY3Quc2l6ZS5oZWlnaHQpKTsKIH0KIAor
aW5saW5lIFdlYkNvcmU6OkludFBvaW50IHRvSW1wbChjb25zdCBXS1BvaW50ICYgd2tQb2ludCkK
K3sKKyAgICByZXR1cm4gV2ViQ29yZTo6SW50UG9pbnQoc3RhdGljX2Nhc3Q8aW50Pih3a1BvaW50
LngpLCBzdGF0aWNfY2FzdDxpbnQ+KHdrUG9pbnQueSkpOworfQorCiBpbmxpbmUgV0tSZWN0IHRv
QVBJKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgcmVjdCkKIHsKICAgICBXS1JlY3Qgd2tSZWN0
OwpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiA3MDQ3MikKKysr
IFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgz
LDYgKzgzLDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoV2ViUGFnZU5hbWVzcAogICAg
ICwgbV9iYWNrRm9yd2FyZExpc3QoV2ViQmFja0ZvcndhcmRMaXN0OjpjcmVhdGUodGhpcykpCiAg
ICAgLCBtX3RleHRab29tRmFjdG9yKDEpCiAgICAgLCBtX3BhZ2Vab29tRmFjdG9yKDEpCisgICAg
LCBtX3ZpZXdTY2FsZUZhY3RvcigxKQogICAgICwgbV92YWxpZCh0cnVlKQogICAgICwgbV9jbG9z
ZWQoZmFsc2UpCiAgICAgLCBtX3BhZ2VJRChwYWdlSUQpCkBAIC01MTgsNiArNTE5LDE4IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXRQYWdlQW5kVGV4dFpvb21GYWMKICAgICBwcm9jZXNzKCktPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMobV9wYWdlWm9v
bUZhY3RvciwgbV90ZXh0Wm9vbUZhY3RvciksIG1fcGFnZUlEKTsgCiB9CiAKK3ZvaWQgV2ViUGFn
ZVByb3h5OjpzY2FsZVdlYlZpZXcoZG91YmxlIHNjYWxlLCBjb25zdCBJbnRQb2ludCYgb3JpZ2lu
KQoreworICAgIGlmICghaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV92
aWV3U2NhbGVGYWN0b3IgPT0gc2NhbGUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fdmlld1Nj
YWxlRmFjdG9yID0gc2NhbGU7CisgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTY2FsZVdlYlZpZXcoc2NhbGUsIG9yaWdpbiksIG1fcGFnZUlEKTsKK30KKwogdm9pZCBXZWJQ
YWdlUHJveHk6OmZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEZpbmREaXJlY3Rpb24g
ZmluZERpcmVjdGlvbiwgRmluZE9wdGlvbnMgZmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNo
Q291bnQpCiB7CiAgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGaW5kU3Ry
aW5nKHN0cmluZywgZmluZERpcmVjdGlvbiwgZmluZE9wdGlvbnMsIG1heE1hdGNoQ291bnQpLCBt
X3BhZ2VJRCk7CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gNzA0NzIp
CisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAt
MTgwLDYgKzE4MCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFBhZ2Vab29tRmFjdG9yKGRvdWJs
ZSk7CiAgICAgdm9pZCBzZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKGRvdWJsZSBwYWdlWm9vbUZh
Y3RvciwgZG91YmxlIHRleHRab29tRmFjdG9yKTsKIAorICAgIHZvaWQgc2NhbGVXZWJWaWV3KGRv
dWJsZSBzY2FsZSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIG9yaWdpbik7CisgICAgZG91Ymxl
IHZpZXdTY2FsZUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fdmlld1NjYWxlRmFjdG9yOyB9CisK
ICAgICAvLyBGaW5kLgogICAgIHZvaWQgZmluZFN0cmluZyhjb25zdCBTdHJpbmcmLCBGaW5kRGly
ZWN0aW9uLCBGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCk7CiAgICAgdm9pZCBo
aWRlRmluZFVJKCk7CkBAIC0zNDcsNiArMzUwLDcgQEAgcHJpdmF0ZToKIAogICAgIGRvdWJsZSBt
X3RleHRab29tRmFjdG9yOwogICAgIGRvdWJsZSBtX3BhZ2Vab29tRmFjdG9yOworICAgIGRvdWJs
ZSBtX3ZpZXdTY2FsZUZhY3RvcjsKICAgICAKICAgICBib29sIG1fdmFsaWQ7CiAgICAgYm9vbCBt
X2Nsb3NlZDsKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkocmV2aXNpb24gNzA0
NzIpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xOTgsNiArMTk4LDE2IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUFuZFRleHRab29tRmFjdG9y
cyhXS1AKICAgICB0b0ltcGwocGFnZVJlZiktPnNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMocGFn
ZVpvb21GYWN0b3IsIHRleHRab29tRmFjdG9yKTsKIH0KIAordm9pZCBXS1BhZ2VTY2FsZVdlYlZp
ZXcoV0tQYWdlUmVmIHBhZ2VSZWYsIGRvdWJsZSBzY2FsZSwgV0tQb2ludCBvcmlnaW4pCit7Cisg
ICAgdG9JbXBsKHBhZ2VSZWYpLT5zY2FsZVdlYlZpZXcoc2NhbGUsIHRvSW1wbChvcmlnaW4pKTsK
K30KKworZG91YmxlIFdLUGFnZUdldFZpZXdTY2FsZUZhY3RvcihXS1BhZ2VSZWYgcGFnZVJlZikK
K3sKKyAgICByZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT52aWV3U2NhbGVGYWN0b3IoKTsKK30KKwog
dm9pZCBXS1BhZ2VGaW5kU3RyaW5nKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBzdHJp
bmcsIFdLRmluZERpcmVjdGlvbiBmaW5kRGlyZWN0aW9uLCBXS0ZpbmRPcHRpb25zIGZpbmRPcHRp
b25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQogewogICAgIHRvSW1wbChwYWdlUmVmKS0+Zmlu
ZFN0cmluZyh0b0ltcGwoc3RyaW5nKS0+c3RyaW5nKCksIHRvRmluZERpcmVjdGlvbihmaW5kRGly
ZWN0aW9uKSwgdG9GaW5kT3B0aW9ucyhmaW5kT3B0aW9ucyksIG1heE1hdGNoQ291bnQpOwpJbmRl
eDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgJKHJldmlzaW9uIDcwNDcyKQorKysgV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyMiw2ICsyMjIsOSBA
QCBXS19FWFBPUlQgZG91YmxlIFdLUGFnZUdldFBhZ2Vab29tRmFjdG9yCiBXS19FWFBPUlQgdm9p
ZCBXS1BhZ2VTZXRQYWdlWm9vbUZhY3RvcihXS1BhZ2VSZWYgcGFnZSwgZG91YmxlIHpvb21GYWN0
b3IpOwogV0tfRVhQT1JUIHZvaWQgV0tQYWdlU2V0UGFnZUFuZFRleHRab29tRmFjdG9ycyhXS1Bh
Z2VSZWYgcGFnZSwgZG91YmxlIHBhZ2Vab29tRmFjdG9yLCBkb3VibGUgdGV4dFpvb21GYWN0b3Ip
OwogCitXS19FWFBPUlQgdm9pZCBXS1BhZ2VTY2FsZVdlYlZpZXcoV0tQYWdlUmVmIHBhZ2UsIGRv
dWJsZSBzY2FsZSwgV0tQb2ludCBvcmlnaW4pOworV0tfRVhQT1JUIGRvdWJsZSBXS1BhZ2VHZXRW
aWV3U2NhbGVGYWN0b3IoV0tQYWdlUmVmIHBhZ2UpOworCiAvLyBGaW5kLgogZW51bSB7CiAgICAg
a1dLRmluZERpcmVjdGlvbkZvcndhcmQsCkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAkocmV2aXNpb24gNzA0NzIpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDM2LDYgKzQzNiwyMiBAQCB2b2lkIFdl
YlBhZ2U6OnNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMoCiAgICAgcmV0dXJuIGZyYW1lLT5zZXRQ
YWdlQW5kVGV4dFpvb21GYWN0b3JzKHN0YXRpY19jYXN0PGZsb2F0PihwYWdlWm9vbUZhY3Rvciks
IHN0YXRpY19jYXN0PGZsb2F0Pih0ZXh0Wm9vbUZhY3RvcikpOwogfQogCit2b2lkIFdlYlBhZ2U6
OnNjYWxlV2ViVmlldyhkb3VibGUgc2NhbGUsIGNvbnN0IEludFBvaW50JiBvcmlnaW4pCit7Cisg
ICAgRnJhbWUqIGZyYW1lID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpOworICAgIGlmICghZnJh
bWUpCisgICAgICAgIHJldHVybjsKKyAgICBmcmFtZS0+c2NhbGVQYWdlKHNjYWxlLCBvcmlnaW4p
OworfQorCitkb3VibGUgV2ViUGFnZTo6dmlld1NjYWxlRmFjdG9yKCkgY29uc3QKK3sKKyAgICBG
cmFtZSogZnJhbWUgPSBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkK
KyAgICAgICAgcmV0dXJuIDE7CisgICAgcmV0dXJuIGZyYW1lLT5wYWdlU2NhbGVGYWN0b3IoKTsK
K30KKwogdm9pZCBXZWJQYWdlOjppbnN0YWxsUGFnZU92ZXJsYXkoUGFzc093blB0cjxQYWdlT3Zl
cmxheT4gcGFnZU92ZXJsYXkpCiB7CiAgICAgbV9wYWdlT3ZlcmxheSA9IHBhZ2VPdmVybGF5OwpJ
bmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gNzA0NzIpCisr
KyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE0Miw2ICsxNDIsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQYWdlWm9vbUZhY3Rvcihkb3Vi
bGUpOwogICAgIHZvaWQgc2V0UGFnZUFuZFRleHRab29tRmFjdG9ycyhkb3VibGUgcGFnZVpvb21G
YWN0b3IsIGRvdWJsZSB0ZXh0Wm9vbUZhY3Rvcik7CiAKKyAgICB2b2lkIHNjYWxlV2ViVmlldyhk
b3VibGUgc2NhbGUsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBvcmlnaW4pOworICAgIGRvdWJs
ZSB2aWV3U2NhbGVGYWN0b3IoKSBjb25zdDsKKwogICAgIHZvaWQgc3RvcExvYWRpbmcoKTsKIAog
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gNzA0NzIpCisrKyBX
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNv
cHkpCkBAIC02OSw2ICs2OSw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgewogICAgIFNldFBhZ2Va
b29tRmFjdG9yKGRvdWJsZSB6b29tRmFjdG9yKQogICAgIFNldFRleHRab29tRmFjdG9yKGRvdWJs
ZSB6b29tRmFjdG9yKQogCisgICAgU2NhbGVXZWJWaWV3KGRvdWJsZSBzY2FsZSwgY29uc3QgSW50
UG9pbnQmIG9yaWdpbikKKwogICAgICMgRmluZC4KICAgICBGaW5kU3RyaW5nKFdURjo6U3RyaW5n
IHN0cmluZywgdWludDMyX3QgZmluZERpcmVjdGlvbiwgdWludDMyX3QgZmluZE9wdGlvbnMsIHVu
c2lnbmVkIG1heE1hdGNoQ291bnQpCiAgICAgSGlkZUZpbmRVSSgpCkluZGV4OiBXZWJLaXQvbWFj
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24g
NzA2MDIpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDIwIEBACisyMDEwLTEwLTI3ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggZm9yIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODM4NSBBZGQgV2ViS2l0IFNQSSAK
KyAgICAgICAgdG8gc2NhbGUgYSBXZWJWaWV3CisgICAgICAgIC1hbmQgY29ycmVzcG9uZGluZy0K
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgxMDc2Njc+CisKKyAgICAgICAgVGhpcyBwYXRjaCBh
ZGRzIFNQSSB0byBNYWMgV2ViS2l0IHRoYXQgc2NhbGVzIHRoZSBwYWdlIGJ5IHRoZSBnaXZlbiAK
KyAgICAgICAgc2NhbGUgZmFjdG9yLgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgor
ICAgICAgICAoLVtXZWJWaWV3IF9zY2FsZVdlYlZpZXc6YXRPcmlnaW46XSk6CisgICAgICAgICgt
W1dlYlZpZXcgX3ZpZXdTY2FsZUZhY3Rvcl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld1By
aXZhdGUuaDoKKwogMjAxMC0xMC0yNiAgSmVubiBCcmFpdGh3YWl0ZSAgPGplbm5iQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEbWl0cnkgVGl0b3YuCkluZGV4OiBXZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQkocmV2aXNpb24gNzA0NzIpCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDYgKzE0NCw3IEBACiAjaW1wb3J0IDxXZWJDb3Jl
L1BhZ2VHcm91cC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybU1vdXNlRXZlbnQuaD4KICNp
bXBvcnQgPFdlYkNvcmUvUHJvZ3Jlc3NUcmFja2VyLmg+CisjaW1wb3J0IDxXZWJDb3JlL1JlbmRl
clZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyV2lkZ2V0Lmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1Jlc291cmNlSGFuZGxlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlv
bkNoZWNrcy5oPgpAQCAtMjYxOCw2ICsyNjE5LDI0IEBAICsgKHZvaWQpX3JlZ2lzdGVyVVJMU2No
ZW1lQXNTZWN1cmU6KE5TU3QKICAgICBTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVB
c1NlY3VyZShzY2hlbWUpOwogfQogCistICh2b2lkKV9zY2FsZVdlYlZpZXc6KGZsb2F0KXNjYWxl
IGF0T3JpZ2luOihOU1BvaW50KW9yaWdpbgoreworICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBbc2Vs
ZiBfbWFpbkNvcmVGcmFtZV07CisgICAgaWYgKCFjb3JlRnJhbWUpCisgICAgICAgIHJldHVybjsK
KworICAgIGNvcmVGcmFtZS0+c2NhbGVQYWdlKHNjYWxlLCBJbnRQb2ludChvcmlnaW4pKTsKK30K
KworLSAoZmxvYXQpX3ZpZXdTY2FsZUZhY3RvcgoreworICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBb
c2VsZiBfbWFpbkNvcmVGcmFtZV07CisgICAgaWYgKCFjb3JlRnJhbWUpCisgICAgICAgIHJldHVy
biAxOworCisgICAgcmV0dXJuIGNvcmVGcmFtZS0+cGFnZVNjYWxlRmFjdG9yKCk7Cit9CisKIEBl
bmQKIAogQGltcGxlbWVudGF0aW9uIF9XZWJTYWZlRm9yd2FyZGVyCkluZGV4OiBXZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlld1ByaXZhdGUuaAkocmV2aXNpb24gNzA0NzIpCisrKyBXZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlld1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTQyLDYgKzU0Miw5IEBAIENv
dWxkIGJlIHdvcnRoIGFkZGluZyB0byB0aGUgQVBJLgogKyAodm9pZClfc2V0RG9tYWluUmVsYXhh
dGlvbkZvcmJpZGRlbjooQk9PTClmb3JiaWRkZW4gZm9yVVJMU2NoZW1lOihOU1N0cmluZyAqKXNj
aGVtZTsKICsgKHZvaWQpX3JlZ2lzdGVyVVJMU2NoZW1lQXNTZWN1cmU6KE5TU3RyaW5nICopc2No
ZW1lOwogCistICh2b2lkKV9zY2FsZVdlYlZpZXc6KGZsb2F0KXNjYWxlIGF0T3JpZ2luOihOU1Bv
aW50KW9yaWdpbjsKKy0gKGZsb2F0KV92aWV3U2NhbGVGYWN0b3I7CisKIEBlbmQKIAogQGludGVy
ZmFjZSBXZWJWaWV3IChXZWJWaWV3UHJpbnRpbmdQcml2YXRlKQo=
</data>
<flag name="review"
          id="62216"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72083</attachid>
            <date>2010-10-27 13:57:25 -0700</date>
            <delta_ts>2010-10-27 14:10:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review-3.txt</filename>
            <type>text/plain</type>
            <size>15753</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MDcwMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMTAtMTAtMjcgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBm
b3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4Mzg1IEFkZCBXZWJL
aXQgCisgICAgICAgIFNQSSB0byBzY2FsZSBhIFdlYlZpZXcKKyAgICAgICAgLWFuZCBjb3JyZXNw
b25kaW5nLQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODEwNzY2Nz4KKworICAgICAgICBUaGlz
IHBhdGNoIGFkZHMgU1BJIHRvIE1hYyBXZWJLaXQgdGhhdCBzY2FsZXMgdGhlIHBhZ2UgYnkgdGhl
IGdpdmVuIAorICAgICAgICBzY2FsZSBmYWN0b3IuIFRoZSBzY2FsZSBmYWN0b3IgaXMgZmFjdG9y
ZWQgaW50byB0aGUgUmVuZGVyU3R5bGUncyAKKyAgICAgICAgdHJhbnNmb3JtLgorCisgICAgICAg
IFNldCB0aGUgY3VycmVudCBwYWdlU2NhbGUgZm9yIHRoZSBkb2N1bWVudC4KKyAgICAgICAgKiBj
c3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVj
dG9yOjpzdHlsZUZvckRvY3VtZW50KToKKworICAgICAgICBGcmFtZSBrZWVwcyB0cmFjayBvZiB0
aGUgcGFnZSBzY2FsZSBmYWN0b3IuIFdoZW4gCisgICAgICAgIHNjYWxlUGFnZSgpIGlzIGNhbGxl
ZCwgaXQgbW9kaWZpZXMgdGhlIFJlbmRlclZpZXcncyBzdHlsZSB0byAKKyAgICAgICAgaW5jbHVk
ZSBhIHRyYW5zZm9ybSBvZiB0aGUgYXBwcm9wcmlhdGUgc2NhbGUgYW5kIGZvcmNlcyBhIHN0eWxl
IAorICAgICAgICByZWNhbGMuCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZTo6RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnNjYWxlUGFn
ZSk6CisgICAgICAgICogcGFnZS9GcmFtZS5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnBh
Z2VTY2FsZUZhY3Rvcik6CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisKKyAgICAgICAgQWRk
IGEgc2NhbGUgdG8gdGhlIHRyYW5zZm9ybWF0aW9uIG1hdHJpeC4KKyAgICAgICAgKiByZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
OnNldFBhZ2VTY2FsZVRyYW5zZm9ybSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmg6CisKKwogMjAxMC0xMC0yNyAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGJ1aWxkIGZpeCBhZnRlciByNzA2OTIuCkluZGV4OiBX
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5leHAu
aW4JKHJldmlzaW9uIDcwNjU2KQorKysgV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBj
b3B5KQpAQCAtNjI1LDYgKzYyNSw3IEBAIF9fWk43V2ViQ29yZTVGcmFtZTI4c2VhcmNoRm9yTGFi
ZWxzQmVmb3IKIF9fWk43V2ViQ29yZTVGcmFtZTZjcmVhdGVFUE5TXzRQYWdlRVBOU18yMUhUTUxG
cmFtZU93bmVyRWxlbWVudEVQTlNfMTdGcmFtZUxvYWRlckNsaWVudEUKIF9fWk43V2ViQ29yZTVG
cmFtZTdzZXRWaWV3RU4zV1RGMTBQYXNzUmVmUHRySU5TXzlGcmFtZVZpZXdFRUUKIF9fWk43V2Vi
Q29yZTVGcmFtZTlub2RlSW1hZ2VFUE5TXzROb2RlRQorX19aTjdXZWJDb3JlNUZyYW1lOXNjYWxl
UGFnZUVmCiBfX1pON1dlYkNvcmU1RnJhbWVEMUV2CiBfX1pON1dlYkNvcmU1SW1hZ2UxMnN1cHBv
cnRzVHlwZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTVJbWFnZTIwbG9hZFBsYXRmb3Jt
UmVzb3VyY2VFUEtjCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2aXNpb24gNzA2
NTYpCisrKyBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTExMiw2ICsxMTEyLDcgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxl
Y3RvcgogICAgIGRvY3VtZW50U3R5bGUtPnNldERpc3BsYXkoQkxPQ0spOwogICAgIGRvY3VtZW50
U3R5bGUtPnNldFZpc3VhbGx5T3JkZXJlZChkb2N1bWVudC0+dmlzdWFsbHlPcmRlcmVkKCkpOwog
ICAgIGRvY3VtZW50U3R5bGUtPnNldFpvb20oZnJhbWUgPyBmcmFtZS0+cGFnZVpvb21GYWN0b3Io
KSA6IDEpOworICAgIGRvY3VtZW50U3R5bGUtPnNldFBhZ2VTY2FsZVRyYW5zZm9ybShmcmFtZSA/
IGZyYW1lLT5wYWdlU2NhbGVGYWN0b3IoKSA6IDEpOwogICAgIAogICAgIEVsZW1lbnQqIGRvY0Vs
ZW1lbnQgPSBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCk7CiAgICAgUmVuZGVyT2JqZWN0KiBk
b2NFbGVtZW50UmVuZGVyZXIgPSBkb2NFbGVtZW50ID8gZG9jRWxlbWVudC0+cmVuZGVyZXIoKSA6
IDA7CkluZGV4OiBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGFnZS9GcmFtZS5jcHAJKHJldmlzaW9uIDcwNjU2KQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsNyBAQAogI2luY2x1ZGUgIlJlbmRlclRleHRD
b250cm9sLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3
LmgiCisjaW5jbHVkZSAiU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKICNpbmNsdWRlICJTY3Jp
cHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgogI2luY2x1ZGUg
IlNldHRpbmdzLmgiCkBAIC0xNTksNiArMTYwLDcgQEAgaW5saW5lIEZyYW1lOjpGcmFtZShQYWdl
KiBwYWdlLCBIVE1MRnJhbQogICAgICwgbV9saWZlU3VwcG9ydFRpbWVyKHRoaXMsICZGcmFtZTo6
bGlmZVN1cHBvcnRUaW1lckZpcmVkKQogICAgICwgbV9wYWdlWm9vbUZhY3RvcihwYXJlbnRQYWdl
Wm9vbUZhY3Rvcih0aGlzKSkKICAgICAsIG1fdGV4dFpvb21GYWN0b3IocGFyZW50VGV4dFpvb21G
YWN0b3IodGhpcykpCisgICAgLCBtX3BhZ2VTY2FsZUZhY3RvcigxKQogI2lmIEVOQUJMRShPUklF
TlRBVElPTl9FVkVOVFMpCiAgICAgLCBtX29yaWVudGF0aW9uKDApCiAjZW5kaWYKQEAgLTk2Myw0
ICs5NjUsMjYgQEAgdm9pZCBGcmFtZTo6c2V0UGFnZUFuZFRleHRab29tRmFjdG9ycyhmbAogICAg
IH0KIH0KIAordm9pZCBGcmFtZTo6c2NhbGVQYWdlKGZsb2F0IHNjYWxlKQoreworICAgIGlmICht
X3BhZ2VTY2FsZUZhY3RvciA9PSBzY2FsZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRG9jdW1l
bnQqIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX3BhZ2VTY2FsZUZhY3RvciA9IHNjYWxlOworCisgICAgaWYg
KGRvY3VtZW50LT5yZW5kZXJlcigpKQorICAgICAgICBkb2N1bWVudC0+cmVuZGVyZXIoKS0+c2V0
TmVlZHNMYXlvdXQodHJ1ZSk7CisKKyAgICBkb2N1bWVudC0+cmVjYWxjU3R5bGUoTm9kZTo6Rm9y
Y2UpOworCisgICAgaWYgKEZyYW1lVmlldyogdmlldyA9IHRoaXMtPnZpZXcoKSkgeworICAgICAg
ICBpZiAoZG9jdW1lbnQtPnJlbmRlcmVyKCkgJiYgZG9jdW1lbnQtPnJlbmRlcmVyKCktPm5lZWRz
TGF5b3V0KCkgJiYgdmlldy0+ZGlkRmlyc3RMYXlvdXQoKSkKKyAgICAgICAgICAgIHZpZXctPmxh
eW91dCgpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29y
ZS9wYWdlL0ZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1lLmgJKHJldmlz
aW9uIDcwNjU2KQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0
NCw2ICsxNDQsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGZsb2F0IHRleHRab29t
RmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0Wm9vbUZhY3RvcjsgfQogICAgICAgICB2b2lk
IHNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMoZmxvYXQgcGFnZVpvb21GYWN0b3IsIGZsb2F0IHRl
eHRab29tRmFjdG9yKTsKIAorICAgICAgICB2b2lkIHNjYWxlUGFnZShmbG9hdCBzY2FsZSk7Cisg
ICAgICAgIGZsb2F0IHBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVNjYWxl
RmFjdG9yOyB9CisKICNpZiBFTkFCTEUoT1JJRU5UQVRJT05fRVZFTlRTKQogICAgICAgICAvLyBP
cmllbnRhdGlvbiBpcyB0aGUgaW50ZXJmYWNlIG9yaWVudGF0aW9uIGluIGRlZ3JlZXMuIFNvbWUg
ZXhhbXBsZXMgYXJlOgogICAgICAgICAvLyAgMCBpcyBzdHJhaWdodCB1cDsgLTkwIGlzIHdoZW4g
dGhlIGRldmljZSBpcyByb3RhdGVkIDkwIGNsb2Nrd2lzZTsKQEAgLTIxNSw2ICsyMTgsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGZsb2F0IG1fcGFnZVpvb21GYWN0b3I7CiAgICAg
ICAgIGZsb2F0IG1fdGV4dFpvb21GYWN0b3I7CiAKKyAgICAgICAgZmxvYXQgbV9wYWdlU2NhbGVG
YWN0b3I7CisKICNpZiBFTkFCTEUoT1JJRU5UQVRJT05fRVZFTlRTKQogICAgICAgICBpbnQgbV9v
cmllbnRhdGlvbjsKICNlbmRpZgpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcAkocmV2aXNpb24gNzA2NTYpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJG
b250U2VsZWN0b3IuaCIKICNpbmNsdWRlICJSZW5kZXJBcmVuYS5oIgogI2luY2x1ZGUgIlJlbmRl
ck9iamVjdC5oIgorI2luY2x1ZGUgIlNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uLmgiCiAjaW5jbHVk
ZSAiU3R5bGVJbWFnZS5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRl
IDxhbGdvcml0aG0+CkBAIC02ODAsNiArNjgxLDE3IEBAIHZvaWQgUmVuZGVyU3R5bGU6OmFwcGx5
VHJhbnNmb3JtKFRyYW5zZm8KICAgICB9CiB9CiAKK3ZvaWQgUmVuZGVyU3R5bGU6OnNldFBhZ2VT
Y2FsZVRyYW5zZm9ybShmbG9hdCBzY2FsZSkKK3sKKyAgICBpZiAoc2NhbGUgPT0gMSkKKyAgICAg
ICAgcmV0dXJuOworICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgdHJhbnNmb3JtOworICAgIHRyYW5z
Zm9ybS5vcGVyYXRpb25zKCkuYXBwZW5kKFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUo
c2NhbGUsIHNjYWxlLCBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEUpKTsKKyAgICBzZXRU
cmFuc2Zvcm0odHJhbnNmb3JtKTsKKyAgICBzZXRUcmFuc2Zvcm1PcmlnaW5YKExlbmd0aCgwLCBG
aXhlZCkpOworICAgIHNldFRyYW5zZm9ybU9yaWdpblkoTGVuZ3RoKDAsIEZpeGVkKSk7Cit9CisK
IHZvaWQgUmVuZGVyU3R5bGU6OnNldFRleHRTaGFkb3coU2hhZG93RGF0YSogdmFsLCBib29sIGFk
ZCkKIHsKICAgICBBU1NFUlQoIXZhbCB8fCAoIXZhbC0+c3ByZWFkKCkgJiYgdmFsLT5zdHlsZSgp
ID09IE5vcm1hbCkpOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCShy
ZXZpc2lvbiA3MDY1NikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTcxMyw2ICs3MTMsNyBAQCBwdWJsaWM6CiAKICAgICBlbnVtIEFw
cGx5VHJhbnNmb3JtT3JpZ2luIHsgSW5jbHVkZVRyYW5zZm9ybU9yaWdpbiwgRXhjbHVkZVRyYW5z
Zm9ybU9yaWdpbiB9OwogICAgIHZvaWQgYXBwbHlUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRy
aXgmLCBjb25zdCBJbnRTaXplJiBib3JkZXJCb3hTaXplLCBBcHBseVRyYW5zZm9ybU9yaWdpbiA9
IEluY2x1ZGVUcmFuc2Zvcm1PcmlnaW4pIGNvbnN0OworICAgIHZvaWQgc2V0UGFnZVNjYWxlVHJh
bnNmb3JtKGZsb2F0KTsKIAogICAgIGJvb2wgaGFzTWFzaygpIGNvbnN0IHsgcmV0dXJuIHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX21hc2suaGFzSW1hZ2UoKSB8fCByYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9tYXNrQm94SW1hZ2UuaGFzSW1hZ2UoKTsgfQogICAgIC8vIEVuZCBDU1MzIEdldHRlcnMK
SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MDcwMikKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzMgQEAKKzIwMTAtMTAtMjcgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBm
b3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4Mzg1IEFkZCBXZWJL
aXQgCisgICAgICAgIFNQSSB0byBzY2FsZSBhIFdlYlZpZXcKKyAgICAgICAgLWFuZCBjb3JyZXNw
b25kaW5nLQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODEwNzY2Nz4KKworICAgICAgICBUaGlz
IHBhdGNoIGFkZHMgU1BJIHRvIE1hYyBXZWJLaXQgdGhhdCBzY2FsZXMgdGhlIHBhZ2UgYnkgdGhl
IGdpdmVuIAorICAgICAgICBzY2FsZSBmYWN0b3IuCisKKyAgICAgICAgSW1wbGVtZW50IHNjYWxl
V2ViVmlldygpLCB3aGljaCB0ZWxscyBXZWJDb3JlOjpGcmFtZSB0byBzY2FsZSwgYW5kIAorICAg
ICAgICB2aWV3U2NhbGVGYWN0b3IoKSB3aGljaCByZXR1cm5zIHRoZSBjdXJyZW50IHNjYWxlIGZh
Y3Rvci4KKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VTY2FsZVdlYlZp
ZXcpOgorICAgICAgICAoV0tQYWdlR2V0Vmlld1NjYWxlRmFjdG9yKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzY2FsZVdlYlZpZXcpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp2aWV3
U2NhbGVGYWN0b3IpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2NhbGVXZWJWaWV3KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6dmlld1NjYWxlRmFjdG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluOgorCiAyMDEwLTEwLTI3ICBKZXNzaWUgQmVybGluICA8amJlcmxpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KSW5kZXg6IFdlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAkocmV2aXNpb24gNzA2NTYpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Myw2ICs4Myw3IEBAIFdlYlBhZ2VQcm94
eTo6V2ViUGFnZVByb3h5KFdlYlBhZ2VOYW1lc3AKICAgICAsIG1fYmFja0ZvcndhcmRMaXN0KFdl
YkJhY2tGb3J3YXJkTGlzdDo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV90ZXh0Wm9vbUZhY3Rvcigx
KQogICAgICwgbV9wYWdlWm9vbUZhY3RvcigxKQorICAgICwgbV92aWV3U2NhbGVGYWN0b3IoMSkK
ICAgICAsIG1fdmFsaWQodHJ1ZSkKICAgICAsIG1fY2xvc2VkKGZhbHNlKQogICAgICwgbV9wYWdl
SUQocGFnZUlEKQpAQCAtNTI3LDYgKzUyOCwxOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFn
ZUFuZFRleHRab29tRmFjCiAgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKG1fcGFnZVpvb21GYWN0b3IsIG1fdGV4dFpvb21GYWN0
b3IpLCBtX3BhZ2VJRCk7IAogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6c2NhbGVXZWJWaWV3KGRv
dWJsZSBzY2FsZSkKK3sKKyAgICBpZiAoIWlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKG1fdmlld1NjYWxlRmFjdG9yID09IHNjYWxlKQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX3ZpZXdTY2FsZUZhY3RvciA9IHNjYWxlOworICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2NhbGVXZWJWaWV3KHNjYWxlKSwgbV9wYWdlSUQpOworfQorCiB2b2lkIFdl
YlBhZ2VQcm94eTo6ZmluZFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgRmluZERpcmVjdGlv
biBmaW5kRGlyZWN0aW9uLCBGaW5kT3B0aW9ucyBmaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0
Y2hDb3VudCkKIHsKICAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZpbmRT
dHJpbmcoc3RyaW5nLCBmaW5kRGlyZWN0aW9uLCBmaW5kT3B0aW9ucywgbWF4TWF0Y2hDb3VudCks
IG1fcGFnZUlEKTsKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiA3MDY1
NikKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xODQsNiArMTg0LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UGFnZVpvb21GYWN0b3IoZG91
YmxlKTsKICAgICB2b2lkIHNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMoZG91YmxlIHBhZ2Vab29t
RmFjdG9yLCBkb3VibGUgdGV4dFpvb21GYWN0b3IpOwogCisgICAgdm9pZCBzY2FsZVdlYlZpZXco
ZG91YmxlIHNjYWxlKTsKKyAgICBkb3VibGUgdmlld1NjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1
cm4gbV92aWV3U2NhbGVGYWN0b3I7IH0KKwogICAgIC8vIEZpbmQuCiAgICAgdm9pZCBmaW5kU3Ry
aW5nKGNvbnN0IFN0cmluZyYsIEZpbmREaXJlY3Rpb24sIEZpbmRPcHRpb25zLCB1bnNpZ25lZCBt
YXhNYXRjaENvdW50KTsKICAgICB2b2lkIGhpZGVGaW5kVUkoKTsKQEAgLTM1OSw2ICszNjIsNyBA
QCBwcml2YXRlOgogCiAgICAgZG91YmxlIG1fdGV4dFpvb21GYWN0b3I7CiAgICAgZG91YmxlIG1f
cGFnZVpvb21GYWN0b3I7CisgICAgZG91YmxlIG1fdmlld1NjYWxlRmFjdG9yOwogICAgIAogICAg
IGJvb2wgbV92YWxpZDsKICAgICBib29sIG1fY2xvc2VkOwpJbmRleDogV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2UuY3BwCShyZXZpc2lvbiA3MDY1NikKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwOCw2ICsyMDgsMTYgQEAgdm9pZCBXS1Bh
Z2VTZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKFdLUAogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0
UGFnZUFuZFRleHRab29tRmFjdG9ycyhwYWdlWm9vbUZhY3RvciwgdGV4dFpvb21GYWN0b3IpOwog
fQogCit2b2lkIFdLUGFnZVNjYWxlV2ViVmlldyhXS1BhZ2VSZWYgcGFnZVJlZiwgZG91YmxlIHNj
YWxlKQoreworICAgIHRvSW1wbChwYWdlUmVmKS0+c2NhbGVXZWJWaWV3KHNjYWxlKTsKK30KKwor
ZG91YmxlIFdLUGFnZUdldFZpZXdTY2FsZUZhY3RvcihXS1BhZ2VSZWYgcGFnZVJlZikKK3sKKyAg
ICByZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT52aWV3U2NhbGVGYWN0b3IoKTsKK30KKwogdm9pZCBX
S1BhZ2VGaW5kU3RyaW5nKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBzdHJpbmcsIFdL
RmluZERpcmVjdGlvbiBmaW5kRGlyZWN0aW9uLCBXS0ZpbmRPcHRpb25zIGZpbmRPcHRpb25zLCB1
bnNpZ25lZCBtYXhNYXRjaENvdW50KQogewogICAgIHRvSW1wbChwYWdlUmVmKS0+ZmluZFN0cmlu
Zyh0b0ltcGwoc3RyaW5nKS0+c3RyaW5nKCksIHRvRmluZERpcmVjdGlvbihmaW5kRGlyZWN0aW9u
KSwgdG9GaW5kT3B0aW9ucyhmaW5kT3B0aW9ucyksIG1heE1hdGNoQ291bnQpOwpJbmRleDogV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmgJKHJldmlzaW9uIDcwNjU2KQorKysgV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzOCw2ICsyMzgsOSBAQCBXS19F
WFBPUlQgZG91YmxlIFdLUGFnZUdldFBhZ2Vab29tRmFjdG9yCiBXS19FWFBPUlQgdm9pZCBXS1Bh
Z2VTZXRQYWdlWm9vbUZhY3RvcihXS1BhZ2VSZWYgcGFnZSwgZG91YmxlIHpvb21GYWN0b3IpOwog
V0tfRVhQT1JUIHZvaWQgV0tQYWdlU2V0UGFnZUFuZFRleHRab29tRmFjdG9ycyhXS1BhZ2VSZWYg
cGFnZSwgZG91YmxlIHBhZ2Vab29tRmFjdG9yLCBkb3VibGUgdGV4dFpvb21GYWN0b3IpOwogCitX
S19FWFBPUlQgdm9pZCBXS1BhZ2VTY2FsZVdlYlZpZXcoV0tQYWdlUmVmIHBhZ2UsIGRvdWJsZSBz
Y2FsZSk7CitXS19FWFBPUlQgZG91YmxlIFdLUGFnZUdldFZpZXdTY2FsZUZhY3RvcihXS1BhZ2VS
ZWYgcGFnZSk7CisKIC8vIEZpbmQuCiBlbnVtIHsKICAgICBrV0tGaW5kRGlyZWN0aW9uRm9yd2Fy
ZCwKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiA3
MDY1NikKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MzcsNiArNDM3LDIyIEBAIHZvaWQgV2ViUGFnZTo6c2V0UGFnZUFuZFRleHRa
b29tRmFjdG9ycygKICAgICByZXR1cm4gZnJhbWUtPnNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMo
c3RhdGljX2Nhc3Q8ZmxvYXQ+KHBhZ2Vab29tRmFjdG9yKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHRl
eHRab29tRmFjdG9yKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6c2NhbGVXZWJWaWV3KGRvdWJsZSBz
Y2FsZSkKK3sKKyAgICBGcmFtZSogZnJhbWUgPSBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCk7Cisg
ICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgIGZyYW1lLT5zY2FsZVBhZ2Uoc2Nh
bGUpOworfQorCitkb3VibGUgV2ViUGFnZTo6dmlld1NjYWxlRmFjdG9yKCkgY29uc3QKK3sKKyAg
ICBGcmFtZSogZnJhbWUgPSBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCk7CisgICAgaWYgKCFmcmFt
ZSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgcmV0dXJuIGZyYW1lLT5wYWdlU2NhbGVGYWN0b3Io
KTsKK30KKwogdm9pZCBXZWJQYWdlOjppbnN0YWxsUGFnZU92ZXJsYXkoUGFzc093blB0cjxQYWdl
T3ZlcmxheT4gcGFnZU92ZXJsYXkpCiB7CiAgICAgbV9wYWdlT3ZlcmxheSA9IHBhZ2VPdmVybGF5
OwpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gNzA2NTYp
CisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE0NSw2ICsxNDUsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQYWdlWm9vbUZhY3Rvcihk
b3VibGUpOwogICAgIHZvaWQgc2V0UGFnZUFuZFRleHRab29tRmFjdG9ycyhkb3VibGUgcGFnZVpv
b21GYWN0b3IsIGRvdWJsZSB0ZXh0Wm9vbUZhY3Rvcik7CiAKKyAgICB2b2lkIHNjYWxlV2ViVmll
dyhkb3VibGUgc2NhbGUpOworICAgIGRvdWJsZSB2aWV3U2NhbGVGYWN0b3IoKSBjb25zdDsKKwog
ICAgIHZvaWQgc3RvcExvYWRpbmcoKTsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbgkocmV2aXNpb24gNzA2NTYpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSw4IEBAIG1lc3NhZ2Vz
IC0+IFdlYlBhZ2UgewogICAgIFNldFBhZ2Vab29tRmFjdG9yKGRvdWJsZSB6b29tRmFjdG9yKQog
ICAgIFNldFRleHRab29tRmFjdG9yKGRvdWJsZSB6b29tRmFjdG9yKQogCisgICAgU2NhbGVXZWJW
aWV3KGRvdWJsZSBzY2FsZSkKKwogICAgICMgRmluZC4KICAgICBGaW5kU3RyaW5nKFdURjo6U3Ry
aW5nIHN0cmluZywgdWludDMyX3QgZmluZERpcmVjdGlvbiwgdWludDMyX3QgZmluZE9wdGlvbnMs
IHVuc2lnbmVkIG1heE1hdGNoQ291bnQpCiAgICAgSGlkZUZpbmRVSSgpCkluZGV4OiBXZWJLaXQv
bWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNp
b24gNzA3MDIpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIwIEBACisyMDEwLTEwLTI3ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggZm9yIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODM4NSBBZGQgV2ViS2l0IAor
ICAgICAgICBTUEkgdG8gc2NhbGUgYSBXZWJWaWV3CisgICAgICAgIC1hbmQgY29ycmVzcG9uZGlu
Zy0KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgxMDc2Njc+CisKKyAgICAgICAgVGhpcyBwYXRj
aCBhZGRzIFNQSSB0byBNYWMgV2ViS2l0IHRoYXQgc2NhbGVzIHRoZSBwYWdlIGJ5IHRoZSBnaXZl
biAKKyAgICAgICAgc2NhbGUgZmFjdG9yLgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1t
OgorICAgICAgICAoLVtXZWJWaWV3IF9zY2FsZVdlYlZpZXc6XSk6CisgICAgICAgICgtW1dlYlZp
ZXcgX3ZpZXdTY2FsZUZhY3Rvcl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld1ByaXZhdGUu
aDoKKwogMjAxMC0xMC0yNiAgSmVubiBCcmFpdGh3YWl0ZSAgPGplbm5iQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEbWl0cnkgVGl0b3YuCkluZGV4OiBXZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQkocmV2aXNpb24gNzA2NTYpCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMTQ0LDYgKzE0NCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2VH
cm91cC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybU1vdXNlRXZlbnQuaD4KICNpbXBvcnQg
PFdlYkNvcmUvUHJvZ3Jlc3NUcmFja2VyLmg+CisjaW1wb3J0IDxXZWJDb3JlL1JlbmRlclZpZXcu
aD4KICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyV2lkZ2V0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jl
c291cmNlSGFuZGxlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNr
cy5oPgpAQCAtMjYxOCw2ICsyNjE5LDI0IEBAICsgKHZvaWQpX3JlZ2lzdGVyVVJMU2NoZW1lQXNT
ZWN1cmU6KE5TU3QKICAgICBTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc1NlY3Vy
ZShzY2hlbWUpOwogfQogCistICh2b2lkKV9zY2FsZVdlYlZpZXc6KGZsb2F0KXNjYWxlCit7Cisg
ICAgRnJhbWUqIGNvcmVGcmFtZSA9IFtzZWxmIF9tYWluQ29yZUZyYW1lXTsKKyAgICBpZiAoIWNv
cmVGcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgY29yZUZyYW1lLT5zY2FsZVBhZ2Uoc2Nh
bGUpOworfQorCistIChmbG9hdClfdmlld1NjYWxlRmFjdG9yCit7CisgICAgRnJhbWUqIGNvcmVG
cmFtZSA9IFtzZWxmIF9tYWluQ29yZUZyYW1lXTsKKyAgICBpZiAoIWNvcmVGcmFtZSkKKyAgICAg
ICAgcmV0dXJuIDE7CisKKyAgICByZXR1cm4gY29yZUZyYW1lLT5wYWdlU2NhbGVGYWN0b3IoKTsK
K30KKwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gX1dlYlNhZmVGb3J3YXJkZXIKSW5kZXg6IFdl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCShyZXZpc2lvbiA3MDY1NikKKysrIFdlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NDIsNiArNTQy
LDkgQEAgQ291bGQgYmUgd29ydGggYWRkaW5nIHRvIHRoZSBBUEkuCiArICh2b2lkKV9zZXREb21h
aW5SZWxheGF0aW9uRm9yYmlkZGVuOihCT09MKWZvcmJpZGRlbiBmb3JVUkxTY2hlbWU6KE5TU3Ry
aW5nICopc2NoZW1lOwogKyAodm9pZClfcmVnaXN0ZXJVUkxTY2hlbWVBc1NlY3VyZTooTlNTdHJp
bmcgKilzY2hlbWU7CiAKKy0gKHZvaWQpX3NjYWxlV2ViVmlldzooZmxvYXQpc2NhbGU7CistIChm
bG9hdClfdmlld1NjYWxlRmFjdG9yOworCiBAZW5kCiAKIEBpbnRlcmZhY2UgV2ViVmlldyAoV2Vi
Vmlld1ByaW50aW5nUHJpdmF0ZSkK
</data>
<flag name="review"
          id="62262"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>