<?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>65920</bug_id>
          
          <creation_ts>2011-08-09 07:14:30 -0700</creation_ts>
          <short_desc>[Qt] [WK2] Provide API for intercept (and possible ignore) links clicked in QDesktopWebView</short_desc>
          <delta_ts>2011-08-19 12:16:14 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Qt</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>Qt, QtTriaged</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>65919</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Caio Marcelo de Oliveira Filho">cmarcelo</reporter>
          <assigned_to name="Caio Marcelo de Oliveira Filho">cmarcelo</assigned_to>
          <cc>benjamin</cc>
    
    <cc>igor.oliveira</cc>
    
    <cc>kenneth</cc>
    
    <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>448573</commentid>
    <comment_count>0</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-08-09 07:14:30 -0700</bug_when>
    <thetext>See bug 65919 for the whole picture. As a first step, implement the necessary plumbing and add a concrete (and QML-friendly) API in QDesktopWebView for enabling the &quot;Open in new Tab&quot; use case described in bug 65919.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448700</commentid>
    <comment_count>1</comment_count>
      <attachid>103377</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-08-09 11:34:34 -0700</bug_when>
    <thetext>Created attachment 103377
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449239</commentid>
    <comment_count>2</comment_count>
      <attachid>103377</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-08-10 10:56:23 -0700</bug_when>
    <thetext>Comment on attachment 103377
Patch

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

&gt; Source/WebKit2/Shared/qt/WebCoreArgumentCodersQt.cpp:41
&gt;  void ArgumentCoder&lt;ResourceRequest&gt;::encode(ArgumentEncoder* encoder, const ResourceRequest&amp; resourceRequest)
&gt;  {
&gt; -    notImplemented();
&gt; +    encoder-&gt;encode(resourceRequest.url().string());
&gt;  }

Do you know why this is not done in common code? I wonder why encoding ResourceRequest is port specific.

&gt; Source/WebKit2/Shared/qt/WebCoreArgumentCodersQt.cpp:45
&gt; -    // FIXME: Add real implementation when we want to implement something that
&gt; +    // FIXME: Add *more* coding implementation when we want to implement something that

Hehe

&gt; Source/WebKit2/UIProcess/API/qt/qdesktopwebview.cpp:385
&gt; +    if (QMetaObject::invokeMethod(q, &quot;acceptLinkClicked&quot;, Q_RETURN_ARG(QVariant, ret), Q_ARG(QVariant, url), Q_ARG(QVariant, button), Q_ARG(QVariant, QVariant(modifiers))))
&gt; +        return ret.toBool();
&gt; +    return q-&gt;acceptLinkClicked(url, button, modifiers);

Do we need the virtual method at all?
Shouldn&apos;t that be?:
if (QMetaObject::invokeMethod(q, &quot;acceptLinkClicked&quot;, Q_RETURN_ARG(QVariant, ret), Q_ARG(QVariant, url), Q_ARG(QVariant, button), Q_ARG(QVariant, QVariant(modifiers))))
    return ret.toBool();
return true;

&gt; Source/WebKit2/UIProcess/API/qt/qdesktopwebview_p.h:30
&gt; +class QDesktopWebViewPrivate : public WebKit::ViewInterface, public WebKit::PolicyInterface

I am not sure I would do that.
I guess you created PolicyInterface because you have more methods to add.

If possible, that could be a separate class handling its own business, like the context menu proxy.

&gt; Source/WebKit2/UIProcess/qt/PolicyInterface.h:34
&gt; +    enum PolicyAction {
&gt; +        ActionUse,
&gt; +        ActionDownload,
&gt; +        ActionIgnore
&gt; +    };

Defined but not use?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449241</commentid>
    <comment_count>3</comment_count>
      <attachid>103377</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-08-10 10:57:19 -0700</bug_when>
    <thetext>Comment on attachment 103377
Patch

The general idea looks good but I assume you have other function to add to the PolicyInterface.

R-ing to be evil.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449266</commentid>
    <comment_count>4</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-08-10 11:38:23 -0700</bug_when>
    <thetext>Thanks for the review.


