<?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>61428</bug_id>
          
          <creation_ts>2011-05-25 01:53:28 -0700</creation_ts>
          <short_desc>REGRESSION (WebKit2): Crash in Flash on USA Today photo gallery</short_desc>
          <delta_ts>2011-05-25 14:58:28 -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>Plug-ins</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Windows 7</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://mediagallery.usatoday.com/Day-in-celebrities/May-17,-2011/G56,A9164</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, PlatformOnly</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jon Honeycutt">jhoneycutt</reporter>
          <assigned_to name="Jon Honeycutt">jhoneycutt</assigned_to>
          <cc>andersca</cc>
    
    <cc>aroben</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>409524</commentid>
    <comment_count>0</comment_count>
    <who name="Jon Honeycutt">jhoneycutt</who>
    <bug_when>2011-05-25 01:53:28 -0700</bug_when>
    <thetext>Wait until the ad stops playing; the WebProcess crashes.

&lt;rdar://problem/9457006&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409533</commentid>
    <comment_count>1</comment_count>
      <attachid>94757</attachid>
    <who name="Jon Honeycutt">jhoneycutt</who>
    <bug_when>2011-05-25 02:16:03 -0700</bug_when>
    <thetext>Created attachment 94757
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409535</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-25 02:17:22 -0700</bug_when>
    <thetext>Attachment 94757 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/plat...&quot; exit_code: 1

Tools/DumpRenderTree/TestNetscapePlugIn/win/CallJSThatDestroysPlugin.cpp:110:  Could not find a newline character at the end of the file.  [whitespace/ending_newline] [5]
Total errors found: 1 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409587</commentid>
    <comment_count>3</comment_count>
      <attachid>94757</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-05-25 05:03:07 -0700</bug_when>
    <thetext>Comment on attachment 94757
Patch

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

So great to have a test for this!

&gt; LayoutTests/platform/win/plugins/call-javascript-that-destroys-plugin.html:7
&gt; +            layoutTestController.waitUntilDone();

I like to put the waitUntilDone call inside the PluginTest object. That way both waitUntilDone and notifyDone are taken care of by the plugin.

&gt; Source/WebKit2/WebProcess/Plugins/PluginView.cpp:1137
&gt; +    // Flash may ask us to evaluate JavaScript that removes the plug-in from the page,
&gt; +    // but it expects the plug-in to still be alive when the call completes. To prevent
&gt; +    // a crash, if the plug-in has only one remaining reference, call deref()
&gt; +    // asynchronously.

This comment feels a little too Flash-specific, even though Flash is the only plugin we know of that does this.

I think it would be good to mention that we crash because we end up returning to plugin code higher up on the stack but the plugin has already been unloaded. (If that is in fact the reason.)

&gt; Tools/DumpRenderTree/TestNetscapePlugIn/win/CallJSThatDestroysPlugin.cpp:55
&gt; +static PluginTest::Register&lt;CallJSThatDestroysPlugin&gt; callJavaScriptThatDestroysPlugin(&quot;call-javascript-that-destroys-plugin&quot;);

I like to just call this variable &quot;registrar&quot;.

&gt; Tools/DumpRenderTree/TestNetscapePlugIn/win/CallJSThatDestroysPlugin.cpp:85
&gt; +NPError CallJSThatDestroysPlugin::NPP_DestroyStream(NPStream*, NPReason)

Is there a particular reason why you chose to start the test in NPP_DestroyStream, as opposed to somewhere like NPP_New? It might be worth mentioning.

&gt; Tools/DumpRenderTree/TestNetscapePlugIn/win/CallJSThatDestroysPlugin.cpp:93
&gt; +    wndClass.hInstance = GetModuleHandle(0);

This will register the class for WebKit2WebProcess.exe, not for npTestNetscapePlugin.dll. But it doesn&apos;t matter very much.

&gt;&gt; Tools/DumpRenderTree/TestNetscapePlugIn/win/CallJSThatDestroysPlugin.cpp:110
&gt;&gt; +}
&gt; 
&gt; Could not find a newline character at the end of the file.  [whitespace/ending_newline] [5]

You should fix this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409881</commentid>
    <comment_count>4</comment_count>
    <who name="Jon Honeycutt">jhoneycutt</who>
    <bug_when>2011-05-25 13:21:30 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 94757 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=94757&amp;action=review
&gt; 
&gt; So great to have a test for this!
&gt; 
&gt; &gt; LayoutTests/platform/win/plugins/call-javascript-that-destroys-plugin.html:7
&gt; &gt; +            layoutTestController.waitUntilDone();
&gt; 
&gt; I like to put the waitUntilDone call inside the PluginTest object. That way both waitUntilDone and notifyDone are taken care of by the plugin.

OK, moved it into the PluginTest.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/Plugins/PluginView.cpp:1137
&gt; &gt; +    // Flash may ask us to evaluate JavaScript that removes the plug-in from the page,
&gt; &gt; +    // but it expects the plug-in to still be alive when the call completes. To prevent
&gt; &gt; +    // a crash, if the plug-in has only one remaining reference, call deref()
&gt; &gt; +    // asynchronously.
&gt; 
&gt; This comment feels a little too Flash-specific, even though Flash is the only plugin we know of that does this.
&gt; 
&gt; I think it would be good to mention that we crash because we end up returning to plugin code higher up on the stack but the plugin has already been unloaded. (If that is in fact the reason.)

