<?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>126979</bug_id>
          
          <creation_ts>2014-01-14 05:19:34 -0800</creation_ts>
          <short_desc>[GTK] Web process sometimes crashes when printing in synchronous mode</short_desc>
          <delta_ts>2014-01-15 09:33:35 -0800</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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>126977</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andersca</cc>
    
    <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ltilve</cc>
    
    <cc>rakuco</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>967770</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-01-14 05:19:34 -0800</bug_when>
    <thetext>The problem is that it&apos;s still possible to receive and process the EndPrinting message while the print operation is ongoing. For rendering print pages we are using a nested main loop and idle sources with a higher priority than the idle source used by the I/O thread, so that EndPrinting is never processed until the printing has actually finished. The problem is that sometimes the EndPrinting message is received before starting to render the pages, while we are still enumerating the printers to find the required one. When running in sync mode gtk_enumerate_printers() also uses a nested main loop, so that while waiting for the printer backends to reply, the EndPrinting message can be attended by the run loop, deleting the print context and the print operation. When gtk_enumerate_printers() finishes, the print operation has already been deleted unexpectedly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968251</commentid>
    <comment_count>1</comment_count>
      <attachid>221254</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-01-15 02:53:16 -0800</bug_when>
    <thetext>Created attachment 221254
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968269</commentid>
    <comment_count>2</comment_count>
      <attachid>221254</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2014-01-15 04:26:25 -0800</bug_when>
    <thetext>Comment on attachment 221254
Patch

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

LGTM, only a few questions to ensure I understood the life-cycle of the printer list correctly.

&gt; Source/WebKit2/ChangeLog:12
&gt; +        UI process like EndPrinting. When the EndPriting message is

Readability would be improved by using longer lines and/or splitting in paragraphs, I think.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp:610
&gt; +    RefPtr&lt;PrinterListGtk&gt; printerList = PrinterListGtk::shared();

Do I understand correctly that the printer list is kept alive by this reference, but is destroyed afterwards? I was a bit concerned when I saw PrinterListGtk::s_sharedPrinterList, since that could mean the printer list would only be obtained once, but I think I understand the idea now.

&gt; Source/WebKit2/WebProcess/WebPage/gtk/PrinterListGtk.h:53
&gt; +    Vector&lt;GRefPtr&lt;GtkPrinter&gt;, 4&gt; m_printerList;

Any particular reason for using 4 here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968282</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-01-15 04:56:31 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 221254 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=221254&amp;action=review
&gt; 
&gt; LGTM, only a few questions to ensure I understood the life-cycle of the printer list correctly.

Thanks!

&gt; &gt; Source/WebKit2/ChangeLog:12
&gt; &gt; +        UI process like EndPrinting. When the EndPriting message is
&gt; 
&gt; Readability would be improved by using longer lines and/or splitting in paragraphs, I think.

my emacs. . . 

&gt; &gt; Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp:610
&gt; &gt; +    RefPtr&lt;PrinterListGtk&gt; printerList = PrinterListGtk::shared();
&gt; 
&gt; Do I understand correctly that the printer list is kept alive by this reference, but is destroyed afterwards? I was a bit concerned when I saw PrinterListGtk::s_sharedPrinterList, since that could mean the printer list would only be obtained once, but I think I understand the idea now.

Yes, it&apos;s tricky. The thing is that for sync printing, we need to make sure that the PrinterList object has already been created, for async printing the PrinterList object is created in WebPrintOperationGtk::startPrint(). The shared method returns a RefPtr, but when created the reference is adopted. So what happens is the following:

Sync printing:

WebChromeClient::print() -&gt; creates the PrinterList
WebPrintOperationGtk::startPrint() -&gt; gets a ref of the existing PrinterList
WebPrintOperationGtk::startPrint() -&gt; releases its ref
WebChromeClient::print() -&gt; PrinterList is destroyed

Async printing:

WebPrintOperationGtk::startPrint() -&gt; creates the PrinterList
WebPrintOperationGtk::startPrint() -&gt;  PrinterList is destroyed

&gt; &gt; Source/WebKit2/WebProcess/WebPage/gtk/PrinterListGtk.h:53
&gt; &gt; +    Vector&lt;GRefPtr&lt;GtkPrinter&gt;, 4&gt; m_printerList;
&gt; 
&gt; Any particular reason for using 4 here?

Nope, I assumed there are usually less than 4 printers (print to file, real printer and possibly a cups-pdf virtual printer).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968284</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-01-15 05:00:41 -0800</bug_when>
    <thetext>Adding wk2 owner because of the change in WebChromeClient</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968297</commentid>
    <comment_count>5</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2014-01-15 06:05:50 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; &gt; &gt; Source/WebKit2/ChangeLog:12
&gt; &gt; &gt; +        UI process like EndPrinting. When the EndPriting message is
&gt; &gt; 
&gt; &gt; Readability would be improved by using longer lines and/or splitting in paragraphs, I think.
&gt; 
&gt; my emacs. . . 

Mx- set-fill-column &lt;RET&gt; 92 &lt;RET&gt;

\o/ =)
 
