<?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>95274</bug_id>
          
          <creation_ts>2012-08-28 18:01:57 -0700</creation_ts>
          <short_desc>REGRESSION: Not sending NPP_SetWindow is causing Flash to not throttle itself</short_desc>
          <delta_ts>2012-08-30 07:25:06 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>ap</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>706944</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-08-28 18:01:57 -0700</bug_when>
    <thetext>REGRESSION:  Flash no longer sends throttle events

Many optimizations we&apos;ve made recently in WebKit2 and the PluginProcess were to minimize the number of setWindow calls we make to the plug-in.

Flash uses an empty clip rect vs. a non-empty clip rect to decide when to send throttle events to the plug-in.

Whenever the clip rect *would* change between empty and non-empty we need to call setWindow.

A simple test plug-in to monitor throttle events can be found at http://inflagrantedelicto.memoryspiral.com/2012/06/as3-quickie-monitor-throttle-events/

In radar as &lt;rdar://problem/12133021&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706945</commentid>
    <comment_count>1</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-08-28 18:02:43 -0700</bug_when>
    <thetext>I plan to explore regression tests tomorrow A.M. but - for now - attaching the proposed fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706948</commentid>
    <comment_count>2</comment_count>
      <attachid>161106</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-08-28 18:03:37 -0700</bug_when>
    <thetext>Created attachment 161106
Proposed fix (no ChangeLog or tests yet)

Asking for review to vet the approach, even though it&apos;s known to be missing a ChangeLog and regression tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707082</commentid>
    <comment_count>3</comment_count>
      <attachid>161106</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-08-28 21:58:39 -0700</bug_when>
    <thetext>Comment on attachment 161106
Proposed fix (no ChangeLog or tests yet)

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

&gt; Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.h:149
&gt; +    void callSetWindow(bool visible = true);

No real reason to put this behavior into the same function and have the awkward construction of a function with a boolean with a default value. There could just be a new function that calls NPP_SetWindow making things invisible. There’s no logic shared between these two cases. Both could be called by separate names in NetscapePlugin::windowVisibilityChanged and it’d probably read more clearly that way.

&gt; Source/WebKit2/WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm:917
&gt; +void NetscapePlugin::windowVisibilityChanged(bool visible)

Seems a little strange that platformGeometryDidChange and platformVisibilityDidChange are not being touched here.

&gt; Source/WebKit2/WebProcess/Plugins/PluginView.cpp:793
&gt; +    // FIXME: This clip rect isn&apos;t correct.
&gt; +    // But it is still important distinguish between empty and non-empty rects so we can notify the plug-in when
&gt; +    // it becomes invisible.
&gt; +    IntRect clipRect = clipRectInWindowCoordinates();
&gt; +    if (!clipRect.isEmpty())
&gt; +        clipRect = boundsRect();

I don’t see the part of the code that responds to this in geometryDidChange.

If only the boolean of whether the rect is empty is correct, then can we change the argument to be a boolean for clarity rather than passing a known-to-be-incorrect rect?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707493</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-08-29 08:47:35 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 161106 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=161106&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.h:149
&gt; &gt; +    void callSetWindow(bool visible = true);
&gt; 
&gt; No real reason to put this behavior into the same function and have the awkward construction of a function with a boolean with a default value. There could just be a new function that calls NPP_SetWindow making things invisible. There’s no logic shared between these two cases. Both could be called by separate names in NetscapePlugin::windowVisibilityChanged and it’d probably read more clearly that way.

I think this is a great suggestion.

&gt; &gt; Source/WebKit2/WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm:917
&gt; &gt; +void NetscapePlugin::windowVisibilityChanged(bool visible)
&gt; 
&gt; Seems a little strange that platformGeometryDidChange and platformVisibilityDidChange are not being touched here.

platformGeometryDidChange() is for platform specific code that needs to run when the geometry changes.  But the change to call setWindow() at the right times is a cross-platform concern.

platformVisibilityDidChange() is about platform specific code that runs when visibilityDidChange() is called...  but it&apos;s important to not confuse &quot;visibility changed&quot; and &quot;window visibility changed&quot;

Window visibility is whether or not the window hosting the view is minimized or goes to a background tab, and that is the important case to capture here.

&quot;visibility&quot; is visibility in DOM API terms - such as &quot;visibility = hidden&quot; - and is not relevant to this patch.

&gt; &gt; Source/WebKit2/WebProcess/Plugins/PluginView.cpp:793
&gt; &gt; +    // FIXME: This clip rect isn&apos;t correct.
&gt; &gt; +    // But it is still important distinguish between empty and non-empty rects so we can notify the plug-in when
&gt; &gt; +    // it becomes invisible.
&gt; &gt; +    IntRect clipRect = clipRectInWindowCoordinates();
&gt; &gt; +    if (!clipRect.isEmpty())
&gt; &gt; +        clipRect = boundsRect();
&gt; 
&gt; I don’t see the part of the code that responds to this in geometryDidChange.

The code that responds to this is in geometryDidChange is:

    if (pluginSize == m_pluginSize &amp;&amp; m_clipRect == clipRect &amp;&amp; m_pluginToRootViewTransform == pluginToRootViewTransform) {
        // Nothing to do.
        return;
    }

Currently, we always pass the incorrect clip rect of {0, 0, pluginWidth, pluginHeight}

With this patch we will pass two possible rects.  Either that incorrect clip rect if *any* of the plugin is visible, or a correct and empty clip rect if the plugin is entirely obscured.

Switching between the empty rect and the non-empty rect is what triggers the appropriate branch in geometryDidChange.

&gt; If only the boolean of whether the rect is empty is correct, then can we change the argument to be a boolean for clarity rather than passing a known-to-be-incorrect rect?

It is true - as the FIXME expresses - that right now we&apos;re just flipping between an empty and non-empty clip rect.  But as the original FIXME suggests we do actually desire to always pass the correct clip rect and - in fact - plug-ins can be made more efficient if we pass the correct one along.  Simon and Anders both agree on this point.

I will file a followup bug to actually track that work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707622</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-08-29 10:41:14 -0700</bug_when>
    <thetext>I&apos;ve made some changes based on Darin&apos;s feedback and am getting some tests up and running, so removing r?

Testing the scrolling behavior is easy... testing the window minimizing/background tabbing behavior is requiring quite a bit of harness infrastructute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707759</commentid>
    <comment_count>6</comment_count>
      <attachid>161289</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-08-29 12:46:54 -0700</bug_when>
    <thetext>Created attachment 161289