I don&apos;t think we&apos;ve unloaded the plug-in by this time. I updated the comment to:

    // A plug-in may ask us to evaluate JavaScript that removes the plug-in from the
    // page, but expect the object to still be alive when the call completes. Flash,
    // for example, may crash if the plug-in is destroyed and we return to code for
    // the destroyed object higher on the stack. To prevent this, if the plug-in has
    // only one remaining reference, call deref() asynchronously.

&gt; 
&gt; &gt; Tools/DumpRenderTree/TestNetscapePlugIn/win/CallJSThatDestroysPlugin.cpp:55
&gt; &gt; +static PluginTest::Register&lt;CallJSThatDestroysPlugin&gt; callJavaScriptThatDestroysPlugin(&quot;call-javascript-that-destroys-plugin&quot;);
&gt; 
&gt; I like to just call this variable &quot;registrar&quot;.

Fixed.

&gt; 
&gt; &gt; Tools/DumpRenderTree/TestNetscapePlugIn/win/CallJSThatDestroysPlugin.cpp:85
&gt; &gt; +NPError CallJSThatDestroysPlugin::NPP_DestroyStream(NPStream*, NPReason)
&gt; 
&gt; Is there a particular reason why you chose to start the test in NPP_DestroyStream, as opposed to somewhere like NPP_New? It might be worth mentioning.

Nope, I changed it to start in NPP_New.

&gt; 
&gt; &gt; Tools/DumpRenderTree/TestNetscapePlugIn/win/CallJSThatDestroysPlugin.cpp:93
&gt; &gt; +    wndClass.hInstance = GetModuleHandle(0);
&gt; 
&gt; This will register the class for WebKit2WebProcess.exe, not for npTestNetscapePlugin.dll. But it doesn&apos;t matter very much.

I left this as-is.

&gt; 
&gt; &gt;&gt; Tools/DumpRenderTree/TestNetscapePlugIn/win/CallJSThatDestroysPlugin.cpp:110
&gt; &gt;&gt; +}
&gt; &gt; 
&gt; &gt; Could not find a newline character at the end of the file.  [whitespace/ending_newline] [5]
&gt; 
&gt; You should fix this.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409950</commentid>
    <comment_count>5</comment_count>
    <who name="Jon Honeycutt">jhoneycutt</who>
    <bug_when>2011-05-25 14:58:28 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/87324.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94757</attachid>
            <date>2011-05-25 02:16:03 -0700</date>
            <delta_ts>2011-05-25 05:03:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-regression-webkit2-crash-in-flash-on-usa-today-photo.patch</filename>
            <type>text/plain</type>
            <size>15414</size>
            <attacher name="Jon Honeycutt">jhoneycutt</attacher>
            
              <data encoding="base64">RnJvbSA0ZjAxNjRmMTNjZTJkODg3ZDA4N2MwNGYwY2FmNTJmNzE0ZTMwMzMxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb24gSG9uZXljdXR0IDxqaG9uZXljdXR0QGFwcGxlLmNvbT4K