(In reply to comment #2)
&gt; (From update of attachment 103377 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=103377&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/Shared/qt/WebCoreArgumentCodersQt.cpp:41
&gt; &gt;  void ArgumentCoder&lt;ResourceRequest&gt;::encode(ArgumentEncoder* encoder, const ResourceRequest&amp; resourceRequest)
&gt; &gt;  {
&gt; &gt; -    notImplemented();
&gt; &gt; +    encoder-&gt;encode(resourceRequest.url().string());
&gt; &gt;  }
&gt; 
&gt; Do you know why this is not done in common code? I wonder why encoding ResourceRequest is port specific.

ResourceRequest itself is port specific, so the handling code follows the trend.

&gt; &gt; Source/WebKit2/UIProcess/API/qt/qdesktopwebview.cpp:385
&gt; &gt; +    if (QMetaObject::invokeMethod(q, &quot;acceptLinkClicked&quot;, Q_RETURN_ARG(QVariant, ret), Q_ARG(QVariant, url), Q_ARG(QVariant, button), Q_ARG(QVariant, QVariant(modifiers))))
&gt; &gt; +        return ret.toBool();
&gt; &gt; +    return q-&gt;acceptLinkClicked(url, button, modifiers);
&gt; 
&gt; Do we need the virtual method at all?

The point was to provide API for C++ level API. I could just say that C++ would have to implement a SLOT with a certain name in the docs, but having it documented in the header file seemed more Qt-ish C++-ish.

It&apos;s not clear to me yet whether we consider the C++ API part of our &quot;public commited offering&quot; or just the QML items...

 
&gt; &gt; Source/WebKit2/UIProcess/API/qt/qdesktopwebview_p.h:30
&gt; &gt; +class QDesktopWebViewPrivate : public WebKit::ViewInterface, public WebKit::PolicyInterface
&gt; 
&gt; I am not sure I would do that.
&gt; I guess you created PolicyInterface because you have more methods to add.

Actually right now I don&apos;t. I had to decide whether to put the method on the ViewInterface or somewhere else. Sounded wrong to put in ViewInterface, that&apos;s where PolicyInterface came up. Do you have another suggestion?


&gt; If possible, that could be a separate class handling its own business, like the context menu proxy.

You mean for the PolicyInterface implementation? Or a separate proxy class instead of hooking things on QtWebPageProxy?

For the first it is WebView specific, since each WebView decide different things for handling policy (or ignoring).


&gt; &gt; Source/WebKit2/UIProcess/qt/PolicyInterface.h:34
&gt; &gt; +    enum PolicyAction {
&gt; &gt; +        ActionUse,
&gt; &gt; +        ActionDownload,
&gt; &gt; +        ActionIgnore
&gt; &gt; +    };
&gt; 
&gt; Defined but not use?

Garbage from a previous iteration, will be removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449270</commentid>
    <comment_count>5</comment_count>
      <attachid>103377</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-08-10 11:44:04 -0700</bug_when>
    <thetext>Comment on attachment 103377
Patch

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

&gt; Source/WebKit2/UIProcess/API/qt/qdesktopwebview.h:104
&gt; +    virtual bool acceptLinkClicked(const QUrl&amp;, Qt::MouseButton, Qt::KeyboardModifiers);

Can&apos;t we find a better name? it sounds like accept-link clicked. and not like accept the link that was clicked. I dislike the &quot;clicked&quot; in the name. What if it was &quot;touched&quot;?

acceptNavigatingToUrl ? acceptLoadingUrl ? acceptUrlNavigationRequest ?

&gt; Source/WebKit2/UIProcess/qt/PolicyInterface.h:33
&gt; +        ActionUse,
&gt; +        ActionDownload,
&gt; +        ActionIgnore

Wouldn&apos;t it be more Qt&apos;ish by appending Action? or just using &quot;Use&quot; &quot;Download&quot;... etc</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449776</commentid>
    <comment_count>6</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-08-11 08:02:55 -0700</bug_when>
    <thetext>&gt; &gt; &gt; Source/WebKit2/UIProcess/API/qt/qdesktopwebview.cpp:385
&gt; &gt; &gt; +    if (QMetaObject::invokeMethod(q, &quot;acceptLinkClicked&quot;, Q_RETURN_ARG(QVariant, ret), Q_ARG(QVariant, url), Q_ARG(QVariant, button), Q_ARG(QVariant, QVariant(modifiers))))
&gt; &gt; &gt; +        return ret.toBool();
&gt; &gt; &gt; +    return q-&gt;acceptLinkClicked(url, button, modifiers);
&gt; &gt; 
&gt; &gt; Do we need the virtual method at all?
&gt; 
&gt; The point was to provide API for C++ level API. I could just say that C++ would have to implement a SLOT with a certain name in the docs, but having it documented in the header file seemed more Qt-ish C++-ish.
&gt; 
&gt; It&apos;s not clear to me yet whether we consider the C++ API part of our &quot;public commited offering&quot; or just the QML items...

Currently, the plan is to have no C++ API part in the public offering.

&gt; &gt; &gt; Source/WebKit2/UIProcess/API/qt/qdesktopwebview_p.h:30
&gt; &gt; &gt; +class QDesktopWebViewPrivate : public WebKit::ViewInterface, public WebKit::PolicyInterface
&gt; &gt; 
&gt; &gt; I am not sure I would do that.
&gt; &gt; I guess you created PolicyInterface because you have more methods to add.
&gt; 
&gt; Actually right now I don&apos;t. I had to decide whether to put the method on the ViewInterface or somewhere else. Sounded wrong to put in ViewInterface, that&apos;s where PolicyInterface came up. Do you have another suggestion?
&gt;
&gt; &gt; If possible, that could be a separate class handling its own business, like the context menu proxy.
&gt; 
&gt; You mean for the PolicyInterface implementation? Or a separate proxy class instead of hooking things on QtWebPageProxy?
&gt; 
&gt; For the first it is WebView specific, since each WebView decide different things for handling policy (or ignoring).

The current design is fine. I was assuming the PolicyInterface would become some sort of a big controller with follow up patches. That is why I complained about the multiple inheritance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453385</commentid>
    <comment_count>7</comment_count>
      <attachid>104404</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-08-18 15:05:11 -0700</bug_when>
    <thetext>Created attachment 104404
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453424</commentid>
    <comment_count>8</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-08-18 15:35:12 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Created an attachment (id=104404) [details]
&gt; Patch

This patch doesn&apos;t &quot;protect&quot; the callback from loads that came from the API, is a bit tricky to implement that. I&apos;ll still investigate, but I think this can be done in a separate patch.

I didn&apos;t see much value in passing the NavigationType parameter for now. I think the function already is a bit complicated, I&apos;m not sure about the value the navigation type would bring to the table.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453877</commentid>
    <comment_count>9</comment_count>
      <attachid>104404</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-08-19 09:26:00 -0700</bug_when>
    <thetext>Comment on attachment 104404
Patch

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

I like this patch a lot, I think that will be really useful. Nice work.

&gt; Source/WebKit2/UIProcess/API/qt/qdesktopwebview.cpp:396
&gt; +    if (QMetaObject::invokeMethod(q, &quot;navigationPolicyForUrl&quot;, Q_RETURN_ARG(QVariant, ret), Q_ARG(QVariant, url), Q_ARG(QVariant, button), Q_ARG(QVariant, QVariant(modifiers))))

It would be nice to have the doc for that, otherwise it is not advertised anywhere that you can implement this function in QML.

&gt; Source/WebKit2/UIProcess/API/qt/tests/qmltests/DesktopWebView/tst_navigationPolicyForUrl.qml:49
&gt; +            mouseClick(webView, 100, 100, Qt.MiddleButton, Qt.ControlModifier)
&gt; +            otherSpy.wait()
&gt; +            compare(spy.count, 0)
&gt; +            compare(otherSpy.count, 1)
&gt; +            compare(otherWebView.title, &quot;Test page 1&quot;)

This is one case, I think checking the UsePolicy would be necessary as well.
And you could check that the the original webview did not load anything since IgnorePolicy was returned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453976</commentid>
    <comment_count>10</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-08-19 12:16:14 -0700</bug_when>
    <thetext>Committed r93427: &lt;http://trac.webkit.org/changeset/93427&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103377</attachid>
            <date>2011-08-09 11:34:34 -0700</date>
            <delta_ts>2011-08-18 15:05:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65920-20110809153432.patch</filename>
            <type>text/plain</type>
            <size>20793</size>
            <attacher name="Caio Marcelo de Oliveira Filho">cmarcelo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTI2OTAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBlZjcxMDUwMmNjZjY5MDJh
MDNlOGI2YzRjNTQ2NTg3ZjA1ZjE3ZmU0Li5lMzAxZjAxOThhNDI5ZGU5YWJlZGJjMWVjZmMzMDE3
NGU2ZDcxOTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzAgQEAKKzIwMTEtMDgtMDkgIENhaW8g
TWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4K
KworICAgICAgICBbUXRdIFtXSzJdIFByb3ZpZGUgQVBJIGZvciBpbnRlcmNlcHQgKGFuZCBwb3Nz
aWJsZSBpZ25vcmUpIGxpbmtzIGNsaWNrZWQgaW4gUURlc2t0b3BXZWJWaWV3CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTkyMAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBhIHZp
cnR1YWwgbWV0aG9kIHRvIHRoZSBBUEkgb2YgUURlc2t0b3BXZWJWaWV3IHRoYXQgZW5hYmxlcyBp
dCB0bworICAgICAgICBtYWtlIGEgZGVjaXNpb24gd2hldGhlciBhIGxpbmsgY2xpY2tlZCBzaG91
bGQgYmUgZm9sbG93ZWQgb3Igbm90LgorCisgICAgICAgIFN1Y2ggZmVhdHVyZSBpcyB1c2VmdWwg
Zm9yIGltcGxlbWVudGluZyBvcGVuaW5nIGxpbmtzIGluICJuZXcgdGFiIiBieSB1c2luZyBhCisg
ICAgICAgIHNwZWNpZmljIG1vdXNlIGJ1dHRvbiBvciBtb3VzZSBidXR0b24gcGx1cyBrZXlib2Fy
ZCBtb2RpZmllcnMuCisKKyAgICAgICAgVGhlIHBhdGNoIGludHJvZHVjZXMgYSBpbnRlcm5hbCBR
dC1sZXZlbCBpbnRlcmZhY2UgY2FsbGVkIFBvbGljeUludGVyZmFjZSwgdGhhdAorICAgICAgICBp
cyB1c2VkIGJ5IFF0V2ViUGFnZVByb3h5IHRvIGRlbGVnYXRlIHBvbGljeSBjYWxscy4gQSBjb25j
cmV0ZSBpbXBsZW1lbnRhdGlvbiBpcworICAgICAgICBwcm92aWRlZCBmb3IgUURlc2t0b3BXZWJW
aWV3LgorCisgICAgICAgIFRoZSBBUEkgY2hvb3NlbiBpcyBpbnNwaXJlZCBvbiBwcmV2aW91cyBv
bmUgZnJvbSBXSzEsIGJ1dCBhbHNvIGVuYWJsaW5nIHRoZQorICAgICAgICB2aXJ0dWFsIG1ldGhv
ZCB0byBiZSBpbXBsZW1lbnRlZCBpbiBRTUwsIGFzIGEgZnVuY3Rpb24gYWRkZWQgYnkgdGhlIHVz
ZXIgb2YKKyAgICAgICAgRGVza3RvcFdlYlZpZXcuCisKKyAgICAgICAgKiBTaGFyZWQvcXQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzUXQuY3BwOgorICAgICAgICAoQ29yZUlQQzo6OjplbmNvZGUpOgor
ICAgICAgICAoQ29yZUlQQzo6OjpkZWNvZGUpOgorICAgICAgICBJbXBsZW1lbnQgdGhlIHNlcmlh
bGl6YXRpb24gb2YgdGhlIFJlcXVlc3QgVVJMLCB3aGljaCBpcyB0aGUgb25seSBkYXRhCisgICAg
ICAgIHdlIGV4cG9zaW5nIGZyb20gdGhlIFJlcXVlc3QuCisKKyAgICAgICAgKiBXZWJLaXQyLnBy
bzoKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUG9saWN5SW50ZXJmYWNlLmg6IEFkZGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChRdFdlYlBh
Z2VQcm94eTo6UXRXZWJQYWdlUHJveHkpOgorICAgICAgICAoUXRXZWJQYWdlUHJveHk6OmluaXQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5oOgorICAgICAgICBSZWdp
c3RlciBhIFBvbGljeSBDbGllbnQgaW4gdGhlIFdLMiBDIEFQSSBvbmx5IGlmIHRoZXJlJ3MgYSBQ
b2xpY3lJbnRlcmZhY2UgYXZhaWxhYmxlLgorCisgICAgICAgICogVUlQcm9jZXNzL3F0L0NsaWVu
dEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5jcHA6CisgICAgICAg
ICh0b1BvbGljeUludGVyZmFjZSk6CisgICAgICAgICh0b1F0TW91c2VCdXR0b24pOgorICAgICAg
ICAodG9RdEtleWJvYXJkTW9kaWZpZXJzKToKKyAgICAgICAgKHF0X3drX2RlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICBJbXBsZW1lbnQgdGhlIGNhbGxiYWNrIGZvciB0
aGUgUGFnZSBQb2xpY3kgQ2xpZW50LiBJdCB3aWxsIGF1dG9tYXRpY2FsbHkgYWNjZXB0CisgICAg
ICAgIGV2ZXJ5dGhpbmcgdGhhdCB3YXNuJ3QgY2F1c2VkIGJ5IGxpbmsgY2xpY2tlZCAtLSBleGFj
dGx5IGxpa2UgaXQgd291bGQgd2l0aG91dCBhCisgICAgICAgIHBvbGljeSBjbGllbnQuIFRoZW4g
dHJhbnNsYXRlIHRoZSBhcmd1bWVudHMgdG8gUXQgamFyZ29uIGFuIGNhbGwgUG9saWN5SW50ZXJm
YWNlLgorCisgICAgICAgICogVUlQcm9jZXNzL3F0L3FkZXNrdG9wd2VicGFnZXByb3h5LmNwcDoK
KyAgICAgICAgKFFEZXNrdG9wV2ViUGFnZVByb3h5OjpRRGVza3RvcFdlYlBhZ2VQcm94eSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlld19wLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwOgorICAgICAgICAoUURlc2t0b3BXZWJWaWV3Ojph
Y2NlcHRMaW5rQ2xpY2tlZCk6CisgICAgICAgIChRRGVza3RvcFdlYlZpZXdQcml2YXRlOjphY2Nl
cHRMaW5rQ2xpY2tlZCk6CisgICAgICAgIFRoZSBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBmb3Ig
UURlc2t0b3BXZWJWaWV3LiBJdHMgcHJpdmF0ZSBvYmplY3QgaW1wbGVtZW50cworICAgICAgICB0
aGUgUG9saWN5SW50ZXJmYWNlIGFuZCB0cnkgdG8gY2FsbCBhIHBvc3NpYmxlIGZ1bmN0aW9uIGRl
ZmluZWQgaW4gUU1MIChzbyByZXR1cm4KKyAgICAgICAgdmFsdWUgYW5kIGFyZ3VtZW50cyBhbGwg
UVZhcmlhbnRzKS4gSWYgdGhlcmUncyBubyBzdWNoIGEgZnVuY3Rpb24sIGZhbGxiYWNrIHRvCisg
ICAgICAgIHRoZSB2aXJ0dWFsIG1ldGhvZCBpbiBDKysuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3F0L3Rlc3RzL3FtbHRlc3RzL0Rlc2t0b3BXZWJWaWV3L3RzdF9hY2NlcHRMaW5rQ2xpY2tl
ZC5xbWw6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMv
Y29tbW9uL3Rlc3QyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVz
dHMvcW1sdGVzdHMvcW1sdGVzdHMucHJvOgorICAgICAgICBBZGQgYSB0ZXN0IGZvciBEZXNrdG9w
V2ViVmlldyBRTUwgZWxlbWVudCBtYWtpbmcgdXNlIG9mIGEgYnV0dG9uIGFuZCBhIG1vZGlmaWVy
IHRvCisgICAgICAgIGludGVyY2VwdCAoYW5kIG5vdCBhY2NlcHQpIGEgbmF2aWdhdGlvbi4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9xdC9xdG91Y2h3ZWJwYWdlcHJveHkuY3BwOgorICAgICAgICAo
UVRvdWNoV2ViUGFnZVByb3h5OjpRVG91Y2hXZWJQYWdlUHJveHkpOgorICAgICAgICBGb3Igbm93
LCB3ZSBkb24ndCBoYXZlIGEgUG9saWN5SW50ZXJmYWNlIGZvciBRVG91Y2hXZWJWaWV3LgorCiAy
MDExLTA4LTA5ICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBbUXRdIFJlZGlyZWN0IGRpZEZpbmRab29tYWJsZUFyZWEgdGhydSB0byB0
aGUgdmlldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1dlYkNvcmVBcmd1
bWVudENvZGVyc1F0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9XZWJDb3JlQXJndW1l
bnRDb2RlcnNRdC5jcHAKaW5kZXggMDA4NGJiZTNjZWYwMmViY2Y3ZDY5N2VjMzQ4M2JmNjkyODZi
NzQ2YS4uMjNmOTllOWY1YWI0ZGE3YzMyZWZiMjk0MWJkYjE2MWJhYjc1OTU2NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1dlYkNvcmVBcmd1bWVudENvZGVyc1F0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzUXQuY3Bw
CkBAIC0zNywxNiArMzcsMjEgQEAgbmFtZXNwYWNlIENvcmVJUEMgewogCiB2b2lkIEFyZ3VtZW50
Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2Rlciwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCiB7Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICBlbmNvZGVyLT5lbmNvZGUocmVzb3VyY2VSZXF1ZXN0LnVybCgpLnN0cmlu
ZygpKTsKIH0KIAogYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmRlY29kZShB
cmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0
KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0KLSAgICAvLyBGSVhNRTogQWRkIHJlYWwgaW1w
bGVtZW50YXRpb24gd2hlbiB3ZSB3YW50IHRvIGltcGxlbWVudCBzb21ldGhpbmcgdGhhdAorICAg
IC8vIEZJWE1FOiBBZGQgKm1vcmUqIGNvZGluZyBpbXBsZW1lbnRhdGlvbiB3aGVuIHdlIHdhbnQg
dG8gaW1wbGVtZW50IHNvbWV0aGluZyB0aGF0CiAgICAgLy8gZGVwZW5kcyBvbiB0aGlzIGxpa2Ug
dGhlIHBvbGljeSBjbGllbnQuCi0gICAgcmVzb3VyY2VSZXF1ZXN0ID0gV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0KCk7CisKKyAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdDsKKyAgICBTdHJpbmcg
dXJsOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHVybCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICByZXF1ZXN0LnNldFVSTChLVVJMKFdlYkNvcmU6OlBhcnNlZFVSTFN0cmluZywgdXJs
KSk7CisKKyAgICByZXNvdXJjZVJlcXVlc3QgPSByZXF1ZXN0OwogICAgIHJldHVybiB0cnVlOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9w
d2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vi
dmlldy5jcHAKaW5kZXggYjI0OGQ0NDIwNzBmYjgzZDgzYmI4N2RhNjA5MTkyNDA0YTAxZWMyYS4u
NzViMTc5MGM1YWZhYWUwOGU5NzFhYzNjYjYxZjFiODdiYzVmNzIwMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcApAQCAtMzU0
LDYgKzM1NCwxMSBAQCBib29sIFFEZXNrdG9wV2ViVmlldzo6ZXZlbnQoUUV2ZW50KiBldikKICAg
ICByZXR1cm4gUVNHSXRlbTo6ZXZlbnQoZXYpOwogfQogCitib29sIFFEZXNrdG9wV2ViVmlldzo6
YWNjZXB0TGlua0NsaWNrZWQoY29uc3QgUVVybCYsIFF0OjpNb3VzZUJ1dHRvbiwgUXQ6OktleWJv
YXJkTW9kaWZpZXJzKQoreworICAgIHJldHVybiB0cnVlOworfQorCiBXS1BhZ2VSZWYgUURlc2t0
b3BXZWJWaWV3OjpwYWdlUmVmKCkgY29uc3QKIHsKICAgICByZXR1cm4gZC0+cGFnZS5wYWdlUmVm
KCk7CkBAIC0zNzEsNCArMzc2LDEzIEBAIHZvaWQgUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6ZGlk
UmVsYXVuY2hQcm9jZXNzKCkKICAgICBxLT51cGRhdGUoKTsKIH0KIAorYm9vbCBRRGVza3RvcFdl
YlZpZXdQcml2YXRlOjphY2NlcHRMaW5rQ2xpY2tlZChjb25zdCBRVXJsJiB1cmwsIFF0OjpNb3Vz
ZUJ1dHRvbiBidXR0b24sIFF0OjpLZXlib2FyZE1vZGlmaWVycyBtb2RpZmllcnMpCit7CisgICAg
Ly8gVXNpbmcgZHluYW1pYyBjYWxsIGZpcnN0IGluIGNhc2UgdGhpcyB3YXMgb3ZlcnJpZGVuIGJ5
IFFNTC4KKyAgICBRVmFyaWFudCByZXQ7CisgICAgaWYgKFFNZXRhT2JqZWN0OjppbnZva2VNZXRo
b2QocSwgImFjY2VwdExpbmtDbGlja2VkIiwgUV9SRVRVUk5fQVJHKFFWYXJpYW50LCByZXQpLCBR
X0FSRyhRVmFyaWFudCwgdXJsKSwgUV9BUkcoUVZhcmlhbnQsIGJ1dHRvbiksIFFfQVJHKFFWYXJp
YW50LCBRVmFyaWFudChtb2RpZmllcnMpKSkpCisgICAgICAgIHJldHVybiByZXQudG9Cb29sKCk7
CisgICAgcmV0dXJuIHEtPmFjY2VwdExpbmtDbGlja2VkKHVybCwgYnV0dG9uLCBtb2RpZmllcnMp
OworfQorCiAjaW5jbHVkZSAibW9jX3FkZXNrdG9wd2Vidmlldy5jcHAiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuaAppbmRleCA1OTBmYWJk
Yzk1NzY0MzVjMjc5ZWNjNjY1M2Q3ODczYzQzM2YxNDY5Li44ZjhlYzY5ZTkyOTM1ZGMxNDQ4MGNm
MWJlZGViNWY2ODI1ZTM1YjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3FkZXNrdG9wd2Vidmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmgKQEAgLTEwMSw2ICsxMDEsOCBAQCBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBwYWludChRUGFpbnRlciopOwogICAgIHZpcnR1YWwgYm9vbCBldmVudChRRXZlbnQq
KTsKIAorICAgIHZpcnR1YWwgYm9vbCBhY2NlcHRMaW5rQ2xpY2tlZChjb25zdCBRVXJsJiwgUXQ6
Ok1vdXNlQnV0dG9uLCBRdDo6S2V5Ym9hcmRNb2RpZmllcnMpOworCiBwcml2YXRlOgogICAgIFFE
ZXNrdG9wV2ViVmlldyhXS0NvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmLCBRU0dJdGVtKiBwYXJl
bnQgPSAwKTsKICAgICBXS1BhZ2VSZWYgcGFnZVJlZigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXdfcC5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXdfcC5oCmluZGV4IGE2ODAz
NmU5YzI2ZTg2NGU5NzZhMzQ4ZTNlNWZmNjgyZmIzM2M4NGYuLmYzMTdlMzg2YmFhNDdkYzhiMTE0
ODAxNzYxOTdhMDg0NWFjOTljNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3X3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlld19wLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogY2xhc3Mg
UURlc2t0b3BXZWJWaWV3OwogCi1jbGFzcyBRRGVza3RvcFdlYlZpZXdQcml2YXRlIDogcHVibGlj
IFdlYktpdDo6Vmlld0ludGVyZmFjZQorY2xhc3MgUURlc2t0b3BXZWJWaWV3UHJpdmF0ZSA6IHB1
YmxpYyBXZWJLaXQ6OlZpZXdJbnRlcmZhY2UsIHB1YmxpYyBXZWJLaXQ6OlBvbGljeUludGVyZmFj
ZQogewogcHVibGljOgogICAgIFFEZXNrdG9wV2ViVmlld1ByaXZhdGUoUURlc2t0b3BXZWJWaWV3
KiwgV0tDb250ZXh0UmVmID0gMCwgV0tQYWdlR3JvdXBSZWYgPSAwKTsKQEAgLTcwLDYgKzcwLDkg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENyYXNoKCk7CiAgICAgdmly
dHVhbCB2b2lkIGRpZFJlbGF1bmNoUHJvY2VzcygpOwogCisgICAgLy8gUG9saWN5SW50ZXJmYWNl
LgorICAgIHZpcnR1YWwgYm9vbCBhY2NlcHRMaW5rQ2xpY2tlZChjb25zdCBRVXJsJiwgUXQ6Ok1v
dXNlQnV0dG9uLCBRdDo6S2V5Ym9hcmRNb2RpZmllcnMpOworCiAgICAgUVNoYXJlZFBvaW50ZXI8
UU1lbnU+IGFjdGl2ZU1lbnU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL0Rlc2t0b3BXZWJWaWV3L3RzdF9hY2NlcHRMaW5r
Q2xpY2tlZC5xbWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRl
c3RzL0Rlc2t0b3BXZWJWaWV3L3RzdF9hY2NlcHRMaW5rQ2xpY2tlZC5xbWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTEwNGU5MGU3MzQ4YzJkMTg4N2Q1NmU5ZjM4MWViZTM3MWY4MzhmMAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvRGVza3Rv
cFdlYlZpZXcvdHN0X2FjY2VwdExpbmtDbGlja2VkLnFtbApAQCAtMCwwICsxLDUyIEBACitpbXBv
cnQgUXRRdWljayAyLjAKK2ltcG9ydCBRdFRlc3QgMS4wCitpbXBvcnQgUXRXZWJLaXQuZXhwZXJp
bWVudGFsIDUuMAorCitJdGVtIHsKKyAgICBEZXNrdG9wV2ViVmlldyB7CisgICAgICAgIGlkOiB3
ZWJWaWV3CisgICAgICAgIHdpZHRoOiAyMDAKKyAgICAgICAgaGVpZ2h0OiAyMDAKKyAgICAgICAg
ZnVuY3Rpb24gYWNjZXB0TGlua0NsaWNrZWQodXJsLCBidXR0b24sIG1vZGlmaWVycykgeworICAg
ICAgICAgICAgaWYgKGJ1dHRvbiA9PSBRdC5NaWRkbGVCdXR0b24gJiYgbW9kaWZpZXJzICYgUXQu
Q29udHJvbE1vZGlmaWVyKSB7CisgICAgICAgICAgICAgICAgICAgIG90aGVyV2ViVmlldy5sb2Fk
KHVybCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlCisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZQorICAgICAgICB9CisgICAgfQorCisgICAgU2lnbmFsU3B5
IHsKKyAgICAgICAgaWQ6IHNweQorICAgICAgICB0YXJnZXQ6IHdlYlZpZXcKKyAgICAgICAgc2ln
bmFsTmFtZTogImxvYWRTdWNjZWVkZWQiCisgICAgfQorCisgICAgRGVza3RvcFdlYlZpZXcgewor
ICAgICAgICBpZDogb3RoZXJXZWJWaWV3CisgICAgfQorCisgICAgU2lnbmFsU3B5IHsKKyAgICAg
ICAgaWQ6IG90aGVyU3B5CisgICAgICAgIHRhcmdldDogb3RoZXJXZWJWaWV3CisgICAgICAgIHNp
Z25hbE5hbWU6ICJsb2FkU3VjY2VlZGVkIgorICAgIH0KKworICAgIFRlc3RDYXNlIHsKKyAgICAg
ICAgbmFtZTogIkRlc2t0b3BXZWJWaWV3QWNjZXB0TGlua0NsaWNrZWQiCisgICAgICAgIHdoZW46
IHdpbmRvd1Nob3duCisKKyAgICAgICAgZnVuY3Rpb24gdGVzdF9hY2NlcHRMaW5rQ2xpY2tlZCgp
IHsKKyAgICAgICAgICAgIHdlYlZpZXcubG9hZChRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL3Rl
c3QyLmh0bWwiKSkKKyAgICAgICAgICAgIHNweS53YWl0KCkKKyAgICAgICAgICAgIHNweS5jbGVh
cigpCisgICAgICAgICAgICBjb21wYXJlKHNweS5jb3VudCwgMCkKKyAgICAgICAgICAgIGNvbXBh
cmUob3RoZXJTcHkuY291bnQsIDApCisgICAgICAgICAgICBtb3VzZUNsaWNrKHdlYlZpZXcsIDEw
MCwgMTAwLCBRdC5NaWRkbGVCdXR0b24sIFF0LkNvbnRyb2xNb2RpZmllcikKKyAgICAgICAgICAg
IG90aGVyU3B5LndhaXQoKQorICAgICAgICAgICAgY29tcGFyZShzcHkuY291bnQsIDApCisgICAg
ICAgICAgICBjb21wYXJlKG90aGVyU3B5LmNvdW50LCAxKQorICAgICAgICAgICAgY29tcGFyZShv
dGhlcldlYlZpZXcudGl0bGUsICJUZXN0IHBhZ2UgMSIpCisgICAgICAgIH0KKyAgICB9Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3Rz
L2NvbW1vbi90ZXN0Mi5odG1sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0
cy9xbWx0ZXN0cy9jb21tb24vdGVzdDIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYTNjMzlkZDMzZDgxZTE3
Y2IwYWIwZWM0MjExZjUzOGIzNGIxNjgyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21tb24vdGVzdDIuaHRtbApAQCAt
MCwwICsxLDYgQEAKKzxodG1sPgorPGhlYWQ+PHRpdGxlPlRlc3QgcGFnZSB3aXRoIGh1Z2UgbGlu
ayBhcmVhPC90aXRsZT48L2hlYWQ+Cis8Ym9keT4KKzxhIGhyZWY9InRlc3QxLmh0bWwiPjxpbWcg
d2lkdGg9MjAwIGhlaWdodD0yMDA+PC9hPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9xbWx0ZXN0cy5w
cm8gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL3FtbHRl
c3RzLnBybwppbmRleCAxYzMwMWVhYjkxMzM0MDE3Yzg5ZGJhMWRkMTM5YWVlZjAzMDRhODY4Li43
MWU5NzhmNjA5ZmNhODJiN2ZmY2VkYjMyMzBmOWQxNWViN2U3NWQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL3FtbHRlc3RzLnBybwor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL3FtbHRl
c3RzLnBybwpAQCAtMTIsNSArMTIsNiBAQCBtZXNzYWdlKCQkUFdEKQogCiBPVEhFUl9GSUxFUyAr
PSBcCiAgICAgRGVza3RvcFdlYlZpZXcvdHN0X3Byb3BlcnRpZXMucW1sIFwKKyAgICBEZXNrdG9w
V2ViVmlldy90c3RfYWNjZXB0TGlua0NsaWNrZWQucW1sIFwKICAgICBUb3VjaFdlYlZpZXcvdHN0
X3Byb3BlcnRpZXMucW1sCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9DbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9DbGllbnRJbXBs
LmNwcAppbmRleCAwYzNhMmJlN2ZlMmQxNjZmMGRkNDFmNmQ0OWRlODc5NWUxMDY5NTEwLi5jNDZk
ZWIxNWE2Mzc4M2JjNjU1Y2M2NWJjZGU0ZmNkNTA1NzBkYmE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L0NsaWVudEltcGwuY3BwCkBAIC0yNiwxMSArMjYsMTQgQEAKICNpbmNsdWRl
ICJXS1VSTFF0LmgiCiAjaW5jbHVkZSAicXdlYmVycm9yLmgiCiAjaW5jbHVkZSAicXdlYmVycm9y
X3AuaCIKKyNpbmNsdWRlIDxQb2xpY3lJbnRlcmZhY2UuaD4KICNpbmNsdWRlIDxxd2tjb250ZXh0
Lmg+CiAjaW5jbHVkZSA8UXRXZWJQYWdlUHJveHkuaD4KICNpbmNsdWRlIDxWaWV3SW50ZXJmYWNl
Lmg+CiAjaW5jbHVkZSA8V0tGcmFtZS5oPgorI2luY2x1ZGUgPFdLRnJhbWVQb2xpY3lMaXN0ZW5l
ci5oPgogI2luY2x1ZGUgPFdLVHlwZS5oPgorI2luY2x1ZGUgPFdLVVJMUmVxdWVzdC5oPgogCiB1
c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCkBAIC01NCw2ICs1NywxMiBAQCBzdGF0aWMgaW5saW5l
IFZpZXdJbnRlcmZhY2UqIHRvVmlld0ludGVyZmFjZShjb25zdCB2b2lkKiBjbGllbnRJbmZvKQog
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFZpZXdJbnRlcmZhY2UqPihjb25zdF9jYXN0PHZv
aWQqPihjbGllbnRJbmZvKSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgUG9saWN5SW50ZXJmYWNlKiB0
b1BvbGljeUludGVyZmFjZShjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIEFTU0VSVChj
bGllbnRJbmZvKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxQb2xpY3lJbnRlcmZhY2Uq
Pihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7Cit9CisKIHN0YXRpYyB2b2lkIGRpc3Bh
dGNoTG9hZFN1Y2NlZWRlZChXS0ZyYW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KQogewogICAgIGlmICghV0tGcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSkKQEAgLTE1NCwzICsxNjMs
NDggQEAgdm9pZCBxdF93a19kaWRDaGFuZ2VJY29uRm9yUGFnZVVSTChXS0ljb25EYXRhYmFzZVJl
ZiBpY29uRGF0YWJhc2UsIFdLVVJMUmVmIHBhZ2UKIHZvaWQgcXRfd2tfZGlkUmVtb3ZlQWxsSWNv
bnMoV0tJY29uRGF0YWJhc2VSZWYgaWNvbkRhdGFiYXNlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KQogewogfQorCitzdGF0aWMgUXQ6Ok1vdXNlQnV0dG9uIHRvUXRNb3VzZUJ1dHRvbihXS0V2ZW50
TW91c2VCdXR0b24gYnV0dG9uKQoreworICAgIHN3aXRjaCAoYnV0dG9uKSB7CisgICAgY2FzZSBr
V0tFdmVudE1vdXNlQnV0dG9uTGVmdEJ1dHRvbjoKKyAgICAgICAgcmV0dXJuIFF0OjpMZWZ0QnV0
dG9uOworICAgIGNhc2Uga1dLRXZlbnRNb3VzZUJ1dHRvbk1pZGRsZUJ1dHRvbjoKKyAgICAgICAg
cmV0dXJuIFF0OjpNaWRkbGVCdXR0b247CisgICAgY2FzZSBrV0tFdmVudE1vdXNlQnV0dG9uUmln
aHRCdXR0b246CisgICAgICAgIHJldHVybiBRdDo6UmlnaHRCdXR0b247CisgICAgfQorICAgIHJl
dHVybiBRdDo6Tm9CdXR0b247Cit9CisKK3N0YXRpYyBRdDo6S2V5Ym9hcmRNb2RpZmllcnMgdG9R
dEtleWJvYXJkTW9kaWZpZXJzKFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzKQoreworICAgIFF0
OjpLZXlib2FyZE1vZGlmaWVycyBxdE1vZGlmaWVycyA9IFF0OjpOb01vZGlmaWVyOworICAgIGlm
IChtb2RpZmllcnMgJiBrV0tFdmVudE1vZGlmaWVyc1NoaWZ0S2V5KQorICAgICAgICBxdE1vZGlm
aWVycyB8PSBRdDo6U2hpZnRNb2RpZmllcjsKKyAgICBpZiAobW9kaWZpZXJzICYga1dLRXZlbnRN
b2RpZmllcnNDb250cm9sS2V5KQorICAgICAgICBxdE1vZGlmaWVycyB8PSBRdDo6Q29udHJvbE1v
ZGlmaWVyOworICAgIGlmIChtb2RpZmllcnMgJiBrV0tFdmVudE1vZGlmaWVyc0FsdEtleSkKKyAg
ICAgICAgcXRNb2RpZmllcnMgfD0gUXQ6OkFsdE1vZGlmaWVyOworICAgIGlmIChtb2RpZmllcnMg
JiBrV0tFdmVudE1vZGlmaWVyc01ldGFLZXkpCisgICAgICAgIHF0TW9kaWZpZXJzIHw9IFF0OjpN
ZXRhTW9kaWZpZXI7CisgICAgcmV0dXJuIHF0TW9kaWZpZXJzOworfQorCit2b2lkIHF0X3drX2Rl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYg
ZnJhbWUsIFdLRnJhbWVOYXZpZ2F0aW9uVHlwZSBuYXZpZ2F0aW9uVHlwZSwgV0tFdmVudE1vZGlm
aWVycyBtb2RpZmllcnMsIFdLRXZlbnRNb3VzZUJ1dHRvbiBtb3VzZUJ1dHRvbiwgV0tVUkxSZXF1
ZXN0UmVmIHJlcXVlc3QsIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZiBsaXN0ZW5lciwgV0tUeXBl
UmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIGlmIChuYXZpZ2F0
aW9uVHlwZSAhPSBrV0tGcmFtZU5hdmlnYXRpb25UeXBlTGlua0NsaWNrZWQpIHsKKyAgICAgICAg
V0tGcmFtZVBvbGljeUxpc3RlbmVyVXNlKGxpc3RlbmVyKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIFBvbGljeUludGVyZmFjZSogcG9saWN5SW50ZXJmYWNlID0gdG9Qb2xpY3lJbnRl
cmZhY2UoY2xpZW50SW5mbyk7CisgICAgV0tVUkxSZWYgcmVxdWVzdFVSTCA9IFdLVVJMUmVxdWVz
dENvcHlVUkwocmVxdWVzdCk7CisgICAgUVVybCBxVXJsID0gV0tVUkxDb3B5UVVybChyZXF1ZXN0
VVJMKTsKKyAgICBXS1JlbGVhc2UocmVxdWVzdFVSTCk7CisKKyAgICBpZiAocG9saWN5SW50ZXJm
YWNlLT5hY2NlcHRMaW5rQ2xpY2tlZChxVXJsLCB0b1F0TW91c2VCdXR0b24obW91c2VCdXR0b24p
LCB0b1F0S2V5Ym9hcmRNb2RpZmllcnMobW9kaWZpZXJzKSkpCisgICAgICAgIFdLRnJhbWVQb2xp
Y3lMaXN0ZW5lclVzZShsaXN0ZW5lcik7CisgICAgZWxzZQorICAgICAgICBXS0ZyYW1lUG9saWN5
TGlzdGVuZXJJZ25vcmUobGlzdGVuZXIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L0NsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9D
bGllbnRJbXBsLmgKaW5kZXggN2Y1ZDY5NjU2ZThmZTJkMjFiYmIyYWI2Y2E0MzIzN2Q1NzMzZWFk
YS4uYmZiNzYyOWNjNTEwMjYzYzg3ODY1Y2EzYzA3Zjc1NTczZDNiM2ZhNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0NsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5oCkBAIC00NSw2ICs0NSw5IEBAIHZvaWQgcXRf
d2tfc2V0U3RhdHVzVGV4dChXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgdGV4dCwgY29uc3Qg
dm9pZCAqY2xpZW50SW5mCiB2b2lkIHF0X3drX2RpZENoYW5nZUljb25Gb3JQYWdlVVJMKFdLSWNv
bkRhdGFiYXNlUmVmLCBXS1VSTFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiB2b2lkIHF0
X3drX2RpZFJlbW92ZUFsbEljb25zKFdLSWNvbkRhdGFiYXNlUmVmLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKTsKIAorLy8gUG9saWN5IGNsaWVudC4KK3ZvaWQgcXRfd2tfZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbihXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLRnJhbWVOYXZpZ2F0aW9u
VHlwZSwgV0tFdmVudE1vZGlmaWVycywgV0tFdmVudE1vdXNlQnV0dG9uLCBXS1VSTFJlcXVlc3RS
ZWYsIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9Qb2xpY3lJbnRlcmZhY2UuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9Qb2xpY3lJbnRlcmZhY2UuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
YTJiYmYyYzIxYzI5NTk0NWE5ODY0N2FkYTM4NDllOTgyMTQyZGM0Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1BvbGljeUludGVyZmFjZS5oCkBAIC0wLDAg
KzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5k
L29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIFBvbGljeUludGVyZmFjZV9oCisj
ZGVmaW5lIFBvbGljeUludGVyZmFjZV9oCisKKyNpbmNsdWRlIDxRdENvcmUvUVVybD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFBvbGljeUludGVyZmFjZSB7CitwdWJsaWM6CisgICAg
ZW51bSBQb2xpY3lBY3Rpb24geworICAgICAgICBBY3Rpb25Vc2UsCisgICAgICAgIEFjdGlvbkRv
d25sb2FkLAorICAgICAgICBBY3Rpb25JZ25vcmUKKyAgICB9OworCisgICAgdmlydHVhbCBib29s
IGFjY2VwdExpbmtDbGlja2VkKGNvbnN0IFFVcmwmLCBRdDo6TW91c2VCdXR0b24sIFF0OjpLZXli
b2FyZE1vZGlmaWVycykgPSAwOworfTsKKworfQorCisjZW5kaWYgLyogUG9saWN5SW50ZXJmYWNl
X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3Bw
CmluZGV4IGQxMTM2MzM4ZTA1OGU1MWY3OTUyMDQ1ZDQxZGIwNWZlOWYzZTllYzguLmM4ZGVmMzMy
ODZhZjFiMjdkMmQ1YTEzOWRkY2ZhMzAyZTUxZTRjYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1
ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKICNpbmNsdWRlICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50
LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJQb2xpY3lJbnRlcmZh
Y2UuaCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3QuaCIKICNpbmNsdWRlICJXZWJDb250
ZXh0LmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eVF0LmgiCkBAIC05NCw4ICs5NSw5
IEBAIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24gZHJvcEFjdGlvblRvRHJhZ09wZXJhdGlvbihRdDo6
RHJvcEFjdGlvbnMgYWN0aW9ucykKICAgICByZXR1cm4gKERyYWdPcGVyYXRpb24pcmVzdWx0Owog
fQogCi1RdFdlYlBhZ2VQcm94eTo6UXRXZWJQYWdlUHJveHkoVmlld0ludGVyZmFjZSogdmlld0lu
dGVyZmFjZSwgUVdLQ29udGV4dCogYywgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKQorUXRX
ZWJQYWdlUHJveHk6OlF0V2ViUGFnZVByb3h5KFZpZXdJbnRlcmZhY2UqIHZpZXdJbnRlcmZhY2Us
IFBvbGljeUludGVyZmFjZSogcG9saWN5SW50ZXJmYWNlLCBRV0tDb250ZXh0KiBjLCBXS1BhZ2VH
cm91cFJlZiBwYWdlR3JvdXBSZWYpCiAgICAgOiBtX3ZpZXdJbnRlcmZhY2Uodmlld0ludGVyZmFj
ZSkKKyAgICAsIG1fcG9saWN5SW50ZXJmYWNlKHBvbGljeUludGVyZmFjZSkKICAgICAsIG1fY29u
dGV4dChjKQogICAgICwgbV9wcmVmZXJlbmNlcygwKQogICAgICwgbV91bmRvU3RhY2soYWRvcHRQ
dHIobmV3IFFVbmRvU3RhY2sodGhpcykpKQpAQCAtMTg1LDYgKzE4NywxOCBAQCB2b2lkIFF0V2Vi
UGFnZVByb3h5Ojppbml0KCkKICAgICAgICAgMCwgIC8qIHNob3VsZEludGVycnVwdEphdmFTY3Jp
cHQgKi8KICAgICB9OwogICAgIFdLUGFnZVNldFBhZ2VVSUNsaWVudCh0b0FQSShtX3dlYlBhZ2VQ
cm94eS5nZXQoKSksICZ1aUNsaWVudCk7CisKKyAgICBpZiAobV9wb2xpY3lJbnRlcmZhY2UpIHsK
KyAgICAgICAgV0tQYWdlUG9saWN5Q2xpZW50IHBvbGljeUNsaWVudCA9IHsKKyAgICAgICAgICAg
IDAsCisgICAgICAgICAgICBtX3BvbGljeUludGVyZmFjZSwKKyAgICAgICAgICAgIHF0X3drX2Rl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24sCisgICAgICAgICAgICAwLCAgLyogZGVjaWRl
UG9saWN5Rm9yTmV3V2luZG93QWN0aW9uICovCisgICAgICAgICAgICAwLCAgLyogZGVjaWRlUG9s
aWN5Rm9yUmVzcG9uc2UgKi8KKyAgICAgICAgICAgIDAsICAvKiB1bmFibGVUb0ltcGxlbWVudFBv
bGljeSAqLworICAgICAgICB9OworICAgICAgICBXS1BhZ2VTZXRQYWdlUG9saWN5Q2xpZW50KHRv
QVBJKG1fd2ViUGFnZVByb3h5LmdldCgpKSwgJnBvbGljeUNsaWVudCk7CisgICAgfQogfQogCiBR
dFdlYlBhZ2VQcm94eTo6flF0V2ViUGFnZVByb3h5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1F0V2ViUGFnZVByb3h5LmgKaW5kZXggMDdlZDhhOTU3MjdkM2UyZWY2MDM5ODNjNjJi
YmEwOWUzYjg4ZDUwNy4uYjVlYjFlMDZhOTIwMGQ1Y2M4ZjFiYTgwYmJjMWRlMmQ2YzcyN2Q0OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmgKQEAgLTI1
LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUgIkxheWVyVHJlZUNvbnRleHQuaCIKICNpbmNsdWRlICJQ
YWdlQ2xpZW50LmgiCisjaW5jbHVkZSAiUG9saWN5SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAicXdl
YmtpdHR5cGVzLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiVmll
d3BvcnRBcmd1bWVudHMuaCIKQEAgLTcwLDcgKzcxLDcgQEAgcHVibGljOgogICAgICAgICBXZWJB
Y3Rpb25Db3VudAogICAgIH07CiAKLSAgICBRdFdlYlBhZ2VQcm94eShXZWJLaXQ6OlZpZXdJbnRl
cmZhY2UqIHZpZXdJbnRlcmZhY2UsIFFXS0NvbnRleHQqLCBXS1BhZ2VHcm91cFJlZiA9IDApOwor
ICAgIFF0V2ViUGFnZVByb3h5KFdlYktpdDo6Vmlld0ludGVyZmFjZSosIFdlYktpdDo6UG9saWN5
SW50ZXJmYWNlKiwgUVdLQ29udGV4dCosIFdLUGFnZUdyb3VwUmVmID0gMCk7CiAgICAgflF0V2Vi
UGFnZVByb3h5KCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoUUV2ZW50Kik7CkBA
IC0xODYsNiArMTg3LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRl
bnQoUVBhaW50ZXIqIHBhaW50ZXIsIGNvbnN0IFFSZWN0JiBhcmVhKSA9IDA7CiAgICAgUmVmUHRy
PFdlYktpdDo6V2ViUGFnZVByb3h5PiBtX3dlYlBhZ2VQcm94eTsKICAgICBXZWJLaXQ6OlZpZXdJ
bnRlcmZhY2UqIGNvbnN0IG1fdmlld0ludGVyZmFjZTsKKyAgICBXZWJLaXQ6OlBvbGljeUludGVy
ZmFjZSogY29uc3QgbV9wb2xpY3lJbnRlcmZhY2U7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBoYW5k
bGVLZXlQcmVzc0V2ZW50KFFLZXlFdmVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L3FkZXNrdG9wd2VicGFnZXByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9xZGVza3RvcHdlYnBhZ2Vwcm94eS5jcHAKaW5kZXggN2FlODdiMTY1ZTAxNTYz
NDJjNzM3ZGUzNWZlNjQ5ZmE3M2ExNjYxMy4uNWZjZmVkZDNkMzU4NGYxOTBkNjhjMjU1MmNlMzE4
NTE2OWRhMmQ5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3FkZXNr
dG9wd2VicGFnZXByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcWRl
c2t0b3B3ZWJwYWdlcHJveHkuY3BwCkBAIC00Nyw4ICs0Nyw4IEBAIHN0YXRpYyBpbmxpbmUgUXQ6
OkRyb3BBY3Rpb24gZHJhZ09wZXJhdGlvblRvRHJvcEFjdGlvbih1bnNpZ25lZCBkcmFnT3BlcmF0
aW9uKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVFEZXNrdG9wV2ViUGFnZVByb3h5OjpRRGVz
a3RvcFdlYlBhZ2VQcm94eShRRGVza3RvcFdlYlZpZXdQcml2YXRlKiB2aWV3SW50ZXJmYWNlLCBR
V0tDb250ZXh0KiBjb250ZXh0LCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXApCi0gICAgOiBRdFdl
YlBhZ2VQcm94eSh2aWV3SW50ZXJmYWNlLCBjb250ZXh0LCBwYWdlR3JvdXApCitRRGVza3RvcFdl
YlBhZ2VQcm94eTo6UURlc2t0b3BXZWJQYWdlUHJveHkoUURlc2t0b3BXZWJWaWV3UHJpdmF0ZSog
ZGVza3RvcFdlYlZpZXcsIFFXS0NvbnRleHQqIGNvbnRleHQsIFdLUGFnZUdyb3VwUmVmIHBhZ2VH
cm91cCkKKyAgICA6IFF0V2ViUGFnZVByb3h5KGRlc2t0b3BXZWJWaWV3LCBkZXNrdG9wV2ViVmll
dywgY29udGV4dCwgcGFnZUdyb3VwKQogewogICAgIGluaXQoKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xdG91Y2h3ZWJwYWdlcHJveHkuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L3F0b3VjaHdlYnBhZ2Vwcm94eS5jcHAKaW5kZXggNTU5ZjJj
MTNlYjUyMDE5NWQ5NzdhMTQ3MmY0NWE5MjdmZDAyODliNi4uNDE0NTIzNjg3MjI5M2FjOTllYzY1
ODkxYzc2ZDUwNGU1ZTc3MjQzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L3F0b3VjaHdlYnBhZ2Vwcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L3F0b3VjaHdlYnBhZ2Vwcm94eS5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBRVG91Y2hXZWJQYWdlUHJveHk6OlFUb3VjaFdlYlBhZ2VQcm94eShU
b3VjaFZpZXdJbnRlcmZhY2UqIHZpZXdJbnRlcmZhY2UsIFFXS0NvbnRleHQqIGNvbnRleHQsIFdL
UGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKLSAgICA6IFF0V2ViUGFnZVByb3h5KHZpZXdJbnRl
cmZhY2UsIGNvbnRleHQsIHBhZ2VHcm91cFJlZikKKyAgICA6IFF0V2ViUGFnZVByb3h5KHZpZXdJ
bnRlcmZhY2UsIDAsIGNvbnRleHQsIHBhZ2VHcm91cFJlZikKICAgICAsIG1fcGFuR2VzdHVyZVJl
Y29nbml6ZXIodmlld0ludGVyZmFjZSkKICAgICAsIG1fcGluY2hHZXN0dXJlUmVjb2duaXplcih2
aWV3SW50ZXJmYWNlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcm8g
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBybwppbmRleCA0NGViYjY5Y2RjMmRkZDI1YWExMjU4
M2FiZGI5NWRmMTEzOGM2Mjc0Li41N2NlNDBjMzhiNDQyNTFjMTFhZTVlN2JhNzMxY2Q3MjAwODEw
OGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBybworKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyLnBybwpAQCAtMjM3LDYgKzIzNyw3IEBAIEhFQURFUlMgKz0gXAogICAg
IFVJUHJvY2Vzcy9XZWJVSUNsaWVudC5oIFwKICAgICBVSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5o
IFwKICAgICBVSVByb2Nlc3MvcXQvVG91Y2hWaWV3SW50ZXJmYWNlLmggXAorICAgIFVJUHJvY2Vz
cy9xdC9Qb2xpY3lJbnRlcmZhY2UuaCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0R2VzdHVyZVJlY29n
bml6ZXIuaCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0UGFuR2VzdHVyZVJlY29nbml6ZXIuaCBcCiAg
ICAgVUlQcm9jZXNzL3F0L1F0UGluY2hHZXN0dXJlUmVjb2duaXplci5oIFwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104404</attachid>
            <date>2011-08-18 15:05:11 -0700</date>
            <delta_ts>2011-08-19 09:26:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65920-20110818190509.patch</filename>
            <type>text/plain</type>
            <size>21354</size>
            <attacher name="Caio Marcelo de Oliveira Filho">cmarcelo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTMzMTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA5ZWQ3YWQ4YTQ3OWQ4MWFk
ODY4YjRjZjNkNTU0ZmFjNDZkZjRmMWE2Li45ZmQyZTdiODkxZjM3MDk1ODk3MWVjNjg1YmI4MjFh
YjBiZGQ3YWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjYgQEAKKzIwMTEtMDgtMTggIENhaW8g
TWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4K
KworICAgICAgICBbUXRdIFtXSzJdIFByb3ZpZGUgQVBJIGZvciBpbnRlcmNlcHQgKGFuZCBwb3Nz
aWJsZSBpZ25vcmUpIGxpbmtzIGNsaWNrZWQgaW4gUURlc2t0b3BXZWJWaWV3CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTkyMAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgUURl
c2t0b3BXZWJWaWV3IGRlbGVnYXRlIHRoZSBkZWNpc2lvbiBvZiB3aGV0aGVyIGEgbmF2aWdhdGlv
bgorICAgICAgICBzaG91bGQgcHJvY2VlZCB0byBhIHNsb3QgaW4gUU1MLiBUaGUgdXNlciBvZiB0
aGUgRGVza3RvcFdlYlZpZXcgbXVzdCBpbXBsZW1lbnQgYQorICAgICAgICAnbmF2aWdhdGlvblBv
bGljeUZvclVybCgpJyBpZiBpdCB3YW50cyB0byB1c2UgdGhlIGZlYXR1cmUuCisKKyAgICAgICAg
U3VjaCBmZWF0dXJlIGlzIHVzZWZ1bCBmb3IgaW1wbGVtZW50aW5nIG9wZW5pbmcgbGlua3MgaW4g
Im5ldyB0YWIiIGJ5IHVzaW5nIGEKKyAgICAgICAgc3BlY2lmaWMgbW91c2UgYnV0dG9uIG9yIG1v
dXNlIGJ1dHRvbiBwbHVzIGtleWJvYXJkIG1vZGlmaWVycy4KKworICAgICAgICBUaGUgcGF0Y2gg
aW50cm9kdWNlcyBhIGludGVybmFsIFF0LWxldmVsIGludGVyZmFjZSBjYWxsZWQgUG9saWN5SW50
ZXJmYWNlLCB0aGF0CisgICAgICAgIGlzIHVzZWQgYnkgUXRXZWJQYWdlUHJveHkgdG8gZGVsZWdh
dGUgcG9saWN5IGNhbGxzLiBBIGNvbmNyZXRlIGltcGxlbWVudGF0aW9uIGlzCisgICAgICAgIHBy
b3ZpZGVkIGZvciBRRGVza3RvcFdlYlZpZXcuCisKKyAgICAgICAgKiBTaGFyZWQvcXQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzUXQuY3BwOgorICAgICAgICAoQ29yZUlQQzo6OjplbmNvZGUpOgorICAg
ICAgICAoQ29yZUlQQzo6OjpkZWNvZGUpOgorICAgICAgICBJbXBsZW1lbnQgdGhlIHNlcmlhbGl6
YXRpb24gb2YgdGhlIFJlcXVlc3QgVVJMLCB3aGljaCBpcyB0aGUgb25seSBkYXRhCisgICAgICAg
IHdlIGV4cG9zaW5nIGZyb20gdGhlIFJlcXVlc3QuCisKKyAgICAgICAgKiBXZWJLaXQyLnBybzoK
KyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUG9saWN5SW50ZXJmYWNlLmg6IEFkZGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChRdFdlYlBhZ2VQ
cm94eTo6UXRXZWJQYWdlUHJveHkpOgorICAgICAgICAoUXRXZWJQYWdlUHJveHk6OmluaXQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5oOgorICAgICAgICBSZWdpc3Rl
ciBhIFBvbGljeSBDbGllbnQgaW4gdGhlIFdLMiBDIEFQSSBvbmx5IGlmIHRoZXJlJ3MgYSBQb2xp
Y3lJbnRlcmZhY2UgYXZhaWxhYmxlLgorCisgICAgICAgICogVUlQcm9jZXNzL3F0L0NsaWVudElt
cGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5jcHA6CisgICAgICAgICh0
b1BvbGljeUludGVyZmFjZSk6CisgICAgICAgICh0b1F0TW91c2VCdXR0b24pOgorICAgICAgICAo
dG9RdEtleWJvYXJkTW9kaWZpZXJzKToKKyAgICAgICAgKHF0X3drX2RlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb24pOgorICAgICAgICBJbXBsZW1lbnQgdGhlIGNhbGxiYWNrIGZvciB0aGUg
UGFnZSBQb2xpY3kgQ2xpZW50LiBJdCB3aWxsIHRyYW5zbGF0ZSB0aGUKKyAgICAgICAgYXJndW1l
bnRzIHRvIFF0IGphcmdvbiBhbmQgY2FsbCBQb2xpY3lJbnRlcmZhY2UuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvcXQvcWRlc2t0b3B3ZWJwYWdlcHJveHkuY3BwOgorICAgICAgICAoUURlc2t0b3BX
ZWJQYWdlUHJveHk6OlFEZXNrdG9wV2ViUGFnZVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3F0L3FkZXNrdG9wd2Vidmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcWRl
c2t0b3B3ZWJ2aWV3X3AuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vi
dmlldy5jcHA6CisgICAgICAgICh0b1BvbGljeUFjdGlvbik6CisgICAgICAgIChRRGVza3RvcFdl
YlZpZXdQcml2YXRlOjpuYXZpZ2F0aW9uUG9saWN5Rm9yVVJMKToKKyAgICAgICAgVGhlIGNvbmNy
ZXRlIGltcGxlbWVudGF0aW9uIGZvciBRRGVza3RvcFdlYlZpZXcuIEl0cyBwcml2YXRlIG9iamVj
dCBpbXBsZW1lbnRzCisgICAgICAgIHRoZSBQb2xpY3lJbnRlcmZhY2UgYW5kIHRyeSB0byBjYWxs
IGEgcG9zc2libGUgZnVuY3Rpb24gZGVmaW5lZCBpbiBRTUwgKHNvIHJldHVybgorICAgICAgICB2
YWx1ZSBhbmQgYXJndW1lbnRzIGFsbCBRVmFyaWFudHMpLiBJZiB0aGVyZSdzIG5vIHN1Y2ggYSBm
dW5jdGlvbiwgcmV0dXJucyB0aGUKKyAgICAgICAgZGVmYXVsdCBVc2VQb2xpY3ksIGxpa2UgaWYg
d2UgaGF2ZW4ndCByZWdpc3RlcmVkIGEgUG9saWN5Q2xpZW50IGluIFdLMiBDIEFQSS4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvRGVza3RvcFdlYlZpZXcvdHN0
X25hdmlnYXRpb25Qb2xpY3lGb3JVcmwucW1sOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1vbi90ZXN0Mi5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL3FtbHRlc3RzLnBybzoKKyAgICAgICAg
QWRkIGEgdGVzdCBmb3IgRGVza3RvcFdlYlZpZXcgUU1MIGVsZW1lbnQgbWFraW5nIHVzZSBvZiBh
IGJ1dHRvbiBhbmQgYSBtb2RpZmllciB0bworICAgICAgICBpZ25vcmUgYSBuYXZpZ2F0aW9uLgor
CisgICAgICAgICogVUlQcm9jZXNzL3F0L3F0b3VjaHdlYnBhZ2Vwcm94eS5jcHA6CisgICAgICAg
IChRVG91Y2hXZWJQYWdlUHJveHk6OlFUb3VjaFdlYlBhZ2VQcm94eSk6CisgICAgICAgIEZvciBu
b3csIHdlIGRvbid0IGhhdmUgYSBQb2xpY3lJbnRlcmZhY2UgZm9yIFFUb3VjaFdlYlZpZXcuCisK
IDIwMTEtMDgtMTcgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIE1h
a2UgV2ViQ29yZSBrZWVwIHRyYWNrIG9mIHRoZSBjdXJyZW50IGRldmljZSBzY2FsZSBmYWN0b3IK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
UXQuY3BwCmluZGV4IDAwODRiYmUzY2VmMDJlYmNmN2Q2OTdlYzM0ODNiZjY5Mjg2Yjc0NmEuLjIz
Zjk5ZTlmNWFiNGRhN2MzMmVmYjI5NDFiZGIxNjFiYWI3NTk1NjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9xdC9XZWJDb3JlQXJndW1lbnRDb2RlcnNRdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL3F0L1dlYkNvcmVBcmd1bWVudENvZGVyc1F0LmNwcApAQCAtMzcs
MTYgKzM3LDIxIEBAIG5hbWVzcGFjZSBDb3JlSVBDIHsKIAogdm9pZCBBcmd1bWVudENvZGVyPFJl
c291cmNlUmVxdWVzdD46OmVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNlUmVxdWVzdC51cmwoKS5zdHJpbmcoKSk7CiB9
CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGUoQXJndW1lbnRE
ZWNvZGVyKiBkZWNvZGVyLCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKIHsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOwotCi0gICAgLy8gRklYTUU6IEFkZCByZWFsIGltcGxlbWVudGF0
aW9uIHdoZW4gd2Ugd2FudCB0byBpbXBsZW1lbnQgc29tZXRoaW5nIHRoYXQKKyAgICAvLyBGSVhN
RTogQWRkICptb3JlKiBjb2RpbmcgaW1wbGVtZW50YXRpb24gd2hlbiB3ZSB3YW50IHRvIGltcGxl
bWVudCBzb21ldGhpbmcgdGhhdAogICAgIC8vIGRlcGVuZHMgb24gdGhpcyBsaWtlIHRoZSBwb2xp
Y3kgY2xpZW50LgotICAgIHJlc291cmNlUmVxdWVzdCA9IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCgpOworCisgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Q7CisgICAgU3RyaW5nIHVybDsKKyAg
ICBpZiAoIWRlY29kZXItPmRlY29kZSh1cmwpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
cmVxdWVzdC5zZXRVUkwoS1VSTChXZWJDb3JlOjpQYXJzZWRVUkxTdHJpbmcsIHVybCkpOworCisg
ICAgcmVzb3VyY2VSZXF1ZXN0ID0gcmVxdWVzdDsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3Bw
CmluZGV4IGRkZTQ1YWU0OTQ0NjA4ZDcxNzg3MTNhMGNjMTY5NjVhN2FlZDQxZjMuLmQwNzU0MTA5
ZTFlNzUzM2IxNDAyNDkzOTllMDQ0NjMxYjZlYjMwODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHAKQEAgLTM3Niw0ICszNzYs
MjYgQEAgdm9pZCBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpkaWRSZWxhdW5jaFByb2Nlc3MoKQog
ICAgIHEtPnVwZGF0ZSgpOwogfQogCitzdGF0aWMgUG9saWN5SW50ZXJmYWNlOjpQb2xpY3lBY3Rp
b24gdG9Qb2xpY3lBY3Rpb24oUURlc2t0b3BXZWJWaWV3OjpOYXZpZ2F0aW9uUG9saWN5IHBvbGlj
eSkKK3sKKyAgICBzd2l0Y2ggKHBvbGljeSkgeworICAgIGNhc2UgUURlc2t0b3BXZWJWaWV3OjpV
c2VQb2xpY3k6CisgICAgICAgIHJldHVybiBQb2xpY3lJbnRlcmZhY2U6OlVzZTsKKyAgICBjYXNl
IFFEZXNrdG9wV2ViVmlldzo6RG93bmxvYWRQb2xpY3k6CisgICAgICAgIHJldHVybiBQb2xpY3lJ
bnRlcmZhY2U6OkRvd25sb2FkOworICAgIGNhc2UgUURlc2t0b3BXZWJWaWV3OjpJZ25vcmVQb2xp
Y3k6CisgICAgICAgIHJldHVybiBQb2xpY3lJbnRlcmZhY2U6Oklnbm9yZTsKKyAgICB9CisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFBvbGljeUludGVyZmFjZTo6SWdub3Jl
OworfQorCitQb2xpY3lJbnRlcmZhY2U6OlBvbGljeUFjdGlvbiBRRGVza3RvcFdlYlZpZXdQcml2
YXRlOjpuYXZpZ2F0aW9uUG9saWN5Rm9yVVJMKGNvbnN0IFFVcmwmIHVybCwgUXQ6Ok1vdXNlQnV0
dG9uIGJ1dHRvbiwgUXQ6OktleWJvYXJkTW9kaWZpZXJzIG1vZGlmaWVycykKK3sKKyAgICBRVmFy
aWFudCByZXQ7CisgICAgaWYgKFFNZXRhT2JqZWN0OjppbnZva2VNZXRob2QocSwgIm5hdmlnYXRp
b25Qb2xpY3lGb3JVcmwiLCBRX1JFVFVSTl9BUkcoUVZhcmlhbnQsIHJldCksIFFfQVJHKFFWYXJp
YW50LCB1cmwpLCBRX0FSRyhRVmFyaWFudCwgYnV0dG9uKSwgUV9BUkcoUVZhcmlhbnQsIFFWYXJp
YW50KG1vZGlmaWVycykpKSkKKyAgICAgICAgcmV0dXJuIHRvUG9saWN5QWN0aW9uKHN0YXRpY19j
YXN0PFFEZXNrdG9wV2ViVmlldzo6TmF2aWdhdGlvblBvbGljeT4ocmV0LnRvSW50KCkpKTsKKyAg
ICByZXR1cm4gUG9saWN5SW50ZXJmYWNlOjpVc2U7Cit9CisKICNpbmNsdWRlICJtb2NfcWRlc2t0
b3B3ZWJ2aWV3LmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcWRlc2t0b3B3ZWJ2aWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Fk
ZXNrdG9wd2Vidmlldy5oCmluZGV4IDU5MGZhYmRjOTU3NjQzNWMyNzllY2M2NjUzZDc4NzNjNDMz
ZjE0NjkuLjAzNGMyMTZlOTk0ZmQ4YjlmMzY1YTRjMzgyZjk0ZjMxNjZhZDRiYzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuaApAQCAt
NTQsOCArNTQsMTUgQEAgY2xhc3MgUVdFQktJVF9FWFBPUlQgUURlc2t0b3BXZWJWaWV3IDogcHVi
bGljIFFTR1BhaW50ZWRJdGVtIHsKICAgICBRX1BST1BFUlRZKFFVcmwgdXJsIFJFQUQgdXJsIE5P
VElGWSB1cmxDaGFuZ2VkKQogICAgIFFfUFJPUEVSVFkoaW50IGxvYWRQcm9ncmVzcyBSRUFEIGxv
YWRQcm9ncmVzcyBOT1RJRlkgbG9hZFByb2dyZXNzQ2hhbmdlZCkKICAgICBRX1BST1BFUlRZKFFX
ZWJOYXZpZ2F0aW9uQ29udHJvbGxlciogbmF2aWdhdGlvbiBSRUFEIG5hdmlnYXRpb25Db250cm9s
bGVyIENPTlNUQU5UKQorICAgIFFfRU5VTVMoTmF2aWdhdGlvblBvbGljeSkKIAogcHVibGljOgor
ICAgIGVudW0gTmF2aWdhdGlvblBvbGljeSB7CisgICAgICAgIFVzZVBvbGljeSwKKyAgICAgICAg
RG93bmxvYWRQb2xpY3ksCisgICAgICAgIElnbm9yZVBvbGljeQorICAgIH07CisKICAgICBRRGVz
a3RvcFdlYlZpZXcoUVNHSXRlbSogcGFyZW50ID0gMCk7CiAgICAgdmlydHVhbCB+UURlc2t0b3BX
ZWJWaWV3KCk7CiAKQEAgLTExMSw0ICsxMTgsNyBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFz
cyBRRGVza3RvcFdlYlZpZXdQcml2YXRlOwogICAgIFFEZXNrdG9wV2ViVmlld1ByaXZhdGUgKmQ7
CiB9OworCitRX0RFQ0xBUkVfTUVUQVRZUEUoUURlc2t0b3BXZWJWaWV3OjpOYXZpZ2F0aW9uUG9s
aWN5KQorCiAjZW5kaWYgLyogcWRlc2t0b3B3ZWJ2aWV3X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3X3AuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3X3AuaAppbmRleCBjMmQ2MGNm
OGE0ODE3MTlmY2FmZmZiMzlkMGZmYTA1YzA4NGE3Y2MxLi4wNzJmYzMzY2MzOWIxNjFkODdlMjA5
MDI0YTFlNmE0YzJhYjU3NzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3FkZXNrdG9wd2Vidmlld19wLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9xZGVza3RvcHdlYnZpZXdfcC5oCkBAIC0yNyw3ICsyNyw3IEBACiAKIGNsYXNzIFFE
ZXNrdG9wV2ViVmlldzsKIAotY2xhc3MgUURlc2t0b3BXZWJWaWV3UHJpdmF0ZSA6IHB1YmxpYyBX
ZWJLaXQ6OlZpZXdJbnRlcmZhY2UKK2NsYXNzIFFEZXNrdG9wV2ViVmlld1ByaXZhdGUgOiBwdWJs
aWMgV2ViS2l0OjpWaWV3SW50ZXJmYWNlLCBwdWJsaWMgV2ViS2l0OjpQb2xpY3lJbnRlcmZhY2UK
IHsKIHB1YmxpYzoKICAgICBRRGVza3RvcFdlYlZpZXdQcml2YXRlKFFEZXNrdG9wV2ViVmlldyos
IFdLQ29udGV4dFJlZiA9IDAsIFdLUGFnZUdyb3VwUmVmID0gMCk7CkBAIC03MSw2ICs3MSw5IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEaWRDcmFzaCgpOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWxhdW5jaFByb2Nlc3MoKTsKIAorICAgIC8vIFBvbGljeUludGVyZmFjZS4K
KyAgICB2aXJ0dWFsIFBvbGljeUludGVyZmFjZTo6UG9saWN5QWN0aW9uIG5hdmlnYXRpb25Qb2xp
Y3lGb3JVUkwoY29uc3QgUVVybCYsIFF0OjpNb3VzZUJ1dHRvbiwgUXQ6OktleWJvYXJkTW9kaWZp
ZXJzKTsKKwogICAgIFFTaGFyZWRQb2ludGVyPFFNZW51PiBhY3RpdmVNZW51OwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9E
ZXNrdG9wV2ViVmlldy90c3RfbmF2aWdhdGlvblBvbGljeUZvclVybC5xbWwgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL0Rlc2t0b3BXZWJWaWV3L3RzdF9u
YXZpZ2F0aW9uUG9saWN5Rm9yVXJsLnFtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNzAyYWRlYTI3OTdmY2RjNjc2
NTM2OTliYTkxNzFhOGY4NzFkMmVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9EZXNrdG9wV2ViVmlldy90c3RfbmF2aWdh
dGlvblBvbGljeUZvclVybC5xbWwKQEAgLTAsMCArMSw1MiBAQAoraW1wb3J0IFF0UXVpY2sgMi4w
CitpbXBvcnQgUXRUZXN0IDEuMAoraW1wb3J0IFF0V2ViS2l0LmV4cGVyaW1lbnRhbCA1LjAKKwor
SXRlbSB7CisgICAgRGVza3RvcFdlYlZpZXcgeworICAgICAgICBpZDogd2ViVmlldworICAgICAg
ICB3aWR0aDogMjAwCisgICAgICAgIGhlaWdodDogMjAwCisgICAgICAgIGZ1bmN0aW9uIG5hdmln
YXRpb25Qb2xpY3lGb3JVcmwodXJsLCBidXR0b24sIG1vZGlmaWVycykgeworICAgICAgICAgICAg
aWYgKGJ1dHRvbiA9PSBRdC5NaWRkbGVCdXR0b24gJiYgbW9kaWZpZXJzICYgUXQuQ29udHJvbE1v
ZGlmaWVyKSB7CisgICAgICAgICAgICAgICAgb3RoZXJXZWJWaWV3LmxvYWQodXJsKQorICAgICAg
ICAgICAgICAgIHJldHVybiBEZXNrdG9wV2ViVmlldy5JZ25vcmVQb2xpY3kKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIHJldHVybiBEZXNrdG9wV2ViVmlldy5Vc2VQb2xpY3kKKyAgICAgICAg
fQorICAgIH0KKworICAgIFNpZ25hbFNweSB7CisgICAgICAgIGlkOiBzcHkKKyAgICAgICAgdGFy
Z2V0OiB3ZWJWaWV3CisgICAgICAgIHNpZ25hbE5hbWU6ICJsb2FkU3VjY2VlZGVkIgorICAgIH0K
KworICAgIERlc2t0b3BXZWJWaWV3IHsKKyAgICAgICAgaWQ6IG90aGVyV2ViVmlldworICAgIH0K
KworICAgIFNpZ25hbFNweSB7CisgICAgICAgIGlkOiBvdGhlclNweQorICAgICAgICB0YXJnZXQ6
IG90aGVyV2ViVmlldworICAgICAgICBzaWduYWxOYW1lOiAibG9hZFN1Y2NlZWRlZCIKKyAgICB9
CisKKyAgICBUZXN0Q2FzZSB7CisgICAgICAgIG5hbWU6ICJEZXNrdG9wV2ViVmlld05hdmlnYXRp
b25Qb2xpY3lGb3JVcmwiCisgICAgICAgIHdoZW46IHdpbmRvd1Nob3duCisKKyAgICAgICAgZnVu
Y3Rpb24gdGVzdF9uYXZpZ2F0aW9uUG9saWN5Rm9yVXJsKCkgeworICAgICAgICAgICAgd2ViVmll
dy5sb2FkKFF0LnJlc29sdmVkVXJsKCIuLi9jb21tb24vdGVzdDIuaHRtbCIpKQorICAgICAgICAg
ICAgc3B5LndhaXQoKQorICAgICAgICAgICAgc3B5LmNsZWFyKCkKKyAgICAgICAgICAgIGNvbXBh
cmUoc3B5LmNvdW50LCAwKQorICAgICAgICAgICAgY29tcGFyZShvdGhlclNweS5jb3VudCwgMCkK
KyAgICAgICAgICAgIG1vdXNlQ2xpY2sod2ViVmlldywgMTAwLCAxMDAsIFF0Lk1pZGRsZUJ1dHRv
biwgUXQuQ29udHJvbE1vZGlmaWVyKQorICAgICAgICAgICAgb3RoZXJTcHkud2FpdCgpCisgICAg
ICAgICAgICBjb21wYXJlKHNweS5jb3VudCwgMCkKKyAgICAgICAgICAgIGNvbXBhcmUob3RoZXJT
cHkuY291bnQsIDEpCisgICAgICAgICAgICBjb21wYXJlKG90aGVyV2ViVmlldy50aXRsZSwgIlRl
c3QgcGFnZSAxIikKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL3Rlc3QyLmh0bWwgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1vbi90ZXN0
Mi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjBhM2MzOWRkMzNkODFlMTdjYjBhYjBlYzQyMTFmNTM4YjM0YjE2
ODIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rl
c3RzL3FtbHRlc3RzL2NvbW1vbi90ZXN0Mi5odG1sCkBAIC0wLDAgKzEsNiBAQAorPGh0bWw+Cis8
aGVhZD48dGl0bGU+VGVzdCBwYWdlIHdpdGggaHVnZSBsaW5rIGFyZWE8L3RpdGxlPjwvaGVhZD4K
Kzxib2R5PgorPGEgaHJlZj0idGVzdDEuaHRtbCI+PGltZyB3aWR0aD0yMDAgaGVpZ2h0PTIwMD48
L2E+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL3FtbHRlc3RzLnBybyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvcW1sdGVzdHMucHJvCmluZGV4IDFjMzAxZWFi
OTEzMzQwMTdjODlkYmExZGQxMzlhZWVmMDMwNGE4NjguLmIwMTM5ZjViY2RkMDMyZWRiN2FjYzky
ZjdkNWU0NmRlOTA0OTQ5MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvdGVzdHMvcW1sdGVzdHMvcW1sdGVzdHMucHJvCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvcW1sdGVzdHMucHJvCkBAIC0xMiw1ICsxMiw2
IEBAIG1lc3NhZ2UoJCRQV0QpCiAKIE9USEVSX0ZJTEVTICs9IFwKICAgICBEZXNrdG9wV2ViVmll
dy90c3RfcHJvcGVydGllcy5xbWwgXAorICAgIERlc2t0b3BXZWJWaWV3L3RzdF9uYXZpZ2F0aW9u
UG9saWN5Rm9yVXJsLnFtbCBcCiAgICAgVG91Y2hXZWJWaWV3L3RzdF9wcm9wZXJ0aWVzLnFtbAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5jcHAKaW5kZXggMGMzYTJi
ZTdmZTJkMTY2ZjBkZDQxZjZkNDlkZTg3OTVlMTA2OTUxMC4uMmIxZTM2NmIxODI2NGNhMTAxNzhh
NWFlMWIxOWYyZWQzNTk2NWU1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L0NsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9DbGll
bnRJbXBsLmNwcApAQCAtMjYsMTEgKzI2LDE0IEBACiAjaW5jbHVkZSAiV0tVUkxRdC5oIgogI2lu
Y2x1ZGUgInF3ZWJlcnJvci5oIgogI2luY2x1ZGUgInF3ZWJlcnJvcl9wLmgiCisjaW5jbHVkZSA8
UG9saWN5SW50ZXJmYWNlLmg+CiAjaW5jbHVkZSA8cXdrY29udGV4dC5oPgogI2luY2x1ZGUgPFF0
V2ViUGFnZVByb3h5Lmg+CiAjaW5jbHVkZSA8Vmlld0ludGVyZmFjZS5oPgogI2luY2x1ZGUgPFdL
RnJhbWUuaD4KKyNpbmNsdWRlIDxXS0ZyYW1lUG9saWN5TGlzdGVuZXIuaD4KICNpbmNsdWRlIDxX
S1R5cGUuaD4KKyNpbmNsdWRlIDxXS1VSTFJlcXVlc3QuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKIApAQCAtNTQsNiArNTcsMTIgQEAgc3RhdGljIGlubGluZSBWaWV3SW50ZXJmYWNlKiB0
b1ZpZXdJbnRlcmZhY2UoY29uc3Qgdm9pZCogY2xpZW50SW5mbykKICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxWaWV3SW50ZXJmYWNlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykp
OwogfQogCitzdGF0aWMgaW5saW5lIFBvbGljeUludGVyZmFjZSogdG9Qb2xpY3lJbnRlcmZhY2Uo
Y29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBBU1NFUlQoY2xpZW50SW5mbyk7CisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8UG9saWN5SW50ZXJmYWNlKj4oY29uc3RfY2FzdDx2b2lk
Kj4oY2xpZW50SW5mbykpOworfQorCiBzdGF0aWMgdm9pZCBkaXNwYXRjaExvYWRTdWNjZWVkZWQo
V0tGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKICAgICBpZiAoIVdL
RnJhbWVJc01haW5GcmFtZShmcmFtZSkpCkBAIC0xNTQsMyArMTYzLDUxIEBAIHZvaWQgcXRfd2tf
ZGlkQ2hhbmdlSWNvbkZvclBhZ2VVUkwoV0tJY29uRGF0YWJhc2VSZWYgaWNvbkRhdGFiYXNlLCBX
S1VSTFJlZiBwYWdlCiB2b2lkIHF0X3drX2RpZFJlbW92ZUFsbEljb25zKFdLSWNvbkRhdGFiYXNl
UmVmIGljb25EYXRhYmFzZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKIH0KKworc3RhdGlj
IFF0OjpNb3VzZUJ1dHRvbiB0b1F0TW91c2VCdXR0b24oV0tFdmVudE1vdXNlQnV0dG9uIGJ1dHRv
bikKK3sKKyAgICBzd2l0Y2ggKGJ1dHRvbikgeworICAgIGNhc2Uga1dLRXZlbnRNb3VzZUJ1dHRv
bkxlZnRCdXR0b246CisgICAgICAgIHJldHVybiBRdDo6TGVmdEJ1dHRvbjsKKyAgICBjYXNlIGtX
S0V2ZW50TW91c2VCdXR0b25NaWRkbGVCdXR0b246CisgICAgICAgIHJldHVybiBRdDo6TWlkZGxl
QnV0dG9uOworICAgIGNhc2Uga1dLRXZlbnRNb3VzZUJ1dHRvblJpZ2h0QnV0dG9uOgorICAgICAg
ICByZXR1cm4gUXQ6OlJpZ2h0QnV0dG9uOworICAgIH0KKyAgICByZXR1cm4gUXQ6Ok5vQnV0dG9u
OworfQorCitzdGF0aWMgUXQ6OktleWJvYXJkTW9kaWZpZXJzIHRvUXRLZXlib2FyZE1vZGlmaWVy
cyhXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycykKK3sKKyAgICBRdDo6S2V5Ym9hcmRNb2RpZmll
cnMgcXRNb2RpZmllcnMgPSBRdDo6Tm9Nb2RpZmllcjsKKyAgICBpZiAobW9kaWZpZXJzICYga1dL
RXZlbnRNb2RpZmllcnNTaGlmdEtleSkKKyAgICAgICAgcXRNb2RpZmllcnMgfD0gUXQ6OlNoaWZ0
TW9kaWZpZXI7CisgICAgaWYgKG1vZGlmaWVycyAmIGtXS0V2ZW50TW9kaWZpZXJzQ29udHJvbEtl
eSkKKyAgICAgICAgcXRNb2RpZmllcnMgfD0gUXQ6OkNvbnRyb2xNb2RpZmllcjsKKyAgICBpZiAo
bW9kaWZpZXJzICYga1dLRXZlbnRNb2RpZmllcnNBbHRLZXkpCisgICAgICAgIHF0TW9kaWZpZXJz
IHw9IFF0OjpBbHRNb2RpZmllcjsKKyAgICBpZiAobW9kaWZpZXJzICYga1dLRXZlbnRNb2RpZmll
cnNNZXRhS2V5KQorICAgICAgICBxdE1vZGlmaWVycyB8PSBRdDo6TWV0YU1vZGlmaWVyOworICAg
IHJldHVybiBxdE1vZGlmaWVyczsKK30KKwordm9pZCBxdF93a19kZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS0ZyYW1lTmF2
aWdhdGlvblR5cGUgbmF2aWdhdGlvblR5cGUsIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCBX
S0V2ZW50TW91c2VCdXR0b24gbW91c2VCdXR0b24sIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0LCBX
S0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYgbGlzdGVuZXIsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBQb2xpY3lJbnRlcmZhY2UqIHBvbGljeUludGVy
ZmFjZSA9IHRvUG9saWN5SW50ZXJmYWNlKGNsaWVudEluZm8pOworICAgIFdLVVJMUmVmIHJlcXVl
c3RVUkwgPSBXS1VSTFJlcXVlc3RDb3B5VVJMKHJlcXVlc3QpOworICAgIFFVcmwgcVVybCA9IFdL
VVJMQ29weVFVcmwocmVxdWVzdFVSTCk7CisgICAgV0tSZWxlYXNlKHJlcXVlc3RVUkwpOworCisg
ICAgUG9saWN5SW50ZXJmYWNlOjpQb2xpY3lBY3Rpb24gYWN0aW9uID0gcG9saWN5SW50ZXJmYWNl
LT5uYXZpZ2F0aW9uUG9saWN5Rm9yVVJMKHFVcmwsIHRvUXRNb3VzZUJ1dHRvbihtb3VzZUJ1dHRv
biksIHRvUXRLZXlib2FyZE1vZGlmaWVycyhtb2RpZmllcnMpKTsKKyAgICBzd2l0Y2ggKGFjdGlv
bikgeworICAgIGNhc2UgUG9saWN5SW50ZXJmYWNlOjpVc2U6CisgICAgICAgIFdLRnJhbWVQb2xp
Y3lMaXN0ZW5lclVzZShsaXN0ZW5lcik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUG9saWN5
SW50ZXJmYWNlOjpEb3dubG9hZDoKKyAgICAgICAgV0tGcmFtZVBvbGljeUxpc3RlbmVyRG93bmxv
YWQobGlzdGVuZXIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBvbGljeUludGVyZmFjZTo6
SWdub3JlOgorICAgICAgICBXS0ZyYW1lUG9saWN5TGlzdGVuZXJJZ25vcmUobGlzdGVuZXIpOwor
ICAgICAgICBicmVhazsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0NsaWVu
dEltcGwuaAppbmRleCA3ZjVkNjk2NTZlOGZlMmQyMWJiYjJhYjZjYTQzMjM3ZDU3MzNlYWRhLi5i
ZmI3NjI5Y2M1MTAyNjNjODc4NjVjYTNjMDdmNzU1NzNkM2IzZmE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmgKQEAgLTQ1LDYgKzQ1LDkgQEAgdm9pZCBxdF93a19z
ZXRTdGF0dXNUZXh0KFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiB0ZXh0LCBjb25zdCB2b2lk
ICpjbGllbnRJbmYKIHZvaWQgcXRfd2tfZGlkQ2hhbmdlSWNvbkZvclBhZ2VVUkwoV0tJY29uRGF0
YWJhc2VSZWYsIFdLVVJMUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIHZvaWQgcXRfd2tf
ZGlkUmVtb3ZlQWxsSWNvbnMoV0tJY29uRGF0YWJhc2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pOwogCisvLyBQb2xpY3kgY2xpZW50Lgordm9pZCBxdF93a19kZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tGcmFtZU5hdmlnYXRpb25UeXBl
LCBXS0V2ZW50TW9kaWZpZXJzLCBXS0V2ZW50TW91c2VCdXR0b24sIFdLVVJMUmVxdWVzdFJlZiwg
V0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1BvbGljeUludGVyZmFjZS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1BvbGljeUludGVyZmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjMGI0
N2FhZDlmODllNTA0YTZkNTdkNjUzOGM1MzFhNDhlOWMyMWIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUG9saWN5SW50ZXJmYWNlLmgKQEAgLTAsMCArMSw0
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3Ig
aXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgUG9saWN5SW50ZXJmYWNlX2gKKyNkZWZp
bmUgUG9saWN5SW50ZXJmYWNlX2gKKworI2luY2x1ZGUgPFF0Q29yZS9RVXJsPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgUG9saWN5SW50ZXJmYWNlIHsKK3B1YmxpYzoKKyAgICBlbnVt
IFBvbGljeUFjdGlvbiB7CisgICAgICAgIFVzZSwKKyAgICAgICAgRG93bmxvYWQsCisgICAgICAg
IElnbm9yZQorICAgIH07CisKKyAgICB2aXJ0dWFsIFBvbGljeUFjdGlvbiBuYXZpZ2F0aW9uUG9s
aWN5Rm9yVVJMKGNvbnN0IFFVcmwmLCBRdDo6TW91c2VCdXR0b24sIFF0OjpLZXlib2FyZE1vZGlm
aWVycykgPSAwOworfTsKKworfQorCisjZW5kaWYgLyogUG9saWN5SW50ZXJmYWNlX2ggKi8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwCmluZGV4IDdk
MGMyY2IzYzJlYTM0NTE2MWEzNWM2OWYxM2VjZDRjMmU1MzQyNDguLmQ1OTQ3NTBhZmFiNjc0ZmZm
YjgyNWYxMmZmMmE0NGZlM2NiZWU5YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L1F0V2ViUGFnZVByb3h5LmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkxvY2Fs
aXplZFN0cmluZ3MuaCIKICNpbmNsdWRlICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50LmgiCiAjaW5j
bHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJQb2xpY3lJbnRlcmZhY2UuaCIKICNp
bmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3QuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCiAj
aW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eVF0LmgiCkBAIC05NCw4ICs5NSw5IEBAIFdlYkNv
cmU6OkRyYWdPcGVyYXRpb24gZHJvcEFjdGlvblRvRHJhZ09wZXJhdGlvbihRdDo6RHJvcEFjdGlv
bnMgYWN0aW9ucykKICAgICByZXR1cm4gKERyYWdPcGVyYXRpb24pcmVzdWx0OwogfQogCi1RdFdl
YlBhZ2VQcm94eTo6UXRXZWJQYWdlUHJveHkoVmlld0ludGVyZmFjZSogdmlld0ludGVyZmFjZSwg
UVdLQ29udGV4dCogYywgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKQorUXRXZWJQYWdlUHJv
eHk6OlF0V2ViUGFnZVByb3h5KFZpZXdJbnRlcmZhY2UqIHZpZXdJbnRlcmZhY2UsIFBvbGljeUlu
dGVyZmFjZSogcG9saWN5SW50ZXJmYWNlLCBRV0tDb250ZXh0KiBjLCBXS1BhZ2VHcm91cFJlZiBw
YWdlR3JvdXBSZWYpCiAgICAgOiBtX3ZpZXdJbnRlcmZhY2Uodmlld0ludGVyZmFjZSkKKyAgICAs
IG1fcG9saWN5SW50ZXJmYWNlKHBvbGljeUludGVyZmFjZSkKICAgICAsIG1fY29udGV4dChjKQog
ICAgICwgbV9wcmVmZXJlbmNlcygwKQogICAgICwgbV91bmRvU3RhY2soYWRvcHRQdHIobmV3IFFV
bmRvU3RhY2sodGhpcykpKQpAQCAtMTg1LDYgKzE4NywxOCBAQCB2b2lkIFF0V2ViUGFnZVByb3h5
Ojppbml0KCkKICAgICAgICAgMCwgIC8qIHNob3VsZEludGVycnVwdEphdmFTY3JpcHQgKi8KICAg
ICB9OwogICAgIFdLUGFnZVNldFBhZ2VVSUNsaWVudCh0b0FQSShtX3dlYlBhZ2VQcm94eS5nZXQo
KSksICZ1aUNsaWVudCk7CisKKyAgICBpZiAobV9wb2xpY3lJbnRlcmZhY2UpIHsKKyAgICAgICAg
V0tQYWdlUG9saWN5Q2xpZW50IHBvbGljeUNsaWVudCA9IHsKKyAgICAgICAgICAgIDAsCisgICAg
ICAgICAgICBtX3BvbGljeUludGVyZmFjZSwKKyAgICAgICAgICAgIHF0X3drX2RlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24sCisgICAgICAgICAgICAwLCAgLyogZGVjaWRlUG9saWN5Rm9y
TmV3V2luZG93QWN0aW9uICovCisgICAgICAgICAgICAwLCAgLyogZGVjaWRlUG9saWN5Rm9yUmVz
cG9uc2UgKi8KKyAgICAgICAgICAgIDAsICAvKiB1bmFibGVUb0ltcGxlbWVudFBvbGljeSAqLwor
ICAgICAgICB9OworICAgICAgICBXS1BhZ2VTZXRQYWdlUG9saWN5Q2xpZW50KHRvQVBJKG1fd2Vi
UGFnZVByb3h5LmdldCgpKSwgJnBvbGljeUNsaWVudCk7CisgICAgfQogfQogCiBRdFdlYlBhZ2VQ
cm94eTo6flF0V2ViUGFnZVByb3h5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0
V2ViUGFnZVByb3h5LmgKaW5kZXggZmE2YzI5MWI1NGM1YzBlODY3NzVkYTE5N2YzMTFlM2RjZGUy
YjExNS4uODk1MTM0NTNkNGI2MGI0OTUyZTI1YTdiYWFkYzM3MDBmZDI4M2U4OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmgKQEAgLTI1LDYgKzI1LDcg
QEAKIAogI2luY2x1ZGUgIkxheWVyVHJlZUNvbnRleHQuaCIKICNpbmNsdWRlICJQYWdlQ2xpZW50
LmgiCisjaW5jbHVkZSAiUG9saWN5SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAicXdlYmtpdHR5cGVz
LmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiVmlld3BvcnRBcmd1
bWVudHMuaCIKQEAgLTcwLDcgKzcxLDcgQEAgcHVibGljOgogICAgICAgICBXZWJBY3Rpb25Db3Vu
dAogICAgIH07CiAKLSAgICBRdFdlYlBhZ2VQcm94eShXZWJLaXQ6OlZpZXdJbnRlcmZhY2UqIHZp
ZXdJbnRlcmZhY2UsIFFXS0NvbnRleHQqLCBXS1BhZ2VHcm91cFJlZiA9IDApOworICAgIFF0V2Vi
UGFnZVByb3h5KFdlYktpdDo6Vmlld0ludGVyZmFjZSosIFdlYktpdDo6UG9saWN5SW50ZXJmYWNl
KiwgUVdLQ29udGV4dCosIFdLUGFnZUdyb3VwUmVmID0gMCk7CiAgICAgflF0V2ViUGFnZVByb3h5
KCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoUUV2ZW50Kik7CkBAIC0xODcsNiAr
MTg4LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnQoUVBhaW50
ZXIqIHBhaW50ZXIsIGNvbnN0IFFSZWN0JiBhcmVhKSA9IDA7CiAgICAgUmVmUHRyPFdlYktpdDo6
V2ViUGFnZVByb3h5PiBtX3dlYlBhZ2VQcm94eTsKICAgICBXZWJLaXQ6OlZpZXdJbnRlcmZhY2Uq
IGNvbnN0IG1fdmlld0ludGVyZmFjZTsKKyAgICBXZWJLaXQ6OlBvbGljeUludGVyZmFjZSogY29u
c3QgbV9wb2xpY3lJbnRlcmZhY2U7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBoYW5kbGVLZXlQcmVz
c0V2ZW50KFFLZXlFdmVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L3FkZXNrdG9wd2VicGFnZXByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9xZGVza3RvcHdlYnBhZ2Vwcm94eS5jcHAKaW5kZXggN2FlODdiMTY1ZTAxNTYzNDJjNzM3ZGUz
NWZlNjQ5ZmE3M2ExNjYxMy4uNWZjZmVkZDNkMzU4NGYxOTBkNjhjMjU1MmNlMzE4NTE2OWRhMmQ5
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3FkZXNrdG9wd2VicGFn
ZXByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcWRlc2t0b3B3ZWJw
YWdlcHJveHkuY3BwCkBAIC00Nyw4ICs0Nyw4IEBAIHN0YXRpYyBpbmxpbmUgUXQ6OkRyb3BBY3Rp
b24gZHJhZ09wZXJhdGlvblRvRHJvcEFjdGlvbih1bnNpZ25lZCBkcmFnT3BlcmF0aW9uKQogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKLVFEZXNrdG9wV2ViUGFnZVByb3h5OjpRRGVza3RvcFdlYlBh
Z2VQcm94eShRRGVza3RvcFdlYlZpZXdQcml2YXRlKiB2aWV3SW50ZXJmYWNlLCBRV0tDb250ZXh0
KiBjb250ZXh0LCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXApCi0gICAgOiBRdFdlYlBhZ2VQcm94
eSh2aWV3SW50ZXJmYWNlLCBjb250ZXh0LCBwYWdlR3JvdXApCitRRGVza3RvcFdlYlBhZ2VQcm94
eTo6UURlc2t0b3BXZWJQYWdlUHJveHkoUURlc2t0b3BXZWJWaWV3UHJpdmF0ZSogZGVza3RvcFdl
YlZpZXcsIFFXS0NvbnRleHQqIGNvbnRleHQsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCkKKyAg
ICA6IFF0V2ViUGFnZVByb3h5KGRlc2t0b3BXZWJWaWV3LCBkZXNrdG9wV2ViVmlldywgY29udGV4
dCwgcGFnZUdyb3VwKQogewogICAgIGluaXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9xdG91Y2h3ZWJwYWdlcHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L3F0b3VjaHdlYnBhZ2Vwcm94eS5jcHAKaW5kZXggOTgyY2I0MGZjOWQ3YWNj
ZTBhZDNkZmQ5YmVmY2YzMDY3MTkwNWNmYS4uYTg4ZjgzMzZiNTgxOTE4NWUxYmJkNTViNWE1NGQ0
ZTA1NTg3N2JjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F0b3Vj
aHdlYnBhZ2Vwcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F0b3Vj
aHdlYnBhZ2Vwcm94eS5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBRVG91Y2hXZWJQYWdlUHJveHk6OlFUb3VjaFdlYlBhZ2VQcm94eShUb3VjaFZpZXdJ
bnRlcmZhY2UqIHZpZXdJbnRlcmZhY2UsIFFXS0NvbnRleHQqIGNvbnRleHQsIFdLUGFnZUdyb3Vw
UmVmIHBhZ2VHcm91cFJlZikKLSAgICA6IFF0V2ViUGFnZVByb3h5KHZpZXdJbnRlcmZhY2UsIGNv
bnRleHQsIHBhZ2VHcm91cFJlZikKKyAgICA6IFF0V2ViUGFnZVByb3h5KHZpZXdJbnRlcmZhY2Us
IDAsIGNvbnRleHQsIHBhZ2VHcm91cFJlZikKICAgICAsIG1fcGFuR2VzdHVyZVJlY29nbml6ZXIo
dmlld0ludGVyZmFjZSkKICAgICAsIG1fcGluY2hHZXN0dXJlUmVjb2duaXplcih2aWV3SW50ZXJm
YWNlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcm8gYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyLnBybwppbmRleCA0NGViYjY5Y2RjMmRkZDI1YWExMjU4M2FiZGI5NWRm
MTEzOGM2Mjc0Li41N2NlNDBjMzhiNDQyNTFjMTFhZTVlN2JhNzMxY2Q3MjAwODEwOGI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBybworKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnBybwpAQCAtMjM3LDYgKzIzNyw3IEBAIEhFQURFUlMgKz0gXAogICAgIFVJUHJvY2Vz
cy9XZWJVSUNsaWVudC5oIFwKICAgICBVSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5oIFwKICAgICBV
SVByb2Nlc3MvcXQvVG91Y2hWaWV3SW50ZXJmYWNlLmggXAorICAgIFVJUHJvY2Vzcy9xdC9Qb2xp
Y3lJbnRlcmZhY2UuaCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0R2VzdHVyZVJlY29nbml6ZXIuaCBc
CiAgICAgVUlQcm9jZXNzL3F0L1F0UGFuR2VzdHVyZVJlY29nbml6ZXIuaCBcCiAgICAgVUlQcm9j
ZXNzL3F0L1F0UGluY2hHZXN0dXJlUmVjb2duaXplci5oIFwK
</data>
<flag name="review"
          id="100223"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>