Patch with test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707806</commentid>
    <comment_count>7</comment_count>
      <attachid>161289</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-08-29 13:35:18 -0700</bug_when>
    <thetext>Comment on attachment 161289
Patch with test

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

&gt; LayoutTests/platform/mac-wk2/plugins/npp-setwindow-called-on-scroll.html:41
&gt; +	if (msg == windowWasSetExpectedResults[windowWasSetCount])
&gt; +		testPassed(&quot;NPP_SetWindow called with expected parameters&quot;);
&gt; +	else
&gt; +		testFailed(&quot;NPP_SetWindow called with: &quot; + msg + &quot; but we expected &quot; + windowWasSetExpectedResults[windowWasSetCount] + &quot;... Maybe bug 95362 has been fixed?&quot;);
&gt; +
&gt; +	++windowWasSetCount;	
&gt; +	if (windowWasSetCommands[windowWasSetCount])
&gt; +		eval(windowWasSetCommands[windowWasSetCount]);
&gt; +}

Tabs?

&gt; LayoutTests/platform/mac-wk2/plugins/npp-setwindow-called-on-scroll.html:46
&gt; +	if (window.testRunner)
&gt; +		testRunner.notifyDone();

More tabs?

&gt; Tools/DumpRenderTree/TestNetscapePlugIn/Tests/LogNPPSetWindow.cpp:2
&gt; + * Copyright (C) 2011 Apple Inc. All rights reserved.

It&apos;s 2012 buddy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707834</commentid>
    <comment_count>8</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-08-29 13:58:37 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/127047</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708596</commentid>
    <comment_count>9</comment_count>
      <attachid>161289</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-08-30 07:25:06 -0700</bug_when>
    <thetext>Comment on attachment 161289
Patch with test

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

&gt; Source/WebKit2/WebProcess/Plugins/PluginView.cpp:789
&gt; +    // But it is still important distinguish between empty and non-empty rects so we can notify the plug-in when it becomes invisible.

missing word here: &quot;important distinguish&quot; should be &quot;important to distinguish&quot;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161106</attachid>
            <date>2012-08-28 18:03:37 -0700</date>
            <delta_ts>2012-08-29 12:46:54 -0700</delta_ts>
            <desc>Proposed fix (no ChangeLog or tests yet)</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>4128</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQppbmRleCBlYjZiODE5
Li45OGUzMjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9X
S1ZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1t
CkBAIC0xOTM3LDYgKzE5MzcsNyBAQCAtICh2b2lkKXZpZXdEaWRNb3ZlVG9XaW5kb3cKIAogICAg
ICAgICBbc2VsZiBfYWNjZXNzaWJpbGl0eVJlZ2lzdGVyVUlQcm9jZXNzVG9rZW5zXTsKICAgICB9
IGVsc2UgeworICAgICAgICBbc2VsZiBfdXBkYXRlV2luZG93VmlzaWJpbGl0eV07CiAgICAgICAg
IF9kYXRhLT5fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eTo6Vmlld0lzVmlz
aWJsZSk7CiAgICAgICAgIF9kYXRhLT5fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQ
cm94eTo6Vmlld1dpbmRvd0lzQWN0aXZlIHwgV2ViUGFnZVByb3h5OjpWaWV3SXNJbldpbmRvdyk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCmluZGV4IGIyMDc0MzIuLmQ0MmJkYzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luLmNwcApAQCAtNDg0LDggKzQ4NCwyMCBAQCBOUEVycm9yIE5ldHNj
YXBlUGx1Z2luOjpOUFBfU2V0VmFsdWUoTlBOVmFyaWFibGUgdmFyaWFibGUsIHZvaWQgKnZhbHVl
KQogICAgIHJldHVybiBtX3BsdWdpbk1vZHVsZS0+cGx1Z2luRnVuY3MoKS5zZXR2YWx1ZSgmbV9u
cHAsIHZhcmlhYmxlLCB2YWx1ZSk7CiB9CiAKLXZvaWQgTmV0c2NhcGVQbHVnaW46OmNhbGxTZXRX
aW5kb3coKQotewordm9pZCBOZXRzY2FwZVBsdWdpbjo6Y2FsbFNldFdpbmRvdyhib29sIHZpc2li
bGUpCit7CisgICAgaWYgKCF2aXNpYmxlKSB7CisgICAgICAgIE5QV2luZG93IGludmlzaWJsZVdp
bmRvdyA9IG1fbnBXaW5kb3c7CisgICAgICAgIGludmlzaWJsZVdpbmRvdy53aW5kb3cgPSAwOwor
ICAgICAgICBpbnZpc2libGVXaW5kb3cuY2xpcFJlY3QudG9wID0gMDsKKyAgICAgICAgaW52aXNp
YmxlV2luZG93LmNsaXBSZWN0LmxlZnQgPSAwOworICAgICAgICBpbnZpc2libGVXaW5kb3cuY2xp
cFJlY3QuYm90dG9tID0gMDsKKyAgICAgICAgaW52aXNpYmxlV2luZG93LmNsaXBSZWN0LnJpZ2h0
ID0gMDsKKyAgICAgICAgTlBQX1NldFdpbmRvdygmaW52aXNpYmxlV2luZG93KTsKKyAgICAgICAg
bV9oYXNDYWxsZWRTZXRXaW5kb3cgPSB0cnVlOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IAogICAgIGlmICh3YW50c1BsdWdpblJlbGF0aXZlTlBXaW5kb3dDb29yZGluYXRlcygpKSB7CiAg
ICAgICAgIG1fbnBXaW5kb3cueCA9IDA7CiAgICAgICAgIG1fbnBXaW5kb3cueSA9IDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZVBsdWdpbi5oCmluZGV4IDg1OTE4OTIuLjk2NzI5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpbi5oCkBAIC0xNDYsNyArMTQ2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBOZXRzY2Fw
ZVBsdWdpbihQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z2luTW9kdWxlPiBwbHVnaW5Nb2R1bGUpOwog
Ci0gICAgdm9pZCBjYWxsU2V0V2luZG93KCk7CisgICAgdm9pZCBjYWxsU2V0V2luZG93KGJvb2wg
dmlzaWJsZSA9IHRydWUpOwogICAgIGJvb2wgc2hvdWxkTG9hZFNyY1VSTCgpOwogICAgIE5ldHNj
YXBlUGx1Z2luU3RyZWFtKiBzdHJlYW1Gcm9tSUQodWludDY0X3Qgc3RyZWFtSUQpOwogICAgIHZv
aWQgc3RvcEFsbFN0cmVhbXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5NYWMubW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2luTWFjLm1t
CmluZGV4IDhhNDQ3ZGYuLjg5MzY3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5NYWMubW0KKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdp
bk1hYy5tbQpAQCAtOTE0LDkgKzkxNCw5IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW46OndpbmRvd0Fu
ZFZpZXdGcmFtZXNDaGFuZ2VkKGNvbnN0IEludFJlY3QmIHdpbmRvd0ZyYW1lSW5TY3JlCiAgICAg
fQogfQogICAgIAotdm9pZCBOZXRzY2FwZVBsdWdpbjo6d2luZG93VmlzaWJpbGl0eUNoYW5nZWQo
Ym9vbCkKK3ZvaWQgTmV0c2NhcGVQbHVnaW46OndpbmRvd1Zpc2liaWxpdHlDaGFuZ2VkKGJvb2wg
dmlzaWJsZSkKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50LgorICAgIGNhbGxTZXRXaW5kb3co
dmlzaWJsZSk7CiB9CiAKIHVpbnQ2NF90IE5ldHNjYXBlUGx1Z2luOjpwbHVnaW5Db21wbGV4VGV4
dElucHV0SWRlbnRpZmllcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggZDA3ZjhiNy4uNWNhNDkyYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtNDEw
LDcgKzQxMCw3IEBAIHZvaWQgUGx1Z2luVmlldzo6c2V0V2luZG93SXNWaXNpYmxlKGJvb2wgd2lu
ZG93SXNWaXNpYmxlKQogICAgIGlmICghbV9wbHVnaW4pCiAgICAgICAgIHJldHVybjsKIAotICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQuCisgICAgbV9wbHVnaW4tPndpbmRvd1Zpc2liaWxpdHlDaGFu
Z2VkKHdpbmRvd0lzVmlzaWJsZSk7CiB9CiAKIHZvaWQgUGx1Z2luVmlldzo6c2V0V2luZG93SXNG
b2N1c2VkKGJvb2wgd2luZG93SXNGb2N1c2VkKQpAQCAtNzg1LDggKzc4NSwxMyBAQCB2b2lkIFBs
dWdpblZpZXc6OnZpZXdHZW9tZXRyeURpZENoYW5nZSgpCiAgICAgdHJhbnNmb3JtLnRyYW5zbGF0
ZShzY2FsZWRMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlcy54KCksIHNjYWxlZExvY2F0aW9u
SW5Sb290Vmlld0Nvb3JkaW5hdGVzLnkoKSk7CiAgICAgdHJhbnNmb3JtLnNjYWxlKHBhZ2VTY2Fs
ZUZhY3Rvcik7CiAKLSAgICAvLyBGSVhNRTogVGhlIGNsaXAgcmVjdCBpc24ndCBjb3JyZWN0Lgot
ICAgIEludFJlY3QgY2xpcFJlY3QgPSBib3VuZHNSZWN0KCk7CisgICAgLy8gRklYTUU6IFRoaXMg
Y2xpcCByZWN0IGlzbid0IGNvcnJlY3QuCisgICAgLy8gQnV0IGl0IGlzIHN0aWxsIGltcG9ydGFu
dCBkaXN0aW5ndWlzaCBiZXR3ZWVuIGVtcHR5IGFuZCBub24tZW1wdHkgcmVjdHMgc28gd2UgY2Fu
IG5vdGlmeSB0aGUgcGx1Zy1pbiB3aGVuCisgICAgLy8gaXQgYmVjb21lcyBpbnZpc2libGUuCisg
ICAgSW50UmVjdCBjbGlwUmVjdCA9IGNsaXBSZWN0SW5XaW5kb3dDb29yZGluYXRlcygpOworICAg
IGlmICghY2xpcFJlY3QuaXNFbXB0eSgpKQorICAgICAgICBjbGlwUmVjdCA9IGJvdW5kc1JlY3Qo
KTsKKyAgICAgICAgCiAgICAgbV9wbHVnaW4tPmdlb21ldHJ5RGlkQ2hhbmdlKHNpemUoKSwgY2xp
cFJlY3QsIHRyYW5zZm9ybSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161289</attachid>
            <date>2012-08-29 12:46:54 -0700</date>
            <delta_ts>2012-08-30 07:25:06 -0700</delta_ts>
            <desc>Patch with test</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>18073</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5OGMzYjc0Li40ODc3MjZmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDgt
MjkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJ
T046IE5vdCBzZW5kaW5nIE5QUF9TZXRXaW5kb3cgaXMgY2F1c2luZyBGbGFzaCB0byBub3QgdGhy
b3R0bGUgaXRzZWxmCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjEzMzAyMT4gYW5kIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTI3NAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9wbHVn
aW5zL25wcC1zZXR3aW5kb3ctY2FsbGVkLW9uLXNjcm9sbC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvcGx1Z2lucy9ucHAtc2V0d2luZG93LWNhbGxlZC1v
bi1zY3JvbGwuaHRtbDogQWRkZWQuCisKIDIwMTItMDgtMjggIFRoaWFnbyBNYXJjb3MgUC4gU2Fu
dG9zICA8dGhpYWdvLnNhbnRvc0BpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0gR2FyZGVuaW5n
IG9mIHRoZSBXSzIgRGVidWcgQm90IGZhaWxpbmcgdGVzdHMKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9ucHAtc2V0d2luZG93LWNhbGxlZC1vbi1zY3Jv
bGwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL25w
cC1zZXR3aW5kb3ctY2FsbGVkLW9uLXNjcm9sbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uYzFkMzc2YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9ucHAtc2V0d2luZG93LWNhbGxlZC1vbi1zY3Jv
bGwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK2EgZGl2CisKK2Fub3RoZXIgZGl2CitU
ZXN0cyB0aGF0IG5ldHNjYXBlIHBsdWdpbnMgZ2V0IGFwcHJvcHJpYXRlIGNhbGxzIHRvIE5QUF9T
ZXRXaW5kb3cgd2hlbiBzY3JvbGxlZCBvdXQgb2YgdmlldyBvciBiYWNrIGluIHRvIHZpZXcuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIE5QUF9TZXRXaW5kb3cgY2FsbGVk
IHdpdGggZXhwZWN0ZWQgcGFyYW1ldGVycworUEFTUyBOUFBfU2V0V2luZG93IGNhbGxlZCB3aXRo
IGV4cGVjdGVkIHBhcmFtZXRlcnMKK1BBU1MgTlBQX1NldFdpbmRvdyBjYWxsZWQgd2l0aCBleHBl
Y3RlZCBwYXJhbWV0ZXJzCitQQVNTIE5QUF9TZXRXaW5kb3cgY2FsbGVkIHdpdGggZXhwZWN0ZWQg
cGFyYW1ldGVycworUEFTUyBOUFBfU2V0V2luZG93IGNhbGxlZCB3aXRoIGV4cGVjdGVkIHBhcmFt
ZXRlcnMKK1BBU1MgTlBQX1NldFdpbmRvdyBjYWxsZWQgd2l0aCBleHBlY3RlZCBwYXJhbWV0ZXJz
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9ucHAt
c2V0d2luZG93LWNhbGxlZC1vbi1zY3JvbGwuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azIvcGx1Z2lucy9ucHAtc2V0d2luZG93LWNhbGxlZC1vbi1zY3JvbGwuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTdlMmI2Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL25wcC1zZXR3aW5kb3ctY2FsbGVk
LW9uLXNjcm9sbC5odG1sCkBAIC0wLDAgKzEsNjIgQEAKKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKK30KKword2luZG93LnJlc2l6ZVRv
KDIwMCw1MDApOworCit2YXIgd2luZG93V2FzU2V0Q291bnQgPSAwOworCit2YXIgd2luZG93V2Fz
U2V0Q29tbWFuZHMgPSBbCisJbnVsbCwgLy8gVGhlIHBsdWctaW4gZ2V0cyBzZXRXaW5kb3cgY2Fs
bGVkIGV4cGxpY2l0bHkgZHVyaW5nIGluaXRpYWxpemF0aW9uLCB0aGUgY2xpcCByZWN0IHNob3Vs
ZCBiZSBlbXB0eS4KKwludWxsLCAvLyBUaGUgcGx1Zy1pbiBnZXRzIHNldFdpbmRvdyBjYWxsZWQg
ZHVyaW5nIGluaXRpYWxpemF0aW9uIGFzIGEgc2lkZSBlZmZlY3Qgb2YgYmVpbmcgdG9sZCBpdHMg
d2luZG93IGlzIHZpc2libGUsIHRoZSBjbGlwIHJlY3Qgc2hvdWxkIGJlIGVtcHR5LgorCSJ3aW5k
b3cuc2Nyb2xsVG8oMCwgNzAwKSIsICAvLyBUaGlzIHNob3VsZCBzY3JvbGwgdGhlIHBsdWctaW4g
cGFydGlhbGx5IGludG8gdmlldywgdGhlIGNsaXAgcmVjdCBzaG91bGQgYmUgbm9uLWVtcHR5Lgor
CSJ3aW5kb3cuc2Nyb2xsVG8oMCwgMCkiLCAgICAvLyBUaGlzIHNob3VsZCBzY3JvbGwgdGhlIHBs
dWctaW4gYmFjayBvdXQgb2YgdmlldywgdGhlIGNsaXAgcmVjdCBzaG91bGQgYmUgZW1wdHkuCisJ
IndpbmRvdy5zY3JvbGxUbygwLCAxMDAwKSIsIC8vIFRoaXMgc2hvdWxkIHNjcm9sbCB0aGUgcGx1
Zy1pbiBmdWxseSBpbnRvIHZpZXcsIHRoZSBjbGlwIHJlY3Qgc2hvdWxkIGJlIG5vbi1lbXB0eS4K
Kwkid2luZG93LnNjcm9sbFRvKDAsIDEzMDApIiwgLy8gVGhpcyBzaG91bGQgc2Nyb2xsIHRoZSBw
bHVnLWluIGJhY2sgb3V0IG9mIHZpZXcsIHRoZSBjbGlwIHJlY3Qgc2hvdWxkIGJlIGVtcHR5Lgor
CSJmaW5pc2hUZXN0KCkiXTsKKworLy8gTm90ZTogVGhlc2UgZXhwZWN0ZWQgcmVzdWx0cyB3aWxs
IGNoYW5nZSBvbmNlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTI3
NCBpcyByZXNvbHZlZC4KK3ZhciB3aW5kb3dXYXNTZXRFeHBlY3RlZFJlc3VsdHMgPSBbCisJIk5Q
UF9TZXRXaW5kb3c6IE5VTEwgd2luZG93LCBSZWN0IHswLCAwLCAyMDAsIDEwMH0sIENsaXAgUmVj
dCB7MCwgMCwgMCwgMH0sIFR5cGUgMiIsIAorCSJOUFBfU2V0V2luZG93OiBOVUxMIHdpbmRvdywg
UmVjdCB7MCwgMCwgMjAwLCAxMDB9LCBDbGlwIFJlY3QgezAsIDAsIDAsIDB9LCBUeXBlIDIiLCAK
KwkiTlBQX1NldFdpbmRvdzogTlVMTCB3aW5kb3csIFJlY3QgezAsIDAsIDIwMCwgMTAwfSwgQ2xp
cCBSZWN0IHswLCAwLCAyMDAsIDEwMH0sIFR5cGUgMiIsIAorCSJOUFBfU2V0V2luZG93OiBOVUxM
IHdpbmRvdywgUmVjdCB7MCwgMCwgMjAwLCAxMDB9LCBDbGlwIFJlY3QgezAsIDAsIDAsIDB9LCBU
eXBlIDIiLCAKKwkiTlBQX1NldFdpbmRvdzogTlVMTCB3aW5kb3csIFJlY3QgezAsIDAsIDIwMCwg
MTAwfSwgQ2xpcCBSZWN0IHswLCAwLCAyMDAsIDEwMH0sIFR5cGUgMiIsIAorCSJOUFBfU2V0V2lu
ZG93OiBOVUxMIHdpbmRvdywgUmVjdCB7MCwgMCwgMjAwLCAxMDB9LCBDbGlwIFJlY3QgezAsIDAs
IDAsIDB9LCBUeXBlIDIiXTsKKwkKK2Z1bmN0aW9uIHdpbmRvd1dhc1NldChtc2cpCit7CisJaWYg
KG1zZyA9PSB3aW5kb3dXYXNTZXRFeHBlY3RlZFJlc3VsdHNbd2luZG93V2FzU2V0Q291bnRdKQor
CQl0ZXN0UGFzc2VkKCJOUFBfU2V0V2luZG93IGNhbGxlZCB3aXRoIGV4cGVjdGVkIHBhcmFtZXRl
cnMiKTsKKwllbHNlCisJCXRlc3RGYWlsZWQoIk5QUF9TZXRXaW5kb3cgY2FsbGVkIHdpdGg6ICIg
KyBtc2cgKyAiIGJ1dCB3ZSBleHBlY3RlZCAiICsgd2luZG93V2FzU2V0RXhwZWN0ZWRSZXN1bHRz
W3dpbmRvd1dhc1NldENvdW50XSArICIuLi4gTWF5YmUgYnVnIDk1MzYyIGhhcyBiZWVuIGZpeGVk
PyIpOworCisJKyt3aW5kb3dXYXNTZXRDb3VudDsJCisJaWYgKHdpbmRvd1dhc1NldENvbW1hbmRz
W3dpbmRvd1dhc1NldENvdW50XSkKKwkJZXZhbCh3aW5kb3dXYXNTZXRDb21tYW5kc1t3aW5kb3dX
YXNTZXRDb3VudF0pOworfQorCitmdW5jdGlvbiBmaW5pc2hUZXN0KCkKK3sKKwlpZiAod2luZG93
LnRlc3RSdW5uZXIpCisJCXRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorCis8L3NjcmlwdD4K
KworPC9oZWFkPgorPGJvZHkgc3R5bGU9Im1hcmdpbjowIDAgMCAwOyI+Cis8ZGl2IHN0eWxlPSJ3
aWR0aDoyMDBweDsgaGVpZ2h0OjEwMDBweDsgYmFja2dyb3VuZC1jb2xvcjpyZWQ7Ij5hIGRpdjwv
ZGl2PgorPGVtYmVkIGlkPSJUZXN0RWxlbWVudCIgdHlwZT0iYXBwbGljYXRpb24veC13ZWJraXQt
dGVzdC1uZXRzY2FwZSIgdGVzdD0ibG9nLW5wcC1zZXQtd2luZG93IiBzdHlsZT0id2lkdGg6MjAw
cHg7IGhlaWdodDoxMDBweDsgYmFja2dyb3VuZC1jb2xvcjp5ZWxsb3c7Ij48L2VtYmVkPgorPGRp
diBzdHlsZT0id2lkdGg6MjAwcHg7IGhlaWdodDoxMDAwcHg7IGJhY2tncm91bmQtY29sb3I6cmVk
OyI+YW5vdGhlciBkaXY8L2Rpdj4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8L2JvZHk+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMg
dGhhdCBuZXRzY2FwZSBwbHVnaW5zIGdldCBhcHByb3ByaWF0ZSBjYWxscyB0byBOUFBfU2V0V2lu
ZG93IHdoZW4gc2Nyb2xsZWQgb3V0IG9mIHZpZXcgb3IgYmFjayBpbiB0byB2aWV3LiIpOworPC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggNmQ2ZmU2Zi4uMTQ3ZDUxYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDMwIEBACisyMDEyLTA4LTI5ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4K
KworICAgICAgICBSRUdSRVNTSU9OOiBOb3Qgc2VuZGluZyBOUFBfU2V0V2luZG93IGlzIGNhdXNp
bmcgRmxhc2ggdG8gbm90IHRocm90dGxlIGl0c2VsZgorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MTIxMzMwMjE+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUy
NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRp
dGlvbmFsIGluZm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2FjaCwgcmF0aW9u
YWxlLiBQbGVhc2UgYWRkIHBlci1mdW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAgKC1bV0tW
aWV3IHZpZXdEaWRNb3ZlVG9XaW5kb3ddKTogUHJldmlvdXNseSB3ZSdkIG9ubHkgdXBkYXRlIHdp
bmRvdyB2aXNpYmlsaXR5IHdoZW4gdGhlIHdpbmRvdyBpcyBoaWRkZW4uCisgICAgICAgICAgTm93
IHdlIGFsc28gdXBkYXRlIHdpbmRvdyB2aXNpYmlsaXR5IHdoZW4gdGhlIHdpbmRvdyBpcyBzaG93
bi4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpjYWxsU2V0V2luZG93SW52
aXNpYmxlKTogQ2FsbCBzZXQgd2luZG93IHdpdGggYSBtYW51ZmFjdHVyZWQgZW1wdHkgY2xpcCBy
ZWN0IHRvIHRlbGwKKyAgICAgICAgICB0aGUgcGx1Zy1pbiB0aGF0IGl0IGlzIGNvbXBsZXRlIGhp
ZGRlbi4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlUGx1Z2luLmg6CisgICAgICAgIChOZXRzY2FwZVBsdWdpbik6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1hYy5t
bToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OndpbmRvd1Zpc2liaWxpdHlDaGFu
Z2VkKTogQ2FsbCAiY2FsbFNldFdpbmRvdyIgb3IgImNhbGxTZXRXaW5kb3dJbnZpc2libGUiIGFz
IGFwcHJvcHJpYXRlLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpzZXRXaW5kb3dJc1Zpc2libGUpOiBU
ZWxsIHRoZSBwbHVnaW4gdGhhdCBpdHMgdmlzaWJpbGl0eSBjaGFuZ2VkLgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5WaWV3Ojp2aWV3R2VvbWV0cnlEaWRDaGFuZ2UpOiBHcmFiIGEgY2xpcCByZWN0
IHRoYXQgLSBhbHRob3VnaCBpbmNvcnJlY3QgLSBhdCBsZWFzdCBpcyBjb3JyZWN0IGlmCisgICAg
ICAgICAgdGhlIFBsdWdpblZpZXcgaXMgY29tcGxldGVseSBoaWRkZW4uCisKIDIwMTItMDgtMjgg
IENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAg
ICBbRUZMXSBXZWJLaXQgRUZMIHVwZGF0ZXMgdmlldyBvbiBIVFRQIDIwNCByZXNwb25zZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4IGViNmI4MTkuLjk4
ZTMyNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KQEAg
LTE5MzcsNiArMTkzNyw3IEBAIC0gKHZvaWQpdmlld0RpZE1vdmVUb1dpbmRvdwogCiAgICAgICAg
IFtzZWxmIF9hY2Nlc3NpYmlsaXR5UmVnaXN0ZXJVSVByb2Nlc3NUb2tlbnNdOwogICAgIH0gZWxz
ZSB7CisgICAgICAgIFtzZWxmIF91cGRhdGVXaW5kb3dWaXNpYmlsaXR5XTsKICAgICAgICAgX2Rh
dGEtPl9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5OjpWaWV3SXNWaXNpYmxl
KTsKICAgICAgICAgX2RhdGEtPl9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5
OjpWaWV3V2luZG93SXNBY3RpdmUgfCBXZWJQYWdlUHJveHk6OlZpZXdJc0luV2luZG93KTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKaW5kZXggYjIwNzQzMi4uZjc2NGVlNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW4uY3BwCkBAIC01MTAsNiArNTEwLDIwIEBAIHZvaWQgTmV0c2NhcGVQbHVn
aW46OmNhbGxTZXRXaW5kb3coKQogICAgIG1faGFzQ2FsbGVkU2V0V2luZG93ID0gdHJ1ZTsKIH0K
IAordm9pZCBOZXRzY2FwZVBsdWdpbjo6Y2FsbFNldFdpbmRvd0ludmlzaWJsZSgpCit7CisgICAg
TlBXaW5kb3cgaW52aXNpYmxlV2luZG93ID0gbV9ucFdpbmRvdzsKKyAgICAKKyAgICBpbnZpc2li
bGVXaW5kb3cud2luZG93ID0gMDsKKyAgICBpbnZpc2libGVXaW5kb3cuY2xpcFJlY3QudG9wID0g
MDsKKyAgICBpbnZpc2libGVXaW5kb3cuY2xpcFJlY3QubGVmdCA9IDA7CisgICAgaW52aXNpYmxl
V2luZG93LmNsaXBSZWN0LmJvdHRvbSA9IDA7CisgICAgaW52aXNpYmxlV2luZG93LmNsaXBSZWN0
LnJpZ2h0ID0gMDsKKyAgICAKKyAgICBOUFBfU2V0V2luZG93KCZpbnZpc2libGVXaW5kb3cpOwor
ICAgIG1faGFzQ2FsbGVkU2V0V2luZG93ID0gdHJ1ZTsKK30KKwogYm9vbCBOZXRzY2FwZVBsdWdp
bjo6c2hvdWxkTG9hZFNyY1VSTCgpCiB7CiAgICAgLy8gQ2hlY2sgaWYgd2Ugc2hvdWxkIGNhbmNl
bCB0aGUgbG9hZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAppbmRleCA4NTkxODkyLi41ZjkzYzU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW4uaApAQCAtMTQ3LDYgKzE0Nyw3IEBAIHByaXZhdGU6CiAgICAg
TmV0c2NhcGVQbHVnaW4oUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdpbk1vZHVsZT4gcGx1Z2luTW9k
dWxlKTsKIAogICAgIHZvaWQgY2FsbFNldFdpbmRvdygpOworICAgIHZvaWQgY2FsbFNldFdpbmRv
d0ludmlzaWJsZSgpOwogICAgIGJvb2wgc2hvdWxkTG9hZFNyY1VSTCgpOwogICAgIE5ldHNjYXBl
UGx1Z2luU3RyZWFtKiBzdHJlYW1Gcm9tSUQodWludDY0X3Qgc3RyZWFtSUQpOwogICAgIHZvaWQg
c3RvcEFsbFN0cmVhbXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5NYWMubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2luTWFjLm1tCmlu
ZGV4IDhhNDQ3ZGYuLjRlZGMzMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5NYWMubW0KKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1h
Yy5tbQpAQCAtOTE0LDkgKzkxNCwxMiBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luOjp3aW5kb3dBbmRW
aWV3RnJhbWVzQ2hhbmdlZChjb25zdCBJbnRSZWN0JiB3aW5kb3dGcmFtZUluU2NyZQogICAgIH0K
IH0KICAgICAKLXZvaWQgTmV0c2NhcGVQbHVnaW46OndpbmRvd1Zpc2liaWxpdHlDaGFuZ2VkKGJv
b2wpCit2b2lkIE5ldHNjYXBlUGx1Z2luOjp3aW5kb3dWaXNpYmlsaXR5Q2hhbmdlZChib29sIHZp
c2libGUpCiB7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudC4KKyAgICBpZiAodmlzaWJsZSkKKyAg
ICAgICAgY2FsbFNldFdpbmRvdygpOworICAgIGVsc2UKKyAgICAgICAgY2FsbFNldFdpbmRvd0lu
dmlzaWJsZSgpOwogfQogCiB1aW50NjRfdCBOZXRzY2FwZVBsdWdpbjo6cGx1Z2luQ29tcGxleFRl
eHRJbnB1dElkZW50aWZpZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IGQwN2Y4YjcuLmZmMWU1MzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTQx
MCw3ICs0MTAsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnNldFdpbmRvd0lzVmlzaWJsZShib29sIHdp
bmRvd0lzVmlzaWJsZSkKICAgICBpZiAoIW1fcGx1Z2luKQogICAgICAgICByZXR1cm47CiAKLSAg
ICAvLyBGSVhNRTogSW1wbGVtZW50LgorICAgIG1fcGx1Z2luLT53aW5kb3dWaXNpYmlsaXR5Q2hh
bmdlZCh3aW5kb3dJc1Zpc2libGUpOwogfQogCiB2b2lkIFBsdWdpblZpZXc6OnNldFdpbmRvd0lz
Rm9jdXNlZChib29sIHdpbmRvd0lzRm9jdXNlZCkKQEAgLTc4NSw4ICs3ODUsMTMgQEAgdm9pZCBQ
bHVnaW5WaWV3Ojp2aWV3R2VvbWV0cnlEaWRDaGFuZ2UoKQogICAgIHRyYW5zZm9ybS50cmFuc2xh
dGUoc2NhbGVkTG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXMueCgpLCBzY2FsZWRMb2NhdGlv
bkluUm9vdFZpZXdDb29yZGluYXRlcy55KCkpOwogICAgIHRyYW5zZm9ybS5zY2FsZShwYWdlU2Nh
bGVGYWN0b3IpOwogCi0gICAgLy8gRklYTUU6IFRoZSBjbGlwIHJlY3QgaXNuJ3QgY29ycmVjdC4K
LSAgICBJbnRSZWN0IGNsaXBSZWN0ID0gYm91bmRzUmVjdCgpOworICAgIC8vIEZJWE1FOiBUaGlz
IGNsaXAgcmVjdCBpc24ndCBjb3JyZWN0LgorICAgIC8vIEJ1dCBpdCBpcyBzdGlsbCBpbXBvcnRh
bnQgZGlzdGluZ3Vpc2ggYmV0d2VlbiBlbXB0eSBhbmQgbm9uLWVtcHR5IHJlY3RzIHNvIHdlIGNh
biBub3RpZnkgdGhlIHBsdWctaW4gd2hlbiBpdCBiZWNvbWVzIGludmlzaWJsZS4KKyAgICAvLyBN
YWtpbmcgdGhlIHJlY3QgYWN0dWFsbHkgY29ycmVjdCBpcyBjb3ZlcmVkIGJ5IGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTM2MgorICAgIEludFJlY3QgY2xpcFJlY3Qg
PSBjbGlwUmVjdEluV2luZG93Q29vcmRpbmF0ZXMoKTsKKyAgICBpZiAoIWNsaXBSZWN0LmlzRW1w
dHkoKSkKKyAgICAgICAgY2xpcFJlY3QgPSBib3VuZHNSZWN0KCk7CisgICAgICAgIAogICAgIG1f
cGx1Z2luLT5nZW9tZXRyeURpZENoYW5nZShzaXplKCksIGNsaXBSZWN0LCB0cmFuc2Zvcm0pOwog
fQogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
YmU4ZmNlYy4uNmYzMjMxMCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA4LTI5ICBCcmFkeSBFaWRzb24gIDxi
ZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OOiBOb3Qgc2VuZGluZyBOUFBf
U2V0V2luZG93IGlzIGNhdXNpbmcgRmxhc2ggdG8gbm90IHRocm90dGxlIGl0c2VsZgorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMTIxMzMwMjE+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTUyNzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgYSB0ZXN0IHBsdWctaW4gdGhhdCBjYWxscyBiYWNrIGludG8gdGhl
IHBhZ2Ugd2l0aCBpbmZvIG9uIHRoZSBOUFdpbmRvdyBwYXNzZWQKKyAgICAgICAgaW4gdG8gTlBQ
X1NldFdpbmRvdy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVzdE5l
dHNjYXBlUGx1Z0luL1Rlc3RzL0xvZ05QUFNldFdpbmRvdy5jcHA6IEFkZGVkLgorICAgICAgICAo
TG9nTlBQU2V0V2luZG93KToKKyAgICAgICAgKExvZ05QUFNldFdpbmRvdzo6TG9nTlBQU2V0V2lu
ZG93KToKKyAgICAgICAgKExvZ05QUFNldFdpbmRvdzo6TlBQX1NldFdpbmRvdyk6CisKIDIwMTIt
MDgtMjggIEdhYm9yIFJhcGNzYW55aSAgPHJnYWJvckB3ZWJraXQub3JnPgogCiAgICAgICAgIFtR
dF0gS2VlcCBRVF9RUEFfUExBVEZPUk1fUExVR0lOX1BBVEggZW52aXJvbm1lbnQgdmFyaWFibGUg
aW4gTlJXVApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5k
ZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzJhYzY3OS4uMGMwYjgwYSAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJl
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02OCw2ICs2OCw3IEBACiAJCTQ0Mzc3MzBG
MTI1Q0JDNEQwMEFBRTAyQyAvKiBXZWJBcmNoaXZlRHVtcFN1cHBvcnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QTk5NzgyMEZDREU4NjQwMDU4MEYx
MCAvKiBXZWJBcmNoaXZlRHVtcFN1cHBvcnQuaCAqLzsgfTsKIAkJNEFENkExMTQxM0M4MTI0MDAw
RUE5NzM3IC8qIEZvcm1WYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0QUQ2QTExMzEzQzgxMjQwMDBFQTk3MzcgLyogRm9ybVZhbHVlLmNwcCAq
LzsgfTsKIAkJNTEwNjgwM0UxNUNDN0IxMDAwMUE4QTIzIC8qIFNsb3dOUFBOZXcuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwNjgwM0QxNUNDN0Ix
MDAwMUE4QTIzIC8qIFNsb3dOUFBOZXcuY3BwICovOyB9OworCQk1MTVDMENEMDE1RUU3ODU3MDBG
NUE2MTMgLyogTG9nTlBQU2V0V2luZG93LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUMwQ0NGMTVFRTc4NTcwMEY1QTYxMyAvKiBMb2dOUFBTZXRX
aW5kb3cuY3BwICovOyB9OwogCQk1MTVGNDI5QzE1QzA3ODcyMDA3QzhGOTAgLyogUGx1Z2luU2Ny
aXB0YWJsZU9iamVjdE92ZXJyaWRlc0FsbFByb3BlcnRpZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1RjQyOUIxNUMwNzg3MjAwN0M4RjkwIC8q
IFBsdWdpblNjcmlwdGFibGVPYmplY3RPdmVycmlkZXNBbGxQcm9wZXJ0aWVzLmNwcCAqLzsgfTsK
IAkJNTE4NUY2QjIxMDcxNEUwNzAwN0FBMzkzIC8qIEhpc3RvcnlEZWxlZ2F0ZS5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODVGNjlGMTA3MTRBNTcw
MDdBQTM5MyAvKiBIaXN0b3J5RGVsZWdhdGUubW0gKi87IH07CiAJCTUxODVGNkIzMTA3MTRFMTIw
MDdBQTM5MyAvKiBIaXN0b3J5RGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxODVGNjlFMTA3MTRBNTcwMDdBQTM5MyAvKiBIaXN0b3J5RGVs
ZWdhdGUuaCAqLzsgfTsKQEAgLTI4MSw2ICsyODIsNyBAQAogCQk0NEE5OTc4MzBGQ0RFODY0MDA1
ODBGMTAgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5jcHA7IHBhdGggPSBjZi9XZWJB
cmNoaXZlRHVtcFN1cHBvcnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QUQ2
QTExMzEzQzgxMjQwMDBFQTk3MzcgLyogRm9ybVZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEZvcm1WYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxMDY4MDNEMTVDQzdCMTAwMDFBOEEyMyAvKiBTbG93TlBQTmV3LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNsb3dOUFBOZXcuY3BwOyBwYXRoID0gVGVz
dE5ldHNjYXBlUGx1Z0luL1Rlc3RzL1Nsb3dOUFBOZXcuY3BwOyBzb3VyY2VUcmVlID0gU09VUkNF
X1JPT1Q7IH07CisJCTUxNUMwQ0NGMTVFRTc4NTcwMEY1QTYxMyAvKiBMb2dOUFBTZXRXaW5kb3cu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTG9nTlBQU2V0V2luZG93
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1RjQyOUIxNUMwNzg3MjAwN0M4
RjkwIC8qIFBsdWdpblNjcmlwdGFibGVPYmplY3RPdmVycmlkZXNBbGxQcm9wZXJ0aWVzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsdWdpblNjcmlwdGFibGVPYmpl
Y3RPdmVycmlkZXNBbGxQcm9wZXJ0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTE4NUY2OUUxMDcxNEE1NzAwN0FBMzkzIC8qIEhpc3RvcnlEZWxlZ2F0ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBIaXN0b3J5RGVsZWdhdGUuaDsgcGF0aCA9IG1hYy9I
aXN0b3J5RGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4NUY2OUYx
MDcxNEE1NzAwN0FBMzkzIC8qIEhpc3RvcnlEZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBmaWxl
RW5jb2RpbmcgPSA0OyBuYW1lID0gSGlzdG9yeURlbGVnYXRlLm1tOyBwYXRoID0gbWFjL0hpc3Rv
cnlEZWxlZ2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU0OSw2ICs1NTEs
NyBAQAogCQkJCTFBNUNDMUYzMTM3REQyRUMwMEE1RDdFNyAvKiBHZXRVUkxXaXRoSmF2YVNjcmlw
dFVSTC5jcHAgKi8sCiAJCQkJMUEzRTI4QTkxMzExRDczQjAwNTAxMzQ5IC8qIEdldFVSTFdpdGhK
YXZhU2NyaXB0VVJMRGVzdHJveWluZ1BsdWdpbi5jcHAgKi8sCiAJCQkJMUFENENCMjAxMkE2RDEz
NTAwMjdBN0FGIC8qIEdldFVzZXJBZ2VudFdpdGhOdWxsTlBQRnJvbU5QUE5ldy5jcHAgKi8sCisJ
CQkJNTE1QzBDQ0YxNUVFNzg1NzAwRjVBNjEzIC8qIExvZ05QUFNldFdpbmRvdy5jcHAgKi8sCiAJ
CQkJMUFDRjg5OEIxMzJFRjQxQzAwRTkxNUQ0IC8qIE5QRGVhbGxvY2F0ZUNhbGxlZEJlZm9yZU5Q
U2h1dGRvd24uY3BwICovLAogCQkJCUMwMzExODJBMTM0RTRBMkIwMDkxOTc1NyAvKiBOUFBTZXRX
aW5kb3dDYWxsZWREdXJpbmdEZXN0cnVjdGlvbi5jcHAgKi8sCiAJCQkJMUEyNEJBQTgxMjA3MzRF
RTAwRkJCMDU5IC8qIE5QUnVudGltZU9iamVjdEZyb21EZXN0cm95ZWRQbHVnaW4uY3BwICovLApA
QCAtOTEwLDYgKzkxMyw3IEBACiAJCQkJNTE1RjQyOUMxNUMwNzg3MjAwN0M4RjkwIC8qIFBsdWdp
blNjcmlwdGFibGVPYmplY3RPdmVycmlkZXNBbGxQcm9wZXJ0aWVzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTUxMDY4MDNFMTVDQzdCMTAwMDFBOEEyMyAvKiBTbG93TlBQTmV3LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxQ0FDQkQ4MTVEOTZGRDAwMEVCNTNBMiAvKiBFdmFsdWF0ZUpTV2l0aGlu
TlBQX05ldy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTVDMENEMDE1RUU3ODU3MDBGNUE2MTMg
LyogTG9nTlBQU2V0V2luZG93LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvVGVzdE5ldHNjYXBlUGx1Z0luL1Rlc3RzL0xvZ05QUFNldFdpbmRvdy5j
cHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4vVGVzdHMvTG9nTlBQ
U2V0V2luZG93LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NzZiZTk5
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE5ldHNjYXBlUGx1
Z0luL1Rlc3RzL0xvZ05QUFNldFdpbmRvdy5jcHAKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJQbHVnaW5UZXN0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKK2Ns
YXNzIExvZ05QUFNldFdpbmRvdyA6IHB1YmxpYyBQbHVnaW5UZXN0IHsKK3B1YmxpYzoKKyAgICBM
b2dOUFBTZXRXaW5kb3coTlBQLCBjb25zdCBzdHJpbmcmIGlkZW50aWZpZXIpOworCitwcml2YXRl
OgorICAgIHZpcnR1YWwgTlBFcnJvciBOUFBfU2V0V2luZG93KE5QV2luZG93Kik7Cit9OworCitM
b2dOUFBTZXRXaW5kb3c6OkxvZ05QUFNldFdpbmRvdyhOUFAgbnBwLCBjb25zdCBzdHJpbmcmIGlk
ZW50aWZpZXIpCisgICAgOiBQbHVnaW5UZXN0KG5wcCwgaWRlbnRpZmllcikKK3sKK30KKworTlBF
cnJvciBMb2dOUFBTZXRXaW5kb3c6Ok5QUF9TZXRXaW5kb3coTlBXaW5kb3cqIHdpbmRvdykKK3sK
KyAgICBjaGFyIG1lc3NhZ2VbMTAyNF07CisgICAgc25wcmludGYobWVzc2FnZSwgMTAyNCwgIk5Q
UF9TZXRXaW5kb3c6ICVzIHdpbmRvdywgUmVjdCB7JWksICVpLCAlaSwgJWl9LCBDbGlwIFJlY3Qg
eyVpLCAlaSwgJWksICVpfSwgVHlwZSAlaSIsCisgICAgICAgIHdpbmRvdy0+d2luZG93ID8gIm5v
bi1OVUxMIiA6ICJOVUxMIiwgd2luZG93LT54LCB3aW5kb3ctPnksIHdpbmRvdy0+d2lkdGgsIHdp
bmRvdy0+aGVpZ2h0LAorICAgICAgICB3aW5kb3ctPmNsaXBSZWN0LmxlZnQsIHdpbmRvdy0+Y2xp
cFJlY3QudG9wLCB3aW5kb3ctPmNsaXBSZWN0LnJpZ2h0LCB3aW5kb3ctPmNsaXBSZWN0LmJvdHRv
bSwKKyAgICAgICAgd2luZG93LT50eXBlKTsKKyAgICAKKyAgICBjaGFyIHNjcmlwdFsxNTM2XTsK
KyAgICBzbnByaW50ZihzY3JpcHQsIDE1MzYsICJ3aW5kb3cuc2V0VGltZW91dCgnd2luZG93V2Fz
U2V0KFwiJXNcIik7JywgMCk7IiwgbWVzc2FnZSk7CisKKyAgICBleGVjdXRlU2NyaXB0KHNjcmlw
dCk7CisKKyAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7Cit9CisKK3N0YXRpYyBQbHVnaW5UZXN0
OjpSZWdpc3RlcjxMb2dOUFBTZXRXaW5kb3c+IHJlZ2lzdHJhcigibG9nLW5wcC1zZXQtd2luZG93
Iik7Cg==
</data>
<flag name="review"
          id="172038"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>