RGF0ZTogV2VkLCAyNSBNYXkgMjAxMSAwMjoxMTozMSAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIFJF
R1JFU1NJT04gKFdlYktpdDIpOiBDcmFzaCBpbiBGbGFzaCBvbiBVU0EgVG9kYXkgcGhvdG8gZ2Fs
bGVyeQogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxNDI4CiA8cmRh
cjovL3Byb2JsZW0vOTQ1NzAwNj4KClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKU291cmNl
L1dlYktpdDI6CgpUaGUgY3Jhc2ggb2NjdXJzIHdoZW4gRmxhc2ggcG9zdHMgYSBtZXNzYWdlIHRv
IGEgd2luZG93IHRoYXQgaXQKY3JlYXRlcywgYW5kIGluIHByb2Nlc3NpbmcgdGhlIG1lc3NhZ2Us
IGl0IGNhbGxzIE5QTl9FdmFsdWF0ZSB0bwpldmFsdWF0ZSBKYXZhU2NyaXB0IHRoYXQgcmVtb3Zl
cyB0aGUgcGx1Zy1pbiBmcm9tIHRoZSBwYWdlLiBGbGFzaCB0aGVuCmNyYXNoZXMgd2hlbiB3ZSBy
ZXR1cm4gdG8gRmxhc2ggY29kZS4KCiogUGxhdGZvcm0vV29ya0l0ZW0uaDoKKERlcmVmV29ya0l0
ZW06OkRlcmVmV29ya0l0ZW0pOgpJbml0aWFsaXplIG1fcHRyLgooRGVyZWZXb3JrSXRlbTo6ZXhl
Y3V0ZSk6CkRlcmVmIHRoZSBvYmplY3QuCihXb3JrSXRlbTo6Y3JlYXRlRGVyZWYpOgpDcmVhdGUg
YW5kIHJldHVybiBhIERlcmVmV29ya0l0ZW0uCgoqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcDoKKFdlYktpdDo6UGx1Z2luVmlldzo6dW5wcm90ZWN0UGx1Z2luRnJvbURlc3RydWN0
aW9uKToKSWYgdGhlIFBsdWdpblZpZXcgaGFzIG9ubHkgb25lIHJlZmVyZW5jZSBsZWZ0LCBkZXJl
ZiBpdCBhc3luY2hyb25vdXNseS4KClRvb2xzOgoKVGhlIGNyYXNoIG9jY3VycyB3aGVuIEZsYXNo
IHBvc3RzIGEgbWVzc2FnZSB0byBhIHdpbmRvdyB0aGF0IGl0CmNyZWF0ZXMsIGFuZCBpbiBwcm9j
ZXNzaW5nIHRoZSBtZXNzYWdlLCBpdCBjYWxscyBOUE5fRXZhbHVhdGUgdG8KZXZhbHVhdGUgSmF2
YVNjcmlwdCB0aGF0IHJlbW92ZXMgdGhlIHBsdWctaW4gZnJvbSB0aGUgcGFnZS4gRmxhc2ggdGhl
bgpjcmFzaGVzIHdoZW4gd2UgcmV0dXJuIHRvIEZsYXNoIGNvZGUuCgpUaGlzIHRlc3QgZW11bGF0
ZXMgdGhhdCBiZWhhdmlvci4KCiogRHVtcFJlbmRlclRyZWUvVGVzdE5ldHNjYXBlUGx1Z0luL3dp
bi9DYWxsSlNUaGF0RGVzdHJveXNQbHVnaW4uY3BwOiBBZGRlZC4KKENhbGxKU1RoYXREZXN0cm95
c1BsdWdpbjo6Q2FsbEpTVGhhdERlc3Ryb3lzUGx1Z2luKToKSW5pdGlhbGl6ZSBtZW1iZXIgdmFy
cy4KKENhbGxKU1RoYXREZXN0cm95c1BsdWdpbjo6fkNhbGxKU1RoYXREZXN0cm95c1BsdWdpbik6
ClJlbW92ZSBvdXIgY3VzdG9tIHByb3BlcnR5IGZyb20gdGhlIG1lc3NhZ2Ugd2luZG93LCBhbmQg
ZGVzdHJveSBpdC4KKENhbGxKU1RoYXREZXN0cm95c1BsdWdpbjo6TlBQX0Rlc3Ryb3kpOgpTZXQg
bV9pc0Rlc3Ryb3llZCwgbG9nIHRoYXQgdGhlIHBsdWctaW4gd2FzIGRlc3Ryb3llZCwgYW5kIG5v
dGlmeSB0aGUKbGF5b3V0IHRlc3QgY29udHJvbGxlciB0aGF0IHdlJ3JlIGRvbmUuCih3bmRQcm9j
KToKR2V0IHRoZSBQbHVnaW5UZXN0IG9iamVjdCwgYW5kIGNhbGwgaXRzIHJ1blRlc3QoKSBmdW5j
dGlvbi4KKENhbGxKU1RoYXREZXN0cm95c1BsdWdpbjo6TlBQX0Rlc3Ryb3lTdHJlYW0pOgpTZXR1
cCB0aGUgdGVzdDogcmVnaXN0ZXIgYSBjbGFzcyBmb3IgdGhlIG1lc3NhZ2Utb25seSB3aW5kb3cs
IGNyZWF0ZQppdCwgYW5kIHBvc3QgYSBtZXNzYWdlIHRvIGl0IHRvIHJ1biB0aGUgdGVzdC4KKENh
bGxKU1RoYXREZXN0cm95c1BsdWdpbjo6cnVuVGVzdCk6CkV4ZWN1dGUgSlMgdGhhdCByZW1vdmVz
IHRoZSBwbHVnLWluIGZyb20gdGhlIHBhZ2UsIGFuZCBpZiB3ZSdyZSBub3QKZGVzdHJveWVkLCBs
b2cgYSBzdWNjZXNzIG1lc3NhZ2UuCgoqIER1bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2FwZVBsdWdJ
bi93aW4vVGVzdE5ldHNjYXBlUGx1Z2luLnZjcHJvajoKQWRkIG5ldyB0ZXN0IHRvIHByb2plY3Qu
CgpMYXlvdXRUZXN0czoKCiogcGxhdGZvcm0vd2luL3BsdWdpbnMvY2FsbC1qYXZhc2NyaXB0LXRo
YXQtZGVzdHJveXMtcGx1Z2luLWV4cGVjdGVkLnR4dDogQWRkZWQuCiogcGxhdGZvcm0vd2luL3Bs
dWdpbnMvY2FsbC1qYXZhc2NyaXB0LXRoYXQtZGVzdHJveXMtcGx1Z2luLmh0bWw6IEFkZGVkLgot
LS0KIExheW91dFRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
ICAxMSArKwogLi4ubGwtamF2YXNjcmlwdC10aGF0LWRlc3Ryb3lzLXBsdWdpbi1leHBlY3RlZC50
eHQgfCAgICAzICsKIC4uLi9jYWxsLWphdmFzY3JpcHQtdGhhdC1kZXN0cm95cy1wbHVnaW4uaHRt
bCAgICAgIHwgICAxNyArKysKIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICAyNSArKysrKwogU291cmNlL1dlYktpdDIvUGxhdGZvcm0vV29ya0l0
ZW0uaCAgICAgICAgICAgICAgICAgfCAgIDI3ICsrKysrCiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgICB8ICAgMTEgKystCiBUb29scy9DaGFuZ2VMb2cg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMzUgKysrKysrCiAuLi4vd2lu
L0NhbGxKU1RoYXREZXN0cm95c1BsdWdpbi5jcHAgICAgICAgICAgICAgICB8ICAxMTAgKysrKysr
KysrKysrKysrKysrKysKIC4uLi93aW4vVGVzdE5ldHNjYXBlUGx1Z2luLnZjcHJvaiAgICAgICAg
ICAgICAgICAgIHwgICAgNCArCiA5IGZpbGVzIGNoYW5nZWQsIDI0MiBpbnNlcnRpb25zKCspLCAx
IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL3BsYXRmb3JtL3dp
bi9wbHVnaW5zL2NhbGwtamF2YXNjcmlwdC10aGF0LWRlc3Ryb3lzLXBsdWdpbi1leHBlY3RlZC50
eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vcGx1Z2lucy9j
YWxsLWphdmFzY3JpcHQtdGhhdC1kZXN0cm95cy1wbHVnaW4uaHRtbAogY3JlYXRlIG1vZGUgMTAw
NjQ0IFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2FwZVBsdWdJbi93aW4vQ2FsbEpTVGhh
dERlc3Ryb3lzUGx1Z2luLmNwcAoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmMGE2MjQ4Li5hNzQxNDQzIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTQgQEAKKzIwMTEtMDUtMjUgIEpvbiBIb25leWN1dHQgIDxqaG9uZXljdXR0QGFwcGxl
LmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChXZWJLaXQyKTogQ3Jhc2ggaW4gRmxhc2ggb24g
VVNBIFRvZGF5IHBob3RvIGdhbGxlcnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTYxNDI4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85NDU3MDA2Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZv
cm0vd2luL3BsdWdpbnMvY2FsbC1qYXZhc2NyaXB0LXRoYXQtZGVzdHJveXMtcGx1Z2luLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vd2luL3BsdWdpbnMvY2FsbC1qYXZh
c2NyaXB0LXRoYXQtZGVzdHJveXMtcGx1Z2luLmh0bWw6IEFkZGVkLgorCiAyMDExLTA1LTE4ICBK
ZXJlbXkgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL3BsdWdp
bnMvY2FsbC1qYXZhc2NyaXB0LXRoYXQtZGVzdHJveXMtcGx1Z2luLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3dpbi9wbHVnaW5zL2NhbGwtamF2YXNjcmlwdC10aGF0LWRlc3Ry
b3lzLXBsdWdpbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uYzYxNmVlOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9w
bHVnaW5zL2NhbGwtamF2YXNjcmlwdC10aGF0LWRlc3Ryb3lzLXBsdWdpbi1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwzIEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogUExVR0lOOiBTdWNjZXNz
OiBleGVjdXRlZCBzY3JpcHQsIGFuZCBwbHVnLWluIGlzIG5vdCB5ZXQgZGVzdHJveWVkLgorQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDA6IFBMVUdJTjogUGx1Zy1pbiBkZXN0cm95ZWQuCitUaGlzIHRl
c3RzIHRoYXQsIGlmIGEgcGx1Zy1pbiBkaXJlY3RzIHRoZSBicm93c2VyIHRvIGV2YWx1YXRlIEph
dmFTY3JpcHQgdGhhdCByZW1vdmVzIHRoZSBwbHVnLWluIGZyb20gdGhlIHBhZ2UsIHRoZSBwbHVn
LWluIGlzIGRlc3Ryb3llZCBhc3luY2hyb25vdXNseS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3dpbi9wbHVnaW5zL2NhbGwtamF2YXNjcmlwdC10aGF0LWRlc3Ryb3lzLXBsdWdp
bi5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL3BsdWdpbnMvY2FsbC1qYXZhc2NyaXB0
LXRoYXQtZGVzdHJveXMtcGx1Z2luLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uZmZlNWJiYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dp
bi9wbHVnaW5zL2NhbGwtamF2YXNjcmlwdC10aGF0LWRlc3Ryb3lzLXBsdWdpbi5odG1sCkBAIC0w
LDAgKzEsMTcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0
PgorICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorICAgIDxlbWJlZCB0eXBlPSJhcHBsaWNhdGlvbi94LXdlYmtpdC10
ZXN0LW5ldHNjYXBlIiBzcmM9ImRhdGE6dGV4dC9wbGFpbiwiIHRlc3Q9ImNhbGwtamF2YXNjcmlw
dC10aGF0LWRlc3Ryb3lzLXBsdWdpbiI+PC9lbWJlZD4KKyAgICA8cD5UaGlzIHRlc3RzIHRoYXQs
IGlmIGEgcGx1Zy1pbiBkaXJlY3RzIHRoZSBicm93c2VyIHRvIGV2YWx1YXRlIEphdmFTY3JpcHQg
dGhhdCByZW1vdmVzIHRoZSBwbHVnLWluIGZyb20gdGhlIHBhZ2UsCisgICAgdGhlIHBsdWctaW4g
aXMgZGVzdHJveWVkIGFzeW5jaHJvbm91c2x5LjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCmluZGV4IDdlMWQ5NDUuLmQwMjMyMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAor
MjAxMS0wNS0yNSAgSm9uIEhvbmV5Y3V0dCAgPGpob25leWN1dHRAYXBwbGUuY29tPgorCisgICAg
ICAgIFJFR1JFU1NJT04gKFdlYktpdDIpOiBDcmFzaCBpbiBGbGFzaCBvbiBVU0EgVG9kYXkgcGhv
dG8gZ2FsbGVyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NjE0MjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzk0NTcwMDY+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGNyYXNoIG9jY3VycyB3aGVu
IEZsYXNoIHBvc3RzIGEgbWVzc2FnZSB0byBhIHdpbmRvdyB0aGF0IGl0CisgICAgICAgIGNyZWF0
ZXMsIGFuZCBpbiBwcm9jZXNzaW5nIHRoZSBtZXNzYWdlLCBpdCBjYWxscyBOUE5fRXZhbHVhdGUg
dG8KKyAgICAgICAgZXZhbHVhdGUgSmF2YVNjcmlwdCB0aGF0IHJlbW92ZXMgdGhlIHBsdWctaW4g
ZnJvbSB0aGUgcGFnZS4gRmxhc2ggdGhlbgorICAgICAgICBjcmFzaGVzIHdoZW4gd2UgcmV0dXJu
IHRvIEZsYXNoIGNvZGUuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9Xb3JrSXRlbS5oOgorICAgICAg
ICAoRGVyZWZXb3JrSXRlbTo6RGVyZWZXb3JrSXRlbSk6CisgICAgICAgIEluaXRpYWxpemUgbV9w
dHIuCisgICAgICAgIChEZXJlZldvcmtJdGVtOjpleGVjdXRlKToKKyAgICAgICAgRGVyZWYgdGhl
IG9iamVjdC4KKyAgICAgICAgKFdvcmtJdGVtOjpjcmVhdGVEZXJlZik6CisgICAgICAgIENyZWF0
ZSBhbmQgcmV0dXJuIGEgRGVyZWZXb3JrSXRlbS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6dW5wcm90
ZWN0UGx1Z2luRnJvbURlc3RydWN0aW9uKToKKyAgICAgICAgSWYgdGhlIFBsdWdpblZpZXcgaGFz
IG9ubHkgb25lIHJlZmVyZW5jZSBsZWZ0LCBkZXJlZiBpdCBhc3luY2hyb25vdXNseS4KKwogMjAx
MS0wNS0xOSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAg
IEFkZHJlc3MgYSByZXZpZXcgY29tbWVudCBieSBTYW0gV2VpbmlnLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vV29ya0l0ZW0uaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L1dvcmtJdGVtLmgKaW5kZXggNjRiZmY1OC4uZjI4NjhkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vV29ya0l0ZW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9X
b3JrSXRlbS5oCkBAIC00MSw2ICs0MSw5IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBQYXNzT3du
UHRyPFdvcmtJdGVtPiBjcmVhdGUodm9pZCAoKikoKSk7CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDPgorICAgIHN0YXRpYyBQYXNzT3duUHRyPFdvcmtJdGVtPiBjcmVhdGVEZXJlZihDKik7CisK
ICAgICB2aXJ0dWFsIH5Xb3JrSXRlbSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlKCkg
PSAwOwogCkBAIC0xODQsNCArMTg3LDI4IEBAIGlubGluZSBQYXNzT3duUHRyPFdvcmtJdGVtPiBX
b3JrSXRlbTo6Y3JlYXRlKHZvaWQgKCpmdW5jdGlvbikoKSkKICAgICByZXR1cm4gYWRvcHRQdHIo
c3RhdGljX2Nhc3Q8V29ya0l0ZW0qPihuZXcgRnVuY3Rpb25Xb3JrSXRlbTAoZnVuY3Rpb24pKSk7
CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEM+CitjbGFzcyBEZXJlZldvcmtJdGVtIDogcHJpdmF0
ZSBXb3JrSXRlbSB7CisgICAgLy8gV2Ugb25seSBhbGxvdyBXb3JrSXRlbSB0byBjcmVhdGUgdGhp
cy4KKyAgICBmcmllbmQgY2xhc3MgV29ya0l0ZW07CisKKyAgICBleHBsaWNpdCBEZXJlZldvcmtJ
dGVtKEMqIHB0cikKKyAgICAgICAgOiBtX3B0cihwdHIpCisgICAgeworICAgIH0KKworICAgIHZp
cnR1YWwgdm9pZCBleGVjdXRlKCkKKyAgICB7CisgICAgICAgIG1fcHRyLT5kZXJlZigpOworICAg
IH0KKworICAgIEMqIG1fcHRyOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgQz4KK1Bhc3NPd25Q
dHI8V29ya0l0ZW0+IFdvcmtJdGVtOjpjcmVhdGVEZXJlZihDKiBwdHIpCit7CisgICAgcmV0dXJu
IGFkb3B0UHRyKHN0YXRpY19jYXN0PFdvcmtJdGVtKj4obmV3IERlcmVmV29ya0l0ZW08Qz4ocHRy
KSkpOworfQorCiAjZW5kaWYgLy8gV29ya0l0ZW1faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IGIwMTA4Y2IuLmZkOTE1ODggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAK
QEAgLTExMjgsNyArMTEyOCwxNiBAQCB2b2lkIFBsdWdpblZpZXc6OnByb3RlY3RQbHVnaW5Gcm9t
RGVzdHJ1Y3Rpb24oKQogCiB2b2lkIFBsdWdpblZpZXc6OnVucHJvdGVjdFBsdWdpbkZyb21EZXN0
cnVjdGlvbigpCiB7Ci0gICAgaWYgKCFtX2lzQmVpbmdEZXN0cm95ZWQpCisgICAgaWYgKG1faXNC
ZWluZ0Rlc3Ryb3llZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRmxhc2ggbWF5IGFzayB1
cyB0byBldmFsdWF0ZSBKYXZhU2NyaXB0IHRoYXQgcmVtb3ZlcyB0aGUgcGx1Zy1pbiBmcm9tIHRo
ZSBwYWdlLAorICAgIC8vIGJ1dCBpdCBleHBlY3RzIHRoZSBwbHVnLWluIHRvIHN0aWxsIGJlIGFs
aXZlIHdoZW4gdGhlIGNhbGwgY29tcGxldGVzLiBUbyBwcmV2ZW50CisgICAgLy8gYSBjcmFzaCwg
aWYgdGhlIHBsdWctaW4gaGFzIG9ubHkgb25lIHJlbWFpbmluZyByZWZlcmVuY2UsIGNhbGwgZGVy
ZWYoKQorICAgIC8vIGFzeW5jaHJvbm91c2x5LgorICAgIGlmIChoYXNPbmVSZWYoKSkKKyAgICAg
ICAgUnVuTG9vcDo6bWFpbigpLT5zY2hlZHVsZVdvcmsoV29ya0l0ZW06OmNyZWF0ZURlcmVmKHRo
aXMpKTsKKyAgICBlbHNlCiAgICAgICAgIGRlcmVmKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjYzI3Y2JiLi5mZDY3OWRlIDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzggQEAKKzIwMTEtMDUtMjUgIEpvbiBIb25leWN1dHQgIDxqaG9uZXljdXR0QGFwcGxlLmNvbT4K
KworICAgICAgICBSRUdSRVNTSU9OIChXZWJLaXQyKTogQ3Jhc2ggaW4gRmxhc2ggb24gVVNBIFRv
ZGF5IHBob3RvIGdhbGxlcnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTYxNDI4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85NDU3MDA2PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBjcmFzaCBvY2N1
cnMgd2hlbiBGbGFzaCBwb3N0cyBhIG1lc3NhZ2UgdG8gYSB3aW5kb3cgdGhhdCBpdAorICAgICAg
ICBjcmVhdGVzLCBhbmQgaW4gcHJvY2Vzc2luZyB0aGUgbWVzc2FnZSwgaXQgY2FsbHMgTlBOX0V2
YWx1YXRlIHRvCisgICAgICAgIGV2YWx1YXRlIEphdmFTY3JpcHQgdGhhdCByZW1vdmVzIHRoZSBw
bHVnLWluIGZyb20gdGhlIHBhZ2UuIEZsYXNoIHRoZW4KKyAgICAgICAgY3Jhc2hlcyB3aGVuIHdl
IHJldHVybiB0byBGbGFzaCBjb2RlLgorCisgICAgICAgIFRoaXMgdGVzdCBlbXVsYXRlcyB0aGF0
IGJlaGF2aW9yLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVzdE5ldHNjYXBlUGx1Z0lu
L3dpbi9DYWxsSlNUaGF0RGVzdHJveXNQbHVnaW4uY3BwOiBBZGRlZC4KKyAgICAgICAgKENhbGxK
U1RoYXREZXN0cm95c1BsdWdpbjo6Q2FsbEpTVGhhdERlc3Ryb3lzUGx1Z2luKToKKyAgICAgICAg
SW5pdGlhbGl6ZSBtZW1iZXIgdmFycy4KKyAgICAgICAgKENhbGxKU1RoYXREZXN0cm95c1BsdWdp
bjo6fkNhbGxKU1RoYXREZXN0cm95c1BsdWdpbik6CisgICAgICAgIFJlbW92ZSBvdXIgY3VzdG9t
IHByb3BlcnR5IGZyb20gdGhlIG1lc3NhZ2Ugd2luZG93LCBhbmQgZGVzdHJveSBpdC4KKyAgICAg
ICAgKENhbGxKU1RoYXREZXN0cm95c1BsdWdpbjo6TlBQX0Rlc3Ryb3kpOgorICAgICAgICBTZXQg
bV9pc0Rlc3Ryb3llZCwgbG9nIHRoYXQgdGhlIHBsdWctaW4gd2FzIGRlc3Ryb3llZCwgYW5kIG5v
dGlmeSB0aGUKKyAgICAgICAgbGF5b3V0IHRlc3QgY29udHJvbGxlciB0aGF0IHdlJ3JlIGRvbmUu
CisgICAgICAgICh3bmRQcm9jKToKKyAgICAgICAgR2V0IHRoZSBQbHVnaW5UZXN0IG9iamVjdCwg
YW5kIGNhbGwgaXRzIHJ1blRlc3QoKSBmdW5jdGlvbi4KKyAgICAgICAgKENhbGxKU1RoYXREZXN0
cm95c1BsdWdpbjo6TlBQX0Rlc3Ryb3lTdHJlYW0pOgorICAgICAgICBTZXR1cCB0aGUgdGVzdDog
cmVnaXN0ZXIgYSBjbGFzcyBmb3IgdGhlIG1lc3NhZ2Utb25seSB3aW5kb3csIGNyZWF0ZQorICAg
ICAgICBpdCwgYW5kIHBvc3QgYSBtZXNzYWdlIHRvIGl0IHRvIHJ1biB0aGUgdGVzdC4KKyAgICAg
ICAgKENhbGxKU1RoYXREZXN0cm95c1BsdWdpbjo6cnVuVGVzdCk6CisgICAgICAgIEV4ZWN1dGUg
SlMgdGhhdCByZW1vdmVzIHRoZSBwbHVnLWluIGZyb20gdGhlIHBhZ2UsIGFuZCBpZiB3ZSdyZSBu
b3QKKyAgICAgICAgZGVzdHJveWVkLCBsb2cgYSBzdWNjZXNzIG1lc3NhZ2UuCisKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4vd2luL1Rlc3ROZXRzY2FwZVBsdWdp
bi52Y3Byb2o6CisgICAgICAgIEFkZCBuZXcgdGVzdCB0byBwcm9qZWN0LgorCiAyMDExLTA1LTE1
ICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBBbnRvbmlvIEdvbWVzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE5l
dHNjYXBlUGx1Z0luL3dpbi9DYWxsSlNUaGF0RGVzdHJveXNQbHVnaW4uY3BwIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvVGVzdE5ldHNjYXBlUGx1Z0luL3dpbi9DYWxsSlNUaGF0RGVzdHJveXNQbHVn
aW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5NzM3OTIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4vd2lu
L0NhbGxKU1RoYXREZXN0cm95c1BsdWdpbi5jcHAKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiUGx1Z2luVGVzdC5oIgorCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5j
bHVkZSA8dmVjdG9yPgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCisvLyBUZXN0IHRoYXQgZXZh
bHVhdGluZyBKYXZhU2NyaXB0IHRoYXQgcmVtb3ZlcyB0aGUgcGx1Zy1pbiBmcm9tIHRoZSBwYWdl
CisvLyBkZXN0cm95cyB0aGUgcGx1Zy1pbiBhc3luY2hyb25vdXNseS4KK2NsYXNzIENhbGxKU1Ro
YXREZXN0cm95c1BsdWdpbiA6IHB1YmxpYyBQbHVnaW5UZXN0IHsKK3B1YmxpYzoKKyAgICBDYWxs
SlNUaGF0RGVzdHJveXNQbHVnaW4oTlBQIG5wcCwgY29uc3Qgc3RyaW5nJiBpZGVudGlmaWVyKQor
ICAgICAgICA6IFBsdWdpblRlc3QobnBwLCBpZGVudGlmaWVyKQorICAgICAgICAsIG1faXNEZXN0
cm95ZWQoZmFsc2UpCisgICAgICAgICwgbV93aW5kb3coMCkKKyAgICB7CisgICAgfQorICAgIH5D
YWxsSlNUaGF0RGVzdHJveXNQbHVnaW4oKTsKKworICAgIHZvaWQgcnVuVGVzdCgpOworCitwcml2
YXRlOgorICAgIHZpcnR1YWwgTlBFcnJvciBOUFBfRGVzdHJveShOUFNhdmVkRGF0YSoqKTsKKyAg
ICB2aXJ0dWFsIE5QRXJyb3IgTlBQX0Rlc3Ryb3lTdHJlYW0oTlBTdHJlYW0qLCBOUFJlYXNvbik7
CisKKyAgICBib29sIG1faXNEZXN0cm95ZWQ7CisgICAgSFdORCBtX3dpbmRvdzsKK307CisKK3N0
YXRpYyBQbHVnaW5UZXN0OjpSZWdpc3RlcjxDYWxsSlNUaGF0RGVzdHJveXNQbHVnaW4+IGNhbGxK
YXZhU2NyaXB0VGhhdERlc3Ryb3lzUGx1Z2luKCJjYWxsLWphdmFzY3JpcHQtdGhhdC1kZXN0cm95
cy1wbHVnaW4iKTsKKworc3RhdGljIGNvbnN0IExQQ1dTVFIgcGx1Z2luVGVzdFByb3BlcnR5ID0g
TCJQbHVnaW5UZXN0UHJvcGVydHkiOworc3RhdGljIGNvbnN0IFVJTlQgcnVuVGVzdFdpbmRvd01l
c3NhZ2UgPSBXTV9VU0VSICsgMTsKK3N0YXRpYyBjb25zdCBMUENXU1RSIG1lc3NhZ2VXaW5kb3dD
bGFzc05hbWUgPSBMIkNhbGxKU1RoYXREZXN0cm95c1BsdWdpbk1lc3NhZ2VXaW5kb3ciOworCitD
YWxsSlNUaGF0RGVzdHJveXNQbHVnaW46On5DYWxsSlNUaGF0RGVzdHJveXNQbHVnaW4oKQorewor
ICAgIDo6UmVtb3ZlUHJvcFcobV93aW5kb3csIHBsdWdpblRlc3RQcm9wZXJ0eSk7CisgICAgOjpE
ZXN0cm95V2luZG93KG1fd2luZG93KTsKK30KKworTlBFcnJvciBDYWxsSlNUaGF0RGVzdHJveXNQ
bHVnaW46Ok5QUF9EZXN0cm95KE5QU2F2ZWREYXRhKiopCit7CisgICAgbV9pc0Rlc3Ryb3llZCA9
IHRydWU7CisgICAgbG9nKCJQbHVnLWluIGRlc3Ryb3llZC4iKTsKKyAgICBub3RpZnlEb25lKCk7
CisgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOworfQorCitzdGF0aWMgTFJFU1VMVCBDQUxMQkFD
SyB3bmRQcm9jKEhXTkQgaHduZCwgVUlOVCBtc2csIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFy
YW0pCit7CisgICAgaWYgKG1zZyAhPSBydW5UZXN0V2luZG93TWVzc2FnZSkKKyAgICAgICAgcmV0
dXJuIDo6RGVmV2luZG93UHJvY1coaHduZCwgbXNnLCB3UGFyYW0sIGxQYXJhbSk7CisKKyAgICBD
YWxsSlNUaGF0RGVzdHJveXNQbHVnaW4qIHBsdWdpblRlc3QgPSByZWludGVycHJldF9jYXN0PENh
bGxKU1RoYXREZXN0cm95c1BsdWdpbio+KDo6R2V0UHJvcFcoaHduZCwgcGx1Z2luVGVzdFByb3Bl
cnR5KSk7CisgICAgcGx1Z2luVGVzdC0+cnVuVGVzdCgpOworICAgIHJldHVybiAwOworfQorCitO
UEVycm9yIENhbGxKU1RoYXREZXN0cm95c1BsdWdpbjo6TlBQX0Rlc3Ryb3lTdHJlYW0oTlBTdHJl
YW0qLCBOUFJlYXNvbikKK3sKKyAgICBhc3NlcnQoIW1fd2luZG93KTsKKworICAgIFdORENMQVNT
RVhXIHduZENsYXNzID0gezB9OworICAgIHduZENsYXNzLmNiU2l6ZSA9IHNpemVvZih3bmRDbGFz
cyk7CisgICAgd25kQ2xhc3MubHBmblduZFByb2MgPSB3bmRQcm9jOworICAgIHduZENsYXNzLmhD
dXJzb3IgPSBMb2FkQ3Vyc29yKDAsIElEQ19BUlJPVyk7CisgICAgd25kQ2xhc3MuaEluc3RhbmNl
ID0gR2V0TW9kdWxlSGFuZGxlKDApOworICAgIHduZENsYXNzLmxwc3pDbGFzc05hbWUgPSBtZXNz
YWdlV2luZG93Q2xhc3NOYW1lOworCisgICAgOjpSZWdpc3RlckNsYXNzRXhXKCZ3bmRDbGFzcyk7
CisgICAgbV93aW5kb3cgPSA6OkNyZWF0ZVdpbmRvd0V4VygwLCBtZXNzYWdlV2luZG93Q2xhc3NO
YW1lLCAwLCBXU19DSElMRCwgMCwgMCwgMCwgMCwgSFdORF9NRVNTQUdFLCAwLCBHZXRNb2R1bGVI
YW5kbGUoMCksIDApOworCisgICAgOjpTZXRQcm9wVyhtX3dpbmRvdywgcGx1Z2luVGVzdFByb3Bl
cnR5LCByZWludGVycHJldF9jYXN0PEhBTkRMRT4odGhpcykpOworICAgIDo6UG9zdE1lc3NhZ2VX
KG1fd2luZG93LCBydW5UZXN0V2luZG93TWVzc2FnZSwgMCwgMCk7CisKKyAgICByZXR1cm4gTlBF
UlJfTk9fRVJST1I7Cit9CisKK3ZvaWQgQ2FsbEpTVGhhdERlc3Ryb3lzUGx1Z2luOjpydW5UZXN0
KCkKK3sKKyAgICBleGVjdXRlU2NyaXB0KCJ2YXIgcGx1Z2luID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoJ2VtYmVkJylbMF07IHBsdWdpbi5wYXJlbnRFbGVtZW50LnJlbW92ZUNoaWxk
KHBsdWdpbik7Iik7CisgICAgaWYgKCFtX2lzRGVzdHJveWVkKQorICAgICAgICBsb2coIlN1Y2Nl
c3M6IGV4ZWN1dGVkIHNjcmlwdCwgYW5kIHBsdWctaW4gaXMgbm90IHlldCBkZXN0cm95ZWQuIik7
Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvVGVzdE5ldHNjYXBlUGx1Z0luL3dpbi9UZXN0TmV0c2NhcGVQbHVnaW4udmNwcm9q
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE5ldHNjYXBlUGx1Z0luL3dpbi9UZXN0TmV0c2Nh
cGVQbHVnaW4udmNwcm9qCmluZGV4IDYzMWUzYzYuLjRlMGJkOGMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2FwZVBsdWdJbi93aW4vVGVzdE5ldHNjYXBlUGx1Z2lu
LnZjcHJvagorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4vd2lu
L1Rlc3ROZXRzY2FwZVBsdWdpbi52Y3Byb2oKQEAgLTM5MCw2ICszOTAsMTAgQEAKIAkJCU5hbWU9
IlRlc3RzIgogCQkJPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii5cQ2FsbEpTVGhhdERl
c3Ryb3lzUGx1Z2luLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0
aXZlUGF0aD0iLi5cVGVzdHNcRG9jdW1lbnRPcGVuSW5EZXN0cm95U3RyZWFtLmNwcCIKIAkJCQk+
CiAJCQk8L0ZpbGU+Ci0tIAoxLjcuNAoK
</data>
<flag name="review"
          id="88117"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
      

    </bug>

</bugzilla>