&gt; &gt; Do I understand correctly that the printer list is kept alive by this reference, but is destroyed afterwards? I was a bit concerned when I saw PrinterListGtk::s_sharedPrinterList, since that could mean the printer list would only be obtained once, but I think I understand the idea now.
&gt; 
&gt; Yes, it&apos;s tricky. The thing is that for sync printing, we need to make sure that the PrinterList object has already 
…

Makes sense, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968362</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-01-15 09:33:35 -0800</bug_when>
    <thetext>Committed r162073: &lt;http://trac.webkit.org/changeset/162073&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221254</attachid>
            <date>2014-01-15 02:53:16 -0800</date>
            <delta_ts>2014-01-15 04:26:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-printing-crash.diff</filename>
            <type>text/plain</type>
            <size>18100</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBjMmFlMDgyLi5hZjNlOWZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1
IEBACisyMDE0LTAxLTE1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KKworICAgICAgICBbR1RLXSBXZWIgcHJvY2VzcyBzb21ldGltZXMgY3Jhc2hlcyB3aGVuIHBy
aW50aW5nIGluIHN5bmNocm9ub3VzIG1vZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyNjk3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFdoZW4gcHJpbnRpbmcgc3luY2hyb25vdXNseSBpbiBHVEsrIHdl
IG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgd2UKKyAgICAgICAgaGF2ZSBhIGxpc3Qgb2YgUHJpbnRl
cnMgYmVmb3JlIHN0YXJ0aW5nIHRoZSBwcmludCBvcGVyYXRpb24uIEdldHRpbmcKKyAgICAgICAg
dGhlIGxpc3Qgb2YgcHJpbnRlcnMgaXMgZG9uZSBzeW5jaHJvbm91c2x5IGJ5IEdUSyssIGJ1dCB1
c2luZyBhCisgICAgICAgIG5lc3RlZCBtYWluIGxvb3AgdGhhdCBtaWdodCBwcm9jZXNzIElQQyBt
ZXNzYWdlcyBjb21taW5nIGZyb20gdGhlCisgICAgICAgIFVJIHByb2Nlc3MgbGlrZSBFbmRQcmlu
dGluZy4gV2hlbiB0aGUgRW5kUHJpdGluZyBtZXNzYWdlIGlzCisgICAgICAgIHJlY2VpdmVkIHdo
aWxlIHRoZSBwcmludGVyIGxpc3QgaXMgYmVpbmcgcG9wdWxhdGVkLCB0aGUgcHJpbnQKKyAgICAg
ICAgb3BlcmF0aW9uIGlzIGZpbmlzaGVkIHVuZXhwZWN0ZWx5IGFuZCB0aGUgd2ViIHByb2Nlc3Mg
Y3Jhc2hlcy4gVGhlCisgICAgICAgIFByaW50ZXJMaXN0R3RrIGNsYXNzIGdldHMgdGhlIGxpc3Qg
b2YgcHJpbnRlcnMgaW4gdGhlIGNvbnN0cnVjdG9yCisgICAgICAgIHNvIHdlIGp1c3QgbmVlZCB0
byBlbnN1cmUgdGhlcmUncyBhbiBpbnN0YW5jZSBhbGl2ZSBkdXJpbmcgdGhlCisgICAgICAgIHN5
bmNocm9ub3VzIHByaW50IG9wZXJhdGlvbi4gSW4gY2FzZSBvZiBhc3luY2hyb25vdXMgcHJpbnRp
bmcgdGhlCisgICAgICAgIHByaW50ZXIgbGlzdCB3aWxsIGJlIGNyZWF0ZWQgZHVyaW5nIHRoZSBw
cmludCBvcGVyYXRpb24gd2l0aG91dAorICAgICAgICBhbnkgcmlzaywgYmVjYXVzZSB0aGUgRW5k
UHJpbnRpbmcgbWVzc2FnZSBpcyBub3Qgc2VudCB1bnRpbCB0aGUKKyAgICAgICAgcHJpbnRpbmcg
Y2FsbGJhY2sgaGFzIGJlZW4gcmVjZWl2ZWQgaW4gdGhlIFVJIHByb2Nlc3MuCisKKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5saXN0LmFtOiBBZGQgbmV3IGZpbGVzIHRvIGNvbXBpbGF0aW9uLgorICAg
ICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOiBEaXR0by4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNo
cm9tZUNsaWVudDo6cHJpbnQpOiBFbnN1cmUgUHJpbnRlckxpc3RHdGsgaXMgY3JlYXRlZAorICAg
ICAgICBiZWZvcmUgdGhlIHN5bmNocm9ub3VzIHByaW50aW5nIGFuZCBkZXN0cm95ZWQgYWZ0ZXJ3
YXJkcy4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1ByaW50ZXJMaXN0R3RrLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlByaW50ZXJMaXN0R3RrOjpzaGFyZWQpOiBSZXR1
cm4gdGhlIHNpbmdsZXRvbi4KKyAgICAgICAgKFdlYktpdDo6UHJpbnRlckxpc3RHdGs6OmVudW1l
cmF0ZVByaW50ZXJzRnVuY3Rpb24pOiBDYWxsYmFjaworICAgICAgICBjYWxsZWQgYnkgZ3RrX2Vu
dW1lcmF0ZV9wcmludGVycygpIHdoZW4gYSBuZXcgcHJpbnRlciBpcyBmb3VuZC4KKyAgICAgICAg
KFdlYktpdDo6UHJpbnRlckxpc3RHdGs6OlByaW50ZXJMaXN0R3RrKTogQ2FsbAorICAgICAgICBn
dGtfZW51bWVyYXRlX3ByaW50ZXJzKCkgaW4gc3loY2hyb25vdXMgbW9kZS4KKyAgICAgICAgKFdl
YktpdDo6UHJpbnRlckxpc3RHdGs6On5QcmludGVyTGlzdEd0ayk6CisgICAgICAgIChXZWJLaXQ6
OlByaW50ZXJMaXN0R3RrOjphZGRQcmludGVyKTogQWRkIHRoZSBwcmludGVyIHRvIHRoZSBsaXN0
CisgICAgICAgIGFuZCBzZXQgdGhlIGRlZmF1bHQgcHJpbnRlciBpZiBuZWVkZWQuCisgICAgICAg
IChXZWJLaXQ6OlByaW50ZXJMaXN0R3RrOjpmaW5kUHJpbnRlcik6IEZpbmQgdGhlIHByaW50ZXIg
Zm9yIHRoZQorICAgICAgICBnaXZlbiBuYW1lLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9ndGsvUHJpbnRlckxpc3RHdGsuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHA6IFVzZQorICAgICAgICBQcmludGVyTGlz
dEd0ayBjbGFzcyB0byBmaW5kIHRoZSBwcmludGVyIGluc3RlYWQgb2YgY2FsbGluZworICAgICAg
ICBndGtfZW51bWVyYXRlX3ByaW50ZXJzKCkuCisKIDIwMTQtMDEtMTQgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFVJIHByb2Nlc3Mg
Y3Jhc2hlcyB3aGVuIGNsb3NpbmcgdGhlIHdpbmRvdyByaWdodCBhZnRlciBwcmludGluZyB3aXRo
IGphdmFzY3JpcHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3Qu
YW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDY2ZjE3OWMuLjQ3
MWQ4YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysr
IGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTI0Myw2ICsxMjQzLDgg
QEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvVGFwSGlnaGxpZ2h0Q29udHJvbGxlci5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvYXRrL1dlYlBhZ2VBY2Nlc3NpYmlsaXR5T2JqZWN0LmggXAogCVNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9hdGsvV2ViUGFnZUFjY2Vzc2liaWxpdHlPYmplY3RBdGsu
Y3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1ByaW50ZXJMaXN0
R3RrLmggXAorCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvUHJpbnRlckxp
c3RHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYklu
c3BlY3Rvckd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsv
V2ViUGFnZUd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsv
V2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXgg
OTg4NDJjMi4uZmNjYTg1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsu
Y21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTI4Myw2ICsy
ODMsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBXZWJQcm9jZXNzL1dlYlBh
Z2UvYXRrL1dlYlBhZ2VBY2Nlc3NpYmlsaXR5T2JqZWN0QXRrLmNwcAogCiAgICAgV2ViUHJvY2Vz
cy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmNwcAorICAgIFdlYlByb2Nlc3MvV2ViUGFn
ZS9ndGsvUHJpbnRlckxpc3RHdGsuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJJ
bnNwZWN0b3JHdGsuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNw
cAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggMTBhOTExZC4uNmJmMjVhNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcApAQCAtNzMsNiArNzMsMTAgQEAKICNpbmNsdWRlICJSZW1vdGVTY3JvbGxp
bmdDb29yZGluYXRvci5oIgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShHVEspCisjaW5jbHVkZSAi
UHJpbnRlckxpc3RHdGsuaCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVz
aW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKQEAgLTU5Niw2ICs2MDAsMTYgQEAgdm9pZCBXZWJD
aHJvbWVDbGllbnQ6OnByaW50KEZyYW1lKiBmcmFtZSkKICAgICBXZWJGcmFtZSogd2ViRnJhbWUg
PSB3ZWJGcmFtZUxvYWRlckNsaWVudCA/IHdlYkZyYW1lTG9hZGVyQ2xpZW50LT53ZWJGcmFtZSgp
IDogMDsKICAgICBBU1NFUlQod2ViRnJhbWUpOwogCisjaWYgUExBVEZPUk0oR1RLKSAmJiBkZWZp
bmVkKEhBVkVfR1RLX1VOSVhfUFJJTlRJTkcpCisgICAgLy8gV2hlbiBwcmludGluZyBzeW5jaHJv
bm91c2x5IGluIEdUSysgd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB3ZSBoYXZlIGEgbGlzdCBv
ZiBQcmludGVycyBiZWZvcmUgc3RhcnRpbmcgdGhlIHByaW50IG9wZXJhdGlvbi4KKyAgICAvLyBH
ZXR0aW5nIHRoZSBsaXN0IG9mIHByaW50ZXJzIGlzIGRvbmUgc3luY2hyb25vdXNseSBieSBHVEsr
LCBidXQgdXNpbmcgYSBuZXN0ZWQgbWFpbiBsb29wIHRoYXQgbWlnaHQgcHJvY2VzcyBJUEMgbWVz
c2FnZXMKKyAgICAvLyBjb21taW5nIGZyb20gdGhlIFVJIHByb2Nlc3MgbGlrZSBFbmRQcmludGlu
Zy4gV2hlbiB0aGUgRW5kUHJpdGluZyBtZXNzYWdlIGlzIHJlY2VpdmVkIHdoaWxlIHRoZSBwcmlu
dGVyIGxpc3QgaXMgYmVpbmcgcG9wdWxhdGVkLAorICAgIC8vIHRoZSBwcmludCBvcGVyYXRpb24g
aXMgZmluaXNoZWQgdW5leHBlY3RlbHkgYW5kIHRoZSB3ZWIgcHJvY2VzcyBjcmFzaGVzLCBzZWUg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjk3OS4KKyAgICAvLyBU
aGUgUHJpbnRlckxpc3RHdGsgY2xhc3MgZ2V0cyB0aGUgbGlzdCBvZiBwcmludGVycyBpbiB0aGUg
Y29uc3RydWN0b3Igc28gd2UganVzdCBuZWVkIHRvIGVuc3VyZSB0aGVyZSdzIGFuIGluc3RhbmNl
IGFsaXZlCisgICAgLy8gZHVyaW5nIHRoZSBzeW5jaHJvbm91cyBwcmludCBvcGVyYXRpb24uCisg
ICAgUmVmUHRyPFByaW50ZXJMaXN0R3RrPiBwcmludGVyTGlzdCA9IFByaW50ZXJMaXN0R3RrOjpz
aGFyZWQoKTsKKyNlbmRpZgorCiAgICAgbV9wYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpQcmludEZyYW1lKHdlYkZyYW1lLT5mcmFtZUlEKCkpLCBNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpQcmludEZyYW1lOjpSZXBseSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9QcmludGVyTGlzdEd0ay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1ByaW50ZXJMaXN0R3RrLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDU0YmNjCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9QcmludGVyTGlzdEd0ay5jcHAK
QEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHJpbnRlckxpc3RHdGsu
aCIKKworI2lmZGVmIEhBVkVfR1RLX1VOSVhfUFJJTlRJTkcKKworI2luY2x1ZGUgPGd0ay9ndGt1
bml4cHJpbnQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1ByaW50ZXJMaXN0R3RrKiBQcmlu
dGVyTGlzdEd0azo6c19zaGFyZWRQcmludGVyTGlzdCA9IG51bGxwdHI7CisKK1JlZlB0cjxQcmlu
dGVyTGlzdEd0az4gUHJpbnRlckxpc3RHdGs6OnNoYXJlZCgpCit7CisgICAgaWYgKHNfc2hhcmVk
UHJpbnRlckxpc3QpCisgICAgICAgIHJldHVybiBzX3NoYXJlZFByaW50ZXJMaXN0OworCisgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBQcmludGVyTGlzdEd0ayk7Cit9CisKK2dib29sZWFuIFByaW50
ZXJMaXN0R3RrOjplbnVtZXJhdGVQcmludGVyc0Z1bmN0aW9uKEd0a1ByaW50ZXIqIHByaW50ZXIp
Cit7CisgICAgQVNTRVJUKHNfc2hhcmVkUHJpbnRlckxpc3QpOworICAgIHNfc2hhcmVkUHJpbnRl
ckxpc3QtPmFkZFByaW50ZXIocHJpbnRlcik7CisgICAgcmV0dXJuIEZBTFNFOworfQorCitQcmlu
dGVyTGlzdEd0azo6UHJpbnRlckxpc3RHdGsoKQorICAgIDogbV9kZWZhdWx0UHJpbnRlcihudWxs
cHRyKQoreworICAgIEFTU0VSVCghc19zaGFyZWRQcmludGVyTGlzdCk7CisgICAgc19zaGFyZWRQ
cmludGVyTGlzdCA9IHRoaXM7CisgICAgZ3RrX2VudW1lcmF0ZV9wcmludGVycyhyZWludGVycHJl
dF9jYXN0PEd0a1ByaW50ZXJGdW5jPigmZW51bWVyYXRlUHJpbnRlcnNGdW5jdGlvbiksIG51bGxw
dHIsIG51bGxwdHIsIFRSVUUpOworfQorCitQcmludGVyTGlzdEd0azo6flByaW50ZXJMaXN0R3Rr
KCkKK3sKKyAgICBBU1NFUlQoc19zaGFyZWRQcmludGVyTGlzdCk7CisgICAgc19zaGFyZWRQcmlu
dGVyTGlzdCA9IG51bGxwdHI7Cit9CisKK3ZvaWQgUHJpbnRlckxpc3RHdGs6OmFkZFByaW50ZXIo
R3RrUHJpbnRlciogcHJpbnRlcikKK3sKKyAgICBtX3ByaW50ZXJMaXN0LmFwcGVuZChwcmludGVy
KTsKKyAgICBpZiAoZ3RrX3ByaW50ZXJfaXNfZGVmYXVsdChwcmludGVyKSkKKyAgICAgICAgbV9k
ZWZhdWx0UHJpbnRlciA9IHByaW50ZXI7Cit9CisKK0d0a1ByaW50ZXIqIFByaW50ZXJMaXN0R3Rr
OjpmaW5kUHJpbnRlcihjb25zdCBjaGFyKiBwcmludGVyTmFtZSkgY29uc3QKK3sKKyAgICBmb3Ig
KGF1dG8mIHByaW50ZXIgOiBtX3ByaW50ZXJMaXN0KSB7CisgICAgICAgIGlmICghc3RyY21wKHBy
aW50ZXJOYW1lLCBndGtfcHJpbnRlcl9nZXRfbmFtZShwcmludGVyLmdldCgpKSkpCisgICAgICAg
ICAgICByZXR1cm4gcHJpbnRlci5nZXQoKTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gSEFWRV9HVEtfVU5JWF9QUklO
VElORwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9Q
cmludGVyTGlzdEd0ay5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9Q
cmludGVyTGlzdEd0ay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkOGE5
NTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Z3RrL1ByaW50ZXJMaXN0R3RrLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFByaW50ZXJMaXN0R3RrX2gK
KyNkZWZpbmUgUHJpbnRlckxpc3RHdGtfaAorCisjaWZkZWYgSEFWRV9HVEtfVU5JWF9QUklOVElO
RworCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgorCit0eXBlZGVmIHN0cnVjdCBfR3Rr
UHJpbnRlciBHdGtQcmludGVyOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUHJpbnRl
ckxpc3RHdGs6IHB1YmxpYyBSZWZDb3VudGVkPFByaW50ZXJMaXN0R3RrPiB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFJlZlB0cjxQcmludGVyTGlzdEd0az4gc2hhcmVkKCk7CisgICAgflByaW50ZXJM
aXN0R3RrKCk7CisKKyAgICBHdGtQcmludGVyKiBmaW5kUHJpbnRlcihjb25zdCBjaGFyKikgY29u
c3Q7CisgICAgR3RrUHJpbnRlciogZGVmYXVsdFByaW50ZXIoKSBjb25zdCB7IHJldHVybiBtX2Rl
ZmF1bHRQcmludGVyOyB9CisKK3ByaXZhdGU6CisgICAgUHJpbnRlckxpc3RHdGsoKTsKKworICAg
IHN0YXRpYyBnYm9vbGVhbiBlbnVtZXJhdGVQcmludGVyc0Z1bmN0aW9uKEd0a1ByaW50ZXIqKTsK
KyAgICB2b2lkIGFkZFByaW50ZXIoR3RrUHJpbnRlciopOworCisgICAgVmVjdG9yPEdSZWZQdHI8
R3RrUHJpbnRlcj4sIDQ+IG1fcHJpbnRlckxpc3Q7CisgICAgR3RrUHJpbnRlciogbV9kZWZhdWx0
UHJpbnRlcjsKKyAgICBzdGF0aWMgUHJpbnRlckxpc3RHdGsqIHNfc2hhcmVkUHJpbnRlckxpc3Q7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEhBVkVfR1RLX1VOSVhf
UFJJTlRJTkcKKworI2VuZGlmIC8vIFdlYlByaW50T3BlcmF0aW9uR3RrX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25H
dGsuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9w
ZXJhdGlvbkd0ay5jcHAKaW5kZXggMzA0MTU5Yy4uN2Y3NTBlOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJh
dGlvbkd0ay5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3du
UHRyLmg+CiAKICNpZmRlZiBIQVZFX0dUS19VTklYX1BSSU5USU5HCisjaW5jbHVkZSAiUHJpbnRl
ckxpc3RHdGsuaCIKICNpbmNsdWRlIDxjYWlyby1wZGYuaD4KICNpbmNsdWRlIDxjYWlyby1wcy5o
PgogI2luY2x1ZGUgPGd0ay9ndGt1bml4cHJpbnQuaD4KQEAgLTU2LDYwICs1Nyw0NyBAQCBwdWJs
aWM6CiAgICAgewogICAgIH0KIAotICAgIHN0YXRpYyBnYm9vbGVhbiBlbnVtZXJhdGVQcmludGVy
c0Z1bmN0aW9uKEd0a1ByaW50ZXIqIHByaW50ZXIsIFdlYlByaW50T3BlcmF0aW9uR3RrVW5peCog
cHJpbnRPcGVyYXRpb24pCisgICAgdm9pZCBzdGFydFByaW50KFdlYkNvcmU6OlByaW50Q29udGV4
dCogcHJpbnRDb250ZXh0LCB1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIHsKLSAgICAgICAgY29u
c3QgY2hhciogcHJpbnRlck5hbWUgPSBndGtfcHJpbnRfc2V0dGluZ3NfZ2V0X3ByaW50ZXIocHJp
bnRPcGVyYXRpb24tPnByaW50U2V0dGluZ3MoKSk7Ci0gICAgICAgIGlmICgocHJpbnRlck5hbWUg
JiYgc3RyY21wKHByaW50ZXJOYW1lLCBndGtfcHJpbnRlcl9nZXRfbmFtZShwcmludGVyKSkpCi0g
ICAgICAgICAgICB8fCAoIXByaW50ZXJOYW1lICYmICFndGtfcHJpbnRlcl9pc19kZWZhdWx0KHBy
aW50ZXIpKSkKLSAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgbV9wcmludENvbnRl
eHQgPSBwcmludENvbnRleHQ7CisgICAgICAgIG1fY2FsbGJhY2tJRCA9IGNhbGxiYWNrSUQ7CisK
KyAgICAgICAgUmVmUHRyPFByaW50ZXJMaXN0R3RrPiBwcmludGVyTGlzdCA9IFByaW50ZXJMaXN0
R3RrOjpzaGFyZWQoKTsKKyAgICAgICAgY29uc3QgY2hhciogcHJpbnRlck5hbWUgPSBndGtfcHJp
bnRfc2V0dGluZ3NfZ2V0X3ByaW50ZXIobV9wcmludFNldHRpbmdzLmdldCgpKTsKKyAgICAgICAg
R3RrUHJpbnRlciogcHJpbnRlciA9IHByaW50ZXJOYW1lID8gcHJpbnRlckxpc3QtPmZpbmRQcmlu
dGVyKHByaW50ZXJOYW1lKSA6IHByaW50ZXJMaXN0LT5kZWZhdWx0UHJpbnRlcigpOworICAgICAg
ICBpZiAoIXByaW50ZXIpIHsKKyAgICAgICAgICAgIHByaW50RG9uZShwcmludGVyTm90Rm91bmRF
cnJvcihtX3ByaW50Q29udGV4dCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAK
ICAgICAgICAgc3RhdGljIGludCBqb2JOdW1iZXIgPSAwOwogICAgICAgICBjb25zdCBjaGFyKiBh
cHBsaWNhdGlvbk5hbWUgPSBnX2dldF9hcHBsaWNhdGlvbl9uYW1lKCk7CiAgICAgICAgIEdPd25Q
dHI8Y2hhcj5qb2JOYW1lKGdfc3RyZHVwX3ByaW50ZigiJXMgam9iICMlZCIsIGFwcGxpY2F0aW9u
TmFtZSA/IGFwcGxpY2F0aW9uTmFtZSA6ICJXZWJLaXQiLCArK2pvYk51bWJlcikpOwotICAgICAg
ICBwcmludE9wZXJhdGlvbi0+bV9wcmludEpvYiA9IGFkb3B0R1JlZihndGtfcHJpbnRfam9iX25l
dyhqb2JOYW1lLmdldCgpLCBwcmludGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludE9wZXJhdGlvbi0+cHJpbnRT
ZXR0aW5ncygpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwcmludE9wZXJhdGlvbi0+cGFnZVNldHVwKCkpKTsKLSAgICAg
ICAgcmV0dXJuIFRSVUU7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgZW51bWVyYXRlUHJpbnRl
cnNGaW5pc2hlZChXZWJQcmludE9wZXJhdGlvbkd0a1VuaXgqIHByaW50T3BlcmF0aW9uKQotICAg
IHsKLSAgICAgICAgaWYgKCFwcmludE9wZXJhdGlvbi0+bV9wcmludEpvYikgewotICAgICAgICAg
ICAgcHJpbnRPcGVyYXRpb24tPnByaW50RG9uZShwcmludGVyTm90Rm91bmRFcnJvcihwcmludE9w
ZXJhdGlvbi0+bV9wcmludENvbnRleHQpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQorICAgICAgICBtX3ByaW50Sm9iID0gYWRvcHRHUmVmKGd0a19wcmludF9qb2JfbmV3KGpvYk5h
bWUuZ2V0KCksIHByaW50ZXIsIG1fcHJpbnRTZXR0aW5ncy5nZXQoKSwgbV9wYWdlU2V0dXAuZ2V0
KCkpKTsKIAogICAgICAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7Ci0gICAgICAgIGNhaXJvX3N1
cmZhY2VfdCogc3VyZmFjZSA9IGd0a19wcmludF9qb2JfZ2V0X3N1cmZhY2UocHJpbnRPcGVyYXRp
b24tPm1fcHJpbnRKb2IuZ2V0KCksICZlcnJvci5vdXRQdHIoKSk7CisgICAgICAgIGNhaXJvX3N1
cmZhY2VfdCogc3VyZmFjZSA9IGd0a19wcmludF9qb2JfZ2V0X3N1cmZhY2UobV9wcmludEpvYi5n
ZXQoKSwgJmVycm9yLm91dFB0cigpKTsKICAgICAgICAgaWYgKCFzdXJmYWNlKSB7Ci0gICAgICAg
ICAgICBwcmludE9wZXJhdGlvbi0+cHJpbnREb25lKHByaW50RXJyb3IocHJpbnRPcGVyYXRpb24t
Pm1fcHJpbnRDb250ZXh0LCBlcnJvci0+bWVzc2FnZSkpOworICAgICAgICAgICAgcHJpbnREb25l
KHByaW50RXJyb3IobV9wcmludENvbnRleHQsIGVycm9yLT5tZXNzYWdlKSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBpbnQgcmFuZ2VzQ291bnQ7Ci0gICAgICAg
IHByaW50T3BlcmF0aW9uLT5tX3BhZ2VSYW5nZXMgPSBndGtfcHJpbnRfam9iX2dldF9wYWdlX3Jh
bmdlcyhwcmludE9wZXJhdGlvbi0+bV9wcmludEpvYi5nZXQoKSwgJnJhbmdlc0NvdW50KTsKLSAg
ICAgICAgcHJpbnRPcGVyYXRpb24tPm1fcGFnZVJhbmdlc0NvdW50ID0gcmFuZ2VzQ291bnQ7Ci0g
ICAgICAgIHByaW50T3BlcmF0aW9uLT5tX3BhZ2VzVG9QcmludCA9IGd0a19wcmludF9qb2JfZ2V0
X3BhZ2VzKHByaW50T3BlcmF0aW9uLT5tX3ByaW50Sm9iLmdldCgpKTsKLSAgICAgICAgcHJpbnRP
cGVyYXRpb24tPm1fbmVlZHNSb3RhdGlvbiA9IGd0a19wcmludF9qb2JfZ2V0X3JvdGF0ZShwcmlu
dE9wZXJhdGlvbi0+bV9wcmludEpvYi5nZXQoKSk7CisgICAgICAgIG1fcGFnZVJhbmdlcyA9IGd0
a19wcmludF9qb2JfZ2V0X3BhZ2VfcmFuZ2VzKG1fcHJpbnRKb2IuZ2V0KCksICZyYW5nZXNDb3Vu
dCk7CisgICAgICAgIG1fcGFnZVJhbmdlc0NvdW50ID0gcmFuZ2VzQ291bnQ7CisgICAgICAgIG1f
cGFnZXNUb1ByaW50ID0gZ3RrX3ByaW50X2pvYl9nZXRfcGFnZXMobV9wcmludEpvYi5nZXQoKSk7
CisgICAgICAgIG1fbmVlZHNSb3RhdGlvbiA9IGd0a19wcmludF9qb2JfZ2V0X3JvdGF0ZShtX3By
aW50Sm9iLmdldCgpKTsKIAogICAgICAgICAvLyBNYW51YWwgY2FwYWJpbGl0aWVzLgotICAgICAg
ICBwcmludE9wZXJhdGlvbi0+bV9udW1iZXJVcCA9IGd0a19wcmludF9qb2JfZ2V0X25fdXAocHJp
bnRPcGVyYXRpb24tPm1fcHJpbnRKb2IuZ2V0KCkpOwotICAgICAgICBwcmludE9wZXJhdGlvbi0+
bV9udW1iZXJVcExheW91dCA9IGd0a19wcmludF9qb2JfZ2V0X25fdXBfbGF5b3V0KHByaW50T3Bl
cmF0aW9uLT5tX3ByaW50Sm9iLmdldCgpKTsKLSAgICAgICAgcHJpbnRPcGVyYXRpb24tPm1fcGFn
ZVNldCA9IGd0a19wcmludF9qb2JfZ2V0X3BhZ2Vfc2V0KHByaW50T3BlcmF0aW9uLT5tX3ByaW50
Sm9iLmdldCgpKTsKLSAgICAgICAgcHJpbnRPcGVyYXRpb24tPm1fcmV2ZXJzZSA9IGd0a19wcmlu
dF9qb2JfZ2V0X3JldmVyc2UocHJpbnRPcGVyYXRpb24tPm1fcHJpbnRKb2IuZ2V0KCkpOwotICAg
ICAgICBwcmludE9wZXJhdGlvbi0+bV9jb3BpZXMgPSBndGtfcHJpbnRfam9iX2dldF9udW1fY29w
aWVzKHByaW50T3BlcmF0aW9uLT5tX3ByaW50Sm9iLmdldCgpKTsKLSAgICAgICAgcHJpbnRPcGVy
YXRpb24tPm1fY29sbGF0ZUNvcGllcyA9IGd0a19wcmludF9qb2JfZ2V0X2NvbGxhdGUocHJpbnRP
cGVyYXRpb24tPm1fcHJpbnRKb2IuZ2V0KCkpOwotICAgICAgICBwcmludE9wZXJhdGlvbi0+bV9z
Y2FsZSA9IGd0a19wcmludF9qb2JfZ2V0X3NjYWxlKHByaW50T3BlcmF0aW9uLT5tX3ByaW50Sm9i
LmdldCgpKTsKLQotICAgICAgICBwcmludE9wZXJhdGlvbi0+cHJpbnQoc3VyZmFjZSwgNzIsIDcy
KTsKLSAgICB9Ci0KLSAgICB2b2lkIHN0YXJ0UHJpbnQoV2ViQ29yZTo6UHJpbnRDb250ZXh0KiBw
cmludENvbnRleHQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgewotICAgICAgICBtX3ByaW50
Q29udGV4dCA9IHByaW50Q29udGV4dDsKLSAgICAgICAgbV9jYWxsYmFja0lEID0gY2FsbGJhY2tJ
RDsKLSAgICAgICAgZ3RrX2VudW1lcmF0ZV9wcmludGVycyhyZWludGVycHJldF9jYXN0PEd0a1By
aW50ZXJGdW5jPihlbnVtZXJhdGVQcmludGVyc0Z1bmN0aW9uKSwgdGhpcywKLSAgICAgICAgICAg
IHJlaW50ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KGVudW1lcmF0ZVByaW50ZXJzRmluaXNo
ZWQpLCBtX3ByaW50TW9kZSA9PSBQcmludEluZm86OlByaW50TW9kZVN5bmMpOworICAgICAgICBt
X251bWJlclVwID0gZ3RrX3ByaW50X2pvYl9nZXRfbl91cChtX3ByaW50Sm9iLmdldCgpKTsKKyAg
ICAgICAgbV9udW1iZXJVcExheW91dCA9IGd0a19wcmludF9qb2JfZ2V0X25fdXBfbGF5b3V0KG1f
cHJpbnRKb2IuZ2V0KCkpOworICAgICAgICBtX3BhZ2VTZXQgPSBndGtfcHJpbnRfam9iX2dldF9w
YWdlX3NldChtX3ByaW50Sm9iLmdldCgpKTsKKyAgICAgICAgbV9yZXZlcnNlID0gZ3RrX3ByaW50
X2pvYl9nZXRfcmV2ZXJzZShtX3ByaW50Sm9iLmdldCgpKTsKKyAgICAgICAgbV9jb3BpZXMgPSBn
dGtfcHJpbnRfam9iX2dldF9udW1fY29waWVzKG1fcHJpbnRKb2IuZ2V0KCkpOworICAgICAgICBt
X2NvbGxhdGVDb3BpZXMgPSBndGtfcHJpbnRfam9iX2dldF9jb2xsYXRlKG1fcHJpbnRKb2IuZ2V0
KCkpOworICAgICAgICBtX3NjYWxlID0gZ3RrX3ByaW50X2pvYl9nZXRfc2NhbGUobV9wcmludEpv
Yi5nZXQoKSk7CisKKyAgICAgICAgcHJpbnQoc3VyZmFjZSwgNzIsIDcyKTsKICAgICB9CiAKICAg
ICB2b2lkIHN0YXJ0UGFnZShjYWlyb190KiBjcikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3M2RmNTZiLi5kZjQyNThlIDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIw
MTQtMDEtMTUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFtHVEtdIFdlYiBwcm9jZXNzIHNvbWV0aW1lcyBjcmFzaGVzIHdoZW4gcHJpbnRpbmcg
aW4gc3luY2hyb25vdXMgbW9kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTI2OTc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1ndGstdGVzdHM6CisgICAgICAgIChUZXN0UnVubmVy
KTogVW5za2lwCisgICAgICAgIC93ZWJraXQyL1dlYktpdFByaW50T3BlcmF0aW9uL2Nsb3NlLWFm
dGVyLXByaW50LgorCiAyMDE0LTAxLTE0ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBVSSBwcm9jZXNzIGNyYXNoZXMgd2hlbiB0aGUg
d2ViIHByb2Nlc3MgY3Jhc2hlcyB3aGlsZSBwcmludGluZwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy9ydW4tZ3RrLXRlc3RzIGIvVG9vbHMvU2NyaXB0cy9ydW4tZ3RrLXRlc3RzCmluZGV4IDUx
ZjcxZWIuLmMwYTkxZjUgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvcnVuLWd0ay10ZXN0cwor
KysgYi9Ub29scy9TY3JpcHRzL3J1bi1ndGstdGVzdHMKQEAgLTY5LDcgKzY5LDYgQEAgY2xhc3Mg
VGVzdFJ1bm5lcjoKICAgICAgICAgU2tpcHBlZFRlc3QoIldlYktpdDJHdGsvVGVzdFVJQ2xpZW50
IiwgIi93ZWJraXQyL1dlYktpdFdlYlZpZXcvbW91c2UtdGFyZ2V0IiwgIlRlc3QgdGltZXMgb3V0
IGFmdGVyIHIxNTA4OTAiLCAxMTc2ODkpLAogICAgICAgICBTa2lwcGVkVGVzdCgiV2ViS2l0Mkd0
ay9UZXN0Q29udGV4dE1lbnUiLCBTa2lwcGVkVGVzdC5FTlRJUkVfU1VJVEUsICJUZXN0IHRpbWVz
IG91dCBhZnRlciByMTUwODkwIiwgMTE3Njg5KSwKICAgICAgICAgU2tpcHBlZFRlc3QoIldlYktp
dDJHdGsvVGVzdFdlYktpdFdlYlZpZXciLCAiL3dlYmtpdDIvV2ViS2l0V2ViVmlldy9zbmFwc2hv
dCIsICJUZXN0IGZhaWxzIiwgMTIwNDA0KSwKLSAgICAgICAgU2tpcHBlZFRlc3QoIldlYktpdDJH
dGsvVGVzdFByaW50aW5nIiwgIi93ZWJraXQyL1dlYktpdFByaW50T3BlcmF0aW9uL2Nsb3NlLWFm
dGVyLXByaW50IiwgIlRlc3QgdGltZXMgb3V0IiwgMTI2OTc5KSwKICAgICAgICAgU2tpcHBlZFRl
c3QoIldlYktpdDIvVGVzdFdlYktpdDIiLCAiV2ViS2l0Mi5Nb3VzZU1vdmVBZnRlckNyYXNoIiwg
IlRlc3QgaXMgZmxha3kiLCA4NTA2NiksCiAgICAgICAgIFNraXBwZWRUZXN0KCJXZWJLaXQyL1Rl
c3RXZWJLaXQyIiwgIldlYktpdDIuTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9ySW1h
Z2VzIiwgIlRlc3QgaXMgZmxha3kiLCA4NTA2NiksCiAgICAgICAgIFNraXBwZWRUZXN0KCJXZWJL
aXQyL1Rlc3RXZWJLaXQyIiwgIldlYktpdDIuTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
RnJhbWVzIiwgIlRlc3QgZmFpbHMiLCA4NTAzNyksCg==
</data>
<flag name="review"
          id="245127"
          type_id="1"
          status="+"
          setter="gustavo"
    />
          </attachment>
      

    </bug>

</bugzilla>