<?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>68962</bug_id>
          
          <creation_ts>2011-09-27 17:23:20 -0700</creation_ts>
          <short_desc>[Qt][WK2] Download support and API in UIProcess</short_desc>
          <delta_ts>2011-11-04 11:42:41 -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>
          <dependson>68696</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jesus Sanchez-Palencia">jesus</reporter>
          <assigned_to name="Jesus Sanchez-Palencia">jesus</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>hausmann</cc>
    
    <cc>jturcotte</cc>
    
    <cc>kling</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>s.mathur</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>474389</commentid>
    <comment_count>0</comment_count>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2011-09-27 17:23:20 -0700</bug_when>
    <thetext>We need to add the needed implementation to UIProcess in order to fully support Download in Qt WebKit2. We also need to expose this somehow through APIs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474417</commentid>
    <comment_count>1</comment_count>
      <attachid>108944</attachid>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2011-09-27 18:14:31 -0700</bug_when>
    <thetext>Created attachment 108944
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474975</commentid>
    <comment_count>2</comment_count>
      <attachid>109065</attachid>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2011-09-28 13:37:56 -0700</bug_when>
    <thetext>Created attachment 109065
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475307</commentid>
    <comment_count>3</comment_count>
      <attachid>109065</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-09-29 01:10:37 -0700</bug_when>
    <thetext>Comment on attachment 109065
Patch

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

&gt; Source/WebKit2/UIProcess/API/qt/qdesktopwebview.cpp:445
&gt; +QString QDesktopWebViewPrivate::chooseDestinationFile(const QString&amp; suggestedFileName)

This need to be exposed in the API, in an asynchronous manner since user interaction might be needed.
I think we should try to get the API as complete as possible on the first iteration, since adding a missing piece later might require a total redesign if it doesn&apos;t fit in the chosen model.

&gt; Source/WebKit2/UIProcess/qt/QtWebPageProxy.cpp:740
&gt; +    downloadItem-&gt;deleteLater();

The user code might still have a reference to this object. API objects should not be destroyed except through an explicit destroy, a cleanup method call, or the destruction of it&apos;s owner/parent. A bit like QNetworkReply.

On the other end, we also don&apos;t want to leak those objects until the page is destroyed if the user code doesn&apos;t handle downloads, so we might have to find a compromise.

&gt; Source/WebKit2/UIProcess/qt/QtWebPageProxy.cpp:748
&gt; +    downloadItem-&gt;deleteLater();

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475396</commentid>
    <comment_count>4</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-09-29 06:28:42 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 109065 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=109065&amp;action=review
&gt; &gt; Source/WebKit2/UIProcess/qt/QtWebPageProxy.cpp:740
&gt; &gt; +    downloadItem-&gt;deleteLater();
&gt; 
&gt; The user code might still have a reference to this object. API objects should not be destroyed except through an explicit destroy, a cleanup method call, or the destruction of it&apos;s owner/parent. A bit like QNetworkReply.
&gt; 
&gt; On the other end, we also don&apos;t want to leak those objects until the page is destroyed if the user code doesn&apos;t handle downloads, so we might have to find a compromise.

Perhaps it could work like QWebPage::unsupportedContent(), i.e if you do the equivalent of QWebPage::setForwardUnsupportedContent(true), you get the signal, and your slot takes ownership of the item.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475633</commentid>
    <comment_count>5</comment_count>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2011-09-29 13:12:36 -0700</bug_when>
    <thetext>Thanks for the feedback!

(In reply to comment #3)
&gt; &gt; Source/WebKit2/UIProcess/API/qt/qdesktopwebview.cpp:445
&gt; &gt; +QString QDesktopWebViewPrivate::chooseDestinationFile(const QString&amp; suggestedFileName)
&gt; 
&gt; This need to be exposed in the API, in an asynchronous manner since user interaction might be needed.
&gt; I think we should try to get the API as complete as possible on the first iteration, since adding a missing piece later might require a total redesign if it doesn&apos;t fit in the chosen model.

This will require new API to be added to Download.h, DownloadProxy.h and DownloadProxy.messages as well, since currently there is no async way to decide the destination path. Should I fix this on a separate patch?

After having this async API, what about having something like a virtual QDesktopWebView::chooseDestinationPath(const QString&amp; suggestedFilename) and a slot QDesktopWebView::destinationChosen(const QString&amp; chosenPath) .

The default implementation would just call a private function that creates a QFileDialog and connects its finished() signal to QDesktopWebView::destinationChosen. If this is not the desired behavior, then the user can override QDesktopWebView::chooseDestinationPath doing whatever he wants to and then calling or connecting something to QDesktopWebView::destinationChosen.

This slot would call a private function that would call QtWebPageProxy::didDecidedDestination, that will also be added, responsible for using DownloadProxy to send a message back to the WebProcess with the chosen file path.

Does it sound reasonable?


(In reply to comment #4)
&gt; Perhaps it could work like QWebPage::unsupportedContent(), i.e if you do the equivalent of QWebPage::setForwardUnsupportedContent(true), you get the signal, and your slot takes ownership of the item.

So then we could have something like QDesktopWebView::setHandleDownloadItem(bool), set as false by default, and a signal QDesktopWebView::handleDownloadItem(QWebDownloadItem*). QtWebPageProxy would then check if it should emit this signal or if it should deleteLater the download item.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475716</commentid>
    <comment_count>6</comment_count>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2011-09-29 15:18:33 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; Perhaps it could work like QWebPage::unsupportedContent(), i.e if you do the equivalent of QWebPage::setForwardUnsupportedContent(true), you get the signal, and your slot takes ownership of the item.
&gt; 
&gt; So then we could have something like QDesktopWebView::setHandleDownloadItem(bool), set as false by default, and a signal QDesktopWebView::handleDownloadItem(QWebDownloadItem*). QtWebPageProxy would then check if it should emit this signal or if it should deleteLater the download item.


Me, Caio (cmarcelo) and Kling just had a fruitful discussion on irc and we realized that an option here would be just giving the ownership of a QWebDownloadItem to the WebViews. This would be done, i.e., in QDesktopWebViewPrivate::downloadStarted (by downloadItem-&gt;setParent(q)). The deleteLaters would be removed from QtWebPageProxy and I could modify finished() and failed() to finished(QWebDownloadItem*) and failed(QWebDownloadItem*) so the API user could be able to deleteLater a QWebDownloadItem if he wanted to.

What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475721</commentid>
    <comment_count>7</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-09-29 15:29:53 -0700</bug_when>
    <thetext>Just adding my 2 cents here.

One idea that popped up was to expose this API in QML this way:

WebView {
    // ### We can also use an explicit &quot;downloadDelegate:&quot; property here too instead.
    DownloadDelegate {
        onDownloadStarted: { console.log(download.someInformation); }
        onDownloadProgressChanged: {
            console.log(download.someInformation + &quot; &quot; + progress;
            if (download.anotherInformation === &quot;bla&quot;)
                download.cancel();
        }
        onDownloadFinished { download.destroy(); }
    }
}

The idea here is to avoid us making explicity connections in the javascript side as well as not exposing those as signals of WebView to not bloat it (and also to avoid double work because Touch/Desktop). QWebDownloadItem* is passed as &apos;download&apos; parameter in those signals.

As a bonus, if there&apos;s no DownloadDelegate, we can have a default behavior in Qt if we want. Either JustWorksTM or ignoring all downloads.

Ownership rules would follow the same approach of QNAM/QNetworkReply Jesus described.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475752</commentid>
    <comment_count>8</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-09-29 16:40:40 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt;     DownloadDelegate {
&gt;         onDownloadStarted: { console.log(download.someInformation); }
&gt;         onDownloadProgressChanged: {

Well, this convenience might not be that useful. After talking here with Adriano and Jesus, for progress changed we most of the time want to use property bindings to update things. In many cases we&apos;ll push this download object to the hands of some sort of model.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475978</commentid>
    <comment_count>9</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-09-30 01:37:48 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; This will require new API to be added to Download.h, DownloadProxy.h and DownloadProxy.messages as well, since currently there is no async way to decide the destination path. Should I fix this on a separate patch?

As far as I know, Apple needed a sync message since their network stack required it, but ours doesn&apos;t, and if we can avoid a sync message we should. This can be done in the same patch I think.

&gt; After having this async API, what about having something like a virtual QDesktopWebView::chooseDestinationPath(const QString&amp; suggestedFilename) and a slot QDesktopWebView::destinationChosen(const QString&amp; chosenPath) .
&gt; 
&gt; The default implementation would just call a private function that creates a QFileDialog and connects its finished() signal to QDesktopWebView::destinationChosen. If this is not the desired behavior, then the user can override QDesktopWebView::chooseDestinationPath doing whatever he wants to and then calling or connecting something to QDesktopWebView::destinationChosen.
&gt; 
&gt; This slot would call a private function that would call QtWebPageProxy::didDecidedDestination, that will also be added, responsible for using DownloadProxy to send a message back to the WebProcess with the chosen file path.
&gt; 
&gt; Does it sound reasonable?

It would be nice if common web use cases of the views could be implemented in pure QML/JavaScript, no C++. Also we are trying to remove our dependencies to QtGui to depend only on QtBase, so QFileDialog should be avoided.

We don&apos;t have to expose all the web process calls in the API, so we could actually simplify the workflow like this:
- The user clicks on a link, the HTTP response header are received, WebCore determines that it can&apos;t support the mime type, the download policy is chosen.
- The web process creates a Download using the response, QtFileDownloader determines the suggested filename right away.
- QDesktopWebView::downloadRequested(QWebDownloadItem) is emitted, QWebDownloadItem contains the guessed file name in suggestedFileName() or destinationPath().
- If the user code wants to start the download, it calls setDestinationPath() and the start() slot. Else it call ignore()/cancel().

This is just an idea, but what I mean is that there is no benefit of having API callbacks for both started and decideDestination.
It would be nice to allow as many actions as possible to be performed on QWebDownloadItem instead of the web view.

&gt; So then we could have something like QDesktopWebView::setHandleDownloadItem(bool), set as false by default, and a signal QDesktopWebView::handleDownloadItem(QWebDownloadItem*). QtWebPageProxy would then check if it should emit this signal or if it should deleteLater the download item.

If we want to disable downloads unless setHandleDownloadItem is true, then I think we could avoid the Download being created completely by avoiding calling WKFramePolicyListenerDownload in qt_wk_decidePolicyForNavigationAction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478342</commentid>
    <comment_count>10</comment_count>
      <attachid>109789</attachid>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2011-10-05 07:34:51 -0700</bug_when>
    <thetext>Created attachment 109789
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483208</commentid>
    <comment_count>11</comment_count>
      <attachid>109789</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-10-13 08:41:54 -0700</bug_when>
    <thetext>Comment on attachment 109789
Patch

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

&gt; Source/WebKit2/UIProcess/API/C/WKContext.h:104
&gt; +    WKContextDownloadDecideDestinationWithSuggestedFilenameAsyncCallback decideDestinationWithSuggestedFilenameAsync;

Humm... I didn&apos;t realize that this would lead to have to add this function to the C API.
We can&apos;t really have this there along with the sync API, and there is not really a mechanism in place to allow us to get this message without going through the C API.
Luckily though, since what we need is only the suggested filename, the ResourceResponse has a suggestedFileName field that we can use in the didReceiveResponse message.

So I would suggest to not use the &quot;decideDestination&quot; message(s) at all, pass the suggested filename in the didReceiveResponse message, and rename the DidDecideDownloadDestinationAsync message back to the WebProcess you added to something like &quot;StartTransfer(uint64_t downloadID, WTF::String destinationFileName)&quot;.
The downloadRequested signal would be emitted following didReceiveResponse instead of decideDestinationWithSuggestedFilename, and QtFileDownloader::decidedDestination could be merged with QtFileDownloader::start.

Does that sound right?

&gt; Source/WebKit2/UIProcess/API/qt/qwebdownloaditem.h:66
&gt; +    void setDestinationPath(const QString&amp; destination);

You shouldn&apos;t need this as a slot since you already have it as a property writer.

&gt; Source/WebKit2/UIProcess/qt/QtWebPageProxy.cpp:738
&gt; +    QWebDownloadItem* downloadItem = m_downloads.take(download-&gt;downloadID());

We still need a default behavior that doesn&apos;t leak the items if the user code doesn&apos;t handle them.
I think it would be better to add something directly in QDesktopWebView to set downloads enabled now, but disabled by default.
We can move it to a future QWebSettings equivalent when we have it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483217</commentid>
    <comment_count>12</comment_count>
      <attachid>109789</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-10-13 08:56:43 -0700</bug_when>
    <thetext>Comment on attachment 109789
Patch

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

&gt; Source/WebKit2/Shared/qt/WebCoreArgumentCodersQt.cpp:63
&gt; +    encoder-&gt;encode(resourceResponse.url().string());
&gt; +    encoder-&gt;encode(resourceResponse.mimeType());
&gt; +    encoder-&gt;encode(static_cast&lt;int64_t&gt;(resourceResponse.expectedContentLength()));
&gt; +    encoder-&gt;encode(resourceResponse.textEncodingName());

Isn&apos;t it possible to bulk decode these? We are doing that for EditorState I believe

&gt; Source/WebKit2/UIProcess/API/qt/qwebdownloaditem.cpp:93
&gt; +    bool allowOverwrite = true; // Currently, we don&apos;t use this.

Override ? Sorry im not sure about the actual english difference between override and overwrite. Would be good to check :-)

&gt; Source/WebKit2/UIProcess/API/qt/qwebdownloaditem.h:50
&gt; +        FileAlreadyExists,

DestinationAlreadyExists? It could be a dir right?

&gt; Source/WebKit2/UIProcess/API/qt/qwebdownloaditem.h:51
&gt; +        CancelledByCaller,

Could it be cancelled by others?

&gt; Source/WebKit2/UIProcess/Downloads/DownloadProxy.cpp:190
&gt; +void DownloadProxy::decideDestinationWithSuggestedFilenameAsync(const String&amp; filename)

Is it common to append Async in webkit2? I don&apos;t believe so, but things can have diverted after our branch

&gt; Source/WebKit2/UIProcess/qt/QtWebPageProxy.cpp:163
&gt; +    memset(&amp;downloadClient, 0, sizeof(WKContextDownloadClient));

Are we not setting everything?

&gt; Source/WebKit2/UIProcess/qt/QtWebPageProxy.cpp:718
&gt; +    QWebDownloadItem* downloadItem = new QWebDownloadItem(0);

The 0 is confusing... what does it mean? Could it be a default value?

&gt; Source/WebKit2/WebProcess/Downloads/DownloadManager.h:61
&gt; +    void didDecideDownloadDestinationAsync(uint64_t downloadID, const WTF::String&amp; destination, bool allowOverwrite);

Maybe &quot;replaceIfExists&quot; is better than allowOverwrite.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483220</commentid>
    <comment_count>13</comment_count>
      <attachid>109789</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-10-13 09:00:50 -0700</bug_when>
    <thetext>Comment on attachment 109789
Patch

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

Other details that could be worth looking at:

&gt; Source/WebKit2/UIProcess/API/qt/qwebdownloaditem.h:41
&gt; +    Q_PROPERTY(quint64 contentLength READ expectedContentLength CONSTANT FINAL)
&gt; +    Q_PROPERTY(QString destination READ destinationPath WRITE setDestinationPath)
&gt; +    Q_PROPERTY(QString suggestedFilename READ suggestedFilename CONSTANT FINAL)
&gt; +    Q_PROPERTY(quint64 totalBytesReceived READ totalBytesReceived NOTIFY dataReceived FINAL)
&gt; +    Q_PROPERTY(QUrl url READ sourceUrl CONSTANT FINAL)

Also, please name the properties the same as their accessors.

&gt; Source/WebKit2/UIProcess/API/qt/qwebdownloaditem.h:65
&gt; +    void cancel();

This should lead to a CancelledByCaller error, and I might be missing something but I think that in the current implementation you will get a NetworkFailure error instead.

&gt; Source/WebKit2/UIProcess/API/qt/qwebdownloaditem.h:71
&gt; +    void finished();

This could be named &quot;succeeded&quot; to make it consistent with the web view signals and clear that this won&apos;t be emitted when the download fails.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485698</commentid>
    <comment_count>14</comment_count>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2011-10-17 18:09:41 -0700</bug_when>
    <thetext>Thanks for the reviews, guys!
I will reply to a few comments before uploading the new patch. Everything else was, somehow, addressed on it.

(In reply to comment #11)
&gt; The downloadRequested signal would be emitted following didReceiveResponse instead of decideDestinationWithSuggestedFilename, and QtFileDownloader::decidedDestination could be merged with QtFileDownloader::start.
&gt; 
&gt; Does that sound right?

Yes, everything else but merging QtFileDownloader::start with QtFileDownloader::decidedDestination. In fact, QtFileDownloader::start could be called init() since all we need is to connect the signals outside its ctor and decidedDestination() can become something like startTransfer().

&gt; We still need a default behavior that doesn&apos;t leak the items if the user code doesn&apos;t handle them.
&gt; I think it would be better to add something directly in QDesktopWebView to set downloads enabled now, but disabled by default.
&gt; We can move it to a future QWebSettings equivalent when we have it.

On the current patch every time a download is requested, a QWebDownloadItem is created and has its ownership given to the WebView (we call downloadItem-&gt;setParent(q) on QDesktopWebViewPrivate::downloadRequested).


(In reply to comment #12)
&gt; &gt; Source/WebKit2/UIProcess/API/qt/qwebdownloaditem.cpp:93
&gt; &gt; +    bool allowOverwrite = true; // Currently, we don&apos;t use this.
&gt; 
&gt; Override ? Sorry im not sure about the actual english difference between override and overwrite. Would be good to check :-)

It is like this because it came from Apple&apos;s implementation of Download.h, so I guess the english is fine. On any case, this will be removed on the upcoming patch... :)

&gt; &gt; Source/WebKit2/UIProcess/qt/QtWebPageProxy.cpp:718
&gt; &gt; +    QWebDownloadItem* downloadItem = new QWebDownloadItem(0);
&gt; 
&gt; The 0 is confusing... what does it mean? Could it be a default value?

It means a null parent for now, since the parent will only be set by viewInterface-&gt;downloadRequested(). I will remove it on the next patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485736</commentid>
    <comment_count>15</comment_count>
      <attachid>111369</attachid>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2011-10-17 18:59:36 -0700</bug_when>
    <thetext>Created attachment 111369
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485890</commentid>
    <comment_count>16</comment_count>
      <attachid>111369</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-10-18 00:53:42 -0700</bug_when>
    <thetext>Comment on attachment 111369
Patch

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

&gt; Source/WebKit2/ChangeLog:10
&gt; +        We also add APIs by exposing QWebDownloadItem. Objects from this type
&gt; +        have their ownership handled by QDesktopWebView and will be created or

I&apos;m wondering about this ownership model. Imagine a web browser with tabs, where each tab is one DesktopWebView and you&apos;re downloading a file.
Wouldn&apos;t you imagine the download to continue after closing the tab that started the download?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486474</commentid>
    <comment_count>17</comment_count>
      <attachid>111369</attachid>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2011-10-18 17:44:11 -0700</bug_when>
    <thetext>Comment on attachment 111369
Patch

I&apos;ve found an issue with the current design when dealing with multiple WebViews so I&apos;m clearing the review flag while the new patch is being cooked.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487225</commentid>
    <comment_count>18</comment_count>
      <attachid>111709</attachid>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2011-10-19 19:09:28 -0700</bug_when>
    <thetext>Created attachment 111709
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487231</commentid>
    <comment_count>19</comment_count>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2011-10-19 19:16:32 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; Created an attachment (id=111709) [details]
&gt; Patch

The previous API design was kept but the internals have changed. It was needed to keep downloads related to the WebContext instead of QtWebPageProxy, but still keeping it related to the originating page. This solves the multiple pages/webviews use case and keep the download items alive while the WebContext is alive. Now, for instance, a browser can start downloads in several tabs/webviews, close the originating ones and keep the ongoing downloads and keep track of their progress. This wasn&apos;t possible with the previous approach.

The ownership issue was solved by giving the download items to the javascript engine as soon as the webview receives downloadRequested through its ViewInterface.

I will work on an API test (qmltest) but having a feedback on this patch would be great!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487424</commentid>
    <comment_count>20</comment_count>
      <attachid>111709</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-10-20 02:09:43 -0700</bug_when>
    <thetext>Comment on attachment 111709
Patch

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

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:972
&gt; +    DownloadProxy* download;
&gt;      uint64_t downloadID = 0;
&gt;      if (action == PolicyDownload) {
&gt;          // Create a download proxy.
&gt; -        downloadID = m_process-&gt;context()-&gt;createDownloadProxy()-&gt;downloadID();
&gt; +        download = m_process-&gt;context()-&gt;createDownloadProxy();
&gt; +        downloadID = download-&gt;downloadID();
&gt; +#if PLATFORM(QT)
&gt; +        download-&gt;setInitiatingPage(this);
&gt; +#endif

Why is the download variable declared outside of the if {} scope? Wouldn&apos;t it be easier to replace

    downloadID = ...

with

    DownloadProxy* download = ...
    downloadID = download-&gt;downloadID();

?

&gt; Source/WebKit2/UIProcess/qt/QtDownloadManager.cpp:75
&gt; +    download-&gt;initiatingPage()-&gt;pageClient()-&gt;qtWebPageProxy()-&gt;downloadRequested(downloadItem);

This is the only part that bugs me, because it required adding all those accessors to seemingly unrelated code.

I see however that it&apos;s the entry-point in the API, so either we stick to it or we find a different way of signalling the downloads to the application.

&gt; Source/WebKit2/WebProcess/WebProcess.messages.in:67
&gt; +#if PLATFORM(QT)

Oh, you changed your mind in favour of an #ifdef instead of a comment? :) (no problem with that though, I see that the #ifdef makes the patch minimal)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487575</commentid>
    <comment_count>21</comment_count>
      <attachid>111775</attachid>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2011-10-20 08:13:55 -0700</bug_when>
    <thetext>Created attachment 111775
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487589</commentid>
    <comment_count>22</comment_count>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2011-10-20 08:26:36 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; Created an attachment (id=111775) [details]
&gt; Patch

Patch addressing the previous comments.


(In reply to comment #20)
&gt; Why is the download variable declared outside of the if {} scope? Wouldn&apos;t it be easier to replace
&gt; 

Sure! Fixed.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/qt/QtDownloadManager.cpp:75
&gt; &gt; +    download-&gt;initiatingPage()-&gt;pageClient()-&gt;qtWebPageProxy()-&gt;downloadRequested(downloadItem);
&gt; 
&gt; This is the only part that bugs me, because it required adding all those accessors to seemingly unrelated code.

Yeah, me too... On this new patch I have removed the need of DownloadProxy to know the WebPage and, therefore, QtDownloadManager does not deal with it anymore. Instead, the PageClient (QtWebPageProxy) is used to bootstrap a download item and keep it with the download manager but then it&apos;s only when we receive the downloadResponse that we will actually fill the item with the needed information and emit WebView::downloadRequested, as before. IMHO, this seems to be a cleaner approach, keeping the internal design aligned and the previous proposed API.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebProcess.messages.in:67
&gt; &gt; +#if PLATFORM(QT)
&gt; 
&gt; Oh, you changed your mind in favour of an #ifdef instead of a comment? :) (no problem with that though, I see that the #ifdef makes the patch minimal)

Yes =/. I decided to go for the ifdefs after I realized the amount of Qt-specific code I was adding anyway. I recognize it as a failure of my personal quest. =)


Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494722</commentid>
    <comment_count>23</comment_count>
      <attachid>113331</attachid>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2011-11-02 10:44:12 -0700</bug_when>
    <thetext>Created attachment 113331
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494805</commentid>
    <comment_count>24</comment_count>
      <attachid>113350</attachid>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2011-11-02 12:24:53 -0700</bug_when>
    <thetext>Created attachment 113350
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494811</commentid>
    <comment_count>25</comment_count>
      <attachid>113352</attachid>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2011-11-02 12:30:24 -0700</bug_when>
    <thetext>Created attachment 113352
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494814</commentid>
    <comment_count>26</comment_count>
      <attachid>113352</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-11-02 12:35:32 -0700</bug_when>
    <thetext>Comment on attachment 113352
Patch

r=me

Todo for the future: Move this into the &quot;experimental&quot; section of the new WebView API - as discussed face-to-face.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494817</commentid>
    <comment_count>27</comment_count>
      <attachid>113352</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-02 12:39:15 -0700</bug_when>
    <thetext>Comment on attachment 113352
Patch

Rejecting attachment 113352 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
urce/WebKit2/WebProcess/Downloads/qt/DownloadQt.cpp
patching file Source/WebKit2/WebProcess/Downloads/qt/QtFileDownloader.cpp
patching file Source/WebKit2/WebProcess/Downloads/qt/QtFileDownloader.h
patching file Source/WebKit2/WebProcess/WebProcess.cpp
patching file Source/WebKit2/WebProcess/WebProcess.h
patching file Source/WebKit2/WebProcess/WebProcess.messages.in

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;Simon Hausmann&apos;, u&apos;--f...&quot; exit_code: 1

Full output: http://queues.webkit.org/results/10190369</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495344</commentid>
    <comment_count>28</comment_count>
      <attachid>113460</attachid>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2011-11-03 04:35:43 -0700</bug_when>
    <thetext>Created attachment 113460
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495345</commentid>
    <comment_count>29</comment_count>
      <attachid>113460</attachid>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2011-11-03 04:36:58 -0700</bug_when>
    <thetext>Comment on attachment 113460
Patch for landing

webkit-patch land-safely fooled me and didn&apos;t update the reviewer name =/. Uploading a new one soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495348</commentid>
    <comment_count>30</comment_count>
      <attachid>113462</attachid>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2011-11-03 04:38:31 -0700</bug_when>
    <thetext>Created attachment 113462
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495349</commentid>
    <comment_count>31</comment_count>
      <attachid>113462</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-03 04:41:22 -0700</bug_when>
    <thetext>Comment on attachment 113462
Patch for landing

Rejecting attachment 113462 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1

NOBODY (OOPS!) found in /mnt/git/webkit-commit-queue/Source/WebKit/qt/ChangeLog does not appear to be a valid reviewer according to committers.py.
ERROR: /mnt/git/webkit-commit-queue/Source/WebKit/qt/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://queues.webkit.org/results/10257549</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495364</commentid>
    <comment_count>32</comment_count>
      <attachid>113463</attachid>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2011-11-03 05:08:34 -0700</bug_when>
    <thetext>Created attachment 113463
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495368</commentid>
    <comment_count>33</comment_count>
      <attachid>113464</attachid>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2011-11-03 05:15:26 -0700</bug_when>
    <thetext>Created attachment 113464
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495395</commentid>
    <comment_count>34</comment_count>
      <attachid>113464</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-03 06:05:46 -0700</bug_when>
    <thetext>Comment on attachment 113464
Patch for landing

Clearing flags on attachment: 113464

Committed r99178: &lt;http://trac.webkit.org/changeset/99178&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495396</commentid>
    <comment_count>35</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-03 06:05:53 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108944</attachid>
            <date>2011-09-27 18:14:31 -0700</date>
            <delta_ts>2011-09-28 13:37:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68962-20110927221417.patch</filename>
            <type>text/plain</type>
            <size>33220</size>
            <attacher name="Jesus Sanchez-Palencia">jesus</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTYxNzQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBlYTg1OWZlYjA4YzBkMDdl
YjhjZGEyOGEyZWRhOWI1NmY1NzE0ZWU2Li5iYjg4MWJhMmZlNTZkZThkZjM4OTNkODVkZGUzYTA4
YzkxNDU4MDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTMgQEAKKzIwMTEtMDktMjcgIEplc3Vz
IFNhbmNoZXotUGFsZW5jaWEgIDxqZXN1cy5wYWxlbmNpYUBvcGVuYm9zc2Eub3JnPgorCisgICAg
ICAgIFtRdF1bV0syXSBEb3dubG9hZCBzdXBwb3J0IGFuZCBBUEkgaW4gVUlQcm9jZXNzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODk2MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGltcGxlbWVudCBv
dXIgV2tDb250ZXh0RG93bmxvYWRDbGllbnQgYW5kIHRoZSBuZWVkZWQgY2FsbGJhY2tzLgorICAg
ICAgICBXZSBhbHNvIGFkZGVkIEFQSXMgYnkgZXhwb3NpbmcgUVdlYkRvd25sb2FkSXRlbS4gT2Jq
ZWN0cyBmcm9tIHRoaXMgdHlwZQorICAgICAgICBoYXZlIHRoZWlyIG93bmVyc2hpcCBoYW5kbGVk
IGJ5IFF0V2ViUGFnZVByb3h5IGFuZCB3aWxsIGJlIGNyZWF0ZWQgb3IKKyAgICAgICAgZGVzdHJv
eWVkIGFzIG5lZWRlZC4gQ2xhc3NlcyBpbXBsZW1lbnRpbmcgVmlld0ludGVyZmFjZSAoUURlc2t0
b3BXZWJWaWV3UHJpdmF0ZQorICAgICAgICBhbmQgVG91Y2hWaWV3SW50ZXJmYWNlKSB3aWxsIHJl
Y2VpdmUgYSBzaWduYWwgKGRvd25sb2FkU3RhcnRlZCkgd2l0aCBhIHBvaW50ZXIKKyAgICAgICAg
dG8gdGhlIHJlY2VudGx5IGNyZWF0ZWQgUVdlYkRvd25sb2FkSXRlbSBqdXN0IHNvIHRoZXkgY2Fu
IGNvbm5lY3QgdGhlIHByb3BlcgorICAgICAgICBzaWduYWxzIGFuZCBzbG90cy4gQnkgZG9pbmcg
dGhhdCB0aGV5IGNhbiBoYXZlIHRoZSBwcm9ncmVzcyBvZiBhIGRvd25sb2FkLAorICAgICAgICBj
YW5jZWwgaXQsIGtub3cgd2hlbiBpdCBpcyBmaW5pc2hlZCBvciBpZiBpdCBmYWlscy4gUVdlYkRv
d25sb2FkSXRlbSB3YXMgYWxzbyBleHBvc2VkIGluIFFNTC4KKyAgICAgICAgUVdlYkVycm9yIHdp
bGwgaGFuZGxlIGRvd25sb2FkIGVycm9ycyBhbmQgZ2FpbmVkIG5ldyBuZWVkZWQgQVBJcy4KKwor
ICAgICAgICAqIFNoYXJlZC9xdC9XZWJDb3JlQXJndW1lbnRDb2RlcnNRdC5jcHA6CisgICAgICAg
IChDb3JlSVBDOjo6OmVuY29kZSk6CisgICAgICAgIChDb3JlSVBDOjo6OmRlY29kZSk6CisgICAg
ICAgIEltcGxlbWVudCBzZXJpYWxpemF0aW9uIG9mIFJlc291cmNlUmVzcG9uc2UuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL3F0L1dLVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
cXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6
OmNob29zZURlc3RpbmF0aW9uRmlsZSk6CisgICAgICAgIChRRGVza3RvcFdlYlZpZXdQcml2YXRl
Ojpkb3dubG9hZFN0YXJ0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3
ZWJ2aWV3Lmg6IEFkZCBzaWduYWwgZG93bmxvYWRTdGFydGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3X3AuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0
L3FtbHBsdWdpbi9wbHVnaW4uY3BwOgorICAgICAgICAoV2ViS2l0MlFtbFBsdWdpbjo6cmVnaXN0
ZXJUeXBlcyk6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F3ZWJkb3dubG9hZGl0ZW0u
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFFXZWJEb3dubG9hZEl0ZW1Qcml2YXRlOjpRV2ViRG93bmxv
YWRJdGVtUHJpdmF0ZSk6CisgICAgICAgIChRV2ViRG93bmxvYWRJdGVtOjpRV2ViRG93bmxvYWRJ
dGVtKToKKyAgICAgICAgKFFXZWJEb3dubG9hZEl0ZW06On5RV2ViRG93bmxvYWRJdGVtKToKKyAg
ICAgICAgKFFXZWJEb3dubG9hZEl0ZW06OnNvdXJjZVVybCk6CisgICAgICAgIChRV2ViRG93bmxv
YWRJdGVtOjpkZXN0aW5hdGlvblBhdGgpOgorICAgICAgICAoUVdlYkRvd25sb2FkSXRlbTo6bWlt
ZVR5cGUpOgorICAgICAgICAoUVdlYkRvd25sb2FkSXRlbTo6ZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
KToKKyAgICAgICAgKFFXZWJEb3dubG9hZEl0ZW06OnRvdGFsQnl0ZXNSZWNlaXZlZCk6CisgICAg
ICAgIChRV2ViRG93bmxvYWRJdGVtOjpjYW5jZWwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
cXQvcXdlYmRvd25sb2FkaXRlbS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0
L3F3ZWJkb3dubG9hZGl0ZW1fcC5oOiBBZGRlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
cXQvcXdlYmVycm9yLmNwcDoKKyAgICAgICAgKFFXZWJFcnJvcjo6ZGVzY3JpcHRpb24pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdlYmVycm9yLmg6CisgICAgICAgIEFkZCBEb3dubG9h
ZCBlcnJvciBoYW5kbGluZyB0byBRV2ViRXJyb3IgYW5kIGEgbmV3IEFQSQorICAgICAgICB0byBy
ZXRyaWV2ZSB0aGUgZXJyb3IgZGVzY3JpcHRpb24gZnJvbSB0aGUgb3JpZ2luYWwgUmVzb3VyY2VF
cnJvci4KKyAgICAgICAgQWxzbywgaXQgbm93IGhhcyBRV2ViRG93bmxvYWRJdGVtOjpEb3dubG9h
ZEVycm9yIGVycm9yQ29kZUFzRG93bmxvYWRFcnJvcigpCisgICAgICAgIHRoYXQgcmV0dXJucyB0
aGUgZXJyb3IgY29kZSBhcyBhIERvd25sb2FkRXJyb3IuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
cXQvQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChxdF93a19kaWRSZWNlaXZlUmVzcG9uc2UpOgor
ICAgICAgICAocXRfd2tfZGlkQ3JlYXRlRGVzdGluYXRpb24pOgorICAgICAgICAocXRfd2tfZGlk
RmluaXNoRG93bmxvYWQpOgorICAgICAgICAocXRfd2tfZGlkRmFpbERvd25sb2FkKToKKyAgICAg
ICAgKHF0X3drX2RlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKToKKyAgICAg
ICAgKHF0X3drX2RpZFJlY2VpdmVEYXRhRm9yRG93bmxvYWQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9xdC9DbGllbnRJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5
LmNwcDoKKyAgICAgICAgKFF0V2ViUGFnZVByb3h5Ojppbml0KToKKyAgICAgICAgKFF0V2ViUGFn
ZVByb3h5Ojpkb3dubG9hZFJlY2VpdmVkUmVzcG9uc2UpOgorICAgICAgICAoUXRXZWJQYWdlUHJv
eHk6OmRvd25sb2FkQ3JlYXRlZERlc3RpbmF0aW9uKToKKyAgICAgICAgKFF0V2ViUGFnZVByb3h5
Ojpkb3dubG9hZEZpbmlzaGVkKToKKyAgICAgICAgKFF0V2ViUGFnZVByb3h5Ojpkb3dubG9hZEZh
aWxlZCk6CisgICAgICAgIChRdFdlYlBhZ2VQcm94eTo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAoUXRXZWJQYWdlUHJveHk6OmRvd25sb2FkRGF0YVJl
Y2VpdmVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaDoKKyAgICAg
ICAgSW1wbGVtZW50IG91ciBXS0NvbnRleHREb3dubG9hZENsaWVudCBhbmQgaXRzIGNhbGxiYWNr
cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2UuaDoKKyAgICAg
ICAgKFdlYktpdDo6VG91Y2hWaWV3SW50ZXJmYWNlOjpjaG9vc2VEZXN0aW5hdGlvbkZpbGUpOgor
ICAgICAgICAoV2ViS2l0OjpUb3VjaFZpZXdJbnRlcmZhY2U6OmRvd25sb2FkU3RhcnRlZCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL3F0L1ZpZXdJbnRlcmZhY2UuaDoKKyAgICAgICAgQWRkIHRoZSBw
cml2YXRlIEFQSSBjaG9vc2VEZXN0aW5hdGlvbkZpbGUgd2l0aCBhbiBlbXB0eSBpbXBsZW1lbnRh
dGlvbgorICAgICAgICB0byBUb3VjaFZpZXdJbnRlcmZhY2UgYW5kIHRoZSBwdWJsaWMgc2lnbmFs
IGRvd25sb2FkU3RhcnRlZC4KKworICAgICAgICAqIFdlYktpdDJBUEkucHJpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvRG93bmxvYWRzL3F0L0Rvd25sb2FkUXQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpEb3dubG9hZDo6c3RhcnRXaXRoSGFuZGxlKToKKyAgICAgICAgV2Ugd2VyZSBtaXNzaW5nIFF0
RmlsZURvd25sb2FkZXI6OnN0YXJ0KCkgY2FsbCBoZXJlLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9Eb3dubG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlF0
RmlsZURvd25sb2FkZXI6OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6UXRGaWxlRG93bmxvYWRl
cjo6ZGV0ZXJtaW5lRmlsZW5hbWUpOgorICAgICAgICBDYWxsaW5nIG9uUmVhZHlSZWFkKCkgaGVy
ZSB3YXMgdW5uZWNlc3NhcnkgYW5kIGl0IHdhcyB0cmlnZ2VyaW5nIHRoZSBvdmVyYWxsCisgICAg
ICAgIGRvd25sb2FkIHByb2Nlc3MgZXZlbiBiZWZvcmUgRG93bmxvYWRNYW5hZ2VyIGZpbmlzaGVk
IHN0YXJ0RG93bmxvYWQoKS4gVGhpcworICAgICAgICB3YXMgbGVhZGluZyB0byBhIERvd25sb2Fk
TWFuYWdlciB3aXRoIGFuIGVtcHR5IGxpc3Qgb2YgZG93bmxvYWRzIGFsd2F5cy4KKwogMjAxMS0w
OS0yNyAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgogCiAgICAgICAg
IEFkZCBzdGF0aWMgdmVyc2lvbiBvZiBKU0NlbGw6OmdldENhbGxEYXRhCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzUXQuY3BwIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL3F0L1dlYkNvcmVBcmd1bWVudENvZGVyc1F0LmNwcAppbmRleCAy
M2Y5OWU5ZjVhYjRkYTdjMzJlZmIyOTQxYmRiMTYxYmFiNzU5NTY1Li4xZmMxNWM1OTZmNmZjZjdk
OWY4ZDMzZmRlZWIzM2MxZWVlMjg2YTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvcXQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9xdC9XZWJDb3JlQXJndW1lbnRDb2RlcnNRdC5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKIAot
I2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jl
c291cmNlRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgpAQCAtNTgsMTUgKzU3LDM3IEBAIGJv
b2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVy
KiBkZWNvZGVyLCBSZXNvdXJjZVJlCiAKIHZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlc3Bv
bnNlPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzb3VyY2VSZXNwb25zZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGVu
Y29kZXItPmVuY29kZShyZXNvdXJjZVJlc3BvbnNlLnVybCgpLnN0cmluZygpKTsKKyAgICBlbmNv
ZGVyLT5lbmNvZGUocmVzb3VyY2VSZXNwb25zZS5taW1lVHlwZSgpKTsKKyAgICBlbmNvZGVyLT5l
bmNvZGUoc3RhdGljX2Nhc3Q8aW50NjRfdD4ocmVzb3VyY2VSZXNwb25zZS5leHBlY3RlZENvbnRl
bnRMZW5ndGgoKSkpOworICAgIGVuY29kZXItPmVuY29kZShyZXNvdXJjZVJlc3BvbnNlLnRleHRF
bmNvZGluZ05hbWUoKSk7CiB9CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlc3BvbnNl
Pjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmVzb3VyY2VSZXNwb25zZSYgcmVz
b3VyY2VSZXNwb25zZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIFJlc291cmNlUmVz
cG9uc2UgcmVzcG9uc2U7CiAKLSAgICAvLyBGSVhNRTogRGl0dG8uCi0gICAgcmVzb3VyY2VSZXNw
b25zZSA9IFJlc291cmNlUmVzcG9uc2UoKTsKKyAgICBTdHJpbmcgdXJsOworICAgIGlmICghZGVj
b2Rlci0+ZGVjb2RlKHVybCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXNwb25zZS5z
ZXRVUkwoS1VSTChXZWJDb3JlOjpQYXJzZWRVUkxTdHJpbmcsIHVybCkpOworCisgICAgU3RyaW5n
IG1pbWVUeXBlOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKG1pbWVUeXBlKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIHJlc3BvbnNlLnNldE1pbWVUeXBlKG1pbWVUeXBlKTsKKworICAg
IGludDY0X3QgY29udGVudExlbmd0aDsKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShjb250ZW50
TGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJlc3BvbnNlLnNldEV4cGVjdGVk
Q29udGVudExlbmd0aChjb250ZW50TGVuZ3RoKTsKKworICAgIFN0cmluZyB0ZXh0RW5jb2RpbmdO
YW1lOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHRleHRFbmNvZGluZ05hbWUpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgcmVzcG9uc2Uuc2V0VGV4dEVuY29kaW5nTmFtZSh0ZXh0RW5j
b2RpbmdOYW1lKTsKKworICAgIHJlc291cmNlUmVzcG9uc2UgPSByZXNwb25zZTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9XS1ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvV0tWaWV3LmgKaW5k
ZXggODRiYTFmNzQ2YTQzZDkxN2VmYzMwZjI3OGVlMzI2N2QzNWM4NmY4Yy4uYjZlYmZkYmIzNzA0
ZDFjYjU0MTE5MjI5NjUxZGI0MTE2OTg3ZGFkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9XS1ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L1dLVmlldy5oCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSA8V2ViS2l0Mi9xZGVz
a3RvcHdlYnZpZXcuaD4KICNpbmNsdWRlIDxXZWJLaXQyL3F0b3VjaHdlYnZpZXcuaD4KICNpbmNs
dWRlIDxXZWJLaXQyL3F0b3VjaHdlYnBhZ2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL3F3ZWJkb3du
bG9hZGl0ZW0uaD4KICNpbmNsdWRlIDxXZWJLaXQyL3F3ZWJuYXZpZ2F0aW9uY29udHJvbGxlci5o
PgogCiAjZW5kaWYgLyogV0tWaWV3X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcAppbmRleCAzODAyMTRjMWVkNGFkNzc4MDRj
MDRlZjJiNzI5NTZhZWNhZTk2NTc0Li5mYTgyZjMxNGVjMDkzOTM1MzViYjgyYWU2ZmFjYTk1NTUx
N2U5Yzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNr
dG9wd2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVz
a3RvcHdlYnZpZXcuY3BwCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAicWRlc2t0b3B3ZWJ2aWV3LmgiCiAjaW5jbHVkZSAicWRlc2t0b3B3ZWJ2aWV3X3Au
aCIKKyNpbmNsdWRlICJxd2ViZG93bmxvYWRpdGVtLmgiCiAjaW5jbHVkZSAicXdlYmVycm9yLmgi
CiAKICNpbmNsdWRlIDxRR3JhcGhpY3NTY2VuZVJlc2l6ZUV2ZW50PgpAQCAtMzEsNiArMzIsNyBA
QAogI2luY2x1ZGUgPFF0RGVjbGFyYXRpdmUvcXNnaXRlbS5oPgogI2luY2x1ZGUgPFF0RGVjbGFy
YXRpdmUvcXNndmlldy5oPgogI2luY2x1ZGUgPFF0R3VpL1FDdXJzb3I+CisjaW5jbHVkZSA8UXRH
dWkvUURlc2t0b3BTZXJ2aWNlcz4KICNpbmNsdWRlIDxRdEd1aS9RRmlsZURpYWxvZz4KICNpbmNs
dWRlIDxRdEd1aS9RRm9jdXNFdmVudD4KICNpbmNsdWRlIDxRdEd1aS9RR3JhcGhpY3NTY2VuZUV2
ZW50PgpAQCAtNDQwLDYgKzQ0MiwyMiBAQCB2b2lkIFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OmRp
ZE1vdXNlTW92ZU92ZXJFbGVtZW50KGNvbnN0IFFVcmwmIGxpbmtVUkwsIGNvbnN0CiAgICAgZW1p
dCBxLT5saW5rSG92ZXJlZChsYXN0SG92ZXJlZFVSTCwgbGFzdEhvdmVyZWRUaXRsZSk7CiB9CiAK
K1FTdHJpbmcgUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6Y2hvb3NlRGVzdGluYXRpb25GaWxlKGNv
bnN0IFFTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKQoreworICAgIFFTdHJpbmcgZG9jdW1lbnRz
Rm9sZGVyID0gUURlc2t0b3BTZXJ2aWNlczo6ZGlzcGxheU5hbWUoUURlc2t0b3BTZXJ2aWNlczo6
RG9jdW1lbnRzTG9jYXRpb24pOworCisgICAgUVN0cmluZyBkZXN0aW5hdGlvbiA9IFFGaWxlRGlh
bG9nOjpnZXRTYXZlRmlsZU5hbWUocS0+Y2FudmFzKCksIHRyKCJTYXZlIEZpbGUiKSwgZG9jdW1l
bnRzRm9sZGVyLmFwcGVuZChzdWdnZXN0ZWRGaWxlTmFtZSkpOworICAgIHJldHVybiBkZXN0aW5h
dGlvbjsKK30KKwordm9pZCBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpkb3dubG9hZFN0YXJ0ZWQo
UVdlYkRvd25sb2FkSXRlbSogZG93bmxvYWRJdGVtKQoreworICAgIGlmICghZG93bmxvYWRJdGVt
KQorICAgICAgICByZXR1cm47CisKKyAgICBlbWl0IHEtPmRvd25sb2FkU3RhcnRlZChkb3dubG9h
ZEl0ZW0pOworfQorCiBzdGF0aWMgUG9saWN5SW50ZXJmYWNlOjpQb2xpY3lBY3Rpb24gdG9Qb2xp
Y3lBY3Rpb24oUURlc2t0b3BXZWJWaWV3OjpOYXZpZ2F0aW9uUG9saWN5IHBvbGljeSkKIHsKICAg
ICBzd2l0Y2ggKHBvbGljeSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcWRlc2t0b3B3ZWJ2aWV3LmgKaW5kZXggYzFmYjU5ZmFiNTIyYjVjMzg1OWZiYjk0MmMyMWNk
NmU0ODUxZTFjZS4uNjcyNTMxMzdkMTUwOWU0MmRiNGViNzVjNjRmMThlNWM3NWM2NjQ2MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5o
CkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KIAogY2xhc3Mg
UURlc2t0b3BXZWJWaWV3UHJpdmF0ZTsKK2NsYXNzIFFXZWJEb3dubG9hZEl0ZW07CiBjbGFzcyBR
V2ViTmF2aWdhdGlvbkNvbnRyb2xsZXI7CiAKIFFUX0JFR0lOX05BTUVTUEFDRQpAQCAtODksNiAr
OTAsNyBAQCBRX1NJR05BTFM6CiAgICAgdm9pZCBsb2FkUHJvZ3Jlc3NDaGFuZ2VkKGludCBwcm9n
cmVzcyk7CiAgICAgdm9pZCB1cmxDaGFuZ2VkKGNvbnN0IFFVcmwmIHVybCk7CiAgICAgdm9pZCBs
aW5rSG92ZXJlZChjb25zdCBRVXJsJiB1cmwsIGNvbnN0IFFTdHJpbmcmIHRpdGxlKTsKKyAgICB2
b2lkIGRvd25sb2FkU3RhcnRlZChRV2ViRG93bmxvYWRJdGVtKiBkb3dubG9hZEl0ZW0pOwogCiBw
cm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGtleVByZXNzRXZlbnQoUUtleUV2ZW50Kik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmll
d19wLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlld19w
LmgKaW5kZXggMDU0YTlhNjJiMjgwZDI4MzcxYTA2YzU2ZWUxY2M4NjljOWZhN2MwMC4uYWJkMTE4
MmM0Mjc1MzkyODNiMmNhYjdkMzhjNzI4ZWRmMmY2NTY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXdfcC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3X3AuaApAQCAtODMsNiArODMs
OCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgUUpTRW5naW5lKiBlbmdpbmUoKTsKIAogICAgIHZp
cnR1YWwgdm9pZCBjaG9vc2VGaWxlcyhXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmLCBjb25z
dCBRU3RyaW5nTGlzdCYgc2VsZWN0ZWRGaWxlTmFtZXMsIFZpZXdJbnRlcmZhY2U6OkZpbGVDaG9v
c2VyVHlwZSk7CisgICAgdmlydHVhbCBRU3RyaW5nIGNob29zZURlc3RpbmF0aW9uRmlsZShjb25z
dCBRU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSk7CisgICAgdmlydHVhbCB2b2lkIGRvd25sb2Fk
U3RhcnRlZChRV2ViRG93bmxvYWRJdGVtKiBkb3dubG9hZEl0ZW0pOwogCiAgICAgdmlydHVhbCB2
b2lkIGRpZE1vdXNlTW92ZU92ZXJFbGVtZW50KGNvbnN0IFFVcmwmLCBjb25zdCBRU3RyaW5nJik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcW1scGx1Z2lu
L3BsdWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FtbHBsdWdpbi9w
bHVnaW4uY3BwCmluZGV4IDg1ZDdkMDhlYmY3ZmY2ZjBkMGRhYzU3ZDJmZjg3MjBkMmRlMDRhMjYu
LmFiMWY2NjMyOGY5MzY4NzcxNTA5NjMyZTYyMTdkZjdmN2UwMThmMGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcW1scGx1Z2luL3BsdWdpbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xbWxwbHVnaW4vcGx1Z2luLmNwcApAQCAt
MjAsNiArMjAsNyBAQAogI2luY2x1ZGUgInFkZXNrdG9wd2Vidmlldy5oIgogI2luY2x1ZGUgInF0
b3VjaHdlYnBhZ2UuaCIKICNpbmNsdWRlICJxdG91Y2h3ZWJ2aWV3LmgiCisjaW5jbHVkZSAicXdl
YmRvd25sb2FkaXRlbS5oIgogI2luY2x1ZGUgInF3ZWJuYXZpZ2F0aW9uY29udHJvbGxlci5oIgog
CiAjaW5jbHVkZSA8UXREZWNsYXJhdGl2ZS9xZGVjbGFyYXRpdmUuaD4KQEAgLTM5LDYgKzQwLDcg
QEAgcHVibGljOgogICAgICAgICBxbWxSZWdpc3RlclVuY3JlYXRhYmxlVHlwZTxRV2ViTmF2aWdh
dGlvbkNvbnRyb2xsZXI+KHVyaSwgNSwgMCwgIk5hdmlnYXRpb25Db250cm9sbGVyIiwgUU9iamVj
dDo6dHIoIkNhbm5vdCBjcmVhdGUgc2VwYXJhdGUgaW5zdGFuY2Ugb2YgTmF2aWdhdGlvbkNvbnRy
b2xsZXIiKSk7CiAgICAgICAgIHFtbFJlZ2lzdGVyVW5jcmVhdGFibGVUeXBlPFFUb3VjaFdlYlBh
Z2U+KHVyaSwgNSwgMCwgIlRvdWNoV2ViUGFnZSIsIFFPYmplY3Q6OnRyKCJDYW5ub3QgY3JlYXRl
IHNlcGFyYXRlIGluc3RhbmNlIG9mIFRvdWNoV2ViUGFnZSwgdXNlIFRvdWNoV2ViVmlldyIpKTsK
ICAgICAgICAgcW1sUmVnaXN0ZXJVbmNyZWF0YWJsZVR5cGU8UU5ldHdvcmtSZXBseT4odXJpLCA1
LCAwLCAiTmV0d29ya1JlcGx5IiwgUU9iamVjdDo6dHIoIkNhbm5vdCBjcmVhdGUgc2VwYXJhdGUg
aW5zdGFuY2Ugb2YgTmV0d29ya1JlcGx5IikpOworICAgICAgICBxbWxSZWdpc3RlclVuY3JlYXRh
YmxlVHlwZTxRV2ViRG93bmxvYWRJdGVtPih1cmksIDUsIDAsICJEb3dubG9hZEl0ZW0iLCBRT2Jq
ZWN0Ojp0cigiQ2Fubm90IGNyZWF0ZSBzZXBhcmF0ZSBpbnN0YW5jZSBvZiBEb3dubG9hZEl0ZW0i
KSk7CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xd2ViZG93bmxvYWRpdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcXdlYmRvd25sb2FkaXRlbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmJhNzQ4NGYzZWUzZDg2OWFlMTIx
NjQ5MmIyZGQ2M2RkMTA2MTAwYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvcXdlYmRvd25sb2FkaXRlbS5jcHAKQEAgLTAsMCArMSw3NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNp
ZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq
IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJxd2ViZG93bmxv
YWRpdGVtLmgiCisKKyNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCisjaW5jbHVkZSAicXdlYmRv
d25sb2FkaXRlbV9wLmgiCisKK1FXZWJEb3dubG9hZEl0ZW1Qcml2YXRlOjpRV2ViRG93bmxvYWRJ
dGVtUHJpdmF0ZShRV2ViRG93bmxvYWRJdGVtKiBxcSkKKyAgICA6IHEocXEpCisgICAgLCBkb3du
bG9hZFByb3h5KDApCisgICAgLCBleHBlY3RlZENvbnRlbnRMZW5ndGgoMCkKKyAgICAsIHRvdGFs
Qnl0ZXNSZWNlaXZlZCgwKQoreworfQorCitRV2ViRG93bmxvYWRJdGVtOjpRV2ViRG93bmxvYWRJ
dGVtKFFPYmplY3QqIHBhcmVudCkKKyAgICA6IFFPYmplY3QocGFyZW50KQorICAgICwgZChuZXcg
UVdlYkRvd25sb2FkSXRlbVByaXZhdGUodGhpcykpCit7Cit9CisKK1FXZWJEb3dubG9hZEl0ZW06
On5RV2ViRG93bmxvYWRJdGVtKCkKK3sKKyAgICBkZWxldGUgZDsKK30KKworUVVybCBRV2ViRG93
bmxvYWRJdGVtOjpzb3VyY2VVcmwoKSBjb25zdAoreworICAgIHJldHVybiBkLT5zb3VyY2VVcmw7
Cit9CisKK1FTdHJpbmcgUVdlYkRvd25sb2FkSXRlbTo6ZGVzdGluYXRpb25QYXRoKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gZC0+ZGVzdGluYXRpb25QYXRoOworfQorCitRU3RyaW5nIFFXZWJEb3du
bG9hZEl0ZW06Om1pbWVUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZC0+bWltZVR5cGU7Cit9
CisKK3F1aW50NjQgUVdlYkRvd25sb2FkSXRlbTo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gZC0+ZXhwZWN0ZWRDb250ZW50TGVuZ3RoOworfQorCitxdWludDY0
IFFXZWJEb3dubG9hZEl0ZW06OnRvdGFsQnl0ZXNSZWNlaXZlZCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGQtPnRvdGFsQnl0ZXNSZWNlaXZlZDsKK30KKwordm9pZCBRV2ViRG93bmxvYWRJdGVtOjpj
YW5jZWwoKQoreworICAgIGQtPmRvd25sb2FkUHJveHktPmNhbmNlbCgpOworfQorCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJkb3dubG9hZGl0ZW0uaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYmRvd25sb2FkaXRlbS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmMxNDg4ZDg2NDlkNmU0MWY3MTY5MmJiZTFlYzRhYTUwNDUwOTdiNjcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJkb3dubG9hZGl0
ZW0uaApAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENv
cnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBxd2ViZG93
bmxvYWRpdGVtX2gKKyNkZWZpbmUgcXdlYmRvd25sb2FkaXRlbV9oCisKKyNpbmNsdWRlICJxd2Vi
a2l0Z2xvYmFsLmgiCisjaW5jbHVkZSA8UU9iamVjdD4KKyNpbmNsdWRlIDxRVXJsPgorCitjbGFz
cyBRV2ViRG93bmxvYWRJdGVtUHJpdmF0ZTsKK2NsYXNzIFFXZWJFcnJvcjsKKworUVRfQkVHSU5f
TkFNRVNQQUNFCitjbGFzcyBRU3RyaW5nOworUVRfRU5EX05BTUVTUEFDRQorCitjbGFzcyBRV0VC
S0lUX0VYUE9SVCBRV2ViRG93bmxvYWRJdGVtIDogcHVibGljIFFPYmplY3QgeworICAgIFFfT0JK
RUNUCisgICAgUV9QUk9QRVJUWShpbnQgY29udGVudExlbmd0aCBSRUFEIGV4cGVjdGVkQ29udGVu
dExlbmd0aCBDT05TVEFOVCBGSU5BTCkKKyAgICBRX1BST1BFUlRZKFFTdHJpbmcgZGVzdGluYXRp
b24gUkVBRCBkZXN0aW5hdGlvblBhdGggQ09OU1RBTlQgRklOQUwpCisgICAgUV9QUk9QRVJUWShp
bnQgdG90YWxCeXRlc1JlY2VpdmVkIFJFQUQgdG90YWxCeXRlc1JlY2VpdmVkIE5PVElGWSBkYXRh
UmVjZWl2ZWQgRklOQUwpCisgICAgUV9QUk9QRVJUWShRVXJsIHVybCBSRUFEIHNvdXJjZVVybCBD
T05TVEFOVCBGSU5BTCkKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5RV2ViRG93bmxvYWRJdGVtKCk7
CisKKyAgICBlbnVtIERvd25sb2FkRXJyb3IgeworICAgICAgICBBYm9ydGVkID0gMCwKKyAgICAg
ICAgQ2Fubm90V3JpdGVUb0ZpbGUsCisgICAgICAgIENhbm5vdE9wZW5GaWxlLAorICAgICAgICBG
aWxlQWxyZWFkeUV4aXN0cywKKyAgICAgICAgQ2FuY2VsbGVkQnlDYWxsZXIsCisgICAgICAgIENh
bm5vdERldGVybWluZUZpbGVuYW1lLAorICAgICAgICBOZXR3b3JrRmFpbHVyZQorICAgIH07CisK
KyAgICBRVXJsIHNvdXJjZVVybCgpIGNvbnN0OworICAgIFFTdHJpbmcgZGVzdGluYXRpb25QYXRo
KCkgY29uc3Q7CisgICAgUVN0cmluZyBtaW1lVHlwZSgpIGNvbnN0OworICAgIHF1aW50NjQgZXhw
ZWN0ZWRDb250ZW50TGVuZ3RoKCkgY29uc3Q7CisgICAgcXVpbnQ2NCB0b3RhbEJ5dGVzUmVjZWl2
ZWQoKSBjb25zdDsKKworcHVibGljIFFfU0xPVFM6CisgICAgdm9pZCBjYW5jZWwoKTsKKworUV9T
SUdOQUxTOgorICAgIHZvaWQgZGVzdGluYXRpb25GaWxlQ3JlYXRlZChjb25zdCBRU3RyaW5nJiBk
ZXN0aW5hdGlvblBhdGgpOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKHF1aW50NjQgYnl0ZXNSZWNl
aXZlZCk7CisgICAgdm9pZCBmaW5pc2hlZCgpOworICAgIHZvaWQgZmFpbGVkKGNvbnN0IFFXZWJF
cnJvciYpOworCitwcml2YXRlOgorICAgIFFXZWJEb3dubG9hZEl0ZW0oUU9iamVjdCogcGFyZW50
ID0gMCk7CisgICAgUVdlYkRvd25sb2FkSXRlbVByaXZhdGUqIGQ7CisKKyAgICBmcmllbmQgY2xh
c3MgUXRXZWJQYWdlUHJveHk7Cit9OworCisjZW5kaWYgLyogcXdlYmRvd25sb2FkaXRlbV9oICov
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJkb3dubG9h
ZGl0ZW1fcC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxvYWRp
dGVtX3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xNDFmNmE2ZDlmNzlmNzMxZDQzNjhhYTRmYTBmMjkzNGJjM2M5
ZjgyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
d2ViZG93bmxvYWRpdGVtX3AuaApAQCAtMCwwICsxLDQ3IEBACisvKgorICAgIENvcHlyaWdodCAo
QykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAg
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLwor
CisKKyNpZm5kZWYgcXdlYmRvd25sb2FkaXRlbV9wX2gKKyNkZWZpbmUgcXdlYmRvd25sb2FkaXRl
bV9wX2gKKworI2luY2x1ZGUgInF3ZWJkb3dubG9hZGl0ZW0uaCIKKyNpbmNsdWRlIDxRVXJsPgor
CitjbGFzcyBRdFdlYlBhZ2VQcm94eTsKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgRG93bmxv
YWRQcm94eTsKK30KKworY2xhc3MgUVdlYkRvd25sb2FkSXRlbVByaXZhdGUgeworcHVibGljOgor
ICAgIFFXZWJEb3dubG9hZEl0ZW1Qcml2YXRlKFFXZWJEb3dubG9hZEl0ZW0qKTsKKworICAgIFFX
ZWJEb3dubG9hZEl0ZW0qIHE7CisKKyAgICBXZWJLaXQ6OkRvd25sb2FkUHJveHkqIGRvd25sb2Fk
UHJveHk7CisKKyAgICBRVXJsIHNvdXJjZVVybDsKKyAgICBRU3RyaW5nIGRlc3RpbmF0aW9uUGF0
aDsKKyAgICBRU3RyaW5nIG1pbWVUeXBlOworICAgIHF1aW50NjQgZXhwZWN0ZWRDb250ZW50TGVu
Z3RoOworICAgIHF1aW50NjQgdG90YWxCeXRlc1JlY2VpdmVkOworfTsKKworI2VuZGlmIC8qIHF3
ZWJkb3dubG9hZGl0ZW1fcF9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3F3ZWJlcnJvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3F3ZWJlcnJvci5jcHAKaW5kZXggYTVmOGQ5ODk1NzVlMzI1YjBhNmU5YzQxYTM4Y2Y0OThjOGZi
YmE2NC4uYjAyOGE2MzEzMGZlZDE4OGEzM2IzZjkwNWM5OTc1ZTg4ZTgzMjQ0MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViZXJyb3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYmVycm9yLmNwcApAQCAtODAsMyArODAs
OCBAQCBRVXJsIFFXZWJFcnJvcjo6dXJsKCkgY29uc3QKICAgICBXS1JldGFpblB0cjxXS1VSTFJl
Zj4gZmFpbGluZ1VSTCA9IGFkb3B0V0soV0tFcnJvckNvcHlGYWlsaW5nVVJMKGQtPmVycm9yLmdl
dCgpKSk7CiAgICAgcmV0dXJuIFdLVVJMQ29weVFVcmwoZmFpbGluZ1VSTC5nZXQoKSk7CiB9CisK
K1FTdHJpbmcgUVdlYkVycm9yOjpkZXNjcmlwdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdL
U3RyaW5nQ29weVFTdHJpbmcoV0tFcnJvckNvcHlMb2NhbGl6ZWREZXNjcmlwdGlvbihkLT5lcnJv
ci5nZXQoKSkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xd2ViZXJyb3IuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYmVycm9y
LmgKaW5kZXggYjk3ODBhZTNiNWEyNmE5NTgyNWU4NWFiZDFmNjZjNTI0ZGM4NDk2MC4uMDFlY2E3
ZDMyNDcyMTFlNjNhMzExNmNmZmE3NjNkMWNjMzNmNjI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViZXJyb3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3F3ZWJlcnJvci5oCkBAIC0yMSw2ICsyMSw3IEBACiAjaWZuZGVmIHF3
ZWJlcnJvcl9oCiAjZGVmaW5lIHF3ZWJlcnJvcl9oCiAKKyNpbmNsdWRlICJxd2ViZG93bmxvYWRp
dGVtLmgiCiAjaW5jbHVkZSAicXdlYmtpdGdsb2JhbC5oIgogI2luY2x1ZGUgPFFTaGFyZWREYXRh
UG9pbnRlcj4KICNpbmNsdWRlIDxRdE5ldHdvcmsvUU5ldHdvcmtSZXBseT4KQEAgLTQzLDkgKzQ0
LDExIEBAIHB1YmxpYzoKICAgICBUeXBlIHR5cGUoKSBjb25zdDsKICAgICBRVXJsIHVybCgpIGNv
bnN0OwogICAgIGludCBlcnJvckNvZGUoKSBjb25zdDsKKyAgICBRU3RyaW5nIGRlc2NyaXB0aW9u
KCkgY29uc3Q7CiAKICAgICBpbnQgZXJyb3JDb2RlQXNIdHRwU3RhdHVzQ29kZSgpIGNvbnN0IHsg
cmV0dXJuIGVycm9yQ29kZSgpOyB9CiAgICAgUU5ldHdvcmtSZXBseTo6TmV0d29ya0Vycm9yIGVy
cm9yQ29kZUFzTmV0d29ya0Vycm9yKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UU5ldHdv
cmtSZXBseTo6TmV0d29ya0Vycm9yPihlcnJvckNvZGUoKSk7IH0KKyAgICBRV2ViRG93bmxvYWRJ
dGVtOjpEb3dubG9hZEVycm9yIGVycm9yQ29kZUFzRG93bmxvYWRFcnJvcigpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PFFXZWJEb3dubG9hZEl0ZW06OkRvd25sb2FkRXJyb3I+KGVycm9yQ29k
ZSgpKTsgfQogCiAgICAgUVdlYkVycm9yKGNvbnN0IFFXZWJFcnJvciYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5jcHAKaW5kZXggODM1OWEwMmIxNzU2MGVmYjMw
NzkyMTE2MzU5MmVlNDM5NWU0N2M1ZC4uNTRlZmUxMjkzMTI4OTRjY2NiYjU3OTdjZjY0ZDZiM2Q1
MTE4NGE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0NsaWVudElt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmNwcApA
QCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLU3Ry
aW5nUXQuaCIKICNpbmNsdWRlICJXS1VSTFF0LmgiCisjaW5jbHVkZSAicXdlYmRvd25sb2FkaXRl
bS5oIgogI2luY2x1ZGUgInF3ZWJlcnJvci5oIgogI2luY2x1ZGUgInF3ZWJlcnJvcl9wLmgiCiAj
aW5jbHVkZSA8UG9saWN5SW50ZXJmYWNlLmg+CkBAIC0yMTgsMyArMjE5LDM2IEBAIHZvaWQgcXRf
d2tfZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXS1BhZ2VSZWYgcGFnZSwgV0tGcmFt
ZVJlZiBmcmFtZSwgV0tGCiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KKwordm9pZCBxdF93a19k
aWRSZWNlaXZlUmVzcG9uc2UoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93
bmxvYWQsIFdLVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8p
Cit7CisgICAgdG9RdFdlYlBhZ2VQcm94eShjbGllbnRJbmZvKS0+ZG93bmxvYWRSZWNlaXZlZFJl
c3BvbnNlKHRvSW1wbChkb3dubG9hZCksIHRvSW1wbChyZXNwb25zZSktPnJlc291cmNlUmVzcG9u
c2UoKSk7Cit9CisKK3ZvaWQgcXRfd2tfZGlkQ3JlYXRlRGVzdGluYXRpb24oV0tDb250ZXh0UmVm
IGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLU3RyaW5nUmVmIHBhdGgsIGNvbnN0
IHZvaWQgKmNsaWVudEluZm8pCit7CisgICAgdG9RdFdlYlBhZ2VQcm94eShjbGllbnRJbmZvKS0+
ZG93bmxvYWRDcmVhdGVkRGVzdGluYXRpb24odG9JbXBsKGRvd25sb2FkKSwgV0tTdHJpbmdDb3B5
UVN0cmluZyhwYXRoKSk7Cit9CisKK3ZvaWQgcXRfd2tfZGlkRmluaXNoRG93bmxvYWQoV0tDb250
ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQgKmNsaWVu
dEluZm8pCit7CisgICAgdG9RdFdlYlBhZ2VQcm94eShjbGllbnRJbmZvKS0+ZG93bmxvYWRGaW5p
c2hlZCh0b0ltcGwoZG93bmxvYWQpKTsKK30KKwordm9pZCBxdF93a19kaWRGYWlsRG93bmxvYWQo
V0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLRXJyb3JSZWYg
ZXJyb3IsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCit7CisgICAgUVVybCBmYWlsaW5nVXJsID0g
V0tVUkxDb3B5UVVybChXS0Vycm9yQ29weUZhaWxpbmdVUkwoZXJyb3IpKTsKKworICAgIHRvUXRX
ZWJQYWdlUHJveHkoY2xpZW50SW5mbyktPmRvd25sb2FkRmFpbGVkKHRvSW1wbChkb3dubG9hZCks
IFFXZWJFcnJvclByaXZhdGU6OmNyZWF0ZVFXZWJFcnJvcihlcnJvcikpOworfQorCitXS1N0cmlu
Z1JlZiBxdF93a19kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS0NvbnRl
eHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tTdHJpbmdSZWYgZmlsZW5h
bWUsIGJvb2wqIGFsbG93T3ZlcndyaXRlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQoreworICAg
IHJldHVybiB0b1F0V2ViUGFnZVByb3h5KGNsaWVudEluZm8pLT5kZWNpZGVEZXN0aW5hdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZSh0b0ltcGwoZG93bmxvYWQpLCBXS1N0cmluZ0NvcHlRU3RyaW5n
KGZpbGVuYW1lKSwgYWxsb3dPdmVyd3JpdGUpOworfQorCit2b2lkIHF0X3drX2RpZFJlY2VpdmVE
YXRhRm9yRG93bmxvYWQoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxv
YWQsIHVpbnQ2NF90IGxlbmd0aCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKK3sKKyAgICB0b1F0
V2ViUGFnZVByb3h5KGNsaWVudEluZm8pLT5kb3dubG9hZERhdGFSZWNlaXZlZCh0b0ltcGwoZG93
bmxvYWQpLCBsZW5ndGgpOworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0NsaWVudElt
cGwuaAppbmRleCBkZTQ2NzYwZWE2MDI2NDVkOWZkMGVkODE1OGY3ODFjZjUyNTUwMjIxLi5jNzJl
NDNlODM3YTJlNzY5MTkyZTk5ZmI0ZmIwOTQ3NGEwYzE4OWEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9DbGllbnRJbXBsLmgKQEAgLTQ2LDYgKzQ2LDE0IEBAIHZvaWQgcXRfd2tfbW91
c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV0tQYWdlUmVmLCBXS0hpdFRlc3RSZXN1bHRSZWYsIFdLRXZl
bnRNb2RpZmllCiAvLyBQb2xpY3kgY2xpZW50Lgogdm9pZCBxdF93a19kZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tGcmFtZU5hdmlnYXRpb25U
eXBlLCBXS0V2ZW50TW9kaWZpZXJzLCBXS0V2ZW50TW91c2VCdXR0b24sIFdLVVJMUmVxdWVzdFJl
ZiwgV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pOwogCisvLyBEb3dubG9hZCBjbGllbnQuCit2b2lkIHF0X3drX2RpZFJl
Y2VpdmVSZXNwb25zZShXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLVVJMUmVzcG9uc2VS
ZWYsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordm9pZCBxdF93a19kaWRDcmVhdGVEZXN0aW5h
dGlvbihXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLU3RyaW5nUmVmIHBhdGgsIGNvbnN0
IHZvaWQgKmNsaWVudEluZm8pOwordm9pZCBxdF93a19kaWRGaW5pc2hEb3dubG9hZChXS0NvbnRl
eHRSZWYsIFdLRG93bmxvYWRSZWYsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordm9pZCBxdF93
a19kaWRGYWlsRG93bmxvYWQoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBXS0Vycm9yUmVm
LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK1dLU3RyaW5nUmVmIHF0X3drX2RlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwg
V0tTdHJpbmdSZWYgZmlsZW5hbWUsIGJvb2wqIGFsbG93T3ZlcndyaXRlLCBjb25zdCB2b2lkICpj
bGllbnRJbmZvKTsKK3ZvaWQgcXRfd2tfZGlkUmVjZWl2ZURhdGFGb3JEb3dubG9hZChXS0NvbnRl
eHRSZWYsIFdLRG93bmxvYWRSZWYsIHVpbnQ2NF90IGxlbmd0aCwgY29uc3Qgdm9pZCAqY2xpZW50
SW5mbyk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcAppbmRleCBmM2Q1YTAwZWYxYTJiNDc0
Y2ZmOTU1YTFlMWY2MGMzNDJkNTYzZWFlLi5lNzhhMjNjZDdkNDFkMTgyNDNiOThiZTI2ODdkMDFk
N2JmNmZmYzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQ
YWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQ
cm94eS5jcHAKQEAgLTIxLDEwICsyMSwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIlF0V2ViUGFnZVByb3h5LmgiCiAKKyNpbmNsdWRlICJxd2ViZG93bmxvYWRpdGVtLmgiCisj
aW5jbHVkZSAicXdlYmRvd25sb2FkaXRlbV9wLmgiCiAjaW5jbHVkZSAicXdlYmVycm9yLmgiCiAj
aW5jbHVkZSAicXdrcHJlZmVyZW5jZXNfcC5oIgogCiAjaW5jbHVkZSAiQ2xpZW50SW1wbC5oIgor
I2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKICNpbmNsdWRlICJxd2toaXN0b3J5LmgiCiAjaW5j
bHVkZSAicXdraGlzdG9yeV9wLmgiCiAjaW5jbHVkZSAiRmluZEluZGljYXRvci5oIgpAQCAtMTU0
LDYgKzE1NywxOCBAQCB2b2lkIFF0V2ViUGFnZVByb3h5Ojppbml0KCkKICAgICAgICAgcG9saWN5
Q2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gPSBxdF93a19kZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uOwogICAgICAgICBXS1BhZ2VTZXRQYWdlUG9saWN5Q2xpZW50
KHRvQVBJKG1fd2ViUGFnZVByb3h5LmdldCgpKSwgJnBvbGljeUNsaWVudCk7CiAgICAgfQorCisg
ICAgV0tDb250ZXh0RG93bmxvYWRDbGllbnQgZG93bmxvYWRDbGllbnQ7CisgICAgbWVtc2V0KCZk
b3dubG9hZENsaWVudCwgMCwgc2l6ZW9mKFdLQ29udGV4dERvd25sb2FkQ2xpZW50KSk7CisgICAg
ZG93bmxvYWRDbGllbnQudmVyc2lvbiA9IGtXS0NvbnRleHREb3dubG9hZENsaWVudEN1cnJlbnRW
ZXJzaW9uOworICAgIGRvd25sb2FkQ2xpZW50LmNsaWVudEluZm8gPSAgdGhpczsKKyAgICBkb3du
bG9hZENsaWVudC5kaWRSZWNlaXZlUmVzcG9uc2UgPSBxdF93a19kaWRSZWNlaXZlUmVzcG9uc2U7
CisgICAgZG93bmxvYWRDbGllbnQuZGlkUmVjZWl2ZURhdGEgPSBxdF93a19kaWRSZWNlaXZlRGF0
YUZvckRvd25sb2FkOworICAgIGRvd25sb2FkQ2xpZW50LmRpZENyZWF0ZURlc3RpbmF0aW9uID0g
cXRfd2tfZGlkQ3JlYXRlRGVzdGluYXRpb247CisgICAgZG93bmxvYWRDbGllbnQuZGlkRmluaXNo
ID0gcXRfd2tfZGlkRmluaXNoRG93bmxvYWQ7CisgICAgZG93bmxvYWRDbGllbnQuZGlkRmFpbCA9
IHF0X3drX2RpZEZhaWxEb3dubG9hZDsKKyAgICBkb3dubG9hZENsaWVudC5kZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSA9IHF0X3drX2RlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lOworICAgIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KHRvQVBJKG1f
Y29udGV4dC5nZXQoKSksICZkb3dubG9hZENsaWVudCk7CiB9CiAKIFF0V2ViUGFnZVByb3h5Ojp+
UXRXZWJQYWdlUHJveHkoKQpAQCAtNjk2LDQgKzcxMSw2NSBAQCB2b2lkIFF0V2ViUGFnZVByb3h5
OjpzZXRQYWdlSXNWaXNpYmxlKGJvb2wgaXNWaXNpYmxlKQogICAgIG1fd2ViUGFnZVByb3h5LT5k
cmF3aW5nQXJlYSgpLT5zZXRQYWdlSXNWaXNpYmxlKGlzVmlzaWJsZSk7CiB9CiAKK3ZvaWQgUXRX
ZWJQYWdlUHJveHk6OmRvd25sb2FkUmVjZWl2ZWRSZXNwb25zZShXZWJLaXQ6OkRvd25sb2FkUHJv
eHkqIGRvd25sb2FkLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkK
K3sKKyAgICAvLyBXaWxsIGJlIGNhbGxlZCB3aGVuIHRoZSBoZWFkZXJzIGFyZSByZWFkIGJ5IFdl
YlByb2Nlc3MuCisgICAgUVdlYkRvd25sb2FkSXRlbSogZG93bmxvYWRJdGVtID0gbmV3IFFXZWJE
b3dubG9hZEl0ZW0odGhpcyk7CisgICAgZG93bmxvYWRJdGVtLT5kLT5kb3dubG9hZFByb3h5ID0g
ZG93bmxvYWQ7CisgICAgZG93bmxvYWRJdGVtLT5kLT5zb3VyY2VVcmwgPSByZXNwb25zZS51cmwo
KTsKKyAgICBkb3dubG9hZEl0ZW0tPmQtPm1pbWVUeXBlID0gcmVzcG9uc2UubWltZVR5cGUoKTsK
KyAgICBkb3dubG9hZEl0ZW0tPmQtPmV4cGVjdGVkQ29udGVudExlbmd0aCA9IHJlc3BvbnNlLmV4
cGVjdGVkQ29udGVudExlbmd0aCgpOworCisgICAgbV9kb3dubG9hZHNbZG93bmxvYWQtPmRvd25s
b2FkSUQoKV0gPSBkb3dubG9hZEl0ZW07CisgICAgZW1pdCBtX3ZpZXdJbnRlcmZhY2UtPmRvd25s
b2FkU3RhcnRlZChkb3dubG9hZEl0ZW0pOworfQorCit2b2lkIFF0V2ViUGFnZVByb3h5Ojpkb3du
bG9hZENyZWF0ZWREZXN0aW5hdGlvbihXZWJLaXQ6OkRvd25sb2FkUHJveHkqIGRvd25sb2FkLCBj
b25zdCBRU3RyaW5nJiBwYXRoKQoreworICAgIFFXZWJEb3dubG9hZEl0ZW0qIGRvd25sb2FkSXRl
bSA9IG1fZG93bmxvYWRzLnZhbHVlKGRvd25sb2FkLT5kb3dubG9hZElEKCkpOworICAgIEFTU0VS
VChkb3dubG9hZEl0ZW0pOworICAgIGRvd25sb2FkSXRlbS0+ZC0+ZGVzdGluYXRpb25QYXRoID0g
cGF0aDsKKyAgICBlbWl0IGRvd25sb2FkSXRlbS0+ZGVzdGluYXRpb25GaWxlQ3JlYXRlZChkb3du
bG9hZEl0ZW0tPmQtPmRlc3RpbmF0aW9uUGF0aCk7Cit9CisKK3ZvaWQgUXRXZWJQYWdlUHJveHk6
OmRvd25sb2FkRmluaXNoZWQoV2ViS2l0OjpEb3dubG9hZFByb3h5KiBkb3dubG9hZCkKK3sKKyAg
ICBRV2ViRG93bmxvYWRJdGVtKiBkb3dubG9hZEl0ZW0gPSBtX2Rvd25sb2Fkcy50YWtlKGRvd25s
b2FkLT5kb3dubG9hZElEKCkpOworICAgIEFTU0VSVChkb3dubG9hZEl0ZW0pOworICAgIGVtaXQg
ZG93bmxvYWRJdGVtLT5maW5pc2hlZCgpOworICAgIGRvd25sb2FkSXRlbS0+ZGVsZXRlTGF0ZXIo
KTsKK30KKwordm9pZCBRdFdlYlBhZ2VQcm94eTo6ZG93bmxvYWRGYWlsZWQoV2ViS2l0OjpEb3du
bG9hZFByb3h5KiBkb3dubG9hZCwgY29uc3QgUVdlYkVycm9yJiBlcnJvcikKK3sKKyAgICBRV2Vi
RG93bmxvYWRJdGVtKiBkb3dubG9hZEl0ZW0gPSBtX2Rvd25sb2Fkcy50YWtlKGRvd25sb2FkLT5k
b3dubG9hZElEKCkpOworICAgIEFTU0VSVChkb3dubG9hZEl0ZW0pOworICAgIGVtaXQgZG93bmxv
YWRJdGVtLT5mYWlsZWQoZXJyb3IpOworICAgIGRvd25sb2FkSXRlbS0+ZGVsZXRlTGF0ZXIoKTsK
K30KKworV0tTdHJpbmdSZWYgUXRXZWJQYWdlUHJveHk6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lKFdlYktpdDo6RG93bmxvYWRQcm94eSogZG93bmxvYWQsIGNvbnN0IFFT
dHJpbmcmIHBhdGgsIGJvb2wqIGFsbG93T3ZlcndyaXRlKQoreworICAgIFFXZWJEb3dubG9hZEl0
ZW0qIGRvd25sb2FkSXRlbSA9IG1fZG93bmxvYWRzLnZhbHVlKGRvd25sb2FkLT5kb3dubG9hZElE
KCkpOworICAgIEFTU0VSVChkb3dubG9hZEl0ZW0pOworICAgIFFTdHJpbmcgZGVzdGluYXRpb247
CisKKyAgICAvLyBXZSBkb24ndCBuZWVkIHRoaXMgYnV0IHdlIG5lZWQgdG8gaW5pdGlhbGl6ZSBp
dCBjb3JyZWN0bHkKKyAgICAvLyBpbiBvcmRlciB0byBhdm9pZCBzZW5kaW5nIGp1bmsgb24gdGhl
IHJlcGx5IElQQyBtZXNzYWdlLgorICAgICphbGxvd092ZXJ3cml0ZSA9IHRydWU7CisKKyAgICBk
ZXN0aW5hdGlvbiA9IG1fdmlld0ludGVyZmFjZS0+Y2hvb3NlRGVzdGluYXRpb25GaWxlKHBhdGgp
OworCisgICAgcmV0dXJuIFdLU3RyaW5nQ3JlYXRlV2l0aFFTdHJpbmcoZGVzdGluYXRpb24pOwor
fQorCit2b2lkIFF0V2ViUGFnZVByb3h5Ojpkb3dubG9hZERhdGFSZWNlaXZlZChXZWJLaXQ6OkRv
d25sb2FkUHJveHkqIGRvd25sb2FkLCB1aW50NjRfdCBsZW5ndGgpCit7CisgICAgLy8gV2lsbCBi
ZSBjYWxsZWQgZXZlcnl0aW1lIGJ5dGVzIHdlcmUgd3JpdHRlbiB0byBkZXN0aW5hdGlvbiBmaWxl
IGJ5IFdlYlByb2Nlc3MuCisgICAgUVdlYkRvd25sb2FkSXRlbSogZG93bmxvYWRJdGVtID0gbV9k
b3dubG9hZHMudmFsdWUoZG93bmxvYWQtPmRvd25sb2FkSUQoKSk7CisgICAgQVNTRVJUKGRvd25s
b2FkSXRlbSk7CisgICAgZG93bmxvYWRJdGVtLT5kLT50b3RhbEJ5dGVzUmVjZWl2ZWQgKz0gbGVu
Z3RoOworICAgIGVtaXQgZG93bmxvYWRJdGVtLT5kYXRhUmVjZWl2ZWQobGVuZ3RoKTsKK30KKwog
I2luY2x1ZGUgIm1vY19RdFdlYlBhZ2VQcm94eS5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5oCmluZGV4IGZiZDY0MTU0Y2NjZmY3MmY5MDZmYTE0OWE3
YWE3NzczZTNkMTkzYTAuLmViODg1NGQzY2U2OWM4OTljM2U0OTE3MGI1MzkxMzliZWJkZTU1NmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5oCkBAIC0y
Niw2ICsyNiw3IEBACiAjaW5jbHVkZSAiTGF5ZXJUcmVlQ29udGV4dC5oIgogI2luY2x1ZGUgIlBh
Z2VDbGllbnQuaCIKICNpbmNsdWRlICJQb2xpY3lJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJxd2Vi
ZG93bmxvYWRpdGVtLmgiCiAjaW5jbHVkZSAicXdlYmtpdHR5cGVzLmgiCiAjaW5jbHVkZSAiU2hh
cmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIKQEAgLTE3NCw2
ICsxNzUsMTMgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRQYWdlSXNWaXNpYmxlKGJvb2wpOwog
CisgICAgdm9pZCBkb3dubG9hZFJlY2VpdmVkUmVzcG9uc2UoV2ViS2l0OjpEb3dubG9hZFByb3h5
KiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHZvaWQgZG93bmxvYWRD
cmVhdGVkRGVzdGluYXRpb24oV2ViS2l0OjpEb3dubG9hZFByb3h5KiwgY29uc3QgUVN0cmluZyYg
cGF0aCk7CisgICAgdm9pZCBkb3dubG9hZEZpbmlzaGVkKFdlYktpdDo6RG93bmxvYWRQcm94eSop
OworICAgIHZvaWQgZG93bmxvYWRGYWlsZWQoV2ViS2l0OjpEb3dubG9hZFByb3h5KiwgY29uc3Qg
UVdlYkVycm9yJik7CisgICAgV0tTdHJpbmdSZWYgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2Vz
dGVkRmlsZW5hbWUoV2ViS2l0OjpEb3dubG9hZFByb3h5KiwgY29uc3QgUVN0cmluZyYgcGF0aCwg
Ym9vbCogYWxsb3dPdmVyd3JpdGUpOworICAgIHZvaWQgZG93bmxvYWREYXRhUmVjZWl2ZWQoV2Vi
S2l0OjpEb3dubG9hZFByb3h5KiwgdWludDY0X3QgbGVuZ3RoKTsKKwogcHVibGljIFFfU0xPVFM6
CiAgICAgdm9pZCB3ZWJBY3Rpb25UcmlnZ2VyZWQoYm9vbCBjaGVja2VkKTsKIApAQCAtMjA3LDYg
KzIxNSw4IEBAIHByaXZhdGU6CiAKICAgICBPd25QdHI8UVVuZG9TdGFjaz4gbV91bmRvU3RhY2s7
CiAgICAgaW50IG1fbG9hZFByb2dyZXNzOworCisgICAgUU1hcDx1aW50NjRfdCwgUVdlYkRvd25s
b2FkSXRlbSo+IG1fZG93bmxvYWRzOwogfTsKIAogI2VuZGlmIC8qIFF0V2ViUGFnZVByb3h5X2gg
Ki8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9Ub3VjaFZpZXdJbnRl
cmZhY2UuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2Uu
aAppbmRleCBkMTVlODZkZTE5NWFlMDA3M2FkMDk2NmFiZTlmYWVjZTIxYzk3ZmEyLi40ZDllNGI3
MTU4YmE2OWYyMTA5MDA5NmJjOTliZTQxZTNiZGUwZjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvVG91Y2hWaWV3SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3F0L1RvdWNoVmlld0ludGVyZmFjZS5oCkBAIC03OCw2ICs3OCw4IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBRSlNFbmdpbmUqIGVuZ2luZSgpOwogCiAgICAgdmlydHVhbCB2
b2lkIGNob29zZUZpbGVzKFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJSZWYsIGNvbnN0IFFTdHJp
bmdMaXN0JiwgRmlsZUNob29zZXJUeXBlKSB7IH0KKyAgICB2aXJ0dWFsIFFTdHJpbmcgY2hvb3Nl
RGVzdGluYXRpb25GaWxlKGNvbnN0IFFTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSB7IHJldHVy
biBRU3RyaW5nKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWRTdGFydGVkKFFXZWJEb3du
bG9hZEl0ZW0qIGRvd25sb2FkSXRlbSkgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkTW91c2VN
b3ZlT3ZlckVsZW1lbnQoY29uc3QgUVVybCYsIGNvbnN0IFFTdHJpbmcmKSB7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1ZpZXdJbnRlcmZhY2UuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9WaWV3SW50ZXJmYWNlLmgKaW5kZXggNDdlNjkxOTNmNWY1
Nzk2MThjNjRlZWY0YjI5YWVjYjdkYWQ2MzU1ZS4uNGI0MjFkZGE4ZTYzMDk1ZjFjMGU1M2UwMzAz
Njk3OWE4MzZiMDdmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1Zp
ZXdJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVmlld0ludGVy
ZmFjZS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSA8UXRHdWkvUU1lbnU+CiAjaW5jbHVk
ZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KIAorY2xhc3MgUVdlYkRvd25sb2FkSXRlbTsKIGNsYXNzIFFX
ZWJFcnJvcjsKIAogUVRfQkVHSU5fTkFNRVNQQUNFCkBAIC05MCw2ICs5MSw5IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgY2hvb3NlRmlsZXMoV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJl
ZiwgY29uc3QgUVN0cmluZ0xpc3QmIHNlbGVjdGVkRmlsZU5hbWVzLCBGaWxlQ2hvb3NlclR5cGUp
ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRNb3VzZU1vdmVPdmVyRWxlbWVudChjb25zdCBR
VXJsJiwgY29uc3QgUVN0cmluZyYpID0gMDsKKworICAgIHZpcnR1YWwgUVN0cmluZyBjaG9vc2VE
ZXN0aW5hdGlvbkZpbGUoY29uc3QgUVN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgZG93bmxvYWRTdGFydGVkKFFXZWJEb3dubG9hZEl0ZW0qKSA9IDA7CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyQVBJLnByaSBiL1NvdXJj
ZS9XZWJLaXQyL1dlYktpdDJBUEkucHJpCmluZGV4IDBiMmFhZmY3NmI0ZTk3MDZmOGYxZDhiMjYz
N2IyNjAyZTVhMzRlYzcuLjRjYjVkYmU4OTdjMTU2YjFkMDAwZjg5NTgyMTQ2YTUyZTU1ZDRkYjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDJBUEkucHJpCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDJBUEkucHJpCkBAIC00OSw2ICs0OSw3IEBAIFdFQktJVDJfQVBJX1NPVVJD
RVMgPSBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvcXQvV0tT
dHJpbmdRdC5jcHAgXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3Bw
L3F0L1dLVVJMUXQuY3BwIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3FkZXNrdG9wd2Vidmlldy5jcHAgXAorICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcXdlYmRvd25sb2FkaXRlbS5jcHAgXAogICAgICQkU09VUkNFX0RJUi9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZS5jcHAgXAogICAgICQkU09VUkNFX0RJ
Ui9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2Vidmlldy5jcHAgXAogICAgICQkU09V
UkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYmVycm9yLmNwcCBcCkBAIC0xMzAs
NiArMTMxLDggQEAgV0VCS0lUMl9BUElfSEVBREVSUyArPSBcCiAgICAgJCRTT1VSQ0VfRElSL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvcXQvV0tVUkxRdC5oIFwKICAgICAkJFNPVVJDRV9ESVIv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5oIFwKICAgICAkJFNPVVJD
RV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlld19wLmggXAorICAg
ICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYmRvd25sb2FkaXRlbS5o
IFwKKyAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJkb3dubG9h
ZGl0ZW1fcC5oIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0
b3VjaHdlYnBhZ2UuaCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xdG91Y2h3ZWJwYWdlX3AuaCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9xdG91Y2h3ZWJ2aWV3LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9Eb3dubG9hZHMvcXQvRG93bmxvYWRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0Rvd25sb2Fkcy9xdC9Eb3dubG9hZFF0LmNwcAppbmRleCA5ZWU5OTk1ZTgwZTg4MGRk
YTZkMjdjOWEzYjUwZjBjMTYxZGVhMGUwLi40M2NlZjJhZDA1ZTk0ZTJjMzg5ZGJiYzNhNGRjNDk4
NTM2NmE0MzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fk
cy9xdC9Eb3dubG9hZFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25s
b2Fkcy9xdC9Eb3dubG9hZFF0LmNwcApAQCAtNTMsNiArNTMsNyBAQCB2b2lkIERvd25sb2FkOjpz
dGFydFdpdGhIYW5kbGUoV2ViUGFnZSogaW5pdGlhdGluZ1BhZ2UsIFJlc291cmNlSGFuZGxlKiBo
YW5kbGUsCiB7CiAgICAgQVNTRVJUKCFtX3F0RG93bmxvYWRlcik7CiAgICAgbV9xdERvd25sb2Fk
ZXIgPSBuZXcgUXRGaWxlRG93bmxvYWRlcih0aGlzLCBhZG9wdFB0cihoYW5kbGUtPmdldEludGVy
bmFsKCktPm1fam9iLT5yZWxlYXNlKCkpKTsKKyAgICBtX3F0RG93bmxvYWRlci0+c3RhcnQoKTsK
IH0KIAogdm9pZCBEb3dubG9hZDo6Y2FuY2VsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L1F0RmlsZURvd25sb2FkZXIuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5jcHAKaW5kZXgg
YzkzNmIwOGU3MGY5MDRjZjRiNWIzMzZmNTRiNzI2OTc3ZGJlZDBmOS4uODc2NjI1MmY3YjdlMzAz
OGQwODRiZTlkMzg2Mzc3ZDExODBiZGEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9Eb3dubG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5jcHAKQEAgLTU4
LDkgKzU4LDYgQEAgdm9pZCBRdEZpbGVEb3dubG9hZGVyOjpzdGFydCgpCiAgICAgY29ubmVjdCht
X3JlcGx5LmdldCgpLCBTSUdOQUwocmVhZHlSZWFkKCkpLCBTTE9UKG9uUmVhZHlSZWFkKCkpKTsK
ICAgICBjb25uZWN0KG1fcmVwbHkuZ2V0KCksIFNJR05BTChmaW5pc2hlZCgpKSwgU0xPVChvbkZp
bmlzaGVkKCkpKTsKICAgICBjb25uZWN0KG1fcmVwbHkuZ2V0KCksIFNJR05BTChlcnJvcihRTmV0
d29ya1JlcGx5OjpOZXR3b3JrRXJyb3IpKSwgU0xPVChvbkVycm9yKFFOZXR3b3JrUmVwbHk6Ok5l
dHdvcmtFcnJvcikpKTsKLQotICAgIC8vIENhbGwgb25SZWFkeVJlYWQganVzdCBpbiBjYXNlIHNv
bWUgZGF0YSBpcyBhbHJlYWR5IHdhaXRpbmcuCi0gICAgb25SZWFkeVJlYWQoKTsKIH0KIAogdm9p
ZCBRdEZpbGVEb3dubG9hZGVyOjpkZXRlcm1pbmVGaWxlbmFtZSgpCkBAIC04Nyw3ICs4NCw3IEBA
IHZvaWQgUXRGaWxlRG93bmxvYWRlcjo6ZGV0ZXJtaW5lRmlsZW5hbWUoKQogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgYm9vbCBhbGxvd092ZXJ3cml0ZTsKKyAgICBib29sIGFsbG93T3Zl
cndyaXRlID0gdHJ1ZTsKICAgICBtX2Rvd25sb2FkLT5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdn
ZXN0ZWRGaWxlbmFtZShmaWxlTmFtZSwgYWxsb3dPdmVyd3JpdGUpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109065</attachid>
            <date>2011-09-28 13:37:56 -0700</date>
            <delta_ts>2011-10-05 07:34:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68962-20110928173742.patch</filename>
            <type>text/plain</type>
            <size>33563</size>
            <attacher name="Jesus Sanchez-Palencia">jesus</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTYyNTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBkMWQ4MzM5ZDAxNmI1YmVh
MjM0MTkwNTU3ZWFhMWFkZmM3MzNlYmVmLi4xYzE4NTFlYWJmMWRhMTFkZmU1NGRiYTExMDNiMzRj
MjcxODMyNGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTMgQEAKKzIwMTEtMDktMjcgIEplc3Vz
IFNhbmNoZXotUGFsZW5jaWEgIDxqZXN1cy5wYWxlbmNpYUBvcGVuYm9zc2Eub3JnPgorCisgICAg
ICAgIFtRdF1bV0syXSBEb3dubG9hZCBzdXBwb3J0IGFuZCBBUEkgaW4gVUlQcm9jZXNzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODk2MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGltcGxlbWVudCBv
dXIgV2tDb250ZXh0RG93bmxvYWRDbGllbnQgYW5kIHRoZSBuZWVkZWQgY2FsbGJhY2tzLgorICAg
ICAgICBXZSBhbHNvIGFkZGVkIEFQSXMgYnkgZXhwb3NpbmcgUVdlYkRvd25sb2FkSXRlbS4gT2Jq
ZWN0cyBmcm9tIHRoaXMgdHlwZQorICAgICAgICBoYXZlIHRoZWlyIG93bmVyc2hpcCBoYW5kbGVk
IGJ5IFF0V2ViUGFnZVByb3h5IGFuZCB3aWxsIGJlIGNyZWF0ZWQgb3IKKyAgICAgICAgZGVzdHJv
eWVkIGFzIG5lZWRlZC4gQ2xhc3NlcyBpbXBsZW1lbnRpbmcgVmlld0ludGVyZmFjZSAoUURlc2t0
b3BXZWJWaWV3UHJpdmF0ZQorICAgICAgICBhbmQgVG91Y2hWaWV3SW50ZXJmYWNlKSB3aWxsIHJl
Y2VpdmUgYSBzaWduYWwgKGRvd25sb2FkU3RhcnRlZCkgd2l0aCBhIHBvaW50ZXIKKyAgICAgICAg
dG8gdGhlIHJlY2VudGx5IGNyZWF0ZWQgUVdlYkRvd25sb2FkSXRlbSBqdXN0IHNvIHRoZXkgY2Fu
IGNvbm5lY3QgdGhlIHByb3BlcgorICAgICAgICBzaWduYWxzIGFuZCBzbG90cy4gQnkgZG9pbmcg
dGhhdCB0aGV5IGNhbiBoYXZlIHRoZSBwcm9ncmVzcyBvZiBhIGRvd25sb2FkLAorICAgICAgICBj
YW5jZWwgaXQsIGtub3cgd2hlbiBpdCBpcyBmaW5pc2hlZCBvciBpZiBpdCBmYWlscy4KKyAgICAg
ICAgUVdlYkRvd25sb2FkSXRlbSB3YXMgYWxzbyBleHBvc2VkIGluIFFNTC4KKworICAgICAgICAq
IFNoYXJlZC9xdC9XZWJDb3JlQXJndW1lbnRDb2RlcnNRdC5jcHA6CisgICAgICAgIChDb3JlSVBD
Ojo6OmVuY29kZSk6CisgICAgICAgIChDb3JlSVBDOjo6OmRlY29kZSk6CisgICAgICAgIEltcGxl
bWVudCBzZXJpYWxpemF0aW9uIG9mIFJlc291cmNlUmVzcG9uc2UuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL3F0L1dLVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0
b3B3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OmNob29zZURl
c3RpbmF0aW9uRmlsZSk6CisgICAgICAgIChRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpkb3dubG9h
ZFN0YXJ0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3Lmg6
IEFkZCBzaWduYWwgZG93bmxvYWRTdGFydGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQv
cWRlc2t0b3B3ZWJ2aWV3X3AuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FtbHBsdWdp
bi9wbHVnaW4uY3BwOgorICAgICAgICAoV2ViS2l0MlFtbFBsdWdpbjo6cmVnaXN0ZXJUeXBlcyk6
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F3ZWJkb3dubG9hZGl0ZW0uY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFFXZWJEb3dubG9hZEl0ZW1Qcml2YXRlOjpRV2ViRG93bmxvYWRJdGVtUHJp
dmF0ZSk6CisgICAgICAgIChRV2ViRG93bmxvYWRJdGVtOjpRV2ViRG93bmxvYWRJdGVtKToKKyAg
ICAgICAgKFFXZWJEb3dubG9hZEl0ZW06On5RV2ViRG93bmxvYWRJdGVtKToKKyAgICAgICAgKFFX
ZWJEb3dubG9hZEl0ZW06OnNvdXJjZVVybCk6CisgICAgICAgIChRV2ViRG93bmxvYWRJdGVtOjpk
ZXN0aW5hdGlvblBhdGgpOgorICAgICAgICAoUVdlYkRvd25sb2FkSXRlbTo6bWltZVR5cGUpOgor
ICAgICAgICAoUVdlYkRvd25sb2FkSXRlbTo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKToKKyAgICAg
ICAgKFFXZWJEb3dubG9hZEl0ZW06OnRvdGFsQnl0ZXNSZWNlaXZlZCk6CisgICAgICAgIChRV2Vi
RG93bmxvYWRJdGVtOjpjYW5jZWwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdlYmRv
d25sb2FkaXRlbS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F3ZWJkb3du
bG9hZGl0ZW1fcC5oOiBBZGRlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdlYmVy
cm9yLmNwcDoKKyAgICAgICAgKFFXZWJFcnJvcjo6ZGVzY3JpcHRpb24pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvcXQvcXdlYmVycm9yLmg6CisgICAgICAgIEFkZCBEb3dubG9hZCBlcnJvciBo
YW5kbGluZyB0byBRV2ViRXJyb3IgYW5kIGEgbmV3IEFQSQorICAgICAgICB0byByZXRyaWV2ZSB0
aGUgZXJyb3IgZGVzY3JpcHRpb24gZnJvbSB0aGUgb3JpZ2luYWwgUmVzb3VyY2VFcnJvci4KKyAg
ICAgICAgQWxzbywgaXQgbm93IGhhcyBRV2ViRG93bmxvYWRJdGVtOjpEb3dubG9hZEVycm9yIGVy
cm9yQ29kZUFzRG93bmxvYWRFcnJvcigpCisgICAgICAgIHRoYXQgcmV0dXJucyB0aGUgZXJyb3Ig
Y29kZSBhcyBhIERvd25sb2FkRXJyb3IuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvQ2xpZW50
SW1wbC5jcHA6CisgICAgICAgIChxdF93a19kaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAo
cXRfd2tfZGlkQ3JlYXRlRGVzdGluYXRpb24pOgorICAgICAgICAocXRfd2tfZGlkRmluaXNoRG93
bmxvYWQpOgorICAgICAgICAocXRfd2tfZGlkRmFpbERvd25sb2FkKToKKyAgICAgICAgKHF0X3dr
X2RlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKToKKyAgICAgICAgKHF0X3dr
X2RpZFJlY2VpdmVEYXRhRm9yRG93bmxvYWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9DbGll
bnRJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcDoKKyAg
ICAgICAgKFF0V2ViUGFnZVByb3h5Ojppbml0KToKKyAgICAgICAgKFF0V2ViUGFnZVByb3h5Ojpk
b3dubG9hZFJlY2VpdmVkUmVzcG9uc2UpOgorICAgICAgICAoUXRXZWJQYWdlUHJveHk6OmRvd25s
b2FkQ3JlYXRlZERlc3RpbmF0aW9uKToKKyAgICAgICAgKFF0V2ViUGFnZVByb3h5Ojpkb3dubG9h
ZEZpbmlzaGVkKToKKyAgICAgICAgKFF0V2ViUGFnZVByb3h5Ojpkb3dubG9hZEZhaWxlZCk6Cisg
ICAgICAgIChRdFdlYlBhZ2VQcm94eTo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmls
ZW5hbWUpOgorICAgICAgICAoUXRXZWJQYWdlUHJveHk6OmRvd25sb2FkRGF0YVJlY2VpdmVkKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaDoKKyAgICAgICAgSW1wbGVt
ZW50IG91ciBXS0NvbnRleHREb3dubG9hZENsaWVudCBhbmQgaXRzIGNhbGxiYWNrcy4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2UuaDoKKyAgICAgICAgKFdlYktp
dDo6VG91Y2hWaWV3SW50ZXJmYWNlOjpjaG9vc2VEZXN0aW5hdGlvbkZpbGUpOgorICAgICAgICAo
V2ViS2l0OjpUb3VjaFZpZXdJbnRlcmZhY2U6OmRvd25sb2FkU3RhcnRlZCk6CisgICAgICAgICog
VUlQcm9jZXNzL3F0L1ZpZXdJbnRlcmZhY2UuaDoKKyAgICAgICAgQWRkIHRoZSBwcml2YXRlIEFQ
SSBjaG9vc2VEZXN0aW5hdGlvbkZpbGUgd2l0aCBhbiBlbXB0eSBpbXBsZW1lbnRhdGlvbgorICAg
ICAgICB0byBUb3VjaFZpZXdJbnRlcmZhY2UgYW5kIHRoZSBwdWJsaWMgc2lnbmFsIGRvd25sb2Fk
U3RhcnRlZC4KKworICAgICAgICAqIFdlYktpdDJBUEkucHJpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvRG93bmxvYWRzL3F0L0Rvd25sb2FkUXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9h
ZDo6c3RhcnRXaXRoSGFuZGxlKToKKyAgICAgICAgV2Ugd2VyZSBtaXNzaW5nIFF0RmlsZURvd25s
b2FkZXI6OnN0YXJ0KCkgY2FsbCBoZXJlLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9Eb3dubG9h
ZHMvcXQvUXRGaWxlRG93bmxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlF0RmlsZURvd25s
b2FkZXI6OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6UXRGaWxlRG93bmxvYWRlcjo6ZGV0ZXJt
aW5lRmlsZW5hbWUpOgorICAgICAgICBDYWxsaW5nIG9uUmVhZHlSZWFkKCkgaGVyZSB3YXMgdW5u
ZWNlc3NhcnkgYW5kIGl0IHdhcyB0cmlnZ2VyaW5nIHRoZSBvdmVyYWxsCisgICAgICAgIGRvd25s
b2FkIHByb2Nlc3MgZXZlbiBiZWZvcmUgRG93bmxvYWRNYW5hZ2VyIGZpbmlzaGVkIHN0YXJ0RG93
bmxvYWQoKS4gVGhpcworICAgICAgICB3YXMgbGVhZGluZyB0byBhIERvd25sb2FkTWFuYWdlciB3
aXRoIGFuIGVtcHR5IGxpc3Qgb2YgZG93bmxvYWRzIGFsd2F5cy4KKwogMjAxMS0wOS0yOCAgR3Vz
dGF2byBOb3JvbmhhIFNpbHZhICA8Z3VzdGF2by5ub3JvbmhhQGNvbGxhYm9yYS5jb20+CiAKICAg
ICAgICAgT25lIG1vcmUgc2hvdCBhdCBmaXhpbmcgR1RLKywgdGhpcyBzZWVtcyB0byBtYWtlIHRo
ZSBkZXBlbmRlbmNpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9XZWJD
b3JlQXJndW1lbnRDb2RlcnNRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzUXQuY3BwCmluZGV4IDIzZjk5ZTlmNWFiNGRhN2MzMmVmYjI5NDFiZGIx
NjFiYWI3NTk1NjUuLjFmYzE1YzU5NmY2ZmNmN2Q5ZjhkMzNmZGVlYjMzYzFlZWUyODZhN2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9XZWJDb3JlQXJndW1lbnRDb2RlcnNR
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1dlYkNvcmVBcmd1bWVudENvZGVy
c1F0LmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogCi0jaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1l
bnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3Bv
bnNlLmg+CkBAIC01OCwxNSArNTcsMzcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVx
dWVzdD46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlUmUKIAogdm9p
ZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVy
KiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlKQogewot
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNlUmVzcG9u
c2UudXJsKCkuc3RyaW5nKCkpOworICAgIGVuY29kZXItPmVuY29kZShyZXNvdXJjZVJlc3BvbnNl
Lm1pbWVUeXBlKCkpOworICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNfY2FzdDxpbnQ2NF90Pihy
ZXNvdXJjZVJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpKSk7CisgICAgZW5jb2Rlci0+
ZW5jb2RlKHJlc291cmNlUmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpKTsKIH0KIAogYm9vbCBB
cmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBk
ZWNvZGVyLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlKQogewotICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKIAotICAgIC8vIEZJ
WE1FOiBEaXR0by4KLSAgICByZXNvdXJjZVJlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZSgpOwor
ICAgIFN0cmluZyB1cmw7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUodXJsKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIHJlc3BvbnNlLnNldFVSTChLVVJMKFdlYkNvcmU6OlBhcnNlZFVS
TFN0cmluZywgdXJsKSk7CisKKyAgICBTdHJpbmcgbWltZVR5cGU7CisgICAgaWYgKCFkZWNvZGVy
LT5kZWNvZGUobWltZVR5cGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmVzcG9uc2Uu
c2V0TWltZVR5cGUobWltZVR5cGUpOworCisgICAgaW50NjRfdCBjb250ZW50TGVuZ3RoOworICAg
IGlmICghZGVjb2Rlci0+ZGVjb2RlKGNvbnRlbnRMZW5ndGgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgcmVzcG9uc2Uuc2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKGNvbnRlbnRMZW5ndGgp
OworCisgICAgU3RyaW5nIHRleHRFbmNvZGluZ05hbWU7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNv
ZGUodGV4dEVuY29kaW5nTmFtZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXNwb25z
ZS5zZXRUZXh0RW5jb2RpbmdOYW1lKHRleHRFbmNvZGluZ05hbWUpOworCisgICAgcmVzb3VyY2VS
ZXNwb25zZSA9IHJlc3BvbnNlOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L1dLVmlldy5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9XS1ZpZXcuaAppbmRleCA4NGJhMWY3NDZhNDNkOTE3ZWZjMzBmMjc4
ZWUzMjY3ZDM1Yzg2ZjhjLi5iNmViZmRiYjM3MDRkMWNiNTQxMTkyMjk2NTFkYjQxMTY5ODdkYWQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L1dLVmlldy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvV0tWaWV3LmgKQEAgLTI0LDYgKzI0
LDcgQEAKICNpbmNsdWRlIDxXZWJLaXQyL3FkZXNrdG9wd2Vidmlldy5oPgogI2luY2x1ZGUgPFdl
YktpdDIvcXRvdWNod2Vidmlldy5oPgogI2luY2x1ZGUgPFdlYktpdDIvcXRvdWNod2VicGFnZS5o
PgorI2luY2x1ZGUgPFdlYktpdDIvcXdlYmRvd25sb2FkaXRlbS5oPgogI2luY2x1ZGUgPFdlYktp
dDIvcXdlYm5hdmlnYXRpb25jb250cm9sbGVyLmg+CiAKICNlbmRpZiAvKiBXS1ZpZXdfaCAqLwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZp
ZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcu
Y3BwCmluZGV4IDM4MDIxNGMxZWQ0YWQ3NzgwNGMwNGVmMmI3Mjk1NmFlY2FlOTY1NzQuLmZhODJm
MzE0ZWMwOTM5MzUzNWJiODJhZTZmYWNhOTU1NTE3ZTljOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHAKQEAgLTIxLDYgKzIx
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJxZGVza3RvcHdlYnZpZXcuaCIK
ICNpbmNsdWRlICJxZGVza3RvcHdlYnZpZXdfcC5oIgorI2luY2x1ZGUgInF3ZWJkb3dubG9hZGl0
ZW0uaCIKICNpbmNsdWRlICJxd2ViZXJyb3IuaCIKIAogI2luY2x1ZGUgPFFHcmFwaGljc1NjZW5l
UmVzaXplRXZlbnQ+CkBAIC0zMSw2ICszMiw3IEBACiAjaW5jbHVkZSA8UXREZWNsYXJhdGl2ZS9x
c2dpdGVtLmg+CiAjaW5jbHVkZSA8UXREZWNsYXJhdGl2ZS9xc2d2aWV3Lmg+CiAjaW5jbHVkZSA8
UXRHdWkvUUN1cnNvcj4KKyNpbmNsdWRlIDxRdEd1aS9RRGVza3RvcFNlcnZpY2VzPgogI2luY2x1
ZGUgPFF0R3VpL1FGaWxlRGlhbG9nPgogI2luY2x1ZGUgPFF0R3VpL1FGb2N1c0V2ZW50PgogI2lu
Y2x1ZGUgPFF0R3VpL1FHcmFwaGljc1NjZW5lRXZlbnQ+CkBAIC00NDAsNiArNDQyLDIyIEBAIHZv
aWQgUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6ZGlkTW91c2VNb3ZlT3ZlckVsZW1lbnQoY29uc3Qg
UVVybCYgbGlua1VSTCwgY29uc3QKICAgICBlbWl0IHEtPmxpbmtIb3ZlcmVkKGxhc3RIb3ZlcmVk
VVJMLCBsYXN0SG92ZXJlZFRpdGxlKTsKIH0KIAorUVN0cmluZyBRRGVza3RvcFdlYlZpZXdQcml2
YXRlOjpjaG9vc2VEZXN0aW5hdGlvbkZpbGUoY29uc3QgUVN0cmluZyYgc3VnZ2VzdGVkRmlsZU5h
bWUpCit7CisgICAgUVN0cmluZyBkb2N1bWVudHNGb2xkZXIgPSBRRGVza3RvcFNlcnZpY2VzOjpk
aXNwbGF5TmFtZShRRGVza3RvcFNlcnZpY2VzOjpEb2N1bWVudHNMb2NhdGlvbik7CisKKyAgICBR
U3RyaW5nIGRlc3RpbmF0aW9uID0gUUZpbGVEaWFsb2c6OmdldFNhdmVGaWxlTmFtZShxLT5jYW52
YXMoKSwgdHIoIlNhdmUgRmlsZSIpLCBkb2N1bWVudHNGb2xkZXIuYXBwZW5kKHN1Z2dlc3RlZEZp
bGVOYW1lKSk7CisgICAgcmV0dXJuIGRlc3RpbmF0aW9uOworfQorCit2b2lkIFFEZXNrdG9wV2Vi
Vmlld1ByaXZhdGU6OmRvd25sb2FkU3RhcnRlZChRV2ViRG93bmxvYWRJdGVtKiBkb3dubG9hZEl0
ZW0pCit7CisgICAgaWYgKCFkb3dubG9hZEl0ZW0pCisgICAgICAgIHJldHVybjsKKworICAgIGVt
aXQgcS0+ZG93bmxvYWRTdGFydGVkKGRvd25sb2FkSXRlbSk7Cit9CisKIHN0YXRpYyBQb2xpY3lJ
bnRlcmZhY2U6OlBvbGljeUFjdGlvbiB0b1BvbGljeUFjdGlvbihRRGVza3RvcFdlYlZpZXc6Ok5h
dmlnYXRpb25Qb2xpY3kgcG9saWN5KQogewogICAgIHN3aXRjaCAocG9saWN5KSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuaAppbmRleCBj
MWZiNTlmYWI1MjJiNWMzODU5ZmJiOTQyYzIxY2Q2ZTQ4NTFlMWNlLi42M2QxYjI0MjU1OTk4ZTMz
NzMwZmZjYjZmNmNhMWYxNGNjMzJiYzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRl
IDxXZWJLaXQyL1dLQmFzZS5oPgogCiBjbGFzcyBRRGVza3RvcFdlYlZpZXdQcml2YXRlOworY2xh
c3MgUVdlYkRvd25sb2FkSXRlbTsKIGNsYXNzIFFXZWJOYXZpZ2F0aW9uQ29udHJvbGxlcjsKIAog
UVRfQkVHSU5fTkFNRVNQQUNFCkBAIC02NSw3ICs2Niw4IEBAIHB1YmxpYzoKICAgICBlbnVtIEVy
cm9yVHlwZSB7CiAgICAgICAgIEVuZ2luZUVycm9yLAogICAgICAgICBOZXR3b3JrRXJyb3IsCi0g
ICAgICAgIEh0dHBFcnJvcgorICAgICAgICBIdHRwRXJyb3IsCisgICAgICAgIERvd25sb2FkRXJy
b3IKICAgICB9OwogCiAgICAgUURlc2t0b3BXZWJWaWV3KFFTR0l0ZW0qIHBhcmVudCA9IDApOwpA
QCAtODksNiArOTEsNyBAQCBRX1NJR05BTFM6CiAgICAgdm9pZCBsb2FkUHJvZ3Jlc3NDaGFuZ2Vk
KGludCBwcm9ncmVzcyk7CiAgICAgdm9pZCB1cmxDaGFuZ2VkKGNvbnN0IFFVcmwmIHVybCk7CiAg
ICAgdm9pZCBsaW5rSG92ZXJlZChjb25zdCBRVXJsJiB1cmwsIGNvbnN0IFFTdHJpbmcmIHRpdGxl
KTsKKyAgICB2b2lkIGRvd25sb2FkU3RhcnRlZChRV2ViRG93bmxvYWRJdGVtKiBkb3dubG9hZEl0
ZW0pOwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGtleVByZXNzRXZlbnQoUUtleUV2
ZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNr
dG9wd2Vidmlld19wLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9w
d2Vidmlld19wLmgKaW5kZXggMDU0YTlhNjJiMjgwZDI4MzcxYTA2YzU2ZWUxY2M4NjljOWZhN2Mw
MC4uYWJkMTE4MmM0Mjc1MzkyODNiMmNhYjdkMzhjNzI4ZWRmMmY2NTY3OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXdfcC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3X3AuaApAQCAt
ODMsNiArODMsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgUUpTRW5naW5lKiBlbmdpbmUoKTsK
IAogICAgIHZpcnR1YWwgdm9pZCBjaG9vc2VGaWxlcyhXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVy
UmVmLCBjb25zdCBRU3RyaW5nTGlzdCYgc2VsZWN0ZWRGaWxlTmFtZXMsIFZpZXdJbnRlcmZhY2U6
OkZpbGVDaG9vc2VyVHlwZSk7CisgICAgdmlydHVhbCBRU3RyaW5nIGNob29zZURlc3RpbmF0aW9u
RmlsZShjb25zdCBRU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSk7CisgICAgdmlydHVhbCB2b2lk
IGRvd25sb2FkU3RhcnRlZChRV2ViRG93bmxvYWRJdGVtKiBkb3dubG9hZEl0ZW0pOwogCiAgICAg
dmlydHVhbCB2b2lkIGRpZE1vdXNlTW92ZU92ZXJFbGVtZW50KGNvbnN0IFFVcmwmLCBjb25zdCBR
U3RyaW5nJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cW1scGx1Z2luL3BsdWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Ft
bHBsdWdpbi9wbHVnaW4uY3BwCmluZGV4IDg1ZDdkMDhlYmY3ZmY2ZjBkMGRhYzU3ZDJmZjg3MjBk
MmRlMDRhMjYuLmFiMWY2NjMyOGY5MzY4NzcxNTA5NjMyZTYyMTdkZjdmN2UwMThmMGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcW1scGx1Z2luL3BsdWdpbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xbWxwbHVnaW4vcGx1Z2lu
LmNwcApAQCAtMjAsNiArMjAsNyBAQAogI2luY2x1ZGUgInFkZXNrdG9wd2Vidmlldy5oIgogI2lu
Y2x1ZGUgInF0b3VjaHdlYnBhZ2UuaCIKICNpbmNsdWRlICJxdG91Y2h3ZWJ2aWV3LmgiCisjaW5j
bHVkZSAicXdlYmRvd25sb2FkaXRlbS5oIgogI2luY2x1ZGUgInF3ZWJuYXZpZ2F0aW9uY29udHJv
bGxlci5oIgogCiAjaW5jbHVkZSA8UXREZWNsYXJhdGl2ZS9xZGVjbGFyYXRpdmUuaD4KQEAgLTM5
LDYgKzQwLDcgQEAgcHVibGljOgogICAgICAgICBxbWxSZWdpc3RlclVuY3JlYXRhYmxlVHlwZTxR
V2ViTmF2aWdhdGlvbkNvbnRyb2xsZXI+KHVyaSwgNSwgMCwgIk5hdmlnYXRpb25Db250cm9sbGVy
IiwgUU9iamVjdDo6dHIoIkNhbm5vdCBjcmVhdGUgc2VwYXJhdGUgaW5zdGFuY2Ugb2YgTmF2aWdh
dGlvbkNvbnRyb2xsZXIiKSk7CiAgICAgICAgIHFtbFJlZ2lzdGVyVW5jcmVhdGFibGVUeXBlPFFU
b3VjaFdlYlBhZ2U+KHVyaSwgNSwgMCwgIlRvdWNoV2ViUGFnZSIsIFFPYmplY3Q6OnRyKCJDYW5u
b3QgY3JlYXRlIHNlcGFyYXRlIGluc3RhbmNlIG9mIFRvdWNoV2ViUGFnZSwgdXNlIFRvdWNoV2Vi
VmlldyIpKTsKICAgICAgICAgcW1sUmVnaXN0ZXJVbmNyZWF0YWJsZVR5cGU8UU5ldHdvcmtSZXBs
eT4odXJpLCA1LCAwLCAiTmV0d29ya1JlcGx5IiwgUU9iamVjdDo6dHIoIkNhbm5vdCBjcmVhdGUg
c2VwYXJhdGUgaW5zdGFuY2Ugb2YgTmV0d29ya1JlcGx5IikpOworICAgICAgICBxbWxSZWdpc3Rl
clVuY3JlYXRhYmxlVHlwZTxRV2ViRG93bmxvYWRJdGVtPih1cmksIDUsIDAsICJEb3dubG9hZEl0
ZW0iLCBRT2JqZWN0Ojp0cigiQ2Fubm90IGNyZWF0ZSBzZXBhcmF0ZSBpbnN0YW5jZSBvZiBEb3du
bG9hZEl0ZW0iKSk7CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9xd2ViZG93bmxvYWRpdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcXdlYmRvd25sb2FkaXRlbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmJhNzQ4NGYzZWUz
ZDg2OWFlMTIxNjQ5MmIyZGQ2M2RkMTA2MTAwYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYmRvd25sb2FkaXRlbS5jcHAKQEAgLTAsMCArMSw3
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3Ig
aXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJx
d2ViZG93bmxvYWRpdGVtLmgiCisKKyNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCisjaW5jbHVk
ZSAicXdlYmRvd25sb2FkaXRlbV9wLmgiCisKK1FXZWJEb3dubG9hZEl0ZW1Qcml2YXRlOjpRV2Vi
RG93bmxvYWRJdGVtUHJpdmF0ZShRV2ViRG93bmxvYWRJdGVtKiBxcSkKKyAgICA6IHEocXEpCisg
ICAgLCBkb3dubG9hZFByb3h5KDApCisgICAgLCBleHBlY3RlZENvbnRlbnRMZW5ndGgoMCkKKyAg
ICAsIHRvdGFsQnl0ZXNSZWNlaXZlZCgwKQoreworfQorCitRV2ViRG93bmxvYWRJdGVtOjpRV2Vi
RG93bmxvYWRJdGVtKFFPYmplY3QqIHBhcmVudCkKKyAgICA6IFFPYmplY3QocGFyZW50KQorICAg
ICwgZChuZXcgUVdlYkRvd25sb2FkSXRlbVByaXZhdGUodGhpcykpCit7Cit9CisKK1FXZWJEb3du
bG9hZEl0ZW06On5RV2ViRG93bmxvYWRJdGVtKCkKK3sKKyAgICBkZWxldGUgZDsKK30KKworUVVy
bCBRV2ViRG93bmxvYWRJdGVtOjpzb3VyY2VVcmwoKSBjb25zdAoreworICAgIHJldHVybiBkLT5z
b3VyY2VVcmw7Cit9CisKK1FTdHJpbmcgUVdlYkRvd25sb2FkSXRlbTo6ZGVzdGluYXRpb25QYXRo
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZC0+ZGVzdGluYXRpb25QYXRoOworfQorCitRU3RyaW5n
IFFXZWJEb3dubG9hZEl0ZW06Om1pbWVUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZC0+bWlt
ZVR5cGU7Cit9CisKK3F1aW50NjQgUVdlYkRvd25sb2FkSXRlbTo6ZXhwZWN0ZWRDb250ZW50TGVu
Z3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZC0+ZXhwZWN0ZWRDb250ZW50TGVuZ3RoOworfQor
CitxdWludDY0IFFXZWJEb3dubG9hZEl0ZW06OnRvdGFsQnl0ZXNSZWNlaXZlZCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGQtPnRvdGFsQnl0ZXNSZWNlaXZlZDsKK30KKwordm9pZCBRV2ViRG93bmxv
YWRJdGVtOjpjYW5jZWwoKQoreworICAgIGQtPmRvd25sb2FkUHJveHktPmNhbmNlbCgpOworfQor
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJkb3dubG9h
ZGl0ZW0uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYmRvd25sb2FkaXRl
bS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmNmODkzZTQ2ZmU4NTM0N2NjODZkZDM5NWE0ZjRiM2ZkNWNiZGZjYjMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJk
b3dubG9hZGl0ZW0uaApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dy
YW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRl
ZiBxd2ViZG93bmxvYWRpdGVtX2gKKyNkZWZpbmUgcXdlYmRvd25sb2FkaXRlbV9oCisKKyNpbmNs
dWRlICJxd2Via2l0Z2xvYmFsLmgiCisjaW5jbHVkZSA8UU9iamVjdD4KKyNpbmNsdWRlIDxRVXJs
PgorCitjbGFzcyBRV2ViRG93bmxvYWRJdGVtUHJpdmF0ZTsKK2NsYXNzIFFXZWJFcnJvcjsKKwor
UVRfQkVHSU5fTkFNRVNQQUNFCitjbGFzcyBRU3RyaW5nOworUVRfRU5EX05BTUVTUEFDRQorCitj
bGFzcyBRV0VCS0lUX0VYUE9SVCBRV2ViRG93bmxvYWRJdGVtIDogcHVibGljIFFPYmplY3Qgewor
ICAgIFFfT0JKRUNUCisgICAgUV9QUk9QRVJUWShxdWludDY0IGNvbnRlbnRMZW5ndGggUkVBRCBl
eHBlY3RlZENvbnRlbnRMZW5ndGggQ09OU1RBTlQgRklOQUwpCisgICAgUV9QUk9QRVJUWShRU3Ry
aW5nIGRlc3RpbmF0aW9uIFJFQUQgZGVzdGluYXRpb25QYXRoIENPTlNUQU5UIEZJTkFMKQorICAg
IFFfUFJPUEVSVFkocXVpbnQ2NCB0b3RhbEJ5dGVzUmVjZWl2ZWQgUkVBRCB0b3RhbEJ5dGVzUmVj
ZWl2ZWQgTk9USUZZIGRhdGFSZWNlaXZlZCBGSU5BTCkKKyAgICBRX1BST1BFUlRZKFFVcmwgdXJs
IFJFQUQgc291cmNlVXJsIENPTlNUQU5UIEZJTkFMKQorICAgIFFfRU5VTVMoRG93bmxvYWRFcnJv
cikKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5RV2ViRG93bmxvYWRJdGVtKCk7CisKKyAgICBlbnVt
IERvd25sb2FkRXJyb3IgeworICAgICAgICBBYm9ydGVkID0gMCwKKyAgICAgICAgQ2Fubm90V3Jp
dGVUb0ZpbGUsCisgICAgICAgIENhbm5vdE9wZW5GaWxlLAorICAgICAgICBGaWxlQWxyZWFkeUV4
aXN0cywKKyAgICAgICAgQ2FuY2VsbGVkQnlDYWxsZXIsCisgICAgICAgIENhbm5vdERldGVybWlu
ZUZpbGVuYW1lLAorICAgICAgICBOZXR3b3JrRmFpbHVyZQorICAgIH07CisKKyAgICBRVXJsIHNv
dXJjZVVybCgpIGNvbnN0OworICAgIFFTdHJpbmcgZGVzdGluYXRpb25QYXRoKCkgY29uc3Q7Cisg
ICAgUVN0cmluZyBtaW1lVHlwZSgpIGNvbnN0OworICAgIHF1aW50NjQgZXhwZWN0ZWRDb250ZW50
TGVuZ3RoKCkgY29uc3Q7CisgICAgcXVpbnQ2NCB0b3RhbEJ5dGVzUmVjZWl2ZWQoKSBjb25zdDsK
KworcHVibGljIFFfU0xPVFM6CisgICAgdm9pZCBjYW5jZWwoKTsKKworUV9TSUdOQUxTOgorICAg
IHZvaWQgZGVzdGluYXRpb25GaWxlQ3JlYXRlZChjb25zdCBRU3RyaW5nJiBkZXN0aW5hdGlvblBh
dGgpOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKHF1aW50NjQgYnl0ZXNSZWNlaXZlZCk7CisgICAg
dm9pZCBmaW5pc2hlZCgpOworICAgIHZvaWQgZmFpbGVkKFFXZWJEb3dubG9hZEl0ZW06OkRvd25s
b2FkRXJyb3IgZXJyb3IsIGNvbnN0IFFVcmwmIHVybCwgY29uc3QgUVN0cmluZyYgZGVzY3JpcHRp
b24pOworCitwcml2YXRlOgorICAgIFFXZWJEb3dubG9hZEl0ZW0oUU9iamVjdCogcGFyZW50ID0g
MCk7CisgICAgUVdlYkRvd25sb2FkSXRlbVByaXZhdGUqIGQ7CisKKyAgICBmcmllbmQgY2xhc3Mg
UXRXZWJQYWdlUHJveHk7Cit9OworCisjZW5kaWYgLyogcXdlYmRvd25sb2FkaXRlbV9oICovCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJkb3dubG9hZGl0
ZW1fcC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxvYWRpdGVt
X3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xNDFmNmE2ZDlmNzlmNzMxZDQzNjhhYTRmYTBmMjkzNGJjM2M5Zjgy
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2Vi
ZG93bmxvYWRpdGVtX3AuaApAQCAtMCwwICsxLDQ3IEBACisvKgorICAgIENvcHlyaWdodCAoQykg
MjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworICAg
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisK
KyNpZm5kZWYgcXdlYmRvd25sb2FkaXRlbV9wX2gKKyNkZWZpbmUgcXdlYmRvd25sb2FkaXRlbV9w
X2gKKworI2luY2x1ZGUgInF3ZWJkb3dubG9hZGl0ZW0uaCIKKyNpbmNsdWRlIDxRVXJsPgorCitj
bGFzcyBRdFdlYlBhZ2VQcm94eTsKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgRG93bmxvYWRQ
cm94eTsKK30KKworY2xhc3MgUVdlYkRvd25sb2FkSXRlbVByaXZhdGUgeworcHVibGljOgorICAg
IFFXZWJEb3dubG9hZEl0ZW1Qcml2YXRlKFFXZWJEb3dubG9hZEl0ZW0qKTsKKworICAgIFFXZWJE
b3dubG9hZEl0ZW0qIHE7CisKKyAgICBXZWJLaXQ6OkRvd25sb2FkUHJveHkqIGRvd25sb2FkUHJv
eHk7CisKKyAgICBRVXJsIHNvdXJjZVVybDsKKyAgICBRU3RyaW5nIGRlc3RpbmF0aW9uUGF0aDsK
KyAgICBRU3RyaW5nIG1pbWVUeXBlOworICAgIHF1aW50NjQgZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
OworICAgIHF1aW50NjQgdG90YWxCeXRlc1JlY2VpdmVkOworfTsKKworI2VuZGlmIC8qIHF3ZWJk
b3dubG9hZGl0ZW1fcF9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3F3ZWJlcnJvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3
ZWJlcnJvci5jcHAKaW5kZXggYTVmOGQ5ODk1NzVlMzI1YjBhNmU5YzQxYTM4Y2Y0OThjOGZiYmE2
NC4uYjAyOGE2MzEzMGZlZDE4OGEzM2IzZjkwNWM5OTc1ZTg4ZTgzMjQ0MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViZXJyb3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYmVycm9yLmNwcApAQCAtODAsMyArODAsOCBA
QCBRVXJsIFFXZWJFcnJvcjo6dXJsKCkgY29uc3QKICAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4g
ZmFpbGluZ1VSTCA9IGFkb3B0V0soV0tFcnJvckNvcHlGYWlsaW5nVVJMKGQtPmVycm9yLmdldCgp
KSk7CiAgICAgcmV0dXJuIFdLVVJMQ29weVFVcmwoZmFpbGluZ1VSTC5nZXQoKSk7CiB9CisKK1FT
dHJpbmcgUVdlYkVycm9yOjpkZXNjcmlwdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdLU3Ry
aW5nQ29weVFTdHJpbmcoV0tFcnJvckNvcHlMb2NhbGl6ZWREZXNjcmlwdGlvbihkLT5lcnJvci5n
ZXQoKSkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
d2ViZXJyb3IuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYmVycm9yLmgK
aW5kZXggYjk3ODBhZTNiNWEyNmE5NTgyNWU4NWFiZDFmNjZjNTI0ZGM4NDk2MC4uMDFlY2E3ZDMy
NDcyMTFlNjNhMzExNmNmZmE3NjNkMWNjMzNmNjI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViZXJyb3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3F3ZWJlcnJvci5oCkBAIC0yMSw2ICsyMSw3IEBACiAjaWZuZGVmIHF3ZWJl
cnJvcl9oCiAjZGVmaW5lIHF3ZWJlcnJvcl9oCiAKKyNpbmNsdWRlICJxd2ViZG93bmxvYWRpdGVt
LmgiCiAjaW5jbHVkZSAicXdlYmtpdGdsb2JhbC5oIgogI2luY2x1ZGUgPFFTaGFyZWREYXRhUG9p
bnRlcj4KICNpbmNsdWRlIDxRdE5ldHdvcmsvUU5ldHdvcmtSZXBseT4KQEAgLTQzLDkgKzQ0LDEx
IEBAIHB1YmxpYzoKICAgICBUeXBlIHR5cGUoKSBjb25zdDsKICAgICBRVXJsIHVybCgpIGNvbnN0
OwogICAgIGludCBlcnJvckNvZGUoKSBjb25zdDsKKyAgICBRU3RyaW5nIGRlc2NyaXB0aW9uKCkg
Y29uc3Q7CiAKICAgICBpbnQgZXJyb3JDb2RlQXNIdHRwU3RhdHVzQ29kZSgpIGNvbnN0IHsgcmV0
dXJuIGVycm9yQ29kZSgpOyB9CiAgICAgUU5ldHdvcmtSZXBseTo6TmV0d29ya0Vycm9yIGVycm9y
Q29kZUFzTmV0d29ya0Vycm9yKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UU5ldHdvcmtS
ZXBseTo6TmV0d29ya0Vycm9yPihlcnJvckNvZGUoKSk7IH0KKyAgICBRV2ViRG93bmxvYWRJdGVt
OjpEb3dubG9hZEVycm9yIGVycm9yQ29kZUFzRG93bmxvYWRFcnJvcigpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PFFXZWJEb3dubG9hZEl0ZW06OkRvd25sb2FkRXJyb3I+KGVycm9yQ29kZSgp
KTsgfQogCiAgICAgUVdlYkVycm9yKGNvbnN0IFFXZWJFcnJvciYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5jcHAKaW5kZXggODM1OWEwMmIxNzU2MGVmYjMwNzky
MTE2MzU5MmVlNDM5NWU0N2M1ZC4uNTRlZmUxMjkzMTI4OTRjY2NiYjU3OTdjZjY0ZDZiM2Q1MTE4
NGE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0NsaWVudEltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmNwcApAQCAt
MjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLU3RyaW5n
UXQuaCIKICNpbmNsdWRlICJXS1VSTFF0LmgiCisjaW5jbHVkZSAicXdlYmRvd25sb2FkaXRlbS5o
IgogI2luY2x1ZGUgInF3ZWJlcnJvci5oIgogI2luY2x1ZGUgInF3ZWJlcnJvcl9wLmgiCiAjaW5j
bHVkZSA8UG9saWN5SW50ZXJmYWNlLmg+CkBAIC0yMTgsMyArMjE5LDM2IEBAIHZvaWQgcXRfd2tf
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJl
ZiBmcmFtZSwgV0tGCiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KKwordm9pZCBxdF93a19kaWRS
ZWNlaXZlUmVzcG9uc2UoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxv
YWQsIFdLVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCit7
CisgICAgdG9RdFdlYlBhZ2VQcm94eShjbGllbnRJbmZvKS0+ZG93bmxvYWRSZWNlaXZlZFJlc3Bv
bnNlKHRvSW1wbChkb3dubG9hZCksIHRvSW1wbChyZXNwb25zZSktPnJlc291cmNlUmVzcG9uc2Uo
KSk7Cit9CisKK3ZvaWQgcXRfd2tfZGlkQ3JlYXRlRGVzdGluYXRpb24oV0tDb250ZXh0UmVmIGNv
bnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLU3RyaW5nUmVmIHBhdGgsIGNvbnN0IHZv
aWQgKmNsaWVudEluZm8pCit7CisgICAgdG9RdFdlYlBhZ2VQcm94eShjbGllbnRJbmZvKS0+ZG93
bmxvYWRDcmVhdGVkRGVzdGluYXRpb24odG9JbXBsKGRvd25sb2FkKSwgV0tTdHJpbmdDb3B5UVN0
cmluZyhwYXRoKSk7Cit9CisKK3ZvaWQgcXRfd2tfZGlkRmluaXNoRG93bmxvYWQoV0tDb250ZXh0
UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQgKmNsaWVudElu
Zm8pCit7CisgICAgdG9RdFdlYlBhZ2VQcm94eShjbGllbnRJbmZvKS0+ZG93bmxvYWRGaW5pc2hl
ZCh0b0ltcGwoZG93bmxvYWQpKTsKK30KKwordm9pZCBxdF93a19kaWRGYWlsRG93bmxvYWQoV0tD
b250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLRXJyb3JSZWYgZXJy
b3IsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCit7CisgICAgUVVybCBmYWlsaW5nVXJsID0gV0tV
UkxDb3B5UVVybChXS0Vycm9yQ29weUZhaWxpbmdVUkwoZXJyb3IpKTsKKworICAgIHRvUXRXZWJQ
YWdlUHJveHkoY2xpZW50SW5mbyktPmRvd25sb2FkRmFpbGVkKHRvSW1wbChkb3dubG9hZCksIFFX
ZWJFcnJvclByaXZhdGU6OmNyZWF0ZVFXZWJFcnJvcihlcnJvcikpOworfQorCitXS1N0cmluZ1Jl
ZiBxdF93a19kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS0NvbnRleHRS
ZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tTdHJpbmdSZWYgZmlsZW5hbWUs
IGJvb2wqIGFsbG93T3ZlcndyaXRlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQoreworICAgIHJl
dHVybiB0b1F0V2ViUGFnZVByb3h5KGNsaWVudEluZm8pLT5kZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZSh0b0ltcGwoZG93bmxvYWQpLCBXS1N0cmluZ0NvcHlRU3RyaW5nKGZp
bGVuYW1lKSwgYWxsb3dPdmVyd3JpdGUpOworfQorCit2b2lkIHF0X3drX2RpZFJlY2VpdmVEYXRh
Rm9yRG93bmxvYWQoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQs
IHVpbnQ2NF90IGxlbmd0aCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKK3sKKyAgICB0b1F0V2Vi
UGFnZVByb3h5KGNsaWVudEluZm8pLT5kb3dubG9hZERhdGFSZWNlaXZlZCh0b0ltcGwoZG93bmxv
YWQpLCBsZW5ndGgpOworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0NsaWVudEltcGwu
aAppbmRleCBkZTQ2NzYwZWE2MDI2NDVkOWZkMGVkODE1OGY3ODFjZjUyNTUwMjIxLi5jNzJlNDNl
ODM3YTJlNzY5MTkyZTk5ZmI0ZmIwOTQ3NGEwYzE4OWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9DbGllbnRJbXBsLmgKQEAgLTQ2LDYgKzQ2LDE0IEBAIHZvaWQgcXRfd2tfbW91c2VE
aWRNb3ZlT3ZlckVsZW1lbnQoV0tQYWdlUmVmLCBXS0hpdFRlc3RSZXN1bHRSZWYsIFdLRXZlbnRN
b2RpZmllCiAvLyBQb2xpY3kgY2xpZW50Lgogdm9pZCBxdF93a19kZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tGcmFtZU5hdmlnYXRpb25UeXBl
LCBXS0V2ZW50TW9kaWZpZXJzLCBXS0V2ZW50TW91c2VCdXR0b24sIFdLVVJMUmVxdWVzdFJlZiwg
V0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pOwogCisvLyBEb3dubG9hZCBjbGllbnQuCit2b2lkIHF0X3drX2RpZFJlY2Vp
dmVSZXNwb25zZShXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLVVJMUmVzcG9uc2VSZWYs
IGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordm9pZCBxdF93a19kaWRDcmVhdGVEZXN0aW5hdGlv
bihXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLU3RyaW5nUmVmIHBhdGgsIGNvbnN0IHZv
aWQgKmNsaWVudEluZm8pOwordm9pZCBxdF93a19kaWRGaW5pc2hEb3dubG9hZChXS0NvbnRleHRS
ZWYsIFdLRG93bmxvYWRSZWYsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordm9pZCBxdF93a19k
aWRGYWlsRG93bmxvYWQoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBXS0Vycm9yUmVmLCBj
b25zdCB2b2lkICpjbGllbnRJbmZvKTsKK1dLU3RyaW5nUmVmIHF0X3drX2RlY2lkZURlc3RpbmF0
aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgV0tT
dHJpbmdSZWYgZmlsZW5hbWUsIGJvb2wqIGFsbG93T3ZlcndyaXRlLCBjb25zdCB2b2lkICpjbGll
bnRJbmZvKTsKK3ZvaWQgcXRfd2tfZGlkUmVjZWl2ZURhdGFGb3JEb3dubG9hZChXS0NvbnRleHRS
ZWYsIFdLRG93bmxvYWRSZWYsIHVpbnQ2NF90IGxlbmd0aCwgY29uc3Qgdm9pZCAqY2xpZW50SW5m
byk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcAppbmRleCBmM2Q1YTAwZWYxYTJiNDc0Y2Zm
OTU1YTFlMWY2MGMzNDJkNTYzZWFlLi45YTdkYzUyYjQ5Nzk0ZWI4NDM3NTFhN2VjNDk2YWE2YTc4
ZDliNTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdl
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94
eS5jcHAKQEAgLTIxLDEwICsyMSwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlF0V2ViUGFnZVByb3h5LmgiCiAKKyNpbmNsdWRlICJxd2ViZG93bmxvYWRpdGVtLmgiCisjaW5j
bHVkZSAicXdlYmRvd25sb2FkaXRlbV9wLmgiCiAjaW5jbHVkZSAicXdlYmVycm9yLmgiCiAjaW5j
bHVkZSAicXdrcHJlZmVyZW5jZXNfcC5oIgogCiAjaW5jbHVkZSAiQ2xpZW50SW1wbC5oIgorI2lu
Y2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKICNpbmNsdWRlICJxd2toaXN0b3J5LmgiCiAjaW5jbHVk
ZSAicXdraGlzdG9yeV9wLmgiCiAjaW5jbHVkZSAiRmluZEluZGljYXRvci5oIgpAQCAtMTU0LDYg
KzE1NywxOCBAQCB2b2lkIFF0V2ViUGFnZVByb3h5Ojppbml0KCkKICAgICAgICAgcG9saWN5Q2xp
ZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gPSBxdF93a19kZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uOwogICAgICAgICBXS1BhZ2VTZXRQYWdlUG9saWN5Q2xpZW50KHRv
QVBJKG1fd2ViUGFnZVByb3h5LmdldCgpKSwgJnBvbGljeUNsaWVudCk7CiAgICAgfQorCisgICAg
V0tDb250ZXh0RG93bmxvYWRDbGllbnQgZG93bmxvYWRDbGllbnQ7CisgICAgbWVtc2V0KCZkb3du
bG9hZENsaWVudCwgMCwgc2l6ZW9mKFdLQ29udGV4dERvd25sb2FkQ2xpZW50KSk7CisgICAgZG93
bmxvYWRDbGllbnQudmVyc2lvbiA9IGtXS0NvbnRleHREb3dubG9hZENsaWVudEN1cnJlbnRWZXJz
aW9uOworICAgIGRvd25sb2FkQ2xpZW50LmNsaWVudEluZm8gPSAgdGhpczsKKyAgICBkb3dubG9h
ZENsaWVudC5kaWRSZWNlaXZlUmVzcG9uc2UgPSBxdF93a19kaWRSZWNlaXZlUmVzcG9uc2U7Cisg
ICAgZG93bmxvYWRDbGllbnQuZGlkUmVjZWl2ZURhdGEgPSBxdF93a19kaWRSZWNlaXZlRGF0YUZv
ckRvd25sb2FkOworICAgIGRvd25sb2FkQ2xpZW50LmRpZENyZWF0ZURlc3RpbmF0aW9uID0gcXRf
d2tfZGlkQ3JlYXRlRGVzdGluYXRpb247CisgICAgZG93bmxvYWRDbGllbnQuZGlkRmluaXNoID0g
cXRfd2tfZGlkRmluaXNoRG93bmxvYWQ7CisgICAgZG93bmxvYWRDbGllbnQuZGlkRmFpbCA9IHF0
X3drX2RpZEZhaWxEb3dubG9hZDsKKyAgICBkb3dubG9hZENsaWVudC5kZWNpZGVEZXN0aW5hdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZSA9IHF0X3drX2RlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lOworICAgIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KHRvQVBJKG1fY29u
dGV4dC5nZXQoKSksICZkb3dubG9hZENsaWVudCk7CiB9CiAKIFF0V2ViUGFnZVByb3h5Ojp+UXRX
ZWJQYWdlUHJveHkoKQpAQCAtNjk2LDQgKzcxMSw2NSBAQCB2b2lkIFF0V2ViUGFnZVByb3h5Ojpz
ZXRQYWdlSXNWaXNpYmxlKGJvb2wgaXNWaXNpYmxlKQogICAgIG1fd2ViUGFnZVByb3h5LT5kcmF3
aW5nQXJlYSgpLT5zZXRQYWdlSXNWaXNpYmxlKGlzVmlzaWJsZSk7CiB9CiAKK3ZvaWQgUXRXZWJQ
YWdlUHJveHk6OmRvd25sb2FkUmVjZWl2ZWRSZXNwb25zZShXZWJLaXQ6OkRvd25sb2FkUHJveHkq
IGRvd25sb2FkLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3sK
KyAgICAvLyBXaWxsIGJlIGNhbGxlZCB3aGVuIHRoZSBoZWFkZXJzIGFyZSByZWFkIGJ5IFdlYlBy
b2Nlc3MuCisgICAgUVdlYkRvd25sb2FkSXRlbSogZG93bmxvYWRJdGVtID0gbmV3IFFXZWJEb3du
bG9hZEl0ZW0odGhpcyk7CisgICAgZG93bmxvYWRJdGVtLT5kLT5kb3dubG9hZFByb3h5ID0gZG93
bmxvYWQ7CisgICAgZG93bmxvYWRJdGVtLT5kLT5zb3VyY2VVcmwgPSByZXNwb25zZS51cmwoKTsK
KyAgICBkb3dubG9hZEl0ZW0tPmQtPm1pbWVUeXBlID0gcmVzcG9uc2UubWltZVR5cGUoKTsKKyAg
ICBkb3dubG9hZEl0ZW0tPmQtPmV4cGVjdGVkQ29udGVudExlbmd0aCA9IHJlc3BvbnNlLmV4cGVj
dGVkQ29udGVudExlbmd0aCgpOworCisgICAgbV9kb3dubG9hZHNbZG93bmxvYWQtPmRvd25sb2Fk
SUQoKV0gPSBkb3dubG9hZEl0ZW07CisgICAgZW1pdCBtX3ZpZXdJbnRlcmZhY2UtPmRvd25sb2Fk
U3RhcnRlZChkb3dubG9hZEl0ZW0pOworfQorCit2b2lkIFF0V2ViUGFnZVByb3h5Ojpkb3dubG9h
ZENyZWF0ZWREZXN0aW5hdGlvbihXZWJLaXQ6OkRvd25sb2FkUHJveHkqIGRvd25sb2FkLCBjb25z
dCBRU3RyaW5nJiBwYXRoKQoreworICAgIFFXZWJEb3dubG9hZEl0ZW0qIGRvd25sb2FkSXRlbSA9
IG1fZG93bmxvYWRzLnZhbHVlKGRvd25sb2FkLT5kb3dubG9hZElEKCkpOworICAgIEFTU0VSVChk
b3dubG9hZEl0ZW0pOworICAgIGRvd25sb2FkSXRlbS0+ZC0+ZGVzdGluYXRpb25QYXRoID0gcGF0
aDsKKyAgICBlbWl0IGRvd25sb2FkSXRlbS0+ZGVzdGluYXRpb25GaWxlQ3JlYXRlZChkb3dubG9h
ZEl0ZW0tPmQtPmRlc3RpbmF0aW9uUGF0aCk7Cit9CisKK3ZvaWQgUXRXZWJQYWdlUHJveHk6OmRv
d25sb2FkRmluaXNoZWQoV2ViS2l0OjpEb3dubG9hZFByb3h5KiBkb3dubG9hZCkKK3sKKyAgICBR
V2ViRG93bmxvYWRJdGVtKiBkb3dubG9hZEl0ZW0gPSBtX2Rvd25sb2Fkcy50YWtlKGRvd25sb2Fk
LT5kb3dubG9hZElEKCkpOworICAgIEFTU0VSVChkb3dubG9hZEl0ZW0pOworICAgIGVtaXQgZG93
bmxvYWRJdGVtLT5maW5pc2hlZCgpOworICAgIGRvd25sb2FkSXRlbS0+ZGVsZXRlTGF0ZXIoKTsK
K30KKwordm9pZCBRdFdlYlBhZ2VQcm94eTo6ZG93bmxvYWRGYWlsZWQoV2ViS2l0OjpEb3dubG9h
ZFByb3h5KiBkb3dubG9hZCwgY29uc3QgUVdlYkVycm9yJiBlcnJvcikKK3sKKyAgICBRV2ViRG93
bmxvYWRJdGVtKiBkb3dubG9hZEl0ZW0gPSBtX2Rvd25sb2Fkcy50YWtlKGRvd25sb2FkLT5kb3du
bG9hZElEKCkpOworICAgIEFTU0VSVChkb3dubG9hZEl0ZW0pOworICAgIGVtaXQgZG93bmxvYWRJ
dGVtLT5mYWlsZWQoZXJyb3IuZXJyb3JDb2RlQXNEb3dubG9hZEVycm9yKCksIGVycm9yLnVybCgp
LCBlcnJvci5kZXNjcmlwdGlvbigpKTsKKyAgICBkb3dubG9hZEl0ZW0tPmRlbGV0ZUxhdGVyKCk7
Cit9CisKK1dLU3RyaW5nUmVmIFF0V2ViUGFnZVByb3h5OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZShXZWJLaXQ6OkRvd25sb2FkUHJveHkqIGRvd25sb2FkLCBjb25zdCBR
U3RyaW5nJiBwYXRoLCBib29sKiBhbGxvd092ZXJ3cml0ZSkKK3sKKyAgICBRV2ViRG93bmxvYWRJ
dGVtKiBkb3dubG9hZEl0ZW0gPSBtX2Rvd25sb2Fkcy52YWx1ZShkb3dubG9hZC0+ZG93bmxvYWRJ
RCgpKTsKKyAgICBBU1NFUlQoZG93bmxvYWRJdGVtKTsKKyAgICBRU3RyaW5nIGRlc3RpbmF0aW9u
OworCisgICAgLy8gV2UgZG9uJ3QgbmVlZCB0aGlzIGJ1dCB3ZSBuZWVkIHRvIGluaXRpYWxpemUg
aXQgY29ycmVjdGx5CisgICAgLy8gaW4gb3JkZXIgdG8gYXZvaWQgc2VuZGluZyBqdW5rIG9uIHRo
ZSByZXBseSBJUEMgbWVzc2FnZS4KKyAgICAqYWxsb3dPdmVyd3JpdGUgPSB0cnVlOworCisgICAg
ZGVzdGluYXRpb24gPSBtX3ZpZXdJbnRlcmZhY2UtPmNob29zZURlc3RpbmF0aW9uRmlsZShwYXRo
KTsKKworICAgIHJldHVybiBXS1N0cmluZ0NyZWF0ZVdpdGhRU3RyaW5nKGRlc3RpbmF0aW9uKTsK
K30KKwordm9pZCBRdFdlYlBhZ2VQcm94eTo6ZG93bmxvYWREYXRhUmVjZWl2ZWQoV2ViS2l0OjpE
b3dubG9hZFByb3h5KiBkb3dubG9hZCwgdWludDY0X3QgbGVuZ3RoKQoreworICAgIC8vIFdpbGwg
YmUgY2FsbGVkIGV2ZXJ5dGltZSBieXRlcyB3ZXJlIHdyaXR0ZW4gdG8gZGVzdGluYXRpb24gZmls
ZSBieSBXZWJQcm9jZXNzLgorICAgIFFXZWJEb3dubG9hZEl0ZW0qIGRvd25sb2FkSXRlbSA9IG1f
ZG93bmxvYWRzLnZhbHVlKGRvd25sb2FkLT5kb3dubG9hZElEKCkpOworICAgIEFTU0VSVChkb3du
bG9hZEl0ZW0pOworICAgIGRvd25sb2FkSXRlbS0+ZC0+dG90YWxCeXRlc1JlY2VpdmVkICs9IGxl
bmd0aDsKKyAgICBlbWl0IGRvd25sb2FkSXRlbS0+ZGF0YVJlY2VpdmVkKGxlbmd0aCk7Cit9CisK
ICNpbmNsdWRlICJtb2NfUXRXZWJQYWdlUHJveHkuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaAppbmRleCBmYmQ2NDE1NGNjY2ZmNzJmOTA2ZmExNDlh
N2FhNzc3M2UzZDE5M2EwLi5lYjg4NTRkM2NlNjljODk5YzNlNDkxNzBiNTM5MTM5YmViZGU1NTZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaApAQCAt
MjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkxheWVyVHJlZUNvbnRleHQuaCIKICNpbmNsdWRlICJQ
YWdlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUG9saWN5SW50ZXJmYWNlLmgiCisjaW5jbHVkZSAicXdl
YmRvd25sb2FkaXRlbS5oIgogI2luY2x1ZGUgInF3ZWJraXR0eXBlcy5oIgogI2luY2x1ZGUgIlNo
YXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIlZpZXdwb3J0QXJndW1lbnRzLmgiCkBAIC0xNzQs
NiArMTc1LDEzIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0UGFnZUlzVmlzaWJsZShib29sKTsK
IAorICAgIHZvaWQgZG93bmxvYWRSZWNlaXZlZFJlc3BvbnNlKFdlYktpdDo6RG93bmxvYWRQcm94
eSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICB2b2lkIGRvd25sb2Fk
Q3JlYXRlZERlc3RpbmF0aW9uKFdlYktpdDo6RG93bmxvYWRQcm94eSosIGNvbnN0IFFTdHJpbmcm
IHBhdGgpOworICAgIHZvaWQgZG93bmxvYWRGaW5pc2hlZChXZWJLaXQ6OkRvd25sb2FkUHJveHkq
KTsKKyAgICB2b2lkIGRvd25sb2FkRmFpbGVkKFdlYktpdDo6RG93bmxvYWRQcm94eSosIGNvbnN0
IFFXZWJFcnJvciYpOworICAgIFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lKFdlYktpdDo6RG93bmxvYWRQcm94eSosIGNvbnN0IFFTdHJpbmcmIHBhdGgs
IGJvb2wqIGFsbG93T3ZlcndyaXRlKTsKKyAgICB2b2lkIGRvd25sb2FkRGF0YVJlY2VpdmVkKFdl
YktpdDo6RG93bmxvYWRQcm94eSosIHVpbnQ2NF90IGxlbmd0aCk7CisKIHB1YmxpYyBRX1NMT1RT
OgogICAgIHZvaWQgd2ViQWN0aW9uVHJpZ2dlcmVkKGJvb2wgY2hlY2tlZCk7CiAKQEAgLTIwNyw2
ICsyMTUsOCBAQCBwcml2YXRlOgogCiAgICAgT3duUHRyPFFVbmRvU3RhY2s+IG1fdW5kb1N0YWNr
OwogICAgIGludCBtX2xvYWRQcm9ncmVzczsKKworICAgIFFNYXA8dWludDY0X3QsIFFXZWJEb3du
bG9hZEl0ZW0qPiBtX2Rvd25sb2FkczsKIH07CiAKICNlbmRpZiAvKiBRdFdlYlBhZ2VQcm94eV9o
ICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVG91Y2hWaWV3SW50
ZXJmYWNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVG91Y2hWaWV3SW50ZXJmYWNl
LmgKaW5kZXggZDE1ZTg2ZGUxOTVhZTAwNzNhZDA5NjZhYmU5ZmFlY2UyMWM5N2ZhMi4uNGQ5ZTRi
NzE1OGJhNjlmMjEwOTAwOTZiYzk5YmU0MWUzYmRlMGYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L1RvdWNoVmlld0ludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2UuaApAQCAtNzgsNiArNzgsOCBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgUUpTRW5naW5lKiBlbmdpbmUoKTsKIAogICAgIHZpcnR1YWwg
dm9pZCBjaG9vc2VGaWxlcyhXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmLCBjb25zdCBRU3Ry
aW5nTGlzdCYsIEZpbGVDaG9vc2VyVHlwZSkgeyB9CisgICAgdmlydHVhbCBRU3RyaW5nIGNob29z
ZURlc3RpbmF0aW9uRmlsZShjb25zdCBRU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgeyByZXR1
cm4gUVN0cmluZygpOyB9CisgICAgdmlydHVhbCB2b2lkIGRvd25sb2FkU3RhcnRlZChRV2ViRG93
bmxvYWRJdGVtKiBkb3dubG9hZEl0ZW0pIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZE1vdXNl
TW92ZU92ZXJFbGVtZW50KGNvbnN0IFFVcmwmLCBjb25zdCBRU3RyaW5nJikgeyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9WaWV3SW50ZXJmYWNlLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVmlld0ludGVyZmFjZS5oCmluZGV4IDQ3ZTY5MTkzZjVm
NTc5NjE4YzY0ZWVmNGIyOWFlY2I3ZGFkNjM1NWUuLjRiNDIxZGRhOGU2MzA5NWYxYzBlNTNlMDMw
MzY5NzlhODM2YjA3ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9W
aWV3SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1ZpZXdJbnRl
cmZhY2UuaApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgPFF0R3VpL1FNZW51PgogI2luY2x1
ZGUgPFdlYktpdDIvV0tCYXNlLmg+CiAKK2NsYXNzIFFXZWJEb3dubG9hZEl0ZW07CiBjbGFzcyBR
V2ViRXJyb3I7CiAKIFFUX0JFR0lOX05BTUVTUEFDRQpAQCAtOTAsNiArOTEsOSBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGNob29zZUZpbGVzKFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJS
ZWYsIGNvbnN0IFFTdHJpbmdMaXN0JiBzZWxlY3RlZEZpbGVOYW1lcywgRmlsZUNob29zZXJUeXBl
KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkTW91c2VNb3ZlT3ZlckVsZW1lbnQoY29uc3Qg
UVVybCYsIGNvbnN0IFFTdHJpbmcmKSA9IDA7CisKKyAgICB2aXJ0dWFsIFFTdHJpbmcgY2hvb3Nl
RGVzdGluYXRpb25GaWxlKGNvbnN0IFFTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGRvd25sb2FkU3RhcnRlZChRV2ViRG93bmxvYWRJdGVtKikgPSAwOwog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0MkFQSS5wcmkgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJLaXQyQVBJLnByaQppbmRleCAwYjJhYWZmNzZiNGU5NzA2ZjhmMWQ4YjI2
MzdiMjYwMmU1YTM0ZWM3Li40Y2I1ZGJlODk3YzE1NmIxZDAwMGY4OTU4MjE0NmE1MmU1NWQ0ZGIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyQVBJLnByaQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyQVBJLnByaQpAQCAtNDksNiArNDksNyBAQCBXRUJLSVQyX0FQSV9TT1VS
Q0VTID0gXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL3F0L1dL
U3RyaW5nUXQuY3BwIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Nw
cC9xdC9XS1VSTFF0LmNwcCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwIFwKKyAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3F3ZWJkb3dubG9hZGl0ZW0uY3BwIFwKICAgICAkJFNPVVJDRV9ESVIvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2UuY3BwIFwKICAgICAkJFNPVVJDRV9E
SVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXcuY3BwIFwKICAgICAkJFNP
VVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJlcnJvci5jcHAgXApAQCAtMTMw
LDYgKzEzMSw4IEBAIFdFQktJVDJfQVBJX0hFQURFUlMgKz0gXAogICAgICQkU09VUkNFX0RJUi9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL3F0L1dLVVJMUXQuaCBcCiAgICAgJCRTT1VSQ0VfRElS
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuaCBcCiAgICAgJCRTT1VS
Q0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXdfcC5oIFwKKyAg
ICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJkb3dubG9hZGl0ZW0u
aCBcCisgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxv
YWRpdGVtX3AuaCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
dG91Y2h3ZWJwYWdlLmggXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcXRvdWNod2VicGFnZV9wLmggXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXRvdWNod2Vidmlldy5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvRG93bmxvYWRzL3F0L0Rvd25sb2FkUXQuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9Eb3dubG9hZHMvcXQvRG93bmxvYWRRdC5jcHAKaW5kZXggOWVlOTk5NWU4MGU4ODBk
ZGE2ZDI3YzlhM2I1MGYwYzE2MWRlYTBlMC4uNDNjZWYyYWQwNWU5NGUyYzM4OWRiYmMzYTRkYzQ5
ODUzNjZhNDMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9h
ZHMvcXQvRG93bmxvYWRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3du
bG9hZHMvcXQvRG93bmxvYWRRdC5jcHAKQEAgLTUzLDYgKzUzLDcgQEAgdm9pZCBEb3dubG9hZDo6
c3RhcnRXaXRoSGFuZGxlKFdlYlBhZ2UqIGluaXRpYXRpbmdQYWdlLCBSZXNvdXJjZUhhbmRsZSog
aGFuZGxlLAogewogICAgIEFTU0VSVCghbV9xdERvd25sb2FkZXIpOwogICAgIG1fcXREb3dubG9h
ZGVyID0gbmV3IFF0RmlsZURvd25sb2FkZXIodGhpcywgYWRvcHRQdHIoaGFuZGxlLT5nZXRJbnRl
cm5hbCgpLT5tX2pvYi0+cmVsZWFzZSgpKSk7CisgICAgbV9xdERvd25sb2FkZXItPnN0YXJ0KCk7
CiB9CiAKIHZvaWQgRG93bmxvYWQ6OmNhbmNlbCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3dubG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L1F0RmlsZURvd25sb2FkZXIuY3BwCmluZGV4
IGM5MzZiMDhlNzBmOTA0Y2Y0YjViMzM2ZjU0YjcyNjk3N2RiZWQwZjkuLjg3NjYyNTJmN2I3ZTMw
MzhkMDg0YmU5ZDM4NjM3N2QxMTgwYmRhMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvRG93bmxvYWRzL3F0L1F0RmlsZURvd25sb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L1F0RmlsZURvd25sb2FkZXIuY3BwCkBAIC01
OCw5ICs1OCw2IEBAIHZvaWQgUXRGaWxlRG93bmxvYWRlcjo6c3RhcnQoKQogICAgIGNvbm5lY3Qo
bV9yZXBseS5nZXQoKSwgU0lHTkFMKHJlYWR5UmVhZCgpKSwgU0xPVChvblJlYWR5UmVhZCgpKSk7
CiAgICAgY29ubmVjdChtX3JlcGx5LmdldCgpLCBTSUdOQUwoZmluaXNoZWQoKSksIFNMT1Qob25G
aW5pc2hlZCgpKSk7CiAgICAgY29ubmVjdChtX3JlcGx5LmdldCgpLCBTSUdOQUwoZXJyb3IoUU5l
dHdvcmtSZXBseTo6TmV0d29ya0Vycm9yKSksIFNMT1Qob25FcnJvcihRTmV0d29ya1JlcGx5OjpO
ZXR3b3JrRXJyb3IpKSk7Ci0KLSAgICAvLyBDYWxsIG9uUmVhZHlSZWFkIGp1c3QgaW4gY2FzZSBz
b21lIGRhdGEgaXMgYWxyZWFkeSB3YWl0aW5nLgotICAgIG9uUmVhZHlSZWFkKCk7CiB9CiAKIHZv
aWQgUXRGaWxlRG93bmxvYWRlcjo6ZGV0ZXJtaW5lRmlsZW5hbWUoKQpAQCAtODcsNyArODQsNyBA
QCB2b2lkIFF0RmlsZURvd25sb2FkZXI6OmRldGVybWluZUZpbGVuYW1lKCkKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGJvb2wgYWxsb3dPdmVyd3JpdGU7CisgICAgYm9vbCBhbGxvd092
ZXJ3cml0ZSA9IHRydWU7CiAgICAgbV9kb3dubG9hZC0+ZGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWUoZmlsZU5hbWUsIGFsbG93T3ZlcndyaXRlKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109789</attachid>
            <date>2011-10-05 07:34:51 -0700</date>
            <delta_ts>2011-10-17 18:59:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68962-20111005113429.patch</filename>
            <type>text/plain</type>
            <size>50084</size>
            <attacher name="Jesus Sanchez-Palencia">jesus</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY2OTkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA4ZGFhZmZhZTU2YjM3ZWNj
MzdkNzlkN2ZmNGY0M2ZkY2Y0MTA1NjBkLi5kYzVmYjdlNDExMmM4ZTkwNWNmODcxYmYyYTI1NDBi
YTRlMmEzYzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI2IEBACisyMDExLTEwLTA1ICBKZXN1
cyBTYW5jaGV6LVBhbGVuY2lhICA8amVzdXMucGFsZW5jaWFAb3BlbmJvc3NhLm9yZz4KKworICAg
ICAgICBbUXRdW1dLMl0gRG93bmxvYWQgc3VwcG9ydCBhbmQgQVBJIGluIFVJUHJvY2VzcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg5NjIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBpbXBsZW1lbnQg
b3VyIFdrQ29udGV4dERvd25sb2FkQ2xpZW50IGFuZCB0aGUgbmVlZGVkIGNhbGxiYWNrcy4KKyAg
ICAgICAgV2UgYWxzbyBhZGQgQVBJcyBieSBleHBvc2luZyBRV2ViRG93bmxvYWRJdGVtLiBPYmpl
Y3RzIGZyb20gdGhpcyB0eXBlCisgICAgICAgIGhhdmUgdGhlaXIgb3duZXJzaGlwIGhhbmRsZWQg
YnkgUURlc2t0b3BXZWJWaWV3IGFuZCB3aWxsIGJlIGNyZWF0ZWQgb3IKKyAgICAgICAgZGVzdHJv
eWVkIGFzIG5lZWRlZC4gQ2xhc3NlcyBpbXBsZW1lbnRpbmcgVmlld0ludGVyZmFjZSAoUURlc2t0
b3BXZWJWaWV3UHJpdmF0ZQorICAgICAgICBhbmQgVG91Y2hWaWV3SW50ZXJmYWNlKSB3aWxsIHJl
Y2VpdmUgYSBzaWduYWwgKGRvd25sb2FkUmVxdWVzdGVkKSB3aXRoIGEgcG9pbnRlcgorICAgICAg
ICB0byB0aGUgcmVjZW50bHkgY3JlYXRlZCBRV2ViRG93bmxvYWRJdGVtLiBXaXRoIHRoYXQgdGhl
eSBjYW4gY29ubmVjdCB0aGUgcHJvcGVyCisgICAgICAgIHNpZ25hbHMgYW5kIHNsb3RzLCBzZXQg
dGhlIGRvd25sb2FkIGRlc3RpbmF0aW9uIHBhdGggYW5kIHRoZW4gY2FsbCBzdGFydCgpLgorICAg
ICAgICBPYmplY3RzIG9mIHRoaXMgdHlwZSB3aWxsIHByb3ZpZGUgdGhlIHByb2dyZXNzIG9mIGEg
ZG93bmxvYWQsIGEgc2xvdCB0byBjYW5jZWwgaXQsCisgICAgICAgIGFuZCBzaWduYWxzIGZvciBn
ZXR0aW5nIGZpbmlzaGVkIG9yIGZhaWx1cmUgc3RhdHVzLgorICAgICAgICBRV2ViRG93bmxvYWRJ
dGVtIHdhcyBhbHNvIGV4cG9zZWQgaW4gUU1MLgorICAgICAgICBRdCBuZWVkZWQgYW4gYXN5bmNo
cm9ub3VzIHdheSBmb3IgV2ViUHJvY2VzcyB0byByZXF1ZXN0IHRoZSBkZXN0aW5hdGlvbiBwYXRo
CisgICAgICAgIHRvIFVJUHJvY2Vzcy4gVGhlcmVmb3JlIHR3byBtZXNzYWdlcyB3ZXJlIGFkZGVk
IHRvIFdlYktpdDIncyBEb3dubG9hZAorICAgICAgICBoYW5kbGVyczogZGVjaWRlRGVzdGluYXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVBc3luYyBhbmQgZGlkRGVjaWRlRGVzdGluYXRpb25Bc3lu
Yy4KKworICAgICAgICAqIFNoYXJlZC9xdC9XZWJDb3JlQXJndW1lbnRDb2RlcnNRdC5jcHA6Cisg
ICAgICAgIChDb3JlSVBDOjo6OmVuY29kZSk6CisgICAgICAgIChDb3JlSVBDOjo6OmRlY29kZSk6
CisgICAgICAgIEltcGxlbWVudCBzZXJpYWxpemF0aW9uIG9mIFJlc291cmNlUmVzcG9uc2UuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9xdC9XS1ZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9w
d2Vidmlldy5jcHA6CisgICAgICAgIChRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpkb3dubG9hZFJl
cXVlc3RlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuaDog
QWRkIHNpZ25hbCBkb3dubG9hZFJlcXVlc3RlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0
L3FkZXNrdG9wd2Vidmlld19wLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xbWxwbHVn
aW4vcGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdDJRbWxQbHVnaW46OnJlZ2lzdGVyVHlwZXMp
OgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxvYWRpdGVtLmNwcDogQWRk
ZWQuCisgICAgICAgIChRV2ViRG93bmxvYWRJdGVtUHJpdmF0ZTo6UVdlYkRvd25sb2FkSXRlbVBy
aXZhdGUpOgorICAgICAgICAoUVdlYkRvd25sb2FkSXRlbTo6UVdlYkRvd25sb2FkSXRlbSk6Cisg
ICAgICAgIChRV2ViRG93bmxvYWRJdGVtOjp+UVdlYkRvd25sb2FkSXRlbSk6CisgICAgICAgIChR
V2ViRG93bmxvYWRJdGVtOjpzb3VyY2VVcmwpOgorICAgICAgICAoUVdlYkRvd25sb2FkSXRlbTo6
ZGVzdGluYXRpb25QYXRoKToKKyAgICAgICAgKFFXZWJEb3dubG9hZEl0ZW06OnNldERlc3RpbmF0
aW9uUGF0aCk6CisgICAgICAgIChRV2ViRG93bmxvYWRJdGVtOjpzdWdnZXN0ZWRGaWxlbmFtZSk6
CisgICAgICAgIChRV2ViRG93bmxvYWRJdGVtOjptaW1lVHlwZSk6CisgICAgICAgIChRV2ViRG93
bmxvYWRJdGVtOjpleHBlY3RlZENvbnRlbnRMZW5ndGgpOgorICAgICAgICAoUVdlYkRvd25sb2Fk
SXRlbTo6dG90YWxCeXRlc1JlY2VpdmVkKToKKyAgICAgICAgKFFXZWJEb3dubG9hZEl0ZW06OmNh
bmNlbCk6CisgICAgICAgIChRV2ViRG93bmxvYWRJdGVtOjpzdGFydCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9xdC9xd2ViZG93bmxvYWRpdGVtLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvcXQvcXdlYmRvd25sb2FkaXRlbV9wLmg6IEFkZGVkLgorCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9xdC9xd2ViZXJyb3IuY3BwOgorICAgICAgICAoUVdlYkVycm9yOjpkZXNjcmlw
dGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xd2ViZXJyb3IuaDoKKyAgICAgICAg
QWRkIERvd25sb2FkIGVycm9yIGhhbmRsaW5nIHRvIFFXZWJFcnJvciBhbmQgYSBuZXcgQVBJCisg
ICAgICAgIHRvIHJldHJpZXZlIHRoZSBlcnJvciBkZXNjcmlwdGlvbiBmcm9tIHRoZSBvcmlnaW5h
bCBSZXNvdXJjZUVycm9yLgorICAgICAgICBBbHNvLCBpdCBub3cgaGFzIFFXZWJEb3dubG9hZEl0
ZW06OkRvd25sb2FkRXJyb3IgZXJyb3JDb2RlQXNEb3dubG9hZEVycm9yKCkKKyAgICAgICAgdGhh
dCByZXR1cm5zIHRoZSBlcnJvciBjb2RlIGFzIGEgRG93bmxvYWRFcnJvci4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkRvd25sb2FkUHJveHk6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQXN5
bmMpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkaWREZWNpZGVEZXN0aW5hdGlv
bkFzeW5jKToKKyAgICAgICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkubWVzc2FnZXMuaW46
CisgICAgICAgICogVUlQcm9jZXNzL1dlYkRvd25sb2FkQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViRG93bmxvYWRDbGllbnQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lQXN5bmMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJEb3dubG9hZENsaWVudC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKHF0X3drX2Rp
ZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChxdF93a19kaWRDcmVhdGVEZXN0aW5hdGlvbik6
CisgICAgICAgIChxdF93a19kaWRGaW5pc2hEb3dubG9hZCk6CisgICAgICAgIChxdF93a19kaWRG
YWlsRG93bmxvYWQpOgorICAgICAgICAocXRfd2tfZGlkUmVjZWl2ZURhdGFGb3JEb3dubG9hZCk6
CisgICAgICAgIChxdF93a19kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFz
eW5jKToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5oOgorCisgICAgICAgICog
VUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFF0V2ViUGFnZVByb3h5
Ojppbml0KToKKyAgICAgICAgKFF0V2ViUGFnZVByb3h5Ojpkb3dubG9hZFJlY2VpdmVkUmVzcG9u
c2UpOgorICAgICAgICAoUXRXZWJQYWdlUHJveHk6OmRvd25sb2FkQ3JlYXRlZERlc3RpbmF0aW9u
KToKKyAgICAgICAgKFF0V2ViUGFnZVByb3h5Ojpkb3dubG9hZEZpbmlzaGVkKToKKyAgICAgICAg
KFF0V2ViUGFnZVByb3h5Ojpkb3dubG9hZEZhaWxlZCk6CisgICAgICAgIChRdFdlYlBhZ2VQcm94
eTo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAoUXRX
ZWJQYWdlUHJveHk6OmRvd25sb2FkRGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
cXQvUXRXZWJQYWdlUHJveHkuaDoKKyAgICAgICAgSW1wbGVtZW50IG91ciBXS0NvbnRleHREb3du
bG9hZENsaWVudCBhbmQgaXRzIGNhbGxiYWNrcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9xdC9U
b3VjaFZpZXdJbnRlcmZhY2UuaDoKKyAgICAgICAgKFdlYktpdDo6VG91Y2hWaWV3SW50ZXJmYWNl
Ojpkb3dubG9hZFJlcXVlc3RlZCk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1ZpZXdJbnRlcmZh
Y2UuaDoKKworICAgICAgICAqIFdlYktpdDJBUEkucHJpOiBBZGRpbmcgbmV3IFFXZWJEb3dubG9h
ZEl0ZW0gZmlsZXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdn
ZXN0ZWRGaWxlbmFtZUFzeW5jKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6ZGlkRGVjaWRlRG93bmxvYWRE
ZXN0aW5hdGlvbkFzeW5jKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZE1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9jZm5ldC9Eb3dubG9h
ZENGTmV0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OmRpZERlY2lkZURlc3RpbmF0
aW9uQXN5bmMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvRG93bmxvYWRzL2N1cmwvRG93bmxvYWRD
dXJsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OmRpZERlY2lkZURlc3RpbmF0aW9u
QXN5bmMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5t
bToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OmRpZERlY2lkZURlc3RpbmF0aW9uQXN5bmMp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvRG93bmxvYWRzL3F0L0Rvd25sb2FkUXQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpEb3dubG9hZDo6c3RhcnRXaXRoSGFuZGxlKTogV2Ugd2VyZSBtaXNzaW5n
IFF0RmlsZURvd25sb2FkZXI6OnN0YXJ0KCkgY2FsbCBoZXJlLgorICAgICAgICAoV2ViS2l0OjpE
b3dubG9hZDo6ZGlkRGVjaWRlRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9h
ZDo6ZGlkRGVjaWRlRGVzdGluYXRpb25Bc3luYyk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rv
d25sb2Fkcy9xdC9RdEZpbGVEb3dubG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UXRGaWxl
RG93bmxvYWRlcjo6c3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpRdEZpbGVEb3dubG9hZGVyOjpk
ZXRlcm1pbmVGaWxlbmFtZSk6CisgICAgICAgIENhbGxpbmcgb25SZWFkeVJlYWQoKSBoZXJlIHdh
cyB1bm5lY2Vzc2FyeSBhbmQgaXQgd2FzIHRyaWdnZXJpbmcgdGhlIG92ZXJhbGwKKyAgICAgICAg
ZG93bmxvYWQgcHJvY2VzcyBldmVuIGJlZm9yZSBEb3dubG9hZE1hbmFnZXIgZmluaXNoZWQgc3Rh
cnREb3dubG9hZCgpLiBUaGlzCisgICAgICAgIHdhcyBsZWFkaW5nIHRvIGEgRG93bmxvYWRNYW5h
Z2VyIHdpdGggYW4gZW1wdHkgbGlzdCBvZiBkb3dubG9hZHMuCisgICAgICAgICogV2ViUHJvY2Vz
cy9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3du
bG9hZDo6ZGlkRGVjaWRlRGVzdGluYXRpb25Bc3luYyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZGlkRGVjaWRlRG93
bmxvYWREZXN0aW5hdGlvbkFzeW5jKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisKIDIwMTEt
MTAtMDUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtHVEtdIFVzZSBXS1JldGFpblB0ciBmb3IgV0sgdHlwZXMgaW4gV2ViS2l0MiBHVEsrCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
UXQuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1dlYkNvcmVBcmd1bWVudENvZGVyc1F0
LmNwcAppbmRleCAyM2Y5OWU5ZjVhYjRkYTdjMzJlZmIyOTQxYmRiMTYxYmFiNzU5NTY1Li4xZmMx
NWM1OTZmNmZjZjdkOWY4ZDMzZmRlZWIzM2MxZWVlMjg2YTdiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvcXQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzUXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9xdC9XZWJDb3JlQXJndW1lbnRDb2RlcnNRdC5jcHAKQEAgLTI2LDcg
KzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRD
b2RlcnMuaCIKIAotI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVx
dWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgpAQCAtNTgsMTUg
KzU3LDM3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGUoQXJn
dW1lbnREZWNvZGVyKiBkZWNvZGVyLCBSZXNvdXJjZVJlCiAKIHZvaWQgQXJndW1lbnRDb2RlcjxS
ZXNvdXJjZVJlc3BvbnNlPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzb3VyY2VSZXNwb25zZSkKIHsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIGVuY29kZXItPmVuY29kZShyZXNvdXJjZVJlc3BvbnNlLnVybCgpLnN0cmluZygp
KTsKKyAgICBlbmNvZGVyLT5lbmNvZGUocmVzb3VyY2VSZXNwb25zZS5taW1lVHlwZSgpKTsKKyAg
ICBlbmNvZGVyLT5lbmNvZGUoc3RhdGljX2Nhc3Q8aW50NjRfdD4ocmVzb3VyY2VSZXNwb25zZS5l
eHBlY3RlZENvbnRlbnRMZW5ndGgoKSkpOworICAgIGVuY29kZXItPmVuY29kZShyZXNvdXJjZVJl
c3BvbnNlLnRleHRFbmNvZGluZ05hbWUoKSk7CiB9CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxSZXNv
dXJjZVJlc3BvbnNlPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzb3VyY2VSZXNwb25zZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAKLSAgICAvLyBGSVhNRTogRGl0dG8uCi0gICAg
cmVzb3VyY2VSZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2UoKTsKKyAgICBTdHJpbmcgdXJsOwor
ICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHVybCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXNwb25zZS5zZXRVUkwoS1VSTChXZWJDb3JlOjpQYXJzZWRVUkxTdHJpbmcsIHVybCkpOwor
CisgICAgU3RyaW5nIG1pbWVUeXBlOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKG1pbWVUeXBl
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJlc3BvbnNlLnNldE1pbWVUeXBlKG1pbWVU
eXBlKTsKKworICAgIGludDY0X3QgY29udGVudExlbmd0aDsKKyAgICBpZiAoIWRlY29kZXItPmRl
Y29kZShjb250ZW50TGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJlc3BvbnNl
LnNldEV4cGVjdGVkQ29udGVudExlbmd0aChjb250ZW50TGVuZ3RoKTsKKworICAgIFN0cmluZyB0
ZXh0RW5jb2RpbmdOYW1lOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHRleHRFbmNvZGluZ05h
bWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmVzcG9uc2Uuc2V0VGV4dEVuY29kaW5n
TmFtZSh0ZXh0RW5jb2RpbmdOYW1lKTsKKworICAgIHJlc291cmNlUmVzcG9uc2UgPSByZXNwb25z
ZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLQ29udGV4dC5oCmluZGV4IGNkNjc1MGU4NmQ0OTY4NDRmZjRiOTcwMjRmMzI0NzczZDIwMTli
YjguLjJlNzJmYjUyYTZlZWY4MTgxZTRmMmIzY2YxYjY4MGI1Mzg0ZTAxYzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgKQEAgLTg1LDYgKzg1LDcgQEAgdHlw
ZWRlZiB2b2lkICgqV0tDb250ZXh0RG93bmxvYWREaWRGaW5pc2hDYWxsYmFjaykoV0tDb250ZXh0
UmVmIGNvbnRleHQsIFdLRG93bmwKIHR5cGVkZWYgdm9pZCAoKldLQ29udGV4dERvd25sb2FkRGlk
RmFpbENhbGxiYWNrKShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9h
ZCwgV0tFcnJvclJlZiBlcnJvciwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZv
aWQgKCpXS0NvbnRleHREb3dubG9hZERpZENhbmNlbCkoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdL
RG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiB2
b2lkICgqV0tDb250ZXh0RG93bmxvYWRQcm9jZXNzRGlkQ3Jhc2hDYWxsYmFjaykoV0tDb250ZXh0
UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQgKmNsaWVudElu
Zm8pOwordHlwZWRlZiB2b2lkICgqV0tDb250ZXh0RG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZUFzeW5jQ2FsbGJhY2spKFdLQ29udGV4dFJlZiBjb250ZXh0LCBX
S0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1N0cmluZ1JlZiBmaWxlbmFtZSwgY29uc3Qgdm9pZCAq
Y2xpZW50SW5mbyk7CiAKIHN0cnVjdCBXS0NvbnRleHREb3dubG9hZENsaWVudCB7CiAgICAgaW50
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2ZXJzaW9uOwpAQCAtMTAwLDYgKzEwMSw3IEBAIHN0cnVjdCBXS0NvbnRleHREb3du
bG9hZENsaWVudCB7CiAgICAgV0tDb250ZXh0RG93bmxvYWREaWRGYWlsQ2FsbGJhY2sgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRGYWlsOwogICAgIFdLQ29udGV4dERvd25s
b2FkRGlkQ2FuY2VsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlk
Q2FuY2VsOwogICAgIFdLQ29udGV4dERvd25sb2FkUHJvY2Vzc0RpZENyYXNoQ2FsbGJhY2sgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0RpZENyYXNoOworICAgIFdLQ29udGV4dERv
d25sb2FkRGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVBc3luY0NhbGxiYWNr
IGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQXN5bmM7CiB9OwogdHlwZWRl
ZiBzdHJ1Y3QgV0tDb250ZXh0RG93bmxvYWRDbGllbnQgV0tDb250ZXh0RG93bmxvYWRDbGllbnQ7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvV0tWaWV3Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L1dLVmlldy5oCmluZGV4IDg0YmExZjc0
NmE0M2Q5MTdlZmMzMGYyNzhlZTMyNjdkMzVjODZmOGMuLmI2ZWJmZGJiMzcwNGQxY2I1NDExOTIy
OTY1MWRiNDExNjk4N2RhZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvV0tWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9XS1Zp
ZXcuaApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgPFdlYktpdDIvcWRlc2t0b3B3ZWJ2aWV3
Lmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9xdG91Y2h3ZWJ2aWV3Lmg+CiAjaW5jbHVkZSA8V2ViS2l0
Mi9xdG91Y2h3ZWJwYWdlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9xd2ViZG93bmxvYWRpdGVtLmg+
CiAjaW5jbHVkZSA8V2ViS2l0Mi9xd2VibmF2aWdhdGlvbmNvbnRyb2xsZXIuaD4KIAogI2VuZGlm
IC8qIFdLVmlld19oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3FkZXNrdG9wd2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3FkZXNrdG9wd2Vidmlldy5jcHAKaW5kZXggNjk2YjY3Nzk3MTg1ZWVlN2VjZTNhZjc2MDk1YzU3
YzE5Njc3YjdjNi4uYWRkYTY1OTg5ZmZkMGEzYzVjOGY1MGMwZGNjZTAxZmY4N2E3NDA3MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3
LmNwcApAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgInFk
ZXNrdG9wd2Vidmlldy5oIgogI2luY2x1ZGUgInFkZXNrdG9wd2Vidmlld19wLmgiCisjaW5jbHVk
ZSAicXdlYmRvd25sb2FkaXRlbS5oIgogI2luY2x1ZGUgInF3ZWJlcnJvci5oIgogCiAjaW5jbHVk
ZSA8UUZpbGVEaWFsb2c+CkBAIC0zMyw2ICszNCw3IEBACiAjaW5jbHVkZSA8UXREZWNsYXJhdGl2
ZS9xc2dpdGVtLmg+CiAjaW5jbHVkZSA8UXREZWNsYXJhdGl2ZS9xc2d2aWV3Lmg+CiAjaW5jbHVk
ZSA8UXRHdWkvUUN1cnNvcj4KKyNpbmNsdWRlIDxRdEd1aS9RRGVza3RvcFNlcnZpY2VzPgogI2lu
Y2x1ZGUgPFF0R3VpL1FEcmFnPgogI2luY2x1ZGUgPFF0R3VpL1FGb2N1c0V2ZW50PgogI2luY2x1
ZGUgPFF0R3VpL1FIb3ZlckV2ZW50PgpAQCAtNDQyLDYgKzQ0NCwxNSBAQCB2b2lkIFFEZXNrdG9w
V2ViVmlld1ByaXZhdGU6OmRpZE1vdXNlTW92ZU92ZXJFbGVtZW50KGNvbnN0IFFVcmwmIGxpbmtV
UkwsIGNvbnN0CiAgICAgZW1pdCBxLT5saW5rSG92ZXJlZChsYXN0SG92ZXJlZFVSTCwgbGFzdEhv
dmVyZWRUaXRsZSk7CiB9CiAKK3ZvaWQgUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6ZG93bmxvYWRS
ZXF1ZXN0ZWQoUVdlYkRvd25sb2FkSXRlbSogZG93bmxvYWRJdGVtKQoreworICAgIGlmICghZG93
bmxvYWRJdGVtKQorICAgICAgICByZXR1cm47CisKKyAgICBkb3dubG9hZEl0ZW0tPnNldFBhcmVu
dChxKTsKKyAgICBlbWl0IHEtPmRvd25sb2FkUmVxdWVzdGVkKGRvd25sb2FkSXRlbSk7Cit9CisK
IHN0YXRpYyBQb2xpY3lJbnRlcmZhY2U6OlBvbGljeUFjdGlvbiB0b1BvbGljeUFjdGlvbihRRGVz
a3RvcFdlYlZpZXc6Ok5hdmlnYXRpb25Qb2xpY3kgcG9saWN5KQogewogICAgIHN3aXRjaCAocG9s
aWN5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNr
dG9wd2Vidmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdl
YnZpZXcuaAppbmRleCBiMjVkZGVmNDc0N2RlNWE5N2QyOGJkNzk2NDBmOTRmYTJjZmFjMmJhLi5k
MzhmOWZmYjE3MDI3NDVjMDkyZWFlODBmZTNlOGFlOWU0MjBjYjVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmgKQEAgLTI4LDYgKzI4
LDcgQEAKICNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgogCiBjbGFzcyBRRGVza3RvcFdlYlZp
ZXdQcml2YXRlOworY2xhc3MgUVdlYkRvd25sb2FkSXRlbTsKIGNsYXNzIFFXZWJOYXZpZ2F0aW9u
Q29udHJvbGxlcjsKIAogUVRfQkVHSU5fTkFNRVNQQUNFCkBAIC02NSw3ICs2Niw4IEBAIHB1Ymxp
YzoKICAgICBlbnVtIEVycm9yVHlwZSB7CiAgICAgICAgIEVuZ2luZUVycm9yLAogICAgICAgICBO
ZXR3b3JrRXJyb3IsCi0gICAgICAgIEh0dHBFcnJvcgorICAgICAgICBIdHRwRXJyb3IsCisgICAg
ICAgIERvd25sb2FkRXJyb3IKICAgICB9OwogCiAgICAgUURlc2t0b3BXZWJWaWV3KFFTR0l0ZW0q
IHBhcmVudCA9IDApOwpAQCAtODksNiArOTEsNyBAQCBRX1NJR05BTFM6CiAgICAgdm9pZCBsb2Fk
UHJvZ3Jlc3NDaGFuZ2VkKGludCBwcm9ncmVzcyk7CiAgICAgdm9pZCB1cmxDaGFuZ2VkKGNvbnN0
IFFVcmwmIHVybCk7CiAgICAgdm9pZCBsaW5rSG92ZXJlZChjb25zdCBRVXJsJiB1cmwsIGNvbnN0
IFFTdHJpbmcmIHRpdGxlKTsKKyAgICB2b2lkIGRvd25sb2FkUmVxdWVzdGVkKFFXZWJEb3dubG9h
ZEl0ZW0qIGRvd25sb2FkSXRlbSk7CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQga2V5
UHJlc3NFdmVudChRS2V5RXZlbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3X3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3X3AuaAppbmRleCAwNTRhOWE2MmIyODBkMjgzNzFhMDZj
NTZlZTFjYzg2OWM5ZmE3YzAwLi5iMjE3YjFkNWU4MDcyMDEyNjI2MTQ2NmFhMDU3ZGU5OWVmMDU1
ZDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9w
d2Vidmlld19wLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3Rv
cHdlYnZpZXdfcC5oCkBAIC04Myw2ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBRSlNF
bmdpbmUqIGVuZ2luZSgpOwogCiAgICAgdmlydHVhbCB2b2lkIGNob29zZUZpbGVzKFdLT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXJSZWYsIGNvbnN0IFFTdHJpbmdMaXN0JiBzZWxlY3RlZEZpbGVOYW1l
cywgVmlld0ludGVyZmFjZTo6RmlsZUNob29zZXJUeXBlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZG93
bmxvYWRSZXF1ZXN0ZWQoUVdlYkRvd25sb2FkSXRlbSogZG93bmxvYWRJdGVtKTsKIAogICAgIHZp
cnR1YWwgdm9pZCBkaWRNb3VzZU1vdmVPdmVyRWxlbWVudChjb25zdCBRVXJsJiwgY29uc3QgUVN0
cmluZyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Ft
bHBsdWdpbi9wbHVnaW4uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xbWxw
bHVnaW4vcGx1Z2luLmNwcAppbmRleCA4NWQ3ZDA4ZWJmN2ZmNmYwZDBkYWM1N2QyZmY4NzIwZDJk
ZTA0YTI2Li5hYjFmNjYzMjhmOTM2ODc3MTUwOTYzMmU2MjE3ZGY3ZjdlMDE4ZjBiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FtbHBsdWdpbi9wbHVnaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcW1scGx1Z2luL3BsdWdpbi5j
cHAKQEAgLTIwLDYgKzIwLDcgQEAKICNpbmNsdWRlICJxZGVza3RvcHdlYnZpZXcuaCIKICNpbmNs
dWRlICJxdG91Y2h3ZWJwYWdlLmgiCiAjaW5jbHVkZSAicXRvdWNod2Vidmlldy5oIgorI2luY2x1
ZGUgInF3ZWJkb3dubG9hZGl0ZW0uaCIKICNpbmNsdWRlICJxd2VibmF2aWdhdGlvbmNvbnRyb2xs
ZXIuaCIKIAogI2luY2x1ZGUgPFF0RGVjbGFyYXRpdmUvcWRlY2xhcmF0aXZlLmg+CkBAIC0zOSw2
ICs0MCw3IEBAIHB1YmxpYzoKICAgICAgICAgcW1sUmVnaXN0ZXJVbmNyZWF0YWJsZVR5cGU8UVdl
Yk5hdmlnYXRpb25Db250cm9sbGVyPih1cmksIDUsIDAsICJOYXZpZ2F0aW9uQ29udHJvbGxlciIs
IFFPYmplY3Q6OnRyKCJDYW5ub3QgY3JlYXRlIHNlcGFyYXRlIGluc3RhbmNlIG9mIE5hdmlnYXRp
b25Db250cm9sbGVyIikpOwogICAgICAgICBxbWxSZWdpc3RlclVuY3JlYXRhYmxlVHlwZTxRVG91
Y2hXZWJQYWdlPih1cmksIDUsIDAsICJUb3VjaFdlYlBhZ2UiLCBRT2JqZWN0Ojp0cigiQ2Fubm90
IGNyZWF0ZSBzZXBhcmF0ZSBpbnN0YW5jZSBvZiBUb3VjaFdlYlBhZ2UsIHVzZSBUb3VjaFdlYlZp
ZXciKSk7CiAgICAgICAgIHFtbFJlZ2lzdGVyVW5jcmVhdGFibGVUeXBlPFFOZXR3b3JrUmVwbHk+
KHVyaSwgNSwgMCwgIk5ldHdvcmtSZXBseSIsIFFPYmplY3Q6OnRyKCJDYW5ub3QgY3JlYXRlIHNl
cGFyYXRlIGluc3RhbmNlIG9mIE5ldHdvcmtSZXBseSIpKTsKKyAgICAgICAgcW1sUmVnaXN0ZXJV
bmNyZWF0YWJsZVR5cGU8UVdlYkRvd25sb2FkSXRlbT4odXJpLCA1LCAwLCAiRG93bmxvYWRJdGVt
IiwgUU9iamVjdDo6dHIoIkNhbm5vdCBjcmVhdGUgc2VwYXJhdGUgaW5zdGFuY2Ugb2YgRG93bmxv
YWRJdGVtIikpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcXdlYmRvd25sb2FkaXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3F3ZWJkb3dubG9hZGl0ZW0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyODc4MGY5ZDk2YjQw
MGNkYzNlNDBiNWI4YWY5ZTVkOTk1YWVjMjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJkb3dubG9hZGl0ZW0uY3BwCkBAIC0wLDAgKzEsOTYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAicXdl
YmRvd25sb2FkaXRlbS5oIgorCisjaW5jbHVkZSAiRG93bmxvYWRQcm94eS5oIgorI2luY2x1ZGUg
InF3ZWJkb3dubG9hZGl0ZW1fcC5oIgorCitRV2ViRG93bmxvYWRJdGVtUHJpdmF0ZTo6UVdlYkRv
d25sb2FkSXRlbVByaXZhdGUoUVdlYkRvd25sb2FkSXRlbSogcXEpCisgICAgOiBxKHFxKQorICAg
ICwgZG93bmxvYWRQcm94eSgwKQorICAgICwgZXhwZWN0ZWRDb250ZW50TGVuZ3RoKDApCisgICAg
LCB0b3RhbEJ5dGVzUmVjZWl2ZWQoMCkKK3sKK30KKworUVdlYkRvd25sb2FkSXRlbTo6UVdlYkRv
d25sb2FkSXRlbShRT2JqZWN0KiBwYXJlbnQpCisgICAgOiBRT2JqZWN0KHBhcmVudCkKKyAgICAs
IGQobmV3IFFXZWJEb3dubG9hZEl0ZW1Qcml2YXRlKHRoaXMpKQoreworfQorCitRV2ViRG93bmxv
YWRJdGVtOjp+UVdlYkRvd25sb2FkSXRlbSgpCit7CisgICAgZGVsZXRlIGQ7Cit9CisKK1FVcmwg
UVdlYkRvd25sb2FkSXRlbTo6c291cmNlVXJsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZC0+c291
cmNlVXJsOworfQorCitRU3RyaW5nIFFXZWJEb3dubG9hZEl0ZW06OmRlc3RpbmF0aW9uUGF0aCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPmRlc3RpbmF0aW9uUGF0aDsKK30KKwordm9pZCBRV2Vi
RG93bmxvYWRJdGVtOjpzZXREZXN0aW5hdGlvblBhdGgoY29uc3QgUVN0cmluZyYgZGVzdGluYXRp
b24pCit7CisgICAgZC0+ZGVzdGluYXRpb25QYXRoID0gZGVzdGluYXRpb247Cit9CisKK1FTdHJp
bmcgUVdlYkRvd25sb2FkSXRlbTo6c3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25zdAoreworICAgIHJl
dHVybiBkLT5zdWdnZXN0ZWRGaWxlbmFtZTsKK30KKworUVN0cmluZyBRV2ViRG93bmxvYWRJdGVt
OjptaW1lVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPm1pbWVUeXBlOworfQorCitxdWlu
dDY0IFFXZWJEb3dubG9hZEl0ZW06OmV4cGVjdGVkQ29udGVudExlbmd0aCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGQtPmV4cGVjdGVkQ29udGVudExlbmd0aDsKK30KKworcXVpbnQ2NCBRV2ViRG93
bmxvYWRJdGVtOjp0b3RhbEJ5dGVzUmVjZWl2ZWQoKSBjb25zdAoreworICAgIHJldHVybiBkLT50
b3RhbEJ5dGVzUmVjZWl2ZWQ7Cit9CisKK3ZvaWQgUVdlYkRvd25sb2FkSXRlbTo6Y2FuY2VsKCkK
K3sKKyAgICBkLT5kb3dubG9hZFByb3h5LT5jYW5jZWwoKTsKK30KKwordm9pZCBRV2ViRG93bmxv
YWRJdGVtOjpzdGFydCgpCit7CisgICAgQVNTRVJUKCFkLT5zdWdnZXN0ZWRGaWxlbmFtZS5pc0Vt
cHR5KCkpOworCisgICAgaWYgKGQtPmRlc3RpbmF0aW9uUGF0aC5pc0VtcHR5KCkpCisgICAgICAg
IGQtPmRlc3RpbmF0aW9uUGF0aCA9IGQtPnN1Z2dlc3RlZEZpbGVuYW1lOworCisgICAgYm9vbCBh
bGxvd092ZXJ3cml0ZSA9IHRydWU7IC8vIEN1cnJlbnRseSwgd2UgZG9uJ3QgdXNlIHRoaXMuCisg
ICAgZC0+ZG93bmxvYWRQcm94eS0+ZGlkRGVjaWRlRGVzdGluYXRpb25Bc3luYyhkLT5kZXN0aW5h
dGlvblBhdGgsIGFsbG93T3ZlcndyaXRlKTsKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxvYWRpdGVtLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3F3ZWJkb3dubG9hZGl0ZW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMDkyYjQ1OTg1
OTIyYzkzYjIwYWI4NTUyM2Y3M2I2NTM5Njk4NjRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxvYWRpdGVtLmgKQEAgLTAsMCArMSw4
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3Ig
aXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgcXdlYmRvd25sb2FkaXRlbV9oCisjZGVm
aW5lIHF3ZWJkb3dubG9hZGl0ZW1faAorCisjaW5jbHVkZSAicXdlYmtpdGdsb2JhbC5oIgorI2lu
Y2x1ZGUgPFFPYmplY3Q+CisjaW5jbHVkZSA8UVVybD4KKworY2xhc3MgUVdlYkRvd25sb2FkSXRl
bVByaXZhdGU7CitjbGFzcyBRV2ViRXJyb3I7CisKK1FUX0JFR0lOX05BTUVTUEFDRQorY2xhc3Mg
UVN0cmluZzsKK1FUX0VORF9OQU1FU1BBQ0UKKworY2xhc3MgUVdFQktJVF9FWFBPUlQgUVdlYkRv
d25sb2FkSXRlbSA6IHB1YmxpYyBRT2JqZWN0IHsKKyAgICBRX09CSkVDVAorICAgIFFfUFJPUEVS
VFkocXVpbnQ2NCBjb250ZW50TGVuZ3RoIFJFQUQgZXhwZWN0ZWRDb250ZW50TGVuZ3RoIENPTlNU
QU5UIEZJTkFMKQorICAgIFFfUFJPUEVSVFkoUVN0cmluZyBkZXN0aW5hdGlvbiBSRUFEIGRlc3Rp
bmF0aW9uUGF0aCBXUklURSBzZXREZXN0aW5hdGlvblBhdGgpCisgICAgUV9QUk9QRVJUWShRU3Ry
aW5nIHN1Z2dlc3RlZEZpbGVuYW1lIFJFQUQgc3VnZ2VzdGVkRmlsZW5hbWUgQ09OU1RBTlQgRklO
QUwpCisgICAgUV9QUk9QRVJUWShxdWludDY0IHRvdGFsQnl0ZXNSZWNlaXZlZCBSRUFEIHRvdGFs
Qnl0ZXNSZWNlaXZlZCBOT1RJRlkgZGF0YVJlY2VpdmVkIEZJTkFMKQorICAgIFFfUFJPUEVSVFko
UVVybCB1cmwgUkVBRCBzb3VyY2VVcmwgQ09OU1RBTlQgRklOQUwpCisgICAgUV9FTlVNUyhEb3du
bG9hZEVycm9yKQorcHVibGljOgorICAgIHZpcnR1YWwgflFXZWJEb3dubG9hZEl0ZW0oKTsKKwor
ICAgIGVudW0gRG93bmxvYWRFcnJvciB7CisgICAgICAgIEFib3J0ZWQgPSAwLAorICAgICAgICBD
YW5ub3RXcml0ZVRvRmlsZSwKKyAgICAgICAgQ2Fubm90T3BlbkZpbGUsCisgICAgICAgIEZpbGVB
bHJlYWR5RXhpc3RzLAorICAgICAgICBDYW5jZWxsZWRCeUNhbGxlciwKKyAgICAgICAgQ2Fubm90
RGV0ZXJtaW5lRmlsZW5hbWUsCisgICAgICAgIE5ldHdvcmtGYWlsdXJlCisgICAgfTsKKworICAg
IFFVcmwgc291cmNlVXJsKCkgY29uc3Q7CisgICAgUVN0cmluZyBkZXN0aW5hdGlvblBhdGgoKSBj
b25zdDsKKyAgICBRU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3Q7CisgICAgUVN0cmlu
ZyBtaW1lVHlwZSgpIGNvbnN0OworICAgIHF1aW50NjQgZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkg
Y29uc3Q7CisgICAgcXVpbnQ2NCB0b3RhbEJ5dGVzUmVjZWl2ZWQoKSBjb25zdDsKKworcHVibGlj
IFFfU0xPVFM6CisgICAgdm9pZCBzdGFydCgpOworICAgIHZvaWQgY2FuY2VsKCk7CisgICAgdm9p
ZCBzZXREZXN0aW5hdGlvblBhdGgoY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb24pOworCitRX1NJ
R05BTFM6CisgICAgdm9pZCBkZXN0aW5hdGlvbkZpbGVDcmVhdGVkKGNvbnN0IFFTdHJpbmcmIGRl
c3RpbmF0aW9uUGF0aCk7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQocXVpbnQ2NCBieXRlc1JlY2Vp
dmVkKTsKKyAgICB2b2lkIGZpbmlzaGVkKCk7CisgICAgdm9pZCBmYWlsZWQoUVdlYkRvd25sb2Fk
SXRlbTo6RG93bmxvYWRFcnJvciBlcnJvciwgY29uc3QgUVVybCYgdXJsLCBjb25zdCBRU3RyaW5n
JiBkZXNjcmlwdGlvbik7CisKK3ByaXZhdGU6CisgICAgUVdlYkRvd25sb2FkSXRlbShRT2JqZWN0
KiBwYXJlbnQgPSAwKTsKKyAgICBRV2ViRG93bmxvYWRJdGVtUHJpdmF0ZSogZDsKKworICAgIGZy
aWVuZCBjbGFzcyBRdFdlYlBhZ2VQcm94eTsKK307CisKKyNlbmRpZiAvKiBxd2ViZG93bmxvYWRp
dGVtX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdl
YmRvd25sb2FkaXRlbV9wLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJk
b3dubG9hZGl0ZW1fcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZmZGZkMDVlNThkNWNiMTU2ODAzZjZmN2FmZWRk
ZjkzZjU0NGQxYmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3F3ZWJkb3dubG9hZGl0ZW1fcC5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgICAgQ29w
eXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgt
aWVzKQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyovCisKKworI2lmbmRlZiBxd2ViZG93bmxvYWRpdGVtX3BfaAorI2RlZmluZSBxd2ViZG93
bmxvYWRpdGVtX3BfaAorCisjaW5jbHVkZSAicXdlYmRvd25sb2FkaXRlbS5oIgorI2luY2x1ZGUg
PFFVcmw+CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgRG93bmxvYWRQcm94eTsKK30KKwor
Y2xhc3MgUVdlYkRvd25sb2FkSXRlbVByaXZhdGUgeworcHVibGljOgorICAgIFFXZWJEb3dubG9h
ZEl0ZW1Qcml2YXRlKFFXZWJEb3dubG9hZEl0ZW0qKTsKKworICAgIFFXZWJEb3dubG9hZEl0ZW0q
IHE7CisKKyAgICBXZWJLaXQ6OkRvd25sb2FkUHJveHkqIGRvd25sb2FkUHJveHk7CisKKyAgICBR
VXJsIHNvdXJjZVVybDsKKyAgICBRU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lOworICAgIFFTdHJp
bmcgZGVzdGluYXRpb25QYXRoOworICAgIFFTdHJpbmcgbWltZVR5cGU7CisgICAgcXVpbnQ2NCBl
eHBlY3RlZENvbnRlbnRMZW5ndGg7CisgICAgcXVpbnQ2NCB0b3RhbEJ5dGVzUmVjZWl2ZWQ7Cit9
OworCisjZW5kaWYgLyogcXdlYmRvd25sb2FkaXRlbV9wX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYmVycm9yLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcXdlYmVycm9yLmNwcAppbmRleCBhNWY4ZDk4OTU3NWUzMjViMGE2
ZTljNDFhMzhjZjQ5OGM4ZmJiYTY0Li5iMDI4YTYzMTMwZmVkMTg4YTMzYjNmOTA1Yzk5NzVlODhl
ODMyNDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJl
cnJvci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViZXJyb3Iu
Y3BwCkBAIC04MCwzICs4MCw4IEBAIFFVcmwgUVdlYkVycm9yOjp1cmwoKSBjb25zdAogICAgIFdL
UmV0YWluUHRyPFdLVVJMUmVmPiBmYWlsaW5nVVJMID0gYWRvcHRXSyhXS0Vycm9yQ29weUZhaWxp
bmdVUkwoZC0+ZXJyb3IuZ2V0KCkpKTsKICAgICByZXR1cm4gV0tVUkxDb3B5UVVybChmYWlsaW5n
VVJMLmdldCgpKTsKIH0KKworUVN0cmluZyBRV2ViRXJyb3I6OmRlc2NyaXB0aW9uKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gV0tTdHJpbmdDb3B5UVN0cmluZyhXS0Vycm9yQ29weUxvY2FsaXplZERl
c2NyaXB0aW9uKGQtPmVycm9yLmdldCgpKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJlcnJvci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9xd2ViZXJyb3IuaAppbmRleCBiOTc4MGFlM2I1YTI2YTk1ODI1ZTg1YWJkMWY2NmM1
MjRkYzg0OTYwLi4wMWVjYTdkMzI0NzIxMWU2M2EzMTE2Y2ZmYTc2M2QxY2MzM2Y2MjU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJlcnJvci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYmVycm9yLmgKQEAgLTIxLDYgKzIx
LDcgQEAKICNpZm5kZWYgcXdlYmVycm9yX2gKICNkZWZpbmUgcXdlYmVycm9yX2gKIAorI2luY2x1
ZGUgInF3ZWJkb3dubG9hZGl0ZW0uaCIKICNpbmNsdWRlICJxd2Via2l0Z2xvYmFsLmgiCiAjaW5j
bHVkZSA8UVNoYXJlZERhdGFQb2ludGVyPgogI2luY2x1ZGUgPFF0TmV0d29yay9RTmV0d29ya1Jl
cGx5PgpAQCAtNDMsOSArNDQsMTEgQEAgcHVibGljOgogICAgIFR5cGUgdHlwZSgpIGNvbnN0Owog
ICAgIFFVcmwgdXJsKCkgY29uc3Q7CiAgICAgaW50IGVycm9yQ29kZSgpIGNvbnN0OworICAgIFFT
dHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsKIAogICAgIGludCBlcnJvckNvZGVBc0h0dHBTdGF0
dXNDb2RlKCkgY29uc3QgeyByZXR1cm4gZXJyb3JDb2RlKCk7IH0KICAgICBRTmV0d29ya1JlcGx5
OjpOZXR3b3JrRXJyb3IgZXJyb3JDb2RlQXNOZXR3b3JrRXJyb3IoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxRTmV0d29ya1JlcGx5OjpOZXR3b3JrRXJyb3I+KGVycm9yQ29kZSgpKTsgfQor
ICAgIFFXZWJEb3dubG9hZEl0ZW06OkRvd25sb2FkRXJyb3IgZXJyb3JDb2RlQXNEb3dubG9hZEVy
cm9yKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UVdlYkRvd25sb2FkSXRlbTo6RG93bmxv
YWRFcnJvcj4oZXJyb3JDb2RlKCkpOyB9CiAKICAgICBRV2ViRXJyb3IoY29uc3QgUVdlYkVycm9y
Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkUHJveHkuY3BwCmluZGV4IGM5M2E2ZGZiZTY5YmJlMzZlNmI5MjQ0OGYwNDdiYmJiZTdkOTJk
NDIuLjA5ZGUyZjA4Yzg5NzBjMDFiOWU1NTc0MmRjNmEwZGJlZTUyNjZjNDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcApA
QCAtMTg3LDUgKzE4NywyMiBAQCB2b2lkIERvd25sb2FkUHJveHk6OmRpZENhbmNlbChjb25zdCBD
b3JlSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhKQogICAgIG1fd2ViQ29udGV4dC0+ZG93
bmxvYWRGaW5pc2hlZCh0aGlzKTsKIH0KIAordm9pZCBEb3dubG9hZFByb3h5OjpkZWNpZGVEZXN0
aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFzeW5jKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUp
Cit7CisgICAgaWYgKCFtX3dlYkNvbnRleHQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fd2Vi
Q29udGV4dC0+ZG93bmxvYWRDbGllbnQoKS5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZUFzeW5jKG1fd2ViQ29udGV4dCwgdGhpcywgZmlsZW5hbWUpOworfQorCit2b2lkIERv
d25sb2FkUHJveHk6OmRpZERlY2lkZURlc3RpbmF0aW9uQXN5bmMoY29uc3QgU3RyaW5nJiBmaWxl
bmFtZSwgYm9vbCBhbGxvd092ZXJ3cml0ZSkKK3sKKyAgICBpZiAoIW1fd2ViQ29udGV4dCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUUgKE11bHRpLVdlYlByb2Nlc3MpOiBEb3dubG9h
ZHMgc2hvdWxkbid0IGJlIGhhbmRsZWQgaW4gdGhlIHdlYiBwcm9jZXNzLgorICAgIG1fd2ViQ29u
dGV4dC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpEaWREZWNpZGVE
b3dubG9hZERlc3RpbmF0aW9uQXN5bmMobV9kb3dubG9hZElELCBmaWxlbmFtZSwgYWxsb3dPdmVy
d3JpdGUpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKaW5kZXggOTlkZGJlYzBj
YmM0YmE4ZjZkOWY0MjFmOWRiNjg1NTU4MjhiOTlkNS4uYmJkYzI3YmM5MTZmZThkZWE5YzU2ZDU3
OWMzNjQzOTRjNDY4M2VkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKQEAgLTYzLDYgKzYzLDggQEAgcHVibGljOgogICAgIHZv
aWQgZGlkUmVjZWl2ZURvd25sb2FkUHJveHlNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBD
b3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZVN5bmNEb3dubG9hZFByb3h5TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwg
Q29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBPd25QdHI8Q29y
ZUlQQzo6QXJndW1lbnRFbmNvZGVyPiYpOwogCisgICAgdm9pZCBkaWREZWNpZGVEZXN0aW5hdGlv
bkFzeW5jKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGJvb2wgYWxsb3dPdmVyd3JpdGUpOworCiBw
cml2YXRlOgogICAgIGV4cGxpY2l0IERvd25sb2FkUHJveHkoV2ViQ29udGV4dCopOwogCkBAIC03
OSw2ICs4MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRGaW5pc2goKTsKICAgICB2b2lkIGRp
ZEZhaWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IENvcmVJUEM6OkRhdGFS
ZWZlcmVuY2UmIHJlc3VtZURhdGEpOwogICAgIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IENvcmVJUEM6
OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEpOworICAgIHZvaWQgZGVjaWRlRGVzdGluYXRpb25X
aXRoU3VnZ2VzdGVkRmlsZW5hbWVBc3luYyhjb25zdCBTdHJpbmcmIGZpbGVuYW1lKTsKIAogICAg
IFdlYkNvbnRleHQqIG1fd2ViQ29udGV4dDsKICAgICB1aW50NjRfdCBtX2Rvd25sb2FkSUQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJv
eHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZDcyNTU5OTg4YjFlZjVkYzJhNDY5NjU1NzI4MzY3
M2RlMTNlYjIzNy4uMDcyOWFjNDNmYWZjM2ZmMjk1NzNmYTlhNjViNDlmZGY4MDYxNGEzMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjgsNiArMjgsNyBAQCBtZXNzYWdlcyAtPiBEb3du
bG9hZFByb3h5IHsKICAgICBEaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBsZW5ndGgpCiAgICAgU2hv
dWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUoU3RyaW5nIG1pbWVUeXBlKSAtPiAoYm9vbCBy
ZXN1bHQpCiAgICAgRGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoU3RyaW5n
IGZpbGVuYW1lKSAtPiAoU3RyaW5nIGRlc3RpbmF0aW9uLCBib29sIGFsbG93T3ZlcndyaXRlLCBX
ZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQor
ICAgIERlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQXN5bmMoU3RyaW5nIGZp
bGVuYW1lKQogICAgIERpZENyZWF0ZURlc3RpbmF0aW9uKFdURjo6U3RyaW5nIHBhdGgpCiAgICAg
RGlkRmluaXNoKCkKICAgICBEaWRGYWlsKFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIENv
cmVJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdW1lRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJEb3dubG9hZENsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViRG93bmxvYWRDbGllbnQuY3BwCmluZGV4IDYxMmEwNTZjMjA2ODIxOWU3M2NjNGY1
M2FkMWZjYTEyYWFmZDkyMjQuLjNmMzFhYWQxOWVjNTBhMjg4NjY2ZThmNjA2NWQ3MzAzNzljNDVh
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJEb3dubG9hZENsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkRvd25sb2FkQ2xpZW50LmNw
cApAQCAtMTIzLDQgKzEyMywxMiBAQCB2b2lkIFdlYkRvd25sb2FkQ2xpZW50Ojpwcm9jZXNzRGlk
Q3Jhc2goV2ViQ29udGV4dCogd2ViQ29udGV4dCwgRG93bmxvYWRQcm94eSogZAogICAgIG1fY2xp
ZW50LnByb2Nlc3NEaWRDcmFzaCh0b0FQSSh3ZWJDb250ZXh0KSwgdG9BUEkoZG93bmxvYWRQcm94
eSksIG1fY2xpZW50LmNsaWVudEluZm8pOwogfQogCit2b2lkIFdlYkRvd25sb2FkQ2xpZW50Ojpk
ZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFzeW5jKFdlYkNvbnRleHQqIHdl
YkNvbnRleHQsIERvd25sb2FkUHJveHkqIGRvd25sb2FkUHJveHksIGNvbnN0IFN0cmluZyYgZmls
ZW5hbWUpCit7CisgICAgaWYgKCFtX2NsaWVudC5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZUFzeW5jKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC5kZWNpZGVE
ZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFzeW5jKHRvQVBJKHdlYkNvbnRleHQpLCB0
b0FQSShkb3dubG9hZFByb3h5KSwgdG9BUEkoZmlsZW5hbWUuaW1wbCgpKSwgbV9jbGllbnQuY2xp
ZW50SW5mbyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkRvd25sb2FkQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViRG93bmxvYWRDbGllbnQuaAppbmRleCAyMDk1MGU1Njk2ZjdkNTQ0NjJhMWRm
YWUxZDQ2MWEyODBkM2M1N2NhLi5mOTZhMmE0YWFjNjgyNzYyZjU2ZTlmMDZlN2MzZjAwOGM5ZWUz
NjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRG93bmxvYWRDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRG93bmxvYWRDbGllbnQuaApA
QCAtNTQsNiArNTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRGYWlsKFdlYkNvbnRleHQqLCBE
b3dubG9hZFByb3h5KiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQg
ZGlkQ2FuY2VsKFdlYkNvbnRleHQqLCBEb3dubG9hZFByb3h5Kik7CiAgICAgdm9pZCBwcm9jZXNz
RGlkQ3Jhc2goV2ViQ29udGV4dCosIERvd25sb2FkUHJveHkqKTsKKyAgICB2b2lkIGRlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQXN5bmMoV2ViQ29udGV4dCosIERvd25sb2Fk
UHJveHkqLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0NsaWVudEltcGwu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0NsaWVudEltcGwuY3BwCmluZGV4IDgz
NTlhMDJiMTc1NjBlZmIzMDc5MjExNjM1OTJlZTQzOTVlNDdjNWQuLmEwYTIwZTFmMGFlODk0MmI4
MjU3NjMxZTc4N2E3NzU4ZjlkMDZkZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9DbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
Q2xpZW50SW1wbC5jcHAKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIK
ICNpbmNsdWRlICJXS1N0cmluZ1F0LmgiCiAjaW5jbHVkZSAiV0tVUkxRdC5oIgorI2luY2x1ZGUg
InF3ZWJkb3dubG9hZGl0ZW0uaCIKICNpbmNsdWRlICJxd2ViZXJyb3IuaCIKICNpbmNsdWRlICJx
d2ViZXJyb3JfcC5oIgogI2luY2x1ZGUgPFBvbGljeUludGVyZmFjZS5oPgpAQCAtMjE4LDMgKzIx
OSwzNSBAQCB2b2lkIHF0X3drX2RlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV0tQYWdl
UmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLRgogICAgICAgICBicmVhazsKICAgICB9CiB9
CisKK3ZvaWQgcXRfd2tfZGlkUmVjZWl2ZVJlc3BvbnNlKFdLQ29udGV4dFJlZiBjb250ZXh0LCBX
S0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1VSTFJlc3BvbnNlUmVmIHJlc3BvbnNlLCBjb25zdCB2
b2lkICpjbGllbnRJbmZvKQoreworICAgIHRvUXRXZWJQYWdlUHJveHkoY2xpZW50SW5mbyktPmRv
d25sb2FkUmVjZWl2ZWRSZXNwb25zZSh0b0ltcGwoZG93bmxvYWQpLCB0b0ltcGwocmVzcG9uc2Up
LT5yZXNvdXJjZVJlc3BvbnNlKCkpOworfQorCit2b2lkIHF0X3drX2RpZENyZWF0ZURlc3RpbmF0
aW9uKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1N0cmlu
Z1JlZiBwYXRoLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQoreworICAgIHRvUXRXZWJQYWdlUHJv
eHkoY2xpZW50SW5mbyktPmRvd25sb2FkQ3JlYXRlZERlc3RpbmF0aW9uKHRvSW1wbChkb3dubG9h
ZCksIFdLU3RyaW5nQ29weVFTdHJpbmcocGF0aCkpOworfQorCit2b2lkIHF0X3drX2RpZEZpbmlz
aERvd25sb2FkKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBj
b25zdCB2b2lkICpjbGllbnRJbmZvKQoreworICAgIHRvUXRXZWJQYWdlUHJveHkoY2xpZW50SW5m
byktPmRvd25sb2FkRmluaXNoZWQodG9JbXBsKGRvd25sb2FkKSk7Cit9CisKK3ZvaWQgcXRfd2tf
ZGlkRmFpbERvd25sb2FkKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25s
b2FkLCBXS0Vycm9yUmVmIGVycm9yLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQoreworICAgIFFV
cmwgZmFpbGluZ1VybCA9IFdLVVJMQ29weVFVcmwoV0tFcnJvckNvcHlGYWlsaW5nVVJMKGVycm9y
KSk7CisKKyAgICB0b1F0V2ViUGFnZVByb3h5KGNsaWVudEluZm8pLT5kb3dubG9hZEZhaWxlZCh0
b0ltcGwoZG93bmxvYWQpLCBRV2ViRXJyb3JQcml2YXRlOjpjcmVhdGVRV2ViRXJyb3IoZXJyb3Ip
KTsKK30KKwordm9pZCBxdF93a19kaWRSZWNlaXZlRGF0YUZvckRvd25sb2FkKFdLQ29udGV4dFJl
ZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCB1aW50NjRfdCBsZW5ndGgsIGNvbnN0
IHZvaWQgKmNsaWVudEluZm8pCit7CisgICAgdG9RdFdlYlBhZ2VQcm94eShjbGllbnRJbmZvKS0+
ZG93bmxvYWREYXRhUmVjZWl2ZWQodG9JbXBsKGRvd25sb2FkKSwgbGVuZ3RoKTsKK30KKwordm9p
ZCBxdF93a19kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFzeW5jKFdLQ29u
dGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1N0cmluZ1JlZiBmaWxl
bmFtZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKK3sKKyAgICB0b1F0V2ViUGFnZVByb3h5KGNs
aWVudEluZm8pLT5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSh0b0ltcGwo
ZG93bmxvYWQpLCBXS1N0cmluZ0NvcHlRU3RyaW5nKGZpbGVuYW1lKSk7Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3F0L0NsaWVudEltcGwuaAppbmRleCBkZTQ2NzYwZWE2MDI2NDVkOWZkMGVk
ODE1OGY3ODFjZjUyNTUwMjIxLi4zMmNmZjRkMGZmYmRhM2M3ZGEwM2JjYzQ3NjUyNWFkMWQ3M2Iy
ZGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmgKQEAgLTQ2LDYg
KzQ2LDE0IEBAIHZvaWQgcXRfd2tfbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV0tQYWdlUmVmLCBX
S0hpdFRlc3RSZXN1bHRSZWYsIFdLRXZlbnRNb2RpZmllCiAvLyBQb2xpY3kgY2xpZW50Lgogdm9p
ZCBxdF93a19kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdLUGFnZVJlZiwgV0tGcmFt
ZVJlZiwgV0tGcmFtZU5hdmlnYXRpb25UeXBlLCBXS0V2ZW50TW9kaWZpZXJzLCBXS0V2ZW50TW91
c2VCdXR0b24sIFdLVVJMUmVxdWVzdFJlZiwgV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmLCBXS1R5
cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogCisvLyBEb3dubG9hZCBj
bGllbnQuCit2b2lkIHF0X3drX2RpZFJlY2VpdmVSZXNwb25zZShXS0NvbnRleHRSZWYsIFdLRG93
bmxvYWRSZWYsIFdLVVJMUmVzcG9uc2VSZWYsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordm9p
ZCBxdF93a19kaWRDcmVhdGVEZXN0aW5hdGlvbihXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYs
IFdLU3RyaW5nUmVmIHBhdGgsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordm9pZCBxdF93a19k
aWRGaW5pc2hEb3dubG9hZChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIGNvbnN0IHZvaWQg
KmNsaWVudEluZm8pOwordm9pZCBxdF93a19kaWRGYWlsRG93bmxvYWQoV0tDb250ZXh0UmVmLCBX
S0Rvd25sb2FkUmVmLCBXS0Vycm9yUmVmLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3ZvaWQg
cXRfd2tfZGlkUmVjZWl2ZURhdGFGb3JEb3dubG9hZChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRS
ZWYsIHVpbnQ2NF90IGxlbmd0aCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit2b2lkIHF0X3dr
X2RlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQXN5bmMoV0tDb250ZXh0UmVm
LCBXS0Rvd25sb2FkUmVmLCBXS1N0cmluZ1JlZiBmaWxlbmFtZSwgY29uc3Qgdm9pZCAqY2xpZW50
SW5mbyk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcAppbmRleCAxM2ZlNDUyZTA5MGZmNzdk
OGY1ZWE5M2FhYWIwZWRiNTFiNThiNWU4Li5jM2MwNWM2MjU0OGMwOTMxZjRlMGVkZmMzMDcyZmM4
NDNiYWQwNDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQ
YWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQ
cm94eS5jcHAKQEAgLTIxLDEwICsyMSwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIlF0V2ViUGFnZVByb3h5LmgiCiAKKyNpbmNsdWRlICJxd2ViZG93bmxvYWRpdGVtLmgiCisj
aW5jbHVkZSAicXdlYmRvd25sb2FkaXRlbV9wLmgiCiAjaW5jbHVkZSAicXdlYmVycm9yLmgiCiAj
aW5jbHVkZSAicXdrcHJlZmVyZW5jZXNfcC5oIgogCiAjaW5jbHVkZSAiQ2xpZW50SW1wbC5oIgor
I2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKICNpbmNsdWRlICJxd2toaXN0b3J5LmgiCiAjaW5j
bHVkZSAicXdraGlzdG9yeV9wLmgiCiAjaW5jbHVkZSAiRmluZEluZGljYXRvci5oIgpAQCAtMTU1
LDYgKzE1OCwxOCBAQCB2b2lkIFF0V2ViUGFnZVByb3h5Ojppbml0KCkKICAgICAgICAgcG9saWN5
Q2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gPSBxdF93a19kZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uOwogICAgICAgICBXS1BhZ2VTZXRQYWdlUG9saWN5Q2xpZW50
KHRvQVBJKG1fd2ViUGFnZVByb3h5LmdldCgpKSwgJnBvbGljeUNsaWVudCk7CiAgICAgfQorCisg
ICAgV0tDb250ZXh0RG93bmxvYWRDbGllbnQgZG93bmxvYWRDbGllbnQ7CisgICAgbWVtc2V0KCZk
b3dubG9hZENsaWVudCwgMCwgc2l6ZW9mKFdLQ29udGV4dERvd25sb2FkQ2xpZW50KSk7CisgICAg
ZG93bmxvYWRDbGllbnQudmVyc2lvbiA9IGtXS0NvbnRleHREb3dubG9hZENsaWVudEN1cnJlbnRW
ZXJzaW9uOworICAgIGRvd25sb2FkQ2xpZW50LmNsaWVudEluZm8gPSAgdGhpczsKKyAgICBkb3du
bG9hZENsaWVudC5kaWRSZWNlaXZlUmVzcG9uc2UgPSBxdF93a19kaWRSZWNlaXZlUmVzcG9uc2U7
CisgICAgZG93bmxvYWRDbGllbnQuZGlkUmVjZWl2ZURhdGEgPSBxdF93a19kaWRSZWNlaXZlRGF0
YUZvckRvd25sb2FkOworICAgIGRvd25sb2FkQ2xpZW50LmRpZENyZWF0ZURlc3RpbmF0aW9uID0g
cXRfd2tfZGlkQ3JlYXRlRGVzdGluYXRpb247CisgICAgZG93bmxvYWRDbGllbnQuZGlkRmluaXNo
ID0gcXRfd2tfZGlkRmluaXNoRG93bmxvYWQ7CisgICAgZG93bmxvYWRDbGllbnQuZGlkRmFpbCA9
IHF0X3drX2RpZEZhaWxEb3dubG9hZDsKKyAgICBkb3dubG9hZENsaWVudC5kZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFzeW5jID0gcXRfd2tfZGVjaWRlRGVzdGluYXRpb25X
aXRoU3VnZ2VzdGVkRmlsZW5hbWVBc3luYzsKKyAgICBXS0NvbnRleHRTZXREb3dubG9hZENsaWVu
dCh0b0FQSShtX2NvbnRleHQuZ2V0KCkpLCAmZG93bmxvYWRDbGllbnQpOwogfQogCiBRdFdlYlBh
Z2VQcm94eTo6flF0V2ViUGFnZVByb3h5KCkKQEAgLTY5Nyw0ICs3MTIsNTkgQEAgdm9pZCBRdFdl
YlBhZ2VQcm94eTo6c2V0UGFnZUlzVmlzaWJsZShib29sIGlzVmlzaWJsZSkKICAgICBtX3dlYlBh
Z2VQcm94eS0+ZHJhd2luZ0FyZWEoKS0+c2V0UGFnZUlzVmlzaWJsZShpc1Zpc2libGUpOwogfQog
Cit2b2lkIFF0V2ViUGFnZVByb3h5Ojpkb3dubG9hZFJlY2VpdmVkUmVzcG9uc2UoV2ViS2l0OjpE
b3dubG9hZFByb3h5KiBkb3dubG9hZCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCit7CisgICAgLy8gV2lsbCBiZSBjYWxsZWQgd2hlbiB0aGUgaGVhZGVycyBhcmUg
cmVhZCBieSBXZWJQcm9jZXNzLgorICAgIFFXZWJEb3dubG9hZEl0ZW0qIGRvd25sb2FkSXRlbSA9
IG5ldyBRV2ViRG93bmxvYWRJdGVtKDApOworICAgIGRvd25sb2FkSXRlbS0+ZC0+ZG93bmxvYWRQ
cm94eSA9IGRvd25sb2FkOworICAgIGRvd25sb2FkSXRlbS0+ZC0+c291cmNlVXJsID0gcmVzcG9u
c2UudXJsKCk7CisgICAgZG93bmxvYWRJdGVtLT5kLT5taW1lVHlwZSA9IHJlc3BvbnNlLm1pbWVU
eXBlKCk7CisgICAgZG93bmxvYWRJdGVtLT5kLT5leHBlY3RlZENvbnRlbnRMZW5ndGggPSByZXNw
b25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKTsKKworICAgIG1fZG93bmxvYWRzW2Rvd25sb2Fk
LT5kb3dubG9hZElEKCldID0gZG93bmxvYWRJdGVtOworICAgIC8vIFdlIGRvbid0IGVtaXQgVmll
d0ludGVyZmFjZTo6ZG93bmxvYWRSZXF1ZXN0IHlldCBhcyB3ZSBzdGlsbCBuZWVkIHRoZSBzdWdn
ZXN0ZWQgZmlsZW5hbWUuCit9CisKK3ZvaWQgUXRXZWJQYWdlUHJveHk6OmRvd25sb2FkQ3JlYXRl
ZERlc3RpbmF0aW9uKFdlYktpdDo6RG93bmxvYWRQcm94eSogZG93bmxvYWQsIGNvbnN0IFFTdHJp
bmcmIHBhdGgpCit7CisgICAgUVdlYkRvd25sb2FkSXRlbSogZG93bmxvYWRJdGVtID0gbV9kb3du
bG9hZHMudmFsdWUoZG93bmxvYWQtPmRvd25sb2FkSUQoKSk7CisgICAgQVNTRVJUKGRvd25sb2Fk
SXRlbSk7CisgICAgZG93bmxvYWRJdGVtLT5kLT5kZXN0aW5hdGlvblBhdGggPSBwYXRoOworICAg
IGVtaXQgZG93bmxvYWRJdGVtLT5kZXN0aW5hdGlvbkZpbGVDcmVhdGVkKGRvd25sb2FkSXRlbS0+
ZC0+ZGVzdGluYXRpb25QYXRoKTsKK30KKwordm9pZCBRdFdlYlBhZ2VQcm94eTo6ZG93bmxvYWRG
aW5pc2hlZChXZWJLaXQ6OkRvd25sb2FkUHJveHkqIGRvd25sb2FkKQoreworICAgIFFXZWJEb3du
bG9hZEl0ZW0qIGRvd25sb2FkSXRlbSA9IG1fZG93bmxvYWRzLnRha2UoZG93bmxvYWQtPmRvd25s
b2FkSUQoKSk7CisgICAgQVNTRVJUKGRvd25sb2FkSXRlbSk7CisgICAgZW1pdCBkb3dubG9hZEl0
ZW0tPmZpbmlzaGVkKCk7Cit9CisKK3ZvaWQgUXRXZWJQYWdlUHJveHk6OmRvd25sb2FkRmFpbGVk
KFdlYktpdDo6RG93bmxvYWRQcm94eSogZG93bmxvYWQsIGNvbnN0IFFXZWJFcnJvciYgZXJyb3Ip
Cit7CisgICAgUVdlYkRvd25sb2FkSXRlbSogZG93bmxvYWRJdGVtID0gbV9kb3dubG9hZHMudGFr
ZShkb3dubG9hZC0+ZG93bmxvYWRJRCgpKTsKKyAgICBBU1NFUlQoZG93bmxvYWRJdGVtKTsKKyAg
ICBlbWl0IGRvd25sb2FkSXRlbS0+ZmFpbGVkKGVycm9yLmVycm9yQ29kZUFzRG93bmxvYWRFcnJv
cigpLCBlcnJvci51cmwoKSwgZXJyb3IuZGVzY3JpcHRpb24oKSk7Cit9CisKK3ZvaWQgUXRXZWJQ
YWdlUHJveHk6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYktpdDo6
RG93bmxvYWRQcm94eSogZG93bmxvYWQsIGNvbnN0IFFTdHJpbmcmIHBhdGgpCit7CisgICAgUVdl
YkRvd25sb2FkSXRlbSogZG93bmxvYWRJdGVtID0gbV9kb3dubG9hZHMudmFsdWUoZG93bmxvYWQt
PmRvd25sb2FkSUQoKSk7CisgICAgQVNTRVJUKGRvd25sb2FkSXRlbSk7CisKKyAgICBkb3dubG9h
ZEl0ZW0tPmQtPnN1Z2dlc3RlZEZpbGVuYW1lID0gcGF0aDsKKworICAgIC8vIE5vdyB0aGF0IG91
ciBkb3dubG9hZEl0ZW0gaGFzIGV2ZXJ5dGhpbmcgd2UgbmVlZCB3ZSBjYW4gZW1pdCBkb3dubG9h
ZFJlcXVlc3RlZC4KKyAgICBtX3ZpZXdJbnRlcmZhY2UtPmRvd25sb2FkUmVxdWVzdGVkKGRvd25s
b2FkSXRlbSk7Cit9CisKK3ZvaWQgUXRXZWJQYWdlUHJveHk6OmRvd25sb2FkRGF0YVJlY2VpdmVk
KFdlYktpdDo6RG93bmxvYWRQcm94eSogZG93bmxvYWQsIHVpbnQ2NF90IGxlbmd0aCkKK3sKKyAg
ICAvLyBXaWxsIGJlIGNhbGxlZCBldmVyeXRpbWUgYnl0ZXMgd2VyZSB3cml0dGVuIHRvIGRlc3Rp
bmF0aW9uIGZpbGUgYnkgV2ViUHJvY2Vzcy4KKyAgICBRV2ViRG93bmxvYWRJdGVtKiBkb3dubG9h
ZEl0ZW0gPSBtX2Rvd25sb2Fkcy52YWx1ZShkb3dubG9hZC0+ZG93bmxvYWRJRCgpKTsKKyAgICBB
U1NFUlQoZG93bmxvYWRJdGVtKTsKKyAgICBkb3dubG9hZEl0ZW0tPmQtPnRvdGFsQnl0ZXNSZWNl
aXZlZCArPSBsZW5ndGg7CisgICAgZW1pdCBkb3dubG9hZEl0ZW0tPmRhdGFSZWNlaXZlZChsZW5n
dGgpOworfQorCiAjaW5jbHVkZSAibW9jX1F0V2ViUGFnZVByb3h5LmNwcCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmgKaW5kZXggZmJkNjQxNTRjY2NmZjcy
ZjkwNmZhMTQ5YTdhYTc3NzNlM2QxOTNhMC4uYzM2YjUzODY1ZmZjNWZiYmU5Y2E2Y2E5YzE4YmMx
MWFlNjgyMTFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2Vi
UGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVBy
b3h5LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJMYXllclRyZWVDb250ZXh0LmgiCiAj
aW5jbHVkZSAiUGFnZUNsaWVudC5oIgogI2luY2x1ZGUgIlBvbGljeUludGVyZmFjZS5oIgorI2lu
Y2x1ZGUgInF3ZWJkb3dubG9hZGl0ZW0uaCIKICNpbmNsdWRlICJxd2Via2l0dHlwZXMuaCIKICNp
bmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50cy5o
IgpAQCAtMTc0LDYgKzE3NSwxMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFBhZ2VJc1Zpc2li
bGUoYm9vbCk7CiAKKyAgICB2b2lkIGRvd25sb2FkUmVjZWl2ZWRSZXNwb25zZShXZWJLaXQ6OkRv
d25sb2FkUHJveHkqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgdm9p
ZCBkb3dubG9hZENyZWF0ZWREZXN0aW5hdGlvbihXZWJLaXQ6OkRvd25sb2FkUHJveHkqLCBjb25z
dCBRU3RyaW5nJiBwYXRoKTsKKyAgICB2b2lkIGRvd25sb2FkRmluaXNoZWQoV2ViS2l0OjpEb3du
bG9hZFByb3h5Kik7CisgICAgdm9pZCBkb3dubG9hZEZhaWxlZChXZWJLaXQ6OkRvd25sb2FkUHJv
eHkqLCBjb25zdCBRV2ViRXJyb3ImKTsKKyAgICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lKFdlYktpdDo6RG93bmxvYWRQcm94eSosIGNvbnN0IFFTdHJpbmcmIHBh
dGgpOworICAgIHZvaWQgZG93bmxvYWREYXRhUmVjZWl2ZWQoV2ViS2l0OjpEb3dubG9hZFByb3h5
KiwgdWludDY0X3QgbGVuZ3RoKTsKKwogcHVibGljIFFfU0xPVFM6CiAgICAgdm9pZCB3ZWJBY3Rp
b25UcmlnZ2VyZWQoYm9vbCBjaGVja2VkKTsKIApAQCAtMjA3LDYgKzIxNSw4IEBAIHByaXZhdGU6
CiAKICAgICBPd25QdHI8UVVuZG9TdGFjaz4gbV91bmRvU3RhY2s7CiAgICAgaW50IG1fbG9hZFBy
b2dyZXNzOworCisgICAgUU1hcDx1aW50NjRfdCwgUVdlYkRvd25sb2FkSXRlbSo+IG1fZG93bmxv
YWRzOwogfTsKIAogI2VuZGlmIC8qIFF0V2ViUGFnZVByb3h5X2ggKi8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2UuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2UuaAppbmRleCBkMTVlODZkZTE5
NWFlMDA3M2FkMDk2NmFiZTlmYWVjZTIxYzk3ZmEyLi41YmY5Yzk2MjQ3MDJmMjFlN2U4YmZjNGU4
OWEzNzM3ZDQ2ZmZiMWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
VG91Y2hWaWV3SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1Rv
dWNoVmlld0ludGVyZmFjZS5oCkBAIC03OCw2ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCBRSlNFbmdpbmUqIGVuZ2luZSgpOwogCiAgICAgdmlydHVhbCB2b2lkIGNob29zZUZpbGVzKFdL
T3BlblBhbmVsUmVzdWx0TGlzdGVuZXJSZWYsIGNvbnN0IFFTdHJpbmdMaXN0JiwgRmlsZUNob29z
ZXJUeXBlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWRSZXF1ZXN0ZWQoUVdlYkRvd25s
b2FkSXRlbSogZG93bmxvYWRJdGVtKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRNb3VzZU1v
dmVPdmVyRWxlbWVudChjb25zdCBRVXJsJiwgY29uc3QgUVN0cmluZyYpIHsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVmlld0ludGVyZmFjZS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1ZpZXdJbnRlcmZhY2UuaAppbmRleCAxNjFkNDgxMzc4M2E2
NWI3ZTE3ZDE0ZDFiNmRlYjU0ZmZlY2IxNDY0Li40NTdhOWEwMTJiOWQ1YzBjMzc2ZGIyZDcxOTJh
MDM2NTQ0MDJlYmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVmll
d0ludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9WaWV3SW50ZXJm
YWNlLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlIDxRTWVudT4KICNpbmNsdWRlIDxXZWJL
aXQyL1dLQmFzZS5oPgogCitjbGFzcyBRV2ViRG93bmxvYWRJdGVtOwogY2xhc3MgUVdlYkVycm9y
OwogCiBRVF9CRUdJTl9OQU1FU1BBQ0UKQEAgLTkwLDYgKzkxLDggQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBjaG9vc2VGaWxlcyhXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmLCBjb25z
dCBRU3RyaW5nTGlzdCYgc2VsZWN0ZWRGaWxlTmFtZXMsIEZpbGVDaG9vc2VyVHlwZSkgPSAwOwog
CiAgICAgdmlydHVhbCB2b2lkIGRpZE1vdXNlTW92ZU92ZXJFbGVtZW50KGNvbnN0IFFVcmwmLCBj
b25zdCBRU3RyaW5nJikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGRvd25sb2FkUmVxdWVzdGVk
KFFXZWJEb3dubG9hZEl0ZW0qKSA9IDA7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyQVBJLnByaSBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDJBUEkucHJpCmluZGV4
IDBiMmFhZmY3NmI0ZTk3MDZmOGYxZDhiMjYzN2IyNjAyZTVhMzRlYzcuLjRjYjVkYmU4OTdjMTU2
YjFkMDAwZjg5NTgyMTQ2YTUyZTU1ZDRkYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YktpdDJBUEkucHJpCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDJBUEkucHJpCkBAIC00OSw2
ICs0OSw3IEBAIFdFQktJVDJfQVBJX1NPVVJDRVMgPSBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9jcHAvcXQvV0tTdHJpbmdRdC5jcHAgXAogICAgICQkU09VUkNFX0RJ
Ui9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL3F0L1dLVVJMUXQuY3BwIFwKICAgICAkJFNPVVJD
RV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHAgXAorICAg
ICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYmRvd25sb2FkaXRlbS5j
cHAgXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2Vi
cGFnZS5jcHAgXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRv
dWNod2Vidmlldy5jcHAgXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcXdlYmVycm9yLmNwcCBcCkBAIC0xMzAsNiArMTMxLDggQEAgV0VCS0lUMl9BUElfSEVBREVS
UyArPSBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvcXQvV0tV
UkxRdC5oIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNr
dG9wd2Vidmlldy5oIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3FkZXNrdG9wd2Vidmlld19wLmggXAorICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXdlYmRvd25sb2FkaXRlbS5oIFwKKyAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3F3ZWJkb3dubG9hZGl0ZW1fcC5oIFwKICAgICAkJFNPVVJDRV9ESVIv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2UuaCBcCiAgICAgJCRTT1VSQ0Vf
RElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJwYWdlX3AuaCBcCiAgICAgJCRT
T1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3LmggXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwCmluZGV4
IDFkMDU5NDE1YWY4YWM2NjgzMDgxNzJkNDU5MjNiNDgxYzE2YzViN2QuLjNlNDBmNjY2YjUxMjBk
MmQ3MTliNTg1Njk0YTg4ZmYyZDQ4NTlkN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAKQEAgLTExNSw2ICsxMTUsMTEgQEAgU3RyaW5n
IERvd25sb2FkOjpyZXRyaWV2ZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUKICAgICByZXR1cm4gZGVzdGluYXRpb247CiB9CiAKK3ZvaWQgRG93
bmxvYWQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQXN5bmMoY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjpE
ZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFzeW5jKGZpbGVuYW1lKSk7Cit9
CisKIFN0cmluZyBEb3dubG9hZDo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5h
bWUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgYm9vbCYgYWxsb3dPdmVyd3JpdGUpCiB7CiAgICAg
U3RyaW5nIGRlc3RpbmF0aW9uID0gcmV0cmlldmVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxl
bmFtZShmaWxlbmFtZSwgYWxsb3dPdmVyd3JpdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKaW5kZXggYWNjY2QzZjg4ZTJhNjk5NTk3YTM5Yjdi
ZjgyOGQ0MzYzN2I3MGYzOC4uNWVmNGI4NGQ3MjAwZjYyZjRjZGIyOTBlNzE4ZDllOTBhOTJiOGI5
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5o
CkBAIC05Miw2ICs5Miw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IENvcmVJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURh
dGEpOwogICAgIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IENvcmVJUEM6OkRhdGFSZWZlcmVuY2UmIHJl
c3VtZURhdGEpOwogICAgIHZvaWQgZGlkRGVjaWRlRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiwg
Ym9vbCBhbGxvd092ZXJ3cml0ZSk7CisgICAgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdn
ZXN0ZWRGaWxlbmFtZUFzeW5jKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpOworICAgIHZvaWQgZGlk
RGVjaWRlRGVzdGluYXRpb25Bc3luYyhjb25zdCBTdHJpbmcmLCBib29sIGFsbG93T3ZlcndyaXRl
KTsKIAogI2lmIFVTRShDRk5FVFdPUkspCiAgICAgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb247IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCmluZGV4IGE2MjQ4
OTFmODAxOTRmM2FkYzE1MTgxYWM4MDg0YjQ2OTU1OGJjYjYuLmJmODc3MDI1NDg4NGY1MjY3NDg2
NzQ1MWE2ODUzZGUwZTQ4ZGMzMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcApAQCAtNzksNCArNzksMTEgQEAg
dm9pZCBEb3dubG9hZE1hbmFnZXI6OmRvd25sb2FkRmluaXNoZWQoRG93bmxvYWQqIGRvd25sb2Fk
KQogICAgIGRlbGV0ZSBkb3dubG9hZDsKIH0KIAordm9pZCBEb3dubG9hZE1hbmFnZXI6OmRpZERl
Y2lkZURvd25sb2FkRGVzdGluYXRpb25Bc3luYyh1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBT
dHJpbmcmIGRlc3RpbmF0aW9uLCBib29sIGFsbG93T3ZlcndyaXRlKQoreworICAgIEFTU0VSVCht
X2Rvd25sb2Fkcy5jb250YWlucyhkb3dubG9hZElEKSk7CisgICAgRG93bmxvYWQqIGRvd25sb2Fk
ID0gbV9kb3dubG9hZHMuZ2V0KGRvd25sb2FkSUQpOworICAgIGRvd25sb2FkLT5kaWREZWNpZGVE
ZXN0aW5hdGlvbkFzeW5jKGRlc3RpbmF0aW9uLCBhbGxvd092ZXJ3cml0ZSk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAppbmRleCAxZjI3Yjg2N2FlZDU1OGZiYjc1M2JjNjUy
ZjE4YjBhY2I2OWEwMDIzLi4wZmI5MzM2MGY3NzBhYzEyYTk0M2M3YWZiOTEzOGMyZTUxODEwMDI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZE1hbmFnZXIuaApAQCAtMjksNiArMjksMTAgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCituYW1lc3BhY2UgV1RGIHsKK2NsYXNz
IFN0cmluZzsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFJlc291cmNlSGFu
ZGxlOwogICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKQEAgLTU0LDYgKzU4LDggQEAgcHVibGlj
OgogICAgIHZvaWQgZG93bmxvYWRGaW5pc2hlZChEb3dubG9hZCopOwogICAgIGJvb2wgaXNEb3du
bG9hZGluZygpIGNvbnN0IHsgcmV0dXJuICFtX2Rvd25sb2Fkcy5pc0VtcHR5KCk7IH0KIAorICAg
IHZvaWQgZGlkRGVjaWRlRG93bmxvYWREZXN0aW5hdGlvbkFzeW5jKHVpbnQ2NF90IGRvd25sb2Fk
SUQsIGNvbnN0IFdURjo6U3RyaW5nJiBkZXN0aW5hdGlvbiwgYm9vbCBhbGxvd092ZXJ3cml0ZSk7
CisKIHByaXZhdGU6CiAgICAgRG93bmxvYWRNYW5hZ2VyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL2NmbmV0L0Rvd25sb2FkQ0ZOZXQuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvY2ZuZXQvRG93bmxvYWRDRk5ldC5j
cHAKaW5kZXggMmI4OWZjOWIxMDhkMzBmMTNiOWVjNjY1N2JhMTVlYWRlMmY3NDIwNi4uMGU1M2Rh
OGQ0NDczMjhlNmE4ZDA1YjE1NDE2MTdjZjZmYThkYjMyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvY2ZuZXQvRG93bmxvYWRDRk5ldC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvY2ZuZXQvRG93bmxvYWRDRk5ldC5j
cHAKQEAgLTI2MCw0ICsyNjAsOSBAQCB2b2lkIERvd25sb2FkOjpyZWNlaXZlZENhbmNlbGxhdGlv
bihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpbwogICAgIGF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLmF1dGhlbnRpY2F0aW9uQ2xpZW50KCktPnJlY2VpdmVkQ2FuY2Vs
bGF0aW9uKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTsKIH0KIAordm9pZCBEb3dubG9hZDo6ZGlk
RGVjaWRlRGVzdGluYXRpb25Bc3luYyhjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uLCBib29sIGFs
bG93T3ZlcndyaXRlKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9h
ZHMvY3VybC9Eb3dubG9hZEN1cmwuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3du
bG9hZHMvY3VybC9Eb3dubG9hZEN1cmwuY3BwCmluZGV4IDIwYTMzMjFjODJjYmFiMzVkMzhjNDc0
OWI4NGZjZTc5ODY2Yjk3MzMuLjM0ODc2YTYwNDc4OGNjYTFjNDA2ZTcxMGM1ZDI1ZjdlOTFmMTI2
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL2N1cmwv
RG93bmxvYWRDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fk
cy9jdXJsL0Rvd25sb2FkQ3VybC5jcHAKQEAgLTg4LDQgKzg4LDkgQEAgdm9pZCBEb3dubG9hZDo6
Y2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgRG93bmxvYWQ6OmRpZERlY2lk
ZURlc3RpbmF0aW9uQXN5bmMoY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbiwgYm9vbCBhbGxvd092
ZXJ3cml0ZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL21h
Yy9Eb3dubG9hZE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL21h
Yy9Eb3dubG9hZE1hYy5tbQppbmRleCAwZGE3MjNiNDc5ZjMyN2QwNDRiZDVjYTg2Yzg1ZmI1NDAz
MWNlMDFmLi42YzczOGU0YmM2ZWFkY2UxNzMwMWI2ZmMwZGM5YjZkMDIzZDJkZmVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvbWFjL0Rvd25sb2Fk
TWFjLm1tCkBAIC0xOTMsNiArMTkzLDExIEBAIHZvaWQgRG93bmxvYWQ6OnJlY2VpdmVkQ2FuY2Vs
bGF0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvCiAgICAg
W2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnNlbmRlcigpIGNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLm5zVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoKV07CiB9CiAKK3ZvaWQgRG93bmxvYWQ6OmRpZERlY2lkZURlc3RpbmF0aW9uQXN5bmMoY29u
c3QgU3RyaW5nJiBkZXN0aW5hdGlvbiwgYm9vbCBhbGxvd092ZXJ3cml0ZSkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogQGltcGxlbWVudGF0
aW9uIFdLRG93bmxvYWRBc0RlbGVnYXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0Rvd25sb2Fkcy9xdC9Eb3dubG9hZFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvRG93bmxvYWRzL3F0L0Rvd25sb2FkUXQuY3BwCmluZGV4IDllZTk5OTVlODBlODgwZGRh
NmQyN2M5YTNiNTBmMGMxNjFkZWEwZTAuLmYzMGY2ZGM1NTdmNTRiMDhjMjkxMWRjZDE0NzMxYWU2
ZjI3MTdhMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRz
L3F0L0Rvd25sb2FkUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxv
YWRzL3F0L0Rvd25sb2FkUXQuY3BwCkBAIC01Myw2ICs1Myw3IEBAIHZvaWQgRG93bmxvYWQ6OnN0
YXJ0V2l0aEhhbmRsZShXZWJQYWdlKiBpbml0aWF0aW5nUGFnZSwgUmVzb3VyY2VIYW5kbGUqIGhh
bmRsZSwKIHsKICAgICBBU1NFUlQoIW1fcXREb3dubG9hZGVyKTsKICAgICBtX3F0RG93bmxvYWRl
ciA9IG5ldyBRdEZpbGVEb3dubG9hZGVyKHRoaXMsIGFkb3B0UHRyKGhhbmRsZS0+Z2V0SW50ZXJu
YWwoKS0+bV9qb2ItPnJlbGVhc2UoKSkpOworICAgIG1fcXREb3dubG9hZGVyLT5zdGFydCgpOwog
fQogCiB2b2lkIERvd25sb2FkOjpjYW5jZWwoKQpAQCAtNzAsNiArNzEsMTEgQEAgdm9pZCBEb3du
bG9hZDo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKIAogdm9pZCBEb3dubG9hZDo6ZGlkRGVjaWRlRGVz
dGluYXRpb24oY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbiwgYm9vbCBhbGxvd092ZXJ3cml0ZSkK
IHsKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIERvd25sb2FkOjpkaWREZWNpZGVE
ZXN0aW5hdGlvbkFzeW5jKGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24sIGJvb2wgYWxsb3dPdmVy
d3JpdGUpCit7CiAgICAgbV9xdERvd25sb2FkZXItPmRlY2lkZWREZXN0aW5hdGlvbihkZXN0aW5h
dGlvbiwgYWxsb3dPdmVyd3JpdGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3dubG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L1F0RmlsZURvd25sb2FkZXIuY3BwCmluZGV4IGM5
MzZiMDhlNzBmOTA0Y2Y0YjViMzM2ZjU0YjcyNjk3N2RiZWQwZjkuLmI2MzZjMjFiMzNmOGRjZjc0
NDE1YzhjYTI5YWJmNzZkYzQ2YWQyOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvRG93bmxvYWRzL3F0L1F0RmlsZURvd25sb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L1F0RmlsZURvd25sb2FkZXIuY3BwCkBAIC01OCw5
ICs1OCw2IEBAIHZvaWQgUXRGaWxlRG93bmxvYWRlcjo6c3RhcnQoKQogICAgIGNvbm5lY3QobV9y
ZXBseS5nZXQoKSwgU0lHTkFMKHJlYWR5UmVhZCgpKSwgU0xPVChvblJlYWR5UmVhZCgpKSk7CiAg
ICAgY29ubmVjdChtX3JlcGx5LmdldCgpLCBTSUdOQUwoZmluaXNoZWQoKSksIFNMT1Qob25GaW5p
c2hlZCgpKSk7CiAgICAgY29ubmVjdChtX3JlcGx5LmdldCgpLCBTSUdOQUwoZXJyb3IoUU5ldHdv
cmtSZXBseTo6TmV0d29ya0Vycm9yKSksIFNMT1Qob25FcnJvcihRTmV0d29ya1JlcGx5OjpOZXR3
b3JrRXJyb3IpKSk7Ci0KLSAgICAvLyBDYWxsIG9uUmVhZHlSZWFkIGp1c3QgaW4gY2FzZSBzb21l
IGRhdGEgaXMgYWxyZWFkeSB3YWl0aW5nLgotICAgIG9uUmVhZHlSZWFkKCk7CiB9CiAKIHZvaWQg
UXRGaWxlRG93bmxvYWRlcjo6ZGV0ZXJtaW5lRmlsZW5hbWUoKQpAQCAtODcsOCArODQsNyBAQCB2
b2lkIFF0RmlsZURvd25sb2FkZXI6OmRldGVybWluZUZpbGVuYW1lKCkKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIGJvb2wgYWxsb3dPdmVyd3JpdGU7Ci0gICAgbV9kb3dubG9hZC0+ZGVj
aWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoZmlsZU5hbWUsIGFsbG93T3Zlcndy
aXRlKTsKKyAgICBtX2Rvd25sb2FkLT5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxl
bmFtZUFzeW5jKGZpbGVOYW1lKTsKIH0KIAogdm9pZCBRdEZpbGVEb3dubG9hZGVyOjpkZWNpZGVk
RGVzdGluYXRpb24oY29uc3QgUVN0cmluZyYgZGVjaWRlZEZpbGVQYXRoLCBib29sIGFsbG93T3Zl
cndyaXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMv
c291cC9Eb3dubG9hZFNvdXAuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9h
ZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwCmluZGV4IGEyMjg5MTZiMmNhZDYzZjE5NGI0MzVjY2Ri
MDAyMmVkMjQ1OTQ4YTkuLjAyZjM0N2U0YWI2ZGViNTc0NTcxMjg2YTE1Y2I2NDA2NDg1YmJjMGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3NvdXAvRG93
bmxvYWRTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9z
b3VwL0Rvd25sb2FkU291cC5jcHAKQEAgLTc4LDQgKzc4LDkgQEAgdm9pZCBEb3dubG9hZDo6cmVj
ZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRp
Y2F0aW8KICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIERvd25sb2FkOjpkaWREZWNp
ZGVEZXN0aW5hdGlvbkFzeW5jKGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24sIGJvb2wgYWxsb3dP
dmVyd3JpdGUpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCAyMTRm
MmFlZjc1NTAwN2M1YWRiNjA0MDE5OWVjODFjNWJiOGI4ODE2Li5hMzg4YjBkNDg0OGJjOWIxZjE0
Mjg0MGFkYmE3YWU4M2I3MTM3Y2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAKQEAgLTk1MSw2ICs5NTEsMTEgQEAgdm9pZCBXZWJQcm9jZXNzOjpjYW5jZWxEb3du
bG9hZCh1aW50NjRfdCBkb3dubG9hZElEKQogICAgIERvd25sb2FkTWFuYWdlcjo6c2hhcmVkKCku
Y2FuY2VsRG93bmxvYWQoZG93bmxvYWRJRCk7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzczo6ZGlkRGVj
aWRlRG93bmxvYWREZXN0aW5hdGlvbkFzeW5jKHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFN0
cmluZyYgZGVzdGluYXRpb24sIGJvb2wgYWxsb3dPdmVyd3JpdGUpCit7CisgICAgRG93bmxvYWRN
YW5hZ2VyOjpzaGFyZWQoKS5kaWREZWNpZGVEb3dubG9hZERlc3RpbmF0aW9uQXN5bmMoZG93bmxv
YWRJRCwgZGVzdGluYXRpb24sIGFsbG93T3ZlcndyaXRlKTsKK30KKwogdm9pZCBXZWJQcm9jZXNz
OjpzZXRFbmhhbmNlZEFjY2Vzc2liaWxpdHkoYm9vbCBmbGFnKQogewogICAgIFdlYkNvcmU6OkFY
T2JqZWN0Q2FjaGU6OnNldEVuaGFuY2VkVXNlckludGVyZmFjZUFjY2Vzc2liaWxpdHkoZmxhZyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDU1YjI0ODY3M2U3YWZj
ZGEyMzU3MTRmYTcyZDY1MmU0MjU4Y2UxNTMuLjc1YTAxZjgyZTkzMTI1MDFmN2ZjOWUyMGIzNDFk
Y2EwYTc2YjJhNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0x
NzQsNiArMTc0LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZG93bmxvYWRSZXF1ZXN0KHVpbnQ2
NF90IGRvd25sb2FkSUQsIHVpbnQ2NF90IGluaXRpYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgY2FuY2VsRG93bmxvYWQodWludDY0X3QgZG93
bmxvYWRJRCk7CisgICAgdm9pZCBkaWREZWNpZGVEb3dubG9hZERlc3RpbmF0aW9uQXN5bmModWlu
dDY0X3QgZG93bmxvYWRJRCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbiwgYm9vbCBhbGxvd092
ZXJ3cml0ZSk7CiAKICAgICB2b2lkIHNldFRleHRDaGVja2VyU3RhdGUoY29uc3QgVGV4dENoZWNr
ZXJTdGF0ZSYpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluCmluZGV4IDU1YTM3NzA0MDExMTM3ZTM5MmViMDExMjBiMzIxY2Q2YTE0
Mjk4NWMuLjNiOTVjMTM5YWI5ZGY2OTMyNzViOTAwZGJkN2VmOTk1ZTkyNjIxMGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTYz
LDYgKzYzLDcgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyB7CiAgICAgIyB0d28gbWVzc2FnZXMu
CiAgICAgRG93bmxvYWRSZXF1ZXN0KHVpbnQ2NF90IGRvd25sb2FkSUQsIHVpbnQ2NF90IGluaXRp
YXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KQogICAgIENhbmNl
bERvd25sb2FkKHVpbnQ2NF90IGRvd25sb2FkSUQpCisgICAgRGlkRGVjaWRlRG93bmxvYWREZXN0
aW5hdGlvbkFzeW5jKHVpbnQ2NF90IGRvd25sb2FkSUQsIFdURjo6U3RyaW5nIGRlc3RpbmF0aW9u
LCBib29sIGFsbG93T3ZlcndyaXRlKQogCiAgICAgU2V0VGV4dENoZWNrZXJTdGF0ZShXZWJLaXQ6
OlRleHRDaGVja2VyU3RhdGUgdGV4dENoZWNrZXJTdGF0ZSkKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111369</attachid>
            <date>2011-10-17 18:59:36 -0700</date>
            <delta_ts>2011-10-19 19:09:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68962-20111017225918.patch</filename>
            <type>text/plain</type>
            <size>49258</size>
            <attacher name="Jesus Sanchez-Palencia">jesus</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTc2OTUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjZjhjMmQwOTNlNzQ4ZTcz
OGNkY2M5NTI3NGQ0NTBkNzAxN2YyYjI5Li42NzUzZjRhYWVlNGE2NGUyZjAzYzNiNTJmN2ZjMmRl
ZjczYzQ2YzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI0IEBACisyMDExLTEwLTE3ICBKZXN1
cyBTYW5jaGV6LVBhbGVuY2lhICA8amVzdXMucGFsZW5jaWFAb3BlbmJvc3NhLm9yZz4KKworICAg
ICAgICBbUXRdW1dLMl0gRG93bmxvYWQgc3VwcG9ydCBhbmQgQVBJIGluIFVJUHJvY2VzcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg5NjIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBpbXBsZW1lbnQg
b3VyIFdrQ29udGV4dERvd25sb2FkQ2xpZW50IGFuZCB0aGUgbmVlZGVkIGNhbGxiYWNrcy4KKyAg
ICAgICAgV2UgYWxzbyBhZGQgQVBJcyBieSBleHBvc2luZyBRV2ViRG93bmxvYWRJdGVtLiBPYmpl
Y3RzIGZyb20gdGhpcyB0eXBlCisgICAgICAgIGhhdmUgdGhlaXIgb3duZXJzaGlwIGhhbmRsZWQg
YnkgUURlc2t0b3BXZWJWaWV3IGFuZCB3aWxsIGJlIGNyZWF0ZWQgb3IKKyAgICAgICAgZGVzdHJv
eWVkIGFzIG5lZWRlZC4gQ2xhc3NlcyBpbXBsZW1lbnRpbmcgVmlld0ludGVyZmFjZSAoUURlc2t0
b3BXZWJWaWV3UHJpdmF0ZQorICAgICAgICBhbmQgVG91Y2hWaWV3SW50ZXJmYWNlKSB3aWxsIHJl
Y2VpdmUgYSBzaWduYWwgKGRvd25sb2FkUmVxdWVzdGVkKSB3aXRoIGEgcG9pbnRlcgorICAgICAg
ICB0byB0aGUgcmVjZW50bHkgY3JlYXRlZCBRV2ViRG93bmxvYWRJdGVtLiBXaXRoIHRoYXQgdGhl
eSBjYW4gY29ubmVjdCB0aGUgcHJvcGVyCisgICAgICAgIHNpZ25hbHMgYW5kIHNsb3RzLCBzZXQg
dGhlIGRvd25sb2FkIGRlc3RpbmF0aW9uIHBhdGggYW5kIHRoZW4gY2FsbCBzdGFydCgpLgorICAg
ICAgICBPYmplY3RzIG9mIHRoaXMgdHlwZSB3aWxsIHByb3ZpZGUgdGhlIHByb2dyZXNzIG9mIGEg
ZG93bmxvYWQsIGEgc2xvdCB0byBjYW5jZWwgaXQsCisgICAgICAgIGFuZCBzaWduYWxzIGZvciBn
ZXR0aW5nIGZpbmlzaGVkIG9yIGZhaWx1cmUgc3RhdHVzLgorICAgICAgICBRV2ViRG93bmxvYWRJ
dGVtIHdhcyBhbHNvIGV4cG9zZWQgaW4gUU1MLgorICAgICAgICBRdCBuZWVkZWQgYW4gYXN5bmNo
cm9ub3VzIHdheSBmb3IgVUlQcm9jZXNzIHRvIHJldHVybiBhIGRlc3RpbmF0aW9uIHBhdGggdG8g
V2ViUHJvY2VzcywKKyAgICAgICAgdGhlcmVmb3JlIHRoZSBzdGFydFRyYW5zZmVyIEFQSSB3YXMg
YWRkZWQgdG8gV2ViS2l0MidzIERvd25sb2FkIGhhbmRsZXJzLgorCisgICAgICAgICogU2hhcmVk
L3F0L1dlYkNvcmVBcmd1bWVudENvZGVyc1F0LmNwcDoKKyAgICAgICAgKENvcmVJUEM6Ojo6ZW5j
b2RlKToKKyAgICAgICAgKENvcmVJUEM6Ojo6ZGVjb2RlKToKKyAgICAgICAgQWRkIGVuY29kaW5n
IGFuZCBkZWNvZGluZyBvZiBzdWdnZXN0ZWRGaWxlbmFtZSBmb3IgUmVzb3VyY2VSZXNwb25zZS4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvV0tWaWV3Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwOgorICAgICAgICAoUURlc2t0b3BXZWJWaWV3
UHJpdmF0ZTo6ZG93bmxvYWRSZXF1ZXN0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQv
cWRlc2t0b3B3ZWJ2aWV3Lmg6IEFkZCBzaWduYWwgZG93bmxvYWRSZXF1ZXN0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXdfcC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvcXQvcW1scGx1Z2luL3BsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQyUW1sUGx1
Z2luOjpyZWdpc3RlclR5cGVzKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdlYmRv
d25sb2FkaXRlbS5jcHA6IEFkZGVkLgorICAgICAgICAoUVdlYkRvd25sb2FkSXRlbVByaXZhdGU6
OlFXZWJEb3dubG9hZEl0ZW1Qcml2YXRlKToKKyAgICAgICAgKFFXZWJEb3dubG9hZEl0ZW06OlFX
ZWJEb3dubG9hZEl0ZW0pOgorICAgICAgICAoUVdlYkRvd25sb2FkSXRlbTo6flFXZWJEb3dubG9h
ZEl0ZW0pOgorICAgICAgICAoUVdlYkRvd25sb2FkSXRlbTo6dXJsKToKKyAgICAgICAgKFFXZWJE
b3dubG9hZEl0ZW06OmRlc3RpbmF0aW9uUGF0aCk6CisgICAgICAgIChRV2ViRG93bmxvYWRJdGVt
OjpzZXREZXN0aW5hdGlvblBhdGgpOgorICAgICAgICAoUVdlYkRvd25sb2FkSXRlbTo6c3VnZ2Vz
dGVkRmlsZW5hbWUpOgorICAgICAgICAoUVdlYkRvd25sb2FkSXRlbTo6bWltZVR5cGUpOgorICAg
ICAgICAoUVdlYkRvd25sb2FkSXRlbTo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKToKKyAgICAgICAg
KFFXZWJEb3dubG9hZEl0ZW06OnRvdGFsQnl0ZXNSZWNlaXZlZCk6CisgICAgICAgIChRV2ViRG93
bmxvYWRJdGVtOjpjYW5jZWwpOgorICAgICAgICAoUVdlYkRvd25sb2FkSXRlbTo6c3RhcnQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdlYmRvd25sb2FkaXRlbS5oOiBBZGRlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F3ZWJkb3dubG9hZGl0ZW1fcC5oOiBBZGRlZC4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OnN0YXJ0VHJhbnNmZXIpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9D
bGllbnRJbXBsLmNwcDoKKyAgICAgICAgKHF0X3drX2RpZFJlY2VpdmVSZXNwb25zZSk6CisgICAg
ICAgIChxdF93a19kaWRDcmVhdGVEZXN0aW5hdGlvbik6CisgICAgICAgIChxdF93a19kaWRGaW5p
c2hEb3dubG9hZCk6CisgICAgICAgIChxdF93a19kaWRGYWlsRG93bmxvYWQpOgorICAgICAgICAo
cXRfd2tfZGlkUmVjZWl2ZURhdGFGb3JEb3dubG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL3F0
L0NsaWVudEltcGwuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5j
cHA6CisgICAgICAgIChRdFdlYlBhZ2VQcm94eTo6aW5pdCk6CisgICAgICAgIChRdFdlYlBhZ2VQ
cm94eTo6ZG93bmxvYWRSZWNlaXZlZFJlc3BvbnNlKToKKyAgICAgICAgKFF0V2ViUGFnZVByb3h5
Ojpkb3dubG9hZENyZWF0ZWREZXN0aW5hdGlvbik6CisgICAgICAgIChRdFdlYlBhZ2VQcm94eTo6
ZG93bmxvYWRGaW5pc2hlZCk6CisgICAgICAgIChRdFdlYlBhZ2VQcm94eTo6ZG93bmxvYWRGYWls
ZWQpOgorICAgICAgICAoUXRXZWJQYWdlUHJveHk6OmRvd25sb2FkRGF0YVJlY2VpdmVkKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaDoKKyAgICAgICAgSW1wbGVtZW50
IG91ciBXS0NvbnRleHREb3dubG9hZENsaWVudCBhbmQgaXRzIGNhbGxiYWNrcy4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2UuaDoKKyAgICAgICAgKFdlYktpdDo6
VG91Y2hWaWV3SW50ZXJmYWNlOjpkb3dubG9hZFJlcXVlc3RlZCk6CisgICAgICAgICogVUlQcm9j
ZXNzL3F0L1ZpZXdJbnRlcmZhY2UuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9xdC9xd2ViZXJy
b3IuY3BwOgorICAgICAgICAoUVdlYkVycm9yOjpkZXNjcmlwdGlvbik6CisgICAgICAgICogVUlQ
cm9jZXNzL3F0L3F3ZWJlcnJvci5oOgorICAgICAgICAoUVdlYkVycm9yOjplcnJvckNvZGVBc0Rv
d25sb2FkRXJyb3IpOgorICAgICAgICBBZGQgRG93bmxvYWQgZXJyb3IgaGFuZGxpbmcgdG8gUVdl
YkVycm9yIGFuZCBhIG5ldyBBUEkKKyAgICAgICAgdG8gcmV0cmlldmUgdGhlIGVycm9yIGRlc2Ny
aXB0aW9uIGZyb20gdGhlIG9yaWdpbmFsIFJlc291cmNlRXJyb3IuCisgICAgICAgIEFsc28sIGl0
IG5vdyBoYXMgUVdlYkRvd25sb2FkSXRlbTo6RG93bmxvYWRFcnJvciBlcnJvckNvZGVBc0Rvd25s
b2FkRXJyb3IoKQorICAgICAgICB0aGF0IHJldHVybnMgdGhlIGVycm9yIGNvZGUgYXMgYSBEb3du
bG9hZEVycm9yLgorCisgICAgICAgICogV2ViS2l0MkFQSS5wcmk6IEFkZGluZyBuZXcgUVdlYkRv
d25sb2FkSXRlbSBmaWxlcy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyOjpzdGFydFRyYW5zZmVyKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9jZm5ldC9Eb3dubG9hZENGTmV0LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6RG93bmxvYWQ6OnN0YXJ0VHJhbnNmZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
RG93bmxvYWRzL2N1cmwvRG93bmxvYWRDdXJsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxv
YWQ6OnN0YXJ0VHJhbnNmZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvRG93bmxvYWRzL21hYy9E
b3dubG9hZE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnN0YXJ0VHJhbnNmZXIp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvRG93bmxvYWRzL3NvdXAvRG93bmxvYWRTb3VwLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnN0YXJ0VHJhbnNmZXIpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnN0
YXJ0VHJhbnNmZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgQWRkaW5nIHN0
YXJ0VHJhbnNmZXIgQVBJIGFuZCBuZWNlc3Nhcnkgc3R1YnMuCisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0Rvd25sb2Fkcy9xdC9Eb3dubG9hZFF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxv
YWQ6OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnN0YXJ0V2l0aEhhbmRsZSk6
CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpkaWREZWNpZGVEZXN0aW5hdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OkRvd25sb2FkOjpzdGFydFRyYW5zZmVyKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3dubG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UXRGaWxlRG93bmxvYWRlcjo6aW5pdCk6IHN0YXJ0KCkgd2FzIHJlbmFtZWQgdG8gaW5pdCgpLgor
ICAgICAgICAoV2ViS2l0OjpRdEZpbGVEb3dubG9hZGVyOjpkZXRlcm1pbmVGaWxlbmFtZSk6Cisg
ICAgICAgIENhbGxpbmcgb25SZWFkeVJlYWQoKSBoZXJlIHdhcyB1bm5lY2Vzc2FyeSBhbmQgaXQg
d2FzIHRyaWdnZXJpbmcgdGhlIG92ZXJhbGwKKyAgICAgICAgZG93bmxvYWQgcHJvY2VzcyBldmVu
IGJlZm9yZSBEb3dubG9hZE1hbmFnZXIgZmluaXNoZWQgc3RhcnREb3dubG9hZCgpLiBUaGlzCisg
ICAgICAgIHdhcyBsZWFkaW5nIHRvIGEgRG93bmxvYWRNYW5hZ2VyIHdpdGggYW4gZW1wdHkgbGlz
dCBvZiBkb3dubG9hZHMuCisgICAgICAgIChXZWJLaXQ6OlF0RmlsZURvd25sb2FkZXI6OnN0YXJ0
VHJhbnNmZXIpOiBkZWNpZGVkRGVzdGluYXRpb24oKSBiZWNhbWUgc3RhcnRUcmFuc2ZlcigpLgor
ICAgICAgICAoV2ViS2l0OjpRdEZpbGVEb3dubG9hZGVyOjphYm9ydERvd25sb2FkV3JpdGluZ0Fu
ZEVtaXRFcnJvcik6CisgICAgICAgIChXZWJLaXQ6OlF0RmlsZURvd25sb2FkZXI6Om9uUmVhZHlS
ZWFkKToKKyAgICAgICAgKFdlYktpdDo6UXRGaWxlRG93bmxvYWRlcjo6b25GaW5pc2hlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OlF0RmlsZURvd25sb2FkZXI6OmNhbmNlbCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9Eb3dubG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5oOgorCiAyMDExLTEwLTE3ICBK
b24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBGaWx0ZXJpbmcgb2YgVVJMcyB3
aGVuIHNlcmlhbGl6aW5nIGJhY2sgZm9yd2FyZCBsaXN0IHNhdmVzIGJhZCBjdXJyZW50IGluZGV4
IHZhbHVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzUXQuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1dlYkNvcmVBcmd1bWVu
dENvZGVyc1F0LmNwcAppbmRleCAxZmMxNWM1OTZmNmZjZjdkOWY4ZDMzZmRlZWIzM2MxZWVlMjg2
YTdiLi45NTBkMzcyZDJkZGM3ZTQ2ZjgwNzc4Mzk1MGUwYzI4NzZlMzdkYjRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzUXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9XZWJDb3JlQXJndW1lbnRDb2RlcnNRdC5jcHAK
QEAgLTYxLDYgKzYxLDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+Ojpl
bmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBSZXMKICAgICBlbmNvZGVyLT5l
bmNvZGUocmVzb3VyY2VSZXNwb25zZS5taW1lVHlwZSgpKTsKICAgICBlbmNvZGVyLT5lbmNvZGUo
c3RhdGljX2Nhc3Q8aW50NjRfdD4ocmVzb3VyY2VSZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5n
dGgoKSkpOwogICAgIGVuY29kZXItPmVuY29kZShyZXNvdXJjZVJlc3BvbnNlLnRleHRFbmNvZGlu
Z05hbWUoKSk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNlUmVzcG9uc2Uuc3VnZ2VzdGVk
RmlsZW5hbWUoKSk7CiB9CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlc3BvbnNlPjo6
ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3Vy
Y2VSZXNwb25zZSkKQEAgLTg3LDYgKzg4LDExIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJj
ZVJlc3BvbnNlPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmVzb3VyY2VSCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXNwb25zZS5zZXRUZXh0RW5jb2RpbmdOYW1lKHRl
eHRFbmNvZGluZ05hbWUpOwogCisgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lOworICAgIGlm
ICghZGVjb2Rlci0+ZGVjb2RlKHN1Z2dlc3RlZEZpbGVuYW1lKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIHJlc3BvbnNlLnNldFN1Z2dlc3RlZEZpbGVuYW1lKHN1Z2dlc3RlZEZpbGVuYW1l
KTsKKwogICAgIHJlc291cmNlUmVzcG9uc2UgPSByZXNwb25zZTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvV0tWaWV3Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L1dLVmlldy5oCmluZGV4IDg0YmExZjc0
NmE0M2Q5MTdlZmMzMGYyNzhlZTMyNjdkMzVjODZmOGMuLmI2ZWJmZGJiMzcwNGQxY2I1NDExOTIy
OTY1MWRiNDExNjk4N2RhZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvV0tWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9XS1Zp
ZXcuaApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgPFdlYktpdDIvcWRlc2t0b3B3ZWJ2aWV3
Lmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9xdG91Y2h3ZWJ2aWV3Lmg+CiAjaW5jbHVkZSA8V2ViS2l0
Mi9xdG91Y2h3ZWJwYWdlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9xd2ViZG93bmxvYWRpdGVtLmg+
CiAjaW5jbHVkZSA8V2ViS2l0Mi9xd2VibmF2aWdhdGlvbmNvbnRyb2xsZXIuaD4KIAogI2VuZGlm
IC8qIFdLVmlld19oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3FkZXNrdG9wd2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3FkZXNrdG9wd2Vidmlldy5jcHAKaW5kZXggMjk2N2I1M2ZiNjdhNzMyMzcxY2M2OTQwMTcxMWMz
ODAwZmU1YzAwNS4uYTM1MTJmYTYyYTRhMTZhMmZmZGM5OTA2MDkzMDkyZmJhZjYyZDEyYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3
LmNwcApAQCAtMjMsNiArMjMsNyBAQAogCiAjaW5jbHVkZSAiVXRpbHNRdC5oIgogI2luY2x1ZGUg
InFkZXNrdG9wd2Vidmlld19wLmgiCisjaW5jbHVkZSAicXdlYmRvd25sb2FkaXRlbS5oIgogI2lu
Y2x1ZGUgInF3ZWJlcnJvci5oIgogI2luY2x1ZGUgPFFGaWxlRGlhbG9nPgogI2luY2x1ZGUgPFFH
cmFwaGljc1NjZW5lRXZlbnQ+CkBAIC0zMyw2ICszNCw3IEBACiAjaW5jbHVkZSA8UXREZWNsYXJh
dGl2ZS9xc2dpdGVtLmg+CiAjaW5jbHVkZSA8UXREZWNsYXJhdGl2ZS9xc2d2aWV3Lmg+CiAjaW5j
bHVkZSA8UXRHdWkvUUN1cnNvcj4KKyNpbmNsdWRlIDxRdEd1aS9RRGVza3RvcFNlcnZpY2VzPgog
I2luY2x1ZGUgPFF0R3VpL1FEcmFnPgogI2luY2x1ZGUgPFF0R3VpL1FGb2N1c0V2ZW50PgogI2lu
Y2x1ZGUgPFF0R3VpL1FHdWlBcHBsaWNhdGlvbj4KQEAgLTQ5Nyw2ICs0OTksMTUgQEAgdm9pZCBR
RGVza3RvcFdlYlZpZXdQcml2YXRlOjpkaWRNb3VzZU1vdmVPdmVyRWxlbWVudChjb25zdCBRVXJs
JiBsaW5rVVJMLCBjb25zdAogICAgIGVtaXQgcS0+bGlua0hvdmVyZWQobGFzdEhvdmVyZWRVUkws
IGxhc3RIb3ZlcmVkVGl0bGUpOwogfQogCit2b2lkIFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OmRv
d25sb2FkUmVxdWVzdGVkKFFXZWJEb3dubG9hZEl0ZW0qIGRvd25sb2FkSXRlbSkKK3sKKyAgICBp
ZiAoIWRvd25sb2FkSXRlbSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZG93bmxvYWRJdGVtLT5z
ZXRQYXJlbnQocSk7CisgICAgZW1pdCBxLT5kb3dubG9hZFJlcXVlc3RlZChkb3dubG9hZEl0ZW0p
OworfQorCiBzdGF0aWMgUG9saWN5SW50ZXJmYWNlOjpQb2xpY3lBY3Rpb24gdG9Qb2xpY3lBY3Rp
b24oUURlc2t0b3BXZWJWaWV3OjpOYXZpZ2F0aW9uUG9saWN5IHBvbGljeSkKIHsKICAgICBzd2l0
Y2ggKHBvbGljeSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xZGVza3RvcHdlYnZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRl
c2t0b3B3ZWJ2aWV3LmgKaW5kZXggYTNhZjMyODEyYjFhYzNmODQ5NzEzNjM5OGI0OWUwMTIyNzQz
MWM5OC4uNTY4ZDAyZmVlNDBlNGQ4NjcyZjMzNWFjOTExMWFjZDNmYTYyYzczYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5oCkBAIC0y
OCw2ICsyOCw3IEBACiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KIAogY2xhc3MgUURlc2t0
b3BXZWJWaWV3UHJpdmF0ZTsKK2NsYXNzIFFXZWJEb3dubG9hZEl0ZW07CiBjbGFzcyBRV2ViTmF2
aWdhdGlvbkNvbnRyb2xsZXI7CiAKIFFUX0JFR0lOX05BTUVTUEFDRQpAQCAtNjgsNyArNjksOCBA
QCBwdWJsaWM6CiAgICAgZW51bSBFcnJvclR5cGUgewogICAgICAgICBFbmdpbmVFcnJvciwKICAg
ICAgICAgTmV0d29ya0Vycm9yLAotICAgICAgICBIdHRwRXJyb3IKKyAgICAgICAgSHR0cEVycm9y
LAorICAgICAgICBEb3dubG9hZEVycm9yCiAgICAgfTsKIAogICAgIFFEZXNrdG9wV2ViVmlldyhR
U0dJdGVtKiBwYXJlbnQgPSAwKTsKQEAgLTkyLDYgKzk0LDcgQEAgUV9TSUdOQUxTOgogICAgIHZv
aWQgbG9hZFByb2dyZXNzQ2hhbmdlZChpbnQgcHJvZ3Jlc3MpOwogICAgIHZvaWQgdXJsQ2hhbmdl
ZChjb25zdCBRVXJsJiB1cmwpOwogICAgIHZvaWQgbGlua0hvdmVyZWQoY29uc3QgUVVybCYgdXJs
LCBjb25zdCBRU3RyaW5nJiB0aXRsZSk7CisgICAgdm9pZCBkb3dubG9hZFJlcXVlc3RlZChRV2Vi
RG93bmxvYWRJdGVtKiBkb3dubG9hZEl0ZW0pOwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2
b2lkIGtleVByZXNzRXZlbnQoUUtleUV2ZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlld19wLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlld19wLmgKaW5kZXggYTdlYjE1OGRkZDVhYTIx
NTI0OTM3NTk5YzQ4N2UwMDc5YWYyMDFjNC4uMzI1MjBjMWU2NGM1YTNkMzExYWRiYWQ5NjJmYjRl
YzE5ZmM0MmU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
ZGVza3RvcHdlYnZpZXdfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cWRlc2t0b3B3ZWJ2aWV3X3AuaApAQCAtOTAsNiArOTAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgUUpTRW5naW5lKiBlbmdpbmUoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBjaG9vc2VGaWxlcyhX
S09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmLCBjb25zdCBRU3RyaW5nTGlzdCYgc2VsZWN0ZWRG
aWxlTmFtZXMsIFZpZXdJbnRlcmZhY2U6OkZpbGVDaG9vc2VyVHlwZSk7CisgICAgdmlydHVhbCB2
b2lkIGRvd25sb2FkUmVxdWVzdGVkKFFXZWJEb3dubG9hZEl0ZW0qIGRvd25sb2FkSXRlbSk7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkTW91c2VNb3ZlT3ZlckVsZW1lbnQoY29uc3QgUVVybCYsIGNv
bnN0IFFTdHJpbmcmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xbWxwbHVnaW4vcGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcW1scGx1Z2luL3BsdWdpbi5jcHAKaW5kZXggODVkN2QwOGViZjdmZjZmMGQwZGFjNTdkMmZm
ODcyMGQyZGUwNGEyNi4uYWIxZjY2MzI4ZjkzNjg3NzE1MDk2MzJlNjIxN2RmN2Y3ZTAxOGYwYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xbWxwbHVnaW4vcGx1
Z2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FtbHBsdWdpbi9w
bHVnaW4uY3BwCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAicWRlc2t0b3B3ZWJ2aWV3Lmgi
CiAjaW5jbHVkZSAicXRvdWNod2VicGFnZS5oIgogI2luY2x1ZGUgInF0b3VjaHdlYnZpZXcuaCIK
KyNpbmNsdWRlICJxd2ViZG93bmxvYWRpdGVtLmgiCiAjaW5jbHVkZSAicXdlYm5hdmlnYXRpb25j
b250cm9sbGVyLmgiCiAKICNpbmNsdWRlIDxRdERlY2xhcmF0aXZlL3FkZWNsYXJhdGl2ZS5oPgpA
QCAtMzksNiArNDAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHFtbFJlZ2lzdGVyVW5jcmVhdGFibGVU
eXBlPFFXZWJOYXZpZ2F0aW9uQ29udHJvbGxlcj4odXJpLCA1LCAwLCAiTmF2aWdhdGlvbkNvbnRy
b2xsZXIiLCBRT2JqZWN0Ojp0cigiQ2Fubm90IGNyZWF0ZSBzZXBhcmF0ZSBpbnN0YW5jZSBvZiBO
YXZpZ2F0aW9uQ29udHJvbGxlciIpKTsKICAgICAgICAgcW1sUmVnaXN0ZXJVbmNyZWF0YWJsZVR5
cGU8UVRvdWNoV2ViUGFnZT4odXJpLCA1LCAwLCAiVG91Y2hXZWJQYWdlIiwgUU9iamVjdDo6dHIo
IkNhbm5vdCBjcmVhdGUgc2VwYXJhdGUgaW5zdGFuY2Ugb2YgVG91Y2hXZWJQYWdlLCB1c2UgVG91
Y2hXZWJWaWV3IikpOwogICAgICAgICBxbWxSZWdpc3RlclVuY3JlYXRhYmxlVHlwZTxRTmV0d29y
a1JlcGx5Pih1cmksIDUsIDAsICJOZXR3b3JrUmVwbHkiLCBRT2JqZWN0Ojp0cigiQ2Fubm90IGNy
ZWF0ZSBzZXBhcmF0ZSBpbnN0YW5jZSBvZiBOZXR3b3JrUmVwbHkiKSk7CisgICAgICAgIHFtbFJl
Z2lzdGVyVW5jcmVhdGFibGVUeXBlPFFXZWJEb3dubG9hZEl0ZW0+KHVyaSwgNSwgMCwgIkRvd25s
b2FkSXRlbSIsIFFPYmplY3Q6OnRyKCJDYW5ub3QgY3JlYXRlIHNlcGFyYXRlIGluc3RhbmNlIG9m
IERvd25sb2FkSXRlbSIpKTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJkb3dubG9hZGl0ZW0uY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxvYWRpdGVtLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMTA5YjA1
MTljZmFhYzkyMzFlYTJlZDI1NzYwZGQzYjI5NTE5YjY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxvYWRpdGVtLmNwcApAQCAtMCww
ICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFu
ZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgInF3ZWJkb3dubG9hZGl0ZW0uaCIKKworI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKKyNp
bmNsdWRlICJxd2ViZG93bmxvYWRpdGVtX3AuaCIKKworUVdlYkRvd25sb2FkSXRlbVByaXZhdGU6
OlFXZWJEb3dubG9hZEl0ZW1Qcml2YXRlKFFXZWJEb3dubG9hZEl0ZW0qIHFxKQorICAgIDogcShx
cSkKKyAgICAsIGRvd25sb2FkUHJveHkoMCkKKyAgICAsIGV4cGVjdGVkQ29udGVudExlbmd0aCgw
KQorICAgICwgdG90YWxCeXRlc1JlY2VpdmVkKDApCit7Cit9CisKK1FXZWJEb3dubG9hZEl0ZW06
OlFXZWJEb3dubG9hZEl0ZW0oUU9iamVjdCogcGFyZW50KQorICAgIDogUU9iamVjdChwYXJlbnQp
CisgICAgLCBkKG5ldyBRV2ViRG93bmxvYWRJdGVtUHJpdmF0ZSh0aGlzKSkKK3sKK30KKworUVdl
YkRvd25sb2FkSXRlbTo6flFXZWJEb3dubG9hZEl0ZW0oKQoreworICAgIGRlbGV0ZSBkOworfQor
CitRVXJsIFFXZWJEb3dubG9hZEl0ZW06OnVybCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPnNv
dXJjZVVybDsKK30KKworUVN0cmluZyBRV2ViRG93bmxvYWRJdGVtOjpkZXN0aW5hdGlvblBhdGgo
KSBjb25zdAoreworICAgIHJldHVybiBkLT5kZXN0aW5hdGlvblBhdGg7Cit9CisKK3ZvaWQgUVdl
YkRvd25sb2FkSXRlbTo6c2V0RGVzdGluYXRpb25QYXRoKGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0
aW9uKQoreworICAgIGQtPmRlc3RpbmF0aW9uUGF0aCA9IGRlc3RpbmF0aW9uOworfQorCitRU3Ry
aW5nIFFXZWJEb3dubG9hZEl0ZW06OnN1Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gZC0+c3VnZ2VzdGVkRmlsZW5hbWU7Cit9CisKK1FTdHJpbmcgUVdlYkRvd25sb2FkSXRl
bTo6bWltZVR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBkLT5taW1lVHlwZTsKK30KKworcXVp
bnQ2NCBRV2ViRG93bmxvYWRJdGVtOjpleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBjb25zdAorewor
ICAgIHJldHVybiBkLT5leHBlY3RlZENvbnRlbnRMZW5ndGg7Cit9CisKK3F1aW50NjQgUVdlYkRv
d25sb2FkSXRlbTo6dG90YWxCeXRlc1JlY2VpdmVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZC0+
dG90YWxCeXRlc1JlY2VpdmVkOworfQorCit2b2lkIFFXZWJEb3dubG9hZEl0ZW06OmNhbmNlbCgp
Cit7CisgICAgZC0+ZG93bmxvYWRQcm94eS0+Y2FuY2VsKCk7Cit9CisKK3ZvaWQgUVdlYkRvd25s
b2FkSXRlbTo6c3RhcnQoKQoreworICAgIEFTU0VSVCghZC0+c3VnZ2VzdGVkRmlsZW5hbWUuaXNF
bXB0eSgpKTsKKworICAgIGlmIChkLT5kZXN0aW5hdGlvblBhdGguaXNFbXB0eSgpKQorICAgICAg
ICBkLT5kZXN0aW5hdGlvblBhdGggPSBkLT5zdWdnZXN0ZWRGaWxlbmFtZTsKKworICAgIGQtPmRv
d25sb2FkUHJveHktPnN0YXJ0VHJhbnNmZXIoZC0+ZGVzdGluYXRpb25QYXRoKTsKK30KKwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxvYWRpdGVt
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJkb3dubG9hZGl0ZW0uaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mYTI4MDRlYzg5YWQ0MWFmN2UyNWZmODc2ZDhkN2M1ZjAwNmU5MTQzCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxv
YWRpdGVtLmgKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tp
YSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgcXdl
YmRvd25sb2FkaXRlbV9oCisjZGVmaW5lIHF3ZWJkb3dubG9hZGl0ZW1faAorCisjaW5jbHVkZSAi
cXdlYmtpdGdsb2JhbC5oIgorI2luY2x1ZGUgPFFPYmplY3Q+CisjaW5jbHVkZSA8UVVybD4KKwor
Y2xhc3MgUVdlYkRvd25sb2FkSXRlbVByaXZhdGU7CitjbGFzcyBRV2ViRXJyb3I7CisKK1FUX0JF
R0lOX05BTUVTUEFDRQorY2xhc3MgUVN0cmluZzsKK1FUX0VORF9OQU1FU1BBQ0UKKworY2xhc3Mg
UVdFQktJVF9FWFBPUlQgUVdlYkRvd25sb2FkSXRlbSA6IHB1YmxpYyBRT2JqZWN0IHsKKyAgICBR
X09CSkVDVAorICAgIFFfUFJPUEVSVFkocXVpbnQ2NCBleHBlY3RlZENvbnRlbnRMZW5ndGggUkVB
RCBleHBlY3RlZENvbnRlbnRMZW5ndGggQ09OU1RBTlQgRklOQUwpCisgICAgUV9QUk9QRVJUWShR
U3RyaW5nIGRlc3RpbmF0aW9uUGF0aCBSRUFEIGRlc3RpbmF0aW9uUGF0aCBXUklURSBzZXREZXN0
aW5hdGlvblBhdGgpCisgICAgUV9QUk9QRVJUWShRU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lIFJF
QUQgc3VnZ2VzdGVkRmlsZW5hbWUgQ09OU1RBTlQgRklOQUwpCisgICAgUV9QUk9QRVJUWShxdWlu
dDY0IHRvdGFsQnl0ZXNSZWNlaXZlZCBSRUFEIHRvdGFsQnl0ZXNSZWNlaXZlZCBOT1RJRlkgdG90
YWxCeXRlc1JlY2VpdmVkQ2hhbmdlZCBGSU5BTCkKKyAgICBRX1BST1BFUlRZKFFVcmwgdXJsIFJF
QUQgdXJsIENPTlNUQU5UIEZJTkFMKQorICAgIFFfRU5VTVMoRG93bmxvYWRFcnJvcikKK3B1Ymxp
YzoKKyAgICB2aXJ0dWFsIH5RV2ViRG93bmxvYWRJdGVtKCk7CisKKyAgICBlbnVtIERvd25sb2Fk
RXJyb3IgeworICAgICAgICBBYm9ydGVkID0gMCwKKyAgICAgICAgQ2Fubm90V3JpdGVUb0ZpbGUs
CisgICAgICAgIENhbm5vdE9wZW5GaWxlLAorICAgICAgICBEZXN0aW5hdGlvbkFscmVhZHlFeGlz
dHMsCisgICAgICAgIENhbmNlbGxlZCwKKyAgICAgICAgQ2Fubm90RGV0ZXJtaW5lRmlsZW5hbWUs
CisgICAgICAgIE5ldHdvcmtGYWlsdXJlCisgICAgfTsKKworICAgIFFVcmwgdXJsKCkgY29uc3Q7
CisgICAgUVN0cmluZyBkZXN0aW5hdGlvblBhdGgoKSBjb25zdDsKKyAgICBRU3RyaW5nIHN1Z2dl
c3RlZEZpbGVuYW1lKCkgY29uc3Q7CisgICAgUVN0cmluZyBtaW1lVHlwZSgpIGNvbnN0OworICAg
IHF1aW50NjQgZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgY29uc3Q7CisgICAgcXVpbnQ2NCB0b3Rh
bEJ5dGVzUmVjZWl2ZWQoKSBjb25zdDsKKyAgICB2b2lkIHNldERlc3RpbmF0aW9uUGF0aChjb25z
dCBRU3RyaW5nJiBkZXN0aW5hdGlvbik7CisKK3B1YmxpYyBRX1NMT1RTOgorICAgIHZvaWQgc3Rh
cnQoKTsKKyAgICB2b2lkIGNhbmNlbCgpOworCitRX1NJR05BTFM6CisgICAgdm9pZCBkZXN0aW5h
dGlvbkZpbGVDcmVhdGVkKGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uUGF0aCk7CisgICAgdm9p
ZCB0b3RhbEJ5dGVzUmVjZWl2ZWRDaGFuZ2VkKHF1aW50NjQgYnl0ZXNSZWNlaXZlZCk7CisgICAg
dm9pZCBzdWNjZWVkZWQoKTsKKyAgICB2b2lkIGZhaWxlZChRV2ViRG93bmxvYWRJdGVtOjpEb3du
bG9hZEVycm9yIGVycm9yLCBjb25zdCBRVXJsJiB1cmwsIGNvbnN0IFFTdHJpbmcmIGRlc2NyaXB0
aW9uKTsKKworcHJpdmF0ZToKKyAgICBRV2ViRG93bmxvYWRJdGVtKFFPYmplY3QqIHBhcmVudCA9
IDApOworICAgIFFXZWJEb3dubG9hZEl0ZW1Qcml2YXRlKiBkOworCisgICAgZnJpZW5kIGNsYXNz
IFF0V2ViUGFnZVByb3h5OworfTsKKworI2VuZGlmIC8qIHF3ZWJkb3dubG9hZGl0ZW1faCAqLwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxvYWRp
dGVtX3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYmRvd25sb2FkaXRl
bV9wLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmZkZmQwNWU1OGQ1Y2IxNTY4MDNmNmY3YWZlZGRmOTNmNTQ0ZDFi
YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdl
YmRvd25sb2FkaXRlbV9wLmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMp
IDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisKKyAg
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKwor
CisjaWZuZGVmIHF3ZWJkb3dubG9hZGl0ZW1fcF9oCisjZGVmaW5lIHF3ZWJkb3dubG9hZGl0ZW1f
cF9oCisKKyNpbmNsdWRlICJxd2ViZG93bmxvYWRpdGVtLmgiCisjaW5jbHVkZSA8UVVybD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBEb3dubG9hZFByb3h5OworfQorCitjbGFzcyBRV2Vi
RG93bmxvYWRJdGVtUHJpdmF0ZSB7CitwdWJsaWM6CisgICAgUVdlYkRvd25sb2FkSXRlbVByaXZh
dGUoUVdlYkRvd25sb2FkSXRlbSopOworCisgICAgUVdlYkRvd25sb2FkSXRlbSogcTsKKworICAg
IFdlYktpdDo6RG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eTsKKworICAgIFFVcmwgc291cmNl
VXJsOworICAgIFFTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWU7CisgICAgUVN0cmluZyBkZXN0aW5h
dGlvblBhdGg7CisgICAgUVN0cmluZyBtaW1lVHlwZTsKKyAgICBxdWludDY0IGV4cGVjdGVkQ29u
dGVudExlbmd0aDsKKyAgICBxdWludDY0IHRvdGFsQnl0ZXNSZWNlaXZlZDsKK307CisKKyNlbmRp
ZiAvKiBxd2ViZG93bmxvYWRpdGVtX3BfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAKaW5kZXggYzkzYTZkZmJlNjliYmUz
NmU2YjkyNDQ4ZjA0N2JiYmJlN2Q5MmQ0Mi4uMDRlOTk5MmE4Yzg5NjUxZDYxNjg3MWU5ZTgwY2I4
MTIxMmYyNzFiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkUHJveHkuY3BwCkBAIC0xODcsNSArMTg3LDE0IEBAIHZvaWQgRG93bmxvYWRQ
cm94eTo6ZGlkQ2FuY2VsKGNvbnN0IENvcmVJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEp
CiAgICAgbV93ZWJDb250ZXh0LT5kb3dubG9hZEZpbmlzaGVkKHRoaXMpOwogfQogCit2b2lkIERv
d25sb2FkUHJveHk6OnN0YXJ0VHJhbnNmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKK3sKKyAg
ICBpZiAoIW1fd2ViQ29udGV4dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUUgKE11
bHRpLVdlYlByb2Nlc3MpOiBEb3dubG9hZHMgc2hvdWxkbid0IGJlIGhhbmRsZWQgaW4gdGhlIHdl
YiBwcm9jZXNzLgorICAgIG1fd2ViQ29udGV4dC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzOjpTdGFydFRyYW5zZmVyKG1fZG93bmxvYWRJRCwgZmlsZW5hbWUpKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKaW5kZXggOTlkZGJlYzBjYmM0YmE4ZjZkOWY0
MjFmOWRiNjg1NTU4MjhiOTlkNS4uYmQ0MWViODg4ZjVkNGJjMzY4YjQ3OWM0NjY5ZDRlMmVmMWU3
MjM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZFByb3h5LmgKQEAgLTYzLDYgKzYzLDggQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2
ZURvd25sb2FkUHJveHlNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNz
YWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5
bmNEb3dubG9hZFByb3h5TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVz
c2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBPd25QdHI8Q29yZUlQQzo6QXJndW1l
bnRFbmNvZGVyPiYpOwogCisgICAgdm9pZCBzdGFydFRyYW5zZmVyKGNvbnN0IFN0cmluZyYgZmls
ZW5hbWUpOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IERvd25sb2FkUHJveHkoV2ViQ29udGV4
dCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5jcHAKaW5kZXgg
YzAwM2RmY2QxNjllYjFiMWFhMzBkMGMzYTU0ZTQyNjRiOGEzYzBkYS4uZDk5MmNlMDliMjRiMmIz
YWRkYTZlNGViM2ZhNGZmZWRiODE5NjhhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L0NsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9DbGllbnRJbXBsLmNwcApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIldLQVBJQ2FzdC5o
IgogI2luY2x1ZGUgIldLU3RyaW5nUXQuaCIKICNpbmNsdWRlICJXS1VSTFF0LmgiCisjaW5jbHVk
ZSAicXdlYmRvd25sb2FkaXRlbS5oIgogI2luY2x1ZGUgInF3ZWJlcnJvci5oIgogI2luY2x1ZGUg
InF3ZWJlcnJvcl9wLmgiCiAjaW5jbHVkZSA8UG9saWN5SW50ZXJmYWNlLmg+CkBAIC0yNzksMyAr
MjgwLDMwIEBAIHZvaWQgcXRfd2tfZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV0tQYWdlUmVmIHBh
Z2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVVJMUmVzcG9uCiAKICAgICBXS0ZyYW1lUG9saWN5TGlz
dGVuZXJVc2UobGlzdGVuZXIpOwogfQorCit2b2lkIHF0X3drX2RpZFJlY2VpdmVSZXNwb25zZShX
S0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tVUkxSZXNwb25z
ZVJlZiByZXNwb25zZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKK3sKKyAgICB0b1F0V2ViUGFn
ZVByb3h5KGNsaWVudEluZm8pLT5kb3dubG9hZFJlY2VpdmVkUmVzcG9uc2UodG9JbXBsKGRvd25s
b2FkKSwgdG9JbXBsKHJlc3BvbnNlKS0+cmVzb3VyY2VSZXNwb25zZSgpKTsKK30KKwordm9pZCBx
dF93a19kaWRDcmVhdGVEZXN0aW5hdGlvbihXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9h
ZFJlZiBkb3dubG9hZCwgV0tTdHJpbmdSZWYgcGF0aCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykK
K3sKKyAgICB0b1F0V2ViUGFnZVByb3h5KGNsaWVudEluZm8pLT5kb3dubG9hZENyZWF0ZWREZXN0
aW5hdGlvbih0b0ltcGwoZG93bmxvYWQpLCBXS1N0cmluZ0NvcHlRU3RyaW5nKHBhdGgpKTsKK30K
Kwordm9pZCBxdF93a19kaWRGaW5pc2hEb3dubG9hZChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tE
b3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKK3sKKyAgICB0b1F0
V2ViUGFnZVByb3h5KGNsaWVudEluZm8pLT5kb3dubG9hZEZpbmlzaGVkKHRvSW1wbChkb3dubG9h
ZCkpOworfQorCit2b2lkIHF0X3drX2RpZEZhaWxEb3dubG9hZChXS0NvbnRleHRSZWYgY29udGV4
dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tFcnJvclJlZiBlcnJvciwgY29uc3Qgdm9pZCAq
Y2xpZW50SW5mbykKK3sKKyAgICBRVXJsIGZhaWxpbmdVcmwgPSBXS1VSTENvcHlRVXJsKFdLRXJy
b3JDb3B5RmFpbGluZ1VSTChlcnJvcikpOworCisgICAgdG9RdFdlYlBhZ2VQcm94eShjbGllbnRJ
bmZvKS0+ZG93bmxvYWRGYWlsZWQodG9JbXBsKGRvd25sb2FkKSwgUVdlYkVycm9yUHJpdmF0ZTo6
Y3JlYXRlUVdlYkVycm9yKGVycm9yKSk7Cit9CisKK3ZvaWQgcXRfd2tfZGlkUmVjZWl2ZURhdGFG
b3JEb3dubG9hZChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwg
dWludDY0X3QgbGVuZ3RoLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQoreworICAgIHRvUXRXZWJQ
YWdlUHJveHkoY2xpZW50SW5mbyktPmRvd25sb2FkRGF0YVJlY2VpdmVkKHRvSW1wbChkb3dubG9h
ZCksIGxlbmd0aCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
Q2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0NsaWVudEltcGwuaApp
bmRleCBiYjMyMDlmZmFkMTYxNTE0NjA0MWIwZDlhNDliMjBmNzY0Njc2Nzk4Li5hNTJmYzA3NWQy
YjMzMDFlMmY2ZDE0MGEyMjE3NWVkODAzNGU3ZWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9xdC9DbGllbnRJbXBsLmgKQEAgLTUwLDYgKzUwLDEzIEBAIHZvaWQgcXRfd2tfbW91c2VEaWRN
b3ZlT3ZlckVsZW1lbnQoV0tQYWdlUmVmLCBXS0hpdFRlc3RSZXN1bHRSZWYsIFdLRXZlbnRNb2Rp
ZmllCiB2b2lkIHF0X3drX2RlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV0tQYWdlUmVm
LCBXS0ZyYW1lUmVmLCBXS0ZyYW1lTmF2aWdhdGlvblR5cGUsIFdLRXZlbnRNb2RpZmllcnMsIFdL
RXZlbnRNb3VzZUJ1dHRvbiwgV0tVUkxSZXF1ZXN0UmVmLCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJS
ZWYsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiB2b2lkIHF0
X3drX2RlY2lkZVBvbGljeUZvclJlc3BvbnNlKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tVUkxS
ZXNwb25zZVJlZiwgV0tVUkxSZXF1ZXN0UmVmLCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYsIFdL
VHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAKKy8vIERvd25sb2Fk
IGNsaWVudC4KK3ZvaWQgcXRfd2tfZGlkUmVjZWl2ZVJlc3BvbnNlKFdLQ29udGV4dFJlZiwgV0tE
b3dubG9hZFJlZiwgV0tVUkxSZXNwb25zZVJlZiwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit2
b2lkIHF0X3drX2RpZENyZWF0ZURlc3RpbmF0aW9uKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJl
ZiwgV0tTdHJpbmdSZWYgcGF0aCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit2b2lkIHF0X3dr
X2RpZEZpbmlzaERvd25sb2FkKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgY29uc3Qgdm9p
ZCAqY2xpZW50SW5mbyk7Cit2b2lkIHF0X3drX2RpZEZhaWxEb3dubG9hZChXS0NvbnRleHRSZWYs
IFdLRG93bmxvYWRSZWYsIFdLRXJyb3JSZWYsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordm9p
ZCBxdF93a19kaWRSZWNlaXZlRGF0YUZvckRvd25sb2FkKFdLQ29udGV4dFJlZiwgV0tEb3dubG9h
ZFJlZiwgdWludDY0X3QgbGVuZ3RoLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKKwogI2lmZGVm
IF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
UXRXZWJQYWdlUHJveHkuY3BwCmluZGV4IDJiNWU2NmEwYjMzNjYzYjY5M2E5ODM4YjFjYzE0NTE5
OGYyZDcwN2EuLmQxOWM5YTYwMWQ2MzEwYjVjZGI4MmUyMDM1MWE4YTIwM2IzMGI4ODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcApAQCAtMjEs
MTAgKzIxLDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUXRXZWJQYWdlUHJv
eHkuaCIKIAorI2luY2x1ZGUgInF3ZWJkb3dubG9hZGl0ZW0uaCIKKyNpbmNsdWRlICJxd2ViZG93
bmxvYWRpdGVtX3AuaCIKICNpbmNsdWRlICJxd2ViZXJyb3IuaCIKICNpbmNsdWRlICJxd2twcmVm
ZXJlbmNlc19wLmgiCiAKICNpbmNsdWRlICJDbGllbnRJbXBsLmgiCisjaW5jbHVkZSAiRG93bmxv
YWRQcm94eS5oIgogI2luY2x1ZGUgInF3a2hpc3RvcnkuaCIKICNpbmNsdWRlICJxd2toaXN0b3J5
X3AuaCIKICNpbmNsdWRlICJGaW5kSW5kaWNhdG9yLmgiCkBAIC0xNTksNiArMTYyLDE3IEBAIHZv
aWQgUXRXZWJQYWdlUHJveHk6OmluaXQoKQogICAgICAgICBwb2xpY3lDbGllbnQuZGVjaWRlUG9s
aWN5Rm9yUmVzcG9uc2UgPSBxdF93a19kZWNpZGVQb2xpY3lGb3JSZXNwb25zZTsKICAgICAgICAg
V0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudCh0b0FQSShtX3dlYlBhZ2VQcm94eS5nZXQoKSksICZw
b2xpY3lDbGllbnQpOwogICAgIH0KKworICAgIFdLQ29udGV4dERvd25sb2FkQ2xpZW50IGRvd25s
b2FkQ2xpZW50OworICAgIG1lbXNldCgmZG93bmxvYWRDbGllbnQsIDAsIHNpemVvZihXS0NvbnRl
eHREb3dubG9hZENsaWVudCkpOworICAgIGRvd25sb2FkQ2xpZW50LnZlcnNpb24gPSBrV0tDb250
ZXh0RG93bmxvYWRDbGllbnRDdXJyZW50VmVyc2lvbjsKKyAgICBkb3dubG9hZENsaWVudC5jbGll
bnRJbmZvID0gIHRoaXM7CisgICAgZG93bmxvYWRDbGllbnQuZGlkUmVjZWl2ZVJlc3BvbnNlID0g
cXRfd2tfZGlkUmVjZWl2ZVJlc3BvbnNlOworICAgIGRvd25sb2FkQ2xpZW50LmRpZFJlY2VpdmVE
YXRhID0gcXRfd2tfZGlkUmVjZWl2ZURhdGFGb3JEb3dubG9hZDsKKyAgICBkb3dubG9hZENsaWVu
dC5kaWRDcmVhdGVEZXN0aW5hdGlvbiA9IHF0X3drX2RpZENyZWF0ZURlc3RpbmF0aW9uOworICAg
IGRvd25sb2FkQ2xpZW50LmRpZEZpbmlzaCA9IHF0X3drX2RpZEZpbmlzaERvd25sb2FkOworICAg
IGRvd25sb2FkQ2xpZW50LmRpZEZhaWwgPSBxdF93a19kaWRGYWlsRG93bmxvYWQ7CisgICAgV0tD
b250ZXh0U2V0RG93bmxvYWRDbGllbnQodG9BUEkobV9jb250ZXh0LmdldCgpKSwgJmRvd25sb2Fk
Q2xpZW50KTsKIH0KIAogUXRXZWJQYWdlUHJveHk6On5RdFdlYlBhZ2VQcm94eSgpCkBAIC03MDEs
NCArNzE1LDUzIEBAIHZvaWQgUXRXZWJQYWdlUHJveHk6OnNldFBhZ2VJc1Zpc2libGUoYm9vbCBp
c1Zpc2libGUpCiAgICAgbV93ZWJQYWdlUHJveHktPmRyYXdpbmdBcmVhKCktPnNldFBhZ2VJc1Zp
c2libGUoaXNWaXNpYmxlKTsKIH0KIAordm9pZCBRdFdlYlBhZ2VQcm94eTo6ZG93bmxvYWRSZWNl
aXZlZFJlc3BvbnNlKFdlYktpdDo6RG93bmxvYWRQcm94eSogZG93bmxvYWQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAgIC8vIFdpbGwgYmUgY2FsbGVk
IHdoZW4gdGhlIGhlYWRlcnMgYXJlIHJlYWQgYnkgV2ViUHJvY2Vzcy4KKyAgICBRV2ViRG93bmxv
YWRJdGVtKiBkb3dubG9hZEl0ZW0gPSBuZXcgUVdlYkRvd25sb2FkSXRlbSgpOworICAgIGRvd25s
b2FkSXRlbS0+ZC0+ZG93bmxvYWRQcm94eSA9IGRvd25sb2FkOworICAgIGRvd25sb2FkSXRlbS0+
ZC0+c291cmNlVXJsID0gcmVzcG9uc2UudXJsKCk7CisgICAgZG93bmxvYWRJdGVtLT5kLT5taW1l
VHlwZSA9IHJlc3BvbnNlLm1pbWVUeXBlKCk7CisgICAgZG93bmxvYWRJdGVtLT5kLT5leHBlY3Rl
ZENvbnRlbnRMZW5ndGggPSByZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKTsKKyAgICBk
b3dubG9hZEl0ZW0tPmQtPnN1Z2dlc3RlZEZpbGVuYW1lID0gcmVzcG9uc2Uuc3VnZ2VzdGVkRmls
ZW5hbWUoKTsKKworICAgIG1fZG93bmxvYWRzW2Rvd25sb2FkLT5kb3dubG9hZElEKCldID0gZG93
bmxvYWRJdGVtOworCisgICAgLy8gTm93IHRoYXQgb3VyIGRvd25sb2FkSXRlbSBoYXMgZXZlcnl0
aGluZyB3ZSBuZWVkIHdlIGNhbiBlbWl0IGRvd25sb2FkUmVxdWVzdGVkLgorICAgIG1fdmlld0lu
dGVyZmFjZS0+ZG93bmxvYWRSZXF1ZXN0ZWQoZG93bmxvYWRJdGVtKTsKK30KKwordm9pZCBRdFdl
YlBhZ2VQcm94eTo6ZG93bmxvYWRDcmVhdGVkRGVzdGluYXRpb24oV2ViS2l0OjpEb3dubG9hZFBy
b3h5KiBkb3dubG9hZCwgY29uc3QgUVN0cmluZyYgcGF0aCkKK3sKKyAgICBRV2ViRG93bmxvYWRJ
dGVtKiBkb3dubG9hZEl0ZW0gPSBtX2Rvd25sb2Fkcy52YWx1ZShkb3dubG9hZC0+ZG93bmxvYWRJ
RCgpKTsKKyAgICBBU1NFUlQoZG93bmxvYWRJdGVtKTsKKyAgICBkb3dubG9hZEl0ZW0tPmQtPmRl
c3RpbmF0aW9uUGF0aCA9IHBhdGg7CisgICAgZW1pdCBkb3dubG9hZEl0ZW0tPmRlc3RpbmF0aW9u
RmlsZUNyZWF0ZWQoZG93bmxvYWRJdGVtLT5kLT5kZXN0aW5hdGlvblBhdGgpOworfQorCit2b2lk
IFF0V2ViUGFnZVByb3h5Ojpkb3dubG9hZEZpbmlzaGVkKFdlYktpdDo6RG93bmxvYWRQcm94eSog
ZG93bmxvYWQpCit7CisgICAgLy8gV2lsbCBiZSBjYWxsZWQgd2hlbiBkb3dubG9hZCBmaW5pc2hl
cyB3aXRoIHN1Y2Nlc3MuCisgICAgUVdlYkRvd25sb2FkSXRlbSogZG93bmxvYWRJdGVtID0gbV9k
b3dubG9hZHMudGFrZShkb3dubG9hZC0+ZG93bmxvYWRJRCgpKTsKKyAgICBBU1NFUlQoZG93bmxv
YWRJdGVtKTsKKyAgICBlbWl0IGRvd25sb2FkSXRlbS0+c3VjY2VlZGVkKCk7Cit9CisKK3ZvaWQg
UXRXZWJQYWdlUHJveHk6OmRvd25sb2FkRmFpbGVkKFdlYktpdDo6RG93bmxvYWRQcm94eSogZG93
bmxvYWQsIGNvbnN0IFFXZWJFcnJvciYgZXJyb3IpCit7CisgICAgLy8gV2lsbCBiZSBjYWxsZWQg
d2hlbiBkb3dubG9hZCBmYWlscyBvciBpcyBhYm9ydGVkLgorICAgIFFXZWJEb3dubG9hZEl0ZW0q
IGRvd25sb2FkSXRlbSA9IG1fZG93bmxvYWRzLnRha2UoZG93bmxvYWQtPmRvd25sb2FkSUQoKSk7
CisgICAgQVNTRVJUKGRvd25sb2FkSXRlbSk7CisgICAgZW1pdCBkb3dubG9hZEl0ZW0tPmZhaWxl
ZChlcnJvci5lcnJvckNvZGVBc0Rvd25sb2FkRXJyb3IoKSwgZXJyb3IudXJsKCksIGVycm9yLmRl
c2NyaXB0aW9uKCkpOworfQorCit2b2lkIFF0V2ViUGFnZVByb3h5Ojpkb3dubG9hZERhdGFSZWNl
aXZlZChXZWJLaXQ6OkRvd25sb2FkUHJveHkqIGRvd25sb2FkLCB1aW50NjRfdCBsZW5ndGgpCit7
CisgICAgLy8gV2lsbCBiZSBjYWxsZWQgZXZlcnl0aW1lIGJ5dGVzIHdlcmUgd3JpdHRlbiB0byBk
ZXN0aW5hdGlvbiBmaWxlIGJ5IFdlYlByb2Nlc3MuCisgICAgUVdlYkRvd25sb2FkSXRlbSogZG93
bmxvYWRJdGVtID0gbV9kb3dubG9hZHMudmFsdWUoZG93bmxvYWQtPmRvd25sb2FkSUQoKSk7Cisg
ICAgQVNTRVJUKGRvd25sb2FkSXRlbSk7CisgICAgZG93bmxvYWRJdGVtLT5kLT50b3RhbEJ5dGVz
UmVjZWl2ZWQgKz0gbGVuZ3RoOworICAgIGVtaXQgZG93bmxvYWRJdGVtLT50b3RhbEJ5dGVzUmVj
ZWl2ZWRDaGFuZ2VkKGxlbmd0aCk7Cit9CisKICNpbmNsdWRlICJtb2NfUXRXZWJQYWdlUHJveHku
Y3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaAppbmRl
eCBmYmQ2NDE1NGNjY2ZmNzJmOTA2ZmExNDlhN2FhNzc3M2UzZDE5M2EwLi45NjE1YmNkMTU3MTcw
MGZiYzg1ZTg4MTkzMjM1YTZhNDllZjY5M2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvUXRXZWJQYWdlUHJveHkuaApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkxheWVy
VHJlZUNvbnRleHQuaCIKICNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUG9saWN5
SW50ZXJmYWNlLmgiCisjaW5jbHVkZSAicXdlYmRvd25sb2FkaXRlbS5oIgogI2luY2x1ZGUgInF3
ZWJraXR0eXBlcy5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIlZp
ZXdwb3J0QXJndW1lbnRzLmgiCkBAIC0xNzQsNiArMTc1LDEyIEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgc2V0UGFnZUlzVmlzaWJsZShib29sKTsKIAorICAgIHZvaWQgZG93bmxvYWRSZWNlaXZlZFJl
c3BvbnNlKFdlYktpdDo6RG93bmxvYWRQcm94eSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmKTsKKyAgICB2b2lkIGRvd25sb2FkQ3JlYXRlZERlc3RpbmF0aW9uKFdlYktpdDo6RG93
bmxvYWRQcm94eSosIGNvbnN0IFFTdHJpbmcmIHBhdGgpOworICAgIHZvaWQgZG93bmxvYWRGaW5p
c2hlZChXZWJLaXQ6OkRvd25sb2FkUHJveHkqKTsKKyAgICB2b2lkIGRvd25sb2FkRmFpbGVkKFdl
YktpdDo6RG93bmxvYWRQcm94eSosIGNvbnN0IFFXZWJFcnJvciYpOworICAgIHZvaWQgZG93bmxv
YWREYXRhUmVjZWl2ZWQoV2ViS2l0OjpEb3dubG9hZFByb3h5KiwgdWludDY0X3QgbGVuZ3RoKTsK
KwogcHVibGljIFFfU0xPVFM6CiAgICAgdm9pZCB3ZWJBY3Rpb25UcmlnZ2VyZWQoYm9vbCBjaGVj
a2VkKTsKIApAQCAtMjA3LDYgKzIxNCw4IEBAIHByaXZhdGU6CiAKICAgICBPd25QdHI8UVVuZG9T
dGFjaz4gbV91bmRvU3RhY2s7CiAgICAgaW50IG1fbG9hZFByb2dyZXNzOworCisgICAgUU1hcDx1
aW50NjRfdCwgUVdlYkRvd25sb2FkSXRlbSo+IG1fZG93bmxvYWRzOwogfTsKIAogI2VuZGlmIC8q
IFF0V2ViUGFnZVByb3h5X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9U
b3VjaFZpZXdJbnRlcmZhY2UuaAppbmRleCA2YzhkZTQ5OTM1M2M0YjdkZDEzYmMxYzdhNWZmNWE0
OThhYzU2ZjI0Li4yZDYwODM5ZTY0Y2M5NmEzMWNmYWQ0YjI1MmUzZGE0NjA0ZDFjM2FkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVG91Y2hWaWV3SW50ZXJmYWNlLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1RvdWNoVmlld0ludGVyZmFjZS5oCkBA
IC04Miw2ICs4Miw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBRSlNFbmdpbmUqIGVuZ2luZSgp
OwogCiAgICAgdmlydHVhbCB2b2lkIGNob29zZUZpbGVzKFdLT3BlblBhbmVsUmVzdWx0TGlzdGVu
ZXJSZWYsIGNvbnN0IFFTdHJpbmdMaXN0JiwgRmlsZUNob29zZXJUeXBlKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgZG93bmxvYWRSZXF1ZXN0ZWQoUVdlYkRvd25sb2FkSXRlbSogZG93bmxvYWRJdGVt
KSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRNb3VzZU1vdmVPdmVyRWxlbWVudChjb25zdCBR
VXJsJiwgY29uc3QgUVN0cmluZyYpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvVmlld0ludGVyZmFjZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0
L1ZpZXdJbnRlcmZhY2UuaAppbmRleCBjZTI0MmMyOGQwNTg4MTg5Y2YzMTM5NTFiNTkyZjg4ZmIw
MGYzYTgzLi4yMzhiY2VmMDk0MGNiNDA4ZmQxOWQwYmIxODg5MGU4NzFjYmMzNDMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVmlld0ludGVyZmFjZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9WaWV3SW50ZXJmYWNlLmgKQEAgLTI2LDYgKzI2LDcg
QEAKICNpbmNsdWRlIDxRTWVudT4KICNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgogCitjbGFz
cyBRV2ViRG93bmxvYWRJdGVtOwogY2xhc3MgUVdlYkVycm9yOwogCiBRVF9CRUdJTl9OQU1FU1BB
Q0UKQEAgLTk0LDYgKzk1LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjaG9vc2VGaWxl
cyhXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmLCBjb25zdCBRU3RyaW5nTGlzdCYgc2VsZWN0
ZWRGaWxlTmFtZXMsIEZpbGVDaG9vc2VyVHlwZSkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGRp
ZE1vdXNlTW92ZU92ZXJFbGVtZW50KGNvbnN0IFFVcmwmLCBjb25zdCBRU3RyaW5nJikgPSAwOwor
CisgICAgdmlydHVhbCB2b2lkIGRvd25sb2FkUmVxdWVzdGVkKFFXZWJEb3dubG9hZEl0ZW0qKSA9
IDA7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXdl
YmVycm9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xd2ViZXJyb3IuY3BwCmlu
ZGV4IGE1ZjhkOTg5NTc1ZTMyNWIwYTZlOWM0MWEzOGNmNDk4YzhmYmJhNjQuLmIwMjhhNjMxMzBm
ZWQxODhhMzNiM2Y5MDVjOTk3NWU4OGU4MzI0NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9xd2ViZXJyb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9xdC9xd2ViZXJyb3IuY3BwCkBAIC04MCwzICs4MCw4IEBAIFFVcmwgUVdlYkVycm9yOjp1cmwo
KSBjb25zdAogICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiBmYWlsaW5nVVJMID0gYWRvcHRXSyhX
S0Vycm9yQ29weUZhaWxpbmdVUkwoZC0+ZXJyb3IuZ2V0KCkpKTsKICAgICByZXR1cm4gV0tVUkxD
b3B5UVVybChmYWlsaW5nVVJMLmdldCgpKTsKIH0KKworUVN0cmluZyBRV2ViRXJyb3I6OmRlc2Ny
aXB0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV0tTdHJpbmdDb3B5UVN0cmluZyhXS0Vycm9y
Q29weUxvY2FsaXplZERlc2NyaXB0aW9uKGQtPmVycm9yLmdldCgpKSk7Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXdlYmVycm9yLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvcXdlYmVycm9yLmgKaW5kZXggMzE0MmI2NGExODU0MDg4ODVkODE3YzQy
M2JlNmZmMWJlZDdmNDRmYi4uMGVlYTgzZmZmOWJjNmI2YmIwNDZmNGM3YmJiYmViYTUzYzVjMzEx
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F3ZWJlcnJvci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xd2ViZXJyb3IuaApAQCAtMjEsNiArMjEs
NyBAQAogI2lmbmRlZiBxd2ViZXJyb3JfaAogI2RlZmluZSBxd2ViZXJyb3JfaAogCisjaW5jbHVk
ZSAicXdlYmRvd25sb2FkaXRlbS5oIgogI2luY2x1ZGUgInF3ZWJraXRnbG9iYWwuaCIKICNpbmNs
dWRlIDxRU2hhcmVkRGF0YVBvaW50ZXI+CiAjaW5jbHVkZSA8UXROZXR3b3JrL1FOZXR3b3JrUmVw
bHk+CkBAIC00Myw5ICs0NCwxMSBAQCBwdWJsaWM6CiAgICAgVHlwZSB0eXBlKCkgY29uc3Q7CiAg
ICAgUVVybCB1cmwoKSBjb25zdDsKICAgICBpbnQgZXJyb3JDb2RlKCkgY29uc3Q7CisgICAgUVN0
cmluZyBkZXNjcmlwdGlvbigpIGNvbnN0OwogCiAgICAgaW50IGVycm9yQ29kZUFzSHR0cFN0YXR1
c0NvZGUoKSBjb25zdCB7IHJldHVybiBlcnJvckNvZGUoKTsgfQogICAgIFFOZXR3b3JrUmVwbHk6
Ok5ldHdvcmtFcnJvciBlcnJvckNvZGVBc05ldHdvcmtFcnJvcigpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PFFOZXR3b3JrUmVwbHk6Ok5ldHdvcmtFcnJvcj4oZXJyb3JDb2RlKCkpOyB9Cisg
ICAgUVdlYkRvd25sb2FkSXRlbTo6RG93bmxvYWRFcnJvciBlcnJvckNvZGVBc0Rvd25sb2FkRXJy
b3IoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxRV2ViRG93bmxvYWRJdGVtOjpEb3dubG9h
ZEVycm9yPihlcnJvckNvZGUoKSk7IH0KIAogICAgIFFXZWJFcnJvcihjb25zdCBRV2ViRXJyb3Im
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0MkFQSS5wcmkgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyQVBJLnByaQppbmRleCA5OGI2YjgyNzE2MGJhYzY3ZTUyZmQ0NjJkNGFl
ZWY5YWY5NjU3NDliLi5lYzQzOTI2ZjFhNGY3YTBhMzU0NDk0NjRiMGM5NzAwMzliZjJiMjA3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyQVBJLnByaQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyQVBJLnByaQpAQCAtNDksNiArNDksNyBAQCBXRUJLSVQyX0FQSV9TT1VSQ0VT
ID0gXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL3F0L1dLU3Ry
aW5nUXQuY3BwIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2NwcC9x
dC9XS1VSTFF0LmNwcCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xZGVza3RvcHdlYnZpZXcuY3BwIFwKKyAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3F3ZWJkb3dubG9hZGl0ZW0uY3BwIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2UuY3BwIFwKICAgICAkJFNPVVJDRV9ESVIv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXcuY3BwIFwKICAgICAkJFNPVVJD
RV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJuYXZpZ2F0aW9uY29udHJvbGxlci5j
cHAgXApAQCAtMTI5LDYgKzEzMCw4IEBAIFdFQktJVDJfQVBJX0hFQURFUlMgKz0gXAogICAgICQk
U09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL3F0L1dLVVJMUXQuaCBcCiAgICAg
JCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuaCBc
CiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZp
ZXdfcC5oIFwKKyAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJk
b3dubG9hZGl0ZW0uaCBcCisgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xd2ViZG93bmxvYWRpdGVtX3AuaCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9xdG91Y2h3ZWJwYWdlLmggXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZV9wLmggXAogICAgICQkU09VUkNFX0RJUi9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2Vidmlldy5oIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCmluZGV4IGFjY2NkM2Y4OGUyYTY5OTU5
N2EzOWI3YmY4MjhkNDM2MzdiNzBmMzguLjhmNGEwNmM3NmQ2Yzc2ZTk5ZTBkZGNkYzM0NWRkMjM5
YjlkZGU0MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWQuaApAQCAtOTIsNiArOTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlJiBy
ZXN1bWVEYXRhKTsKICAgICB2b2lkIGRpZENhbmNlbChjb25zdCBDb3JlSVBDOjpEYXRhUmVmZXJl
bmNlJiByZXN1bWVEYXRhKTsKICAgICB2b2lkIGRpZERlY2lkZURlc3RpbmF0aW9uKGNvbnN0IFN0
cmluZyYsIGJvb2wgYWxsb3dPdmVyd3JpdGUpOworICAgIHZvaWQgc3RhcnRUcmFuc2Zlcihjb25z
dCBTdHJpbmcmIGRlc3RpbmF0aW9uKTsKIAogI2lmIFVTRShDRk5FVFdPUkspCiAgICAgY29uc3Qg
U3RyaW5nJiBkZXN0aW5hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb247IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1h
bmFnZXIuY3BwCmluZGV4IGE2MjQ4OTFmODAxOTRmM2FkYzE1MTgxYWM4MDg0YjQ2OTU1OGJjYjYu
LmJjNGEzZGEyNTQ4OTA4MzUwMjlmZGQyY2FjMTI0ZjBlMTliYjQ0MmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNw
cApAQCAtNzksNCArNzksMTEgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OmRvd25sb2FkRmluaXNo
ZWQoRG93bmxvYWQqIGRvd25sb2FkKQogICAgIGRlbGV0ZSBkb3dubG9hZDsKIH0KIAordm9pZCBE
b3dubG9hZE1hbmFnZXI6OnN0YXJ0VHJhbnNmZXIodWludDY0X3QgZG93bmxvYWRJRCwgY29uc3Qg
U3RyaW5nJiBkZXN0aW5hdGlvbikKK3sKKyAgICBBU1NFUlQobV9kb3dubG9hZHMuY29udGFpbnMo
ZG93bmxvYWRJRCkpOworICAgIERvd25sb2FkKiBkb3dubG9hZCA9IG1fZG93bmxvYWRzLmdldChk
b3dubG9hZElEKTsKKyAgICBkb3dubG9hZC0+c3RhcnRUcmFuc2ZlcihkZXN0aW5hdGlvbik7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAppbmRleCAxZjI3Yjg2N2FlZDU1OGZi
Yjc1M2JjNjUyZjE4YjBhY2I2OWEwMDIzLi4wM2QyNDA1NmM3NGI5ODE0YjA4ZTBjMWM2ODM2M2Iz
NjcxMzQ4NjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZE1hbmFnZXIuaApAQCAtMjksNiArMjksMTAgQEAKICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCituYW1lc3BhY2UgV1RG
IHsKK2NsYXNzIFN0cmluZzsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFJl
c291cmNlSGFuZGxlOwogICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKQEAgLTU0LDYgKzU4LDgg
QEAgcHVibGljOgogICAgIHZvaWQgZG93bmxvYWRGaW5pc2hlZChEb3dubG9hZCopOwogICAgIGJv
b2wgaXNEb3dubG9hZGluZygpIGNvbnN0IHsgcmV0dXJuICFtX2Rvd25sb2Fkcy5pc0VtcHR5KCk7
IH0KIAorICAgIHZvaWQgc3RhcnRUcmFuc2Zlcih1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBX
VEY6OlN0cmluZyYgZGVzdGluYXRpb24pOworCiBwcml2YXRlOgogICAgIERvd25sb2FkTWFuYWdl
cigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9j
Zm5ldC9Eb3dubG9hZENGTmV0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxv
YWRzL2NmbmV0L0Rvd25sb2FkQ0ZOZXQuY3BwCmluZGV4IDJiODlmYzliMTA4ZDMwZjEzYjllYzY2
NTdiYTE1ZWFkZTJmNzQyMDYuLjg1YjZmYTA3MTUyZDNjNWI4NGNiOWUxOGMxY2NiNGIwYzVjN2Fk
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL2NmbmV0
L0Rvd25sb2FkQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxv
YWRzL2NmbmV0L0Rvd25sb2FkQ0ZOZXQuY3BwCkBAIC0yNjAsNCArMjYwLDkgQEAgdm9pZCBEb3du
bG9hZDo6cmVjZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Um
IGF1dGhlbnRpY2F0aW8KICAgICBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5hdXRoZW50aWNhdGlv
bkNsaWVudCgpLT5yZWNlaXZlZENhbmNlbGxhdGlvbihhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk7
CiB9CiAKK3ZvaWQgRG93bmxvYWQ6OnN0YXJ0VHJhbnNmZXIoY29uc3QgU3RyaW5nJiBkZXN0aW5h
dGlvbikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL2N1cmwv
RG93bmxvYWRDdXJsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL2N1
cmwvRG93bmxvYWRDdXJsLmNwcAppbmRleCAyMGEzMzIxYzgyY2JhYjM1ZDM4YzQ3NDliODRmY2U3
OTg2NmI5NzMzLi4xNWNhZjgxNjJiNDNhNjc2MmNhMmY2NzdmY2VhOWZkOTczNzRlODM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9jdXJsL0Rvd25sb2Fk
Q3VybC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvY3VybC9E
b3dubG9hZEN1cmwuY3BwCkBAIC04OCw0ICs4OCw5IEBAIHZvaWQgRG93bmxvYWQ6OmNhbmNlbEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIERvd25sb2FkOjpzdGFydFRyYW5zZmVyKGNv
bnN0IFN0cmluZyYgZGVzdGluYXRpb24pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0KaW5kZXggMGRhNzIzYjQ3OWYzMjdkMDQ0
YmQ1Y2E4NmM4NWZiNTQwMzFjZTAxZi4uMGQwOWYxNzUzYzc4ZjFmZTljMWU1Y2UzZWFhOWI5ZmZh
NWNkMjRkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMv
bWFjL0Rvd25sb2FkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxv
YWRzL21hYy9Eb3dubG9hZE1hYy5tbQpAQCAtMTkzLDYgKzE5MywxMSBAQCB2b2lkIERvd25sb2Fk
OjpyZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0
aGVudGljYXRpbwogICAgIFthdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5zZW5kZXIoKSBjYW5jZWxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZTphdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5uc1VSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKCldOwogfQogCit2b2lkIERvd25sb2FkOjpzdGFydFRyYW5zZmVy
KGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKIEBpbXBsZW1lbnRhdGlvbiBXS0Rvd25sb2FkQXNE
ZWxlZ2F0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMv
cXQvRG93bmxvYWRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9x
dC9Eb3dubG9hZFF0LmNwcAppbmRleCA5ZWU5OTk1ZTgwZTg4MGRkYTZkMjdjOWEzYjUwZjBjMTYx
ZGVhMGUwLi40ZWVmNDFjNDBiNmM3NjQ5YmE5MDU0MzQ2ZTI4MTZhYTg5NTQwZDcwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9Eb3dubG9hZFF0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9Eb3dubG9hZFF0
LmNwcApAQCAtNDYsMTMgKzQ2LDE0IEBAIHZvaWQgRG93bmxvYWQ6OnN0YXJ0KFdlYlBhZ2UqIGlu
aXRpYXRpbmdXZWJQYWdlKQogICAgIEFTU0VSVCghbV9xdERvd25sb2FkZXIpOwogCiAgICAgbV9x
dERvd25sb2FkZXIgPSBuZXcgUXRGaWxlRG93bmxvYWRlcih0aGlzLCBhZG9wdFB0cihtYW5hZ2Vy
LT5nZXQobV9yZXF1ZXN0LnRvTmV0d29ya1JlcXVlc3QoKSkpKTsKLSAgICBtX3F0RG93bmxvYWRl
ci0+c3RhcnQoKTsKKyAgICBtX3F0RG93bmxvYWRlci0+aW5pdCgpOwogfQogCiB2b2lkIERvd25s
b2FkOjpzdGFydFdpdGhIYW5kbGUoV2ViUGFnZSogaW5pdGlhdGluZ1BhZ2UsIFJlc291cmNlSGFu
ZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgaW5pdGlhbFJlcXVlc3QsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3ApCiB7CiAgICAgQVNTRVJUKCFtX3F0RG93bmxvYWRlcik7
CiAgICAgbV9xdERvd25sb2FkZXIgPSBuZXcgUXRGaWxlRG93bmxvYWRlcih0aGlzLCBhZG9wdFB0
cihoYW5kbGUtPmdldEludGVybmFsKCktPm1fam9iLT5yZWxlYXNlKCkpKTsKKyAgICBtX3F0RG93
bmxvYWRlci0+aW5pdCgpOwogfQogCiB2b2lkIERvd25sb2FkOjpjYW5jZWwoKQpAQCAtNzAsNyAr
NzEsMTIgQEAgdm9pZCBEb3dubG9hZDo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKIAogdm9pZCBEb3du
bG9hZDo6ZGlkRGVjaWRlRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbiwgYm9v
bCBhbGxvd092ZXJ3cml0ZSkKIHsKLSAgICBtX3F0RG93bmxvYWRlci0+ZGVjaWRlZERlc3RpbmF0
aW9uKGRlc3RpbmF0aW9uLCBhbGxvd092ZXJ3cml0ZSk7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKwordm9pZCBEb3dubG9hZDo6c3RhcnRUcmFuc2Zlcihjb25zdCBTdHJpbmcmIGRlc3RpbmF0
aW9uKQoreworICAgIG1fcXREb3dubG9hZGVyLT5zdGFydFRyYW5zZmVyKGRlc3RpbmF0aW9uKTsK
IH0KIAogdm9pZCBEb3dubG9hZDo6cGxhdGZvcm1EaWRGaW5pc2goKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3dubG9hZGVy
LmNwcAppbmRleCBjOTM2YjA4ZTcwZjkwNGNmNGI1YjMzNmY1NGI3MjY5NzdkYmVkMGY5Li4yMGE1
NmU3ZDk1YzNmMWY0NzMwODIxYWNjNDcyY2I1NThjMWJlMWRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3dubG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3dubG9hZGVy
LmNwcApAQCAtNTMsNDUgKzUzLDQxIEBAIFF0RmlsZURvd25sb2FkZXI6On5RdEZpbGVEb3dubG9h
ZGVyKCkKICAgICBhYm9ydERvd25sb2FkV3JpdGluZ0FuZEVtaXRFcnJvcihRdEZpbGVEb3dubG9h
ZGVyOjpEb3dubG9hZEVycm9yQWJvcnRlZCk7CiB9CiAKLXZvaWQgUXRGaWxlRG93bmxvYWRlcjo6
c3RhcnQoKQordm9pZCBRdEZpbGVEb3dubG9hZGVyOjppbml0KCkKIHsKICAgICBjb25uZWN0KG1f
cmVwbHkuZ2V0KCksIFNJR05BTChyZWFkeVJlYWQoKSksIFNMT1Qob25SZWFkeVJlYWQoKSkpOwog
ICAgIGNvbm5lY3QobV9yZXBseS5nZXQoKSwgU0lHTkFMKGZpbmlzaGVkKCkpLCBTTE9UKG9uRmlu
aXNoZWQoKSkpOwogICAgIGNvbm5lY3QobV9yZXBseS5nZXQoKSwgU0lHTkFMKGVycm9yKFFOZXR3
b3JrUmVwbHk6Ok5ldHdvcmtFcnJvcikpLCBTTE9UKG9uRXJyb3IoUU5ldHdvcmtSZXBseTo6TmV0
d29ya0Vycm9yKSkpOwotCi0gICAgLy8gQ2FsbCBvblJlYWR5UmVhZCBqdXN0IGluIGNhc2Ugc29t
ZSBkYXRhIGlzIGFscmVhZHkgd2FpdGluZy4KLSAgICBvblJlYWR5UmVhZCgpOwogfQogCi12b2lk
IFF0RmlsZURvd25sb2FkZXI6OmRldGVybWluZUZpbGVuYW1lKCkKK1FTdHJpbmcgUXRGaWxlRG93
bmxvYWRlcjo6ZGV0ZXJtaW5lRmlsZW5hbWUoKQogewogICAgIEFTU0VSVCghbV9kZXN0aW5hdGlv
bkZpbGUpOwogCi0gICAgUVN0cmluZyBmaWxlTmFtZUNhbmRpZGF0ZSA9IGZpbGVuYW1lRnJvbUhU
VFBDb250ZW50RGlzcG9zaXRpb24oUVN0cmluZzo6ZnJvbUxhdGluMShtX3JlcGx5LT5yYXdIZWFk
ZXIoIkNvbnRlbnQtRGlzcG9zaXRpb24iKSkpOwotICAgIGlmIChmaWxlTmFtZUNhbmRpZGF0ZS5p
c0VtcHR5KCkpIHsKKyAgICBRU3RyaW5nIGZpbGVuYW1lQ2FuZGlkYXRlID0gZmlsZW5hbWVGcm9t
SFRUUENvbnRlbnREaXNwb3NpdGlvbihRU3RyaW5nOjpmcm9tTGF0aW4xKG1fcmVwbHktPnJhd0hl
YWRlcigiQ29udGVudC1EaXNwb3NpdGlvbiIpKSk7CisgICAgaWYgKGZpbGVuYW1lQ2FuZGlkYXRl
LmlzRW1wdHkoKSkgewogICAgICAgICBLVVJMIGt1cmwgPSBtX3JlcGx5LT51cmwoKTsKLSAgICAg
ICAgZmlsZU5hbWVDYW5kaWRhdGUgPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoa3VybC5sYXN0
UGF0aENvbXBvbmVudCgpKTsKKyAgICAgICAgZmlsZW5hbWVDYW5kaWRhdGUgPSBkZWNvZGVVUkxF
c2NhcGVTZXF1ZW5jZXMoa3VybC5sYXN0UGF0aENvbXBvbmVudCgpKTsKICAgICB9CiAKLSAgICBp
ZiAoZmlsZU5hbWVDYW5kaWRhdGUuaXNFbXB0eSgpKSB7CisgICAgaWYgKGZpbGVuYW1lQ2FuZGlk
YXRlLmlzRW1wdHkoKSkgewogICAgICAgICBhYm9ydERvd25sb2FkV3JpdGluZ0FuZEVtaXRFcnJv
cihRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9yQ2Fubm90RGV0ZXJtaW5lRmlsZW5hbWUp
OwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBRU3RyaW5nKCk7CiAgICAgfQogCiAg
ICAgLy8gTWFrZSBzdXJlIHRoYXQgd2UgcmVtb3ZlIHBvc3NpYmxlICIuLi8uLiIgcGFydHMgaW4g
dGhlIGdpdmVuIGZpbGUgbmFtZS4KLSAgICBRRmlsZUluZm8gZmlsZU5hbWVGaWx0ZXIoZmlsZU5h
bWVDYW5kaWRhdGUpOwotICAgIFFTdHJpbmcgZmlsZU5hbWUgPSBmaWxlTmFtZUZpbHRlci5maWxl
TmFtZSgpOworICAgIFFGaWxlSW5mbyBmaWxlbmFtZUZpbHRlcihmaWxlbmFtZUNhbmRpZGF0ZSk7
CisgICAgUVN0cmluZyBmaWxlbmFtZSA9IGZpbGVuYW1lRmlsdGVyLmZpbGVOYW1lKCk7CiAKLSAg
ICBpZiAoZmlsZU5hbWUuaXNFbXB0eSgpKSB7CisgICAgaWYgKGZpbGVuYW1lLmlzRW1wdHkoKSkg
ewogICAgICAgICBhYm9ydERvd25sb2FkV3JpdGluZ0FuZEVtaXRFcnJvcihRdEZpbGVEb3dubG9h
ZGVyOjpEb3dubG9hZEVycm9yQ2Fubm90RGV0ZXJtaW5lRmlsZW5hbWUpOwotICAgICAgICByZXR1
cm47CisgICAgICAgIHJldHVybiBRU3RyaW5nKCk7CiAgICAgfQogCi0gICAgYm9vbCBhbGxvd092
ZXJ3cml0ZTsKLSAgICBtX2Rvd25sb2FkLT5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZShmaWxlTmFtZSwgYWxsb3dPdmVyd3JpdGUpOworICAgIHJldHVybiBmaWxlbmFtZTsK
IH0KIAotdm9pZCBRdEZpbGVEb3dubG9hZGVyOjpkZWNpZGVkRGVzdGluYXRpb24oY29uc3QgUVN0
cmluZyYgZGVjaWRlZEZpbGVQYXRoLCBib29sIGFsbG93T3ZlcndyaXRlKQordm9pZCBRdEZpbGVE
b3dubG9hZGVyOjpzdGFydFRyYW5zZmVyKGNvbnN0IFFTdHJpbmcmIGRlY2lkZWRGaWxlUGF0aCkK
IHsKICAgICBBU1NFUlQoIW1fZGVzdGluYXRpb25GaWxlKTsKIApAQCAtMTAyLDE0ICs5OCwxNCBA
QCB2b2lkIFF0RmlsZURvd25sb2FkZXI6OmRlY2lkZWREZXN0aW5hdGlvbihjb25zdCBRU3RyaW5n
JiBkZWNpZGVkRmlsZVBhdGgsIGJvb2wgYQogICAgIH0KIAogICAgIGlmIChkZWNpZGVkRmlsZVBh
dGguaXNFbXB0eSgpKSB7Ci0gICAgICAgIGFib3J0RG93bmxvYWRXcml0aW5nQW5kRW1pdEVycm9y
KFF0RmlsZURvd25sb2FkZXI6OkRvd25sb2FkRXJyb3JDYW5jZWxsZWRCeUNhbGxlcik7CisgICAg
ICAgIGFib3J0RG93bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKFF0RmlsZURvd25sb2FkZXI6OkRv
d25sb2FkRXJyb3JDYW5jZWxsZWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgT3du
UHRyPFFGaWxlPiBkb3dubG9hZEZpbGUgPSBhZG9wdFB0cihuZXcgUUZpbGUoZGVjaWRlZEZpbGVQ
YXRoKSk7CiAKLSAgICBpZiAoIWFsbG93T3ZlcndyaXRlICYmIGRvd25sb2FkRmlsZS0+ZXhpc3Rz
KCkpIHsKLSAgICAgICAgYWJvcnREb3dubG9hZFdyaXRpbmdBbmRFbWl0RXJyb3IoUXRGaWxlRG93
bmxvYWRlcjo6RG93bmxvYWRFcnJvckZpbGVBbHJlYWR5RXhpc3RzKTsKKyAgICBpZiAoZG93bmxv
YWRGaWxlLT5leGlzdHMoKSkgeworICAgICAgICBhYm9ydERvd25sb2FkV3JpdGluZ0FuZEVtaXRF
cnJvcihRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9yRGVzdGluYXRpb25BbHJlYWR5RXhp
c3RzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTMzLDcgKzEyOSw2IEBAIHZvaWQg
UXRGaWxlRG93bmxvYWRlcjo6ZGVjaWRlZERlc3RpbmF0aW9uKGNvbnN0IFFTdHJpbmcmIGRlY2lk
ZWRGaWxlUGF0aCwgYm9vbCBhCiAgICAgLy8gZnVuY3Rpb24gd2FzIGNhbGxlZC4KICAgICBpZiAo
bV9yZXBseS0+aXNGaW5pc2hlZCgpKQogICAgICAgICBvbkZpbmlzaGVkKCk7Ci0KIH0KIAogdm9p
ZCBRdEZpbGVEb3dubG9hZGVyOjphYm9ydERvd25sb2FkV3JpdGluZ0FuZEVtaXRFcnJvcihRdEZp
bGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9yIGVycm9yQ29kZSkKQEAgLTE1NywxMCArMTUyLDEw
IEBAIHZvaWQgUXRGaWxlRG93bmxvYWRlcjo6YWJvcnREb3dubG9hZFdyaXRpbmdBbmRFbWl0RXJy
b3IoUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvCiAgICAgY2FzZSBRdEZpbGVEb3dubG9hZGVyOjpE
b3dubG9hZEVycm9yQ2Fubm90T3BlbkZpbGU6CiAgICAgICAgIHRyYW5zbGF0ZWRFcnJvck1lc3Nh
Z2UgPSBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlF0RmlsZURvd25sb2FkZXIiLCAiQ2Fu
bm90IG9wZW4gZmlsZSBmb3Igd3JpdGluZyIpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFF0
RmlsZURvd25sb2FkZXI6OkRvd25sb2FkRXJyb3JGaWxlQWxyZWFkeUV4aXN0czoKLSAgICAgICAg
dHJhbnNsYXRlZEVycm9yTWVzc2FnZSA9IFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUXRG
aWxlRG93bmxvYWRlciIsICJGaWxlIGFscmVhZHkgZXhpc3RzIik7CisgICAgY2FzZSBRdEZpbGVE
b3dubG9hZGVyOjpEb3dubG9hZEVycm9yRGVzdGluYXRpb25BbHJlYWR5RXhpc3RzOgorICAgICAg
ICB0cmFuc2xhdGVkRXJyb3JNZXNzYWdlID0gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJR
dEZpbGVEb3dubG9hZGVyIiwgIkRlc3RpbmF0aW9uIGFscmVhZHkgZXhpc3RzIik7CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvckNhbmNlbGxl
ZEJ5Q2FsbGVyOgorICAgIGNhc2UgUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvckNhbmNl
bGxlZDoKICAgICAgICAgdHJhbnNsYXRlZEVycm9yTWVzc2FnZSA9IFFDb3JlQXBwbGljYXRpb246
OnRyYW5zbGF0ZSgiUXRGaWxlRG93bmxvYWRlciIsICJEb3dubG9hZCBjYW5jZWxsZWQgYnkgY2Fs
bGVyIik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUXRGaWxlRG93bmxvYWRlcjo6RG93bmxv
YWRFcnJvckNhbm5vdERldGVybWluZUZpbGVuYW1lOgpAQCAtMjAwLDE2ICsxOTUsMTkgQEAgdm9p
ZCBRdEZpbGVEb3dubG9hZGVyOjpvblJlYWR5UmVhZCgpCiAgICAgICAgIFN0cmluZyBjb250ZW50
VHlwZSA9IG1fcmVwbHktPmhlYWRlcihRTmV0d29ya1JlcXVlc3Q6OkNvbnRlbnRUeXBlSGVhZGVy
KS50b1N0cmluZygpOwogICAgICAgICBTdHJpbmcgZW5jb2RpbmcgPSBleHRyYWN0Q2hhcnNldEZy
b21NZWRpYVR5cGUoY29udGVudFR5cGUpOwogICAgICAgICBTdHJpbmcgbWltZVR5cGUgPSBleHRy
YWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlKTsKKyAgICAgICAgU3RyaW5nIGZp
bGVuYW1lID0gZGV0ZXJtaW5lRmlsZW5hbWUoKTsKKworICAgICAgICAvLyBJZiBmaWxlbmFtZSBp
cyBlbXB0eSBpdCBtZWFucyBkZXRlcm1pbmVGaWxlbmFtZSBhYm9ydGVkIGFuZCBlbWl0dGVkIGFu
IGVycm9yLgorICAgICAgICBpZiAoZmlsZW5hbWUuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgIC8vIExldCdzIHRyeSB0byBndWVzcyBmcm9tIHRoZSBleHRlbnNpb24u
CiAgICAgICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBtaW1lVHlwZSA9
IE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yUGF0aChtX3JlcGx5LT51cmwoKS5wYXRo
KCkpOwogCi0gICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UobV9yZXBseS0+dXJsKCks
IG1pbWVUeXBlLCBtX3JlcGx5LT5oZWFkZXIoUU5ldHdvcmtSZXF1ZXN0OjpDb250ZW50TGVuZ3Ro
SGVhZGVyKS50b0xvbmdMb25nKCksIGVuY29kaW5nLCBTdHJpbmcoKSk7CisgICAgICAgIFJlc291
cmNlUmVzcG9uc2UgcmVzcG9uc2UobV9yZXBseS0+dXJsKCksIG1pbWVUeXBlLCBtX3JlcGx5LT5o
ZWFkZXIoUU5ldHdvcmtSZXF1ZXN0OjpDb250ZW50TGVuZ3RoSGVhZGVyKS50b0xvbmdMb25nKCks
IGVuY29kaW5nLCBmaWxlbmFtZSk7CiAgICAgICAgIG1fZG93bmxvYWQtPmRpZFJlY2VpdmVSZXNw
b25zZShyZXNwb25zZSk7CiAKLSAgICAgICAgZGV0ZXJtaW5lRmlsZW5hbWUoKTsKLQogICAgICAg
ICBtX2hlYWRlcnNSZWFkID0gdHJ1ZTsKICAgICB9CiB9CkBAIC0yMjMsNiArMjIxLDggQEAgdm9p
ZCBRdEZpbGVEb3dubG9hZGVyOjpvbkZpbmlzaGVkKCkKIAogICAgIGlmIChtX2Vycm9yID09IFFO
ZXR3b3JrUmVwbHk6Ok5vRXJyb3IpCiAgICAgICAgIG1fZG93bmxvYWQtPmRpZEZpbmlzaCgpOwor
ICAgIGVsc2UgaWYgIChtX2Vycm9yID09IFFOZXR3b3JrUmVwbHk6Ok9wZXJhdGlvbkNhbmNlbGVk
RXJyb3IpCisgICAgICAgIGFib3J0RG93bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKFF0RmlsZURv
d25sb2FkZXI6OkRvd25sb2FkRXJyb3JDYW5jZWxsZWQpOwogICAgIGVsc2UKICAgICAgICAgYWJv
cnREb3dubG9hZFdyaXRpbmdBbmRFbWl0RXJyb3IoUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRF
cnJvck5ldHdvcmtGYWlsdXJlKTsKIH0KQEAgLTIzNSw2ICsyMzUsNyBAQCB2b2lkIFF0RmlsZURv
d25sb2FkZXI6Om9uRXJyb3IoUU5ldHdvcmtSZXBseTo6TmV0d29ya0Vycm9yIGNvZGUpCiB2b2lk
IFF0RmlsZURvd25sb2FkZXI6OmNhbmNlbCgpCiB7CiAgICAgbV9yZXBseS0+YWJvcnQoKTsKKyAg
ICAvLyBRdEZpbGVEb3dubG9hZGVyOjpvbkZpbmlzaGVkKCkgd2lsbCBiZSBjYWxsZWQgYW5kIHdp
bGwgcmFpc2UgYSBEb3dubG9hZEVycm9yQ2FuY2VsbGVkLgogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0
L1F0RmlsZURvd25sb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRz
L3F0L1F0RmlsZURvd25sb2FkZXIuaAppbmRleCBiNmI4YmEyOGJlYTlmOGFiMWQ2OTRjODQzMzQx
NDRhNGEyYzlkMTViLi4xMDIxOTA1N2E1NmI0OTg1MzkyMTUzNzZlZDM1YTVlMmJkNDEzZTA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVE
b3dubG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQv
UXRGaWxlRG93bmxvYWRlci5oCkBAIC00NCwxNiArNDQsMTYgQEAgY2xhc3MgUXRGaWxlRG93bmxv
YWRlciA6IHB1YmxpYyBRT2JqZWN0IHsKIHB1YmxpYzoKICAgICBRdEZpbGVEb3dubG9hZGVyKERv
d25sb2FkKiwgUGFzc093blB0cjxRTmV0d29ya1JlcGx5Pik7CiAgICAgdmlydHVhbCB+UXRGaWxl
RG93bmxvYWRlcigpOwotICAgIHZvaWQgZGVjaWRlZERlc3RpbmF0aW9uKGNvbnN0IFFTdHJpbmcm
IGRlY2lkZWRGaWxlUGF0aCwgYm9vbCBhbGxvd092ZXJ3cml0ZSk7CiAgICAgdm9pZCBjYW5jZWwo
KTsKLSAgICB2b2lkIHN0YXJ0KCk7CisgICAgdm9pZCBpbml0KCk7CisgICAgdm9pZCBzdGFydFRy
YW5zZmVyKGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uKTsKIAogICAgIGVudW0gRG93bmxvYWRF
cnJvciB7CiAgICAgICAgIERvd25sb2FkRXJyb3JBYm9ydGVkID0gMCwKICAgICAgICAgRG93bmxv
YWRFcnJvckNhbm5vdFdyaXRlVG9GaWxlLAogICAgICAgICBEb3dubG9hZEVycm9yQ2Fubm90T3Bl
bkZpbGUsCi0gICAgICAgIERvd25sb2FkRXJyb3JGaWxlQWxyZWFkeUV4aXN0cywKLSAgICAgICAg
RG93bmxvYWRFcnJvckNhbmNlbGxlZEJ5Q2FsbGVyLAorICAgICAgICBEb3dubG9hZEVycm9yRGVz
dGluYXRpb25BbHJlYWR5RXhpc3RzLAorICAgICAgICBEb3dubG9hZEVycm9yQ2FuY2VsbGVkLAog
ICAgICAgICBEb3dubG9hZEVycm9yQ2Fubm90RGV0ZXJtaW5lRmlsZW5hbWUsCiAgICAgICAgIERv
d25sb2FkRXJyb3JOZXR3b3JrRmFpbHVyZQogICAgIH07CkBAIC02NSw3ICs2NSw3IEBAIHByaXZh
dGUgc2xvdHM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBhYm9ydERvd25sb2FkV3JpdGluZ0FuZEVt
aXRFcnJvcihRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9yKTsKLSAgICB2b2lkIGRldGVy
bWluZUZpbGVuYW1lKCk7CisgICAgUVN0cmluZyBkZXRlcm1pbmVGaWxlbmFtZSgpOwogCiAgICAg
RG93bmxvYWQqIG1fZG93bmxvYWQ7CiAgICAgT3duUHRyPFFOZXR3b3JrUmVwbHk+IG1fcmVwbHk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9zb3VwL0Rv
d25sb2FkU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9zb3Vw
L0Rvd25sb2FkU291cC5jcHAKaW5kZXggYTIyODkxNmIyY2FkNjNmMTk0YjQzNWNjZGIwMDIyZWQy
NDU5NDhhOS4uNGRlODRhY2IwNzEzM2Q2YTMxMjQxMmQ4ZGE0NTkwMmVhMWJmMDVmYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNv
dXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3NvdXAvRG93
bmxvYWRTb3VwLmNwcApAQCAtNzgsNCArNzgsOSBAQCB2b2lkIERvd25sb2FkOjpyZWNlaXZlZENh
bmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpbwog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgRG93bmxvYWQ6OnN0YXJ0VHJhbnNmZXIo
Y29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwCmluZGV4IGU4YWE3YWRhNGI2ZTVlNmFmMTZhNDczODNmOTJjNDA3YjI4NjhhNWYuLmMw
YTAzZmQzOTIwZTcwZjNkNTQwZGVmNzI5Zjg5NzhlODA0ZmI1ODIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtOTU3LDYgKzk1NywxMSBAQCB2b2lkIFdlYlBy
b2Nlc3M6OmNhbmNlbERvd25sb2FkKHVpbnQ2NF90IGRvd25sb2FkSUQpCiAgICAgRG93bmxvYWRN
YW5hZ2VyOjpzaGFyZWQoKS5jYW5jZWxEb3dubG9hZChkb3dubG9hZElEKTsKIH0KIAordm9pZCBX
ZWJQcm9jZXNzOjpzdGFydFRyYW5zZmVyKHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFN0cmlu
ZyYgZGVzdGluYXRpb24pCit7CisgICAgRG93bmxvYWRNYW5hZ2VyOjpzaGFyZWQoKS5zdGFydFRy
YW5zZmVyKGRvd25sb2FkSUQsIGRlc3RpbmF0aW9uKTsKK30KKwogdm9pZCBXZWJQcm9jZXNzOjpz
ZXRFbmhhbmNlZEFjY2Vzc2liaWxpdHkoYm9vbCBmbGFnKQogewogICAgIFdlYkNvcmU6OkFYT2Jq
ZWN0Q2FjaGU6OnNldEVuaGFuY2VkVXNlckludGVyZmFjZUFjY2Vzc2liaWxpdHkoZmxhZyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDBkNWQ3NGE5YzFjMTQ5MTJk
MjM2ZGQzODRmNjUzNjAzMWI0MTQxMzIuLmZmNTQyNDMxMGE3MDc4MWEwMGViNThmNTdiOTI0OGMz
MWVjNjVmZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0xNzUs
NiArMTc1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZG93bmxvYWRSZXF1ZXN0KHVpbnQ2NF90
IGRvd25sb2FkSUQsIHVpbnQ2NF90IGluaXRpYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgY2FuY2VsRG93bmxvYWQodWludDY0X3QgZG93bmxv
YWRJRCk7CisgICAgdm9pZCBzdGFydFRyYW5zZmVyKHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0
IFN0cmluZyYgZGVzdGluYXRpb24pOwogCiAgICAgdm9pZCBzZXRUZXh0Q2hlY2tlclN0YXRlKGNv
bnN0IFRleHRDaGVja2VyU3RhdGUmKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA0NGY0NDE5YTA3ODdmYzc3NTljYzUy
YjNlNTQ0MzVmNzk1ZmMzOGY4Li5kYWU4MjQwOGJjODk4OTk2MzY3MzgzMWY3ZjFlOTg5MjE0OWE1
ZmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCkBAIC02NCw2ICs2NCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgewogICAgICMg
dHdvIG1lc3NhZ2VzLgogICAgIERvd25sb2FkUmVxdWVzdCh1aW50NjRfdCBkb3dubG9hZElELCB1
aW50NjRfdCBpbml0aWF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVz
dCkKICAgICBDYW5jZWxEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElEKQorICAgIFN0YXJ0VHJh
bnNmZXIodWludDY0X3QgZG93bmxvYWRJRCwgV1RGOjpTdHJpbmcgZGVzdGluYXRpb24pCiAKICAg
ICBTZXRUZXh0Q2hlY2tlclN0YXRlKFdlYktpdDo6VGV4dENoZWNrZXJTdGF0ZSB0ZXh0Q2hlY2tl
clN0YXRlKQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111709</attachid>
            <date>2011-10-19 19:09:28 -0700</date>
            <delta_ts>2011-10-20 08:13:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68962-20111019230911.patch</filename>
            <type>text/plain</type>
            <size>58423</size>
            <attacher name="Jesus Sanchez-Palencia">jesus</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTc4NTkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggNGNiMTIzNGEzODM1
OGU2MjJhYzdkN2UwNThiZDY2MWZiZjNlNTc1ZC4uYzY4MzcxMWM5YzQ2ZmE4MzkyMDg2YzkwZjZk
ZmIwMzc4OTBjMmJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0xMC0x
OSAgSmVzdXMgU2FuY2hlei1QYWxlbmNpYSAgPGplc3VzLnBhbGVuY2lhQG9wZW5ib3NzYS5vcmc+
CisKKyAgICAgICAgW1F0XVtXSzJdIERvd25sb2FkIHN1cHBvcnQgYW5kIEFQSSBpbiBVSVByb2Nl
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4OTYy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVnaXN0
ZXJpbmcgbmV3IHFtbCB0eXBlIFFXZWJEb3dubG9hZEl0ZW0uCisKKyAgICAgICAgKiBkZWNsYXJh
dGl2ZS9wbHVnaW4uY3BwOgorICAgICAgICAoV2ViS2l0UW1sUGx1Z2luOjpyZWdpc3RlclR5cGVz
KToKKwogMjAxMS0xMC0xOCAgVG9yIEFybmUgVmVzdGLDuCAgPHRvci5hcm5lLnZlc3Rib0Bub2tp
YS5jb20+CiAKICAgICAgICAgW1F0XSBNZXJnZSBRTUwgcGx1Z2luIGZvciBXZWJLaXQyIHdpdGgg
dGhlIG9yaWdpbmFsIFdlYktpdDEgcGx1Z2luCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzY2OWEyYmM1ZTM5OTg0
NDg5NTg0YmU2NWQxZWFmZGQzNWViOGE3OS4uZDZhMjAwMjlmZmVjNGJmYTg4MTk4MmQ5M2RmNmZh
NmI3NTM4NmVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MyBAQAorMjAxMS0xMC0xOSAgSmVz
dXMgU2FuY2hlei1QYWxlbmNpYSAgPGplc3VzLnBhbGVuY2lhQG9wZW5ib3NzYS5vcmc+CisKKyAg
ICAgICAgW1F0XVtXSzJdIERvd25sb2FkIHN1cHBvcnQgYW5kIEFQSSBpbiBVSVByb2Nlc3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4OTYyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgaW1wbGVtZW50
IG91ciBXa0NvbnRleHREb3dubG9hZENsaWVudCBhbmQgdGhlIG5lZWRlZCBjYWxsYmFja3MuCisg
ICAgICAgIFdlIGFsc28gYWRkIEFQSXMgYnkgZXhwb3NpbmcgUVdlYkRvd25sb2FkSXRlbS4gT2Jq
ZWN0cyBmcm9tIHRoaXMgdHlwZQorICAgICAgICBoYXZlIHRoZWlyIG93bmVyc2hpcCBoYW5kbGVk
IGJ5IFFEZXNrdG9wV2ViVmlldyBhbmQgd2lsbCBiZSBjcmVhdGVkIG9yCisgICAgICAgIGRlc3Ry
b3llZCBhcyBuZWVkZWQuIENsYXNzZXMgaW1wbGVtZW50aW5nIFZpZXdJbnRlcmZhY2UgKFFEZXNr
dG9wV2ViVmlld1ByaXZhdGUKKyAgICAgICAgYW5kIFRvdWNoVmlld0ludGVyZmFjZSkgd2lsbCBy
ZWNlaXZlIGEgc2lnbmFsIChkb3dubG9hZFJlcXVlc3RlZCkgd2l0aCBhIHBvaW50ZXIKKyAgICAg
ICAgdG8gdGhlIHJlY2VudGx5IGNyZWF0ZWQgUVdlYkRvd25sb2FkSXRlbS4gV2l0aCB0aGF0IHRo
ZXkgY2FuIGNvbm5lY3QgdGhlIHByb3BlcgorICAgICAgICBzaWduYWxzIGFuZCBzbG90cywgc2V0
IHRoZSBkb3dubG9hZCBkZXN0aW5hdGlvbiBwYXRoIGFuZCB0aGVuIGNhbGwgc3RhcnQoKS4KKyAg
ICAgICAgT2JqZWN0cyBvZiB0aGlzIHR5cGUgd2lsbCBwcm92aWRlIHRoZSBwcm9ncmVzcyBvZiBh
IGRvd25sb2FkLCBhIHNsb3QgdG8gY2FuY2VsIGl0LAorICAgICAgICBhbmQgc2lnbmFscyBmb3Ig
Z2V0dGluZyBmaW5pc2hlZCBvciBmYWlsdXJlIHN0YXR1cy4KKyAgICAgICAgUVdlYkRvd25sb2Fk
SXRlbSB3YXMgYWxzbyBleHBvc2VkIGluIFFNTC4KKyAgICAgICAgUXQgbmVlZGVkIGFuIGFzeW5j
aHJvbm91cyB3YXkgZm9yIFVJUHJvY2VzcyB0byByZXR1cm4gYSBkZXN0aW5hdGlvbiBwYXRoIHRv
IFdlYlByb2Nlc3MsCisgICAgICAgIHRoZXJlZm9yZSB0aGUgc3RhcnRUcmFuc2ZlciBBUEkgd2Fz
IGFkZGVkIHRvIFdlYktpdDIncyBEb3dubG9hZCBoYW5kbGVycy4KKworICAgICAgICAqIFNoYXJl
ZC9xdC9XZWJDb3JlQXJndW1lbnRDb2RlcnNRdC5jcHA6CisgICAgICAgIChDb3JlSVBDOjo6OmVu
Y29kZSk6CisgICAgICAgIChDb3JlSVBDOjo6OmRlY29kZSk6CisgICAgICAgIEFkZCBlbmNvZGlu
ZyBhbmQgZGVjb2Rpbmcgb2Ygc3VnZ2VzdGVkRmlsZW5hbWUgZm9yIFJlc291cmNlUmVzcG9uc2Uu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L1dLVmlldy5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFEZXNrdG9wV2ViVmll
d1ByaXZhdGU6OmRvd25sb2FkUmVxdWVzdGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0
L3FkZXNrdG9wd2Vidmlldy5oOiBBZGQgc2lnbmFsIGRvd25sb2FkUmVxdWVzdGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3X3AuaDoKKworICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvcXQvcXdlYmRvd25sb2FkaXRlbS5jcHA6IEFkZGVkLgorICAgICAgICAoUVdl
YkRvd25sb2FkSXRlbVByaXZhdGU6OlFXZWJEb3dubG9hZEl0ZW1Qcml2YXRlKToKKyAgICAgICAg
KFFXZWJEb3dubG9hZEl0ZW06OlFXZWJEb3dubG9hZEl0ZW0pOgorICAgICAgICAoUVdlYkRvd25s
b2FkSXRlbTo6flFXZWJEb3dubG9hZEl0ZW0pOgorICAgICAgICAoUVdlYkRvd25sb2FkSXRlbTo6
dXJsKToKKyAgICAgICAgKFFXZWJEb3dubG9hZEl0ZW06OmRlc3RpbmF0aW9uUGF0aCk6CisgICAg
ICAgIChRV2ViRG93bmxvYWRJdGVtOjpzZXREZXN0aW5hdGlvblBhdGgpOgorICAgICAgICAoUVdl
YkRvd25sb2FkSXRlbTo6c3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAoUVdlYkRvd25sb2Fk
SXRlbTo6bWltZVR5cGUpOgorICAgICAgICAoUVdlYkRvd25sb2FkSXRlbTo6ZXhwZWN0ZWRDb250
ZW50TGVuZ3RoKToKKyAgICAgICAgKFFXZWJEb3dubG9hZEl0ZW06OnRvdGFsQnl0ZXNSZWNlaXZl
ZCk6CisgICAgICAgIChRV2ViRG93bmxvYWRJdGVtOjpjYW5jZWwpOgorICAgICAgICAoUVdlYkRv
d25sb2FkSXRlbTo6c3RhcnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdlYmRvd25s
b2FkaXRlbS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F3ZWJkb3dubG9h
ZGl0ZW1fcC5oOiBBZGRlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OnN0YXJ0VHJhbnNm
ZXIpOiBRdCBvbmx5IGZ1bmN0aW9uIGFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpzZXRJ
bml0aWF0aW5nUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmluaXRpYXRp
bmdQYWdlKToKKyAgICAgICAgQWRkZWQgUXQgc3BlY2lmaWMgZnVuY3Rpb25zIHRvIGtlZXAgYSBX
ZWJQYWdlUHJveHkqIGluIGEgRG93bmxvYWRQcm94eS4KKyAgICAgICAgVGhpcyBpcyBuZWNlc3Nh
cnkgZHVlIHRvIG91ciBBUEkgZGVzaWduIHRoYXQgaGFuZGxlIGRvd25sb2FkcyB0aHJvdWdoIG91
ciBXZWJWaWV3LgorICAgICAgICBIb3dldmVyLCBpbiBXZWJLaXQyIGEgZG93bmxvYWQgaXMgY29u
dGV4dC1yZWxhdGVkIGFuZCBub3QgcGFnZSByZWxhdGVkLiBJbiBvcmRlciB0bworICAgICAgICBr
bm93IHdoaWNoIFdlYlZpZXcgbmVlZHMgdG8gcmVjZWl2ZSBhIGdpdmVuIGRvd25sb2FkJ3MgZG93
bmxvYWRSZXF1ZXN0ZWQgc2lnbmFsIHdlCisgICAgICAgIG5lZWQgdG8ga2VlcCB0aGlzIFdlYlBh
Z2UgaW5mb3JtYXRpb24sIHNvIHdlIGNhbiBnZXQgdG8gaXRzIFBhZ2VDbGllbnQuIEluIG91ciBp
bXBsZW1lbnRhdGlvbgorICAgICAgICB0aGlzIHdpbGwgbGVhZCB0byBhIFF0V2ViUGFnZVByb3h5
IHdoaWNoIHdpbGwgdGhlbiBsZWFkIHRvIHRoZSBjb3JyZWN0IFdlYlZpZXcuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOiBBZGRlZCBRdCBzcGVjaWZpYyBmdW5jdGlvbiB0byBy
ZXR1cm4gYSBRdFdlYlBhZ2VQcm94eSouCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmRvd25sb2FkKToKKyAgICAgICAg
VXNpbmcgRG93bmxvYWRQcm94eTo6c2V0SW5pdGlhdGluZ1BhZ2UgdG8ga2VlcCB0aGUgY3VycmVu
dCBXZWJQYWdlUHJveHkqLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbik6
CisgICAgICAgIFVzaW5nIERvd25sb2FkUHJveHk6OnNldEluaXRpYXRpbmdQYWdlIHRvIGtlZXAg
dGhlIGN1cnJlbnQgV2ViUGFnZVByb3h5Ki4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYWdlQ2xpZW50KToKKyAg
ICAgICAgUmV0dXJucyB0aGUgUGFnZUNsaWVudCogZnJvbSB0aGUgV2ViUGFnZVByb3h5LgorCisg
ICAgICAgICogVUlQcm9jZXNzL3F0L1F0RG93bmxvYWRNYW5hZ2VyLmNwcDogQWRkZWQuCisgICAg
ICAgIChRdERvd25sb2FkTWFuYWdlcjo6ZG93bmxvYWRSZWNlaXZlZFJlc3BvbnNlKToKKyAgICAg
ICAgKFF0RG93bmxvYWRNYW5hZ2VyOjpkb3dubG9hZENyZWF0ZWREZXN0aW5hdGlvbik6CisgICAg
ICAgIChRdERvd25sb2FkTWFuYWdlcjo6ZG93bmxvYWRGaW5pc2hlZCk6CisgICAgICAgIChRdERv
d25sb2FkTWFuYWdlcjo6ZG93bmxvYWRGYWlsZWQpOgorICAgICAgICAoUXREb3dubG9hZE1hbmFn
ZXI6OmRvd25sb2FkRGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXREb3du
bG9hZE1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgIEJvb3RzdHJhcCBvdXIgV0tDb250ZXh0RG93
bmxvYWRDbGllbnQgYW5kIHNldCBpdHMgY2FsbGJhY2tzLgorICAgICAgICBUaGlzIGVudGl0eSB3
aWxsIGFsc28gaGFuZGxlIGFsbCBkb3dubG9hZHMgYW5kIGtlZXAgYSBtYXAgb2YgdGhlbS4KKyAg
ICAgICAgSXQgd2lsbCBiZSBrZXB0IGFsaXZlIHRvZ2V0aGVyIHdpdGggdGhlIFdlYkNvbnRleHQg
YXMgYSBzdGF0aWMgbWVtYmVyCisgICAgICAgIG9mIFF0V2ViUGFnZVByb3h5LCBzbyB3ZSBjYW4g
a2VlcCBpdCBhY3Jvc3Mgc2V2ZXJhbCBXZWJQYWdlcyBhbmQsIHRoZXJlZm9yZSwKKyAgICAgICAg
V2ViVmlld3MuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5jcHA6CisgICAg
ICAgICh0b1F0RG93bmxvYWRNYW5hZ2VyKToKKyAgICAgICAgKHF0X3drX2RpZFJlY2VpdmVSZXNw
b25zZSk6CisgICAgICAgIChxdF93a19kaWRDcmVhdGVEZXN0aW5hdGlvbik6CisgICAgICAgIChx
dF93a19kaWRGaW5pc2hEb3dubG9hZCk6CisgICAgICAgIChxdF93a19kaWRGYWlsRG93bmxvYWQp
OgorICAgICAgICAocXRfd2tfZGlkUmVjZWl2ZURhdGFGb3JEb3dubG9hZCk6CisgICAgICAgICog
VUlQcm9jZXNzL3F0L0NsaWVudEltcGwuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFRv
dWNoVmlld0ludGVyZmFjZS5oOgorICAgICAgICAoV2ViS2l0OjpRdFRvdWNoVmlld0ludGVyZmFj
ZTo6ZG93bmxvYWRSZXF1ZXN0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFZpZXdJbnRl
cmZhY2UuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHA6Cisg
ICAgICAgIChRdFdlYlBhZ2VQcm94eTo6ZGVmYXVsdFdLQ29udGV4dCk6CisgICAgICAgIChRdFdl
YlBhZ2VQcm94eTo6flF0V2ViUGFnZVByb3h5KToKKyAgICAgICAgKFF0V2ViUGFnZVByb3h5Ojpk
b3dubG9hZFJlcXVlc3RlZCk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5
Lmg6CisgICAgICAgIChRdFdlYlBhZ2VQcm94eTo6cXRXZWJQYWdlUHJveHkpOgorICAgICAgICBG
cm9tIG5vdyBvbiBpdCB3aWxsIGtlZXAgYSBzdGF0aWMgUXREb3dubG9hZE1hbmFnZXIgdG8gbGl2
ZSB0b2dldGhlcgorICAgICAgICB3aXRoIHRoZSBkZWZhdWx0IFdlYkNvbnRleHQuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvcXQvcXdlYmVycm9yLmNwcDoKKyAgICAgICAgKFFXZWJFcnJvcjo6ZGVz
Y3JpcHRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9xd2ViZXJyb3IuaDoKKyAgICAgICAg
KFFXZWJFcnJvcjo6ZXJyb3JDb2RlQXNEb3dubG9hZEVycm9yKToKKyAgICAgICAgQWRkIERvd25s
b2FkIGVycm9yIGhhbmRsaW5nIHRvIFFXZWJFcnJvciBhbmQgYSBuZXcgQVBJCisgICAgICAgIHRv
IHJldHJpZXZlIHRoZSBlcnJvciBkZXNjcmlwdGlvbiBmcm9tIHRoZSBvcmlnaW5hbCBSZXNvdXJj
ZUVycm9yLgorICAgICAgICBBbHNvLCBpdCBub3cgaGFzIFFXZWJEb3dubG9hZEl0ZW06OkRvd25s
b2FkRXJyb3IgZXJyb3JDb2RlQXNEb3dubG9hZEVycm9yKCkKKyAgICAgICAgdGhhdCByZXR1cm5z
IHRoZSBlcnJvciBjb2RlIGFzIGEgRG93bmxvYWRFcnJvci4KKworICAgICAgICAqIFdlYktpdDIu
cHJvOgorICAgICAgICAqIFdlYktpdDJBUEkucHJpOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OnN0YXJ0
VHJhbnNmZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdl
ci5oOgorICAgICAgICBBZGRpbmcgUXQgc3BlY2lmaWMgc3RhcnRUcmFuc2ZlciBmdW5jdGlvbi4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvRG93bmxvYWRzL3F0L0Rvd25sb2FkUXQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpEb3dubG9hZDo6c3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9h
ZDo6c3RhcnRXaXRoSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OmRpZERlY2lk
ZURlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnN0YXJ0VHJhbnNmZXIp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvRG93bmxvYWRzL3F0L1F0RmlsZURvd25sb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpRdEZpbGVEb3dubG9hZGVyOjppbml0KTogc3RhcnQoKSB3YXMg
cmVuYW1lZCB0byBpbml0KCkuCisgICAgICAgIChXZWJLaXQ6OlF0RmlsZURvd25sb2FkZXI6OmRl
dGVybWluZUZpbGVuYW1lKToKKyAgICAgICAgQ2FsbGluZyBvblJlYWR5UmVhZCgpIGhlcmUgd2Fz
IHVubmVjZXNzYXJ5IGFuZCBpdCB3YXMgdHJpZ2dlcmluZyB0aGUgb3ZlcmFsbAorICAgICAgICBk
b3dubG9hZCBwcm9jZXNzIGV2ZW4gYmVmb3JlIERvd25sb2FkTWFuYWdlciBmaW5pc2hlZCBzdGFy
dERvd25sb2FkKCkuIFRoaXMKKyAgICAgICAgd2FzIGxlYWRpbmcgdG8gYSBEb3dubG9hZE1hbmFn
ZXIgd2l0aCBhbiBlbXB0eSBsaXN0IG9mIGRvd25sb2Fkcy4KKyAgICAgICAgKFdlYktpdDo6UXRG
aWxlRG93bmxvYWRlcjo6c3RhcnRUcmFuc2Zlcik6IGRlY2lkZWREZXN0aW5hdGlvbigpIGJlY2Ft
ZSBzdGFydFRyYW5zZmVyKCkuCisgICAgICAgIChXZWJLaXQ6OlF0RmlsZURvd25sb2FkZXI6OmFi
b3J0RG93bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKToKKyAgICAgICAgKFdlYktpdDo6UXRGaWxl
RG93bmxvYWRlcjo6b25SZWFkeVJlYWQpOgorICAgICAgICAoV2ViS2l0OjpRdEZpbGVEb3dubG9h
ZGVyOjpvbkZpbmlzaGVkKToKKyAgICAgICAgKFdlYktpdDo6UXRGaWxlRG93bmxvYWRlcjo6Y2Fu
Y2VsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3dubG9hZGVy
Lmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjpzdGFydFRyYW5zZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46
CisgICAgICAgIEFkZGluZyBRdCBzcGVjaWZpYyBtZXNzYWdlIFN0YXJ0VHJhbnNmZXIgYW5kIGhh
bmRsaW5nIGZ1bmN0aW9uLgorCiAyMDExLTEwLTE5ICBDYWlvIE1hcmNlbG8gZGUgT2xpdmVpcmEg
RmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgW1F0XSBbV0sy
XSBSZW5hbWUgZmlsZXMgYW5kIGNsYXNzZXMgdG8gZm9sbG93IGNvbnZlbnRpb25zCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3F0L2RlY2xhcmF0aXZlL3BsdWdpbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L3F0L2RlY2xhcmF0aXZlL3BsdWdpbi5jcHAKaW5kZXggY2YzYmRkNGExMmViNjk2NTcyNGRi
OWE2NWVjN2E1M2ViZTY0OWM1Ni4uYTUxZWRiYzRkOGM1MjkwZTg1OWYyYTQwNzJkZGZlNjI5M2Qx
YzRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9kZWNsYXJhdGl2ZS9wbHVnaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvZGVjbGFyYXRpdmUvcGx1Z2luLmNwcApAQCAtMjYsNiAr
MjYsNyBAQAogI2luY2x1ZGUgInFkZXNrdG9wd2Vidmlldy5oIgogI2luY2x1ZGUgInF0b3VjaHdl
YnBhZ2UuaCIKICNpbmNsdWRlICJxdG91Y2h3ZWJ2aWV3LmgiCisjaW5jbHVkZSAicXdlYmRvd25s
b2FkaXRlbS5oIgogI2luY2x1ZGUgInF3ZWJuYXZpZ2F0aW9uY29udHJvbGxlci5oIgogI2luY2x1
ZGUgInF3ZWJwcmVmZXJlbmNlcy5oIgogCkBAIC01NSw2ICs1Niw3IEBAIHB1YmxpYzoKICAgICAg
ICAgcW1sUmVnaXN0ZXJVbmNyZWF0YWJsZVR5cGU8UVdlYlByZWZlcmVuY2VzPih1cmksIDMsIDAs
ICJXZWJQcmVmZXJlbmNlcyIsIFFPYmplY3Q6OnRyKCJDYW5ub3QgY3JlYXRlIHNlcGFyYXRlIGlu
c3RhbmNlIG9mIFdlYlByZWZlcmVuY2VzIikpOwogICAgICAgICBxbWxSZWdpc3RlclVuY3JlYXRh
YmxlVHlwZTxRVG91Y2hXZWJQYWdlPih1cmksIDMsIDAsICJUb3VjaFdlYlBhZ2UiLCBRT2JqZWN0
Ojp0cigiQ2Fubm90IGNyZWF0ZSBzZXBhcmF0ZSBpbnN0YW5jZSBvZiBUb3VjaFdlYlBhZ2UsIHVz
ZSBUb3VjaFdlYlZpZXciKSk7CiAgICAgICAgIHFtbFJlZ2lzdGVyVW5jcmVhdGFibGVUeXBlPFFO
ZXR3b3JrUmVwbHk+KHVyaSwgMywgMCwgIk5ldHdvcmtSZXBseSIsIFFPYmplY3Q6OnRyKCJDYW5u
b3QgY3JlYXRlIHNlcGFyYXRlIGluc3RhbmNlIG9mIE5ldHdvcmtSZXBseSIpKTsKKyAgICAgICAg
cW1sUmVnaXN0ZXJVbmNyZWF0YWJsZVR5cGU8UVdlYkRvd25sb2FkSXRlbT4odXJpLCA1LCAwLCAi
RG93bmxvYWRJdGVtIiwgUU9iamVjdDo6dHIoIkNhbm5vdCBjcmVhdGUgc2VwYXJhdGUgaW5zdGFu
Y2Ugb2YgRG93bmxvYWRJdGVtIikpOwogI2VuZGlmCiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9XZWJDb3JlQXJndW1lbnRDb2RlcnNRdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvcXQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzUXQuY3BwCmluZGV4IDFm
YzE1YzU5NmY2ZmNmN2Q5ZjhkMzNmZGVlYjMzYzFlZWUyODZhN2IuLjk1MGQzNzJkMmRkYzdlNDZm
ODA3NzgzOTUwZTBjMjg3NmUzN2RiNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9xdC9XZWJDb3JlQXJndW1lbnRDb2RlcnNRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL3F0L1dlYkNvcmVBcmd1bWVudENvZGVyc1F0LmNwcApAQCAtNjEsNiArNjEsNyBAQCB2b2lk
IEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXNwb25zZT46OmVuY29kZShBcmd1bWVudEVuY29kZXIq
IGVuY29kZXIsIGNvbnN0IFJlcwogICAgIGVuY29kZXItPmVuY29kZShyZXNvdXJjZVJlc3BvbnNl
Lm1pbWVUeXBlKCkpOwogICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNfY2FzdDxpbnQ2NF90Pihy
ZXNvdXJjZVJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpKSk7CiAgICAgZW5jb2Rlci0+
ZW5jb2RlKHJlc291cmNlUmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpKTsKKyAgICBlbmNvZGVy
LT5lbmNvZGUocmVzb3VyY2VSZXNwb25zZS5zdWdnZXN0ZWRGaWxlbmFtZSgpKTsKIH0KIAogYm9v
bCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVy
KiBkZWNvZGVyLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlKQpAQCAtODcsNiAr
ODgsMTEgQEAgYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjpkZWNvZGUoQXJn
dW1lbnREZWNvZGVyKiBkZWNvZGVyLCBSZXNvdXJjZVIKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIHJlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUodGV4dEVuY29kaW5nTmFtZSk7CiAKKyAg
ICBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWU7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoc3Vn
Z2VzdGVkRmlsZW5hbWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmVzcG9uc2Uuc2V0
U3VnZ2VzdGVkRmlsZW5hbWUoc3VnZ2VzdGVkRmlsZW5hbWUpOworCiAgICAgcmVzb3VyY2VSZXNw
b25zZSA9IHJlc3BvbnNlOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9XS1ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvV0tWaWV3LmgKaW5kZXggZjY4OTJiZDVjOTc2YzUzNWI2NTRjYWExOTZiY2Y3
N2Q5YmQ0ZGQ1NC4uY2UzZGJmOTI4NGFmZWY4YjVkMDViYWIyNmNhMDU2YjYyZmQxM2U1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9XS1ZpZXcuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L1dLVmlldy5oCkBAIC0yNCw2ICsyNCw3IEBA
CiAjaW5jbHVkZSA8V2ViS2l0Mi9xZGVza3RvcHdlYnZpZXcuaD4KICNpbmNsdWRlIDxXZWJLaXQy
L3F0b3VjaHdlYnZpZXcuaD4KICNpbmNsdWRlIDxXZWJLaXQyL3F0b3VjaHdlYnBhZ2UuaD4KKyNp
bmNsdWRlIDxXZWJLaXQyL3F3ZWJkb3dubG9hZGl0ZW0uaD4KICNpbmNsdWRlIDxXZWJLaXQyL3F3
ZWJuYXZpZ2F0aW9uY29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYktpdDIvcXdlYnByZWZlcmVu
Y2VzLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRl
c2t0b3B3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0
b3B3ZWJ2aWV3LmNwcAppbmRleCAxODZiOWQ3YmJjMDgwOGU4MTVlN2EwZmU0NmY4M2E3MThkMDg5
NzgxLi4zNjU5Zjk5NzY2ZTMwYTU5ZjhiZGVkYmNjYWY2NDY4YjU2YWU4NTM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwCkBA
IC0yMyw2ICsyMyw3IEBACiAKICNpbmNsdWRlICJVdGlsc1F0LmgiCiAjaW5jbHVkZSAicWRlc2t0
b3B3ZWJ2aWV3X3AuaCIKKyNpbmNsdWRlICJxd2ViZG93bmxvYWRpdGVtLmgiCiAjaW5jbHVkZSAi
cXdlYmVycm9yLmgiCiAjaW5jbHVkZSA8UUZpbGVEaWFsb2c+CiAjaW5jbHVkZSA8UUdyYXBoaWNz
U2NlbmVFdmVudD4KQEAgLTMzLDYgKzM0LDcgQEAKICNpbmNsdWRlIDxRdERlY2xhcmF0aXZlL3Fz
Z2l0ZW0uaD4KICNpbmNsdWRlIDxRdERlY2xhcmF0aXZlL3FzZ3ZpZXcuaD4KICNpbmNsdWRlIDxR
dEd1aS9RQ3Vyc29yPgorI2luY2x1ZGUgPFF0R3VpL1FEZXNrdG9wU2VydmljZXM+CiAjaW5jbHVk
ZSA8UXRHdWkvUURyYWc+CiAjaW5jbHVkZSA8UXRHdWkvUUZvY3VzRXZlbnQ+CiAjaW5jbHVkZSA8
UXRHdWkvUUd1aUFwcGxpY2F0aW9uPgpAQCAtNTAyLDYgKzUwNCwxNSBAQCB2b2lkIFFEZXNrdG9w
V2ViVmlld1ByaXZhdGU6OmRpZE1vdXNlTW92ZU92ZXJFbGVtZW50KGNvbnN0IFFVcmwmIGxpbmtV
UkwsIGNvbnN0CiAgICAgZW1pdCBxLT5saW5rSG92ZXJlZChsYXN0SG92ZXJlZFVSTCwgbGFzdEhv
dmVyZWRUaXRsZSk7CiB9CiAKK3ZvaWQgUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6ZG93bmxvYWRS
ZXF1ZXN0ZWQoUVdlYkRvd25sb2FkSXRlbSogZG93bmxvYWRJdGVtKQoreworICAgIGlmICghZG93
bmxvYWRJdGVtKQorICAgICAgICByZXR1cm47CisKKyAgICBRRGVjbGFyYXRpdmVFbmdpbmU6OnNl
dE9iamVjdE93bmVyc2hpcChkb3dubG9hZEl0ZW0sIFFEZWNsYXJhdGl2ZUVuZ2luZTo6SmF2YVNj
cmlwdE93bmVyc2hpcCk7CisgICAgZW1pdCBxLT5kb3dubG9hZFJlcXVlc3RlZChkb3dubG9hZEl0
ZW0pOworfQorCiBzdGF0aWMgUXRQb2xpY3lJbnRlcmZhY2U6OlBvbGljeUFjdGlvbiB0b1BvbGlj
eUFjdGlvbihRRGVza3RvcFdlYlZpZXc6Ok5hdmlnYXRpb25Qb2xpY3kgcG9saWN5KQogewogICAg
IHN3aXRjaCAocG9saWN5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3FkZXNrdG9wd2Vidmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xZGVza3RvcHdlYnZpZXcuaAppbmRleCBkOTNkNWQ4NDRlNGQyMTk1ZjVjZTdiODNiMDMyMTBl
NGY1NmMwODA0Li5hYzkxNjM1MDI1NDI2NWEwMDk4NWI3MWNjYzRhN2I5NDgyYWQ1NzIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmgK
QEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgogCiBjbGFzcyBR
RGVza3RvcFdlYlZpZXdQcml2YXRlOworY2xhc3MgUVdlYkRvd25sb2FkSXRlbTsKIGNsYXNzIFFX
ZWJOYXZpZ2F0aW9uQ29udHJvbGxlcjsKIGNsYXNzIFFXZWJQcmVmZXJlbmNlczsKIApAQCAtNzAs
NyArNzEsOCBAQCBwdWJsaWM6CiAgICAgZW51bSBFcnJvclR5cGUgewogICAgICAgICBFbmdpbmVF
cnJvciwKICAgICAgICAgTmV0d29ya0Vycm9yLAotICAgICAgICBIdHRwRXJyb3IKKyAgICAgICAg
SHR0cEVycm9yLAorICAgICAgICBEb3dubG9hZEVycm9yCiAgICAgfTsKIAogICAgIFFEZXNrdG9w
V2ViVmlldyhRU0dJdGVtKiBwYXJlbnQgPSAwKTsKQEAgLTk1LDYgKzk3LDcgQEAgUV9TSUdOQUxT
OgogICAgIHZvaWQgbG9hZFByb2dyZXNzQ2hhbmdlZChpbnQgcHJvZ3Jlc3MpOwogICAgIHZvaWQg
dXJsQ2hhbmdlZChjb25zdCBRVXJsJiB1cmwpOwogICAgIHZvaWQgbGlua0hvdmVyZWQoY29uc3Qg
UVVybCYgdXJsLCBjb25zdCBRU3RyaW5nJiB0aXRsZSk7CisgICAgdm9pZCBkb3dubG9hZFJlcXVl
c3RlZChRV2ViRG93bmxvYWRJdGVtKiBkb3dubG9hZEl0ZW0pOwogCiBwcm90ZWN0ZWQ6CiAgICAg
dmlydHVhbCB2b2lkIGtleVByZXNzRXZlbnQoUUtleUV2ZW50Kik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlld19wLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlld19wLmgKaW5kZXggYzBjNzJm
ZWQ4MTBmMDQyY2NjMWYxNDZmNjJkNTU3YWU1ODRjYjdlZi4uYTgyYWRlYzMwMTdjMTkwMzMwMmRj
YmYwNWU1Y2NlOWI3NzU0MDhjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9xZGVza3RvcHdlYnZpZXdfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3X3AuaApAQCAtOTAsNiArOTAsNyBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgUUpTRW5naW5lKiBlbmdpbmUoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBjaG9v
c2VGaWxlcyhXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmLCBjb25zdCBRU3RyaW5nTGlzdCYg
c2VsZWN0ZWRGaWxlTmFtZXMsIFF0Vmlld0ludGVyZmFjZTo6RmlsZUNob29zZXJUeXBlKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZG93bmxvYWRSZXF1ZXN0ZWQoUVdlYkRvd25sb2FkSXRlbSogZG93bmxv
YWRJdGVtKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRNb3VzZU1vdmVPdmVyRWxlbWVudChjb25z
dCBRVXJsJiwgY29uc3QgUVN0cmluZyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3F3ZWJkb3dubG9hZGl0ZW0uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9xd2ViZG93bmxvYWRpdGVtLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NTkwYjc0OGNk
MDg5MzUzMjVkZDUwNDg1ZmJlNzhkNTg5MzkxOTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxvYWRpdGVtLmNwcApAQCAtMCwwICsx
LDk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9v
ciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
InF3ZWJkb3dubG9hZGl0ZW0uaCIKKworI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKKyNpbmNs
dWRlICJxd2ViZG93bmxvYWRpdGVtX3AuaCIKKworUVdlYkRvd25sb2FkSXRlbVByaXZhdGU6OlFX
ZWJEb3dubG9hZEl0ZW1Qcml2YXRlKFFXZWJEb3dubG9hZEl0ZW0qIHFxKQorICAgIDogcShxcSkK
KyAgICAsIGRvd25sb2FkUHJveHkoMCkKKyAgICAsIGV4cGVjdGVkQ29udGVudExlbmd0aCgwKQor
ICAgICwgdG90YWxCeXRlc1JlY2VpdmVkKDApCit7Cit9CisKK1FXZWJEb3dubG9hZEl0ZW06OlFX
ZWJEb3dubG9hZEl0ZW0oUU9iamVjdCogcGFyZW50KQorICAgIDogUU9iamVjdChwYXJlbnQpCisg
ICAgLCBkKG5ldyBRV2ViRG93bmxvYWRJdGVtUHJpdmF0ZSh0aGlzKSkKK3sKK30KKworUVdlYkRv
d25sb2FkSXRlbTo6flFXZWJEb3dubG9hZEl0ZW0oKQoreworICAgIGRlbGV0ZSBkOworfQorCitR
VXJsIFFXZWJEb3dubG9hZEl0ZW06OnVybCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPnNvdXJj
ZVVybDsKK30KKworUVN0cmluZyBRV2ViRG93bmxvYWRJdGVtOjpkZXN0aW5hdGlvblBhdGgoKSBj
b25zdAoreworICAgIHJldHVybiBkLT5kZXN0aW5hdGlvblBhdGg7Cit9CisKK3ZvaWQgUVdlYkRv
d25sb2FkSXRlbTo6c2V0RGVzdGluYXRpb25QYXRoKGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9u
KQoreworICAgIGQtPmRlc3RpbmF0aW9uUGF0aCA9IGRlc3RpbmF0aW9uOworfQorCitRU3RyaW5n
IFFXZWJEb3dubG9hZEl0ZW06OnN1Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gZC0+c3VnZ2VzdGVkRmlsZW5hbWU7Cit9CisKK1FTdHJpbmcgUVdlYkRvd25sb2FkSXRlbTo6
bWltZVR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBkLT5taW1lVHlwZTsKK30KKworcXVpbnQ2
NCBRV2ViRG93bmxvYWRJdGVtOjpleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBjb25zdAoreworICAg
IHJldHVybiBkLT5leHBlY3RlZENvbnRlbnRMZW5ndGg7Cit9CisKK3F1aW50NjQgUVdlYkRvd25s
b2FkSXRlbTo6dG90YWxCeXRlc1JlY2VpdmVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZC0+dG90
YWxCeXRlc1JlY2VpdmVkOworfQorCit2b2lkIFFXZWJEb3dubG9hZEl0ZW06OmNhbmNlbCgpCit7
CisgICAgQVNTRVJUKGQtPmRvd25sb2FkUHJveHkpOworICAgIGQtPmRvd25sb2FkUHJveHktPmNh
bmNlbCgpOworfQorCit2b2lkIFFXZWJEb3dubG9hZEl0ZW06OnN0YXJ0KCkKK3sKKyAgICBBU1NF
UlQoIWQtPnN1Z2dlc3RlZEZpbGVuYW1lLmlzRW1wdHkoKSk7CisKKyAgICBpZiAoZC0+ZGVzdGlu
YXRpb25QYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgZC0+ZGVzdGluYXRpb25QYXRoID0gZC0+c3Vn
Z2VzdGVkRmlsZW5hbWU7CisKKyAgICBkLT5kb3dubG9hZFByb3h5LT5zdGFydFRyYW5zZmVyKGQt
PmRlc3RpbmF0aW9uUGF0aCk7Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcXdlYmRvd25sb2FkaXRlbS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9xd2ViZG93bmxvYWRpdGVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzAzM2IwZDYzYTc5MzIxY2Ji
YTgzNjZmYmVlNTIxZjgyZDkwNzljNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcXdlYmRvd25sb2FkaXRlbS5oCkBAIC0wLDAgKzEsODUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJz
aWRpYXJ5KC1pZXMpCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICoKKyAqLworCisjaWZuZGVmIHF3ZWJkb3dubG9hZGl0ZW1faAorI2RlZmluZSBxd2Vi
ZG93bmxvYWRpdGVtX2gKKworI2luY2x1ZGUgInF3ZWJraXRnbG9iYWwuaCIKKyNpbmNsdWRlIDxR
T2JqZWN0PgorI2luY2x1ZGUgPFFVcmw+CisKK2NsYXNzIFFXZWJEb3dubG9hZEl0ZW1Qcml2YXRl
OworY2xhc3MgUVdlYkVycm9yOworCitRVF9CRUdJTl9OQU1FU1BBQ0UKK2NsYXNzIFFTdHJpbmc7
CitRVF9FTkRfTkFNRVNQQUNFCisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgUXREb3dubG9h
ZE1hbmFnZXI7Cit9CisKK2NsYXNzIFFXRUJLSVRfRVhQT1JUIFFXZWJEb3dubG9hZEl0ZW0gOiBw
dWJsaWMgUU9iamVjdCB7CisgICAgUV9PQkpFQ1QKKyAgICBRX1BST1BFUlRZKHF1aW50NjQgZXhw
ZWN0ZWRDb250ZW50TGVuZ3RoIFJFQUQgZXhwZWN0ZWRDb250ZW50TGVuZ3RoIENPTlNUQU5UIEZJ
TkFMKQorICAgIFFfUFJPUEVSVFkoUVN0cmluZyBkZXN0aW5hdGlvblBhdGggUkVBRCBkZXN0aW5h
dGlvblBhdGggV1JJVEUgc2V0RGVzdGluYXRpb25QYXRoKQorICAgIFFfUFJPUEVSVFkoUVN0cmlu
ZyBzdWdnZXN0ZWRGaWxlbmFtZSBSRUFEIHN1Z2dlc3RlZEZpbGVuYW1lIENPTlNUQU5UIEZJTkFM
KQorICAgIFFfUFJPUEVSVFkocXVpbnQ2NCB0b3RhbEJ5dGVzUmVjZWl2ZWQgUkVBRCB0b3RhbEJ5
dGVzUmVjZWl2ZWQgTk9USUZZIHRvdGFsQnl0ZXNSZWNlaXZlZENoYW5nZWQgRklOQUwpCisgICAg
UV9QUk9QRVJUWShRVXJsIHVybCBSRUFEIHVybCBDT05TVEFOVCBGSU5BTCkKKyAgICBRX0VOVU1T
KERvd25sb2FkRXJyb3IpCitwdWJsaWM6CisgICAgdmlydHVhbCB+UVdlYkRvd25sb2FkSXRlbSgp
OworCisgICAgZW51bSBEb3dubG9hZEVycm9yIHsKKyAgICAgICAgQWJvcnRlZCA9IDAsCisgICAg
ICAgIENhbm5vdFdyaXRlVG9GaWxlLAorICAgICAgICBDYW5ub3RPcGVuRmlsZSwKKyAgICAgICAg
RGVzdGluYXRpb25BbHJlYWR5RXhpc3RzLAorICAgICAgICBDYW5jZWxsZWQsCisgICAgICAgIENh
bm5vdERldGVybWluZUZpbGVuYW1lLAorICAgICAgICBOZXR3b3JrRmFpbHVyZQorICAgIH07CisK
KyAgICBRVXJsIHVybCgpIGNvbnN0OworICAgIFFTdHJpbmcgZGVzdGluYXRpb25QYXRoKCkgY29u
c3Q7CisgICAgUVN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSgpIGNvbnN0OworICAgIFFTdHJpbmcg
bWltZVR5cGUoKSBjb25zdDsKKyAgICBxdWludDY0IGV4cGVjdGVkQ29udGVudExlbmd0aCgpIGNv
bnN0OworICAgIHF1aW50NjQgdG90YWxCeXRlc1JlY2VpdmVkKCkgY29uc3Q7CisgICAgdm9pZCBz
ZXREZXN0aW5hdGlvblBhdGgoY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb24pOworCitwdWJsaWMg
UV9TTE9UUzoKKyAgICB2b2lkIHN0YXJ0KCk7CisgICAgdm9pZCBjYW5jZWwoKTsKKworUV9TSUdO
QUxTOgorICAgIHZvaWQgZGVzdGluYXRpb25GaWxlQ3JlYXRlZChjb25zdCBRU3RyaW5nJiBkZXN0
aW5hdGlvblBhdGgpOworICAgIHZvaWQgdG90YWxCeXRlc1JlY2VpdmVkQ2hhbmdlZChxdWludDY0
IGJ5dGVzUmVjZWl2ZWQpOworICAgIHZvaWQgc3VjY2VlZGVkKCk7CisgICAgdm9pZCBmYWlsZWQo
UVdlYkRvd25sb2FkSXRlbTo6RG93bmxvYWRFcnJvciBlcnJvciwgY29uc3QgUVVybCYgdXJsLCBj
b25zdCBRU3RyaW5nJiBkZXNjcmlwdGlvbik7CisKK3ByaXZhdGU6CisgICAgUVdlYkRvd25sb2Fk
SXRlbShRT2JqZWN0KiBwYXJlbnQgPSAwKTsKKyAgICBRV2ViRG93bmxvYWRJdGVtUHJpdmF0ZSog
ZDsKKworICAgIGZyaWVuZCBjbGFzcyBXZWJLaXQ6OlF0RG93bmxvYWRNYW5hZ2VyOworfTsKKwor
I2VuZGlmIC8qIHF3ZWJkb3dubG9hZGl0ZW1faCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxvYWRpdGVtX3AuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcXdlYmRvd25sb2FkaXRlbV9wLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmZkZmQw
NWU1OGQ1Y2IxNTY4MDNmNmY3YWZlZGRmOTNmNTQ0ZDFiYQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYmRvd25sb2FkaXRlbV9wLmgKQEAgLTAs
MCArMSw0NyBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24g
YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworCisjaWZuZGVmIHF3ZWJkb3dubG9hZGl0
ZW1fcF9oCisjZGVmaW5lIHF3ZWJkb3dubG9hZGl0ZW1fcF9oCisKKyNpbmNsdWRlICJxd2ViZG93
bmxvYWRpdGVtLmgiCisjaW5jbHVkZSA8UVVybD4KKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFz
cyBEb3dubG9hZFByb3h5OworfQorCitjbGFzcyBRV2ViRG93bmxvYWRJdGVtUHJpdmF0ZSB7Citw
dWJsaWM6CisgICAgUVdlYkRvd25sb2FkSXRlbVByaXZhdGUoUVdlYkRvd25sb2FkSXRlbSopOwor
CisgICAgUVdlYkRvd25sb2FkSXRlbSogcTsKKworICAgIFdlYktpdDo6RG93bmxvYWRQcm94eSog
ZG93bmxvYWRQcm94eTsKKworICAgIFFVcmwgc291cmNlVXJsOworICAgIFFTdHJpbmcgc3VnZ2Vz
dGVkRmlsZW5hbWU7CisgICAgUVN0cmluZyBkZXN0aW5hdGlvblBhdGg7CisgICAgUVN0cmluZyBt
aW1lVHlwZTsKKyAgICBxdWludDY0IGV4cGVjdGVkQ29udGVudExlbmd0aDsKKyAgICBxdWludDY0
IHRvdGFsQnl0ZXNSZWNlaXZlZDsKK307CisKKyNlbmRpZiAvKiBxd2ViZG93bmxvYWRpdGVtX3Bf
aCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRQcm94eS5jcHAKaW5kZXggYzkzYTZkZmJlNjliYmUzNmU2YjkyNDQ4ZjA0N2JiYmJlN2Q5MmQ0
Mi4uMjZhNTIxZjM5YmM3MWUyMTQ1ODc3MzIxOTY0ZGRjNjcyNzQxYjE3MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCkBA
IC0xODcsNSArMTg3LDE2IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkQ2FuY2VsKGNvbnN0IENv
cmVJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEpCiAgICAgbV93ZWJDb250ZXh0LT5kb3du
bG9hZEZpbmlzaGVkKHRoaXMpOwogfQogCisjaWYgUExBVEZPUk0oUVQpCit2b2lkIERvd25sb2Fk
UHJveHk6OnN0YXJ0VHJhbnNmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKK3sKKyAgICBpZiAo
IW1fd2ViQ29udGV4dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUUgKE11bHRpLVdl
YlByb2Nlc3MpOiBEb3dubG9hZHMgc2hvdWxkbid0IGJlIGhhbmRsZWQgaW4gdGhlIHdlYiBwcm9j
ZXNzLgorICAgIG1fd2ViQ29udGV4dC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzOjpTdGFydFRyYW5zZmVyKG1fZG93bmxvYWRJRCwgZmlsZW5hbWUpKTsKK30KKyNlbmRp
ZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAppbmRleCA5OWRkYmVjMGNiYzRiYThmNmQ5
ZjQyMWY5ZGI2ODU1NTgyOGI5OWQ1Li4xMzg1ZGVlZWRmY2RjZGUwOWQ0NDRiM2MyZjhiMjNiN2I5
NzJiOTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkUHJveHkuaApAQCAtNDMsNiArNDMsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgV2ViQ29udGV4dDsKIGNsYXNzIFdlYkRhdGE7CitjbGFzcyBXZWJQYWdlUHJveHk7CiAKIGNs
YXNzIERvd25sb2FkUHJveHkgOiBwdWJsaWMgQVBJT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTYzLDYg
KzY0LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVEb3dubG9hZFByb3h5TWVzc2Fn
ZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1
bWVudERlY29kZXIqKTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jRG93bmxvYWRQcm94eU1lc3Nh
Z2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJn
dW1lbnREZWNvZGVyKiwgT3duUHRyPENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4mKTsKIAorI2lm
IFBMQVRGT1JNKFFUKQorICAgIHZvaWQgc3RhcnRUcmFuc2Zlcihjb25zdCBTdHJpbmcmIGZpbGVu
YW1lKTsKKyAgICB2b2lkIHNldEluaXRpYXRpbmdQYWdlKFdlYlBhZ2VQcm94eSogcGFnZSkgeyBt
X2luaXRpYXRpbmdQYWdlID0gcGFnZTsgfQorICAgIFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1Bh
Z2UoKSBjb25zdCB7IHJldHVybiBtX2luaXRpYXRpbmdQYWdlOyB9CisjZW5kaWYKKwogcHJpdmF0
ZToKICAgICBleHBsaWNpdCBEb3dubG9hZFByb3h5KFdlYkNvbnRleHQqKTsKIApAQCAtODUsNiAr
OTIsMTAgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxXZWJEYXRhPiBtX3Jlc3VtZURhdGE7CiAg
ICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKKworI2lmIFBMQVRGT1JNKFFU
KQorICAgIFdlYlBhZ2VQcm94eSogbV9pbml0aWF0aW5nUGFnZTsKKyNlbmRpZgogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRl
eCBkMWUwYzU3NzlmOTBkNWJjY2NhMTBhMmRmNWIyMTYyNTA1OGJkZTBjLi4wZjU5OWYwOWVkMDE2
OTQ0M2U3MTczOGQyNDRiMTc4ZWMyOTFjNjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmgKQEAgLTQ0LDYgKzQ0LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBzdHJ1
Y3QgVmlld3BvcnRBcmd1bWVudHM7CiB9CiAKKyNpZiBQTEFURk9STShRVCkKK2NsYXNzIFF0V2Vi
UGFnZVByb3h5OworI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBEcmF3aW5n
QXJlYVByb3h5OwpAQCAtMTc1LDYgKzE3OSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBXS1Zp
ZXcqIHdrVmlldygpIGNvbnN0ID0gMDsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oUVQpCisgICAg
dmlydHVhbCBRdFdlYlBhZ2VQcm94eSogcXRXZWJQYWdlUHJveHkoKSA9IDA7CisjZW5kaWYKKwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTY3JvbGxiYXJzRm9yTWFpbkZyYW1lKCkgY29uc3Qg
PSAwOwogCiAgICAgLy8gQ3VzdG9tIHJlcHJlc2VudGF0aW9ucy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb250ZXh0LmNwcAppbmRleCBiZTA3YzNjZGY5OTA1OGZmYTAyYmU2OGE0MjhiOGZm
OTk2ZThlNGE4Li40OTRlYWIxOGRlMmEyNWExMjQ3OWVhMzRlZDQ5MmE0ZDM1YTdkNGJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCkBAIC0zODksNiArMzg5LDEwIEBA
IERvd25sb2FkUHJveHkqIFdlYkNvbnRleHQ6OmRvd25sb2FkKFdlYlBhZ2VQcm94eSogaW5pdGlh
dGluZ1BhZ2UsIGNvbnN0IFJlc291cmNlCiAgICAgRG93bmxvYWRQcm94eSogZG93bmxvYWQgPSBj
cmVhdGVEb3dubG9hZFByb3h5KCk7CiAgICAgdWludDY0X3QgaW5pdGlhdGluZ1BhZ2VJRCA9IGlu
aXRpYXRpbmdQYWdlID8gaW5pdGlhdGluZ1BhZ2UtPnBhZ2VJRCgpIDogMDsKIAorI2lmIFBMQVRG
T1JNKFFUKQorICAgIGRvd25sb2FkLT5zZXRJbml0aWF0aW5nUGFnZShpbml0aWF0aW5nUGFnZSk7
CisjZW5kaWYKKwogICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6RG93
bmxvYWRSZXF1ZXN0KGRvd25sb2FkLT5kb3dubG9hZElEKCksIGluaXRpYXRpbmdQYWdlSUQsIHJl
cXVlc3QpLCAwKTsKICAgICByZXR1cm4gZG93bmxvYWQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGNlNjRjNWMzZjI0NWQ3N2Y0NjMyOTlkYmFmYTM3
ZDVlNTNjY2QzOGEuLjBlYWYyYmY3ZDZjYmNmNWU2MDg0NjAwOWNkZWJhNDYyODQwNGZkOTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC05NjEsMTAgKzk2
MSwxNSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lB
Y3Rpb24gYWN0aW9uLCBXZWJGcmFtZVByb3h5KiBmcgogICAgIGlmIChhY3Rpb24gPT0gUG9saWN5
SWdub3JlKQogICAgICAgICBjbGVhclBlbmRpbmdBUElSZXF1ZXN0VVJMKCk7CiAKKyAgICBEb3du
bG9hZFByb3h5KiBkb3dubG9hZDsKICAgICB1aW50NjRfdCBkb3dubG9hZElEID0gMDsKICAgICBp
ZiAoYWN0aW9uID09IFBvbGljeURvd25sb2FkKSB7CiAgICAgICAgIC8vIENyZWF0ZSBhIGRvd25s
b2FkIHByb3h5LgotICAgICAgICBkb3dubG9hZElEID0gbV9wcm9jZXNzLT5jb250ZXh0KCktPmNy
ZWF0ZURvd25sb2FkUHJveHkoKS0+ZG93bmxvYWRJRCgpOworICAgICAgICBkb3dubG9hZCA9IG1f
cHJvY2Vzcy0+Y29udGV4dCgpLT5jcmVhdGVEb3dubG9hZFByb3h5KCk7CisgICAgICAgIGRvd25s
b2FkSUQgPSBkb3dubG9hZC0+ZG93bmxvYWRJRCgpOworI2lmIFBMQVRGT1JNKFFUKQorICAgICAg
ICBkb3dubG9hZC0+c2V0SW5pdGlhdGluZ1BhZ2UodGhpcyk7CisjZW5kaWYKICAgICB9CiAKICAg
ICAvLyBJZiB3ZSByZWNlaXZlZCBhIHBvbGljeSBkZWNpc2lvbiB3aGlsZSBpbiBkZWNpZGVQb2xp
Y3lGb3JNSU1FVHlwZSB0aGUgZGVjaXNpb24gd2lsbCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAppbmRleCBlZWExMjE5OTU4NjIwYWFmZDZiMjE4MzVlODdkMzg5NWVhOGVi
OTA3Li40NWI5ZWNkOTFlZDAyMzYzOWZkYmI1MTI2ZjhhN2VhYzFmNzlhN2JmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC01NjgsNiArNTY4LDggQEAgcHVibGlj
OgogCiAgICAgdm9pZCBzZXRTaG91bGRTZW5kRXZlbnRzU3luY2hyb25vdXNseShib29sIHN5bmMp
IHsgbV9zaG91bGRTZW5kRXZlbnRzU3luY2hyb25vdXNseSA9IHN5bmM7IH07CiAKKyAgICBQYWdl
Q2xpZW50KiBwYWdlQ2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9wYWdlQ2xpZW50OyB9CisKIHBy
aXZhdGU6CiAgICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQqLCBQYXNzUmVmUHRyPFdlYlByb2Nl
c3NQcm94eT4sIFdlYlBhZ2VHcm91cCosIHVpbnQ2NF90IHBhZ2VJRCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmNwcAppbmRleCA5Y2Y5NzhiOWE1MmFmZmE0MGEy
ODRlNmU5YWQxODExNTQ5NDU5ZGNlLi43NTZkOGYwNzhlZjY5ODRjMmYwYmJhMmZlYTE1NjJhOTdj
ZTczZTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0NsaWVudEltcGwuY3BwCkBA
IC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ2xpZW50SW1w
bC5oIgogCisjaW5jbHVkZSAiUXREb3dubG9hZE1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJGcmFt
ZVByb3h5LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tTdHJpbmdRdC5o
IgpAQCAtNTksNiArNjAsMTIgQEAgc3RhdGljIGlubGluZSBRdFBvbGljeUludGVyZmFjZSogdG9R
dFBvbGljeUludGVyZmFjZShjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PFF0UG9saWN5SW50ZXJmYWNlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50
SW5mbykpOwogfQogCitzdGF0aWMgaW5saW5lIFF0RG93bmxvYWRNYW5hZ2VyKiB0b1F0RG93bmxv
YWRNYW5hZ2VyKGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgQVNTRVJUKGNsaWVudElu
Zm8pOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFF0RG93bmxvYWRNYW5hZ2VyKj4oY29u
c3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOworfQorCiBzdGF0aWMgdm9pZCBkaXNwYXRjaExv
YWRTdWNjZWVkZWQoV0tGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsK
ICAgICBpZiAoIVdLRnJhbWVJc01haW5GcmFtZShmcmFtZSkpCkBAIC0yNzksMyArMjg2LDMwIEBA
IHZvaWQgcXRfd2tfZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV0tQYWdlUmVmIHBhZ2UsIFdLRnJh
bWVSZWYgZnJhbWUsIFdLVVJMUmVzcG9uCiAKICAgICBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2Uo
bGlzdGVuZXIpOwogfQorCit2b2lkIHF0X3drX2RpZFJlY2VpdmVSZXNwb25zZShXS0NvbnRleHRS
ZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tVUkxSZXNwb25zZVJlZiByZXNw
b25zZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKK3sKKyAgICB0b1F0RG93bmxvYWRNYW5hZ2Vy
KGNsaWVudEluZm8pLT5kb3dubG9hZFJlY2VpdmVkUmVzcG9uc2UodG9JbXBsKGRvd25sb2FkKSwg
dG9JbXBsKHJlc3BvbnNlKS0+cmVzb3VyY2VSZXNwb25zZSgpKTsKK30KKwordm9pZCBxdF93a19k
aWRDcmVhdGVEZXN0aW5hdGlvbihXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBk
b3dubG9hZCwgV0tTdHJpbmdSZWYgcGF0aCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKK3sKKyAg
ICB0b1F0RG93bmxvYWRNYW5hZ2VyKGNsaWVudEluZm8pLT5kb3dubG9hZENyZWF0ZWREZXN0aW5h
dGlvbih0b0ltcGwoZG93bmxvYWQpLCBXS1N0cmluZ0NvcHlRU3RyaW5nKHBhdGgpKTsKK30KKwor
dm9pZCBxdF93a19kaWRGaW5pc2hEb3dubG9hZChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3du
bG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKK3sKKyAgICB0b1F0RG93
bmxvYWRNYW5hZ2VyKGNsaWVudEluZm8pLT5kb3dubG9hZEZpbmlzaGVkKHRvSW1wbChkb3dubG9h
ZCkpOworfQorCit2b2lkIHF0X3drX2RpZEZhaWxEb3dubG9hZChXS0NvbnRleHRSZWYgY29udGV4
dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tFcnJvclJlZiBlcnJvciwgY29uc3Qgdm9pZCAq
Y2xpZW50SW5mbykKK3sKKyAgICBRVXJsIGZhaWxpbmdVcmwgPSBXS1VSTENvcHlRVXJsKFdLRXJy
b3JDb3B5RmFpbGluZ1VSTChlcnJvcikpOworCisgICAgdG9RdERvd25sb2FkTWFuYWdlcihjbGll
bnRJbmZvKS0+ZG93bmxvYWRGYWlsZWQodG9JbXBsKGRvd25sb2FkKSwgUVdlYkVycm9yUHJpdmF0
ZTo6Y3JlYXRlUVdlYkVycm9yKGVycm9yKSk7Cit9CisKK3ZvaWQgcXRfd2tfZGlkUmVjZWl2ZURh
dGFGb3JEb3dubG9hZChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9h
ZCwgdWludDY0X3QgbGVuZ3RoLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQoreworICAgIHRvUXRE
b3dubG9hZE1hbmFnZXIoY2xpZW50SW5mbyktPmRvd25sb2FkRGF0YVJlY2VpdmVkKHRvSW1wbChk
b3dubG9hZCksIGxlbmd0aCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0NsaWVudElt
cGwuaAppbmRleCBiYjMyMDlmZmFkMTYxNTE0NjA0MWIwZDlhNDliMjBmNzY0Njc2Nzk4Li5hNTJm
YzA3NWQyYjMzMDFlMmY2ZDE0MGEyMjE3NWVkODAzNGU3ZWJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9DbGllbnRJbXBsLmgKQEAgLTUwLDYgKzUwLDEzIEBAIHZvaWQgcXRfd2tfbW91
c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV0tQYWdlUmVmLCBXS0hpdFRlc3RSZXN1bHRSZWYsIFdLRXZl
bnRNb2RpZmllCiB2b2lkIHF0X3drX2RlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV0tQ
YWdlUmVmLCBXS0ZyYW1lUmVmLCBXS0ZyYW1lTmF2aWdhdGlvblR5cGUsIFdLRXZlbnRNb2RpZmll
cnMsIFdLRXZlbnRNb3VzZUJ1dHRvbiwgV0tVUkxSZXF1ZXN0UmVmLCBXS0ZyYW1lUG9saWN5TGlz
dGVuZXJSZWYsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiB2
b2lkIHF0X3drX2RlY2lkZVBvbGljeUZvclJlc3BvbnNlKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwg
V0tVUkxSZXNwb25zZVJlZiwgV0tVUkxSZXF1ZXN0UmVmLCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJS
ZWYsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAKKy8vIERv
d25sb2FkIGNsaWVudC4KK3ZvaWQgcXRfd2tfZGlkUmVjZWl2ZVJlc3BvbnNlKFdLQ29udGV4dFJl
ZiwgV0tEb3dubG9hZFJlZiwgV0tVUkxSZXNwb25zZVJlZiwgY29uc3Qgdm9pZCAqY2xpZW50SW5m
byk7Cit2b2lkIHF0X3drX2RpZENyZWF0ZURlc3RpbmF0aW9uKFdLQ29udGV4dFJlZiwgV0tEb3du
bG9hZFJlZiwgV0tTdHJpbmdSZWYgcGF0aCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit2b2lk
IHF0X3drX2RpZEZpbmlzaERvd25sb2FkKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgY29u
c3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit2b2lkIHF0X3drX2RpZEZhaWxEb3dubG9hZChXS0NvbnRl
eHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLRXJyb3JSZWYsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8p
Owordm9pZCBxdF93a19kaWRSZWNlaXZlRGF0YUZvckRvd25sb2FkKFdLQ29udGV4dFJlZiwgV0tE
b3dubG9hZFJlZiwgdWludDY0X3QgbGVuZ3RoLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKKwog
I2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9RdERvd25sb2FkTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvUXREb3dubG9hZE1hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk1NmYyMzc0NGU4NmFj
Yjk2NGVjMGM2NTc1NGUxMTY3MzZjYWFmMmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvUXREb3dubG9hZE1hbmFnZXIuY3BwCkBAIC0wLDAgKzEsMTExIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9v
ciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlF0RG93bmxvYWRNYW5hZ2VyLmgiCisKKyNpbmNsdWRlICJDbGllbnRJbXBsLmgiCisjaW5jbHVk
ZSAiRG93bmxvYWRQcm94eS5oIgorI2luY2x1ZGUgIlF0V2ViUGFnZVByb3h5LmgiCisjaW5jbHVk
ZSAiV0tTdHJpbmdRdC5oIgorI2luY2x1ZGUgIldLVVJMUXQuaCIKKyNpbmNsdWRlICJXZWJDb250
ZXh0LmgiCisjaW5jbHVkZSAicXdlYmRvd25sb2FkaXRlbS5oIgorI2luY2x1ZGUgInF3ZWJkb3du
bG9hZGl0ZW1fcC5oIgorI2luY2x1ZGUgInF3ZWJlcnJvci5oIgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworUXREb3dubG9hZE1hbmFnZXI6OlF0RG93bmxvYWRNYW5hZ2VyKCkKK3sKK30KKworUXRE
b3dubG9hZE1hbmFnZXI6On5RdERvd25sb2FkTWFuYWdlcigpCit7Cit9CisKK1Bhc3NSZWZQdHI8
UXREb3dubG9hZE1hbmFnZXI+IFF0RG93bmxvYWRNYW5hZ2VyOjpjcmVhdGUoV2ViQ29udGV4dCog
Y29udGV4dCkKK3sKKyAgICBRdERvd25sb2FkTWFuYWdlciogbWFuYWdlciA9IG5ldyBRdERvd25s
b2FkTWFuYWdlcigpOworCisgICAgV0tDb250ZXh0RG93bmxvYWRDbGllbnQgZG93bmxvYWRDbGll
bnQ7CisgICAgbWVtc2V0KCZkb3dubG9hZENsaWVudCwgMCwgc2l6ZW9mKFdLQ29udGV4dERvd25s
b2FkQ2xpZW50KSk7CisgICAgZG93bmxvYWRDbGllbnQudmVyc2lvbiA9IGtXS0NvbnRleHREb3du
bG9hZENsaWVudEN1cnJlbnRWZXJzaW9uOworICAgIGRvd25sb2FkQ2xpZW50LmNsaWVudEluZm8g
PSBtYW5hZ2VyOworICAgIGRvd25sb2FkQ2xpZW50LmRpZFJlY2VpdmVSZXNwb25zZSA9IHF0X3dr
X2RpZFJlY2VpdmVSZXNwb25zZTsKKyAgICBkb3dubG9hZENsaWVudC5kaWRSZWNlaXZlRGF0YSA9
IHF0X3drX2RpZFJlY2VpdmVEYXRhRm9yRG93bmxvYWQ7CisgICAgZG93bmxvYWRDbGllbnQuZGlk
Q3JlYXRlRGVzdGluYXRpb24gPSBxdF93a19kaWRDcmVhdGVEZXN0aW5hdGlvbjsKKyAgICBkb3du
bG9hZENsaWVudC5kaWRGaW5pc2ggPSBxdF93a19kaWRGaW5pc2hEb3dubG9hZDsKKyAgICBkb3du
bG9hZENsaWVudC5kaWRGYWlsID0gcXRfd2tfZGlkRmFpbERvd25sb2FkOworICAgIFdLQ29udGV4
dFNldERvd25sb2FkQ2xpZW50KHRvQVBJKGNvbnRleHQpLCAmZG93bmxvYWRDbGllbnQpOworICAg
IHJldHVybiBhZG9wdFJlZihtYW5hZ2VyKTsKK30KKwordm9pZCBRdERvd25sb2FkTWFuYWdlcjo6
ZG93bmxvYWRSZWNlaXZlZFJlc3BvbnNlKERvd25sb2FkUHJveHkqIGRvd25sb2FkLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICAvLyBXaWxsIGJlIGNh
bGxlZCB3aGVuIHRoZSBoZWFkZXJzIGFyZSByZWFkIGJ5IFdlYlByb2Nlc3MuCisgICAgUVdlYkRv
d25sb2FkSXRlbSogZG93bmxvYWRJdGVtID0gbmV3IFFXZWJEb3dubG9hZEl0ZW0oKTsKKyAgICBk
b3dubG9hZEl0ZW0tPmQtPmRvd25sb2FkUHJveHkgPSBkb3dubG9hZDsKKyAgICBkb3dubG9hZEl0
ZW0tPmQtPnNvdXJjZVVybCA9IHJlc3BvbnNlLnVybCgpOworICAgIGRvd25sb2FkSXRlbS0+ZC0+
bWltZVR5cGUgPSByZXNwb25zZS5taW1lVHlwZSgpOworICAgIGRvd25sb2FkSXRlbS0+ZC0+ZXhw
ZWN0ZWRDb250ZW50TGVuZ3RoID0gcmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCk7Cisg
ICAgZG93bmxvYWRJdGVtLT5kLT5zdWdnZXN0ZWRGaWxlbmFtZSA9IHJlc3BvbnNlLnN1Z2dlc3Rl
ZEZpbGVuYW1lKCk7CisKKyAgICBtX2Rvd25sb2Fkc1tkb3dubG9hZC0+ZG93bmxvYWRJRCgpXSA9
IGRvd25sb2FkSXRlbTsKKworICAgIC8vIE5vdyB0aGF0IG91ciBkb3dubG9hZEl0ZW0gaGFzIGV2
ZXJ5dGhpbmcgd2UgbmVlZCB3ZSBjYW4gZW1pdCBkb3dubG9hZFJlcXVlc3RlZC4KKworICAgIGRv
d25sb2FkLT5pbml0aWF0aW5nUGFnZSgpLT5wYWdlQ2xpZW50KCktPnF0V2ViUGFnZVByb3h5KCkt
PmRvd25sb2FkUmVxdWVzdGVkKGRvd25sb2FkSXRlbSk7Cit9CisKK3ZvaWQgUXREb3dubG9hZE1h
bmFnZXI6OmRvd25sb2FkQ3JlYXRlZERlc3RpbmF0aW9uKERvd25sb2FkUHJveHkqIGRvd25sb2Fk
LCBjb25zdCBRU3RyaW5nJiBwYXRoKQoreworICAgIFFXZWJEb3dubG9hZEl0ZW0qIGRvd25sb2Fk
SXRlbSA9IG1fZG93bmxvYWRzLnZhbHVlKGRvd25sb2FkLT5kb3dubG9hZElEKCkpOworICAgIEFT
U0VSVChkb3dubG9hZEl0ZW0pOworICAgIGRvd25sb2FkSXRlbS0+ZC0+ZGVzdGluYXRpb25QYXRo
ID0gcGF0aDsKKyAgICBlbWl0IGRvd25sb2FkSXRlbS0+ZGVzdGluYXRpb25GaWxlQ3JlYXRlZChk
b3dubG9hZEl0ZW0tPmQtPmRlc3RpbmF0aW9uUGF0aCk7Cit9CisKK3ZvaWQgUXREb3dubG9hZE1h
bmFnZXI6OmRvd25sb2FkRmluaXNoZWQoRG93bmxvYWRQcm94eSogZG93bmxvYWQpCit7CisgICAg
Ly8gV2lsbCBiZSBjYWxsZWQgd2hlbiBkb3dubG9hZCBmaW5pc2hlcyB3aXRoIHN1Y2Nlc3MuCisg
ICAgUVdlYkRvd25sb2FkSXRlbSogZG93bmxvYWRJdGVtID0gbV9kb3dubG9hZHMudGFrZShkb3du
bG9hZC0+ZG93bmxvYWRJRCgpKTsKKyAgICBBU1NFUlQoZG93bmxvYWRJdGVtKTsKKyAgICBlbWl0
IGRvd25sb2FkSXRlbS0+c3VjY2VlZGVkKCk7Cit9CisKK3ZvaWQgUXREb3dubG9hZE1hbmFnZXI6
OmRvd25sb2FkRmFpbGVkKERvd25sb2FkUHJveHkqIGRvd25sb2FkLCBjb25zdCBRV2ViRXJyb3Im
IGVycm9yKQoreworICAgIC8vIFdpbGwgYmUgY2FsbGVkIHdoZW4gZG93bmxvYWQgZmFpbHMgb3Ig
aXMgYWJvcnRlZC4KKyAgICBRV2ViRG93bmxvYWRJdGVtKiBkb3dubG9hZEl0ZW0gPSBtX2Rvd25s
b2Fkcy50YWtlKGRvd25sb2FkLT5kb3dubG9hZElEKCkpOworICAgIEFTU0VSVChkb3dubG9hZEl0
ZW0pOworICAgIGVtaXQgZG93bmxvYWRJdGVtLT5mYWlsZWQoZXJyb3IuZXJyb3JDb2RlQXNEb3du
bG9hZEVycm9yKCksIGVycm9yLnVybCgpLCBlcnJvci5kZXNjcmlwdGlvbigpKTsKK30KKwordm9p
ZCBRdERvd25sb2FkTWFuYWdlcjo6ZG93bmxvYWREYXRhUmVjZWl2ZWQoRG93bmxvYWRQcm94eSog
ZG93bmxvYWQsIHVpbnQ2NF90IGxlbmd0aCkKK3sKKyAgICAvLyBXaWxsIGJlIGNhbGxlZCBldmVy
eXRpbWUgYnl0ZXMgd2VyZSB3cml0dGVuIHRvIGRlc3RpbmF0aW9uIGZpbGUgYnkgV2ViUHJvY2Vz
cy4KKyAgICBRV2ViRG93bmxvYWRJdGVtKiBkb3dubG9hZEl0ZW0gPSBtX2Rvd25sb2Fkcy52YWx1
ZShkb3dubG9hZC0+ZG93bmxvYWRJRCgpKTsKKyAgICBBU1NFUlQoZG93bmxvYWRJdGVtKTsKKyAg
ICBkb3dubG9hZEl0ZW0tPmQtPnRvdGFsQnl0ZXNSZWNlaXZlZCArPSBsZW5ndGg7CisgICAgZW1p
dCBkb3dubG9hZEl0ZW0tPnRvdGFsQnl0ZXNSZWNlaXZlZENoYW5nZWQobGVuZ3RoKTsKK30KKwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0RG93bmxvYWRNYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXREb3dubG9hZE1hbmFnZXIuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zNGVhOTcwNDVmY2U2MmZlODI4NzQ2NDY2MmRkOTUwZGI2MzMwYzc0Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0RG93bmxvYWRNYW5h
Z2VyLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSBO
b2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYg
UXREb3dubG9hZE1hbmFnZXJfaAorI2RlZmluZSBRdERvd25sb2FkTWFuYWdlcl9oCisKKyNpbmNs
dWRlIDxRTWFwPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KKworY2xhc3MgUVdlYkVycm9yOworY2xhc3MgUVdlYkRvd25sb2FkSXRlbTsK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKK30KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIERvd25sb2FkUHJveHk7CitjbGFzcyBXZWJDb250ZXh0
OworCitjbGFzcyBRdERvd25sb2FkTWFuYWdlciA6IHB1YmxpYyBSZWZDb3VudGVkPFF0RG93bmxv
YWRNYW5hZ2VyPiB7CitwdWJsaWM6CisgICAgflF0RG93bmxvYWRNYW5hZ2VyKCk7CisKKyAgICB2
b2lkIGRvd25sb2FkUmVjZWl2ZWRSZXNwb25zZShEb3dubG9hZFByb3h5KiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHZvaWQgZG93bmxvYWRDcmVhdGVkRGVzdGluYXRp
b24oRG93bmxvYWRQcm94eSosIGNvbnN0IFFTdHJpbmcmIHBhdGgpOworICAgIHZvaWQgZG93bmxv
YWRGaW5pc2hlZChEb3dubG9hZFByb3h5Kik7CisgICAgdm9pZCBkb3dubG9hZEZhaWxlZChEb3du
bG9hZFByb3h5KiwgY29uc3QgUVdlYkVycm9yJik7CisgICAgdm9pZCBkb3dubG9hZERhdGFSZWNl
aXZlZChEb3dubG9hZFByb3h5KiwgdWludDY0X3QgbGVuZ3RoKTsKKworICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFF0RG93bmxvYWRNYW5hZ2VyPiBjcmVhdGUoV2ViQ29udGV4dCopOworcHJpdmF0ZToK
KyAgICBRdERvd25sb2FkTWFuYWdlcigpOworCisgICAgUU1hcDx1aW50NjRfdCwgUVdlYkRvd25s
b2FkSXRlbSo+IG1fZG93bmxvYWRzOworfTsKKworfQorI2VuZGlmIC8qIFF0RG93bmxvYWRNYW5h
Z2VyX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFRvdWNo
Vmlld0ludGVyZmFjZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0VG91Y2hWaWV3
SW50ZXJmYWNlLmgKaW5kZXggM2I2OTAxODhkYzY4NzU5YmM4ZmM0ZjQ4Zjk2N2I3MWFlYmQwZGI5
NS4uZGEyZjYzYTY5ZGY1ODZiMjc1NmY5MGM1ZjlkN2Q5ZDg1YWQxZjNlMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0VG91Y2hWaWV3SW50ZXJmYWNlLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0VG91Y2hWaWV3SW50ZXJmYWNlLmgKQEAgLTgx
LDYgKzgxLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFFKU0VuZ2luZSogZW5naW5lKCk7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgY2hvb3NlRmlsZXMoV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJl
ZiwgY29uc3QgUVN0cmluZ0xpc3QmLCBGaWxlQ2hvb3NlclR5cGUpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBkb3dubG9hZFJlcXVlc3RlZChRV2ViRG93bmxvYWRJdGVtKiBkb3dubG9hZEl0ZW0pIHsg
fQogCiAgICAgdmlydHVhbCB2b2lkIGRpZE1vdXNlTW92ZU92ZXJFbGVtZW50KGNvbnN0IFFVcmwm
LCBjb25zdCBRU3RyaW5nJikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9RdFZpZXdJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9R
dFZpZXdJbnRlcmZhY2UuaAppbmRleCBiNmQ4YjNiZDU2MDRiMzcxYzRiYThkMjIxODEwZmQ1ZDY5
NzFjNGNkLi5mYTBiMWQwY2MxYzExMDdmNGUxNGQzM2EwYmJmZWVjOTJlYzI1MjIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRWaWV3SW50ZXJmYWNlLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0Vmlld0ludGVyZmFjZS5oCkBAIC0yNiw2ICsy
Niw3IEBACiAjaW5jbHVkZSA8UXRDb3JlL1FTaXplPgogI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNl
Lmg+CiAKK2NsYXNzIFFXZWJEb3dubG9hZEl0ZW07CiBjbGFzcyBRV2ViRXJyb3I7CiAKIFFUX0JF
R0lOX05BTUVTUEFDRQpAQCAtOTMsNiArOTQsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGNob29zZUZpbGVzKFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJSZWYsIGNvbnN0IFFTdHJpbmdM
aXN0JiBzZWxlY3RlZEZpbGVOYW1lcywgRmlsZUNob29zZXJUeXBlKSA9IDA7CiAKICAgICB2aXJ0
dWFsIHZvaWQgZGlkTW91c2VNb3ZlT3ZlckVsZW1lbnQoY29uc3QgUVVybCYsIGNvbnN0IFFTdHJp
bmcmKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWRSZXF1ZXN0ZWQoUVdlYkRvd25s
b2FkSXRlbSopID0gMDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
UXRXZWJQYWdlUHJveHkuY3BwCmluZGV4IDdkYmU0Nzc1NzNmNjk5OWQ1YTJiYWVhNDAxNmNjMGQ4
MzU5OGZhOWEuLjAxZGUyZTMyOGQ0OTk3NzAxMGU0OTU0Njk4OWU0ZTEzZGM4MTIwZjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcApAQCAtNjQs
MTMgKzY0LDE2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAKIFJlZlB0cjxXZWJDb250
ZXh0PiBRdFdlYlBhZ2VQcm94eTo6c19kZWZhdWx0Q29udGV4dDsKK1JlZlB0cjxRdERvd25sb2Fk
TWFuYWdlcj4gUXRXZWJQYWdlUHJveHk6OnNfZG93bmxvYWRNYW5hZ2VyOwogCiB1bnNpZ25lZCBR
dFdlYlBhZ2VQcm94eTo6c19kZWZhdWx0UGFnZVByb3h5Q291bnQgPSAwOwogCiBQYXNzUmVmUHRy
PFdlYkNvbnRleHQ+IFF0V2ViUGFnZVByb3h5OjpkZWZhdWx0V0tDb250ZXh0KCkKIHsKLSAgICBp
ZiAoIXNfZGVmYXVsdENvbnRleHQpCisgICAgaWYgKCFzX2RlZmF1bHRDb250ZXh0KSB7CiAgICAg
ICAgIHNfZGVmYXVsdENvbnRleHQgPSBXZWJDb250ZXh0OjpjcmVhdGUoU3RyaW5nKCkpOworICAg
ICAgICBzX2Rvd25sb2FkTWFuYWdlciA9IFF0RG93bmxvYWRNYW5hZ2VyOjpjcmVhdGUoc19kZWZh
dWx0Q29udGV4dC5nZXQoKSk7CisgICAgfQogICAgIHJldHVybiBzX2RlZmF1bHRDb250ZXh0Owog
fQogCkBAIC0xNjgsOCArMTcxLDEwIEBAIFF0V2ViUGFnZVByb3h5Ojp+UXRXZWJQYWdlUHJveHko
KQogICAgIGlmIChtX2NvbnRleHQgPT0gc19kZWZhdWx0Q29udGV4dCkgewogICAgICAgICBBU1NF
UlQoc19kZWZhdWx0UGFnZVByb3h5Q291bnQgPiAwKTsKICAgICAgICAgc19kZWZhdWx0UGFnZVBy
b3h5Q291bnQtLTsKLSAgICAgICAgaWYgKCFzX2RlZmF1bHRQYWdlUHJveHlDb3VudCkKKyAgICAg
ICAgaWYgKCFzX2RlZmF1bHRQYWdlUHJveHlDb3VudCkgewogICAgICAgICAgICAgc19kZWZhdWx0
Q29udGV4dC5jbGVhcigpOworICAgICAgICAgICAgc19kb3dubG9hZE1hbmFnZXIuY2xlYXIoKTsK
KyAgICAgICAgfQogICAgIH0KICAgICBkZWxldGUgbV9oaXN0b3J5OwogfQpAQCAtNzAxLDQgKzcw
Niw4IEBAIHZvaWQgUXRXZWJQYWdlUHJveHk6OnNldFBhZ2VJc1Zpc2libGUoYm9vbCBpc1Zpc2li
bGUpCiAgICAgbV93ZWJQYWdlUHJveHktPmRyYXdpbmdBcmVhKCktPnNldFBhZ2VJc1Zpc2libGUo
aXNWaXNpYmxlKTsKIH0KIAordm9pZCBRdFdlYlBhZ2VQcm94eTo6ZG93bmxvYWRSZXF1ZXN0ZWQo
UVdlYkRvd25sb2FkSXRlbSogZG93bmxvYWQpCit7CisgICAgbV92aWV3SW50ZXJmYWNlLT5kb3du
bG9hZFJlcXVlc3RlZChkb3dubG9hZCk7Cit9CiAjaW5jbHVkZSAibW9jX1F0V2ViUGFnZVByb3h5
LmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQ
cm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmgKaW5k
ZXggZTIwOGRhZmM4NDJkN2EwNGFjNjhjOGQwN2U4YjQ4Mjg5NGY2ODg1OC4uODMxMmUzNGE2ZWUw
MWJjMWQzYjNmZjFhMjU0YTFlOWM4NWMzMDJhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1F0V2ViUGFnZVByb3h5LmgKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkxh
eWVyVHJlZUNvbnRleHQuaCIKICNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCisjaW5jbHVkZSAiUXRE
b3dubG9hZE1hbmFnZXIuaCIKICNpbmNsdWRlICJRdFBvbGljeUludGVyZmFjZS5oIgogI2luY2x1
ZGUgIlF0Vmlld0ludGVyZmFjZS5oIgogI2luY2x1ZGUgInF3ZWJraXR0eXBlcy5oIgpAQCAtMTI3
LDYgKzEyOCw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5kWm9vbWFibGVB
cmVhKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwog
CisgICAgdmlydHVhbCBRdFdlYlBhZ2VQcm94eSogcXRXZWJQYWdlUHJveHkoKSB7IHJldHVybiB0
aGlzOyB9CisKICAgICB2b2lkIGRpZENoYW5nZVVybChjb25zdCBRVXJsJik7CiAgICAgdm9pZCBk
aWRDaGFuZ2VUaXRsZShjb25zdCBRU3RyaW5nJik7CiAKQEAgLTE3Miw2ICsxNzUsOCBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIHNldFBhZ2VJc1Zpc2libGUoYm9vbCk7CiAKKyAgICB2b2lkIGRvd25s
b2FkUmVxdWVzdGVkKFFXZWJEb3dubG9hZEl0ZW0qKTsKKwogcHVibGljIFFfU0xPVFM6CiAgICAg
dm9pZCB3ZWJBY3Rpb25UcmlnZ2VyZWQoYm9vbCBjaGVja2VkKTsKIApAQCAtMTk1LDYgKzIwMCw3
IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb250ZXh0PiBkZWZhdWx0
V0tDb250ZXh0KCk7CiAgICAgc3RhdGljIFJlZlB0cjxXZWJDb250ZXh0PiBzX2RlZmF1bHRDb250
ZXh0OworICAgIHN0YXRpYyBSZWZQdHI8UXREb3dubG9hZE1hbmFnZXI+IHNfZG93bmxvYWRNYW5h
Z2VyOwogICAgIHN0YXRpYyB1bnNpZ25lZCBzX2RlZmF1bHRQYWdlUHJveHlDb3VudDsKIAogICAg
IFJlZlB0cjxXZWJDb250ZXh0PiBtX2NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvcXdlYmVycm9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9xd2ViZXJyb3IuY3BwCmluZGV4IGE1ZjhkOTg5NTc1ZTMyNWIwYTZlOWM0MWEzOGNmNDk4Yzhm
YmJhNjQuLmIwMjhhNjMxMzBmZWQxODhhMzNiM2Y5MDVjOTk3NWU4OGU4MzI0NDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xd2ViZXJyb3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xd2ViZXJyb3IuY3BwCkBAIC04MCwzICs4MCw4IEBAIFFV
cmwgUVdlYkVycm9yOjp1cmwoKSBjb25zdAogICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiBmYWls
aW5nVVJMID0gYWRvcHRXSyhXS0Vycm9yQ29weUZhaWxpbmdVUkwoZC0+ZXJyb3IuZ2V0KCkpKTsK
ICAgICByZXR1cm4gV0tVUkxDb3B5UVVybChmYWlsaW5nVVJMLmdldCgpKTsKIH0KKworUVN0cmlu
ZyBRV2ViRXJyb3I6OmRlc2NyaXB0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV0tTdHJpbmdD
b3B5UVN0cmluZyhXS0Vycm9yQ29weUxvY2FsaXplZERlc2NyaXB0aW9uKGQtPmVycm9yLmdldCgp
KSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXdlYmVycm9y
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXdlYmVycm9yLmgKaW5kZXggMzE0MmI2
NGExODU0MDg4ODVkODE3YzQyM2JlNmZmMWJlZDdmNDRmYi4uMGVlYTgzZmZmOWJjNmI2YmIwNDZm
NGM3YmJiYmViYTUzYzVjMzExMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L3F3ZWJlcnJvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xd2ViZXJy
b3IuaApAQCAtMjEsNiArMjEsNyBAQAogI2lmbmRlZiBxd2ViZXJyb3JfaAogI2RlZmluZSBxd2Vi
ZXJyb3JfaAogCisjaW5jbHVkZSAicXdlYmRvd25sb2FkaXRlbS5oIgogI2luY2x1ZGUgInF3ZWJr
aXRnbG9iYWwuaCIKICNpbmNsdWRlIDxRU2hhcmVkRGF0YVBvaW50ZXI+CiAjaW5jbHVkZSA8UXRO
ZXR3b3JrL1FOZXR3b3JrUmVwbHk+CkBAIC00Myw5ICs0NCwxMSBAQCBwdWJsaWM6CiAgICAgVHlw
ZSB0eXBlKCkgY29uc3Q7CiAgICAgUVVybCB1cmwoKSBjb25zdDsKICAgICBpbnQgZXJyb3JDb2Rl
KCkgY29uc3Q7CisgICAgUVN0cmluZyBkZXNjcmlwdGlvbigpIGNvbnN0OwogCiAgICAgaW50IGVy
cm9yQ29kZUFzSHR0cFN0YXR1c0NvZGUoKSBjb25zdCB7IHJldHVybiBlcnJvckNvZGUoKTsgfQog
ICAgIFFOZXR3b3JrUmVwbHk6Ok5ldHdvcmtFcnJvciBlcnJvckNvZGVBc05ldHdvcmtFcnJvcigp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFFOZXR3b3JrUmVwbHk6Ok5ldHdvcmtFcnJvcj4o
ZXJyb3JDb2RlKCkpOyB9CisgICAgUVdlYkRvd25sb2FkSXRlbTo6RG93bmxvYWRFcnJvciBlcnJv
ckNvZGVBc0Rvd25sb2FkRXJyb3IoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxRV2ViRG93
bmxvYWRJdGVtOjpEb3dubG9hZEVycm9yPihlcnJvckNvZGUoKSk7IH0KIAogICAgIFFXZWJFcnJv
cihjb25zdCBRV2ViRXJyb3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0
Mi5wcm8gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBybwppbmRleCAzOTQzNzU2MTg0YmQ0YWFj
MWI0ZGNmYTI5ODJjZWM3MDM1MDhmOTE3Li43N2M5YTIzZWY4NjIxNTZjNDg2YWFjMGY5NzFlNGU4
NjNiYzIzMDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBybworKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBybwpAQCAtMjYxLDYgKzI2MSw3IEBAIEhFQURFUlMgKz0g
XAogICAgIFVJUHJvY2Vzcy9xdC9RdFRvdWNoV2ViUGFnZVByb3h5LmggXAogICAgIFVJUHJvY2Vz
cy9xdC9xd2ViZXJyb3IuaCBcCiAgICAgVUlQcm9jZXNzL3F0L3F3ZWJlcnJvcl9wLmggXAorICAg
IFVJUHJvY2Vzcy9xdC9RdERvd25sb2FkTWFuYWdlci5oIFwKICAgICBVSVByb2Nlc3MvcXQvUXRX
ZWJQYWdlUHJveHkuaCBcCiAgICAgVUlQcm9jZXNzL3F0L3F3a2hpc3RvcnkuaCBcCiAgICAgVUlQ
cm9jZXNzL3F0L3F3a2hpc3RvcnlfcC5oIFwKQEAgLTUwMiw2ICs1MDMsNyBAQCBTT1VSQ0VTICs9
IFwKICAgICBVSVByb2Nlc3MvcXQvUXREZXNrdG9wV2ViUGFnZVByb3h5LmNwcCBcCiAgICAgVUlQ
cm9jZXNzL3F0L1F0VG91Y2hXZWJQYWdlUHJveHkuY3BwIFwKICAgICBVSVByb2Nlc3MvcXQvcXdl
YmVycm9yLmNwcCBcCisgICAgVUlQcm9jZXNzL3F0L1F0RG93bmxvYWRNYW5hZ2VyLmNwcCBcCiAg
ICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L3F3
a2hpc3RvcnkuY3BwIFwKICAgICBVSVByb2Nlc3MvcXQvUXRTR1VwZGF0ZVF1ZXVlLmNwcCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyQVBJLnByaSBiL1NvdXJjZS9XZWJLaXQy
L1dlYktpdDJBUEkucHJpCmluZGV4IDk3MWQwYTdmNDk5Y2Q3NjQ5ZGEyMzhmNmEwYTIxYTEyNTBk
MGViMTIuLjE5MzNlYWIzOTBhYTAyNmVkZjIxNDgwOGQxNzJmZTZjYWYzZjg3YmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDJBUEkucHJpCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YktpdDJBUEkucHJpCkBAIC00OSw2ICs0OSw3IEBAIFdFQktJVDJfQVBJX1NPVVJDRVMgPSBcCiAg
ICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvcXQvV0tTdHJpbmdRdC5j
cHAgXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL3F0L1dLVVJM
UXQuY3BwIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNr
dG9wd2Vidmlldy5jcHAgXAorICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcXdlYmRvd25sb2FkaXRlbS5jcHAgXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZS5jcHAgXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2Vidmlldy5jcHAgXAogICAgICQkU09VUkNFX0RJUi9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYm5hdmlnYXRpb25jb250cm9sbGVyLmNwcCBcCkBA
IC0xMzIsNiArMTMzLDggQEAgV0VCS0lUMl9BUElfSEVBREVSUyArPSBcCiAgICAgJCRTT1VSQ0Vf
RElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXdfcC5oIFwKICAgICAk
JFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJwcmVmZXJlbmNlcy5oIFwK
ICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJwcmVmZXJlbmNl
c19wLmggXAorICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYmRv
d25sb2FkaXRlbS5oIFwKKyAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3F3ZWJkb3dubG9hZGl0ZW1fcC5oIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2UuaCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJwYWdlX3AuaCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3LmggXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKaW5kZXggYWNjY2QzZjg4ZTJhNjk5NTk3
YTM5YjdiZjgyOGQ0MzYzN2I3MGYzOC4uYzA2NmUyZjZiNDQzOWU2YzU2ZWMzMDE1ZjdiZmU1NTIx
YTk3MjQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZC5oCkBAIC05Myw2ICs5MywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRDYW5jZWwoY29u
c3QgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSk7CiAgICAgdm9pZCBkaWREZWNp
ZGVEZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmLCBib29sIGFsbG93T3ZlcndyaXRlKTsKIAorI2lm
IFBMQVRGT1JNKFFUKQorICAgIHZvaWQgc3RhcnRUcmFuc2Zlcihjb25zdCBTdHJpbmcmIGRlc3Rp
bmF0aW9uKTsKKyNlbmRpZgorCiAjaWYgVVNFKENGTkVUV09SSykKICAgICBjb25zdCBTdHJpbmcm
IGRlc3RpbmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvbjsgfQogICAgIERvd25s
b2FkQXV0aGVudGljYXRpb25DbGllbnQqIGF1dGhlbnRpY2F0aW9uQ2xpZW50KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2Vy
LmNwcAppbmRleCBhNjI0ODkxZjgwMTk0ZjNhZGMxNTE4MWFjODA4NGI0Njk1NThiY2I2Li42MGRj
ZTg5YjRlZTRjY2MzOGJlZjk4OTY1NTlmOWQ3OGU2N2YzMjYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKQEAg
LTc5LDQgKzc5LDEzIEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpkb3dubG9hZEZpbmlzaGVkKERv
d25sb2FkKiBkb3dubG9hZCkKICAgICBkZWxldGUgZG93bmxvYWQ7CiB9CiAKKyNpZiBQTEFURk9S
TShRVCkKK3ZvaWQgRG93bmxvYWRNYW5hZ2VyOjpzdGFydFRyYW5zZmVyKHVpbnQ2NF90IGRvd25s
b2FkSUQsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24pCit7CisgICAgQVNTRVJUKG1fZG93bmxv
YWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsKKyAgICBEb3dubG9hZCogZG93bmxvYWQgPSBtX2Rv
d25sb2Fkcy5nZXQoZG93bmxvYWRJRCk7CisgICAgZG93bmxvYWQtPnN0YXJ0VHJhbnNmZXIoZGVz
dGluYXRpb24pOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaApp
bmRleCAxZjI3Yjg2N2FlZDU1OGZiYjc1M2JjNjUyZjE4YjBhY2I2OWEwMDIzLi42ZmE3YWViZWU0
ZjI3YmQ0M2MxNzA2NmNiYjdiYjgzYTY4NDJkNGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaApAQCAtMjksNiArMjks
MTAgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgogCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFN0cmluZzsKK30KKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIGNsYXNzIFJlc291cmNlSGFuZGxlOwogICAgIGNsYXNzIFJlc291cmNlUmVx
dWVzdDsKQEAgLTU0LDYgKzU4LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGRvd25sb2FkRmluaXNo
ZWQoRG93bmxvYWQqKTsKICAgICBib29sIGlzRG93bmxvYWRpbmcoKSBjb25zdCB7IHJldHVybiAh
bV9kb3dubG9hZHMuaXNFbXB0eSgpOyB9CiAKKyNpZiBQTEFURk9STShRVCkKKyAgICB2b2lkIHN0
YXJ0VHJhbnNmZXIodWludDY0X3QgZG93bmxvYWRJRCwgY29uc3QgV1RGOjpTdHJpbmcmIGRlc3Rp
bmF0aW9uKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIERvd25sb2FkTWFuYWdlcigpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9Eb3dubG9h
ZFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L0Rvd25sb2Fk
UXQuY3BwCmluZGV4IDllZTk5OTVlODBlODgwZGRhNmQyN2M5YTNiNTBmMGMxNjFkZWEwZTAuLjRl
ZWY0MWM0MGI2Yzc2NDliYTkwNTQzNDZlMjgxNmFhODk1NDBkNzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L0Rvd25sb2FkUXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L0Rvd25sb2FkUXQuY3BwCkBAIC00
NiwxMyArNDYsMTQgQEAgdm9pZCBEb3dubG9hZDo6c3RhcnQoV2ViUGFnZSogaW5pdGlhdGluZ1dl
YlBhZ2UpCiAgICAgQVNTRVJUKCFtX3F0RG93bmxvYWRlcik7CiAKICAgICBtX3F0RG93bmxvYWRl
ciA9IG5ldyBRdEZpbGVEb3dubG9hZGVyKHRoaXMsIGFkb3B0UHRyKG1hbmFnZXItPmdldChtX3Jl
cXVlc3QudG9OZXR3b3JrUmVxdWVzdCgpKSkpOwotICAgIG1fcXREb3dubG9hZGVyLT5zdGFydCgp
OworICAgIG1fcXREb3dubG9hZGVyLT5pbml0KCk7CiB9CiAKIHZvaWQgRG93bmxvYWQ6OnN0YXJ0
V2l0aEhhbmRsZShXZWJQYWdlKiBpbml0aWF0aW5nUGFnZSwgUmVzb3VyY2VIYW5kbGUqIGhhbmRs
ZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBpbml0aWFsUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcCkKIHsKICAgICBBU1NFUlQoIW1fcXREb3dubG9hZGVyKTsKICAgICBtX3F0
RG93bmxvYWRlciA9IG5ldyBRdEZpbGVEb3dubG9hZGVyKHRoaXMsIGFkb3B0UHRyKGhhbmRsZS0+
Z2V0SW50ZXJuYWwoKS0+bV9qb2ItPnJlbGVhc2UoKSkpOworICAgIG1fcXREb3dubG9hZGVyLT5p
bml0KCk7CiB9CiAKIHZvaWQgRG93bmxvYWQ6OmNhbmNlbCgpCkBAIC03MCw3ICs3MSwxMiBAQCB2
b2lkIERvd25sb2FkOjpwbGF0Zm9ybUludmFsaWRhdGUoKQogCiB2b2lkIERvd25sb2FkOjpkaWRE
ZWNpZGVEZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uLCBib29sIGFsbG93T3Zl
cndyaXRlKQogewotICAgIG1fcXREb3dubG9hZGVyLT5kZWNpZGVkRGVzdGluYXRpb24oZGVzdGlu
YXRpb24sIGFsbG93T3ZlcndyaXRlKTsKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IERvd25sb2FkOjpzdGFydFRyYW5zZmVyKGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24pCit7Cisg
ICAgbV9xdERvd25sb2FkZXItPnN0YXJ0VHJhbnNmZXIoZGVzdGluYXRpb24pOwogfQogCiB2b2lk
IERvd25sb2FkOjpwbGF0Zm9ybURpZEZpbmlzaCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3dubG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L1F0RmlsZURvd25sb2FkZXIuY3BwCmluZGV4
IGM5MzZiMDhlNzBmOTA0Y2Y0YjViMzM2ZjU0YjcyNjk3N2RiZWQwZjkuLjIwYTU2ZTdkOTVjM2Yx
ZjQ3MzA4MjFhY2M0NzJjYjU1OGMxYmUxZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvRG93bmxvYWRzL3F0L1F0RmlsZURvd25sb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L1F0RmlsZURvd25sb2FkZXIuY3BwCkBAIC01
Myw0NSArNTMsNDEgQEAgUXRGaWxlRG93bmxvYWRlcjo6flF0RmlsZURvd25sb2FkZXIoKQogICAg
IGFib3J0RG93bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKFF0RmlsZURvd25sb2FkZXI6OkRvd25s
b2FkRXJyb3JBYm9ydGVkKTsKIH0KIAotdm9pZCBRdEZpbGVEb3dubG9hZGVyOjpzdGFydCgpCit2
b2lkIFF0RmlsZURvd25sb2FkZXI6OmluaXQoKQogewogICAgIGNvbm5lY3QobV9yZXBseS5nZXQo
KSwgU0lHTkFMKHJlYWR5UmVhZCgpKSwgU0xPVChvblJlYWR5UmVhZCgpKSk7CiAgICAgY29ubmVj
dChtX3JlcGx5LmdldCgpLCBTSUdOQUwoZmluaXNoZWQoKSksIFNMT1Qob25GaW5pc2hlZCgpKSk7
CiAgICAgY29ubmVjdChtX3JlcGx5LmdldCgpLCBTSUdOQUwoZXJyb3IoUU5ldHdvcmtSZXBseTo6
TmV0d29ya0Vycm9yKSksIFNMT1Qob25FcnJvcihRTmV0d29ya1JlcGx5OjpOZXR3b3JrRXJyb3Ip
KSk7Ci0KLSAgICAvLyBDYWxsIG9uUmVhZHlSZWFkIGp1c3QgaW4gY2FzZSBzb21lIGRhdGEgaXMg
YWxyZWFkeSB3YWl0aW5nLgotICAgIG9uUmVhZHlSZWFkKCk7CiB9CiAKLXZvaWQgUXRGaWxlRG93
bmxvYWRlcjo6ZGV0ZXJtaW5lRmlsZW5hbWUoKQorUVN0cmluZyBRdEZpbGVEb3dubG9hZGVyOjpk
ZXRlcm1pbmVGaWxlbmFtZSgpCiB7CiAgICAgQVNTRVJUKCFtX2Rlc3RpbmF0aW9uRmlsZSk7CiAK
LSAgICBRU3RyaW5nIGZpbGVOYW1lQ2FuZGlkYXRlID0gZmlsZW5hbWVGcm9tSFRUUENvbnRlbnRE
aXNwb3NpdGlvbihRU3RyaW5nOjpmcm9tTGF0aW4xKG1fcmVwbHktPnJhd0hlYWRlcigiQ29udGVu
dC1EaXNwb3NpdGlvbiIpKSk7Ci0gICAgaWYgKGZpbGVOYW1lQ2FuZGlkYXRlLmlzRW1wdHkoKSkg
eworICAgIFFTdHJpbmcgZmlsZW5hbWVDYW5kaWRhdGUgPSBmaWxlbmFtZUZyb21IVFRQQ29udGVu
dERpc3Bvc2l0aW9uKFFTdHJpbmc6OmZyb21MYXRpbjEobV9yZXBseS0+cmF3SGVhZGVyKCJDb250
ZW50LURpc3Bvc2l0aW9uIikpKTsKKyAgICBpZiAoZmlsZW5hbWVDYW5kaWRhdGUuaXNFbXB0eSgp
KSB7CiAgICAgICAgIEtVUkwga3VybCA9IG1fcmVwbHktPnVybCgpOwotICAgICAgICBmaWxlTmFt
ZUNhbmRpZGF0ZSA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhrdXJsLmxhc3RQYXRoQ29tcG9u
ZW50KCkpOworICAgICAgICBmaWxlbmFtZUNhbmRpZGF0ZSA9IGRlY29kZVVSTEVzY2FwZVNlcXVl
bmNlcyhrdXJsLmxhc3RQYXRoQ29tcG9uZW50KCkpOwogICAgIH0KIAotICAgIGlmIChmaWxlTmFt
ZUNhbmRpZGF0ZS5pc0VtcHR5KCkpIHsKKyAgICBpZiAoZmlsZW5hbWVDYW5kaWRhdGUuaXNFbXB0
eSgpKSB7CiAgICAgICAgIGFib3J0RG93bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKFF0RmlsZURv
d25sb2FkZXI6OkRvd25sb2FkRXJyb3JDYW5ub3REZXRlcm1pbmVGaWxlbmFtZSk7Ci0gICAgICAg
IHJldHVybjsKKyAgICAgICAgcmV0dXJuIFFTdHJpbmcoKTsKICAgICB9CiAKICAgICAvLyBNYWtl
IHN1cmUgdGhhdCB3ZSByZW1vdmUgcG9zc2libGUgIi4uLy4uIiBwYXJ0cyBpbiB0aGUgZ2l2ZW4g
ZmlsZSBuYW1lLgotICAgIFFGaWxlSW5mbyBmaWxlTmFtZUZpbHRlcihmaWxlTmFtZUNhbmRpZGF0
ZSk7Ci0gICAgUVN0cmluZyBmaWxlTmFtZSA9IGZpbGVOYW1lRmlsdGVyLmZpbGVOYW1lKCk7Cisg
ICAgUUZpbGVJbmZvIGZpbGVuYW1lRmlsdGVyKGZpbGVuYW1lQ2FuZGlkYXRlKTsKKyAgICBRU3Ry
aW5nIGZpbGVuYW1lID0gZmlsZW5hbWVGaWx0ZXIuZmlsZU5hbWUoKTsKIAotICAgIGlmIChmaWxl
TmFtZS5pc0VtcHR5KCkpIHsKKyAgICBpZiAoZmlsZW5hbWUuaXNFbXB0eSgpKSB7CiAgICAgICAg
IGFib3J0RG93bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKFF0RmlsZURvd25sb2FkZXI6OkRvd25s
b2FkRXJyb3JDYW5ub3REZXRlcm1pbmVGaWxlbmFtZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIFFTdHJpbmcoKTsKICAgICB9CiAKLSAgICBib29sIGFsbG93T3ZlcndyaXRlOwot
ICAgIG1fZG93bmxvYWQtPmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGZp
bGVOYW1lLCBhbGxvd092ZXJ3cml0ZSk7CisgICAgcmV0dXJuIGZpbGVuYW1lOwogfQogCi12b2lk
IFF0RmlsZURvd25sb2FkZXI6OmRlY2lkZWREZXN0aW5hdGlvbihjb25zdCBRU3RyaW5nJiBkZWNp
ZGVkRmlsZVBhdGgsIGJvb2wgYWxsb3dPdmVyd3JpdGUpCit2b2lkIFF0RmlsZURvd25sb2FkZXI6
OnN0YXJ0VHJhbnNmZXIoY29uc3QgUVN0cmluZyYgZGVjaWRlZEZpbGVQYXRoKQogewogICAgIEFT
U0VSVCghbV9kZXN0aW5hdGlvbkZpbGUpOwogCkBAIC0xMDIsMTQgKzk4LDE0IEBAIHZvaWQgUXRG
aWxlRG93bmxvYWRlcjo6ZGVjaWRlZERlc3RpbmF0aW9uKGNvbnN0IFFTdHJpbmcmIGRlY2lkZWRG
aWxlUGF0aCwgYm9vbCBhCiAgICAgfQogCiAgICAgaWYgKGRlY2lkZWRGaWxlUGF0aC5pc0VtcHR5
KCkpIHsKLSAgICAgICAgYWJvcnREb3dubG9hZFdyaXRpbmdBbmRFbWl0RXJyb3IoUXRGaWxlRG93
bmxvYWRlcjo6RG93bmxvYWRFcnJvckNhbmNlbGxlZEJ5Q2FsbGVyKTsKKyAgICAgICAgYWJvcnRE
b3dubG9hZFdyaXRpbmdBbmRFbWl0RXJyb3IoUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJv
ckNhbmNlbGxlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBPd25QdHI8UUZpbGU+
IGRvd25sb2FkRmlsZSA9IGFkb3B0UHRyKG5ldyBRRmlsZShkZWNpZGVkRmlsZVBhdGgpKTsKIAot
ICAgIGlmICghYWxsb3dPdmVyd3JpdGUgJiYgZG93bmxvYWRGaWxlLT5leGlzdHMoKSkgewotICAg
ICAgICBhYm9ydERvd25sb2FkV3JpdGluZ0FuZEVtaXRFcnJvcihRdEZpbGVEb3dubG9hZGVyOjpE
b3dubG9hZEVycm9yRmlsZUFscmVhZHlFeGlzdHMpOworICAgIGlmIChkb3dubG9hZEZpbGUtPmV4
aXN0cygpKSB7CisgICAgICAgIGFib3J0RG93bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKFF0Rmls
ZURvd25sb2FkZXI6OkRvd25sb2FkRXJyb3JEZXN0aW5hdGlvbkFscmVhZHlFeGlzdHMpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMzMsNyArMTI5LDYgQEAgdm9pZCBRdEZpbGVEb3du
bG9hZGVyOjpkZWNpZGVkRGVzdGluYXRpb24oY29uc3QgUVN0cmluZyYgZGVjaWRlZEZpbGVQYXRo
LCBib29sIGEKICAgICAvLyBmdW5jdGlvbiB3YXMgY2FsbGVkLgogICAgIGlmIChtX3JlcGx5LT5p
c0ZpbmlzaGVkKCkpCiAgICAgICAgIG9uRmluaXNoZWQoKTsKLQogfQogCiB2b2lkIFF0RmlsZURv
d25sb2FkZXI6OmFib3J0RG93bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKFF0RmlsZURvd25sb2Fk
ZXI6OkRvd25sb2FkRXJyb3IgZXJyb3JDb2RlKQpAQCAtMTU3LDEwICsxNTIsMTAgQEAgdm9pZCBR
dEZpbGVEb3dubG9hZGVyOjphYm9ydERvd25sb2FkV3JpdGluZ0FuZEVtaXRFcnJvcihRdEZpbGVE
b3dubG9hZGVyOjpEb3dubG8KICAgICBjYXNlIFF0RmlsZURvd25sb2FkZXI6OkRvd25sb2FkRXJy
b3JDYW5ub3RPcGVuRmlsZToKICAgICAgICAgdHJhbnNsYXRlZEVycm9yTWVzc2FnZSA9IFFDb3Jl
QXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUXRGaWxlRG93bmxvYWRlciIsICJDYW5ub3Qgb3BlbiBm
aWxlIGZvciB3cml0aW5nIik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUXRGaWxlRG93bmxv
YWRlcjo6RG93bmxvYWRFcnJvckZpbGVBbHJlYWR5RXhpc3RzOgotICAgICAgICB0cmFuc2xhdGVk
RXJyb3JNZXNzYWdlID0gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRdEZpbGVEb3dubG9h
ZGVyIiwgIkZpbGUgYWxyZWFkeSBleGlzdHMiKTsKKyAgICBjYXNlIFF0RmlsZURvd25sb2FkZXI6
OkRvd25sb2FkRXJyb3JEZXN0aW5hdGlvbkFscmVhZHlFeGlzdHM6CisgICAgICAgIHRyYW5zbGF0
ZWRFcnJvck1lc3NhZ2UgPSBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlF0RmlsZURvd25s
b2FkZXIiLCAiRGVzdGluYXRpb24gYWxyZWFkeSBleGlzdHMiKTsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9yQ2FuY2VsbGVkQnlDYWxsZXI6
CisgICAgY2FzZSBRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9yQ2FuY2VsbGVkOgogICAg
ICAgICB0cmFuc2xhdGVkRXJyb3JNZXNzYWdlID0gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRl
KCJRdEZpbGVEb3dubG9hZGVyIiwgIkRvd25sb2FkIGNhbmNlbGxlZCBieSBjYWxsZXIiKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9yQ2Fu
bm90RGV0ZXJtaW5lRmlsZW5hbWU6CkBAIC0yMDAsMTYgKzE5NSwxOSBAQCB2b2lkIFF0RmlsZURv
d25sb2FkZXI6Om9uUmVhZHlSZWFkKCkKICAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlID0gbV9y
ZXBseS0+aGVhZGVyKFFOZXR3b3JrUmVxdWVzdDo6Q29udGVudFR5cGVIZWFkZXIpLnRvU3RyaW5n
KCk7CiAgICAgICAgIFN0cmluZyBlbmNvZGluZyA9IGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlw
ZShjb250ZW50VHlwZSk7CiAgICAgICAgIFN0cmluZyBtaW1lVHlwZSA9IGV4dHJhY3RNSU1FVHlw
ZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUpOworICAgICAgICBTdHJpbmcgZmlsZW5hbWUgPSBk
ZXRlcm1pbmVGaWxlbmFtZSgpOworCisgICAgICAgIC8vIElmIGZpbGVuYW1lIGlzIGVtcHR5IGl0
IG1lYW5zIGRldGVybWluZUZpbGVuYW1lIGFib3J0ZWQgYW5kIGVtaXR0ZWQgYW4gZXJyb3IuCisg
ICAgICAgIGlmIChmaWxlbmFtZS5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgLy8gTGV0J3MgdHJ5IHRvIGd1ZXNzIGZyb20gdGhlIGV4dGVuc2lvbi4KICAgICAgICAg
aWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKICAgICAgICAgICAgIG1pbWVUeXBlID0gTUlNRVR5cGVS
ZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JQYXRoKG1fcmVwbHktPnVybCgpLnBhdGgoKSk7CiAKLSAg
ICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShtX3JlcGx5LT51cmwoKSwgbWltZVR5cGUs
IG1fcmVwbHktPmhlYWRlcihRTmV0d29ya1JlcXVlc3Q6OkNvbnRlbnRMZW5ndGhIZWFkZXIpLnRv
TG9uZ0xvbmcoKSwgZW5jb2RpbmcsIFN0cmluZygpKTsKKyAgICAgICAgUmVzb3VyY2VSZXNwb25z
ZSByZXNwb25zZShtX3JlcGx5LT51cmwoKSwgbWltZVR5cGUsIG1fcmVwbHktPmhlYWRlcihRTmV0
d29ya1JlcXVlc3Q6OkNvbnRlbnRMZW5ndGhIZWFkZXIpLnRvTG9uZ0xvbmcoKSwgZW5jb2Rpbmcs
IGZpbGVuYW1lKTsKICAgICAgICAgbV9kb3dubG9hZC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3Bv
bnNlKTsKIAotICAgICAgICBkZXRlcm1pbmVGaWxlbmFtZSgpOwotCiAgICAgICAgIG1faGVhZGVy
c1JlYWQgPSB0cnVlOwogICAgIH0KIH0KQEAgLTIyMyw2ICsyMjEsOCBAQCB2b2lkIFF0RmlsZURv
d25sb2FkZXI6Om9uRmluaXNoZWQoKQogCiAgICAgaWYgKG1fZXJyb3IgPT0gUU5ldHdvcmtSZXBs
eTo6Tm9FcnJvcikKICAgICAgICAgbV9kb3dubG9hZC0+ZGlkRmluaXNoKCk7CisgICAgZWxzZSBp
ZiAgKG1fZXJyb3IgPT0gUU5ldHdvcmtSZXBseTo6T3BlcmF0aW9uQ2FuY2VsZWRFcnJvcikKKyAg
ICAgICAgYWJvcnREb3dubG9hZFdyaXRpbmdBbmRFbWl0RXJyb3IoUXRGaWxlRG93bmxvYWRlcjo6
RG93bmxvYWRFcnJvckNhbmNlbGxlZCk7CiAgICAgZWxzZQogICAgICAgICBhYm9ydERvd25sb2Fk
V3JpdGluZ0FuZEVtaXRFcnJvcihRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9yTmV0d29y
a0ZhaWx1cmUpOwogfQpAQCAtMjM1LDYgKzIzNSw3IEBAIHZvaWQgUXRGaWxlRG93bmxvYWRlcjo6
b25FcnJvcihRTmV0d29ya1JlcGx5OjpOZXR3b3JrRXJyb3IgY29kZSkKIHZvaWQgUXRGaWxlRG93
bmxvYWRlcjo6Y2FuY2VsKCkKIHsKICAgICBtX3JlcGx5LT5hYm9ydCgpOworICAgIC8vIFF0Rmls
ZURvd25sb2FkZXI6Om9uRmluaXNoZWQoKSB3aWxsIGJlIGNhbGxlZCBhbmQgd2lsbCByYWlzZSBh
IERvd25sb2FkRXJyb3JDYW5jZWxsZWQuCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvUXRGaWxlRG93
bmxvYWRlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvUXRGaWxl
RG93bmxvYWRlci5oCmluZGV4IGI2YjhiYTI4YmVhOWY4YWIxZDY5NGM4NDMzNDE0NGE0YTJjOWQx
NWIuLjEwMjE5MDU3YTU2YjQ5ODUzOTIxNTM3NmVkMzVhNWUyYmQ0MTNlMDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L1F0RmlsZURvd25sb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3du
bG9hZGVyLmgKQEAgLTQ0LDE2ICs0NCwxNiBAQCBjbGFzcyBRdEZpbGVEb3dubG9hZGVyIDogcHVi
bGljIFFPYmplY3QgewogcHVibGljOgogICAgIFF0RmlsZURvd25sb2FkZXIoRG93bmxvYWQqLCBQ
YXNzT3duUHRyPFFOZXR3b3JrUmVwbHk+KTsKICAgICB2aXJ0dWFsIH5RdEZpbGVEb3dubG9hZGVy
KCk7Ci0gICAgdm9pZCBkZWNpZGVkRGVzdGluYXRpb24oY29uc3QgUVN0cmluZyYgZGVjaWRlZEZp
bGVQYXRoLCBib29sIGFsbG93T3ZlcndyaXRlKTsKICAgICB2b2lkIGNhbmNlbCgpOwotICAgIHZv
aWQgc3RhcnQoKTsKKyAgICB2b2lkIGluaXQoKTsKKyAgICB2b2lkIHN0YXJ0VHJhbnNmZXIoY29u
c3QgUVN0cmluZyYgZGVzdGluYXRpb24pOwogCiAgICAgZW51bSBEb3dubG9hZEVycm9yIHsKICAg
ICAgICAgRG93bmxvYWRFcnJvckFib3J0ZWQgPSAwLAogICAgICAgICBEb3dubG9hZEVycm9yQ2Fu
bm90V3JpdGVUb0ZpbGUsCiAgICAgICAgIERvd25sb2FkRXJyb3JDYW5ub3RPcGVuRmlsZSwKLSAg
ICAgICAgRG93bmxvYWRFcnJvckZpbGVBbHJlYWR5RXhpc3RzLAotICAgICAgICBEb3dubG9hZEVy
cm9yQ2FuY2VsbGVkQnlDYWxsZXIsCisgICAgICAgIERvd25sb2FkRXJyb3JEZXN0aW5hdGlvbkFs
cmVhZHlFeGlzdHMsCisgICAgICAgIERvd25sb2FkRXJyb3JDYW5jZWxsZWQsCiAgICAgICAgIERv
d25sb2FkRXJyb3JDYW5ub3REZXRlcm1pbmVGaWxlbmFtZSwKICAgICAgICAgRG93bmxvYWRFcnJv
ck5ldHdvcmtGYWlsdXJlCiAgICAgfTsKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZSBzbG90czoK
IAogcHJpdmF0ZToKICAgICB2b2lkIGFib3J0RG93bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKFF0
RmlsZURvd25sb2FkZXI6OkRvd25sb2FkRXJyb3IpOwotICAgIHZvaWQgZGV0ZXJtaW5lRmlsZW5h
bWUoKTsKKyAgICBRU3RyaW5nIGRldGVybWluZUZpbGVuYW1lKCk7CiAKICAgICBEb3dubG9hZCog
bV9kb3dubG9hZDsKICAgICBPd25QdHI8UU5ldHdvcmtSZXBseT4gbV9yZXBseTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGU4YWE3YWRhNGI2ZTVlNmFmMTZh
NDczODNmOTJjNDA3YjI4NjhhNWYuLmJkNjljYWQ3ZWRiMDVmNWJhOWE0YWJjMDU2M2EzNzYyYWYz
N2U1NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtOTU3
LDYgKzk1NywxMyBAQCB2b2lkIFdlYlByb2Nlc3M6OmNhbmNlbERvd25sb2FkKHVpbnQ2NF90IGRv
d25sb2FkSUQpCiAgICAgRG93bmxvYWRNYW5hZ2VyOjpzaGFyZWQoKS5jYW5jZWxEb3dubG9hZChk
b3dubG9hZElEKTsKIH0KIAorI2lmIFBMQVRGT1JNKFFUKQordm9pZCBXZWJQcm9jZXNzOjpzdGFy
dFRyYW5zZmVyKHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24p
Cit7CisgICAgRG93bmxvYWRNYW5hZ2VyOjpzaGFyZWQoKS5zdGFydFRyYW5zZmVyKGRvd25sb2Fk
SUQsIGRlc3RpbmF0aW9uKTsKK30KKyNlbmRpZgorCiB2b2lkIFdlYlByb2Nlc3M6OnNldEVuaGFu
Y2VkQWNjZXNzaWJpbGl0eShib29sIGZsYWcpCiB7CiAgICAgV2ViQ29yZTo6QVhPYmplY3RDYWNo
ZTo6c2V0RW5oYW5jZWRVc2VySW50ZXJmYWNlQWNjZXNzaWJpbGl0eShmbGFnKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggMGQ1ZDc0YTljMWMxNDkxMmQyMzZkZDM4
NGY2NTM2MDMxYjQxNDEzMi4uMzlmOGE1ZjBjZTg4YzA4MDNmYjI5NjY5MGE2Y2Y3NGU2MWU2MmQy
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTE3NSw2ICsxNzUs
OSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkb3dubG9hZFJlcXVlc3QodWludDY0X3QgZG93bmxv
YWRJRCwgdWludDY0X3QgaW5pdGlhdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0Jik7CiAgICAgdm9pZCBjYW5jZWxEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElEKTsK
KyNpZiBQTEFURk9STShRVCkKKyAgICB2b2lkIHN0YXJ0VHJhbnNmZXIodWludDY0X3QgZG93bmxv
YWRJRCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbik7CisjZW5kaWYKIAogICAgIHZvaWQgc2V0
VGV4dENoZWNrZXJTdGF0ZShjb25zdCBUZXh0Q2hlY2tlclN0YXRlJik7CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNDRm
NDQxOWEwNzg3ZmM3NzU5Y2M1MmIzZTU0NDM1Zjc5NWZjMzhmOC4uZjkxOTZhZTJhOThkMTdiNjgz
YWQ0NzYwYzBiNWY0OTdhMTVlZmM4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNjQsNiArNjQsOSBAQCBtZXNzYWdlcyAtPiBX
ZWJQcm9jZXNzIHsKICAgICAjIHR3byBtZXNzYWdlcy4KICAgICBEb3dubG9hZFJlcXVlc3QodWlu
dDY0X3QgZG93bmxvYWRJRCwgdWludDY0X3QgaW5pdGlhdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0IHJlcXVlc3QpCiAgICAgQ2FuY2VsRG93bmxvYWQodWludDY0X3QgZG93bmxv
YWRJRCkKKyNpZiBQTEFURk9STShRVCkKKyAgICBTdGFydFRyYW5zZmVyKHVpbnQ2NF90IGRvd25s
b2FkSUQsIFdURjo6U3RyaW5nIGRlc3RpbmF0aW9uKQorI2VuZGlmCiAKICAgICBTZXRUZXh0Q2hl
Y2tlclN0YXRlKFdlYktpdDo6VGV4dENoZWNrZXJTdGF0ZSB0ZXh0Q2hlY2tlclN0YXRlKQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111775</attachid>
            <date>2011-10-20 08:13:55 -0700</date>
            <delta_ts>2011-11-02 10:44:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68962-20111020121339.patch</filename>
            <type>text/plain</type>
            <size>59435</size>
            <attacher name="Jesus Sanchez-Palencia">jesus</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTc4NTkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggNGNiMTIzNGEzODM1
OGU2MjJhYzdkN2UwNThiZDY2MWZiZjNlNTc1ZC4uOWI5NjExMjhjNmYwNWJkOWE0MjkwNGEwMzFh
ZTFhMzliYmM0YmEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0xMC0y
MCAgSmVzdXMgU2FuY2hlei1QYWxlbmNpYSAgPGplc3VzLnBhbGVuY2lhQG9wZW5ib3NzYS5vcmc+
CisKKyAgICAgICAgW1F0XVtXSzJdIERvd25sb2FkIHN1cHBvcnQgYW5kIEFQSSBpbiBVSVByb2Nl
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4OTYy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVnaXN0
ZXJpbmcgbmV3IHFtbCB0eXBlIFFXZWJEb3dubG9hZEl0ZW0uCisKKyAgICAgICAgKiBkZWNsYXJh
dGl2ZS9wbHVnaW4uY3BwOgorICAgICAgICAoV2ViS2l0UW1sUGx1Z2luOjpyZWdpc3RlclR5cGVz
KToKKwogMjAxMS0xMC0xOCAgVG9yIEFybmUgVmVzdGLDuCAgPHRvci5hcm5lLnZlc3Rib0Bub2tp
YS5jb20+CiAKICAgICAgICAgW1F0XSBNZXJnZSBRTUwgcGx1Z2luIGZvciBXZWJLaXQyIHdpdGgg
dGhlIG9yaWdpbmFsIFdlYktpdDEgcGx1Z2luCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzY2OWEyYmM1ZTM5OTg0
NDg5NTg0YmU2NWQxZWFmZGQzNWViOGE3OS4uYTA1NDYyZjFmZmMyZjY5ZjYwNDMxNTllNTRlZmZm
YTdmYzdkZTU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MSBAQAorMjAxMS0xMC0yMCAgSmVz
dXMgU2FuY2hlei1QYWxlbmNpYSAgPGplc3VzLnBhbGVuY2lhQG9wZW5ib3NzYS5vcmc+CisKKyAg
ICAgICAgW1F0XVtXSzJdIERvd25sb2FkIHN1cHBvcnQgYW5kIEFQSSBpbiBVSVByb2Nlc3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4OTYyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgaW1wbGVtZW50
IG91ciBXa0NvbnRleHREb3dubG9hZENsaWVudCBhbmQgdGhlIG5lZWRlZCBjYWxsYmFja3MuCisg
ICAgICAgIFdlIGFsc28gYWRkIEFQSXMgYnkgZXhwb3NpbmcgUVdlYkRvd25sb2FkSXRlbS4gT2Jq
ZWN0cyBmcm9tIHRoaXMgdHlwZQorICAgICAgICBoYXZlIHRoZWlyIG93bmVyc2hpcCBoYW5kbGVk
IGJ5IFFEZXNrdG9wV2ViVmlldyBhbmQgd2lsbCBiZSBjcmVhdGVkIG9yCisgICAgICAgIGRlc3Ry
b3llZCBhcyBuZWVkZWQuIENsYXNzZXMgaW1wbGVtZW50aW5nIFZpZXdJbnRlcmZhY2UgKFFEZXNr
dG9wV2ViVmlld1ByaXZhdGUKKyAgICAgICAgYW5kIFRvdWNoVmlld0ludGVyZmFjZSkgd2lsbCBy
ZWNlaXZlIGEgc2lnbmFsIChkb3dubG9hZFJlcXVlc3RlZCkgd2l0aCBhIHBvaW50ZXIKKyAgICAg
ICAgdG8gdGhlIHJlY2VudGx5IGNyZWF0ZWQgUVdlYkRvd25sb2FkSXRlbS4gV2l0aCB0aGF0IHRo
ZXkgY2FuIGNvbm5lY3QgdGhlIHByb3BlcgorICAgICAgICBzaWduYWxzIGFuZCBzbG90cywgc2V0
IHRoZSBkb3dubG9hZCBkZXN0aW5hdGlvbiBwYXRoIGFuZCB0aGVuIGNhbGwgc3RhcnQoKS4KKyAg
ICAgICAgT2JqZWN0cyBvZiB0aGlzIHR5cGUgd2lsbCBwcm92aWRlIHRoZSBwcm9ncmVzcyBvZiBh
IGRvd25sb2FkLCBhIHNsb3QgdG8gY2FuY2VsIGl0LAorICAgICAgICBhbmQgc2lnbmFscyBmb3Ig
Z2V0dGluZyBmaW5pc2hlZCBvciBmYWlsdXJlIHN0YXR1cy4KKyAgICAgICAgUVdlYkRvd25sb2Fk
SXRlbSB3YXMgYWxzbyBleHBvc2VkIGluIFFNTC4KKyAgICAgICAgUXQgbmVlZGVkIGFuIGFzeW5j
aHJvbm91cyB3YXkgZm9yIFVJUHJvY2VzcyB0byByZXR1cm4gYSBkZXN0aW5hdGlvbiBwYXRoIHRv
IFdlYlByb2Nlc3MsCisgICAgICAgIHRoZXJlZm9yZSB0aGUgc3RhcnRUcmFuc2ZlciBBUEkgd2Fz
IGFkZGVkIHRvIFdlYktpdDIncyBEb3dubG9hZCBoYW5kbGVycy4KKworICAgICAgICAqIFNoYXJl
ZC9xdC9XZWJDb3JlQXJndW1lbnRDb2RlcnNRdC5jcHA6CisgICAgICAgIChDb3JlSVBDOjo6OmVu
Y29kZSk6CisgICAgICAgIChDb3JlSVBDOjo6OmRlY29kZSk6CisgICAgICAgIEFkZCBlbmNvZGlu
ZyBhbmQgZGVjb2Rpbmcgb2Ygc3VnZ2VzdGVkRmlsZW5hbWUgZm9yIFJlc291cmNlUmVzcG9uc2Uu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L1dLVmlldy5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFEZXNrdG9wV2ViVmll
d1ByaXZhdGU6OmRvd25sb2FkUmVxdWVzdGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0
L3FkZXNrdG9wd2Vidmlldy5oOiBBZGQgc2lnbmFsIGRvd25sb2FkUmVxdWVzdGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3X3AuaDoKKworICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvcXQvcXdlYmRvd25sb2FkaXRlbS5jcHA6IEFkZGVkLgorICAgICAgICAoUVdl
YkRvd25sb2FkSXRlbVByaXZhdGU6OlFXZWJEb3dubG9hZEl0ZW1Qcml2YXRlKToKKyAgICAgICAg
KFFXZWJEb3dubG9hZEl0ZW06OlFXZWJEb3dubG9hZEl0ZW0pOgorICAgICAgICAoUVdlYkRvd25s
b2FkSXRlbTo6flFXZWJEb3dubG9hZEl0ZW0pOgorICAgICAgICAoUVdlYkRvd25sb2FkSXRlbTo6
dXJsKToKKyAgICAgICAgKFFXZWJEb3dubG9hZEl0ZW06OmRlc3RpbmF0aW9uUGF0aCk6CisgICAg
ICAgIChRV2ViRG93bmxvYWRJdGVtOjpzZXREZXN0aW5hdGlvblBhdGgpOgorICAgICAgICAoUVdl
YkRvd25sb2FkSXRlbTo6c3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAoUVdlYkRvd25sb2Fk
SXRlbTo6bWltZVR5cGUpOgorICAgICAgICAoUVdlYkRvd25sb2FkSXRlbTo6ZXhwZWN0ZWRDb250
ZW50TGVuZ3RoKToKKyAgICAgICAgKFFXZWJEb3dubG9hZEl0ZW06OnRvdGFsQnl0ZXNSZWNlaXZl
ZCk6CisgICAgICAgIChRV2ViRG93bmxvYWRJdGVtOjpjYW5jZWwpOgorICAgICAgICAoUVdlYkRv
d25sb2FkSXRlbTo6c3RhcnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdlYmRvd25s
b2FkaXRlbS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F3ZWJkb3dubG9h
ZGl0ZW1fcC5oOiBBZGRlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OnN0YXJ0VHJhbnNm
ZXIpOiBRdCBvbmx5IGZ1bmN0aW9uIGFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRQcm94eS5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDog
QWRkZWQgUXQgc3BlY2lmaWMgZnVuY3Rpb24gdG8gY2FsbCBkb3dubG9hZFJlcXVlc3RlZCBmcm9t
IFF0V2ViUGFnZVByb3h5LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0Ojpkb3dubG9hZCk6CisgICAgICAgIFVzaW5nIFdl
YlBhZ2VQcm94eTo6ZG93bmxvYWRSZXF1ZXN0ZWQgdG8gYm9vdHN0cmFwIGEgZG93bmxvYWQgdGhy
b3VnaCBQYWdlQ2xpZW50LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbik6
CisgICAgICAgIFVzaW5nIGRvd25sb2FkUmVxdWVzdGVkKCkgdG8gYm9vdHN0cmFwIGEgZG93bmxv
YWQgdGhyb3VnaCBQYWdlQ2xpZW50LgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRv
d25sb2FkUmVxdWVzdGVkKTogQ2FsbHMgUGFnZUNsaWVudDo6ZG93bmxvYWRSZXF1ZXN0ZWQoKS4K
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisKKyAgICAgICAgKiBVSVByb2Nl
c3MvcXQvUXREb3dubG9hZE1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFF0RG93bmxvYWRN
YW5hZ2VyOjpkb3dubG9hZFJlY2VpdmVkUmVzcG9uc2UpOiBXaWxsIHJlYWNoIFF0V2ViUGFnZVBy
b3h5OjpkaWRSZWNlaXZlRG93bmxvYWRSZXNwb25zZS4KKyAgICAgICAgKFF0RG93bmxvYWRNYW5h
Z2VyOjpkb3dubG9hZENyZWF0ZWREZXN0aW5hdGlvbik6CisgICAgICAgIChRdERvd25sb2FkTWFu
YWdlcjo6ZG93bmxvYWRGaW5pc2hlZCk6CisgICAgICAgIChRdERvd25sb2FkTWFuYWdlcjo6ZG93
bmxvYWRGYWlsZWQpOgorICAgICAgICAoUXREb3dubG9hZE1hbmFnZXI6OmRvd25sb2FkRGF0YVJl
Y2VpdmVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXREb3dubG9hZE1hbmFnZXIuaDogQWRk
ZWQuCisgICAgICAgIEJvb3RzdHJhcCBvdXIgV0tDb250ZXh0RG93bmxvYWRDbGllbnQgYW5kIHNl
dCBpdHMgY2FsbGJhY2tzLgorICAgICAgICBUaGlzIGVudGl0eSB3aWxsIGFsc28gaGFuZGxlIGFs
bCBkb3dubG9hZHMgYW5kIGtlZXAgYSBtYXAgb2YgdGhlbS4KKyAgICAgICAgSXQgd2lsbCBiZSBr
ZXB0IGFsaXZlIHRvZ2V0aGVyIHdpdGggdGhlIFdlYkNvbnRleHQgYXMgYSBzdGF0aWMgbWVtYmVy
CisgICAgICAgIG9mIFF0V2ViUGFnZVByb3h5LCBzbyB3ZSBjYW4ga2VlcCBpdCBhY3Jvc3Mgc2V2
ZXJhbCBXZWJQYWdlcyBhbmQsIHRoZXJlZm9yZSwKKyAgICAgICAgV2ViVmlld3MuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoUXRXZWJQYWdl
UHJveHk6OmRlZmF1bHRXS0NvbnRleHQpOgorICAgICAgICAoUXRXZWJQYWdlUHJveHk6On5RdFdl
YlBhZ2VQcm94eSk6CisgICAgICAgIChRdFdlYlBhZ2VQcm94eTo6ZG93bmxvYWRSZXF1ZXN0ZWQp
OgorICAgICAgICAoUXRXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVEb3dubG9hZFJlc3BvbnNlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaDoKKyAgICAgICAgRnJvbSBu
b3cgb24gaXQgd2lsbCBrZWVwIGEgc3RhdGljIFF0RG93bmxvYWRNYW5hZ2VyIHRvIGxpdmUgdG9n
ZXRoZXIKKyAgICAgICAgd2l0aCB0aGUgZGVmYXVsdCBXZWJDb250ZXh0LiBJdCBpbXBsZW1lbnRz
IFBhZ2VDbGllbnQ6OmRvd25sb2FkUmVxdWVzdGVkLgorICAgICAgICBRdFdlYlBhZ2VQcm94eTo6
ZGlkUmVjZWl2ZURvd25sb2FkUmVzcG9uc2Ugd2lsbCB0aGUgdmlldydzIHNpZ25hbCBkb3dubG9h
ZFJlcXVlc3RlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9xdC9xd2ViZXJyb3IuY3BwOgorICAg
ICAgICAoUVdlYkVycm9yOjpkZXNjcmlwdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL3F0L3F3
ZWJlcnJvci5oOgorICAgICAgICAoUVdlYkVycm9yOjplcnJvckNvZGVBc0Rvd25sb2FkRXJyb3Ip
OgorICAgICAgICBBZGQgRG93bmxvYWQgZXJyb3IgaGFuZGxpbmcgdG8gUVdlYkVycm9yIGFuZCBh
IG5ldyBBUEkKKyAgICAgICAgdG8gcmV0cmlldmUgdGhlIGVycm9yIGRlc2NyaXB0aW9uIGZyb20g
dGhlIG9yaWdpbmFsIFJlc291cmNlRXJyb3IuCisgICAgICAgIEFsc28sIGl0IG5vdyBoYXMgUVdl
YkRvd25sb2FkSXRlbTo6RG93bmxvYWRFcnJvciBlcnJvckNvZGVBc0Rvd25sb2FkRXJyb3IoKQor
ICAgICAgICB0aGF0IHJldHVybnMgdGhlIGVycm9yIGNvZGUgYXMgYSBEb3dubG9hZEVycm9yLgor
CisgICAgICAgICogV2ViS2l0Mi5wcm86CisgICAgICAgICogV2ViS2l0MkFQSS5wcmk6CisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRv
d25sb2FkTWFuYWdlcjo6c3RhcnRUcmFuc2Zlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg6CisgICAgICAgIEFkZGluZyBRdCBzcGVjaWZpYyBzdGFy
dFRyYW5zZmVyIGZ1bmN0aW9uLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQv
RG93bmxvYWRRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpzdGFydCk6CisgICAg
ICAgIChXZWJLaXQ6OkRvd25sb2FkOjpzdGFydFdpdGhIYW5kbGUpOgorICAgICAgICAoV2ViS2l0
OjpEb3dubG9hZDo6ZGlkRGVjaWRlRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpEb3du
bG9hZDo6c3RhcnRUcmFuc2Zlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQv
UXRGaWxlRG93bmxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlF0RmlsZURvd25sb2FkZXI6
OmluaXQpOiBzdGFydCgpIHdhcyByZW5hbWVkIHRvIGluaXQoKS4KKyAgICAgICAgKFdlYktpdDo6
UXRGaWxlRG93bmxvYWRlcjo6ZGV0ZXJtaW5lRmlsZW5hbWUpOgorICAgICAgICBDYWxsaW5nIG9u
UmVhZHlSZWFkKCkgaGVyZSB3YXMgdW5uZWNlc3NhcnkgYW5kIGl0IHdhcyB0cmlnZ2VyaW5nIHRo
ZSBvdmVyYWxsCisgICAgICAgIGRvd25sb2FkIHByb2Nlc3MgZXZlbiBiZWZvcmUgRG93bmxvYWRN
YW5hZ2VyIGZpbmlzaGVkIHN0YXJ0RG93bmxvYWQoKS4gVGhpcworICAgICAgICB3YXMgbGVhZGlu
ZyB0byBhIERvd25sb2FkTWFuYWdlciB3aXRoIGFuIGVtcHR5IGxpc3Qgb2YgZG93bmxvYWRzLgor
ICAgICAgICAoV2ViS2l0OjpRdEZpbGVEb3dubG9hZGVyOjpzdGFydFRyYW5zZmVyKTogZGVjaWRl
ZERlc3RpbmF0aW9uKCkgYmVjYW1lIHN0YXJ0VHJhbnNmZXIoKS4KKyAgICAgICAgKFdlYktpdDo6
UXRGaWxlRG93bmxvYWRlcjo6YWJvcnREb3dubG9hZFdyaXRpbmdBbmRFbWl0RXJyb3IpOgorICAg
ICAgICAoV2ViS2l0OjpRdEZpbGVEb3dubG9hZGVyOjpvblJlYWR5UmVhZCk6CisgICAgICAgIChX
ZWJLaXQ6OlF0RmlsZURvd25sb2FkZXI6Om9uRmluaXNoZWQpOgorICAgICAgICAoV2ViS2l0OjpR
dEZpbGVEb3dubG9hZGVyOjpjYW5jZWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvRG93bmxvYWRz
L3F0L1F0RmlsZURvd25sb2FkZXIuaDoKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnN0YXJ0VHJhbnNmZXIpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgQWRkaW5nIFF0IHNwZWNpZmljIG1lc3NhZ2Ug
U3RhcnRUcmFuc2ZlciBhbmQgaGFuZGxpbmcgZnVuY3Rpb24uCisKKzIwMTEtMTAtMTkgIEplc3Vz
IFNhbmNoZXotUGFsZW5jaWEgIDxqZXN1cy5wYWxlbmNpYUBvcGVuYm9zc2Eub3JnPgorCisgICAg
ICAgIFtRdF1bV0syXSBEb3dubG9hZCBzdXBwb3J0IGFuZCBBUEkgaW4gVUlQcm9jZXNzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODk2MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisKKworCisgICAgICAgIEFkZGVkIFF0
IHNwZWNpZmljIGZ1bmN0aW9ucyB0byBrZWVwIGEgV2ViUGFnZVByb3h5KiBpbiBhIERvd25sb2Fk
UHJveHkuCisgICAgICAgIFRoaXMgaXMgbmVjZXNzYXJ5IGR1ZSB0byBvdXIgQVBJIGRlc2lnbiB0
aGF0IGhhbmRsZSBkb3dubG9hZHMgdGhyb3VnaCBvdXIgV2ViVmlldy4KKyAgICAgICAgSG93ZXZl
ciwgaW4gV2ViS2l0MiBhIGRvd25sb2FkIGlzIGNvbnRleHQtcmVsYXRlZCBhbmQgbm90IHBhZ2Ug
cmVsYXRlZC4gSW4gb3JkZXIgdG8KKyAgICAgICAga25vdyB3aGljaCBXZWJWaWV3IG5lZWRzIHRv
IHJlY2VpdmUgYSBnaXZlbiBkb3dubG9hZCdzIGRvd25sb2FkUmVxdWVzdGVkIHNpZ25hbCB3ZQor
ICAgICAgICBuZWVkIHRvIGtlZXAgdGhpcyBXZWJQYWdlIGluZm9ybWF0aW9uLCBzbyB3ZSBjYW4g
Z2V0IHRvIGl0cyBQYWdlQ2xpZW50LiBJbiBvdXIgaW1wbGVtZW50YXRpb24KKyAgICAgICAgdGhp
cyB3aWxsIGxlYWQgdG8gYSBRdFdlYlBhZ2VQcm94eSB3aGljaCB3aWxsIHRoZW4gbGVhZCB0byB0
aGUgY29ycmVjdCBXZWJWaWV3LgorCisKKworCiAyMDExLTEwLTE5ICBDYWlvIE1hcmNlbG8gZGUg
T2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAg
W1F0XSBbV0syXSBSZW5hbWUgZmlsZXMgYW5kIGNsYXNzZXMgdG8gZm9sbG93IGNvbnZlbnRpb25z
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L2RlY2xhcmF0aXZlL3BsdWdpbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L3F0L2RlY2xhcmF0aXZlL3BsdWdpbi5jcHAKaW5kZXggY2YzYmRkNGExMmVi
Njk2NTcyNGRiOWE2NWVjN2E1M2ViZTY0OWM1Ni4uYTUxZWRiYzRkOGM1MjkwZTg1OWYyYTQwNzJk
ZGZlNjI5M2QxYzRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9kZWNsYXJhdGl2ZS9w
bHVnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvZGVjbGFyYXRpdmUvcGx1Z2luLmNwcApA
QCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgInFkZXNrdG9wd2Vidmlldy5oIgogI2luY2x1ZGUg
InF0b3VjaHdlYnBhZ2UuaCIKICNpbmNsdWRlICJxdG91Y2h3ZWJ2aWV3LmgiCisjaW5jbHVkZSAi
cXdlYmRvd25sb2FkaXRlbS5oIgogI2luY2x1ZGUgInF3ZWJuYXZpZ2F0aW9uY29udHJvbGxlci5o
IgogI2luY2x1ZGUgInF3ZWJwcmVmZXJlbmNlcy5oIgogCkBAIC01NSw2ICs1Niw3IEBAIHB1Ymxp
YzoKICAgICAgICAgcW1sUmVnaXN0ZXJVbmNyZWF0YWJsZVR5cGU8UVdlYlByZWZlcmVuY2VzPih1
cmksIDMsIDAsICJXZWJQcmVmZXJlbmNlcyIsIFFPYmplY3Q6OnRyKCJDYW5ub3QgY3JlYXRlIHNl
cGFyYXRlIGluc3RhbmNlIG9mIFdlYlByZWZlcmVuY2VzIikpOwogICAgICAgICBxbWxSZWdpc3Rl
clVuY3JlYXRhYmxlVHlwZTxRVG91Y2hXZWJQYWdlPih1cmksIDMsIDAsICJUb3VjaFdlYlBhZ2Ui
LCBRT2JqZWN0Ojp0cigiQ2Fubm90IGNyZWF0ZSBzZXBhcmF0ZSBpbnN0YW5jZSBvZiBUb3VjaFdl
YlBhZ2UsIHVzZSBUb3VjaFdlYlZpZXciKSk7CiAgICAgICAgIHFtbFJlZ2lzdGVyVW5jcmVhdGFi
bGVUeXBlPFFOZXR3b3JrUmVwbHk+KHVyaSwgMywgMCwgIk5ldHdvcmtSZXBseSIsIFFPYmplY3Q6
OnRyKCJDYW5ub3QgY3JlYXRlIHNlcGFyYXRlIGluc3RhbmNlIG9mIE5ldHdvcmtSZXBseSIpKTsK
KyAgICAgICAgcW1sUmVnaXN0ZXJVbmNyZWF0YWJsZVR5cGU8UVdlYkRvd25sb2FkSXRlbT4odXJp
LCA1LCAwLCAiRG93bmxvYWRJdGVtIiwgUU9iamVjdDo6dHIoIkNhbm5vdCBjcmVhdGUgc2VwYXJh
dGUgaW5zdGFuY2Ugb2YgRG93bmxvYWRJdGVtIikpOwogI2VuZGlmCiAgICAgfQogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9XZWJDb3JlQXJndW1lbnRDb2RlcnNRdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzUXQuY3Bw
CmluZGV4IDFmYzE1YzU5NmY2ZmNmN2Q5ZjhkMzNmZGVlYjMzYzFlZWUyODZhN2IuLjk1MGQzNzJk
MmRkYzdlNDZmODA3NzgzOTUwZTBjMjg3NmUzN2RiNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9xdC9XZWJDb3JlQXJndW1lbnRDb2RlcnNRdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL3F0L1dlYkNvcmVBcmd1bWVudENvZGVyc1F0LmNwcApAQCAtNjEsNiArNjEs
NyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXNwb25zZT46OmVuY29kZShBcmd1bWVu
dEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFJlcwogICAgIGVuY29kZXItPmVuY29kZShyZXNvdXJj
ZVJlc3BvbnNlLm1pbWVUeXBlKCkpOwogICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNfY2FzdDxp
bnQ2NF90PihyZXNvdXJjZVJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpKSk7CiAgICAg
ZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNlUmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpKTsKKyAg
ICBlbmNvZGVyLT5lbmNvZGUocmVzb3VyY2VSZXNwb25zZS5zdWdnZXN0ZWRGaWxlbmFtZSgpKTsK
IH0KIAogYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjpkZWNvZGUoQXJndW1l
bnREZWNvZGVyKiBkZWNvZGVyLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlKQpA
QCAtODcsNiArODgsMTEgQEAgYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+Ojpk
ZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBSZXNvdXJjZVIKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIHJlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUodGV4dEVuY29kaW5nTmFt
ZSk7CiAKKyAgICBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWU7CisgICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGUoc3VnZ2VzdGVkRmlsZW5hbWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmVz
cG9uc2Uuc2V0U3VnZ2VzdGVkRmlsZW5hbWUoc3VnZ2VzdGVkRmlsZW5hbWUpOworCiAgICAgcmVz
b3VyY2VSZXNwb25zZSA9IHJlc3BvbnNlOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9XS1ZpZXcuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvV0tWaWV3LmgKaW5kZXggZjY4OTJiZDVjOTc2YzUzNWI2NTRj
YWExOTZiY2Y3N2Q5YmQ0ZGQ1NC4uY2UzZGJmOTI4NGFmZWY4YjVkMDViYWIyNmNhMDU2YjYyZmQx
M2U1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9XS1ZpZXcu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L1dLVmlldy5oCkBAIC0yNCw2
ICsyNCw3IEBACiAjaW5jbHVkZSA8V2ViS2l0Mi9xZGVza3RvcHdlYnZpZXcuaD4KICNpbmNsdWRl
IDxXZWJLaXQyL3F0b3VjaHdlYnZpZXcuaD4KICNpbmNsdWRlIDxXZWJLaXQyL3F0b3VjaHdlYnBh
Z2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL3F3ZWJkb3dubG9hZGl0ZW0uaD4KICNpbmNsdWRlIDxX
ZWJLaXQyL3F3ZWJuYXZpZ2F0aW9uY29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYktpdDIvcXdl
YnByZWZlcmVuY2VzLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcAppbmRleCAxODZiOWQ3YmJjMDgwOGU4MTVlN2EwZmU0NmY4
M2E3MThkMDg5NzgxLi4zNjU5Zjk5NzY2ZTMwYTU5ZjhiZGVkYmNjYWY2NDY4YjU2YWU4NTM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZp
ZXcuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNsdWRlICJVdGlsc1F0LmgiCiAjaW5jbHVk
ZSAicWRlc2t0b3B3ZWJ2aWV3X3AuaCIKKyNpbmNsdWRlICJxd2ViZG93bmxvYWRpdGVtLmgiCiAj
aW5jbHVkZSAicXdlYmVycm9yLmgiCiAjaW5jbHVkZSA8UUZpbGVEaWFsb2c+CiAjaW5jbHVkZSA8
UUdyYXBoaWNzU2NlbmVFdmVudD4KQEAgLTMzLDYgKzM0LDcgQEAKICNpbmNsdWRlIDxRdERlY2xh
cmF0aXZlL3FzZ2l0ZW0uaD4KICNpbmNsdWRlIDxRdERlY2xhcmF0aXZlL3FzZ3ZpZXcuaD4KICNp
bmNsdWRlIDxRdEd1aS9RQ3Vyc29yPgorI2luY2x1ZGUgPFF0R3VpL1FEZXNrdG9wU2VydmljZXM+
CiAjaW5jbHVkZSA8UXRHdWkvUURyYWc+CiAjaW5jbHVkZSA8UXRHdWkvUUZvY3VzRXZlbnQ+CiAj
aW5jbHVkZSA8UXRHdWkvUUd1aUFwcGxpY2F0aW9uPgpAQCAtNTAyLDYgKzUwNCwxNSBAQCB2b2lk
IFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OmRpZE1vdXNlTW92ZU92ZXJFbGVtZW50KGNvbnN0IFFV
cmwmIGxpbmtVUkwsIGNvbnN0CiAgICAgZW1pdCBxLT5saW5rSG92ZXJlZChsYXN0SG92ZXJlZFVS
TCwgbGFzdEhvdmVyZWRUaXRsZSk7CiB9CiAKK3ZvaWQgUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6
ZG93bmxvYWRSZXF1ZXN0ZWQoUVdlYkRvd25sb2FkSXRlbSogZG93bmxvYWRJdGVtKQoreworICAg
IGlmICghZG93bmxvYWRJdGVtKQorICAgICAgICByZXR1cm47CisKKyAgICBRRGVjbGFyYXRpdmVF
bmdpbmU6OnNldE9iamVjdE93bmVyc2hpcChkb3dubG9hZEl0ZW0sIFFEZWNsYXJhdGl2ZUVuZ2lu
ZTo6SmF2YVNjcmlwdE93bmVyc2hpcCk7CisgICAgZW1pdCBxLT5kb3dubG9hZFJlcXVlc3RlZChk
b3dubG9hZEl0ZW0pOworfQorCiBzdGF0aWMgUXRQb2xpY3lJbnRlcmZhY2U6OlBvbGljeUFjdGlv
biB0b1BvbGljeUFjdGlvbihRRGVza3RvcFdlYlZpZXc6Ok5hdmlnYXRpb25Qb2xpY3kgcG9saWN5
KQogewogICAgIHN3aXRjaCAocG9saWN5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuaAppbmRleCBkOTNkNWQ4NDRlNGQyMTk1ZjVjZTdi
ODNiMDMyMTBlNGY1NmMwODA0Li5hYzkxNjM1MDI1NDI2NWEwMDk4NWI3MWNjYzRhN2I5NDgyYWQ1
NzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9w
d2Vidmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3
ZWJ2aWV3LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgog
CiBjbGFzcyBRRGVza3RvcFdlYlZpZXdQcml2YXRlOworY2xhc3MgUVdlYkRvd25sb2FkSXRlbTsK
IGNsYXNzIFFXZWJOYXZpZ2F0aW9uQ29udHJvbGxlcjsKIGNsYXNzIFFXZWJQcmVmZXJlbmNlczsK
IApAQCAtNzAsNyArNzEsOCBAQCBwdWJsaWM6CiAgICAgZW51bSBFcnJvclR5cGUgewogICAgICAg
ICBFbmdpbmVFcnJvciwKICAgICAgICAgTmV0d29ya0Vycm9yLAotICAgICAgICBIdHRwRXJyb3IK
KyAgICAgICAgSHR0cEVycm9yLAorICAgICAgICBEb3dubG9hZEVycm9yCiAgICAgfTsKIAogICAg
IFFEZXNrdG9wV2ViVmlldyhRU0dJdGVtKiBwYXJlbnQgPSAwKTsKQEAgLTk1LDYgKzk3LDcgQEAg
UV9TSUdOQUxTOgogICAgIHZvaWQgbG9hZFByb2dyZXNzQ2hhbmdlZChpbnQgcHJvZ3Jlc3MpOwog
ICAgIHZvaWQgdXJsQ2hhbmdlZChjb25zdCBRVXJsJiB1cmwpOwogICAgIHZvaWQgbGlua0hvdmVy
ZWQoY29uc3QgUVVybCYgdXJsLCBjb25zdCBRU3RyaW5nJiB0aXRsZSk7CisgICAgdm9pZCBkb3du
bG9hZFJlcXVlc3RlZChRV2ViRG93bmxvYWRJdGVtKiBkb3dubG9hZEl0ZW0pOwogCiBwcm90ZWN0
ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGtleVByZXNzRXZlbnQoUUtleUV2ZW50Kik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlld19wLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlld19wLmgKaW5k
ZXggYzBjNzJmZWQ4MTBmMDQyY2NjMWYxNDZmNjJkNTU3YWU1ODRjYjdlZi4uYTgyYWRlYzMwMTdj
MTkwMzMwMmRjYmYwNWU1Y2NlOWI3NzU0MDhjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXdfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3X3AuaApAQCAtOTAsNiArOTAsNyBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgUUpTRW5naW5lKiBlbmdpbmUoKTsKIAogICAgIHZpcnR1YWwg
dm9pZCBjaG9vc2VGaWxlcyhXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmLCBjb25zdCBRU3Ry
aW5nTGlzdCYgc2VsZWN0ZWRGaWxlTmFtZXMsIFF0Vmlld0ludGVyZmFjZTo6RmlsZUNob29zZXJU
eXBlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWRSZXF1ZXN0ZWQoUVdlYkRvd25sb2FkSXRl
bSogZG93bmxvYWRJdGVtKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRNb3VzZU1vdmVPdmVyRWxl
bWVudChjb25zdCBRVXJsJiwgY29uc3QgUVN0cmluZyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJkb3dubG9hZGl0ZW0uY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxvYWRpdGVtLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
NTkwYjc0OGNkMDg5MzUzMjVkZDUwNDg1ZmJlNzhkNTg5MzkxOTQ1Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxvYWRpdGVtLmNwcApA
QCAtMCwwICsxLDk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0
aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgInF3ZWJkb3dubG9hZGl0ZW0uaCIKKworI2luY2x1ZGUgIkRvd25sb2FkUHJveHku
aCIKKyNpbmNsdWRlICJxd2ViZG93bmxvYWRpdGVtX3AuaCIKKworUVdlYkRvd25sb2FkSXRlbVBy
aXZhdGU6OlFXZWJEb3dubG9hZEl0ZW1Qcml2YXRlKFFXZWJEb3dubG9hZEl0ZW0qIHFxKQorICAg
IDogcShxcSkKKyAgICAsIGRvd25sb2FkUHJveHkoMCkKKyAgICAsIGV4cGVjdGVkQ29udGVudExl
bmd0aCgwKQorICAgICwgdG90YWxCeXRlc1JlY2VpdmVkKDApCit7Cit9CisKK1FXZWJEb3dubG9h
ZEl0ZW06OlFXZWJEb3dubG9hZEl0ZW0oUU9iamVjdCogcGFyZW50KQorICAgIDogUU9iamVjdChw
YXJlbnQpCisgICAgLCBkKG5ldyBRV2ViRG93bmxvYWRJdGVtUHJpdmF0ZSh0aGlzKSkKK3sKK30K
KworUVdlYkRvd25sb2FkSXRlbTo6flFXZWJEb3dubG9hZEl0ZW0oKQoreworICAgIGRlbGV0ZSBk
OworfQorCitRVXJsIFFXZWJEb3dubG9hZEl0ZW06OnVybCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGQtPnNvdXJjZVVybDsKK30KKworUVN0cmluZyBRV2ViRG93bmxvYWRJdGVtOjpkZXN0aW5hdGlv
blBhdGgoKSBjb25zdAoreworICAgIHJldHVybiBkLT5kZXN0aW5hdGlvblBhdGg7Cit9CisKK3Zv
aWQgUVdlYkRvd25sb2FkSXRlbTo6c2V0RGVzdGluYXRpb25QYXRoKGNvbnN0IFFTdHJpbmcmIGRl
c3RpbmF0aW9uKQoreworICAgIGQtPmRlc3RpbmF0aW9uUGF0aCA9IGRlc3RpbmF0aW9uOworfQor
CitRU3RyaW5nIFFXZWJEb3dubG9hZEl0ZW06OnN1Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gZC0+c3VnZ2VzdGVkRmlsZW5hbWU7Cit9CisKK1FTdHJpbmcgUVdlYkRvd25s
b2FkSXRlbTo6bWltZVR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBkLT5taW1lVHlwZTsKK30K
KworcXVpbnQ2NCBRV2ViRG93bmxvYWRJdGVtOjpleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBjb25z
dAoreworICAgIHJldHVybiBkLT5leHBlY3RlZENvbnRlbnRMZW5ndGg7Cit9CisKK3F1aW50NjQg
UVdlYkRvd25sb2FkSXRlbTo6dG90YWxCeXRlc1JlY2VpdmVkKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gZC0+dG90YWxCeXRlc1JlY2VpdmVkOworfQorCit2b2lkIFFXZWJEb3dubG9hZEl0ZW06OmNh
bmNlbCgpCit7CisgICAgQVNTRVJUKGQtPmRvd25sb2FkUHJveHkpOworICAgIGQtPmRvd25sb2Fk
UHJveHktPmNhbmNlbCgpOworfQorCit2b2lkIFFXZWJEb3dubG9hZEl0ZW06OnN0YXJ0KCkKK3sK
KyAgICBBU1NFUlQoIWQtPnN1Z2dlc3RlZEZpbGVuYW1lLmlzRW1wdHkoKSk7CisKKyAgICBpZiAo
ZC0+ZGVzdGluYXRpb25QYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgZC0+ZGVzdGluYXRpb25QYXRo
ID0gZC0+c3VnZ2VzdGVkRmlsZW5hbWU7CisKKyAgICBkLT5kb3dubG9hZFByb3h5LT5zdGFydFRy
YW5zZmVyKGQtPmRlc3RpbmF0aW9uUGF0aCk7Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYmRvd25sb2FkaXRlbS5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxvYWRpdGVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGJlYjk3Nzdj
MzQxMDI1MzY5ZTk5M2E0NWZlOGNhYmFjZmQ4OTYzOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYmRvd25sb2FkaXRlbS5oCkBAIC0wLDAgKzEs
ODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29y
IGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIHF3ZWJkb3dubG9hZGl0ZW1faAorI2Rl
ZmluZSBxd2ViZG93bmxvYWRpdGVtX2gKKworI2luY2x1ZGUgInF3ZWJraXRnbG9iYWwuaCIKKyNp
bmNsdWRlIDxRT2JqZWN0PgorI2luY2x1ZGUgPFFVcmw+CisKK2NsYXNzIFFXZWJEb3dubG9hZEl0
ZW1Qcml2YXRlOworY2xhc3MgUVdlYkVycm9yOworCitRVF9CRUdJTl9OQU1FU1BBQ0UKK2NsYXNz
IFFTdHJpbmc7CitRVF9FTkRfTkFNRVNQQUNFCisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3Mg
UXREb3dubG9hZE1hbmFnZXI7Cit9CisKK2NsYXNzIFFXRUJLSVRfRVhQT1JUIFFXZWJEb3dubG9h
ZEl0ZW0gOiBwdWJsaWMgUU9iamVjdCB7CisgICAgUV9PQkpFQ1QKKyAgICBRX1BST1BFUlRZKHF1
aW50NjQgZXhwZWN0ZWRDb250ZW50TGVuZ3RoIFJFQUQgZXhwZWN0ZWRDb250ZW50TGVuZ3RoIENP
TlNUQU5UIEZJTkFMKQorICAgIFFfUFJPUEVSVFkoUVN0cmluZyBkZXN0aW5hdGlvblBhdGggUkVB
RCBkZXN0aW5hdGlvblBhdGggV1JJVEUgc2V0RGVzdGluYXRpb25QYXRoKQorICAgIFFfUFJPUEVS
VFkoUVN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSBSRUFEIHN1Z2dlc3RlZEZpbGVuYW1lIENPTlNU
QU5UIEZJTkFMKQorICAgIFFfUFJPUEVSVFkocXVpbnQ2NCB0b3RhbEJ5dGVzUmVjZWl2ZWQgUkVB
RCB0b3RhbEJ5dGVzUmVjZWl2ZWQgTk9USUZZIHRvdGFsQnl0ZXNSZWNlaXZlZENoYW5nZWQgRklO
QUwpCisgICAgUV9QUk9QRVJUWShRVXJsIHVybCBSRUFEIHVybCBDT05TVEFOVCBGSU5BTCkKKyAg
ICBRX0VOVU1TKERvd25sb2FkRXJyb3IpCitwdWJsaWM6CisgICAgdmlydHVhbCB+UVdlYkRvd25s
b2FkSXRlbSgpOworCisgICAgZW51bSBEb3dubG9hZEVycm9yIHsKKyAgICAgICAgQWJvcnRlZCA9
IDAsCisgICAgICAgIENhbm5vdFdyaXRlVG9GaWxlLAorICAgICAgICBDYW5ub3RPcGVuRmlsZSwK
KyAgICAgICAgRGVzdGluYXRpb25BbHJlYWR5RXhpc3RzLAorICAgICAgICBDYW5jZWxsZWQsCisg
ICAgICAgIENhbm5vdERldGVybWluZUZpbGVuYW1lLAorICAgICAgICBOZXR3b3JrRmFpbHVyZQor
ICAgIH07CisKKyAgICBRVXJsIHVybCgpIGNvbnN0OworICAgIFFTdHJpbmcgZGVzdGluYXRpb25Q
YXRoKCkgY29uc3Q7CisgICAgUVN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSgpIGNvbnN0OworICAg
IFFTdHJpbmcgbWltZVR5cGUoKSBjb25zdDsKKyAgICBxdWludDY0IGV4cGVjdGVkQ29udGVudExl
bmd0aCgpIGNvbnN0OworICAgIHF1aW50NjQgdG90YWxCeXRlc1JlY2VpdmVkKCkgY29uc3Q7Cisg
ICAgdm9pZCBzZXREZXN0aW5hdGlvblBhdGgoY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb24pOwor
CitwdWJsaWMgUV9TTE9UUzoKKyAgICB2b2lkIHN0YXJ0KCk7CisgICAgdm9pZCBjYW5jZWwoKTsK
KworUV9TSUdOQUxTOgorICAgIHZvaWQgZGVzdGluYXRpb25GaWxlQ3JlYXRlZChjb25zdCBRU3Ry
aW5nJiBkZXN0aW5hdGlvblBhdGgpOworICAgIHZvaWQgdG90YWxCeXRlc1JlY2VpdmVkQ2hhbmdl
ZChxdWludDY0IGJ5dGVzUmVjZWl2ZWQpOworICAgIHZvaWQgc3VjY2VlZGVkKCk7CisgICAgdm9p
ZCBmYWlsZWQoUVdlYkRvd25sb2FkSXRlbTo6RG93bmxvYWRFcnJvciBlcnJvciwgY29uc3QgUVVy
bCYgdXJsLCBjb25zdCBRU3RyaW5nJiBkZXNjcmlwdGlvbik7CisKK3ByaXZhdGU6CisgICAgUVdl
YkRvd25sb2FkSXRlbShRT2JqZWN0KiBwYXJlbnQgPSAwKTsKKyAgICBRV2ViRG93bmxvYWRJdGVt
UHJpdmF0ZSogZDsKKworICAgIGZyaWVuZCBjbGFzcyBXZWJLaXQ6OlF0RG93bmxvYWRNYW5hZ2Vy
OworICAgIGZyaWVuZCBjbGFzcyBRdFdlYlBhZ2VQcm94eTsKK307CisKKyNlbmRpZiAvKiBxd2Vi
ZG93bmxvYWRpdGVtX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvcXdlYmRvd25sb2FkaXRlbV9wLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3F3ZWJkb3dubG9hZGl0ZW1fcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiOGMyNTJhNzc3ZDdkODI0ZGM5
Mjg4OWFkOTFhZmYyYWRhYTEwZmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3F3ZWJkb3dubG9hZGl0ZW1fcC5oCkBAIC0wLDAgKzEsNTMgQEAKKy8q
CisgICAgQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
CisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyovCisKKworI2lmbmRlZiBxd2ViZG93bmxvYWRpdGVtX3BfaAorI2RlZmlu
ZSBxd2ViZG93bmxvYWRpdGVtX3BfaAorCisjaW5jbHVkZSAicXdlYmRvd25sb2FkaXRlbS5oIgor
I2luY2x1ZGUgPFFVcmw+CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgRG93bmxvYWRQcm94
eTsKK30KKworY2xhc3MgUVdlYkRvd25sb2FkSXRlbVByaXZhdGUgOiBwdWJsaWMgUU9iamVjdCB7
CisgICAgUV9PQkpFQ1QKK3B1YmxpYzoKKyAgICBRV2ViRG93bmxvYWRJdGVtUHJpdmF0ZShRV2Vi
RG93bmxvYWRJdGVtKik7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShRV2ViRG93bmxv
YWRJdGVtKiBkb3dubG9hZCkgeyBlbWl0IHJlY2VpdmVkUmVzcG9uc2UoZG93bmxvYWQpOyB9CisK
KyAgICBRV2ViRG93bmxvYWRJdGVtKiBxOworCisgICAgV2ViS2l0OjpEb3dubG9hZFByb3h5KiBk
b3dubG9hZFByb3h5OworCisgICAgUVVybCBzb3VyY2VVcmw7CisgICAgUVN0cmluZyBzdWdnZXN0
ZWRGaWxlbmFtZTsKKyAgICBRU3RyaW5nIGRlc3RpbmF0aW9uUGF0aDsKKyAgICBRU3RyaW5nIG1p
bWVUeXBlOworICAgIHF1aW50NjQgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOworICAgIHF1aW50NjQg
dG90YWxCeXRlc1JlY2VpdmVkOworCitRX1NJR05BTFM6CisgICAgdm9pZCByZWNlaXZlZFJlc3Bv
bnNlKFFXZWJEb3dubG9hZEl0ZW0qKTsKK307CisKKyNlbmRpZiAvKiBxd2ViZG93bmxvYWRpdGVt
X3BfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRQcm94eS5jcHAKaW5kZXggYzkzYTZkZmJlNjliYmUzNmU2YjkyNDQ4ZjA0N2JiYmJlN2Q5
MmQ0Mi4uMjZhNTIxZjM5YmM3MWUyMTQ1ODc3MzIxOTY0ZGRjNjcyNzQxYjE3MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3Bw
CkBAIC0xODcsNSArMTg3LDE2IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkQ2FuY2VsKGNvbnN0
IENvcmVJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEpCiAgICAgbV93ZWJDb250ZXh0LT5k
b3dubG9hZEZpbmlzaGVkKHRoaXMpOwogfQogCisjaWYgUExBVEZPUk0oUVQpCit2b2lkIERvd25s
b2FkUHJveHk6OnN0YXJ0VHJhbnNmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKK3sKKyAgICBp
ZiAoIW1fd2ViQ29udGV4dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUUgKE11bHRp
LVdlYlByb2Nlc3MpOiBEb3dubG9hZHMgc2hvdWxkbid0IGJlIGhhbmRsZWQgaW4gdGhlIHdlYiBw
cm9jZXNzLgorICAgIG1fd2ViQ29udGV4dC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzOjpTdGFydFRyYW5zZmVyKG1fZG93bmxvYWRJRCwgZmlsZW5hbWUpKTsKK30KKyNl
bmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAppbmRleCA5OWRkYmVjMGNiYzRiYThm
NmQ5ZjQyMWY5ZGI2ODU1NTgyOGI5OWQ1Li5jMWVkYTFmZDE5MDdjOTk3ZGJhODNmZTMwYzQ3YjU2
NjJlNmYzOWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkUHJveHkuaApAQCAtNDMsNiArNDMsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
Y2xhc3MgV2ViQ29udGV4dDsKIGNsYXNzIFdlYkRhdGE7CitjbGFzcyBXZWJQYWdlUHJveHk7CiAK
IGNsYXNzIERvd25sb2FkUHJveHkgOiBwdWJsaWMgQVBJT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTYz
LDYgKzY0LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVEb3dubG9hZFByb3h5TWVz
c2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpB
cmd1bWVudERlY29kZXIqKTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jRG93bmxvYWRQcm94eU1l
c3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6
QXJndW1lbnREZWNvZGVyKiwgT3duUHRyPENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4mKTsKIAor
I2lmIFBMQVRGT1JNKFFUKQorICAgIHZvaWQgc3RhcnRUcmFuc2Zlcihjb25zdCBTdHJpbmcmIGZp
bGVuYW1lKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IERvd25sb2FkUHJveHko
V2ViQ29udGV4dCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFn
ZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCBk
MWUwYzU3NzlmOTBkNWJjY2NhMTBhMmRmNWIyMTYyNTA1OGJkZTBjLi4zYzFmNTVmOTdmMmMyYTc4
MTRkNTg2YzM3NTIwODk1YmM4MmQ2MjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmgKQEAgLTQ0LDYgKzQ0LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBzdHJ1Y3Qg
Vmlld3BvcnRBcmd1bWVudHM7CiB9CiAKKyNpZiBQTEFURk9STShRVCkKK2NsYXNzIFF0V2ViUGFn
ZVByb3h5OworI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBEcmF3aW5nQXJl
YVByb3h5OwpAQCAtMTAzLDYgKzEwNyw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShRVCkKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6OkludFNp
emUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmRab29tYWJsZUFyZWEoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBkb3dubG9hZFJlcXVlc3RlZChEb3dubG9hZFByb3h5KikgPSAwOwogI2VuZGlmCiAK
ICNpZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNvbnRleHQuY3BwCmluZGV4IGJlMDdjM2NkZjk5MDU4ZmZhMDJiZTY4YTQyOGI4ZmY5OTZl
OGU0YTguLjNlNTNkZmJhMTM4OTIxZDk1MmQwNjdjM2JlNDUwYmZkYWYxZGI3NTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKQEAgLTM4OSw2ICszODksMTEgQEAgRG93
bmxvYWRQcm94eSogV2ViQ29udGV4dDo6ZG93bmxvYWQoV2ViUGFnZVByb3h5KiBpbml0aWF0aW5n
UGFnZSwgY29uc3QgUmVzb3VyY2UKICAgICBEb3dubG9hZFByb3h5KiBkb3dubG9hZCA9IGNyZWF0
ZURvd25sb2FkUHJveHkoKTsKICAgICB1aW50NjRfdCBpbml0aWF0aW5nUGFnZUlEID0gaW5pdGlh
dGluZ1BhZ2UgPyBpbml0aWF0aW5nUGFnZS0+cGFnZUlEKCkgOiAwOwogCisjaWYgUExBVEZPUk0o
UVQpCisgICAgQVNTRVJUKGluaXRpYXRpbmdQYWdlKTsgLy8gT3VyIGRlc2lnbiBkb2VzIG5vdCBz
dXBwcG9ydCBkb3dubG9hZHMgd2l0aG91dCBhIFdlYlBhZ2UuCisgICAgaW5pdGlhdGluZ1BhZ2Ut
PmRvd25sb2FkUmVxdWVzdGVkKGRvd25sb2FkKTsKKyNlbmRpZgorCiAgICAgcHJvY2VzcygpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpEb3dubG9hZFJlcXVlc3QoZG93bmxvYWQtPmRvd25s
b2FkSUQoKSwgaW5pdGlhdGluZ1BhZ2VJRCwgcmVxdWVzdCksIDApOwogICAgIHJldHVybiBkb3du
bG9hZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXgg
Y2U2NGM1YzNmMjQ1ZDc3ZjQ2MzI5OWRiYWZhMzdkNWU1M2NjZDM4YS4uYzZhOWRlZmI3ZTYxNWFj
YzBmOThkYzY3NzhiN2QwZWNmZDA5NTZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKQEAgLTk2NCw3ICs5NjQsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJl
Y2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwgV2ViRnJhbWVQcm94eSog
ZnIKICAgICB1aW50NjRfdCBkb3dubG9hZElEID0gMDsKICAgICBpZiAoYWN0aW9uID09IFBvbGlj
eURvd25sb2FkKSB7CiAgICAgICAgIC8vIENyZWF0ZSBhIGRvd25sb2FkIHByb3h5LgotICAgICAg
ICBkb3dubG9hZElEID0gbV9wcm9jZXNzLT5jb250ZXh0KCktPmNyZWF0ZURvd25sb2FkUHJveHko
KS0+ZG93bmxvYWRJRCgpOworICAgICAgICBEb3dubG9hZFByb3h5KiBkb3dubG9hZCA9IG1fcHJv
Y2Vzcy0+Y29udGV4dCgpLT5jcmVhdGVEb3dubG9hZFByb3h5KCk7CisgICAgICAgIGRvd25sb2Fk
SUQgPSBkb3dubG9hZC0+ZG93bmxvYWRJRCgpOworI2lmIFBMQVRGT1JNKFFUKQorICAgICAgICBk
b3dubG9hZFJlcXVlc3RlZChkb3dubG9hZCk7CisjZW5kaWYKICAgICB9CiAKICAgICAvLyBJZiB3
ZSByZWNlaXZlZCBhIHBvbGljeSBkZWNpc2lvbiB3aGlsZSBpbiBkZWNpZGVQb2xpY3lGb3JNSU1F
VHlwZSB0aGUgZGVjaXNpb24gd2lsbCAKQEAgLTIyMTcsNiArMjIyMSwxMSBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZmluZFpvb21hYmxlQXJlYUZvclBvaW50KGNvbnN0IEludFBvaW50JiBwb2ludCkK
IAogICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RmluZFpvb21hYmxlQXJl
YUZvclBvaW50KHBvaW50KSwgbV9wYWdlSUQpOwogfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6ZG93
bmxvYWRSZXF1ZXN0ZWQoRG93bmxvYWRQcm94eSogZG93bmxvYWQpCit7CisgICAgbV9wYWdlQ2xp
ZW50LT5kb3dubG9hZFJlcXVlc3RlZChkb3dubG9hZCk7Cit9CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5k
ZXggZWVhMTIxOTk1ODYyMGFhZmQ2YjIxODM1ZTg3ZDM4OTVlYThlYjkwNy4uMzAwZTFhOTQ3MmE4
MTY4YzdkNGYyMzU0ODJjYjdlNjJlZDI4MTUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaApAQCAtNTIwLDYgKzUyMCw3IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JN
KFFUKQogICAgIHZvaWQgZmluZFpvb21hYmxlQXJlYUZvclBvaW50KGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50Jik7CisgICAgdm9pZCBkb3dubG9hZFJlcXVlc3RlZChEb3dubG9hZFByb3h5Kik7CiAj
ZW5kaWYKIAogICAgIHZvaWQgYWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZv
cmVTZWxlY3Rpb24pIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L0NsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0NsaWVudElt
cGwuY3BwCmluZGV4IDljZjk3OGI5YTUyYWZmYTQwYTI4NGU2ZTlhZDE4MTE1NDk0NTlkY2UuLjc1
NmQ4ZjA3OGVmNjk4NGMyZjBiYmEyZmVhMTU2MmE5N2NlNzNlNTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5jcHAKQEAgLTIwLDYgKzIwLDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJDbGllbnRJbXBsLmgiCiAKKyNpbmNsdWRlICJRdERvd25s
b2FkTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYkZyYW1lUHJveHkuaCIKICNpbmNsdWRlICJXS0FQ
SUNhc3QuaCIKICNpbmNsdWRlICJXS1N0cmluZ1F0LmgiCkBAIC01OSw2ICs2MCwxMiBAQCBzdGF0
aWMgaW5saW5lIFF0UG9saWN5SW50ZXJmYWNlKiB0b1F0UG9saWN5SW50ZXJmYWNlKGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8UXRQb2xpY3lJbnRl
cmZhY2UqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7CiB9CiAKK3N0YXRpYyBpbmxp
bmUgUXREb3dubG9hZE1hbmFnZXIqIHRvUXREb3dubG9hZE1hbmFnZXIoY29uc3Qgdm9pZCogY2xp
ZW50SW5mbykKK3sKKyAgICBBU1NFUlQoY2xpZW50SW5mbyk7CisgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8UXREb3dubG9hZE1hbmFnZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZv
KSk7Cit9CisKIHN0YXRpYyB2b2lkIGRpc3BhdGNoTG9hZFN1Y2NlZWRlZChXS0ZyYW1lUmVmIGZy
YW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewogICAgIGlmICghV0tGcmFtZUlzTWFpbkZy
YW1lKGZyYW1lKSkKQEAgLTI3OSwzICsyODYsMzAgQEAgdm9pZCBxdF93a19kZWNpZGVQb2xpY3lG
b3JSZXNwb25zZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tVUkxSZXNwb24K
IAogICAgIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclVzZShsaXN0ZW5lcik7CiB9CisKK3ZvaWQgcXRf
d2tfZGlkUmVjZWl2ZVJlc3BvbnNlKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVm
IGRvd25sb2FkLCBXS1VSTFJlc3BvbnNlUmVmIHJlc3BvbnNlLCBjb25zdCB2b2lkICpjbGllbnRJ
bmZvKQoreworICAgIHRvUXREb3dubG9hZE1hbmFnZXIoY2xpZW50SW5mbyktPmRvd25sb2FkUmVj
ZWl2ZWRSZXNwb25zZSh0b0ltcGwoZG93bmxvYWQpLCB0b0ltcGwocmVzcG9uc2UpLT5yZXNvdXJj
ZVJlc3BvbnNlKCkpOworfQorCit2b2lkIHF0X3drX2RpZENyZWF0ZURlc3RpbmF0aW9uKFdLQ29u
dGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1N0cmluZ1JlZiBwYXRo
LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQoreworICAgIHRvUXREb3dubG9hZE1hbmFnZXIoY2xp
ZW50SW5mbyktPmRvd25sb2FkQ3JlYXRlZERlc3RpbmF0aW9uKHRvSW1wbChkb3dubG9hZCksIFdL
U3RyaW5nQ29weVFTdHJpbmcocGF0aCkpOworfQorCit2b2lkIHF0X3drX2RpZEZpbmlzaERvd25s
b2FkKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2
b2lkICpjbGllbnRJbmZvKQoreworICAgIHRvUXREb3dubG9hZE1hbmFnZXIoY2xpZW50SW5mbykt
PmRvd25sb2FkRmluaXNoZWQodG9JbXBsKGRvd25sb2FkKSk7Cit9CisKK3ZvaWQgcXRfd2tfZGlk
RmFpbERvd25sb2FkKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2Fk
LCBXS0Vycm9yUmVmIGVycm9yLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQoreworICAgIFFVcmwg
ZmFpbGluZ1VybCA9IFdLVVJMQ29weVFVcmwoV0tFcnJvckNvcHlGYWlsaW5nVVJMKGVycm9yKSk7
CisKKyAgICB0b1F0RG93bmxvYWRNYW5hZ2VyKGNsaWVudEluZm8pLT5kb3dubG9hZEZhaWxlZCh0
b0ltcGwoZG93bmxvYWQpLCBRV2ViRXJyb3JQcml2YXRlOjpjcmVhdGVRV2ViRXJyb3IoZXJyb3Ip
KTsKK30KKwordm9pZCBxdF93a19kaWRSZWNlaXZlRGF0YUZvckRvd25sb2FkKFdLQ29udGV4dFJl
ZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCB1aW50NjRfdCBsZW5ndGgsIGNvbnN0
IHZvaWQgKmNsaWVudEluZm8pCit7CisgICAgdG9RdERvd25sb2FkTWFuYWdlcihjbGllbnRJbmZv
KS0+ZG93bmxvYWREYXRhUmVjZWl2ZWQodG9JbXBsKGRvd25sb2FkKSwgbGVuZ3RoKTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5oCmluZGV4IGJiMzIwOWZmYWQxNjE1
MTQ2MDQxYjBkOWE0OWIyMGY3NjQ2NzY3OTguLmE1MmZjMDc1ZDJiMzMwMWUyZjZkMTQwYTIyMTc1
ZWQ4MDM0ZTdlYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9DbGll
bnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0NsaWVudEltcGwuaApA
QCAtNTAsNiArNTAsMTMgQEAgdm9pZCBxdF93a19tb3VzZURpZE1vdmVPdmVyRWxlbWVudChXS1Bh
Z2VSZWYsIFdLSGl0VGVzdFJlc3VsdFJlZiwgV0tFdmVudE1vZGlmaWUKIHZvaWQgcXRfd2tfZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLRnJh
bWVOYXZpZ2F0aW9uVHlwZSwgV0tFdmVudE1vZGlmaWVycywgV0tFdmVudE1vdXNlQnV0dG9uLCBX
S1VSTFJlcXVlc3RSZWYsIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZiwgV0tUeXBlUmVmIHVzZXJE
YXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIHZvaWQgcXRfd2tfZGVjaWRlUG9saWN5Rm9y
UmVzcG9uc2UoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1VSTFJlc3BvbnNlUmVmLCBXS1VSTFJl
cXVlc3RSZWYsIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIAorLy8gRG93bmxvYWQgY2xpZW50Lgordm9pZCBxdF93
a19kaWRSZWNlaXZlUmVzcG9uc2UoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBXS1VSTFJl
c3BvbnNlUmVmLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3ZvaWQgcXRfd2tfZGlkQ3JlYXRl
RGVzdGluYXRpb24oV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBXS1N0cmluZ1JlZiBwYXRo
LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3ZvaWQgcXRfd2tfZGlkRmluaXNoRG93bmxvYWQo
V0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3Zv
aWQgcXRfd2tfZGlkRmFpbERvd25sb2FkKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgV0tF
cnJvclJlZiwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit2b2lkIHF0X3drX2RpZFJlY2VpdmVE
YXRhRm9yRG93bmxvYWQoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCB1aW50NjRfdCBsZW5n
dGgsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0RG93bmxvYWRN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdERvd25sb2FkTWFuYWdl
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTdiMmJmMjg2N2ZjMDU1YWI3ZDg4NWNkZWEzMzIxYzNiZjNmNDc0
YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdERvd25s
b2FkTWFuYWdlci5jcHAKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAsIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3Jh
bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUXREb3dubG9hZE1hbmFnZXIuaCIKKwor
I2luY2x1ZGUgIkNsaWVudEltcGwuaCIKKyNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCisjaW5j
bHVkZSAiV0tTdHJpbmdRdC5oIgorI2luY2x1ZGUgIldLVVJMUXQuaCIKKyNpbmNsdWRlICJXZWJD
b250ZXh0LmgiCisjaW5jbHVkZSAicXdlYmRvd25sb2FkaXRlbS5oIgorI2luY2x1ZGUgInF3ZWJk
b3dubG9hZGl0ZW1fcC5oIgorI2luY2x1ZGUgInF3ZWJlcnJvci5oIgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworUXREb3dubG9hZE1hbmFnZXI6OlF0RG93bmxvYWRNYW5hZ2VyKCkKK3sKK30KKwor
UXREb3dubG9hZE1hbmFnZXI6On5RdERvd25sb2FkTWFuYWdlcigpCit7Cit9CisKK1Bhc3NSZWZQ
dHI8UXREb3dubG9hZE1hbmFnZXI+IFF0RG93bmxvYWRNYW5hZ2VyOjpjcmVhdGUoV2ViQ29udGV4
dCogY29udGV4dCkKK3sKKyAgICBRdERvd25sb2FkTWFuYWdlciogbWFuYWdlciA9IG5ldyBRdERv
d25sb2FkTWFuYWdlcigpOworCisgICAgV0tDb250ZXh0RG93bmxvYWRDbGllbnQgZG93bmxvYWRD
bGllbnQ7CisgICAgbWVtc2V0KCZkb3dubG9hZENsaWVudCwgMCwgc2l6ZW9mKFdLQ29udGV4dERv
d25sb2FkQ2xpZW50KSk7CisgICAgZG93bmxvYWRDbGllbnQudmVyc2lvbiA9IGtXS0NvbnRleHRE
b3dubG9hZENsaWVudEN1cnJlbnRWZXJzaW9uOworICAgIGRvd25sb2FkQ2xpZW50LmNsaWVudElu
Zm8gPSBtYW5hZ2VyOworICAgIGRvd25sb2FkQ2xpZW50LmRpZFJlY2VpdmVSZXNwb25zZSA9IHF0
X3drX2RpZFJlY2VpdmVSZXNwb25zZTsKKyAgICBkb3dubG9hZENsaWVudC5kaWRSZWNlaXZlRGF0
YSA9IHF0X3drX2RpZFJlY2VpdmVEYXRhRm9yRG93bmxvYWQ7CisgICAgZG93bmxvYWRDbGllbnQu
ZGlkQ3JlYXRlRGVzdGluYXRpb24gPSBxdF93a19kaWRDcmVhdGVEZXN0aW5hdGlvbjsKKyAgICBk
b3dubG9hZENsaWVudC5kaWRGaW5pc2ggPSBxdF93a19kaWRGaW5pc2hEb3dubG9hZDsKKyAgICBk
b3dubG9hZENsaWVudC5kaWRGYWlsID0gcXRfd2tfZGlkRmFpbERvd25sb2FkOworICAgIFdLQ29u
dGV4dFNldERvd25sb2FkQ2xpZW50KHRvQVBJKGNvbnRleHQpLCAmZG93bmxvYWRDbGllbnQpOwor
ICAgIHJldHVybiBhZG9wdFJlZihtYW5hZ2VyKTsKK30KKwordm9pZCBRdERvd25sb2FkTWFuYWdl
cjo6ZG93bmxvYWRSZWNlaXZlZFJlc3BvbnNlKERvd25sb2FkUHJveHkqIGRvd25sb2FkLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICAvLyBXaWxsIGJl
IGNhbGxlZCB3aGVuIHRoZSBoZWFkZXJzIGFyZSByZWFkIGJ5IFdlYlByb2Nlc3MuCisgICAgUVdl
YkRvd25sb2FkSXRlbSogZG93bmxvYWRJdGVtID0gbV9kb3dubG9hZHMudmFsdWUoZG93bmxvYWQt
PmRvd25sb2FkSUQoKSk7CisgICAgQVNTRVJUKGRvd25sb2FkSXRlbSk7CisKKyAgICBkb3dubG9h
ZEl0ZW0tPmQtPnNvdXJjZVVybCA9IHJlc3BvbnNlLnVybCgpOworICAgIGRvd25sb2FkSXRlbS0+
ZC0+bWltZVR5cGUgPSByZXNwb25zZS5taW1lVHlwZSgpOworICAgIGRvd25sb2FkSXRlbS0+ZC0+
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0gcmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCk7
CisgICAgZG93bmxvYWRJdGVtLT5kLT5zdWdnZXN0ZWRGaWxlbmFtZSA9IHJlc3BvbnNlLnN1Z2dl
c3RlZEZpbGVuYW1lKCk7CisKKyAgICBkb3dubG9hZEl0ZW0tPmQtPmRpZFJlY2VpdmVSZXNwb25z
ZShkb3dubG9hZEl0ZW0pOworfQorCit2b2lkIFF0RG93bmxvYWRNYW5hZ2VyOjpkb3dubG9hZENy
ZWF0ZWREZXN0aW5hdGlvbihEb3dubG9hZFByb3h5KiBkb3dubG9hZCwgY29uc3QgUVN0cmluZyYg
cGF0aCkKK3sKKyAgICBRV2ViRG93bmxvYWRJdGVtKiBkb3dubG9hZEl0ZW0gPSBtX2Rvd25sb2Fk
cy52YWx1ZShkb3dubG9hZC0+ZG93bmxvYWRJRCgpKTsKKyAgICBBU1NFUlQoZG93bmxvYWRJdGVt
KTsKKyAgICBkb3dubG9hZEl0ZW0tPmQtPmRlc3RpbmF0aW9uUGF0aCA9IHBhdGg7CisgICAgZW1p
dCBkb3dubG9hZEl0ZW0tPmRlc3RpbmF0aW9uRmlsZUNyZWF0ZWQoZG93bmxvYWRJdGVtLT5kLT5k
ZXN0aW5hdGlvblBhdGgpOworfQorCit2b2lkIFF0RG93bmxvYWRNYW5hZ2VyOjpkb3dubG9hZEZp
bmlzaGVkKERvd25sb2FkUHJveHkqIGRvd25sb2FkKQoreworICAgIC8vIFdpbGwgYmUgY2FsbGVk
IHdoZW4gZG93bmxvYWQgZmluaXNoZXMgd2l0aCBzdWNjZXNzLgorICAgIFFXZWJEb3dubG9hZEl0
ZW0qIGRvd25sb2FkSXRlbSA9IG1fZG93bmxvYWRzLnRha2UoZG93bmxvYWQtPmRvd25sb2FkSUQo
KSk7CisgICAgQVNTRVJUKGRvd25sb2FkSXRlbSk7CisgICAgZW1pdCBkb3dubG9hZEl0ZW0tPnN1
Y2NlZWRlZCgpOworfQorCit2b2lkIFF0RG93bmxvYWRNYW5hZ2VyOjpkb3dubG9hZEZhaWxlZChE
b3dubG9hZFByb3h5KiBkb3dubG9hZCwgY29uc3QgUVdlYkVycm9yJiBlcnJvcikKK3sKKyAgICAv
LyBXaWxsIGJlIGNhbGxlZCB3aGVuIGRvd25sb2FkIGZhaWxzIG9yIGlzIGFib3J0ZWQuCisgICAg
UVdlYkRvd25sb2FkSXRlbSogZG93bmxvYWRJdGVtID0gbV9kb3dubG9hZHMudGFrZShkb3dubG9h
ZC0+ZG93bmxvYWRJRCgpKTsKKyAgICBBU1NFUlQoZG93bmxvYWRJdGVtKTsKKyAgICBlbWl0IGRv
d25sb2FkSXRlbS0+ZmFpbGVkKGVycm9yLmVycm9yQ29kZUFzRG93bmxvYWRFcnJvcigpLCBlcnJv
ci51cmwoKSwgZXJyb3IuZGVzY3JpcHRpb24oKSk7Cit9CisKK3ZvaWQgUXREb3dubG9hZE1hbmFn
ZXI6OmRvd25sb2FkRGF0YVJlY2VpdmVkKERvd25sb2FkUHJveHkqIGRvd25sb2FkLCB1aW50NjRf
dCBsZW5ndGgpCit7CisgICAgLy8gV2lsbCBiZSBjYWxsZWQgZXZlcnl0aW1lIGJ5dGVzIHdlcmUg
d3JpdHRlbiB0byBkZXN0aW5hdGlvbiBmaWxlIGJ5IFdlYlByb2Nlc3MuCisgICAgUVdlYkRvd25s
b2FkSXRlbSogZG93bmxvYWRJdGVtID0gbV9kb3dubG9hZHMudmFsdWUoZG93bmxvYWQtPmRvd25s
b2FkSUQoKSk7CisgICAgQVNTRVJUKGRvd25sb2FkSXRlbSk7CisgICAgZG93bmxvYWRJdGVtLT5k
LT50b3RhbEJ5dGVzUmVjZWl2ZWQgKz0gbGVuZ3RoOworICAgIGVtaXQgZG93bmxvYWRJdGVtLT50
b3RhbEJ5dGVzUmVjZWl2ZWRDaGFuZ2VkKGxlbmd0aCk7Cit9CisKK3ZvaWQgUXREb3dubG9hZE1h
bmFnZXI6OmFkZERvd25sb2FkKERvd25sb2FkUHJveHkqIGRvd25sb2FkLCBRV2ViRG93bmxvYWRJ
dGVtKiBkb3dubG9hZEl0ZW0pCit7CisgICAgbV9kb3dubG9hZHNbZG93bmxvYWQtPmRvd25sb2Fk
SUQoKV0gPSBkb3dubG9hZEl0ZW07Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9RdERvd25sb2FkTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1F0RG93bmxvYWRNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTM2Y2QyNjg0NDhiNWEzYjcz
Yzc0OTY0ZjU4NmE4NzExNmNiODU4MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9RdERvd25sb2FkTWFuYWdlci5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBz
dWJzaWRpYXJ5KC1pZXMpCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIFF0RG93bmxvYWRNYW5hZ2VyX2gKKyNkZWZpbmUg
UXREb3dubG9hZE1hbmFnZXJfaAorCisjaW5jbHVkZSA8UU1hcD4KKyNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK2NsYXNzIFFXZWJFcnJv
cjsKK2NsYXNzIFFXZWJEb3dubG9hZEl0ZW07CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNz
IFJlc291cmNlUmVzcG9uc2U7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBEb3du
bG9hZFByb3h5OworY2xhc3MgV2ViQ29udGV4dDsKKworY2xhc3MgUXREb3dubG9hZE1hbmFnZXIg
OiBwdWJsaWMgUmVmQ291bnRlZDxRdERvd25sb2FkTWFuYWdlcj4geworcHVibGljOgorICAgIH5R
dERvd25sb2FkTWFuYWdlcigpOworCisgICAgdm9pZCBhZGREb3dubG9hZChEb3dubG9hZFByb3h5
KiwgUVdlYkRvd25sb2FkSXRlbSopOworCisgICAgdm9pZCBkb3dubG9hZFJlY2VpdmVkUmVzcG9u
c2UoRG93bmxvYWRQcm94eSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAg
ICB2b2lkIGRvd25sb2FkQ3JlYXRlZERlc3RpbmF0aW9uKERvd25sb2FkUHJveHkqLCBjb25zdCBR
U3RyaW5nJiBwYXRoKTsKKyAgICB2b2lkIGRvd25sb2FkRmluaXNoZWQoRG93bmxvYWRQcm94eSop
OworICAgIHZvaWQgZG93bmxvYWRGYWlsZWQoRG93bmxvYWRQcm94eSosIGNvbnN0IFFXZWJFcnJv
ciYpOworICAgIHZvaWQgZG93bmxvYWREYXRhUmVjZWl2ZWQoRG93bmxvYWRQcm94eSosIHVpbnQ2
NF90IGxlbmd0aCk7CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxRdERvd25sb2FkTWFuYWdlcj4g
Y3JlYXRlKFdlYkNvbnRleHQqKTsKK3ByaXZhdGU6CisgICAgUXREb3dubG9hZE1hbmFnZXIoKTsK
KworICAgIFFNYXA8dWludDY0X3QsIFFXZWJEb3dubG9hZEl0ZW0qPiBtX2Rvd25sb2FkczsKK307
CisKK30KKyNlbmRpZiAvKiBRdERvd25sb2FkTWFuYWdlcl9oICovCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRUb3VjaFZpZXdJbnRlcmZhY2UuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFRvdWNoVmlld0ludGVyZmFjZS5oCmluZGV4IDNiNjkwMTg4
ZGM2ODc1OWJjOGZjNGY0OGY5NjdiNzFhZWJkMGRiOTUuLmRhMmY2M2E2OWRmNTg2YjI3NTZmOTBj
NWY5ZDdkOWQ4NWFkMWYzZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9RdFRvdWNoVmlld0ludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9RdFRvdWNoVmlld0ludGVyZmFjZS5oCkBAIC04MSw2ICs4MSw3IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCBRSlNFbmdpbmUqIGVuZ2luZSgpOwogCiAgICAgdmlydHVhbCB2b2lkIGNob29zZUZp
bGVzKFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJSZWYsIGNvbnN0IFFTdHJpbmdMaXN0JiwgRmls
ZUNob29zZXJUeXBlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWRSZXF1ZXN0ZWQoUVdl
YkRvd25sb2FkSXRlbSogZG93bmxvYWRJdGVtKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRN
b3VzZU1vdmVPdmVyRWxlbWVudChjb25zdCBRVXJsJiwgY29uc3QgUVN0cmluZyYpIHsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRWaWV3SW50ZXJmYWNlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRWaWV3SW50ZXJmYWNlLmgKaW5kZXggYjZk
OGIzYmQ1NjA0YjM3MWM0YmE4ZDIyMTgxMGZkNWQ2OTcxYzRjZC4uZmEwYjFkMGNjMWMxMTA3ZjRl
MTRkMzNhMGJiZmVlYzkyZWMyNTIyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1F0Vmlld0ludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9RdFZpZXdJbnRlcmZhY2UuaApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgPFF0Q29yZS9R
U2l6ZT4KICNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgogCitjbGFzcyBRV2ViRG93bmxvYWRJ
dGVtOwogY2xhc3MgUVdlYkVycm9yOwogCiBRVF9CRUdJTl9OQU1FU1BBQ0UKQEAgLTkzLDYgKzk0
LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjaG9vc2VGaWxlcyhXS09wZW5QYW5lbFJl
c3VsdExpc3RlbmVyUmVmLCBjb25zdCBRU3RyaW5nTGlzdCYgc2VsZWN0ZWRGaWxlTmFtZXMsIEZp
bGVDaG9vc2VyVHlwZSkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGRpZE1vdXNlTW92ZU92ZXJF
bGVtZW50KGNvbnN0IFFVcmwmLCBjb25zdCBRU3RyaW5nJikgPSAwOworCisgICAgdmlydHVhbCB2
b2lkIGRvd25sb2FkUmVxdWVzdGVkKFFXZWJEb3dubG9hZEl0ZW0qKSA9IDA7CiB9OwogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcAppbmRleCA3
ZGJlNDc3NTczZjY5OTlkNWEyYmFlYTQwMTZjYzBkODM1OThmYTlhLi5kM2Y1YTkwYTQyNDliZTdj
NTQxOTUyNGY5ZGY2Y2VlNDAzZjliNmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAKQEAgLTIxLDEwICsyMSwxMyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIlF0V2ViUGFnZVByb3h5LmgiCiAKKyNpbmNsdWRlICJxd2ViZG93
bmxvYWRpdGVtLmgiCisjaW5jbHVkZSAicXdlYmRvd25sb2FkaXRlbV9wLmgiCiAjaW5jbHVkZSAi
cXdlYmVycm9yLmgiCiAjaW5jbHVkZSAicXdlYnByZWZlcmVuY2VzX3AuaCIKIAogI2luY2x1ZGUg
IkNsaWVudEltcGwuaCIKKyNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCiAjaW5jbHVkZSAicXdr
aGlzdG9yeS5oIgogI2luY2x1ZGUgInF3a2hpc3RvcnlfcC5oIgogI2luY2x1ZGUgIkZpbmRJbmRp
Y2F0b3IuaCIKQEAgLTY0LDEzICs2NywxNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
CiBSZWZQdHI8V2ViQ29udGV4dD4gUXRXZWJQYWdlUHJveHk6OnNfZGVmYXVsdENvbnRleHQ7CitS
ZWZQdHI8UXREb3dubG9hZE1hbmFnZXI+IFF0V2ViUGFnZVByb3h5OjpzX2Rvd25sb2FkTWFuYWdl
cjsKIAogdW5zaWduZWQgUXRXZWJQYWdlUHJveHk6OnNfZGVmYXVsdFBhZ2VQcm94eUNvdW50ID0g
MDsKIAogUGFzc1JlZlB0cjxXZWJDb250ZXh0PiBRdFdlYlBhZ2VQcm94eTo6ZGVmYXVsdFdLQ29u
dGV4dCgpCiB7Ci0gICAgaWYgKCFzX2RlZmF1bHRDb250ZXh0KQorICAgIGlmICghc19kZWZhdWx0
Q29udGV4dCkgewogICAgICAgICBzX2RlZmF1bHRDb250ZXh0ID0gV2ViQ29udGV4dDo6Y3JlYXRl
KFN0cmluZygpKTsKKyAgICAgICAgc19kb3dubG9hZE1hbmFnZXIgPSBRdERvd25sb2FkTWFuYWdl
cjo6Y3JlYXRlKHNfZGVmYXVsdENvbnRleHQuZ2V0KCkpOworICAgIH0KICAgICByZXR1cm4gc19k
ZWZhdWx0Q29udGV4dDsKIH0KIApAQCAtMTY4LDggKzE3NCwxMCBAQCBRdFdlYlBhZ2VQcm94eTo6
flF0V2ViUGFnZVByb3h5KCkKICAgICBpZiAobV9jb250ZXh0ID09IHNfZGVmYXVsdENvbnRleHQp
IHsKICAgICAgICAgQVNTRVJUKHNfZGVmYXVsdFBhZ2VQcm94eUNvdW50ID4gMCk7CiAgICAgICAg
IHNfZGVmYXVsdFBhZ2VQcm94eUNvdW50LS07Ci0gICAgICAgIGlmICghc19kZWZhdWx0UGFnZVBy
b3h5Q291bnQpCisgICAgICAgIGlmICghc19kZWZhdWx0UGFnZVByb3h5Q291bnQpIHsKICAgICAg
ICAgICAgIHNfZGVmYXVsdENvbnRleHQuY2xlYXIoKTsKKyAgICAgICAgICAgIHNfZG93bmxvYWRN
YW5hZ2VyLmNsZWFyKCk7CisgICAgICAgIH0KICAgICB9CiAgICAgZGVsZXRlIG1faGlzdG9yeTsK
IH0KQEAgLTcwMSw0ICs3MDksMTkgQEAgdm9pZCBRdFdlYlBhZ2VQcm94eTo6c2V0UGFnZUlzVmlz
aWJsZShib29sIGlzVmlzaWJsZSkKICAgICBtX3dlYlBhZ2VQcm94eS0+ZHJhd2luZ0FyZWEoKS0+
c2V0UGFnZUlzVmlzaWJsZShpc1Zpc2libGUpOwogfQogCit2b2lkIFF0V2ViUGFnZVByb3h5Ojpk
b3dubG9hZFJlcXVlc3RlZChEb3dubG9hZFByb3h5KiBkb3dubG9hZCkKK3sKKyAgICBRV2ViRG93
bmxvYWRJdGVtKiBkb3dubG9hZEl0ZW0gPSBuZXcgUVdlYkRvd25sb2FkSXRlbSgpOworICAgIGRv
d25sb2FkSXRlbS0+ZC0+ZG93bmxvYWRQcm94eSA9IGRvd25sb2FkOworCisgICAgY29ubmVjdChk
b3dubG9hZEl0ZW0tPmQsIFNJR05BTChyZWNlaXZlZFJlc3BvbnNlKFFXZWJEb3dubG9hZEl0ZW0q
KSksIHRoaXMsIFNMT1QoZGlkUmVjZWl2ZURvd25sb2FkUmVzcG9uc2UoUVdlYkRvd25sb2FkSXRl
bSopKSk7CisgICAgc19kb3dubG9hZE1hbmFnZXItPmFkZERvd25sb2FkKGRvd25sb2FkLCBkb3du
bG9hZEl0ZW0pOworfQorCit2b2lkIFF0V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlRG93bmxvYWRS
ZXNwb25zZShRV2ViRG93bmxvYWRJdGVtKiBkb3dubG9hZCkKK3sKKyAgICAvLyBOb3cgdGhhdCBv
dXIgZG93bmxvYWRJdGVtIGhhcyBldmVyeXRoaW5nIHdlIG5lZWQgd2UgY2FuIGVtaXQgZG93bmxv
YWRSZXF1ZXN0ZWQuCisgICAgbV92aWV3SW50ZXJmYWNlLT5kb3dubG9hZFJlcXVlc3RlZChkb3du
bG9hZCk7Cit9CisKICNpbmNsdWRlICJtb2NfUXRXZWJQYWdlUHJveHkuY3BwIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaAppbmRleCBlMjA4ZGFmYzg0MmQ3
YTA0YWM2OGM4ZDA3ZThiNDgyODk0ZjY4ODU4Li4wNDYyNWExNmI3YjM5MDdlMjU5NDMwMDRlYzQ3
OGYzZGVkNjU3MTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRX
ZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdl
UHJveHkuaApAQCAtMjMsNiArMjMsNyBAQAogCiAjaW5jbHVkZSAiTGF5ZXJUcmVlQ29udGV4dC5o
IgogI2luY2x1ZGUgIlBhZ2VDbGllbnQuaCIKKyNpbmNsdWRlICJRdERvd25sb2FkTWFuYWdlci5o
IgogI2luY2x1ZGUgIlF0UG9saWN5SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiUXRWaWV3SW50ZXJm
YWNlLmgiCiAjaW5jbHVkZSAicXdlYmtpdHR5cGVzLmgiCkBAIC0xMjcsNiArMTI4LDggQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmRab29tYWJsZUFyZWEoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAKKyAgICB2aXJ0dWFsIFF0
V2ViUGFnZVByb3h5KiBxdFdlYlBhZ2VQcm94eSgpIHsgcmV0dXJuIHRoaXM7IH0KKwogICAgIHZv
aWQgZGlkQ2hhbmdlVXJsKGNvbnN0IFFVcmwmKTsKICAgICB2b2lkIGRpZENoYW5nZVRpdGxlKGNv
bnN0IFFTdHJpbmcmKTsKIApAQCAtMTcyLDggKzE3NSwxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHNldFBhZ2VJc1Zpc2libGUoYm9vbCk7CiAKKyAgICB2b2lkIGRvd25sb2FkUmVxdWVzdGVkKERv
d25sb2FkUHJveHkqKTsKKwogcHVibGljIFFfU0xPVFM6CiAgICAgdm9pZCB3ZWJBY3Rpb25Ucmln
Z2VyZWQoYm9vbCBjaGVja2VkKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEb3dubG9hZFJlc3BvbnNl
KFFXZWJEb3dubG9hZEl0ZW0qKTsKIAogcHVibGljOgogICAgIFFfU0lHTkFMIHZvaWQgc2Nyb2xs
UmVxdWVzdGVkKGludCBkeCwgaW50IGR5KTsKQEAgLTE5NSw2ICsyMDEsNyBAQCBwcml2YXRlOgog
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ29udGV4dD4gZGVmYXVsdFdLQ29udGV4dCgpOwog
ICAgIHN0YXRpYyBSZWZQdHI8V2ViQ29udGV4dD4gc19kZWZhdWx0Q29udGV4dDsKKyAgICBzdGF0
aWMgUmVmUHRyPFF0RG93bmxvYWRNYW5hZ2VyPiBzX2Rvd25sb2FkTWFuYWdlcjsKICAgICBzdGF0
aWMgdW5zaWduZWQgc19kZWZhdWx0UGFnZVByb3h5Q291bnQ7CiAKICAgICBSZWZQdHI8V2ViQ29u
dGV4dD4gbV9jb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0
L3F3ZWJlcnJvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXdlYmVycm9yLmNw
cAppbmRleCBhNWY4ZDk4OTU3NWUzMjViMGE2ZTljNDFhMzhjZjQ5OGM4ZmJiYTY0Li5iMDI4YTYz
MTMwZmVkMTg4YTMzYjNmOTA1Yzk5NzVlODhlODMyNDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvcXdlYmVycm9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvcXdlYmVycm9yLmNwcApAQCAtODAsMyArODAsOCBAQCBRVXJsIFFXZWJFcnJvcjo6
dXJsKCkgY29uc3QKICAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gZmFpbGluZ1VSTCA9IGFkb3B0
V0soV0tFcnJvckNvcHlGYWlsaW5nVVJMKGQtPmVycm9yLmdldCgpKSk7CiAgICAgcmV0dXJuIFdL
VVJMQ29weVFVcmwoZmFpbGluZ1VSTC5nZXQoKSk7CiB9CisKK1FTdHJpbmcgUVdlYkVycm9yOjpk
ZXNjcmlwdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdLU3RyaW5nQ29weVFTdHJpbmcoV0tF
cnJvckNvcHlMb2NhbGl6ZWREZXNjcmlwdGlvbihkLT5lcnJvci5nZXQoKSkpOworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F3ZWJlcnJvci5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L3F3ZWJlcnJvci5oCmluZGV4IDMxNDJiNjRhMTg1NDA4ODg1ZDgx
N2M0MjNiZTZmZjFiZWQ3ZjQ0ZmIuLjBlZWE4M2ZmZjliYzZiNmJiMDQ2ZjRjN2JiYmJlYmE1M2M1
YzMxMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xd2ViZXJyb3Iu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXdlYmVycm9yLmgKQEAgLTIxLDYg
KzIxLDcgQEAKICNpZm5kZWYgcXdlYmVycm9yX2gKICNkZWZpbmUgcXdlYmVycm9yX2gKIAorI2lu
Y2x1ZGUgInF3ZWJkb3dubG9hZGl0ZW0uaCIKICNpbmNsdWRlICJxd2Via2l0Z2xvYmFsLmgiCiAj
aW5jbHVkZSA8UVNoYXJlZERhdGFQb2ludGVyPgogI2luY2x1ZGUgPFF0TmV0d29yay9RTmV0d29y
a1JlcGx5PgpAQCAtNDMsOSArNDQsMTEgQEAgcHVibGljOgogICAgIFR5cGUgdHlwZSgpIGNvbnN0
OwogICAgIFFVcmwgdXJsKCkgY29uc3Q7CiAgICAgaW50IGVycm9yQ29kZSgpIGNvbnN0OworICAg
IFFTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsKIAogICAgIGludCBlcnJvckNvZGVBc0h0dHBT
dGF0dXNDb2RlKCkgY29uc3QgeyByZXR1cm4gZXJyb3JDb2RlKCk7IH0KICAgICBRTmV0d29ya1Jl
cGx5OjpOZXR3b3JrRXJyb3IgZXJyb3JDb2RlQXNOZXR3b3JrRXJyb3IoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxRTmV0d29ya1JlcGx5OjpOZXR3b3JrRXJyb3I+KGVycm9yQ29kZSgpKTsg
fQorICAgIFFXZWJEb3dubG9hZEl0ZW06OkRvd25sb2FkRXJyb3IgZXJyb3JDb2RlQXNEb3dubG9h
ZEVycm9yKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UVdlYkRvd25sb2FkSXRlbTo6RG93
bmxvYWRFcnJvcj4oZXJyb3JDb2RlKCkpOyB9CiAKICAgICBRV2ViRXJyb3IoY29uc3QgUVdlYkVy
cm9yJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJvIGIvU291cmNl
L1dlYktpdDIvV2ViS2l0Mi5wcm8KaW5kZXggMzk0Mzc1NjE4NGJkNGFhYzFiNGRjZmEyOTgyY2Vj
NzAzNTA4ZjkxNy4uNzdjOWEyM2VmODYyMTU2YzQ4NmFhYzBmOTcxZTRlODYzYmMyMzA5YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcm8KKysrIGIvU291cmNlL1dlYktpdDIv
V2ViS2l0Mi5wcm8KQEAgLTI2MSw2ICsyNjEsNyBAQCBIRUFERVJTICs9IFwKICAgICBVSVByb2Nl
c3MvcXQvUXRUb3VjaFdlYlBhZ2VQcm94eS5oIFwKICAgICBVSVByb2Nlc3MvcXQvcXdlYmVycm9y
LmggXAogICAgIFVJUHJvY2Vzcy9xdC9xd2ViZXJyb3JfcC5oIFwKKyAgICBVSVByb2Nlc3MvcXQv
UXREb3dubG9hZE1hbmFnZXIuaCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5Lmgg
XAogICAgIFVJUHJvY2Vzcy9xdC9xd2toaXN0b3J5LmggXAogICAgIFVJUHJvY2Vzcy9xdC9xd2to
aXN0b3J5X3AuaCBcCkBAIC01MDIsNiArNTAzLDcgQEAgU09VUkNFUyArPSBcCiAgICAgVUlQcm9j
ZXNzL3F0L1F0RGVza3RvcFdlYlBhZ2VQcm94eS5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9RdFRv
dWNoV2ViUGFnZVByb3h5LmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L3F3ZWJlcnJvci5jcHAgXAor
ICAgIFVJUHJvY2Vzcy9xdC9RdERvd25sb2FkTWFuYWdlci5jcHAgXAogICAgIFVJUHJvY2Vzcy9x
dC9RdFdlYlBhZ2VQcm94eS5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9xd2toaXN0b3J5LmNwcCBc
CiAgICAgVUlQcm9jZXNzL3F0L1F0U0dVcGRhdGVRdWV1ZS5jcHAgXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViS2l0MkFQSS5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyQVBJLnBy
aQppbmRleCA5NzFkMGE3ZjQ5OWNkNzY0OWRhMjM4ZjZhMGEyMWExMjUwZDBlYjEyLi4xOTMzZWFi
MzkwYWEwMjZlZGYyMTQ4MDhkMTcyZmU2Y2FmM2Y4N2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyQVBJLnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyQVBJLnByaQpA
QCAtNDksNiArNDksNyBAQCBXRUJLSVQyX0FQSV9TT1VSQ0VTID0gXAogICAgICQkU09VUkNFX0RJ
Ui9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL3F0L1dLU3RyaW5nUXQuY3BwIFwKICAgICAkJFNP
VVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2NwcC9xdC9XS1VSTFF0LmNwcCBcCiAgICAg
JCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3Bw
IFwKKyAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJkb3dubG9h
ZGl0ZW0uY3BwIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0
b3VjaHdlYnBhZ2UuY3BwIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3F0b3VjaHdlYnZpZXcuY3BwIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3F3ZWJuYXZpZ2F0aW9uY29udHJvbGxlci5jcHAgXApAQCAtMTMyLDYgKzEzMyw4
IEBAIFdFQktJVDJfQVBJX0hFQURFUlMgKz0gXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3X3AuaCBcCiAgICAgJCRTT1VSQ0VfRElSL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2VicHJlZmVyZW5jZXMuaCBcCiAgICAgJCRTT1VSQ0Vf
RElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2VicHJlZmVyZW5jZXNfcC5oIFwKKyAgICAk
JFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJkb3dubG9hZGl0ZW0uaCBc
CisgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxvYWRp
dGVtX3AuaCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91
Y2h3ZWJwYWdlLmggXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cXRvdWNod2VicGFnZV9wLmggXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvcXRvdWNod2Vidmlldy5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZC5oCmluZGV4IGFjY2NkM2Y4OGUyYTY5OTU5N2EzOWI3YmY4MjhkNDM2
MzdiNzBmMzguLmMwNjZlMmY2YjQ0MzllNmM1NmVjMzAxNWY3YmZlNTUyMWE5NzI0NWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaApAQCAtOTMs
NiArOTMsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IENvcmVJUEM6OkRh
dGFSZWZlcmVuY2UmIHJlc3VtZURhdGEpOwogICAgIHZvaWQgZGlkRGVjaWRlRGVzdGluYXRpb24o
Y29uc3QgU3RyaW5nJiwgYm9vbCBhbGxvd092ZXJ3cml0ZSk7CiAKKyNpZiBQTEFURk9STShRVCkK
KyAgICB2b2lkIHN0YXJ0VHJhbnNmZXIoY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbik7CisjZW5k
aWYKKwogI2lmIFVTRShDRk5FVFdPUkspCiAgICAgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb247IH0KICAgICBEb3dubG9hZEF1dGhlbnRpY2F0
aW9uQ2xpZW50KiBhdXRoZW50aWNhdGlvbkNsaWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKaW5kZXggYTYy
NDg5MWY4MDE5NGYzYWRjMTUxODFhYzgwODRiNDY5NTU4YmNiNi4uNjBkY2U4OWI0ZWU0Y2NjMzhi
ZWY5ODk2NTU5ZjlkNzhlNjdmMzI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCkBAIC03OSw0ICs3OSwxMyBA
QCB2b2lkIERvd25sb2FkTWFuYWdlcjo6ZG93bmxvYWRGaW5pc2hlZChEb3dubG9hZCogZG93bmxv
YWQpCiAgICAgZGVsZXRlIGRvd25sb2FkOwogfQogCisjaWYgUExBVEZPUk0oUVQpCit2b2lkIERv
d25sb2FkTWFuYWdlcjo6c3RhcnRUcmFuc2Zlcih1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBT
dHJpbmcmIGRlc3RpbmF0aW9uKQoreworICAgIEFTU0VSVChtX2Rvd25sb2Fkcy5jb250YWlucyhk
b3dubG9hZElEKSk7CisgICAgRG93bmxvYWQqIGRvd25sb2FkID0gbV9kb3dubG9hZHMuZ2V0KGRv
d25sb2FkSUQpOworICAgIGRvd25sb2FkLT5zdGFydFRyYW5zZmVyKGRlc3RpbmF0aW9uKTsKK30K
KyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgKaW5kZXggMWYyN2I4Njdh
ZWQ1NThmYmI3NTNiYzY1MmYxOGIwYWNiNjlhMDAyMy4uNmZhN2FlYmVlNGYyN2JkNDNjMTcwNjZj
YmI3YmI4M2E2ODQyZDRjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgKQEAgLTI5LDYgKzI5LDEwIEBACiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAorbmFtZXNw
YWNlIFdURiB7CitjbGFzcyBTdHJpbmc7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBj
bGFzcyBSZXNvdXJjZUhhbmRsZTsKICAgICBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CkBAIC01NCw2
ICs1OCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkb3dubG9hZEZpbmlzaGVkKERvd25sb2FkKik7
CiAgICAgYm9vbCBpc0Rvd25sb2FkaW5nKCkgY29uc3QgeyByZXR1cm4gIW1fZG93bmxvYWRzLmlz
RW1wdHkoKTsgfQogCisjaWYgUExBVEZPUk0oUVQpCisgICAgdm9pZCBzdGFydFRyYW5zZmVyKHVp
bnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFdURjo6U3RyaW5nJiBkZXN0aW5hdGlvbik7CisjZW5k
aWYKKwogcHJpdmF0ZToKICAgICBEb3dubG9hZE1hbmFnZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvRG93bmxvYWRRdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9Eb3dubG9hZFF0LmNwcAppbmRleCA5
ZWU5OTk1ZTgwZTg4MGRkYTZkMjdjOWEzYjUwZjBjMTYxZGVhMGUwLi40ZWVmNDFjNDBiNmM3NjQ5
YmE5MDU0MzQ2ZTI4MTZhYTg5NTQwZDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0Rvd25sb2Fkcy9xdC9Eb3dubG9hZFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9Eb3dubG9hZFF0LmNwcApAQCAtNDYsMTMgKzQ2LDE0IEBA
IHZvaWQgRG93bmxvYWQ6OnN0YXJ0KFdlYlBhZ2UqIGluaXRpYXRpbmdXZWJQYWdlKQogICAgIEFT
U0VSVCghbV9xdERvd25sb2FkZXIpOwogCiAgICAgbV9xdERvd25sb2FkZXIgPSBuZXcgUXRGaWxl
RG93bmxvYWRlcih0aGlzLCBhZG9wdFB0cihtYW5hZ2VyLT5nZXQobV9yZXF1ZXN0LnRvTmV0d29y
a1JlcXVlc3QoKSkpKTsKLSAgICBtX3F0RG93bmxvYWRlci0+c3RhcnQoKTsKKyAgICBtX3F0RG93
bmxvYWRlci0+aW5pdCgpOwogfQogCiB2b2lkIERvd25sb2FkOjpzdGFydFdpdGhIYW5kbGUoV2Vi
UGFnZSogaW5pdGlhdGluZ1BhZ2UsIFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgaW5pdGlhbFJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Ap
CiB7CiAgICAgQVNTRVJUKCFtX3F0RG93bmxvYWRlcik7CiAgICAgbV9xdERvd25sb2FkZXIgPSBu
ZXcgUXRGaWxlRG93bmxvYWRlcih0aGlzLCBhZG9wdFB0cihoYW5kbGUtPmdldEludGVybmFsKCkt
Pm1fam9iLT5yZWxlYXNlKCkpKTsKKyAgICBtX3F0RG93bmxvYWRlci0+aW5pdCgpOwogfQogCiB2
b2lkIERvd25sb2FkOjpjYW5jZWwoKQpAQCAtNzAsNyArNzEsMTIgQEAgdm9pZCBEb3dubG9hZDo6
cGxhdGZvcm1JbnZhbGlkYXRlKCkKIAogdm9pZCBEb3dubG9hZDo6ZGlkRGVjaWRlRGVzdGluYXRp
b24oY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbiwgYm9vbCBhbGxvd092ZXJ3cml0ZSkKIHsKLSAg
ICBtX3F0RG93bmxvYWRlci0+ZGVjaWRlZERlc3RpbmF0aW9uKGRlc3RpbmF0aW9uLCBhbGxvd092
ZXJ3cml0ZSk7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBEb3dubG9hZDo6c3Rh
cnRUcmFuc2Zlcihjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uKQoreworICAgIG1fcXREb3dubG9h
ZGVyLT5zdGFydFRyYW5zZmVyKGRlc3RpbmF0aW9uKTsKIH0KIAogdm9pZCBEb3dubG9hZDo6cGxh
dGZvcm1EaWRGaW5pc2goKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9E
b3dubG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3dubG9hZGVyLmNwcAppbmRleCBjOTM2YjA4ZTcwZjkw
NGNmNGI1YjMzNmY1NGI3MjY5NzdkYmVkMGY5Li4yMGE1NmU3ZDk1YzNmMWY0NzMwODIxYWNjNDcy
Y2I1NThjMWJlMWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25s
b2Fkcy9xdC9RdEZpbGVEb3dubG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3dubG9hZGVyLmNwcApAQCAtNTMsNDUgKzUzLDQxIEBA
IFF0RmlsZURvd25sb2FkZXI6On5RdEZpbGVEb3dubG9hZGVyKCkKICAgICBhYm9ydERvd25sb2Fk
V3JpdGluZ0FuZEVtaXRFcnJvcihRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9yQWJvcnRl
ZCk7CiB9CiAKLXZvaWQgUXRGaWxlRG93bmxvYWRlcjo6c3RhcnQoKQordm9pZCBRdEZpbGVEb3du
bG9hZGVyOjppbml0KCkKIHsKICAgICBjb25uZWN0KG1fcmVwbHkuZ2V0KCksIFNJR05BTChyZWFk
eVJlYWQoKSksIFNMT1Qob25SZWFkeVJlYWQoKSkpOwogICAgIGNvbm5lY3QobV9yZXBseS5nZXQo
KSwgU0lHTkFMKGZpbmlzaGVkKCkpLCBTTE9UKG9uRmluaXNoZWQoKSkpOwogICAgIGNvbm5lY3Qo
bV9yZXBseS5nZXQoKSwgU0lHTkFMKGVycm9yKFFOZXR3b3JrUmVwbHk6Ok5ldHdvcmtFcnJvcikp
LCBTTE9UKG9uRXJyb3IoUU5ldHdvcmtSZXBseTo6TmV0d29ya0Vycm9yKSkpOwotCi0gICAgLy8g
Q2FsbCBvblJlYWR5UmVhZCBqdXN0IGluIGNhc2Ugc29tZSBkYXRhIGlzIGFscmVhZHkgd2FpdGlu
Zy4KLSAgICBvblJlYWR5UmVhZCgpOwogfQogCi12b2lkIFF0RmlsZURvd25sb2FkZXI6OmRldGVy
bWluZUZpbGVuYW1lKCkKK1FTdHJpbmcgUXRGaWxlRG93bmxvYWRlcjo6ZGV0ZXJtaW5lRmlsZW5h
bWUoKQogewogICAgIEFTU0VSVCghbV9kZXN0aW5hdGlvbkZpbGUpOwogCi0gICAgUVN0cmluZyBm
aWxlTmFtZUNhbmRpZGF0ZSA9IGZpbGVuYW1lRnJvbUhUVFBDb250ZW50RGlzcG9zaXRpb24oUVN0
cmluZzo6ZnJvbUxhdGluMShtX3JlcGx5LT5yYXdIZWFkZXIoIkNvbnRlbnQtRGlzcG9zaXRpb24i
KSkpOwotICAgIGlmIChmaWxlTmFtZUNhbmRpZGF0ZS5pc0VtcHR5KCkpIHsKKyAgICBRU3RyaW5n
IGZpbGVuYW1lQ2FuZGlkYXRlID0gZmlsZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlvbihR
U3RyaW5nOjpmcm9tTGF0aW4xKG1fcmVwbHktPnJhd0hlYWRlcigiQ29udGVudC1EaXNwb3NpdGlv
biIpKSk7CisgICAgaWYgKGZpbGVuYW1lQ2FuZGlkYXRlLmlzRW1wdHkoKSkgewogICAgICAgICBL
VVJMIGt1cmwgPSBtX3JlcGx5LT51cmwoKTsKLSAgICAgICAgZmlsZU5hbWVDYW5kaWRhdGUgPSBk
ZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoa3VybC5sYXN0UGF0aENvbXBvbmVudCgpKTsKKyAgICAg
ICAgZmlsZW5hbWVDYW5kaWRhdGUgPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoa3VybC5sYXN0
UGF0aENvbXBvbmVudCgpKTsKICAgICB9CiAKLSAgICBpZiAoZmlsZU5hbWVDYW5kaWRhdGUuaXNF
bXB0eSgpKSB7CisgICAgaWYgKGZpbGVuYW1lQ2FuZGlkYXRlLmlzRW1wdHkoKSkgewogICAgICAg
ICBhYm9ydERvd25sb2FkV3JpdGluZ0FuZEVtaXRFcnJvcihRdEZpbGVEb3dubG9hZGVyOjpEb3du
bG9hZEVycm9yQ2Fubm90RGV0ZXJtaW5lRmlsZW5hbWUpOwotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiBRU3RyaW5nKCk7CiAgICAgfQogCiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgd2Ug
cmVtb3ZlIHBvc3NpYmxlICIuLi8uLiIgcGFydHMgaW4gdGhlIGdpdmVuIGZpbGUgbmFtZS4KLSAg
ICBRRmlsZUluZm8gZmlsZU5hbWVGaWx0ZXIoZmlsZU5hbWVDYW5kaWRhdGUpOwotICAgIFFTdHJp
bmcgZmlsZU5hbWUgPSBmaWxlTmFtZUZpbHRlci5maWxlTmFtZSgpOworICAgIFFGaWxlSW5mbyBm
aWxlbmFtZUZpbHRlcihmaWxlbmFtZUNhbmRpZGF0ZSk7CisgICAgUVN0cmluZyBmaWxlbmFtZSA9
IGZpbGVuYW1lRmlsdGVyLmZpbGVOYW1lKCk7CiAKLSAgICBpZiAoZmlsZU5hbWUuaXNFbXB0eSgp
KSB7CisgICAgaWYgKGZpbGVuYW1lLmlzRW1wdHkoKSkgewogICAgICAgICBhYm9ydERvd25sb2Fk
V3JpdGluZ0FuZEVtaXRFcnJvcihRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9yQ2Fubm90
RGV0ZXJtaW5lRmlsZW5hbWUpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBRU3Ry
aW5nKCk7CiAgICAgfQogCi0gICAgYm9vbCBhbGxvd092ZXJ3cml0ZTsKLSAgICBtX2Rvd25sb2Fk
LT5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShmaWxlTmFtZSwgYWxsb3dP
dmVyd3JpdGUpOworICAgIHJldHVybiBmaWxlbmFtZTsKIH0KIAotdm9pZCBRdEZpbGVEb3dubG9h
ZGVyOjpkZWNpZGVkRGVzdGluYXRpb24oY29uc3QgUVN0cmluZyYgZGVjaWRlZEZpbGVQYXRoLCBi
b29sIGFsbG93T3ZlcndyaXRlKQordm9pZCBRdEZpbGVEb3dubG9hZGVyOjpzdGFydFRyYW5zZmVy
KGNvbnN0IFFTdHJpbmcmIGRlY2lkZWRGaWxlUGF0aCkKIHsKICAgICBBU1NFUlQoIW1fZGVzdGlu
YXRpb25GaWxlKTsKIApAQCAtMTAyLDE0ICs5OCwxNCBAQCB2b2lkIFF0RmlsZURvd25sb2FkZXI6
OmRlY2lkZWREZXN0aW5hdGlvbihjb25zdCBRU3RyaW5nJiBkZWNpZGVkRmlsZVBhdGgsIGJvb2wg
YQogICAgIH0KIAogICAgIGlmIChkZWNpZGVkRmlsZVBhdGguaXNFbXB0eSgpKSB7Ci0gICAgICAg
IGFib3J0RG93bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKFF0RmlsZURvd25sb2FkZXI6OkRvd25s
b2FkRXJyb3JDYW5jZWxsZWRCeUNhbGxlcik7CisgICAgICAgIGFib3J0RG93bmxvYWRXcml0aW5n
QW5kRW1pdEVycm9yKFF0RmlsZURvd25sb2FkZXI6OkRvd25sb2FkRXJyb3JDYW5jZWxsZWQpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgT3duUHRyPFFGaWxlPiBkb3dubG9hZEZpbGUg
PSBhZG9wdFB0cihuZXcgUUZpbGUoZGVjaWRlZEZpbGVQYXRoKSk7CiAKLSAgICBpZiAoIWFsbG93
T3ZlcndyaXRlICYmIGRvd25sb2FkRmlsZS0+ZXhpc3RzKCkpIHsKLSAgICAgICAgYWJvcnREb3du
bG9hZFdyaXRpbmdBbmRFbWl0RXJyb3IoUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvckZp
bGVBbHJlYWR5RXhpc3RzKTsKKyAgICBpZiAoZG93bmxvYWRGaWxlLT5leGlzdHMoKSkgeworICAg
ICAgICBhYm9ydERvd25sb2FkV3JpdGluZ0FuZEVtaXRFcnJvcihRdEZpbGVEb3dubG9hZGVyOjpE
b3dubG9hZEVycm9yRGVzdGluYXRpb25BbHJlYWR5RXhpc3RzKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtMTMzLDcgKzEyOSw2IEBAIHZvaWQgUXRGaWxlRG93bmxvYWRlcjo6ZGVjaWRl
ZERlc3RpbmF0aW9uKGNvbnN0IFFTdHJpbmcmIGRlY2lkZWRGaWxlUGF0aCwgYm9vbCBhCiAgICAg
Ly8gZnVuY3Rpb24gd2FzIGNhbGxlZC4KICAgICBpZiAobV9yZXBseS0+aXNGaW5pc2hlZCgpKQog
ICAgICAgICBvbkZpbmlzaGVkKCk7Ci0KIH0KIAogdm9pZCBRdEZpbGVEb3dubG9hZGVyOjphYm9y
dERvd25sb2FkV3JpdGluZ0FuZEVtaXRFcnJvcihRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVy
cm9yIGVycm9yQ29kZSkKQEAgLTE1NywxMCArMTUyLDEwIEBAIHZvaWQgUXRGaWxlRG93bmxvYWRl
cjo6YWJvcnREb3dubG9hZFdyaXRpbmdBbmRFbWl0RXJyb3IoUXRGaWxlRG93bmxvYWRlcjo6RG93
bmxvCiAgICAgY2FzZSBRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9yQ2Fubm90T3BlbkZp
bGU6CiAgICAgICAgIHRyYW5zbGF0ZWRFcnJvck1lc3NhZ2UgPSBRQ29yZUFwcGxpY2F0aW9uOjp0
cmFuc2xhdGUoIlF0RmlsZURvd25sb2FkZXIiLCAiQ2Fubm90IG9wZW4gZmlsZSBmb3Igd3JpdGlu
ZyIpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFF0RmlsZURvd25sb2FkZXI6OkRvd25sb2Fk
RXJyb3JGaWxlQWxyZWFkeUV4aXN0czoKLSAgICAgICAgdHJhbnNsYXRlZEVycm9yTWVzc2FnZSA9
IFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUXRGaWxlRG93bmxvYWRlciIsICJGaWxlIGFs
cmVhZHkgZXhpc3RzIik7CisgICAgY2FzZSBRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9y
RGVzdGluYXRpb25BbHJlYWR5RXhpc3RzOgorICAgICAgICB0cmFuc2xhdGVkRXJyb3JNZXNzYWdl
ID0gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRdEZpbGVEb3dubG9hZGVyIiwgIkRlc3Rp
bmF0aW9uIGFscmVhZHkgZXhpc3RzIik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUXRGaWxl
RG93bmxvYWRlcjo6RG93bmxvYWRFcnJvckNhbmNlbGxlZEJ5Q2FsbGVyOgorICAgIGNhc2UgUXRG
aWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvckNhbmNlbGxlZDoKICAgICAgICAgdHJhbnNsYXRl
ZEVycm9yTWVzc2FnZSA9IFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUXRGaWxlRG93bmxv
YWRlciIsICJEb3dubG9hZCBjYW5jZWxsZWQgYnkgY2FsbGVyIik7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvckNhbm5vdERldGVybWluZUZp
bGVuYW1lOgpAQCAtMjAwLDE2ICsxOTUsMTkgQEAgdm9pZCBRdEZpbGVEb3dubG9hZGVyOjpvblJl
YWR5UmVhZCgpCiAgICAgICAgIFN0cmluZyBjb250ZW50VHlwZSA9IG1fcmVwbHktPmhlYWRlcihR
TmV0d29ya1JlcXVlc3Q6OkNvbnRlbnRUeXBlSGVhZGVyKS50b1N0cmluZygpOwogICAgICAgICBT
dHJpbmcgZW5jb2RpbmcgPSBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVudFR5cGUp
OwogICAgICAgICBTdHJpbmcgbWltZVR5cGUgPSBleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBl
KGNvbnRlbnRUeXBlKTsKKyAgICAgICAgU3RyaW5nIGZpbGVuYW1lID0gZGV0ZXJtaW5lRmlsZW5h
bWUoKTsKKworICAgICAgICAvLyBJZiBmaWxlbmFtZSBpcyBlbXB0eSBpdCBtZWFucyBkZXRlcm1p
bmVGaWxlbmFtZSBhYm9ydGVkIGFuZCBlbWl0dGVkIGFuIGVycm9yLgorICAgICAgICBpZiAoZmls
ZW5hbWUuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIC8vIExldCdz
IHRyeSB0byBndWVzcyBmcm9tIHRoZSBleHRlbnNpb24uCiAgICAgICAgIGlmIChtaW1lVHlwZS5p
c0VtcHR5KCkpCiAgICAgICAgICAgICBtaW1lVHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6OmdldE1J
TUVUeXBlRm9yUGF0aChtX3JlcGx5LT51cmwoKS5wYXRoKCkpOwogCi0gICAgICAgIFJlc291cmNl
UmVzcG9uc2UgcmVzcG9uc2UobV9yZXBseS0+dXJsKCksIG1pbWVUeXBlLCBtX3JlcGx5LT5oZWFk
ZXIoUU5ldHdvcmtSZXF1ZXN0OjpDb250ZW50TGVuZ3RoSGVhZGVyKS50b0xvbmdMb25nKCksIGVu
Y29kaW5nLCBTdHJpbmcoKSk7CisgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UobV9y
ZXBseS0+dXJsKCksIG1pbWVUeXBlLCBtX3JlcGx5LT5oZWFkZXIoUU5ldHdvcmtSZXF1ZXN0OjpD
b250ZW50TGVuZ3RoSGVhZGVyKS50b0xvbmdMb25nKCksIGVuY29kaW5nLCBmaWxlbmFtZSk7CiAg
ICAgICAgIG1fZG93bmxvYWQtPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7CiAKLSAgICAg
ICAgZGV0ZXJtaW5lRmlsZW5hbWUoKTsKLQogICAgICAgICBtX2hlYWRlcnNSZWFkID0gdHJ1ZTsK
ICAgICB9CiB9CkBAIC0yMjMsNiArMjIxLDggQEAgdm9pZCBRdEZpbGVEb3dubG9hZGVyOjpvbkZp
bmlzaGVkKCkKIAogICAgIGlmIChtX2Vycm9yID09IFFOZXR3b3JrUmVwbHk6Ok5vRXJyb3IpCiAg
ICAgICAgIG1fZG93bmxvYWQtPmRpZEZpbmlzaCgpOworICAgIGVsc2UgaWYgIChtX2Vycm9yID09
IFFOZXR3b3JrUmVwbHk6Ok9wZXJhdGlvbkNhbmNlbGVkRXJyb3IpCisgICAgICAgIGFib3J0RG93
bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKFF0RmlsZURvd25sb2FkZXI6OkRvd25sb2FkRXJyb3JD
YW5jZWxsZWQpOwogICAgIGVsc2UKICAgICAgICAgYWJvcnREb3dubG9hZFdyaXRpbmdBbmRFbWl0
RXJyb3IoUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvck5ldHdvcmtGYWlsdXJlKTsKIH0K
QEAgLTIzNSw2ICsyMzUsNyBAQCB2b2lkIFF0RmlsZURvd25sb2FkZXI6Om9uRXJyb3IoUU5ldHdv
cmtSZXBseTo6TmV0d29ya0Vycm9yIGNvZGUpCiB2b2lkIFF0RmlsZURvd25sb2FkZXI6OmNhbmNl
bCgpCiB7CiAgICAgbV9yZXBseS0+YWJvcnQoKTsKKyAgICAvLyBRdEZpbGVEb3dubG9hZGVyOjpv
bkZpbmlzaGVkKCkgd2lsbCBiZSBjYWxsZWQgYW5kIHdpbGwgcmFpc2UgYSBEb3dubG9hZEVycm9y
Q2FuY2VsbGVkLgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L1F0RmlsZURvd25sb2FkZXIuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L1F0RmlsZURvd25sb2FkZXIuaApp
bmRleCBiNmI4YmEyOGJlYTlmOGFiMWQ2OTRjODQzMzQxNDRhNGEyYzlkMTViLi4xMDIxOTA1N2E1
NmI0OTg1MzkyMTUzNzZlZDM1YTVlMmJkNDEzZTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3dubG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5oCkBAIC00
NCwxNiArNDQsMTYgQEAgY2xhc3MgUXRGaWxlRG93bmxvYWRlciA6IHB1YmxpYyBRT2JqZWN0IHsK
IHB1YmxpYzoKICAgICBRdEZpbGVEb3dubG9hZGVyKERvd25sb2FkKiwgUGFzc093blB0cjxRTmV0
d29ya1JlcGx5Pik7CiAgICAgdmlydHVhbCB+UXRGaWxlRG93bmxvYWRlcigpOwotICAgIHZvaWQg
ZGVjaWRlZERlc3RpbmF0aW9uKGNvbnN0IFFTdHJpbmcmIGRlY2lkZWRGaWxlUGF0aCwgYm9vbCBh
bGxvd092ZXJ3cml0ZSk7CiAgICAgdm9pZCBjYW5jZWwoKTsKLSAgICB2b2lkIHN0YXJ0KCk7Cisg
ICAgdm9pZCBpbml0KCk7CisgICAgdm9pZCBzdGFydFRyYW5zZmVyKGNvbnN0IFFTdHJpbmcmIGRl
c3RpbmF0aW9uKTsKIAogICAgIGVudW0gRG93bmxvYWRFcnJvciB7CiAgICAgICAgIERvd25sb2Fk
RXJyb3JBYm9ydGVkID0gMCwKICAgICAgICAgRG93bmxvYWRFcnJvckNhbm5vdFdyaXRlVG9GaWxl
LAogICAgICAgICBEb3dubG9hZEVycm9yQ2Fubm90T3BlbkZpbGUsCi0gICAgICAgIERvd25sb2Fk
RXJyb3JGaWxlQWxyZWFkeUV4aXN0cywKLSAgICAgICAgRG93bmxvYWRFcnJvckNhbmNlbGxlZEJ5
Q2FsbGVyLAorICAgICAgICBEb3dubG9hZEVycm9yRGVzdGluYXRpb25BbHJlYWR5RXhpc3RzLAor
ICAgICAgICBEb3dubG9hZEVycm9yQ2FuY2VsbGVkLAogICAgICAgICBEb3dubG9hZEVycm9yQ2Fu
bm90RGV0ZXJtaW5lRmlsZW5hbWUsCiAgICAgICAgIERvd25sb2FkRXJyb3JOZXR3b3JrRmFpbHVy
ZQogICAgIH07CkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGUgc2xvdHM6CiAKIHByaXZhdGU6CiAg
ICAgdm9pZCBhYm9ydERvd25sb2FkV3JpdGluZ0FuZEVtaXRFcnJvcihRdEZpbGVEb3dubG9hZGVy
OjpEb3dubG9hZEVycm9yKTsKLSAgICB2b2lkIGRldGVybWluZUZpbGVuYW1lKCk7CisgICAgUVN0
cmluZyBkZXRlcm1pbmVGaWxlbmFtZSgpOwogCiAgICAgRG93bmxvYWQqIG1fZG93bmxvYWQ7CiAg
ICAgT3duUHRyPFFOZXR3b3JrUmVwbHk+IG1fcmVwbHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcAppbmRleCBlOGFhN2FkYTRiNmU1ZTZhZjE2YTQ3MzgzZjkyYzQwN2Iy
ODY4YTVmLi5iZDY5Y2FkN2VkYjA1ZjViYTlhNGFiYzA1NjNhMzc2MmFmMzdlNTY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTk1Nyw2ICs5NTcsMTMgQEAg
dm9pZCBXZWJQcm9jZXNzOjpjYW5jZWxEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElEKQogICAg
IERvd25sb2FkTWFuYWdlcjo6c2hhcmVkKCkuY2FuY2VsRG93bmxvYWQoZG93bmxvYWRJRCk7CiB9
CiAKKyNpZiBQTEFURk9STShRVCkKK3ZvaWQgV2ViUHJvY2Vzczo6c3RhcnRUcmFuc2Zlcih1aW50
NjRfdCBkb3dubG9hZElELCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uKQoreworICAgIERvd25s
b2FkTWFuYWdlcjo6c2hhcmVkKCkuc3RhcnRUcmFuc2Zlcihkb3dubG9hZElELCBkZXN0aW5hdGlv
bik7Cit9CisjZW5kaWYKKwogdm9pZCBXZWJQcm9jZXNzOjpzZXRFbmhhbmNlZEFjY2Vzc2liaWxp
dHkoYm9vbCBmbGFnKQogewogICAgIFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnNldEVuaGFuY2Vk
VXNlckludGVyZmFjZUFjY2Vzc2liaWxpdHkoZmxhZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5oCmluZGV4IDBkNWQ3NGE5YzFjMTQ5MTJkMjM2ZGQzODRmNjUzNjAzMWI0MTQx
MzIuLjM5ZjhhNWYwY2U4OGMwODAzZmIyOTY2OTBhNmNmNzRlNjFlNjJkMmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0xNzUsNiArMTc1LDkgQEAgcHJpdmF0ZToK
IAogICAgIHZvaWQgZG93bmxvYWRSZXF1ZXN0KHVpbnQ2NF90IGRvd25sb2FkSUQsIHVpbnQ2NF90
IGluaXRpYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAg
IHZvaWQgY2FuY2VsRG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCk7CisjaWYgUExBVEZPUk0o
UVQpCisgICAgdm9pZCBzdGFydFRyYW5zZmVyKHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFN0
cmluZyYgZGVzdGluYXRpb24pOworI2VuZGlmCiAKICAgICB2b2lkIHNldFRleHRDaGVja2VyU3Rh
dGUoY29uc3QgVGV4dENoZWNrZXJTdGF0ZSYpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDQ0ZjQ0MTlhMDc4N2ZjNzc1
OWNjNTJiM2U1NDQzNWY3OTVmYzM4ZjguLmY5MTk2YWUyYTk4ZDE3YjY4M2FkNDc2MGMwYjVmNDk3
YTE1ZWZjODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4KQEAgLTY0LDYgKzY0LDkgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyB7CiAg
ICAgIyB0d28gbWVzc2FnZXMuCiAgICAgRG93bmxvYWRSZXF1ZXN0KHVpbnQ2NF90IGRvd25sb2Fk
SUQsIHVpbnQ2NF90IGluaXRpYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0KQogICAgIENhbmNlbERvd25sb2FkKHVpbnQ2NF90IGRvd25sb2FkSUQpCisjaWYgUExB
VEZPUk0oUVQpCisgICAgU3RhcnRUcmFuc2Zlcih1aW50NjRfdCBkb3dubG9hZElELCBXVEY6OlN0
cmluZyBkZXN0aW5hdGlvbikKKyNlbmRpZgogCiAgICAgU2V0VGV4dENoZWNrZXJTdGF0ZShXZWJL
aXQ6OlRleHRDaGVja2VyU3RhdGUgdGV4dENoZWNrZXJTdGF0ZSkKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113331</attachid>
            <date>2011-11-02 10:44:12 -0700</date>
            <delta_ts>2011-11-02 12:24:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68962-20111102194337.patch</filename>
            <type>text/plain</type>
            <size>63860</size>
            <attacher name="Jesus Sanchez-Palencia">jesus</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkwNTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggM2ZhNzJkYTIyNjdi
OWNkMWI3ZmRmMjA4MDdjYTNhOGU1MWE2ZWFjYS4uNGNhYjE1MDc3ZGYxOTZhM2YzY2NlMTIyM2Iw
NWViYTM2NDAyMjVmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0xMS0w
MiAgSmVzdXMgU2FuY2hlei1QYWxlbmNpYSAgPGplc3VzLnBhbGVuY2lhQG9wZW5ib3NzYS5vcmc+
CisKKyAgICAgICAgW1F0XVtXSzJdIERvd25sb2FkIHN1cHBvcnQgYW5kIEFQSSBpbiBVSVByb2Nl
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4OTYy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVnaXN0
ZXJpbmcgbmV3IHFtbCB0eXBlIFFXZWJEb3dubG9hZEl0ZW0uCisKKyAgICAgICAgKiBkZWNsYXJh
dGl2ZS9wbHVnaW4uY3BwOgorICAgICAgICAoV2ViS2l0UW1sUGx1Z2luOjpyZWdpc3RlclR5cGVz
KToKKwogMjAxMS0xMS0wMSAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5j
b20+CiAKICAgICAgICAgW1F0XVtXSzJdIEZpeCBidWlsZCBvZiBXZWJLaXRUZXN0UnVubmVyIHdp
dGggRUxGIHN5bWJvbCB2aXNpYmlsaXR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMmIyYWEwOTc1ZjI2NWY0MzJh
YjNlNDRlMGIyMGFlNTZlODE2N2M4OC4uNThmNzFhNzliMDYwNWVmZmFhZTAwYTRlNmUzZjgwMmU3
ZjVlOGFhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0OSBAQAorMjAxMS0xMS0wMiAgSmVzdXMg
U2FuY2hlei1QYWxlbmNpYSAgPGplc3VzLnBhbGVuY2lhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAg
ICAgW1F0XVtXSzJdIERvd25sb2FkIHN1cHBvcnQgYW5kIEFQSSBpbiBVSVByb2Nlc3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4OTYyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgaW1wbGVtZW50IG91
ciBXa0NvbnRleHREb3dubG9hZENsaWVudCBhbmQgdGhlIG5lZWRlZCBjYWxsYmFja3MuCisgICAg
ICAgIFdlIGFsc28gYWRkIEFQSXMgYnkgZXhwb3NpbmcgUVdlYkRvd25sb2FkSXRlbS4gT2JqZWN0
cyBmcm9tIHRoaXMgdHlwZQorICAgICAgICBoYXZlIHRoZWlyIG93bmVyc2hpcCBoYW5kbGVkIGJ5
IFFEZXNrdG9wV2ViVmlldyBhbmQgd2lsbCBiZSBjcmVhdGVkIG9yCisgICAgICAgIGRlc3Ryb3ll
ZCBhcyBuZWVkZWQuIENsYXNzZXMgaW1wbGVtZW50aW5nIFZpZXdJbnRlcmZhY2UgKFFEZXNrdG9w
V2ViVmlld1ByaXZhdGUKKyAgICAgICAgYW5kIFRvdWNoVmlld0ludGVyZmFjZSkgd2lsbCByZWNl
aXZlIGEgc2lnbmFsIChkb3dubG9hZFJlcXVlc3RlZCkgd2l0aCBhIHBvaW50ZXIKKyAgICAgICAg
dG8gdGhlIHJlY2VudGx5IGNyZWF0ZWQgUVdlYkRvd25sb2FkSXRlbS4gV2l0aCB0aGF0IHRoZXkg
Y2FuIGNvbm5lY3QgdGhlIHByb3BlcgorICAgICAgICBzaWduYWxzIGFuZCBzbG90cywgc2V0IHRo
ZSBkb3dubG9hZCBkZXN0aW5hdGlvbiBwYXRoIGFuZCB0aGVuIGNhbGwgc3RhcnQoKS4KKyAgICAg
ICAgT2JqZWN0cyBvZiB0aGlzIHR5cGUgd2lsbCBwcm92aWRlIHRoZSBwcm9ncmVzcyBvZiBhIGRv
d25sb2FkLCBhIHNsb3QgdG8gY2FuY2VsIGl0LAorICAgICAgICBhbmQgc2lnbmFscyBmb3IgZ2V0
dGluZyBmaW5pc2hlZCBvciBmYWlsdXJlIHN0YXR1cy4KKyAgICAgICAgUVdlYkRvd25sb2FkSXRl
bSB3YXMgYWxzbyBleHBvc2VkIGluIFFNTC4KKyAgICAgICAgUXQgbmVlZGVkIGFuIGFzeW5jaHJv
bm91cyB3YXkgZm9yIFVJUHJvY2VzcyB0byByZXR1cm4gYSBkZXN0aW5hdGlvbiBwYXRoIHRvIFdl
YlByb2Nlc3MsCisgICAgICAgIHRoZXJlZm9yZSB0aGUgc3RhcnRUcmFuc2ZlciBBUEkgd2FzIGFk
ZGVkIHRvIFdlYktpdDIncyBEb3dubG9hZCBoYW5kbGVycy4KKworICAgICAgICAqIFNoYXJlZC9x
dC9XZWJDb3JlQXJndW1lbnRDb2RlcnNRdC5jcHA6CisgICAgICAgIChDb3JlSVBDOjo6OmVuY29k
ZSk6CisgICAgICAgIChDb3JlSVBDOjo6OmRlY29kZSk6CisgICAgICAgIEFkZCBlbmNvZGluZyBh
bmQgZGVjb2Rpbmcgb2Ygc3VnZ2VzdGVkRmlsZW5hbWUgZm9yIFJlc291cmNlUmVzcG9uc2UuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L1dLVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvcXQvcWJhc2V3ZWJ2aWV3Lmg6IEFkZCBzaWduYWwgZG93bmxvYWRSZXF1ZXN0ZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwOgorICAgICAgICAo
UURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6ZG93bmxvYWRSZXF1ZXN0ZWQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3X3AuaDoKKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvcXQvcXdlYmRvd25sb2FkaXRlbS5jcHA6IEFkZGVkLgorICAgICAgICAoUVdlYkRvd25s
b2FkSXRlbVByaXZhdGU6OlFXZWJEb3dubG9hZEl0ZW1Qcml2YXRlKToKKyAgICAgICAgKFFXZWJE
b3dubG9hZEl0ZW06OlFXZWJEb3dubG9hZEl0ZW0pOgorICAgICAgICAoUVdlYkRvd25sb2FkSXRl
bTo6flFXZWJEb3dubG9hZEl0ZW0pOgorICAgICAgICAoUVdlYkRvd25sb2FkSXRlbTo6dXJsKToK
KyAgICAgICAgKFFXZWJEb3dubG9hZEl0ZW06OmRlc3RpbmF0aW9uUGF0aCk6CisgICAgICAgIChR
V2ViRG93bmxvYWRJdGVtOjpzZXREZXN0aW5hdGlvblBhdGgpOgorICAgICAgICAoUVdlYkRvd25s
b2FkSXRlbTo6c3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAoUVdlYkRvd25sb2FkSXRlbTo6
bWltZVR5cGUpOgorICAgICAgICAoUVdlYkRvd25sb2FkSXRlbTo6ZXhwZWN0ZWRDb250ZW50TGVu
Z3RoKToKKyAgICAgICAgKFFXZWJEb3dubG9hZEl0ZW06OnRvdGFsQnl0ZXNSZWNlaXZlZCk6Cisg
ICAgICAgIChRV2ViRG93bmxvYWRJdGVtOjpjYW5jZWwpOgorICAgICAgICAoUVdlYkRvd25sb2Fk
SXRlbTo6c3RhcnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdlYmRvd25sb2FkaXRl
bS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F3ZWJkb3dubG9hZGl0ZW1f
cC5oOiBBZGRlZC4KKyAgICAgICAgKFFXZWJEb3dubG9hZEl0ZW1Qcml2YXRlOjpkaWRSZWNlaXZl
UmVzcG9uc2UpOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9E
ZXNrdG9wV2ViVmlldy90c3RfZG93bmxvYWQucW1sOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1vbi9kb3dubG9hZC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1vbi9kb3dubG9hZC56
aXA6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvcW1s
dGVzdHMucHJvOgorCisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6c3RhcnRUcmFuc2Zlcik6IFF0
IG9ubHkgZnVuY3Rpb24gYWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZFByb3h5Lmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOiBBZGRlZCBR
dCBzcGVjaWZpYyBmdW5jdGlvbiB0byBjYWxsIGRvd25sb2FkUmVxdWVzdGVkIGZyb20gUXRXZWJQ
YWdlUHJveHkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvbnRleHQ6OmRvd25sb2FkKToKKyAgICAgICAgVXNpbmcgV2ViUGFnZVBy
b3h5Ojpkb3dubG9hZFJlcXVlc3RlZCB0byBib290c3RyYXAgYSBkb3dubG9hZCB0aHJvdWdoIFBh
Z2VDbGllbnQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKToKKyAgICAg
ICAgVXNpbmcgZG93bmxvYWRSZXF1ZXN0ZWQoKSB0byBib290c3RyYXAgYSBkb3dubG9hZCB0aHJv
dWdoIFBhZ2VDbGllbnQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZG93bmxvYWRS
ZXF1ZXN0ZWQpOiBDYWxscyBQYWdlQ2xpZW50Ojpkb3dubG9hZFJlcXVlc3RlZCgpLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9xdC9R
dERvd25sb2FkTWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0Ojp0b1F0RG93bmxv
YWRNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6cXRfd2tfZGlkUmVjZWl2ZVJlc3BvbnNlKToK
KyAgICAgICAgKFdlYktpdDo6cXRfd2tfZGlkQ3JlYXRlRGVzdGluYXRpb24pOgorICAgICAgICAo
V2ViS2l0OjpxdF93a19kaWRGaW5pc2hEb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OnF0X3dr
X2RpZEZhaWxEb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OnF0X3drX2RpZFJlY2VpdmVEYXRh
Rm9yRG93bmxvYWQpOgorICAgICAgICAoUXREb3dubG9hZE1hbmFnZXI6OmRvd25sb2FkUmVjZWl2
ZWRSZXNwb25zZSk6IFdpbGwgcmVhY2ggUXRXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVEb3dubG9h
ZFJlc3BvbnNlLgorICAgICAgICAoUXREb3dubG9hZE1hbmFnZXI6OmRvd25sb2FkQ3JlYXRlZERl
c3RpbmF0aW9uKToKKyAgICAgICAgKFF0RG93bmxvYWRNYW5hZ2VyOjpkb3dubG9hZEZpbmlzaGVk
KToKKyAgICAgICAgKFF0RG93bmxvYWRNYW5hZ2VyOjpkb3dubG9hZEZhaWxlZCk6CisgICAgICAg
IChRdERvd25sb2FkTWFuYWdlcjo6ZG93bmxvYWREYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9xdC9RdERvd25sb2FkTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgQm9vdHN0cmFw
IG91ciBXS0NvbnRleHREb3dubG9hZENsaWVudCBhbmQgc2V0IGl0cyBjYWxsYmFja3MuCisgICAg
ICAgIFRoaXMgZW50aXR5IHdpbGwgYWxzbyBoYW5kbGUgYWxsIGRvd25sb2FkcyBhbmQga2VlcCBh
IG1hcCBvZiB0aGVtLgorICAgICAgICBJdCB3aWxsIGJlIGtlcHQgYWxpdmUgdG9nZXRoZXIgd2l0
aCB0aGUgV2ViQ29udGV4dCBhcyBhIHN0YXRpYyBtZW1iZXIKKyAgICAgICAgb2YgUXRXZWJQYWdl
UHJveHksIHNvIHdlIGNhbiBrZWVwIGl0IGFjcm9zcyBzZXZlcmFsIFdlYlBhZ2VzIGFuZCwgdGhl
cmVmb3JlLAorICAgICAgICBXZWJWaWV3cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFdl
YlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChRdFdlYlBhZ2VQcm94eTo6ZGVmYXVsdFdLQ29udGV4
dCk6CisgICAgICAgIChRdFdlYlBhZ2VQcm94eTo6flF0V2ViUGFnZVByb3h5KToKKyAgICAgICAg
KFF0V2ViUGFnZVByb3h5Ojpkb3dubG9hZFJlcXVlc3RlZCk6CisgICAgICAgIChRdFdlYlBhZ2VQ
cm94eTo6ZGlkUmVjZWl2ZURvd25sb2FkUmVzcG9uc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9x
dC9RdFdlYlBhZ2VQcm94eS5oOgorICAgICAgICBGcm9tIG5vdyBvbiBpdCB3aWxsIGtlZXAgYSBz
dGF0aWMgUXREb3dubG9hZE1hbmFnZXIgdG8gbGl2ZSB0b2dldGhlcgorICAgICAgICB3aXRoIHRo
ZSBkZWZhdWx0IFdlYkNvbnRleHQuIEl0IGltcGxlbWVudHMgUGFnZUNsaWVudDo6ZG93bmxvYWRS
ZXF1ZXN0ZWQuCisgICAgICAgIFF0V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlRG93bmxvYWRSZXNw
b25zZSB3aWxsIHRoZSB2aWV3J3Mgc2lnbmFsIGRvd25sb2FkUmVxdWVzdGVkLgorCisKKyAgICAg
ICAqIFVJUHJvY2Vzcy9xdC9RdFRvdWNoVmlld0ludGVyZmFjZS5oOgorICAgICAgICAoV2ViS2l0
OjpRdFRvdWNoVmlld0ludGVyZmFjZTo6ZG93bmxvYWRSZXF1ZXN0ZWQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9xdC9RdFZpZXdJbnRlcmZhY2UuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9xdC9x
d2ViZXJyb3IuY3BwOgorICAgICAgICAoUVdlYkVycm9yOjpkZXNjcmlwdGlvbik6CisgICAgICAg
ICogVUlQcm9jZXNzL3F0L3F3ZWJlcnJvci5oOgorICAgICAgICAoUVdlYkVycm9yOjplcnJvckNv
ZGVBc0Rvd25sb2FkRXJyb3IpOgorICAgICAgICBBZGQgRG93bmxvYWQgZXJyb3IgaGFuZGxpbmcg
dG8gUVdlYkVycm9yIGFuZCBhIG5ldyBBUEkKKyAgICAgICAgdG8gcmV0cmlldmUgdGhlIGVycm9y
IGRlc2NyaXB0aW9uIGZyb20gdGhlIG9yaWdpbmFsIFJlc291cmNlRXJyb3IuCisgICAgICAgIEFs
c28sIGl0IG5vdyBoYXMgUVdlYkRvd25sb2FkSXRlbTo6RG93bmxvYWRFcnJvciBlcnJvckNvZGVB
c0Rvd25sb2FkRXJyb3IoKQorICAgICAgICB0aGF0IHJldHVybnMgdGhlIGVycm9yIGNvZGUgYXMg
YSBEb3dubG9hZEVycm9yLgorCisgICAgICAgICogV2ViS2l0Mi5wcm86CisgICAgICAgICogV2Vi
S2l0MkFQSS5wcmk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6c3RhcnRUcmFuc2Zlcik6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg6CisgICAgICAgIEFkZGlu
ZyBRdCBzcGVjaWZpYyBzdGFydFRyYW5zZmVyIGZ1bmN0aW9uLgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9Eb3dubG9hZHMvcXQvRG93bmxvYWRRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkOjpzdGFydCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpzdGFydFdpdGhIYW5kbGUp
OgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6ZGlkRGVjaWRlRGVzdGluYXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpEb3dubG9hZDo6c3RhcnRUcmFuc2Zlcik6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9Eb3dubG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlF0RmlsZURvd25sb2FkZXI6OmluaXQpOiBzdGFydCgpIHdhcyByZW5hbWVkIHRvIGluaXQoKS4K
KyAgICAgICAgKFdlYktpdDo6UXRGaWxlRG93bmxvYWRlcjo6ZGV0ZXJtaW5lRmlsZW5hbWUpOgor
ICAgICAgICBDYWxsaW5nIG9uUmVhZHlSZWFkKCkgaGVyZSB3YXMgdW5uZWNlc3NhcnkgYW5kIGl0
IHdhcyB0cmlnZ2VyaW5nIHRoZSBvdmVyYWxsCisgICAgICAgIGRvd25sb2FkIHByb2Nlc3MgZXZl
biBiZWZvcmUgRG93bmxvYWRNYW5hZ2VyIGZpbmlzaGVkIHN0YXJ0RG93bmxvYWQoKS4gVGhpcwor
ICAgICAgICB3YXMgbGVhZGluZyB0byBhIERvd25sb2FkTWFuYWdlciB3aXRoIGFuIGVtcHR5IGxp
c3Qgb2YgZG93bmxvYWRzLgorICAgICAgICAoV2ViS2l0OjpRdEZpbGVEb3dubG9hZGVyOjpzdGFy
dFRyYW5zZmVyKTogZGVjaWRlZERlc3RpbmF0aW9uKCkgYmVjYW1lIHN0YXJ0VHJhbnNmZXIoKS4K
KyAgICAgICAgKFdlYktpdDo6UXRGaWxlRG93bmxvYWRlcjo6YWJvcnREb3dubG9hZFdyaXRpbmdB
bmRFbWl0RXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpRdEZpbGVEb3dubG9hZGVyOjpoYW5kbGVE
b3dubG9hZFJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6UXRGaWxlRG93bmxvYWRlcjo6b25S
ZWFkeVJlYWQpOgorICAgICAgICAoV2ViS2l0OjpRdEZpbGVEb3dubG9hZGVyOjpvbkZpbmlzaGVk
KToKKyAgICAgICAgKFdlYktpdDo6UXRGaWxlRG93bmxvYWRlcjo6Y2FuY2VsKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3dubG9hZGVyLmg6CisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
OjpzdGFydFRyYW5zZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgIEFkZGlu
ZyBRdCBzcGVjaWZpYyBtZXNzYWdlIFN0YXJ0VHJhbnNmZXIgYW5kIGhhbmRsaW5nIGZ1bmN0aW9u
LgorCiAyMDExLTExLTAyICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNv
bT4KIAogICAgICAgICBbUXRdW1dLMl0gQWRkIHN1cHBvcnQgZm9yIHRvdWNoIGV2ZW50IHRlc3Rp
bmcgdG8gV2ViS2l0VGVzdFJ1bm5lcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9kZWNs
YXJhdGl2ZS9wbHVnaW4uY3BwIGIvU291cmNlL1dlYktpdC9xdC9kZWNsYXJhdGl2ZS9wbHVnaW4u
Y3BwCmluZGV4IGNmM2JkZDRhMTJlYjY5NjU3MjRkYjlhNjVlYzdhNTNlYmU2NDljNTYuLmE1MWVk
YmM0ZDhjNTI5MGU4NTlmMmE0MDcyZGRmZTYyOTNkMWM0ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvcXQvZGVjbGFyYXRpdmUvcGx1Z2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L2Rl
Y2xhcmF0aXZlL3BsdWdpbi5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJxZGVza3Rv
cHdlYnZpZXcuaCIKICNpbmNsdWRlICJxdG91Y2h3ZWJwYWdlLmgiCiAjaW5jbHVkZSAicXRvdWNo
d2Vidmlldy5oIgorI2luY2x1ZGUgInF3ZWJkb3dubG9hZGl0ZW0uaCIKICNpbmNsdWRlICJxd2Vi
bmF2aWdhdGlvbmNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJxd2VicHJlZmVyZW5jZXMuaCIKIApA
QCAtNTUsNiArNTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIHFtbFJlZ2lzdGVyVW5jcmVhdGFibGVU
eXBlPFFXZWJQcmVmZXJlbmNlcz4odXJpLCAzLCAwLCAiV2ViUHJlZmVyZW5jZXMiLCBRT2JqZWN0
Ojp0cigiQ2Fubm90IGNyZWF0ZSBzZXBhcmF0ZSBpbnN0YW5jZSBvZiBXZWJQcmVmZXJlbmNlcyIp
KTsKICAgICAgICAgcW1sUmVnaXN0ZXJVbmNyZWF0YWJsZVR5cGU8UVRvdWNoV2ViUGFnZT4odXJp
LCAzLCAwLCAiVG91Y2hXZWJQYWdlIiwgUU9iamVjdDo6dHIoIkNhbm5vdCBjcmVhdGUgc2VwYXJh
dGUgaW5zdGFuY2Ugb2YgVG91Y2hXZWJQYWdlLCB1c2UgVG91Y2hXZWJWaWV3IikpOwogICAgICAg
ICBxbWxSZWdpc3RlclVuY3JlYXRhYmxlVHlwZTxRTmV0d29ya1JlcGx5Pih1cmksIDMsIDAsICJO
ZXR3b3JrUmVwbHkiLCBRT2JqZWN0Ojp0cigiQ2Fubm90IGNyZWF0ZSBzZXBhcmF0ZSBpbnN0YW5j
ZSBvZiBOZXR3b3JrUmVwbHkiKSk7CisgICAgICAgIHFtbFJlZ2lzdGVyVW5jcmVhdGFibGVUeXBl
PFFXZWJEb3dubG9hZEl0ZW0+KHVyaSwgNSwgMCwgIkRvd25sb2FkSXRlbSIsIFFPYmplY3Q6OnRy
KCJDYW5ub3QgY3JlYXRlIHNlcGFyYXRlIGluc3RhbmNlIG9mIERvd25sb2FkSXRlbSIpKTsKICNl
bmRpZgogICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzUXQuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1dlYkNv
cmVBcmd1bWVudENvZGVyc1F0LmNwcAppbmRleCAxZmMxNWM1OTZmNmZjZjdkOWY4ZDMzZmRlZWIz
M2MxZWVlMjg2YTdiLi45NTBkMzcyZDJkZGM3ZTQ2ZjgwNzc4Mzk1MGUwYzI4NzZlMzdkYjRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNRdC5jcHAKQEAgLTYxLDYgKzYxLDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVz
cG9uc2U+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBSZXMKICAgICBl
bmNvZGVyLT5lbmNvZGUocmVzb3VyY2VSZXNwb25zZS5taW1lVHlwZSgpKTsKICAgICBlbmNvZGVy
LT5lbmNvZGUoc3RhdGljX2Nhc3Q8aW50NjRfdD4ocmVzb3VyY2VSZXNwb25zZS5leHBlY3RlZENv
bnRlbnRMZW5ndGgoKSkpOwogICAgIGVuY29kZXItPmVuY29kZShyZXNvdXJjZVJlc3BvbnNlLnRl
eHRFbmNvZGluZ05hbWUoKSk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNlUmVzcG9uc2Uu
c3VnZ2VzdGVkRmlsZW5hbWUoKSk7CiB9CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJl
c3BvbnNlPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzb3VyY2VSZXNwb25zZSkKQEAgLTg3LDYgKzg4LDExIEBAIGJvb2wgQXJndW1lbnRDb2Rl
cjxSZXNvdXJjZVJlc3BvbnNlPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmVz
b3VyY2VSCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXNwb25zZS5zZXRUZXh0RW5jb2Rp
bmdOYW1lKHRleHRFbmNvZGluZ05hbWUpOwogCisgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1l
OworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHN1Z2dlc3RlZEZpbGVuYW1lKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIHJlc3BvbnNlLnNldFN1Z2dlc3RlZEZpbGVuYW1lKHN1Z2dlc3Rl
ZEZpbGVuYW1lKTsKKwogICAgIHJlc291cmNlUmVzcG9uc2UgPSByZXNwb25zZTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
V0tWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L1dLVmlldy5oCmluZGV4
IDMxZjY3MjZmOTM2YzZjN2MyMzFjNGU2YTc1ZjUxYWYzMGIyMDY2NmEuLjgyZGVhNDdmNWY2Yjlj
ODQ3MTBiZWM2YjYwNzc0M2NmZmY4MjBhM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvV0tWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9XS1ZpZXcuaApAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgPFdlYktpdDIvcWRlc2t0
b3B3ZWJ2aWV3Lmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9xdG91Y2h3ZWJ2aWV3Lmg+CiAjaW5jbHVk
ZSA8V2ViS2l0Mi9xdG91Y2h3ZWJwYWdlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9xd2ViZG93bmxv
YWRpdGVtLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9xd2VibmF2aWdhdGlvbmNvbnRyb2xsZXIuaD4K
ICNpbmNsdWRlIDxXZWJLaXQyL3F3ZWJwcmVmZXJlbmNlcy5oPgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FiYXNld2Vidmlldy5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xYmFzZXdlYnZpZXcuaAppbmRleCAyYWQ5MDI5NGFjMjlhZGIx
YzJmZDA1NGRjYzVjMThkZDdmYzJlZTQ4Li44NDQ4NWYxYjBjZTc3ODVjYWYyYjU5NzdlZGZkZjk1
NGQ4NTQ2ODE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Fi
YXNld2Vidmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWJhc2V3
ZWJ2aWV3LmgKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlIDxRdERlY2xhcmF0aXZlL3FxdWlj
a3BhaW50ZWRpdGVtLmg+CiAKIGNsYXNzIFFCYXNlV2ViVmlld1ByaXZhdGU7CitjbGFzcyBRV2Vi
RG93bmxvYWRJdGVtOwogY2xhc3MgUVdlYk5hdmlnYXRpb25Db250cm9sbGVyOwogY2xhc3MgUVdl
YlByZWZlcmVuY2VzOwogCkBAIC01Miw3ICs1Myw4IEBAIHB1YmxpYzoKICAgICBlbnVtIEVycm9y
VHlwZSB7CiAgICAgICAgIEVuZ2luZUVycm9yLAogICAgICAgICBOZXR3b3JrRXJyb3IsCi0gICAg
ICAgIEh0dHBFcnJvcgorICAgICAgICBIdHRwRXJyb3IsCisgICAgICAgIERvd25sb2FkRXJyb3IK
ICAgICB9OwogICAgIHZpcnR1YWwgflFCYXNlV2ViVmlldygpOwogCkBAIC03Nyw2ICs3OSw3IEBA
IFFfU0lHTkFMUzoKICAgICB2b2lkIGxvYWRGYWlsZWQoUUJhc2VXZWJWaWV3OjpFcnJvclR5cGUg
ZXJyb3JUeXBlLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBRVXJsJiB1cmwpOwogICAgIHZvaWQgbG9h
ZFByb2dyZXNzQ2hhbmdlZChpbnQgcHJvZ3Jlc3MpOwogICAgIHZvaWQgdXJsQ2hhbmdlZChjb25z
dCBRVXJsJiB1cmwpOworICAgIHZvaWQgZG93bmxvYWRSZXF1ZXN0ZWQoUVdlYkRvd25sb2FkSXRl
bSogZG93bmxvYWRJdGVtKTsKIAogcHJvdGVjdGVkOgogICAgIFFCYXNlV2ViVmlldyhRQmFzZVdl
YlZpZXdQcml2YXRlICZkZCwgUVF1aWNrSXRlbSAqcGFyZW50ID0gMCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHAKaW5kZXggOGIw
ODU1YzAzMWE5NTEwMzVlZjM3Mjg3NWQ1YTY2MWU2ZGJhNmNhNC4uODA5YTU5MTU4YzZmMDM3NjJk
NWI1NmMwYWNlMDJlMGViNzJmMWFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcApAQCAtMjUsMTEgKzI1LDEzIEBACiAjaW5j
bHVkZSAiUXRXZWJFcnJvci5oIgogI2luY2x1ZGUgIlV0aWxzUXQuaCIKICNpbmNsdWRlICJxZGVz
a3RvcHdlYnZpZXdfcC5oIgorI2luY2x1ZGUgInF3ZWJkb3dubG9hZGl0ZW0uaCIKICNpbmNsdWRl
IDxRRmlsZURpYWxvZz4KICNpbmNsdWRlIDxRdERlY2xhcmF0aXZlL3FkZWNsYXJhdGl2ZWVuZ2lu
ZS5oPgogI2luY2x1ZGUgPFF0RGVjbGFyYXRpdmUvcXF1aWNrY2FudmFzLmg+CiAjaW5jbHVkZSA8
UXREZWNsYXJhdGl2ZS9xcXVpY2t2aWV3Lmg+CiAjaW5jbHVkZSA8UXRHdWkvUUN1cnNvcj4KKyNp
bmNsdWRlIDxRdEd1aS9RRGVza3RvcFNlcnZpY2VzPgogI2luY2x1ZGUgPFF0R3VpL1FEcmFnPgog
I2luY2x1ZGUgPFF0R3VpL1FGb2N1c0V2ZW50PgogI2luY2x1ZGUgPFF0R3VpL1FHdWlBcHBsaWNh
dGlvbj4KQEAgLTQ5Nyw2ICs0OTksMTcgQEAgdm9pZCBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpk
aWRNb3VzZU1vdmVPdmVyRWxlbWVudChjb25zdCBRVXJsJiBsaW5rVVJMLCBjb25zdAogICAgIGVt
aXQgcS0+bGlua0hvdmVyZWQobGFzdEhvdmVyZWRVUkwsIGxhc3RIb3ZlcmVkVGl0bGUpOwogfQog
Cit2b2lkIFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OmRvd25sb2FkUmVxdWVzdGVkKFFXZWJEb3du
bG9hZEl0ZW0qIGRvd25sb2FkSXRlbSkKK3sKKyAgICBpZiAoIWRvd25sb2FkSXRlbSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgUV9RKFFEZXNrdG9wV2ViVmlldyk7CisKKyAgICBRRGVjbGFyYXRp
dmVFbmdpbmU6OnNldE9iamVjdE93bmVyc2hpcChkb3dubG9hZEl0ZW0sIFFEZWNsYXJhdGl2ZUVu
Z2luZTo6SmF2YVNjcmlwdE93bmVyc2hpcCk7CisgICAgZW1pdCBxLT5kb3dubG9hZFJlcXVlc3Rl
ZChkb3dubG9hZEl0ZW0pOworfQorCiBzdGF0aWMgUXRQb2xpY3lJbnRlcmZhY2U6OlBvbGljeUFj
dGlvbiB0b1BvbGljeUFjdGlvbihRRGVza3RvcFdlYlZpZXc6Ok5hdmlnYXRpb25Qb2xpY3kgcG9s
aWN5KQogewogICAgIHN3aXRjaCAocG9saWN5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlld19wLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlld19wLmgKaW5kZXggY2JmOTNkNjFkYjAxMWY1
NjcyN2U0NjczMzk2NDQyZDA1NWRmYTcwMC4uMjUyZTZjMzA0NzVjMzhjOTNiNmM2OWU1MDhiOTUz
ZGExZWExY2JkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
ZGVza3RvcHdlYnZpZXdfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cWRlc2t0b3B3ZWJ2aWV3X3AuaApAQCAtODQsNiArODQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgUUpTRW5naW5lKiBlbmdpbmUoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBjaG9vc2VGaWxlcyhX
S09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmLCBjb25zdCBRU3RyaW5nTGlzdCYgc2VsZWN0ZWRG
aWxlTmFtZXMsIFF0Vmlld0ludGVyZmFjZTo6RmlsZUNob29zZXJUeXBlKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZG93bmxvYWRSZXF1ZXN0ZWQoUVdlYkRvd25sb2FkSXRlbSogZG93bmxvYWRJdGVtKTsK
IAogICAgIHZpcnR1YWwgdm9pZCBkaWRNb3VzZU1vdmVPdmVyRWxlbWVudChjb25zdCBRVXJsJiwg
Y29uc3QgUVN0cmluZyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3F3ZWJkb3dubG9hZGl0ZW0uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xd2ViZG93bmxvYWRpdGVtLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NTkwYjc0OGNkMDg5MzUzMjVk
ZDUwNDg1ZmJlNzhkNTg5MzkxOTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxvYWRpdGVtLmNwcApAQCAtMCwwICsxLDk2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKQorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgInF3ZWJkb3du
bG9hZGl0ZW0uaCIKKworI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKKyNpbmNsdWRlICJxd2Vi
ZG93bmxvYWRpdGVtX3AuaCIKKworUVdlYkRvd25sb2FkSXRlbVByaXZhdGU6OlFXZWJEb3dubG9h
ZEl0ZW1Qcml2YXRlKFFXZWJEb3dubG9hZEl0ZW0qIHFxKQorICAgIDogcShxcSkKKyAgICAsIGRv
d25sb2FkUHJveHkoMCkKKyAgICAsIGV4cGVjdGVkQ29udGVudExlbmd0aCgwKQorICAgICwgdG90
YWxCeXRlc1JlY2VpdmVkKDApCit7Cit9CisKK1FXZWJEb3dubG9hZEl0ZW06OlFXZWJEb3dubG9h
ZEl0ZW0oUU9iamVjdCogcGFyZW50KQorICAgIDogUU9iamVjdChwYXJlbnQpCisgICAgLCBkKG5l
dyBRV2ViRG93bmxvYWRJdGVtUHJpdmF0ZSh0aGlzKSkKK3sKK30KKworUVdlYkRvd25sb2FkSXRl
bTo6flFXZWJEb3dubG9hZEl0ZW0oKQoreworICAgIGRlbGV0ZSBkOworfQorCitRVXJsIFFXZWJE
b3dubG9hZEl0ZW06OnVybCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPnNvdXJjZVVybDsKK30K
KworUVN0cmluZyBRV2ViRG93bmxvYWRJdGVtOjpkZXN0aW5hdGlvblBhdGgoKSBjb25zdAorewor
ICAgIHJldHVybiBkLT5kZXN0aW5hdGlvblBhdGg7Cit9CisKK3ZvaWQgUVdlYkRvd25sb2FkSXRl
bTo6c2V0RGVzdGluYXRpb25QYXRoKGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uKQoreworICAg
IGQtPmRlc3RpbmF0aW9uUGF0aCA9IGRlc3RpbmF0aW9uOworfQorCitRU3RyaW5nIFFXZWJEb3du
bG9hZEl0ZW06OnN1Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZC0+c3Vn
Z2VzdGVkRmlsZW5hbWU7Cit9CisKK1FTdHJpbmcgUVdlYkRvd25sb2FkSXRlbTo6bWltZVR5cGUo
KSBjb25zdAoreworICAgIHJldHVybiBkLT5taW1lVHlwZTsKK30KKworcXVpbnQ2NCBRV2ViRG93
bmxvYWRJdGVtOjpleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBk
LT5leHBlY3RlZENvbnRlbnRMZW5ndGg7Cit9CisKK3F1aW50NjQgUVdlYkRvd25sb2FkSXRlbTo6
dG90YWxCeXRlc1JlY2VpdmVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZC0+dG90YWxCeXRlc1Jl
Y2VpdmVkOworfQorCit2b2lkIFFXZWJEb3dubG9hZEl0ZW06OmNhbmNlbCgpCit7CisgICAgQVNT
RVJUKGQtPmRvd25sb2FkUHJveHkpOworICAgIGQtPmRvd25sb2FkUHJveHktPmNhbmNlbCgpOwor
fQorCit2b2lkIFFXZWJEb3dubG9hZEl0ZW06OnN0YXJ0KCkKK3sKKyAgICBBU1NFUlQoIWQtPnN1
Z2dlc3RlZEZpbGVuYW1lLmlzRW1wdHkoKSk7CisKKyAgICBpZiAoZC0+ZGVzdGluYXRpb25QYXRo
LmlzRW1wdHkoKSkKKyAgICAgICAgZC0+ZGVzdGluYXRpb25QYXRoID0gZC0+c3VnZ2VzdGVkRmls
ZW5hbWU7CisKKyAgICBkLT5kb3dubG9hZFByb3h5LT5zdGFydFRyYW5zZmVyKGQtPmRlc3RpbmF0
aW9uUGF0aCk7Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcXdlYmRvd25sb2FkaXRlbS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
d2ViZG93bmxvYWRpdGVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjQ0YzViMDgzODJiYmU4YmFjYTM5MjI0YWZm
OWZkODVkMGQ1Njg4NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXdlYmRvd25sb2FkaXRlbS5oCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoK
KyAqLworCisjaWZuZGVmIHF3ZWJkb3dubG9hZGl0ZW1faAorI2RlZmluZSBxd2ViZG93bmxvYWRp
dGVtX2gKKworI2luY2x1ZGUgInF3ZWJraXRnbG9iYWwuaCIKKyNpbmNsdWRlIDxRT2JqZWN0Pgor
I2luY2x1ZGUgPFFVcmw+CisKK2NsYXNzIFFXZWJEb3dubG9hZEl0ZW1Qcml2YXRlOworY2xhc3Mg
UXRXZWJFcnJvcjsKKworUVRfQkVHSU5fTkFNRVNQQUNFCitjbGFzcyBRU3RyaW5nOworUVRfRU5E
X05BTUVTUEFDRQorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFF0RG93bmxvYWRNYW5hZ2Vy
OworfQorCitjbGFzcyBRV0VCS0lUX0VYUE9SVCBRV2ViRG93bmxvYWRJdGVtIDogcHVibGljIFFP
YmplY3QgeworICAgIFFfT0JKRUNUCisgICAgUV9QUk9QRVJUWShxdWludDY0IGV4cGVjdGVkQ29u
dGVudExlbmd0aCBSRUFEIGV4cGVjdGVkQ29udGVudExlbmd0aCBDT05TVEFOVCBGSU5BTCkKKyAg
ICBRX1BST1BFUlRZKFFTdHJpbmcgZGVzdGluYXRpb25QYXRoIFJFQUQgZGVzdGluYXRpb25QYXRo
IFdSSVRFIHNldERlc3RpbmF0aW9uUGF0aCkKKyAgICBRX1BST1BFUlRZKFFTdHJpbmcgc3VnZ2Vz
dGVkRmlsZW5hbWUgUkVBRCBzdWdnZXN0ZWRGaWxlbmFtZSBDT05TVEFOVCBGSU5BTCkKKyAgICBR
X1BST1BFUlRZKHF1aW50NjQgdG90YWxCeXRlc1JlY2VpdmVkIFJFQUQgdG90YWxCeXRlc1JlY2Vp
dmVkIE5PVElGWSB0b3RhbEJ5dGVzUmVjZWl2ZWRDaGFuZ2VkIEZJTkFMKQorICAgIFFfUFJPUEVS
VFkoUVVybCB1cmwgUkVBRCB1cmwgQ09OU1RBTlQgRklOQUwpCisgICAgUV9FTlVNUyhEb3dubG9h
ZEVycm9yKQorcHVibGljOgorICAgIHZpcnR1YWwgflFXZWJEb3dubG9hZEl0ZW0oKTsKKworICAg
IGVudW0gRG93bmxvYWRFcnJvciB7CisgICAgICAgIEFib3J0ZWQgPSAwLAorICAgICAgICBDYW5u
b3RXcml0ZVRvRmlsZSwKKyAgICAgICAgQ2Fubm90T3BlbkZpbGUsCisgICAgICAgIERlc3RpbmF0
aW9uQWxyZWFkeUV4aXN0cywKKyAgICAgICAgQ2FuY2VsbGVkLAorICAgICAgICBDYW5ub3REZXRl
cm1pbmVGaWxlbmFtZSwKKyAgICAgICAgTmV0d29ya0ZhaWx1cmUKKyAgICB9OworCisgICAgUVVy
bCB1cmwoKSBjb25zdDsKKyAgICBRU3RyaW5nIGRlc3RpbmF0aW9uUGF0aCgpIGNvbnN0OworICAg
IFFTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25zdDsKKyAgICBRU3RyaW5nIG1pbWVUeXBl
KCkgY29uc3Q7CisgICAgcXVpbnQ2NCBleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBjb25zdDsKKyAg
ICBxdWludDY0IHRvdGFsQnl0ZXNSZWNlaXZlZCgpIGNvbnN0OworICAgIHZvaWQgc2V0RGVzdGlu
YXRpb25QYXRoKGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uKTsKKworcHVibGljIFFfU0xPVFM6
CisgICAgdm9pZCBzdGFydCgpOworICAgIHZvaWQgY2FuY2VsKCk7CisKK1FfU0lHTkFMUzoKKyAg
ICB2b2lkIGRlc3RpbmF0aW9uRmlsZUNyZWF0ZWQoY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb25Q
YXRoKTsKKyAgICB2b2lkIHRvdGFsQnl0ZXNSZWNlaXZlZENoYW5nZWQocXVpbnQ2NCBieXRlc1Jl
Y2VpdmVkKTsKKyAgICB2b2lkIHN1Y2NlZWRlZCgpOworICAgIHZvaWQgZmFpbGVkKFFXZWJEb3du
bG9hZEl0ZW06OkRvd25sb2FkRXJyb3IgZXJyb3IsIGNvbnN0IFFVcmwmIHVybCwgY29uc3QgUVN0
cmluZyYgZGVzY3JpcHRpb24pOworCitwcml2YXRlOgorICAgIFFXZWJEb3dubG9hZEl0ZW0oUU9i
amVjdCogcGFyZW50ID0gMCk7CisgICAgUVdlYkRvd25sb2FkSXRlbVByaXZhdGUqIGQ7CisKKyAg
ICBmcmllbmQgY2xhc3MgV2ViS2l0OjpRdERvd25sb2FkTWFuYWdlcjsKKyAgICBmcmllbmQgY2xh
c3MgUXRXZWJQYWdlUHJveHk7Cit9OworCisjZW5kaWYgLyogcXdlYmRvd25sb2FkaXRlbV9oICov
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJkb3dubG9h
ZGl0ZW1fcC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxvYWRp
dGVtX3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iYjhjMjUyYTc3N2Q3ZDgyNGRjOTI4ODlhZDkxYWZmMmFkYWEx
MGZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
d2ViZG93bmxvYWRpdGVtX3AuaApAQCAtMCwwICsxLDUzIEBACisvKgorICAgIENvcHlyaWdodCAo
QykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAg
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLwor
CisKKyNpZm5kZWYgcXdlYmRvd25sb2FkaXRlbV9wX2gKKyNkZWZpbmUgcXdlYmRvd25sb2FkaXRl
bV9wX2gKKworI2luY2x1ZGUgInF3ZWJkb3dubG9hZGl0ZW0uaCIKKyNpbmNsdWRlIDxRVXJsPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIERvd25sb2FkUHJveHk7Cit9CisKK2NsYXNzIFFX
ZWJEb3dubG9hZEl0ZW1Qcml2YXRlIDogcHVibGljIFFPYmplY3QgeworICAgIFFfT0JKRUNUCitw
dWJsaWM6CisgICAgUVdlYkRvd25sb2FkSXRlbVByaXZhdGUoUVdlYkRvd25sb2FkSXRlbSopOwor
CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUVdlYkRvd25sb2FkSXRlbSogZG93bmxvYWQp
IHsgZW1pdCByZWNlaXZlZFJlc3BvbnNlKGRvd25sb2FkKTsgfQorCisgICAgUVdlYkRvd25sb2Fk
SXRlbSogcTsKKworICAgIFdlYktpdDo6RG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eTsKKwor
ICAgIFFVcmwgc291cmNlVXJsOworICAgIFFTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWU7CisgICAg
UVN0cmluZyBkZXN0aW5hdGlvblBhdGg7CisgICAgUVN0cmluZyBtaW1lVHlwZTsKKyAgICBxdWlu
dDY0IGV4cGVjdGVkQ29udGVudExlbmd0aDsKKyAgICBxdWludDY0IHRvdGFsQnl0ZXNSZWNlaXZl
ZDsKKworUV9TSUdOQUxTOgorICAgIHZvaWQgcmVjZWl2ZWRSZXNwb25zZShRV2ViRG93bmxvYWRJ
dGVtKik7Cit9OworCisjZW5kaWYgLyogcXdlYmRvd25sb2FkaXRlbV9wX2ggKi8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvRGVza3Rv
cFdlYlZpZXcvdHN0X2Rvd25sb2FkLnFtbCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvdGVzdHMvcW1sdGVzdHMvRGVza3RvcFdlYlZpZXcvdHN0X2Rvd25sb2FkLnFtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lYjVjODU1YmNhNTA3MTFiNWRlYzE2Njc4OWY0MGE4ZGE4OTM1MzlkCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9E
ZXNrdG9wV2ViVmlldy90c3RfZG93bmxvYWQucW1sCkBAIC0wLDAgKzEsNzUgQEAKK2ltcG9ydCBR
dFF1aWNrIDIuMAoraW1wb3J0IFF0VGVzdCAxLjAKK2ltcG9ydCBRdFdlYktpdCAzLjAKKworRGVz
a3RvcFdlYlZpZXcgeworICAgIGlkOiB3ZWJWaWV3CisgICAgd2lkdGg6IDIwMAorICAgIGhlaWdo
dDogNDAwCisKKyAgICBwcm9wZXJ0eSBpbnQgZXhwZWN0ZWRMZW5ndGggOiAwCisgICAgcHJvcGVy
dHkgaW50IHRvdGFsQnl0ZXMgOiAwCisKKyAgICBTaWduYWxTcHkgeworICAgICAgICBpZDogc3B5
CisgICAgICAgIHRhcmdldDogd2ViVmlldworICAgICAgICBzaWduYWxOYW1lOiAiZG93bmxvYWRS
ZXF1ZXN0ZWQiCisgICAgfQorCisgICAgb25Eb3dubG9hZFJlcXVlc3RlZDogeworICAgICAgICBk
b3dubG9hZC50YXJnZXQgPSBkb3dubG9hZEl0ZW0KKyAgICAgICAgZXhwZWN0ZWRMZW5ndGggPSBk
b3dubG9hZEl0ZW0uZXhwZWN0ZWRDb250ZW50TGVuZ3RoCisgICAgICAgIGRvd25sb2FkSXRlbS5k
ZXN0aW5hdGlvblBhdGggPSBkb3dubG9hZEl0ZW0uc3VnZ2VzdGVkRmlsZW5hbWUKKyAgICAgICAg
ZG93bmxvYWRJdGVtLnN0YXJ0KCkKKyAgICB9CisKKyAgICBDb25uZWN0aW9ucyB7CisgICAgICAg
IGlkOiBkb3dubG9hZAorICAgICAgICBpZ25vcmVVbmtub3duU2lnbmFsczogdHJ1ZQorICAgICAg
ICBvblN1Y2NlZWRlZDogeyB0b3RhbEJ5dGVzID0gZG93bmxvYWQudGFyZ2V0LnRvdGFsQnl0ZXNS
ZWNlaXZlZCB9CisgICAgfQorCisgICAgU2lnbmFsU3B5IHsKKyAgICAgICAgaWQ6IG90aGVyU3B5
CisgICAgICAgIHRhcmdldDogZG93bmxvYWQKKyAgICAgICAgc2lnbmFsTmFtZTogInN1Y2NlZWRl
ZCIKKyAgICB9CisKKyAgICBUZXN0Q2FzZSB7CisgICAgICAgIG5hbWU6ICJEZXNrdG9wV2ViVmll
d0Rvd25sb2FkIgorICAgICAgICB3aGVuOiB3aW5kb3dTaG93bgorCisgICAgICAgIGZ1bmN0aW9u
IHRlc3RfZG93bmxvYWRSZXF1ZXN0KCkgeworICAgICAgICAgICAgc3B5LmNsZWFyKCkKKyAgICAg
ICAgICAgIGNvbXBhcmUoc3B5LmNvdW50LCAwKQorICAgICAgICAgICAgd2ViVmlldy5sb2FkKFF0
LnJlc29sdmVkVXJsKCIuLi9jb21tb24vZG93bmxvYWQuaHRtbCIpKQorICAgICAgICAgICAgbW91
c2VDbGljayh3ZWJWaWV3LCAxMDAsIDEwMCwgUXQuTGVmdEJ1dHRvbikKKyAgICAgICAgICAgIHNw
eS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBhcmUoc3B5LmNvdW50LCAxKQorICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gdGVzdF9leHBlY3RlZExlbmd0aCgpIHsKKyAgICAgICAgICAgIHNw
eS5jbGVhcigpCisgICAgICAgICAgICBjb21wYXJlKHNweS5jb3VudCwgMCkKKyAgICAgICAgICAg
IHdlYlZpZXcubG9hZChRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL2Rvd25sb2FkLmh0bWwiKSkK
KyAgICAgICAgICAgIG1vdXNlQ2xpY2sod2ViVmlldywgMTAwLCAxMDAsIFF0LkxlZnRCdXR0b24p
CisgICAgICAgICAgICBzcHkud2FpdCgpCisgICAgICAgICAgICBjb21wYXJlKHNweS5jb3VudCwg
MSkKKyAgICAgICAgICAgIGNvbXBhcmUoZXhwZWN0ZWRMZW5ndGgsIDMyNSkKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIHRlc3Rfc3VjY2VlZGVkKCkgeworICAgICAgICAgICAgc3B5LmNs
ZWFyKCkKKyAgICAgICAgICAgIGNvbXBhcmUoc3B5LmNvdW50LCAwKQorICAgICAgICAgICAgb3Ro
ZXJTcHkuY2xlYXIoKQorICAgICAgICAgICAgY29tcGFyZShvdGhlclNweS5jb3VudCwgMCkKKyAg
ICAgICAgICAgIHdlYlZpZXcubG9hZChRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL2Rvd25sb2Fk
Lmh0bWwiKSkKKyAgICAgICAgICAgIG1vdXNlQ2xpY2sod2ViVmlldywgMTAwLCAxMDAsIFF0Lkxl
ZnRCdXR0b24pCisgICAgICAgICAgICBzcHkud2FpdCgpCisgICAgICAgICAgICBjb21wYXJlKHNw
eS5jb3VudCwgMSkKKyAgICAgICAgICAgIG90aGVyU3B5LndhaXQoKQorICAgICAgICAgICAgY29t
cGFyZShvdGhlclNweS5jb3VudCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUodG90YWxCeXRlcywg
ZXhwZWN0ZWRMZW5ndGgpCisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1vbi9kb3dubG9hZC5o
dG1sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21t
b24vZG93bmxvYWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MDZmYTRjYTc2M2Q3YTRmZWFjMTgxNzQxYmU1
Yzk3NzY0OGY5NWY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21tb24vZG93bmxvYWQuaHRtbApAQCAtMCwwICsxLDYg
QEAKKzxodG1sPgorPGhlYWQ+PHRpdGxlPkRvd25sb2FkIFRlc3QgcGFnZSB3aXRoIGh1Z2UgbGlu
ayBhcmVhPC90aXRsZT48L2hlYWQ+Cis8Ym9keT4KKzxhIHRpdGxlPSJaaXAgZmlsZSIgaHJlZj0i
ZG93bmxvYWQuemlwIj48aW1nIHdpZHRoPTIwMCBoZWlnaHQ9MjAwPjwvYT4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMv
cW1sdGVzdHMvY29tbW9uL2Rvd25sb2FkLnppcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL2Rvd25sb2FkLnppcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNTQ1
NjM1MWE1NTE1NTYxMzUzOTYxNWFjY2VjZTllZTAzMGI3ZDQ0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0
ZXJhbCAzMjUKemNtV0lXV0BacyNVfGBeMnUhc3RffDhWZEJwPFc+R0pQLT5xJFN+eU9Dbngzdm0q
ZntFcmw7eTxsO3F9d2hIeEA0CnpeVzIlfENqYFckNzJGSnJFSDlXRDcrNncoOGJiU1JgM0BgYXcz
aG9kWm8xJFZZVCtSSlA0RGM1eFB+VXo2JCZtIwp6eytAaDAraE14VHdFTlo1X09ta3xUX0N9O1Zs
QzRyayR8cl50P2dlT2N6Pkh+KDwlazt3dTh6eVEpTUB3dFcpd2sKei00ZzVrTC1wc0N7TWY1KmhP
XklUS2t+QGtgQW5Bbzxjb3NFUT8/JHlyV25pZCppal4wPTZwezJgUmQ8Q2oqOGxnCnpya2AkRmxP
TStRYk5SJXIkTjItaThKWG1tYXJzT0Y9dilRe01qJjMmMng0TEpDbzlDQ1hucVh2V0BRNnVVPEFU
JgpLQWJrVkdWRV9SNj4yTSRiCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL3FtbHRlc3RzLnBy
byBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvcW1sdGVz
dHMucHJvCmluZGV4IDk2MDM1ZGNjMjcxOTVhZDA4NzFhYmQ0MjgzMWI2NTI5ZDU2NjFmYjQuLjEz
YTYxZDNhMmFjZDVhMjZkZjAyMWViZWNlNDk1NmU1ZDJiNzAzY2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvcW1sdGVzdHMucHJvCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvcW1sdGVz
dHMucHJvCkBAIC0xNSw2ICsxNSw3IEBAIE9USEVSX0ZJTEVTICs9IFwKICAgICBEZXNrdG9wV2Vi
Vmlldy90c3RfbG9hZFByb2dyZXNzLnFtbCBcCiAgICAgRGVza3RvcFdlYlZpZXcvdHN0X2xvYWRQ
cm9ncmVzc1NpZ25hbC5xbWwgXAogICAgIERlc2t0b3BXZWJWaWV3L3RzdF9saW5rSG92ZXJlZC5x
bWwgXAorICAgIERlc2t0b3BXZWJWaWV3L3RzdF9kb3dubG9hZC5xbWwgXAogICAgIFRvdWNoV2Vi
Vmlldy90c3RfcHJvcGVydGllcy5xbWwgXAogICAgIFRvdWNoV2ViVmlldy90c3RfbG9hZC5xbWwg
XAogICAgIFRvdWNoV2ViVmlldy90c3RfbG9hZFplcm9TaXplVmlldy5xbWwgXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAKaW5k
ZXggYzkzYTZkZmJlNjliYmUzNmU2YjkyNDQ4ZjA0N2JiYmJlN2Q5MmQ0Mi4uMjZhNTIxZjM5YmM3
MWUyMTQ1ODc3MzIxOTY0ZGRjNjcyNzQxYjE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCkBAIC0xODcsNSArMTg3LDE2
IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkQ2FuY2VsKGNvbnN0IENvcmVJUEM6OkRhdGFSZWZl
cmVuY2UmIHJlc3VtZURhdGEpCiAgICAgbV93ZWJDb250ZXh0LT5kb3dubG9hZEZpbmlzaGVkKHRo
aXMpOwogfQogCisjaWYgUExBVEZPUk0oUVQpCit2b2lkIERvd25sb2FkUHJveHk6OnN0YXJ0VHJh
bnNmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKK3sKKyAgICBpZiAoIW1fd2ViQ29udGV4dCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUUgKE11bHRpLVdlYlByb2Nlc3MpOiBEb3du
bG9hZHMgc2hvdWxkbid0IGJlIGhhbmRsZWQgaW4gdGhlIHdlYiBwcm9jZXNzLgorICAgIG1fd2Vi
Q29udGV4dC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTdGFydFRy
YW5zZmVyKG1fZG93bmxvYWRJRCwgZmlsZW5hbWUpKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkUHJveHkuaAppbmRleCA5OWRkYmVjMGNiYzRiYThmNmQ5ZjQyMWY5ZGI2ODU1NTgy
OGI5OWQ1Li5jMWVkYTFmZDE5MDdjOTk3ZGJhODNmZTMwYzQ3YjU2NjJlNmYzOWI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaApA
QCAtNDMsNiArNDMsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViQ29udGV4dDsK
IGNsYXNzIFdlYkRhdGE7CitjbGFzcyBXZWJQYWdlUHJveHk7CiAKIGNsYXNzIERvd25sb2FkUHJv
eHkgOiBwdWJsaWMgQVBJT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTYzLDYgKzY0LDEwIEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRpZFJlY2VpdmVEb3dubG9hZFByb3h5TWVzc2FnZShDb3JlSVBDOjpDb25u
ZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsK
ICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jRG93bmxvYWRQcm94eU1lc3NhZ2UoQ29yZUlQQzo6Q29u
bmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwg
T3duUHRyPENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4mKTsKIAorI2lmIFBMQVRGT1JNKFFUKQor
ICAgIHZvaWQgc3RhcnRUcmFuc2Zlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lKTsKKyNlbmRpZgor
CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IERvd25sb2FkUHJveHkoV2ViQ29udGV4dCopOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCBmMTk0Nzg3M2EwMjFjYWJhNmQ4
ZTRkNzFiMDVmMzgyNmY1YzgzNzdmLi4wZTg2YmZmOWM0YTVlMzQ3YmJhMDRhZWQ4NTIyZjkxM2E5
M2Q2MzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTQ0LDYgKzQ0
LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBzdHJ1Y3QgVmlld3BvcnRBcmd1bWVudHM7
CiB9CiAKKyNpZiBQTEFURk9STShRVCkKK2NsYXNzIFF0V2ViUGFnZVByb3h5OworI2VuZGlmCisK
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBEcmF3aW5nQXJlYVByb3h5OwpAQCAtMTAzLDYg
KzEwNyw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShRVCkKICAgICB2aXJ0dWFsIHZvaWQgZGlk
Q2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGRpZEZpbmRab29tYWJsZUFyZWEoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkb3dubG9hZFJl
cXVlc3RlZChEb3dubG9hZFByb3h5KikgPSAwOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShRVCkg
fHwgUExBVEZPUk0oR1RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCmlu
ZGV4IGY0NTNkOGMzZmRhMWJkNjk0NWU4MTdiMGU2ZWQ5YWQ2MmZhMWE2ZjkuLmFjMjNiZDJkZTE2
NjYzOGIyNGYxM2JjN2UxZDIzZWRlMTc4ODhhNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQ29udGV4dC5jcHAKQEAgLTM5Miw2ICszOTIsMTEgQEAgRG93bmxvYWRQcm94eSogV2ViQ29u
dGV4dDo6ZG93bmxvYWQoV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgUmVzb3Vy
Y2UKICAgICBEb3dubG9hZFByb3h5KiBkb3dubG9hZCA9IGNyZWF0ZURvd25sb2FkUHJveHkoKTsK
ICAgICB1aW50NjRfdCBpbml0aWF0aW5nUGFnZUlEID0gaW5pdGlhdGluZ1BhZ2UgPyBpbml0aWF0
aW5nUGFnZS0+cGFnZUlEKCkgOiAwOwogCisjaWYgUExBVEZPUk0oUVQpCisgICAgQVNTRVJUKGlu
aXRpYXRpbmdQYWdlKTsgLy8gT3VyIGRlc2lnbiBkb2VzIG5vdCBzdXBwcG9ydCBkb3dubG9hZHMg
d2l0aG91dCBhIFdlYlBhZ2UuCisgICAgaW5pdGlhdGluZ1BhZ2UtPmRvd25sb2FkUmVxdWVzdGVk
KGRvd25sb2FkKTsKKyNlbmRpZgorCiAgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzOjpEb3dubG9hZFJlcXVlc3QoZG93bmxvYWQtPmRvd25sb2FkSUQoKSwgaW5pdGlhdGlu
Z1BhZ2VJRCwgcmVxdWVzdCksIDApOwogICAgIHJldHVybiBkb3dubG9hZDsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYjQwM2E0YmY1YjliOWM5YTlh
ZDAwZTgwMTEyYzcwMjQ2ODFmYTFkMS4uODIyNTAyN2U0YzBkNWYzZDUxOTIwMzJkMjY0YTBlYmJi
ZDM0MjRkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAg
LTEwMDcsNyArMTAwNywxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNp
c2lvbihQb2xpY3lBY3Rpb24gYWN0aW9uLCBXZWJGcmFtZVByb3h5KiBmcgogICAgIHVpbnQ2NF90
IGRvd25sb2FkSUQgPSAwOwogICAgIGlmIChhY3Rpb24gPT0gUG9saWN5RG93bmxvYWQpIHsKICAg
ICAgICAgLy8gQ3JlYXRlIGEgZG93bmxvYWQgcHJveHkuCi0gICAgICAgIGRvd25sb2FkSUQgPSBt
X3Byb2Nlc3MtPmNvbnRleHQoKS0+Y3JlYXRlRG93bmxvYWRQcm94eSgpLT5kb3dubG9hZElEKCk7
CisgICAgICAgIERvd25sb2FkUHJveHkqIGRvd25sb2FkID0gbV9wcm9jZXNzLT5jb250ZXh0KCkt
PmNyZWF0ZURvd25sb2FkUHJveHkoKTsKKyAgICAgICAgZG93bmxvYWRJRCA9IGRvd25sb2FkLT5k
b3dubG9hZElEKCk7CisjaWYgUExBVEZPUk0oUVQpCisgICAgICAgIGRvd25sb2FkUmVxdWVzdGVk
KGRvd25sb2FkKTsKKyNlbmRpZgogICAgIH0KIAogICAgIC8vIElmIHdlIHJlY2VpdmVkIGEgcG9s
aWN5IGRlY2lzaW9uIHdoaWxlIGluIGRlY2lkZVBvbGljeUZvck1JTUVUeXBlIHRoZSBkZWNpc2lv
biB3aWxsIApAQCAtMjI2NSw2ICsyMjY5LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpmaW5kWm9v
bWFibGVBcmVhRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIHBvaW50KQogCiAgICAgcHJvY2Vzcygp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGaW5kWm9vbWFibGVBcmVhRm9yUG9pbnQocG9pbnQp
LCBtX3BhZ2VJRCk7CiB9CisKK3ZvaWQgV2ViUGFnZVByb3h5Ojpkb3dubG9hZFJlcXVlc3RlZChE
b3dubG9hZFByb3h5KiBkb3dubG9hZCkKK3sKKyAgICBtX3BhZ2VDbGllbnQtPmRvd25sb2FkUmVx
dWVzdGVkKGRvd25sb2FkKTsKK30KICNlbmRpZgogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBkZTY3ZDQ2NmNiNzRi
MzlmYWJhMjc2MzIwYWRlOGJhZTFiZjUxYjMyLi5mMjYzZjg2NGM0MjA1YTJmMDkyNDcwZWI5MjYx
ZmIwMWYyZjRkZjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBA
IC01MjQsNiArNTI0LDcgQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0oUVQpCiAgICAgdm9pZCBm
aW5kWm9vbWFibGVBcmVhRm9yUG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKKyAgICB2
b2lkIGRvd25sb2FkUmVxdWVzdGVkKERvd25sb2FkUHJveHkqKTsKICNlbmRpZgogCiAgICAgdm9p
ZCBhZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbikgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5jcHAKaW5kZXggZWFl
NWYyMTgzNmI0ZGNiYWVlMWE2NGY2OTRmYzc5Y2QwMDg5OWU2NC4uNjY5ZDAwOGQ2NzczNDlhZWM2
MWI4MjBlNTk4NDFiNzQ0MGRlMTE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L0NsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9D
bGllbnRJbXBsLmNwcApAQCAtMjAsNiArMjAsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkNsaWVudEltcGwuaCIKIAorI2luY2x1ZGUgIlF0RG93bmxvYWRNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiUXRXZWJFcnJvci5oIgogI2luY2x1ZGUgIldlYkZyYW1lUHJveHkuaCIKICNpbmNs
dWRlICJXS0FQSUNhc3QuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9RdERvd25sb2FkTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRE
b3dubG9hZE1hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmOTdmYzYzYzRjYjExYzc4NWM2MzgyMjQ3
YzVlM2Y1MTgzMzUyMmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvUXREb3dubG9hZE1hbmFnZXIuY3BwCkBAIC0wLDAgKzEsMTQ1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwLCAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKQorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
YWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlF0RG93bmxvYWRN
YW5hZ2VyLmgiCisKKyNpbmNsdWRlICJDbGllbnRJbXBsLmgiCisjaW5jbHVkZSAiRG93bmxvYWRQ
cm94eS5oIgorI2luY2x1ZGUgIlF0V2ViRXJyb3IuaCIKKyNpbmNsdWRlICJXS1N0cmluZ1F0Lmgi
CisjaW5jbHVkZSAiV0tVUkxRdC5oIgorI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKKyNpbmNsdWRl
ICJxd2ViZG93bmxvYWRpdGVtLmgiCisjaW5jbHVkZSAicXdlYmRvd25sb2FkaXRlbV9wLmgiCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgaW5saW5lIFF0RG93bmxvYWRNYW5hZ2VyKiB0
b1F0RG93bmxvYWRNYW5hZ2VyKGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgQVNTRVJU
KGNsaWVudEluZm8pOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFF0RG93bmxvYWRNYW5h
Z2VyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOworfQorCitzdGF0aWMgdm9pZCBx
dF93a19kaWRSZWNlaXZlUmVzcG9uc2UoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRS
ZWYgZG93bmxvYWQsIFdLVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UsIGNvbnN0IHZvaWQgKmNsaWVu
dEluZm8pCit7CisgICAgdG9RdERvd25sb2FkTWFuYWdlcihjbGllbnRJbmZvKS0+ZG93bmxvYWRS
ZWNlaXZlZFJlc3BvbnNlKHRvSW1wbChkb3dubG9hZCksIHRvSW1wbChyZXNwb25zZSktPnJlc291
cmNlUmVzcG9uc2UoKSk7Cit9CisKK3N0YXRpYyB2b2lkIHF0X3drX2RpZENyZWF0ZURlc3RpbmF0
aW9uKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1N0cmlu
Z1JlZiBwYXRoLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQoreworICAgIHRvUXREb3dubG9hZE1h
bmFnZXIoY2xpZW50SW5mbyktPmRvd25sb2FkQ3JlYXRlZERlc3RpbmF0aW9uKHRvSW1wbChkb3du
bG9hZCksIFdLU3RyaW5nQ29weVFTdHJpbmcocGF0aCkpOworfQorCitzdGF0aWMgdm9pZCBxdF93
a19kaWRGaW5pc2hEb3dubG9hZChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBk
b3dubG9hZCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKK3sKKyAgICB0b1F0RG93bmxvYWRNYW5h
Z2VyKGNsaWVudEluZm8pLT5kb3dubG9hZEZpbmlzaGVkKHRvSW1wbChkb3dubG9hZCkpOworfQor
CitzdGF0aWMgdm9pZCBxdF93a19kaWRGYWlsRG93bmxvYWQoV0tDb250ZXh0UmVmIGNvbnRleHQs
IFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLRXJyb3JSZWYgZXJyb3IsIGNvbnN0IHZvaWQgKmNs
aWVudEluZm8pCit7CisgICAgUVVybCBmYWlsaW5nVXJsID0gV0tVUkxDb3B5UVVybChXS0Vycm9y
Q29weUZhaWxpbmdVUkwoZXJyb3IpKTsKKworICAgIHRvUXREb3dubG9hZE1hbmFnZXIoY2xpZW50
SW5mbyktPmRvd25sb2FkRmFpbGVkKHRvSW1wbChkb3dubG9hZCksIFF0V2ViRXJyb3IoZXJyb3Ip
KTsKK30KKworc3RhdGljIHZvaWQgcXRfd2tfZGlkUmVjZWl2ZURhdGFGb3JEb3dubG9hZChXS0Nv
bnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgdWludDY0X3QgbGVuZ3Ro
LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQoreworICAgIHRvUXREb3dubG9hZE1hbmFnZXIoY2xp
ZW50SW5mbyktPmRvd25sb2FkRGF0YVJlY2VpdmVkKHRvSW1wbChkb3dubG9hZCksIGxlbmd0aCk7
Cit9CisKK1F0RG93bmxvYWRNYW5hZ2VyOjpRdERvd25sb2FkTWFuYWdlcigpCit7Cit9CisKK1F0
RG93bmxvYWRNYW5hZ2VyOjp+UXREb3dubG9hZE1hbmFnZXIoKQoreworfQorCitQYXNzUmVmUHRy
PFF0RG93bmxvYWRNYW5hZ2VyPiBRdERvd25sb2FkTWFuYWdlcjo6Y3JlYXRlKFdlYkNvbnRleHQq
IGNvbnRleHQpCit7CisgICAgUXREb3dubG9hZE1hbmFnZXIqIG1hbmFnZXIgPSBuZXcgUXREb3du
bG9hZE1hbmFnZXIoKTsKKworICAgIFdLQ29udGV4dERvd25sb2FkQ2xpZW50IGRvd25sb2FkQ2xp
ZW50OworICAgIG1lbXNldCgmZG93bmxvYWRDbGllbnQsIDAsIHNpemVvZihXS0NvbnRleHREb3du
bG9hZENsaWVudCkpOworICAgIGRvd25sb2FkQ2xpZW50LnZlcnNpb24gPSBrV0tDb250ZXh0RG93
bmxvYWRDbGllbnRDdXJyZW50VmVyc2lvbjsKKyAgICBkb3dubG9hZENsaWVudC5jbGllbnRJbmZv
ID0gbWFuYWdlcjsKKyAgICBkb3dubG9hZENsaWVudC5kaWRSZWNlaXZlUmVzcG9uc2UgPSBxdF93
a19kaWRSZWNlaXZlUmVzcG9uc2U7CisgICAgZG93bmxvYWRDbGllbnQuZGlkUmVjZWl2ZURhdGEg
PSBxdF93a19kaWRSZWNlaXZlRGF0YUZvckRvd25sb2FkOworICAgIGRvd25sb2FkQ2xpZW50LmRp
ZENyZWF0ZURlc3RpbmF0aW9uID0gcXRfd2tfZGlkQ3JlYXRlRGVzdGluYXRpb247CisgICAgZG93
bmxvYWRDbGllbnQuZGlkRmluaXNoID0gcXRfd2tfZGlkRmluaXNoRG93bmxvYWQ7CisgICAgZG93
bmxvYWRDbGllbnQuZGlkRmFpbCA9IHF0X3drX2RpZEZhaWxEb3dubG9hZDsKKyAgICBXS0NvbnRl
eHRTZXREb3dubG9hZENsaWVudCh0b0FQSShjb250ZXh0KSwgJmRvd25sb2FkQ2xpZW50KTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYobWFuYWdlcik7Cit9CisKK3ZvaWQgUXREb3dubG9hZE1hbmFnZXI6
OmRvd25sb2FkUmVjZWl2ZWRSZXNwb25zZShEb3dubG9hZFByb3h5KiBkb3dubG9hZCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit7CisgICAgLy8gV2lsbCBiZSBj
YWxsZWQgd2hlbiB0aGUgaGVhZGVycyBhcmUgcmVhZCBieSBXZWJQcm9jZXNzLgorICAgIFFXZWJE
b3dubG9hZEl0ZW0qIGRvd25sb2FkSXRlbSA9IG1fZG93bmxvYWRzLnZhbHVlKGRvd25sb2FkLT5k
b3dubG9hZElEKCkpOworICAgIEFTU0VSVChkb3dubG9hZEl0ZW0pOworCisgICAgZG93bmxvYWRJ
dGVtLT5kLT5zb3VyY2VVcmwgPSByZXNwb25zZS51cmwoKTsKKyAgICBkb3dubG9hZEl0ZW0tPmQt
Pm1pbWVUeXBlID0gcmVzcG9uc2UubWltZVR5cGUoKTsKKyAgICBkb3dubG9hZEl0ZW0tPmQtPmV4
cGVjdGVkQ29udGVudExlbmd0aCA9IHJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpOwor
ICAgIGRvd25sb2FkSXRlbS0+ZC0+c3VnZ2VzdGVkRmlsZW5hbWUgPSByZXNwb25zZS5zdWdnZXN0
ZWRGaWxlbmFtZSgpOworCisgICAgZG93bmxvYWRJdGVtLT5kLT5kaWRSZWNlaXZlUmVzcG9uc2Uo
ZG93bmxvYWRJdGVtKTsKK30KKwordm9pZCBRdERvd25sb2FkTWFuYWdlcjo6ZG93bmxvYWRDcmVh
dGVkRGVzdGluYXRpb24oRG93bmxvYWRQcm94eSogZG93bmxvYWQsIGNvbnN0IFFTdHJpbmcmIHBh
dGgpCit7CisgICAgUVdlYkRvd25sb2FkSXRlbSogZG93bmxvYWRJdGVtID0gbV9kb3dubG9hZHMu
dmFsdWUoZG93bmxvYWQtPmRvd25sb2FkSUQoKSk7CisgICAgQVNTRVJUKGRvd25sb2FkSXRlbSk7
CisgICAgZG93bmxvYWRJdGVtLT5kLT5kZXN0aW5hdGlvblBhdGggPSBwYXRoOworICAgIGVtaXQg
ZG93bmxvYWRJdGVtLT5kZXN0aW5hdGlvbkZpbGVDcmVhdGVkKGRvd25sb2FkSXRlbS0+ZC0+ZGVz
dGluYXRpb25QYXRoKTsKK30KKwordm9pZCBRdERvd25sb2FkTWFuYWdlcjo6ZG93bmxvYWRGaW5p
c2hlZChEb3dubG9hZFByb3h5KiBkb3dubG9hZCkKK3sKKyAgICAvLyBXaWxsIGJlIGNhbGxlZCB3
aGVuIGRvd25sb2FkIGZpbmlzaGVzIHdpdGggc3VjY2Vzcy4KKyAgICBRV2ViRG93bmxvYWRJdGVt
KiBkb3dubG9hZEl0ZW0gPSBtX2Rvd25sb2Fkcy50YWtlKGRvd25sb2FkLT5kb3dubG9hZElEKCkp
OworICAgIEFTU0VSVChkb3dubG9hZEl0ZW0pOworICAgIGVtaXQgZG93bmxvYWRJdGVtLT5zdWNj
ZWVkZWQoKTsKK30KKwordm9pZCBRdERvd25sb2FkTWFuYWdlcjo6ZG93bmxvYWRGYWlsZWQoRG93
bmxvYWRQcm94eSogZG93bmxvYWQsIGNvbnN0IFF0V2ViRXJyb3ImIGVycm9yKQoreworICAgIC8v
IFdpbGwgYmUgY2FsbGVkIHdoZW4gZG93bmxvYWQgZmFpbHMgb3IgaXMgYWJvcnRlZC4KKyAgICBR
V2ViRG93bmxvYWRJdGVtKiBkb3dubG9hZEl0ZW0gPSBtX2Rvd25sb2Fkcy50YWtlKGRvd25sb2Fk
LT5kb3dubG9hZElEKCkpOworICAgIEFTU0VSVChkb3dubG9hZEl0ZW0pOworICAgIGVtaXQgZG93
bmxvYWRJdGVtLT5mYWlsZWQoZXJyb3IuZXJyb3JDb2RlQXNEb3dubG9hZEVycm9yKCksIGVycm9y
LnVybCgpLCBlcnJvci5kZXNjcmlwdGlvbigpKTsKK30KKwordm9pZCBRdERvd25sb2FkTWFuYWdl
cjo6ZG93bmxvYWREYXRhUmVjZWl2ZWQoRG93bmxvYWRQcm94eSogZG93bmxvYWQsIHVpbnQ2NF90
IGxlbmd0aCkKK3sKKyAgICAvLyBXaWxsIGJlIGNhbGxlZCBldmVyeXRpbWUgYnl0ZXMgd2VyZSB3
cml0dGVuIHRvIGRlc3RpbmF0aW9uIGZpbGUgYnkgV2ViUHJvY2Vzcy4KKyAgICBRV2ViRG93bmxv
YWRJdGVtKiBkb3dubG9hZEl0ZW0gPSBtX2Rvd25sb2Fkcy52YWx1ZShkb3dubG9hZC0+ZG93bmxv
YWRJRCgpKTsKKyAgICBBU1NFUlQoZG93bmxvYWRJdGVtKTsKKyAgICBkb3dubG9hZEl0ZW0tPmQt
PnRvdGFsQnl0ZXNSZWNlaXZlZCArPSBsZW5ndGg7CisgICAgZW1pdCBkb3dubG9hZEl0ZW0tPnRv
dGFsQnl0ZXNSZWNlaXZlZENoYW5nZWQobGVuZ3RoKTsKK30KKwordm9pZCBRdERvd25sb2FkTWFu
YWdlcjo6YWRkRG93bmxvYWQoRG93bmxvYWRQcm94eSogZG93bmxvYWQsIFFXZWJEb3dubG9hZEl0
ZW0qIGRvd25sb2FkSXRlbSkKK3sKKyAgICBtX2Rvd25sb2Fkc1tkb3dubG9hZC0+ZG93bmxvYWRJ
RCgpXSA9IGRvd25sb2FkSXRlbTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L1F0RG93bmxvYWRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvUXREb3dubG9hZE1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYmY3MjE2ZDQxNjg5YTYwMmEw
MzczZTRiNzkxNGJhOTNkN2MyZTc4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L1F0RG93bmxvYWRNYW5hZ2VyLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1
YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgUXREb3dubG9hZE1hbmFnZXJfaAorI2RlZmluZSBR
dERvd25sb2FkTWFuYWdlcl9oCisKKyNpbmNsdWRlIDxRTWFwPgorI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworY2xhc3MgUXRXZWJFcnJv
cjsKK2NsYXNzIFFXZWJEb3dubG9hZEl0ZW07CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNz
IFJlc291cmNlUmVzcG9uc2U7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBEb3du
bG9hZFByb3h5OworY2xhc3MgV2ViQ29udGV4dDsKKworY2xhc3MgUXREb3dubG9hZE1hbmFnZXIg
OiBwdWJsaWMgUmVmQ291bnRlZDxRdERvd25sb2FkTWFuYWdlcj4geworcHVibGljOgorICAgIH5R
dERvd25sb2FkTWFuYWdlcigpOworCisgICAgdm9pZCBhZGREb3dubG9hZChEb3dubG9hZFByb3h5
KiwgUVdlYkRvd25sb2FkSXRlbSopOworCisgICAgdm9pZCBkb3dubG9hZFJlY2VpdmVkUmVzcG9u
c2UoRG93bmxvYWRQcm94eSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAg
ICB2b2lkIGRvd25sb2FkQ3JlYXRlZERlc3RpbmF0aW9uKERvd25sb2FkUHJveHkqLCBjb25zdCBR
U3RyaW5nJiBwYXRoKTsKKyAgICB2b2lkIGRvd25sb2FkRmluaXNoZWQoRG93bmxvYWRQcm94eSop
OworICAgIHZvaWQgZG93bmxvYWRGYWlsZWQoRG93bmxvYWRQcm94eSosIGNvbnN0IFF0V2ViRXJy
b3ImKTsKKyAgICB2b2lkIGRvd25sb2FkRGF0YVJlY2VpdmVkKERvd25sb2FkUHJveHkqLCB1aW50
NjRfdCBsZW5ndGgpOworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8UXREb3dubG9hZE1hbmFnZXI+
IGNyZWF0ZShXZWJDb250ZXh0Kik7Citwcml2YXRlOgorICAgIFF0RG93bmxvYWRNYW5hZ2VyKCk7
CisKKyAgICBRTWFwPHVpbnQ2NF90LCBRV2ViRG93bmxvYWRJdGVtKj4gbV9kb3dubG9hZHM7Cit9
OworCit9CisjZW5kaWYgLyogUXREb3dubG9hZE1hbmFnZXJfaCAqLwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0VG91Y2hWaWV3SW50ZXJmYWNlLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRUb3VjaFZpZXdJbnRlcmZhY2UuaAppbmRleCAzYTQ1MzQ5
MGY5MjMxZDgwOTgyNGFiZjhhM2VhYzE5YzQ5ZDFkNjdiLi5hNGZkNDU3YTM4OTQ0NTcyMzhlM2Yy
NmI0NmViZjk1MzdiZDVkY2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvUXRUb3VjaFZpZXdJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvUXRUb3VjaFZpZXdJbnRlcmZhY2UuaApAQCAtODEsNiArODEsNyBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgUUpTRW5naW5lKiBlbmdpbmUoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBjaG9vc2VG
aWxlcyhXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmLCBjb25zdCBRU3RyaW5nTGlzdCYsIEZp
bGVDaG9vc2VyVHlwZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRvd25sb2FkUmVxdWVzdGVkKFFX
ZWJEb3dubG9hZEl0ZW0qIGRvd25sb2FkSXRlbSkgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlk
TW91c2VNb3ZlT3ZlckVsZW1lbnQoY29uc3QgUVVybCYsIGNvbnN0IFFTdHJpbmcmKSB7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0Vmlld0ludGVyZmFjZS5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0Vmlld0ludGVyZmFjZS5oCmluZGV4IDUy
NmE0OTU2MTBkOTY0MTQxZThjOTM0ZjJmNWVjYzlhMTU5OTgwYmMuLmE4MTg5MTE0MThjMzMyMDAw
MzYwYmRmNDRlMzU0YTM1YzJhOWU3MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9RdFZpZXdJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvUXRWaWV3SW50ZXJmYWNlLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlIDxXZWJLaXQy
L1dLQmFzZS5oPgogCiBjbGFzcyBRdFdlYkVycm9yOworY2xhc3MgUVdlYkRvd25sb2FkSXRlbTsK
IAogUVRfQkVHSU5fTkFNRVNQQUNFCiBjbGFzcyBRQ3Vyc29yOwpAQCAtOTMsNiArOTQsOCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNob29zZUZpbGVzKFdLT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXJSZWYsIGNvbnN0IFFTdHJpbmdMaXN0JiBzZWxlY3RlZEZpbGVOYW1lcywgRmlsZUNob29z
ZXJUeXBlKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkTW91c2VNb3ZlT3ZlckVsZW1lbnQo
Y29uc3QgUVVybCYsIGNvbnN0IFFTdHJpbmcmKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgZG93
bmxvYWRSZXF1ZXN0ZWQoUVdlYkRvd25sb2FkSXRlbSopID0gMDsKIH07CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYkVycm9yLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYkVycm9yLmNwcAppbmRleCA3NjU0OTc3ZTA3N2JhYjdk
NTRiNTk3ZWQxZmI0YmE5YmFkMTU3OWQ2Li42ZDJlMTBkODExMTQ1MGE2MmFjZmNkOGE0ODQwYjZj
MTNkMDA4MmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJF
cnJvci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViRXJyb3IuY3Bw
CkBAIC02MCwzICs2MCw4IEBAIFFVcmwgUXRXZWJFcnJvcjo6dXJsKCkgY29uc3QKICAgICBXS1Jl
dGFpblB0cjxXS1VSTFJlZj4gZmFpbGluZ1VSTCA9IGFkb3B0V0soV0tFcnJvckNvcHlGYWlsaW5n
VVJMKGVycm9yLmdldCgpKSk7CiAgICAgcmV0dXJuIFdLVVJMQ29weVFVcmwoZmFpbGluZ1VSTC5n
ZXQoKSk7CiB9CisKK1FTdHJpbmcgUXRXZWJFcnJvcjo6ZGVzY3JpcHRpb24oKSBjb25zdAorewor
ICAgIHJldHVybiBXS1N0cmluZ0NvcHlRU3RyaW5nKFdLRXJyb3JDb3B5TG9jYWxpemVkRGVzY3Jp
cHRpb24oZXJyb3IuZ2V0KCkpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9RdFdlYkVycm9yLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJF
cnJvci5oCmluZGV4IDExYjA5NTNmMmVlZTNlNTY1MTNjNGM5OTBmMjlkMDMxM2FkNjI2ZDQuLjkx
MTg3ZTkyNmE0Y2RhZWI5M2Q5N2Q4YmMzMWExMGY1NzRjODY0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYkVycm9yLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L1F0V2ViRXJyb3IuaApAQCAtMjEsNiArMjEsNyBAQAogI2lmbmRlZiBRdFdl
YkVycm9yX2gKICNkZWZpbmUgUXRXZWJFcnJvcl9oCiAKKyNpbmNsdWRlICJxd2ViZG93bmxvYWRp
dGVtLmgiCiAjaW5jbHVkZSAicXdlYmtpdGdsb2JhbC5oIgogI2luY2x1ZGUgPFF0TmV0d29yay9R
TmV0d29ya1JlcGx5PgogI2luY2x1ZGUgPFdLRXJyb3IuaD4KQEAgLTQyLDkgKzQzLDExIEBAIHB1
YmxpYzoKICAgICBUeXBlIHR5cGUoKSBjb25zdDsKICAgICBRVXJsIHVybCgpIGNvbnN0OwogICAg
IGludCBlcnJvckNvZGUoKSBjb25zdDsKKyAgICBRU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Q7
CiAKICAgICBpbnQgZXJyb3JDb2RlQXNIdHRwU3RhdHVzQ29kZSgpIGNvbnN0IHsgcmV0dXJuIGVy
cm9yQ29kZSgpOyB9CiAgICAgUU5ldHdvcmtSZXBseTo6TmV0d29ya0Vycm9yIGVycm9yQ29kZUFz
TmV0d29ya0Vycm9yKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UU5ldHdvcmtSZXBseTo6
TmV0d29ya0Vycm9yPihlcnJvckNvZGUoKSk7IH0KKyAgICBRV2ViRG93bmxvYWRJdGVtOjpEb3du
bG9hZEVycm9yIGVycm9yQ29kZUFzRG93bmxvYWRFcnJvcigpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PFFXZWJEb3dubG9hZEl0ZW06OkRvd25sb2FkRXJyb3I+KGVycm9yQ29kZSgpKTsgfQog
CiAgICAgUXRXZWJFcnJvcihjb25zdCBRdFdlYkVycm9yJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwCmluZGV4IDZhNDRhZDViNGVkZTgyOTc4
MDlmMWNiMTM5NjkxM2IzMDQzMzU3ZWQuLjc4ODJlZDY2MGRlNTYwNWRjMzU0Zjg1ZmQ1NjZiNmNl
ZGJlYjhiOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBh
Z2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVBy
b3h5LmNwcApAQCAtMjIsMTAgKzIyLDEzIEBACiAjaW5jbHVkZSAiUXRXZWJQYWdlUHJveHkuaCIK
IAogI2luY2x1ZGUgIlF0V2ViRXJyb3IuaCIKKyNpbmNsdWRlICJxd2ViZG93bmxvYWRpdGVtLmgi
CisjaW5jbHVkZSAicXdlYmRvd25sb2FkaXRlbV9wLmgiCiAjaW5jbHVkZSAicXdlYnByZWZlcmVu
Y2VzLmgiCiAjaW5jbHVkZSAicXdlYnByZWZlcmVuY2VzX3AuaCIKIAogI2luY2x1ZGUgIkNsaWVu
dEltcGwuaCIKKyNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCiAjaW5jbHVkZSAicXdraGlzdG9y
eS5oIgogI2luY2x1ZGUgInF3a2hpc3RvcnlfcC5oIgogI2luY2x1ZGUgIkZpbmRJbmRpY2F0b3Iu
aCIKQEAgLTYzLDEzICs2NiwxNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogCiBSZWZQ
dHI8V2ViQ29udGV4dD4gUXRXZWJQYWdlUHJveHk6OnNfZGVmYXVsdENvbnRleHQ7CitSZWZQdHI8
UXREb3dubG9hZE1hbmFnZXI+IFF0V2ViUGFnZVByb3h5OjpzX2Rvd25sb2FkTWFuYWdlcjsKIAog
dW5zaWduZWQgUXRXZWJQYWdlUHJveHk6OnNfZGVmYXVsdFBhZ2VQcm94eUNvdW50ID0gMDsKIAog
UGFzc1JlZlB0cjxXZWJDb250ZXh0PiBRdFdlYlBhZ2VQcm94eTo6ZGVmYXVsdFdLQ29udGV4dCgp
CiB7Ci0gICAgaWYgKCFzX2RlZmF1bHRDb250ZXh0KQorICAgIGlmICghc19kZWZhdWx0Q29udGV4
dCkgewogICAgICAgICBzX2RlZmF1bHRDb250ZXh0ID0gV2ViQ29udGV4dDo6Y3JlYXRlKFN0cmlu
ZygpKTsKKyAgICAgICAgc19kb3dubG9hZE1hbmFnZXIgPSBRdERvd25sb2FkTWFuYWdlcjo6Y3Jl
YXRlKHNfZGVmYXVsdENvbnRleHQuZ2V0KCkpOworICAgIH0KICAgICByZXR1cm4gc19kZWZhdWx0
Q29udGV4dDsKIH0KIApAQCAtMTMzLDggKzEzOSwxMCBAQCBRdFdlYlBhZ2VQcm94eTo6flF0V2Vi
UGFnZVByb3h5KCkKICAgICBpZiAobV9jb250ZXh0ID09IHNfZGVmYXVsdENvbnRleHQpIHsKICAg
ICAgICAgQVNTRVJUKHNfZGVmYXVsdFBhZ2VQcm94eUNvdW50ID4gMCk7CiAgICAgICAgIHNfZGVm
YXVsdFBhZ2VQcm94eUNvdW50LS07Ci0gICAgICAgIGlmICghc19kZWZhdWx0UGFnZVByb3h5Q291
bnQpCisgICAgICAgIGlmICghc19kZWZhdWx0UGFnZVByb3h5Q291bnQpIHsKICAgICAgICAgICAg
IHNfZGVmYXVsdENvbnRleHQuY2xlYXIoKTsKKyAgICAgICAgICAgIHNfZG93bmxvYWRNYW5hZ2Vy
LmNsZWFyKCk7CisgICAgICAgIH0KICAgICB9CiAgICAgZGVsZXRlIG1faGlzdG9yeTsKIH0KQEAg
LTU1OSw0ICs1NjcsMTkgQEAgdm9pZCBRdFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlVmlld3BvcnRQ
cm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnQKICAgICBtX3ZpZXdJbnRl
cmZhY2UtPmRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhhcmdzKTsKIH0KIAordm9pZCBRdFdl
YlBhZ2VQcm94eTo6ZG93bmxvYWRSZXF1ZXN0ZWQoRG93bmxvYWRQcm94eSogZG93bmxvYWQpCit7
CisgICAgUVdlYkRvd25sb2FkSXRlbSogZG93bmxvYWRJdGVtID0gbmV3IFFXZWJEb3dubG9hZEl0
ZW0oKTsKKyAgICBkb3dubG9hZEl0ZW0tPmQtPmRvd25sb2FkUHJveHkgPSBkb3dubG9hZDsKKwor
ICAgIGNvbm5lY3QoZG93bmxvYWRJdGVtLT5kLCBTSUdOQUwocmVjZWl2ZWRSZXNwb25zZShRV2Vi
RG93bmxvYWRJdGVtKikpLCB0aGlzLCBTTE9UKGRpZFJlY2VpdmVEb3dubG9hZFJlc3BvbnNlKFFX
ZWJEb3dubG9hZEl0ZW0qKSkpOworICAgIHNfZG93bmxvYWRNYW5hZ2VyLT5hZGREb3dubG9hZChk
b3dubG9hZCwgZG93bmxvYWRJdGVtKTsKK30KKwordm9pZCBRdFdlYlBhZ2VQcm94eTo6ZGlkUmVj
ZWl2ZURvd25sb2FkUmVzcG9uc2UoUVdlYkRvd25sb2FkSXRlbSogZG93bmxvYWQpCit7CisgICAg
Ly8gTm93IHRoYXQgb3VyIGRvd25sb2FkSXRlbSBoYXMgZXZlcnl0aGluZyB3ZSBuZWVkIHdlIGNh
biBlbWl0IGRvd25sb2FkUmVxdWVzdGVkLgorICAgIG1fdmlld0ludGVyZmFjZS0+ZG93bmxvYWRS
ZXF1ZXN0ZWQoZG93bmxvYWQpOworfQorCiAjaW5jbHVkZSAibW9jX1F0V2ViUGFnZVByb3h5LmNw
cCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94
eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmgKaW5kZXgg
MWFmODAwZDUwOTU0YzMzMTRmYjgwZWU0ZDg0ZmM5ZGUzNWZhMWFjMi4uNDJmNzk2NWIwYzEwYWIz
NDk5OTFhZjkzODEyNjgyMzVjNDE1YmEzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L1F0V2ViUGFnZVByb3h5LmgKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkxheWVy
VHJlZUNvbnRleHQuaCIKICNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCisjaW5jbHVkZSAiUXREb3du
bG9hZE1hbmFnZXIuaCIKICNpbmNsdWRlICJRdFBvbGljeUludGVyZmFjZS5oIgogI2luY2x1ZGUg
IlF0Vmlld0ludGVyZmFjZS5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgpAQCAtMTI2
LDYgKzEyNyw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5kWm9vbWFibGVB
cmVhKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwog
CisgICAgdmlydHVhbCBRdFdlYlBhZ2VQcm94eSogcXRXZWJQYWdlUHJveHkoKSB7IHJldHVybiB0
aGlzOyB9CisKICAgICB2b2lkIGRpZENoYW5nZVVybChjb25zdCBRVXJsJik7CiAgICAgdm9pZCBk
aWRDaGFuZ2VUaXRsZShjb25zdCBRU3RyaW5nJik7CiAKQEAgLTE3Miw4ICsxNzUsMTEgQEAgcHVi
bGljOgogICAgIFFXS0hpc3RvcnkqIGhpc3RvcnkoKSBjb25zdDsKICAgICBRdFZpZXdJbnRlcmZh
Y2UqIHZpZXdJbnRlcmZhY2UoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdJbnRlcmZhY2U7IH0KIAor
ICAgIHZvaWQgZG93bmxvYWRSZXF1ZXN0ZWQoRG93bmxvYWRQcm94eSopOworCiBwdWJsaWMgUV9T
TE9UUzoKICAgICB2b2lkIG5hdmlnYXRpb25TdGF0ZUNoYW5nZWQoKTsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVEb3dubG9hZFJlc3BvbnNlKFFXZWJEb3dubG9hZEl0ZW0qKTsKIAogcHVibGljOgogICAg
IFFfU0lHTkFMIHZvaWQgc2Nyb2xsUmVxdWVzdGVkKGludCBkeCwgaW50IGR5KTsKQEAgLTE5Niw2
ICsyMDIsNyBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ29udGV4dD4g
ZGVmYXVsdFdLQ29udGV4dCgpOwogICAgIHN0YXRpYyBSZWZQdHI8V2ViQ29udGV4dD4gc19kZWZh
dWx0Q29udGV4dDsKKyAgICBzdGF0aWMgUmVmUHRyPFF0RG93bmxvYWRNYW5hZ2VyPiBzX2Rvd25s
b2FkTWFuYWdlcjsKICAgICBzdGF0aWMgdW5zaWduZWQgc19kZWZhdWx0UGFnZVByb3h5Q291bnQ7
CiAKICAgICBSZWZQdHI8V2ViQ29udGV4dD4gbV9jb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViS2l0Mi5wcm8gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBybwppbmRleCAw
ZDIxNjg4MDJjOWNiMDFlM2JmZDkzNDAyNmVmNzkwOGQ3OTA4MDFmLi5iZjNhNTJiM2ZmYzhkNDI0
ODM2MDllZjlhMGNmYjI5ZWFiNDg4NmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJL
aXQyLnBybworKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBybwpAQCAtMjYwLDYgKzI2MCw3
IEBAIEhFQURFUlMgKz0gXAogICAgIFVJUHJvY2Vzcy9xdC9RdERlc2t0b3BXZWJQYWdlUHJveHku
aCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0VG91Y2hXZWJQYWdlUHJveHkuaCBcCiAgICAgVUlQcm9j
ZXNzL3F0L1F0V2ViRXJyb3IuaCBcCisgICAgVUlQcm9jZXNzL3F0L1F0RG93bmxvYWRNYW5hZ2Vy
LmggXAogICAgIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5oIFwKICAgICBVSVByb2Nlc3Mv
cXQvcXdraGlzdG9yeS5oIFwKICAgICBVSVByb2Nlc3MvcXQvcXdraGlzdG9yeV9wLmggXApAQCAt
NTA0LDYgKzUwNSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFVJUHJvY2Vzcy9xdC9RdERlc2t0b3BX
ZWJQYWdlUHJveHkuY3BwIFwKICAgICBVSVByb2Nlc3MvcXQvUXRUb3VjaFdlYlBhZ2VQcm94eS5j
cHAgXAogICAgIFVJUHJvY2Vzcy9xdC9RdFdlYkVycm9yLmNwcCBcCisgICAgVUlQcm9jZXNzL3F0
L1F0RG93bmxvYWRNYW5hZ2VyLmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5
LmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L3F3a2hpc3RvcnkuY3BwIFwKICAgICBVSVByb2Nlc3Mv
cXQvUXRTR1VwZGF0ZVF1ZXVlLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJL
aXQyQVBJLnByaSBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDJBUEkucHJpCmluZGV4IDUxODU5NTc2
MmVkMDc1ODM4OWIxOWJmZDI5ODM4M2QxNDg2ZTg4OTMuLjFhYjg2NGM4NGVkOWFkMzA2NmQ2N2Nm
MjJiZWY5ZjNhN2Q4OWJlMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDJBUEku
cHJpCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDJBUEkucHJpCkBAIC01MCw2ICs1MCw3IEBA
IFdFQktJVDJfQVBJX1NPVVJDRVMgPSBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9jcHAvcXQvV0tVUkxRdC5jcHAgXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvcWJhc2V3ZWJ2aWV3LmNwcCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwIFwKKyAgICAkJFNPVVJDRV9E
SVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJkb3dubG9hZGl0ZW0uY3BwIFwKICAgICAk
JFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2UuY3BwIFwK
ICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXcu
Y3BwIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJuYXZp
Z2F0aW9uY29udHJvbGxlci5jcHAgXApAQCAtMTM1LDYgKzEzNiw4IEBAIFdFQktJVDJfQVBJX0hF
QURFUlMgKz0gXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRl
c2t0b3B3ZWJ2aWV3X3AuaCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xd2VicHJlZmVyZW5jZXMuaCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9xd2VicHJlZmVyZW5jZXNfcC5oIFwKKyAgICAkJFNPVVJDRV9ESVIvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJkb3dubG9hZGl0ZW0uaCBcCisgICAgJCRTT1VSQ0VfRElS
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxvYWRpdGVtX3AuaCBcCiAgICAgJCRT
T1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJwYWdlLmggXAogICAg
ICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZV9wLmgg
XAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2Vidmll
dy5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5o
CmluZGV4IGFjY2NkM2Y4OGUyYTY5OTU5N2EzOWI3YmY4MjhkNDM2MzdiNzBmMzguLmMwNjZlMmY2
YjQ0MzllNmM1NmVjMzAxNWY3YmZlNTUyMWE5NzI0NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaApAQCAtOTMsNiArOTMsMTAgQEAgcHVibGlj
OgogICAgIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IENvcmVJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3Vt
ZURhdGEpOwogICAgIHZvaWQgZGlkRGVjaWRlRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiwgYm9v
bCBhbGxvd092ZXJ3cml0ZSk7CiAKKyNpZiBQTEFURk9STShRVCkKKyAgICB2b2lkIHN0YXJ0VHJh
bnNmZXIoY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbik7CisjZW5kaWYKKwogI2lmIFVTRShDRk5F
VFdPUkspCiAgICAgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
ZGVzdGluYXRpb247IH0KICAgICBEb3dubG9hZEF1dGhlbnRpY2F0aW9uQ2xpZW50KiBhdXRoZW50
aWNhdGlvbkNsaWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKaW5kZXggYTYyNDg5MWY4MDE5NGYzYWRjMTUx
ODFhYzgwODRiNDY5NTU4YmNiNi4uNjBkY2U4OWI0ZWU0Y2NjMzhiZWY5ODk2NTU5ZjlkNzhlNjdm
MzI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZE1hbmFnZXIuY3BwCkBAIC03OSw0ICs3OSwxMyBAQCB2b2lkIERvd25sb2FkTWFu
YWdlcjo6ZG93bmxvYWRGaW5pc2hlZChEb3dubG9hZCogZG93bmxvYWQpCiAgICAgZGVsZXRlIGRv
d25sb2FkOwogfQogCisjaWYgUExBVEZPUk0oUVQpCit2b2lkIERvd25sb2FkTWFuYWdlcjo6c3Rh
cnRUcmFuc2Zlcih1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9u
KQoreworICAgIEFTU0VSVChtX2Rvd25sb2Fkcy5jb250YWlucyhkb3dubG9hZElEKSk7CisgICAg
RG93bmxvYWQqIGRvd25sb2FkID0gbV9kb3dubG9hZHMuZ2V0KGRvd25sb2FkSUQpOworICAgIGRv
d25sb2FkLT5zdGFydFRyYW5zZmVyKGRlc3RpbmF0aW9uKTsKK30KKyNlbmRpZgorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgKaW5kZXggMWYyN2I4NjdhZWQ1NThmYmI3NTNiYzY1MmYx
OGIwYWNiNjlhMDAyMy4uNmZhN2FlYmVlNGYyN2JkNDNjMTcwNjZjYmI3YmI4M2E2ODQyZDRjNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRN
YW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRNYW5hZ2VyLmgKQEAgLTI5LDYgKzI5LDEwIEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAorbmFtZXNwYWNlIFdURiB7CitjbGFzcyBT
dHJpbmc7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBSZXNvdXJjZUhhbmRs
ZTsKICAgICBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CkBAIC01NCw2ICs1OCwxMCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBkb3dubG9hZEZpbmlzaGVkKERvd25sb2FkKik7CiAgICAgYm9vbCBpc0Rvd25s
b2FkaW5nKCkgY29uc3QgeyByZXR1cm4gIW1fZG93bmxvYWRzLmlzRW1wdHkoKTsgfQogCisjaWYg
UExBVEZPUk0oUVQpCisgICAgdm9pZCBzdGFydFRyYW5zZmVyKHVpbnQ2NF90IGRvd25sb2FkSUQs
IGNvbnN0IFdURjo6U3RyaW5nJiBkZXN0aW5hdGlvbik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAg
ICBEb3dubG9hZE1hbmFnZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9Eb3dubG9hZHMvcXQvRG93bmxvYWRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0Rvd25sb2Fkcy9xdC9Eb3dubG9hZFF0LmNwcAppbmRleCA5ZWU5OTk1ZTgwZTg4MGRkYTZk
MjdjOWEzYjUwZjBjMTYxZGVhMGUwLi40ZWVmNDFjNDBiNmM3NjQ5YmE5MDU0MzQ2ZTI4MTZhYTg5
NTQwZDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9x
dC9Eb3dubG9hZFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fk
cy9xdC9Eb3dubG9hZFF0LmNwcApAQCAtNDYsMTMgKzQ2LDE0IEBAIHZvaWQgRG93bmxvYWQ6OnN0
YXJ0KFdlYlBhZ2UqIGluaXRpYXRpbmdXZWJQYWdlKQogICAgIEFTU0VSVCghbV9xdERvd25sb2Fk
ZXIpOwogCiAgICAgbV9xdERvd25sb2FkZXIgPSBuZXcgUXRGaWxlRG93bmxvYWRlcih0aGlzLCBh
ZG9wdFB0cihtYW5hZ2VyLT5nZXQobV9yZXF1ZXN0LnRvTmV0d29ya1JlcXVlc3QoKSkpKTsKLSAg
ICBtX3F0RG93bmxvYWRlci0+c3RhcnQoKTsKKyAgICBtX3F0RG93bmxvYWRlci0+aW5pdCgpOwog
fQogCiB2b2lkIERvd25sb2FkOjpzdGFydFdpdGhIYW5kbGUoV2ViUGFnZSogaW5pdGlhdGluZ1Bh
Z2UsIFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgaW5pdGlh
bFJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3ApCiB7CiAgICAgQVNTRVJUKCFt
X3F0RG93bmxvYWRlcik7CiAgICAgbV9xdERvd25sb2FkZXIgPSBuZXcgUXRGaWxlRG93bmxvYWRl
cih0aGlzLCBhZG9wdFB0cihoYW5kbGUtPmdldEludGVybmFsKCktPm1fam9iLT5yZWxlYXNlKCkp
KTsKKyAgICBtX3F0RG93bmxvYWRlci0+aW5pdCgpOwogfQogCiB2b2lkIERvd25sb2FkOjpjYW5j
ZWwoKQpAQCAtNzAsNyArNzEsMTIgQEAgdm9pZCBEb3dubG9hZDo6cGxhdGZvcm1JbnZhbGlkYXRl
KCkKIAogdm9pZCBEb3dubG9hZDo6ZGlkRGVjaWRlRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBk
ZXN0aW5hdGlvbiwgYm9vbCBhbGxvd092ZXJ3cml0ZSkKIHsKLSAgICBtX3F0RG93bmxvYWRlci0+
ZGVjaWRlZERlc3RpbmF0aW9uKGRlc3RpbmF0aW9uLCBhbGxvd092ZXJ3cml0ZSk7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBEb3dubG9hZDo6c3RhcnRUcmFuc2Zlcihjb25zdCBT
dHJpbmcmIGRlc3RpbmF0aW9uKQoreworICAgIG1fcXREb3dubG9hZGVyLT5zdGFydFRyYW5zZmVy
KGRlc3RpbmF0aW9uKTsKIH0KIAogdm9pZCBEb3dubG9hZDo6cGxhdGZvcm1EaWRGaW5pc2goKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvUXRGaWxl
RG93bmxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9R
dEZpbGVEb3dubG9hZGVyLmNwcAppbmRleCBjOTM2YjA4ZTcwZjkwNGNmNGI1YjMzNmY1NGI3MjY5
NzdkYmVkMGY5Li5jM2IyZThkMGVlMjJhNDc3NTdkM2MwM2RhOGNhZGQzMGVkZGYyZWU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3du
bG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9R
dEZpbGVEb3dubG9hZGVyLmNwcApAQCAtNTMsNDUgKzUzLDQxIEBAIFF0RmlsZURvd25sb2FkZXI6
On5RdEZpbGVEb3dubG9hZGVyKCkKICAgICBhYm9ydERvd25sb2FkV3JpdGluZ0FuZEVtaXRFcnJv
cihRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9yQWJvcnRlZCk7CiB9CiAKLXZvaWQgUXRG
aWxlRG93bmxvYWRlcjo6c3RhcnQoKQordm9pZCBRdEZpbGVEb3dubG9hZGVyOjppbml0KCkKIHsK
ICAgICBjb25uZWN0KG1fcmVwbHkuZ2V0KCksIFNJR05BTChyZWFkeVJlYWQoKSksIFNMT1Qob25S
ZWFkeVJlYWQoKSkpOwogICAgIGNvbm5lY3QobV9yZXBseS5nZXQoKSwgU0lHTkFMKGZpbmlzaGVk
KCkpLCBTTE9UKG9uRmluaXNoZWQoKSkpOwogICAgIGNvbm5lY3QobV9yZXBseS5nZXQoKSwgU0lH
TkFMKGVycm9yKFFOZXR3b3JrUmVwbHk6Ok5ldHdvcmtFcnJvcikpLCBTTE9UKG9uRXJyb3IoUU5l
dHdvcmtSZXBseTo6TmV0d29ya0Vycm9yKSkpOwotCi0gICAgLy8gQ2FsbCBvblJlYWR5UmVhZCBq
dXN0IGluIGNhc2Ugc29tZSBkYXRhIGlzIGFscmVhZHkgd2FpdGluZy4KLSAgICBvblJlYWR5UmVh
ZCgpOwogfQogCi12b2lkIFF0RmlsZURvd25sb2FkZXI6OmRldGVybWluZUZpbGVuYW1lKCkKK1FT
dHJpbmcgUXRGaWxlRG93bmxvYWRlcjo6ZGV0ZXJtaW5lRmlsZW5hbWUoKQogewogICAgIEFTU0VS
VCghbV9kZXN0aW5hdGlvbkZpbGUpOwogCi0gICAgUVN0cmluZyBmaWxlTmFtZUNhbmRpZGF0ZSA9
IGZpbGVuYW1lRnJvbUhUVFBDb250ZW50RGlzcG9zaXRpb24oUVN0cmluZzo6ZnJvbUxhdGluMSht
X3JlcGx5LT5yYXdIZWFkZXIoIkNvbnRlbnQtRGlzcG9zaXRpb24iKSkpOwotICAgIGlmIChmaWxl
TmFtZUNhbmRpZGF0ZS5pc0VtcHR5KCkpIHsKKyAgICBRU3RyaW5nIGZpbGVuYW1lQ2FuZGlkYXRl
ID0gZmlsZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlvbihRU3RyaW5nOjpmcm9tTGF0aW4x
KG1fcmVwbHktPnJhd0hlYWRlcigiQ29udGVudC1EaXNwb3NpdGlvbiIpKSk7CisgICAgaWYgKGZp
bGVuYW1lQ2FuZGlkYXRlLmlzRW1wdHkoKSkgewogICAgICAgICBLVVJMIGt1cmwgPSBtX3JlcGx5
LT51cmwoKTsKLSAgICAgICAgZmlsZU5hbWVDYW5kaWRhdGUgPSBkZWNvZGVVUkxFc2NhcGVTZXF1
ZW5jZXMoa3VybC5sYXN0UGF0aENvbXBvbmVudCgpKTsKKyAgICAgICAgZmlsZW5hbWVDYW5kaWRh
dGUgPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoa3VybC5sYXN0UGF0aENvbXBvbmVudCgpKTsK
ICAgICB9CiAKLSAgICBpZiAoZmlsZU5hbWVDYW5kaWRhdGUuaXNFbXB0eSgpKSB7CisgICAgaWYg
KGZpbGVuYW1lQ2FuZGlkYXRlLmlzRW1wdHkoKSkgewogICAgICAgICBhYm9ydERvd25sb2FkV3Jp
dGluZ0FuZEVtaXRFcnJvcihRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9yQ2Fubm90RGV0
ZXJtaW5lRmlsZW5hbWUpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBRU3RyaW5n
KCk7CiAgICAgfQogCiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgd2UgcmVtb3ZlIHBvc3NpYmxlICIu
Li8uLiIgcGFydHMgaW4gdGhlIGdpdmVuIGZpbGUgbmFtZS4KLSAgICBRRmlsZUluZm8gZmlsZU5h
bWVGaWx0ZXIoZmlsZU5hbWVDYW5kaWRhdGUpOwotICAgIFFTdHJpbmcgZmlsZU5hbWUgPSBmaWxl
TmFtZUZpbHRlci5maWxlTmFtZSgpOworICAgIFFGaWxlSW5mbyBmaWxlbmFtZUZpbHRlcihmaWxl
bmFtZUNhbmRpZGF0ZSk7CisgICAgUVN0cmluZyBmaWxlbmFtZSA9IGZpbGVuYW1lRmlsdGVyLmZp
bGVOYW1lKCk7CiAKLSAgICBpZiAoZmlsZU5hbWUuaXNFbXB0eSgpKSB7CisgICAgaWYgKGZpbGVu
YW1lLmlzRW1wdHkoKSkgewogICAgICAgICBhYm9ydERvd25sb2FkV3JpdGluZ0FuZEVtaXRFcnJv
cihRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9yQ2Fubm90RGV0ZXJtaW5lRmlsZW5hbWUp
OwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBRU3RyaW5nKCk7CiAgICAgfQogCi0g
ICAgYm9vbCBhbGxvd092ZXJ3cml0ZTsKLSAgICBtX2Rvd25sb2FkLT5kZWNpZGVEZXN0aW5hdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZShmaWxlTmFtZSwgYWxsb3dPdmVyd3JpdGUpOworICAgIHJl
dHVybiBmaWxlbmFtZTsKIH0KIAotdm9pZCBRdEZpbGVEb3dubG9hZGVyOjpkZWNpZGVkRGVzdGlu
YXRpb24oY29uc3QgUVN0cmluZyYgZGVjaWRlZEZpbGVQYXRoLCBib29sIGFsbG93T3ZlcndyaXRl
KQordm9pZCBRdEZpbGVEb3dubG9hZGVyOjpzdGFydFRyYW5zZmVyKGNvbnN0IFFTdHJpbmcmIGRl
Y2lkZWRGaWxlUGF0aCkKIHsKICAgICBBU1NFUlQoIW1fZGVzdGluYXRpb25GaWxlKTsKIApAQCAt
MTAyLDE3ICs5OCwxMiBAQCB2b2lkIFF0RmlsZURvd25sb2FkZXI6OmRlY2lkZWREZXN0aW5hdGlv
bihjb25zdCBRU3RyaW5nJiBkZWNpZGVkRmlsZVBhdGgsIGJvb2wgYQogICAgIH0KIAogICAgIGlm
IChkZWNpZGVkRmlsZVBhdGguaXNFbXB0eSgpKSB7Ci0gICAgICAgIGFib3J0RG93bmxvYWRXcml0
aW5nQW5kRW1pdEVycm9yKFF0RmlsZURvd25sb2FkZXI6OkRvd25sb2FkRXJyb3JDYW5jZWxsZWRC
eUNhbGxlcik7CisgICAgICAgIGFib3J0RG93bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKFF0Rmls
ZURvd25sb2FkZXI6OkRvd25sb2FkRXJyb3JDYW5jZWxsZWQpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgT3duUHRyPFFGaWxlPiBkb3dubG9hZEZpbGUgPSBhZG9wdFB0cihuZXcgUUZp
bGUoZGVjaWRlZEZpbGVQYXRoKSk7CiAKLSAgICBpZiAoIWFsbG93T3ZlcndyaXRlICYmIGRvd25s
b2FkRmlsZS0+ZXhpc3RzKCkpIHsKLSAgICAgICAgYWJvcnREb3dubG9hZFdyaXRpbmdBbmRFbWl0
RXJyb3IoUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvckZpbGVBbHJlYWR5RXhpc3RzKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIGlmICghZG93bmxvYWRGaWxlLT5vcGVuKFFJ
T0RldmljZTo6V3JpdGVPbmx5IHwgUUlPRGV2aWNlOjpUcnVuY2F0ZSkpIHsKICAgICAgICAgYWJv
cnREb3dubG9hZFdyaXRpbmdBbmRFbWl0RXJyb3IoUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRF
cnJvckNhbm5vdE9wZW5GaWxlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTMzLDcgKzEyNCw2IEBA
IHZvaWQgUXRGaWxlRG93bmxvYWRlcjo6ZGVjaWRlZERlc3RpbmF0aW9uKGNvbnN0IFFTdHJpbmcm
IGRlY2lkZWRGaWxlUGF0aCwgYm9vbCBhCiAgICAgLy8gZnVuY3Rpb24gd2FzIGNhbGxlZC4KICAg
ICBpZiAobV9yZXBseS0+aXNGaW5pc2hlZCgpKQogICAgICAgICBvbkZpbmlzaGVkKCk7Ci0KIH0K
IAogdm9pZCBRdEZpbGVEb3dubG9hZGVyOjphYm9ydERvd25sb2FkV3JpdGluZ0FuZEVtaXRFcnJv
cihRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9yIGVycm9yQ29kZSkKQEAgLTE1NywxMCAr
MTQ3LDEwIEBAIHZvaWQgUXRGaWxlRG93bmxvYWRlcjo6YWJvcnREb3dubG9hZFdyaXRpbmdBbmRF
bWl0RXJyb3IoUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvCiAgICAgY2FzZSBRdEZpbGVEb3dubG9h
ZGVyOjpEb3dubG9hZEVycm9yQ2Fubm90T3BlbkZpbGU6CiAgICAgICAgIHRyYW5zbGF0ZWRFcnJv
ck1lc3NhZ2UgPSBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlF0RmlsZURvd25sb2FkZXIi
LCAiQ2Fubm90IG9wZW4gZmlsZSBmb3Igd3JpdGluZyIpOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIFF0RmlsZURvd25sb2FkZXI6OkRvd25sb2FkRXJyb3JGaWxlQWxyZWFkeUV4aXN0czoKLSAg
ICAgICAgdHJhbnNsYXRlZEVycm9yTWVzc2FnZSA9IFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0
ZSgiUXRGaWxlRG93bmxvYWRlciIsICJGaWxlIGFscmVhZHkgZXhpc3RzIik7CisgICAgY2FzZSBR
dEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9yRGVzdGluYXRpb25BbHJlYWR5RXhpc3RzOgor
ICAgICAgICB0cmFuc2xhdGVkRXJyb3JNZXNzYWdlID0gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNs
YXRlKCJRdEZpbGVEb3dubG9hZGVyIiwgIkRlc3RpbmF0aW9uIGFscmVhZHkgZXhpc3RzIik7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvckNh
bmNlbGxlZEJ5Q2FsbGVyOgorICAgIGNhc2UgUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJv
ckNhbmNlbGxlZDoKICAgICAgICAgdHJhbnNsYXRlZEVycm9yTWVzc2FnZSA9IFFDb3JlQXBwbGlj
YXRpb246OnRyYW5zbGF0ZSgiUXRGaWxlRG93bmxvYWRlciIsICJEb3dubG9hZCBjYW5jZWxsZWQg
YnkgY2FsbGVyIik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUXRGaWxlRG93bmxvYWRlcjo6
RG93bmxvYWRFcnJvckNhbm5vdERldGVybWluZUZpbGVuYW1lOgpAQCAtMTc1LDYgKzE2NSwyNyBA
QCB2b2lkIFF0RmlsZURvd25sb2FkZXI6OmFib3J0RG93bmxvYWRXcml0aW5nQW5kRW1pdEVycm9y
KFF0RmlsZURvd25sb2FkZXI6OkRvd25sbwogICAgIG1fZG93bmxvYWQtPmRpZEZhaWwoZG93bmxv
YWRFcnJvciwgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSgwLCAwKSk7CiB9CiAKK3ZvaWQgUXRGaWxl
RG93bmxvYWRlcjo6aGFuZGxlRG93bmxvYWRSZXNwb25zZSgpCit7CisgICAgLy8gQnkgQVBJIGNv
bnRyYWN0LCBRTmV0d29ya1JlcGx5OjptZXRhRGF0YUNoYW5nZWQgY2Fubm90IHJlYWxseSBiZSB0
cnVzdGVkLgorICAgIC8vIFRodXMgd2UgbmVlZCB0byBjYWxsIHRoaXMgdXBvbiByZWNlaXZpbmcg
Zmlyc3QgZGF0YS4KKyAgICBTdHJpbmcgY29udGVudFR5cGUgPSBtX3JlcGx5LT5oZWFkZXIoUU5l
dHdvcmtSZXF1ZXN0OjpDb250ZW50VHlwZUhlYWRlcikudG9TdHJpbmcoKTsKKyAgICBTdHJpbmcg
ZW5jb2RpbmcgPSBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVudFR5cGUpOworICAg
IFN0cmluZyBtaW1lVHlwZSA9IGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5
cGUpOworICAgIFN0cmluZyBmaWxlbmFtZSA9IGRldGVybWluZUZpbGVuYW1lKCk7CisKKyAgICAv
LyBJZiBmaWxlbmFtZSBpcyBlbXB0eSBpdCBtZWFucyBkZXRlcm1pbmVGaWxlbmFtZSBhYm9ydGVk
IGFuZCBlbWl0dGVkIGFuIGVycm9yLgorICAgIGlmIChmaWxlbmFtZS5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIC8vIExldCdzIHRyeSB0byBndWVzcyBmcm9tIHRoZSBleHRlbnNp
b24uCisgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKKyAgICAgICAgbWltZVR5cGUgPSBNSU1F
VHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvclBhdGgobV9yZXBseS0+dXJsKCkucGF0aCgpKTsK
KworICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UobV9yZXBseS0+dXJsKCksIG1pbWVUeXBl
LCBtX3JlcGx5LT5oZWFkZXIoUU5ldHdvcmtSZXF1ZXN0OjpDb250ZW50TGVuZ3RoSGVhZGVyKS50
b0xvbmdMb25nKCksIGVuY29kaW5nLCBmaWxlbmFtZSk7CisgICAgbV9kb3dubG9hZC0+ZGlkUmVj
ZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKK30KKwogdm9pZCBRdEZpbGVEb3dubG9hZGVyOjpvblJl
YWR5UmVhZCgpCiB7CiAgICAgaWYgKG1fZGVzdGluYXRpb25GaWxlKSB7CkBAIC0xOTUsMjcgKzIw
NiwyMSBAQCB2b2lkIFF0RmlsZURvd25sb2FkZXI6Om9uUmVhZHlSZWFkKCkKIAogICAgICAgICBt
X2Rvd25sb2FkLT5kaWRSZWNlaXZlRGF0YShieXRlc1dyaXR0ZW4pOwogICAgIH0gZWxzZSBpZiAo
IW1faGVhZGVyc1JlYWQpIHsKLSAgICAgICAgLy8gQnkgQVBJIGNvbnRyYWN0LCBRTmV0d29ya1Jl
cGx5OjptZXRhRGF0YUNoYW5nZWQgY2Fubm90IHJlYWxseSBiZSB0cnVzdGVkLgotICAgICAgICAv
LyBUaHVzIHdlIG5lZWQgdG8gY2FsbCB0aGlzIHVwb24gcmVjZWl2aW5nIGZpcnN0IGRhdGEuCi0g
ICAgICAgIFN0cmluZyBjb250ZW50VHlwZSA9IG1fcmVwbHktPmhlYWRlcihRTmV0d29ya1JlcXVl
c3Q6OkNvbnRlbnRUeXBlSGVhZGVyKS50b1N0cmluZygpOwotICAgICAgICBTdHJpbmcgZW5jb2Rp
bmcgPSBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVudFR5cGUpOwotICAgICAgICBT
dHJpbmcgbWltZVR5cGUgPSBleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBl
KTsKLQotICAgICAgICAvLyBMZXQncyB0cnkgdG8gZ3Vlc3MgZnJvbSB0aGUgZXh0ZW5zaW9uLgot
ICAgICAgICBpZiAobWltZVR5cGUuaXNFbXB0eSgpKQotICAgICAgICAgICAgbWltZVR5cGUgPSBN
SU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvclBhdGgobV9yZXBseS0+dXJsKCkucGF0aCgp
KTsKLQotICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKG1fcmVwbHktPnVybCgpLCBt
aW1lVHlwZSwgbV9yZXBseS0+aGVhZGVyKFFOZXR3b3JrUmVxdWVzdDo6Q29udGVudExlbmd0aEhl
YWRlcikudG9Mb25nTG9uZygpLCBlbmNvZGluZywgU3RyaW5nKCkpOwotICAgICAgICBtX2Rvd25s
b2FkLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UpOwotCi0gICAgICAgIGRldGVybWluZUZp
bGVuYW1lKCk7Ci0KKyAgICAgICAgaGFuZGxlRG93bmxvYWRSZXNwb25zZSgpOwogICAgICAgICBt
X2hlYWRlcnNSZWFkID0gdHJ1ZTsKICAgICB9CiB9CiAKIHZvaWQgUXRGaWxlRG93bmxvYWRlcjo6
b25GaW5pc2hlZCgpCiB7CisgICAgLy8gSWYgaXQncyBmaW5pc2hlZCBhbmQgd2UgaGF2ZW4ndCBl
dmVuIHJlYWQgdGhlIGhlYWRlcnMsIGl0IG1lYW5zIHdlIG5ldmVyIGdvdCB0byBvblJlYWR5UmVh
ZCBhbmQgdGhhdCB3ZSBhcmUKKyAgICAvLyBwcm9iYWJseSBkZWFsaW5nIHdpdGggdGhlIGRvd25s
b2FkIG9mIGEgbG9jYWwgZmlsZSBvciBvZiBhIHNtYWxsIGZpbGUgdGhhdCB3YXMgc3RhcnRlZCB3
aXRoIGEgaGFuZGxlLgorICAgIGlmICghbV9oZWFkZXJzUmVhZCkgeworICAgICAgICBoYW5kbGVE
b3dubG9hZFJlc3BvbnNlKCk7CisgICAgICAgIG1faGVhZGVyc1JlYWQgPSB0cnVlOworICAgICAg
ICByZXR1cm47CisgICAgfQorCiAgICAgaWYgKCFtX2Rlc3RpbmF0aW9uRmlsZSkKICAgICAgICAg
cmV0dXJuOwogCkBAIC0yMjMsNiArMjI4LDggQEAgdm9pZCBRdEZpbGVEb3dubG9hZGVyOjpvbkZp
bmlzaGVkKCkKIAogICAgIGlmIChtX2Vycm9yID09IFFOZXR3b3JrUmVwbHk6Ok5vRXJyb3IpCiAg
ICAgICAgIG1fZG93bmxvYWQtPmRpZEZpbmlzaCgpOworICAgIGVsc2UgaWYgIChtX2Vycm9yID09
IFFOZXR3b3JrUmVwbHk6Ok9wZXJhdGlvbkNhbmNlbGVkRXJyb3IpCisgICAgICAgIGFib3J0RG93
bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKFF0RmlsZURvd25sb2FkZXI6OkRvd25sb2FkRXJyb3JD
YW5jZWxsZWQpOwogICAgIGVsc2UKICAgICAgICAgYWJvcnREb3dubG9hZFdyaXRpbmdBbmRFbWl0
RXJyb3IoUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvck5ldHdvcmtGYWlsdXJlKTsKIH0K
QEAgLTIzNSw2ICsyNDIsNyBAQCB2b2lkIFF0RmlsZURvd25sb2FkZXI6Om9uRXJyb3IoUU5ldHdv
cmtSZXBseTo6TmV0d29ya0Vycm9yIGNvZGUpCiB2b2lkIFF0RmlsZURvd25sb2FkZXI6OmNhbmNl
bCgpCiB7CiAgICAgbV9yZXBseS0+YWJvcnQoKTsKKyAgICAvLyBRdEZpbGVEb3dubG9hZGVyOjpv
bkZpbmlzaGVkKCkgd2lsbCBiZSBjYWxsZWQgYW5kIHdpbGwgcmFpc2UgYSBEb3dubG9hZEVycm9y
Q2FuY2VsbGVkLgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L1F0RmlsZURvd25sb2FkZXIuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L1F0RmlsZURvd25sb2FkZXIuaApp
bmRleCBiNmI4YmEyOGJlYTlmOGFiMWQ2OTRjODQzMzQxNDRhNGEyYzlkMTViLi4wYWUwZmQ4NGE2
OWM3ZGVjMWYyYTQwODY5MmFlNmI5NmJiOWIyZTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3dubG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5oCkBAIC00
NCwxNiArNDQsMTYgQEAgY2xhc3MgUXRGaWxlRG93bmxvYWRlciA6IHB1YmxpYyBRT2JqZWN0IHsK
IHB1YmxpYzoKICAgICBRdEZpbGVEb3dubG9hZGVyKERvd25sb2FkKiwgUGFzc093blB0cjxRTmV0
d29ya1JlcGx5Pik7CiAgICAgdmlydHVhbCB+UXRGaWxlRG93bmxvYWRlcigpOwotICAgIHZvaWQg
ZGVjaWRlZERlc3RpbmF0aW9uKGNvbnN0IFFTdHJpbmcmIGRlY2lkZWRGaWxlUGF0aCwgYm9vbCBh
bGxvd092ZXJ3cml0ZSk7CiAgICAgdm9pZCBjYW5jZWwoKTsKLSAgICB2b2lkIHN0YXJ0KCk7Cisg
ICAgdm9pZCBpbml0KCk7CisgICAgdm9pZCBzdGFydFRyYW5zZmVyKGNvbnN0IFFTdHJpbmcmIGRl
c3RpbmF0aW9uKTsKIAogICAgIGVudW0gRG93bmxvYWRFcnJvciB7CiAgICAgICAgIERvd25sb2Fk
RXJyb3JBYm9ydGVkID0gMCwKICAgICAgICAgRG93bmxvYWRFcnJvckNhbm5vdFdyaXRlVG9GaWxl
LAogICAgICAgICBEb3dubG9hZEVycm9yQ2Fubm90T3BlbkZpbGUsCi0gICAgICAgIERvd25sb2Fk
RXJyb3JGaWxlQWxyZWFkeUV4aXN0cywKLSAgICAgICAgRG93bmxvYWRFcnJvckNhbmNlbGxlZEJ5
Q2FsbGVyLAorICAgICAgICBEb3dubG9hZEVycm9yRGVzdGluYXRpb25BbHJlYWR5RXhpc3RzLAor
ICAgICAgICBEb3dubG9hZEVycm9yQ2FuY2VsbGVkLAogICAgICAgICBEb3dubG9hZEVycm9yQ2Fu
bm90RGV0ZXJtaW5lRmlsZW5hbWUsCiAgICAgICAgIERvd25sb2FkRXJyb3JOZXR3b3JrRmFpbHVy
ZQogICAgIH07CkBAIC02NSw3ICs2NSw4IEBAIHByaXZhdGUgc2xvdHM6CiAKIHByaXZhdGU6CiAg
ICAgdm9pZCBhYm9ydERvd25sb2FkV3JpdGluZ0FuZEVtaXRFcnJvcihRdEZpbGVEb3dubG9hZGVy
OjpEb3dubG9hZEVycm9yKTsKLSAgICB2b2lkIGRldGVybWluZUZpbGVuYW1lKCk7CisgICAgUVN0
cmluZyBkZXRlcm1pbmVGaWxlbmFtZSgpOworICAgIHZvaWQgaGFuZGxlRG93bmxvYWRSZXNwb25z
ZSgpOwogCiAgICAgRG93bmxvYWQqIG1fZG93bmxvYWQ7CiAgICAgT3duUHRyPFFOZXR3b3JrUmVw
bHk+IG1fcmVwbHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRl
eCBlOGFhN2FkYTRiNmU1ZTZhZjE2YTQ3MzgzZjkyYzQwN2IyODY4YTVmLi5iZDY5Y2FkN2VkYjA1
ZjViYTlhNGFiYzA1NjNhMzc2MmFmMzdlNTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAKQEAgLTk1Nyw2ICs5NTcsMTMgQEAgdm9pZCBXZWJQcm9jZXNzOjpjYW5j
ZWxEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElEKQogICAgIERvd25sb2FkTWFuYWdlcjo6c2hh
cmVkKCkuY2FuY2VsRG93bmxvYWQoZG93bmxvYWRJRCk7CiB9CiAKKyNpZiBQTEFURk9STShRVCkK
K3ZvaWQgV2ViUHJvY2Vzczo6c3RhcnRUcmFuc2Zlcih1aW50NjRfdCBkb3dubG9hZElELCBjb25z
dCBTdHJpbmcmIGRlc3RpbmF0aW9uKQoreworICAgIERvd25sb2FkTWFuYWdlcjo6c2hhcmVkKCku
c3RhcnRUcmFuc2Zlcihkb3dubG9hZElELCBkZXN0aW5hdGlvbik7Cit9CisjZW5kaWYKKwogdm9p
ZCBXZWJQcm9jZXNzOjpzZXRFbmhhbmNlZEFjY2Vzc2liaWxpdHkoYm9vbCBmbGFnKQogewogICAg
IFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnNldEVuaGFuY2VkVXNlckludGVyZmFjZUFjY2Vzc2li
aWxpdHkoZmxhZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDBk
NWQ3NGE5YzFjMTQ5MTJkMjM2ZGQzODRmNjUzNjAzMWI0MTQxMzIuLjM5ZjhhNWYwY2U4OGMwODAz
ZmIyOTY2OTBhNmNmNzRlNjFlNjJkMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oCkBAIC0xNzUsNiArMTc1LDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZG93bmxvYWRS
ZXF1ZXN0KHVpbnQ2NF90IGRvd25sb2FkSUQsIHVpbnQ2NF90IGluaXRpYXRpbmdQYWdlSUQsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgY2FuY2VsRG93bmxvYWQo
dWludDY0X3QgZG93bmxvYWRJRCk7CisjaWYgUExBVEZPUk0oUVQpCisgICAgdm9pZCBzdGFydFRy
YW5zZmVyKHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24pOwor
I2VuZGlmCiAKICAgICB2b2lkIHNldFRleHRDaGVja2VyU3RhdGUoY29uc3QgVGV4dENoZWNrZXJT
dGF0ZSYpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluCmluZGV4IDQ0ZjQ0MTlhMDc4N2ZjNzc1OWNjNTJiM2U1NDQzNWY3OTVmYzM4
ZjguLmY5MTk2YWUyYTk4ZDE3YjY4M2FkNDc2MGMwYjVmNDk3YTE1ZWZjODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTY0LDYg
KzY0LDkgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyB7CiAgICAgIyB0d28gbWVzc2FnZXMuCiAg
ICAgRG93bmxvYWRSZXF1ZXN0KHVpbnQ2NF90IGRvd25sb2FkSUQsIHVpbnQ2NF90IGluaXRpYXRp
bmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KQogICAgIENhbmNlbERv
d25sb2FkKHVpbnQ2NF90IGRvd25sb2FkSUQpCisjaWYgUExBVEZPUk0oUVQpCisgICAgU3RhcnRU
cmFuc2Zlcih1aW50NjRfdCBkb3dubG9hZElELCBXVEY6OlN0cmluZyBkZXN0aW5hdGlvbikKKyNl
bmRpZgogCiAgICAgU2V0VGV4dENoZWNrZXJTdGF0ZShXZWJLaXQ6OlRleHRDaGVja2VyU3RhdGUg
dGV4dENoZWNrZXJTdGF0ZSkKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113350</attachid>
            <date>2011-11-02 12:24:53 -0700</date>
            <delta_ts>2011-11-02 12:30:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68962-20111102212417.patch</filename>
            <type>text/plain</type>
            <size>63444</size>
            <attacher name="Jesus Sanchez-Palencia">jesus</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkwNzYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggODM1NzBhN2VkMGNk
ZjgwMzIwMzQ2MDEwOTM3NDRjNmFkOGRlMWFlOS4uNWIxZGVhYTQ1NjAxNzQ0MTc1ODFiMWExMWU2
YmFlZjFiZGI4Nzc1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0xMS0w
MiAgSmVzdXMgU2FuY2hlei1QYWxlbmNpYSAgPGplc3VzLnBhbGVuY2lhQG9wZW5ib3NzYS5vcmc+
CisKKyAgICAgICAgW1F0XVtXSzJdIERvd25sb2FkIHN1cHBvcnQgYW5kIEFQSSBpbiBVSVByb2Nl
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4OTYy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVnaXN0
ZXJpbmcgbmV3IHFtbCB0eXBlIFFXZWJEb3dubG9hZEl0ZW0uCisKKyAgICAgICAgKiBkZWNsYXJh
dGl2ZS9wbHVnaW4uY3BwOgorICAgICAgICAoV2ViS2l0UW1sUGx1Z2luOjpyZWdpc3RlclR5cGVz
KToKKwogMjAxMS0xMS0wMiAgRGVlcGFrIFNoZXJ2ZWdoYXIgIDxicHd2NjRAbW90b3JvbGEuY29t
PgogCiAgICAgICAgIFtRdF0gRmFpbGluZyB0ZXN0IG1lZGlhL3ZpZGVvLWRvY3VtZW50LXR5cGVz
Lmh0bWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwppbmRleCBkMDExMDQ3M2ZiYTY2NWIzMTVmZmFjYjg5NTBiMTc4ZmIzM2Qx
OWFhLi45NGMxOWQxYjRhNThmMTRhM2M3MDFhNjI4YTliMjJkMDU5NjRmOTE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTQ4IEBACisyMDExLTExLTAyICBKZXN1cyBTYW5jaGV6LVBhbGVuY2lhICA8
amVzdXMucGFsZW5jaWFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBbUXRdW1dLMl0gRG93bmxv
YWQgc3VwcG9ydCBhbmQgQVBJIGluIFVJUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg5NjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZSBpbXBsZW1lbnQgb3VyIFdrQ29udGV4dERvd25sb2Fk
Q2xpZW50IGFuZCB0aGUgbmVlZGVkIGNhbGxiYWNrcy4KKyAgICAgICAgV2UgYWxzbyBhZGQgQVBJ
cyBieSBleHBvc2luZyBRV2ViRG93bmxvYWRJdGVtLiBPYmplY3RzIGZyb20gdGhpcyB0eXBlCisg
ICAgICAgIGhhdmUgdGhlaXIgb3duZXJzaGlwIGhhbmRsZWQgYnkgUURlc2t0b3BXZWJWaWV3IGFu
ZCB3aWxsIGJlIGNyZWF0ZWQgb3IKKyAgICAgICAgZGVzdHJveWVkIGFzIG5lZWRlZC4gQ2xhc3Nl
cyBpbXBsZW1lbnRpbmcgVmlld0ludGVyZmFjZSAoUURlc2t0b3BXZWJWaWV3UHJpdmF0ZQorICAg
ICAgICBhbmQgVG91Y2hWaWV3SW50ZXJmYWNlKSB3aWxsIHJlY2VpdmUgYSBzaWduYWwgKGRvd25s
b2FkUmVxdWVzdGVkKSB3aXRoIGEgcG9pbnRlcgorICAgICAgICB0byB0aGUgcmVjZW50bHkgY3Jl
YXRlZCBRV2ViRG93bmxvYWRJdGVtLiBXaXRoIHRoYXQgdGhleSBjYW4gY29ubmVjdCB0aGUgcHJv
cGVyCisgICAgICAgIHNpZ25hbHMgYW5kIHNsb3RzLCBzZXQgdGhlIGRvd25sb2FkIGRlc3RpbmF0
aW9uIHBhdGggYW5kIHRoZW4gY2FsbCBzdGFydCgpLgorICAgICAgICBPYmplY3RzIG9mIHRoaXMg
dHlwZSB3aWxsIHByb3ZpZGUgdGhlIHByb2dyZXNzIG9mIGEgZG93bmxvYWQsIGEgc2xvdCB0byBj
YW5jZWwgaXQsCisgICAgICAgIGFuZCBzaWduYWxzIGZvciBnZXR0aW5nIGZpbmlzaGVkIG9yIGZh
aWx1cmUgc3RhdHVzLgorICAgICAgICBRV2ViRG93bmxvYWRJdGVtIHdhcyBhbHNvIGV4cG9zZWQg
aW4gUU1MLgorICAgICAgICBRdCBuZWVkZWQgYW4gYXN5bmNocm9ub3VzIHdheSBmb3IgVUlQcm9j
ZXNzIHRvIHJldHVybiBhIGRlc3RpbmF0aW9uIHBhdGggdG8gV2ViUHJvY2VzcywKKyAgICAgICAg
dGhlcmVmb3JlIHRoZSBzdGFydFRyYW5zZmVyIEFQSSB3YXMgYWRkZWQgdG8gV2ViS2l0MidzIERv
d25sb2FkIGhhbmRsZXJzLgorCisgICAgICAgICogU2hhcmVkL3F0L1dlYkNvcmVBcmd1bWVudENv
ZGVyc1F0LmNwcDoKKyAgICAgICAgKENvcmVJUEM6Ojo6ZW5jb2RlKToKKyAgICAgICAgKENvcmVJ
UEM6Ojo6ZGVjb2RlKToKKyAgICAgICAgQWRkIGVuY29kaW5nIGFuZCBkZWNvZGluZyBvZiBzdWdn
ZXN0ZWRGaWxlbmFtZSBmb3IgUmVzb3VyY2VSZXNwb25zZS4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvcXQvV0tWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xYmFzZXdlYnZp
ZXcuaDogQWRkIHNpZ25hbCBkb3dubG9hZFJlcXVlc3RlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHA6CisgICAgICAgIChRRGVza3RvcFdlYlZpZXdQcml2
YXRlOjpkb3dubG9hZFJlcXVlc3RlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xZGVz
a3RvcHdlYnZpZXdfcC5oOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxv
YWRpdGVtLmNwcDogQWRkZWQuCisgICAgICAgIChRV2ViRG93bmxvYWRJdGVtUHJpdmF0ZTo6UVdl
YkRvd25sb2FkSXRlbVByaXZhdGUpOgorICAgICAgICAoUVdlYkRvd25sb2FkSXRlbTo6UVdlYkRv
d25sb2FkSXRlbSk6CisgICAgICAgIChRV2ViRG93bmxvYWRJdGVtOjp+UVdlYkRvd25sb2FkSXRl
bSk6CisgICAgICAgIChRV2ViRG93bmxvYWRJdGVtOjp1cmwpOgorICAgICAgICAoUVdlYkRvd25s
b2FkSXRlbTo6ZGVzdGluYXRpb25QYXRoKToKKyAgICAgICAgKFFXZWJEb3dubG9hZEl0ZW06OnNl
dERlc3RpbmF0aW9uUGF0aCk6CisgICAgICAgIChRV2ViRG93bmxvYWRJdGVtOjpzdWdnZXN0ZWRG
aWxlbmFtZSk6CisgICAgICAgIChRV2ViRG93bmxvYWRJdGVtOjptaW1lVHlwZSk6CisgICAgICAg
IChRV2ViRG93bmxvYWRJdGVtOjpleHBlY3RlZENvbnRlbnRMZW5ndGgpOgorICAgICAgICAoUVdl
YkRvd25sb2FkSXRlbTo6dG90YWxCeXRlc1JlY2VpdmVkKToKKyAgICAgICAgKFFXZWJEb3dubG9h
ZEl0ZW06OmNhbmNlbCk6CisgICAgICAgIChRV2ViRG93bmxvYWRJdGVtOjpzdGFydCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxvYWRpdGVtLmg6IEFkZGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdlYmRvd25sb2FkaXRlbV9wLmg6IEFkZGVkLgorICAgICAg
ICAoUVdlYkRvd25sb2FkSXRlbVByaXZhdGU6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL0Rlc2t0b3BXZWJWaWV3L3RzdF9k
b3dubG9hZC5xbWw6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1s
dGVzdHMvY29tbW9uL2Rvd25sb2FkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL2Rvd25sb2FkLnppcDogQWRkZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9xbWx0ZXN0cy5wcm86CisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpEb3dubG9hZFByb3h5OjpzdGFydFRyYW5zZmVyKTogUXQgb25seSBmdW5jdGlvbiBhZGRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaDoKKworICAg
ICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6IEFkZGVkIFF0IHNwZWNpZmljIGZ1bmN0aW9u
IHRvIGNhbGwgaGFuZGxlRG93bmxvYWRSZXF1ZXN0IGZyb20gUXRXZWJQYWdlUHJveHkuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
bnRleHQ6OmRvd25sb2FkKToKKyAgICAgICAgVXNpbmcgV2ViUGFnZVByb3h5OjpoYW5kbGVEb3du
bG9hZFJlcXVlc3QgdG8gYm9vdHN0cmFwIGEgZG93bmxvYWQgdGhyb3VnaCBQYWdlQ2xpZW50Lgor
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbik6CisgICAgICAgIFVzaW5nIGhh
bmRsZURvd25sb2FkUmVxdWVzdCgpIHRvIGJvb3RzdHJhcCBhIGRvd25sb2FkIHRocm91Z2ggUGFn
ZUNsaWVudC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpoYW5kbGVEb3dubG9hZFJl
cXVlc3QpOiBDYWxscyBQYWdlQ2xpZW50OjpoYW5kbGVEb3dubG9hZFJlcXVlc3QoKS4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQv
UXREb3dubG9hZE1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6dG9RdERvd25s
b2FkTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OnF0X3drX2RpZFJlY2VpdmVSZXNwb25zZSk6
CisgICAgICAgIChXZWJLaXQ6OnF0X3drX2RpZENyZWF0ZURlc3RpbmF0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6cXRfd2tfZGlkRmluaXNoRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpxdF93
a19kaWRGYWlsRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpxdF93a19kaWRSZWNlaXZlRGF0
YUZvckRvd25sb2FkKToKKyAgICAgICAgKFF0RG93bmxvYWRNYW5hZ2VyOjpkb3dubG9hZFJlY2Vp
dmVkUmVzcG9uc2UpOiBXaWxsIHJlYWNoIFF0V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlRG93bmxv
YWRSZXNwb25zZS4KKyAgICAgICAgKFF0RG93bmxvYWRNYW5hZ2VyOjpkb3dubG9hZENyZWF0ZWRE
ZXN0aW5hdGlvbik6CisgICAgICAgIChRdERvd25sb2FkTWFuYWdlcjo6ZG93bmxvYWRGaW5pc2hl
ZCk6CisgICAgICAgIChRdERvd25sb2FkTWFuYWdlcjo6ZG93bmxvYWRGYWlsZWQpOgorICAgICAg
ICAoUXREb3dubG9hZE1hbmFnZXI6OmRvd25sb2FkRGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvcXQvUXREb3dubG9hZE1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgIEJvb3RzdHJh
cCBvdXIgV0tDb250ZXh0RG93bmxvYWRDbGllbnQgYW5kIHNldCBpdHMgY2FsbGJhY2tzLgorICAg
ICAgICBUaGlzIGVudGl0eSB3aWxsIGFsc28gaGFuZGxlIGFsbCBkb3dubG9hZHMgYW5kIGtlZXAg
YSBtYXAgb2YgdGhlbS4KKyAgICAgICAgSXQgd2lsbCBiZSBrZXB0IGFsaXZlIHRvZ2V0aGVyIHdp
dGggdGhlIFdlYkNvbnRleHQgYXMgYSBzdGF0aWMgbWVtYmVyCisgICAgICAgIG9mIFF0V2ViUGFn
ZVByb3h5LCBzbyB3ZSBjYW4ga2VlcCBpdCBhY3Jvc3Mgc2V2ZXJhbCBXZWJQYWdlcyBhbmQsIHRo
ZXJlZm9yZSwKKyAgICAgICAgV2ViVmlld3MuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRX
ZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoUXRXZWJQYWdlUHJveHk6OmRlZmF1bHRXS0NvbnRl
eHQpOgorICAgICAgICAoUXRXZWJQYWdlUHJveHk6On5RdFdlYlBhZ2VQcm94eSk6CisgICAgICAg
IChRdFdlYlBhZ2VQcm94eTo6aGFuZGxlRG93bmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKFF0V2Vi
UGFnZVByb3h5OjpkaWRSZWNlaXZlRG93bmxvYWRSZXNwb25zZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL3F0L1F0V2ViUGFnZVByb3h5Lmg6CisgICAgICAgIEZyb20gbm93IG9uIGl0IHdpbGwga2Vl
cCBhIHN0YXRpYyBRdERvd25sb2FkTWFuYWdlciB0byBsaXZlIHRvZ2V0aGVyCisgICAgICAgIHdp
dGggdGhlIGRlZmF1bHQgV2ViQ29udGV4dC4gSXQgaW1wbGVtZW50cyBQYWdlQ2xpZW50OjpoYW5k
bGVEb3dubG9hZFJlcXVlc3QuCisgICAgICAgIFF0V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlRG93
bmxvYWRSZXNwb25zZSB3aWxsIGVtaXQgdGhlIHZpZXcncyBzaWduYWwgZG93bmxvYWRSZXF1ZXN0
ZWQuCisKKyAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFRvdWNoVmlld0ludGVyZmFjZS5oOgorICAg
ICAgICAoV2ViS2l0OjpRdFRvdWNoVmlld0ludGVyZmFjZTo6ZG93bmxvYWRSZXF1ZXN0ZWQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFZpZXdJbnRlcmZhY2UuaDoKKworICAgICAgICAqIFVJ
UHJvY2Vzcy9xdC9xd2ViZXJyb3IuY3BwOgorICAgICAgICAoUVdlYkVycm9yOjpkZXNjcmlwdGlv
bik6CisgICAgICAgICogVUlQcm9jZXNzL3F0L3F3ZWJlcnJvci5oOgorICAgICAgICAoUVdlYkVy
cm9yOjplcnJvckNvZGVBc0Rvd25sb2FkRXJyb3IpOgorICAgICAgICBBZGQgRG93bmxvYWQgZXJy
b3IgaGFuZGxpbmcgdG8gUVdlYkVycm9yIGFuZCBhIG5ldyBBUEkKKyAgICAgICAgdG8gcmV0cmll
dmUgdGhlIGVycm9yIGRlc2NyaXB0aW9uIGZyb20gdGhlIG9yaWdpbmFsIFJlc291cmNlRXJyb3Iu
CisgICAgICAgIEFsc28sIGl0IG5vdyBoYXMgUVdlYkRvd25sb2FkSXRlbTo6RG93bmxvYWRFcnJv
ciBlcnJvckNvZGVBc0Rvd25sb2FkRXJyb3IoKQorICAgICAgICB0aGF0IHJldHVybnMgdGhlIGVy
cm9yIGNvZGUgYXMgYSBEb3dubG9hZEVycm9yLgorCisgICAgICAgICogV2ViS2l0Mi5wcm86Cisg
ICAgICAgICogV2ViS2l0MkFQSS5wcmk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFu
YWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6c3RhcnRUcmFuc2Zl
cik6CisgICAgICAgICogV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg6Cisg
ICAgICAgIEFkZGluZyBRdCBzcGVjaWZpYyBzdGFydFRyYW5zZmVyIGZ1bmN0aW9uLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvRG93bmxvYWRRdC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkRvd25sb2FkOjpzdGFydCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpzdGFy
dFdpdGhIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6ZGlkRGVjaWRlRGVzdGlu
YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6c3RhcnRUcmFuc2Zlcik6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlF0RmlsZURvd25sb2FkZXI6OmluaXQpOiBzdGFydCgpIHdhcyByZW5hbWVk
IHRvIGluaXQoKS4KKyAgICAgICAgKFdlYktpdDo6UXRGaWxlRG93bmxvYWRlcjo6ZGV0ZXJtaW5l
RmlsZW5hbWUpOgorICAgICAgICBDYWxsaW5nIG9uUmVhZHlSZWFkKCkgaGVyZSB3YXMgdW5uZWNl
c3NhcnkgYW5kIGl0IHdhcyB0cmlnZ2VyaW5nIHRoZSBvdmVyYWxsCisgICAgICAgIGRvd25sb2Fk
IHByb2Nlc3MgZXZlbiBiZWZvcmUgRG93bmxvYWRNYW5hZ2VyIGZpbmlzaGVkIHN0YXJ0RG93bmxv
YWQoKS4gVGhpcworICAgICAgICB3YXMgbGVhZGluZyB0byBhIERvd25sb2FkTWFuYWdlciB3aXRo
IGFuIGVtcHR5IGxpc3Qgb2YgZG93bmxvYWRzLgorICAgICAgICAoV2ViS2l0OjpRdEZpbGVEb3du
bG9hZGVyOjpzdGFydFRyYW5zZmVyKTogZGVjaWRlZERlc3RpbmF0aW9uKCkgYmVjYW1lIHN0YXJ0
VHJhbnNmZXIoKS4KKyAgICAgICAgKFdlYktpdDo6UXRGaWxlRG93bmxvYWRlcjo6YWJvcnREb3du
bG9hZFdyaXRpbmdBbmRFbWl0RXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpRdEZpbGVEb3dubG9h
ZGVyOjpoYW5kbGVEb3dubG9hZFJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6UXRGaWxlRG93
bmxvYWRlcjo6b25SZWFkeVJlYWQpOgorICAgICAgICAoV2ViS2l0OjpRdEZpbGVEb3dubG9hZGVy
OjpvbkZpbmlzaGVkKToKKyAgICAgICAgKFdlYktpdDo6UXRGaWxlRG93bmxvYWRlcjo6Y2FuY2Vs
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3dubG9hZGVyLmg6
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjpzdGFydFRyYW5zZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46Cisg
ICAgICAgIEFkZGluZyBRdCBzcGVjaWZpYyBtZXNzYWdlIFN0YXJ0VHJhbnNmZXIgYW5kIGhhbmRs
aW5nIGZ1bmN0aW9uLgorCiAyMDExLTExLTAyICBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50
dXJjb3R0ZUBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBGaXggcW1sdGVzdCBBUEkgdGVzdCBm
YWlsdXJlcyByZWxhdGVkIHRvIHI5ODk3My4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQv
ZGVjbGFyYXRpdmUvcGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvZGVjbGFyYXRpdmUvcGx1
Z2luLmNwcAppbmRleCBjZjNiZGQ0YTEyZWI2OTY1NzI0ZGI5YTY1ZWM3YTUzZWJlNjQ5YzU2Li5h
NTFlZGJjNGQ4YzUyOTBlODU5ZjJhNDA3MmRkZmU2MjkzZDFjNGYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3F0L2RlY2xhcmF0aXZlL3BsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9x
dC9kZWNsYXJhdGl2ZS9wbHVnaW4uY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAicWRl
c2t0b3B3ZWJ2aWV3LmgiCiAjaW5jbHVkZSAicXRvdWNod2VicGFnZS5oIgogI2luY2x1ZGUgInF0
b3VjaHdlYnZpZXcuaCIKKyNpbmNsdWRlICJxd2ViZG93bmxvYWRpdGVtLmgiCiAjaW5jbHVkZSAi
cXdlYm5hdmlnYXRpb25jb250cm9sbGVyLmgiCiAjaW5jbHVkZSAicXdlYnByZWZlcmVuY2VzLmgi
CiAKQEAgLTU1LDYgKzU2LDcgQEAgcHVibGljOgogICAgICAgICBxbWxSZWdpc3RlclVuY3JlYXRh
YmxlVHlwZTxRV2ViUHJlZmVyZW5jZXM+KHVyaSwgMywgMCwgIldlYlByZWZlcmVuY2VzIiwgUU9i
amVjdDo6dHIoIkNhbm5vdCBjcmVhdGUgc2VwYXJhdGUgaW5zdGFuY2Ugb2YgV2ViUHJlZmVyZW5j
ZXMiKSk7CiAgICAgICAgIHFtbFJlZ2lzdGVyVW5jcmVhdGFibGVUeXBlPFFUb3VjaFdlYlBhZ2U+
KHVyaSwgMywgMCwgIlRvdWNoV2ViUGFnZSIsIFFPYmplY3Q6OnRyKCJDYW5ub3QgY3JlYXRlIHNl
cGFyYXRlIGluc3RhbmNlIG9mIFRvdWNoV2ViUGFnZSwgdXNlIFRvdWNoV2ViVmlldyIpKTsKICAg
ICAgICAgcW1sUmVnaXN0ZXJVbmNyZWF0YWJsZVR5cGU8UU5ldHdvcmtSZXBseT4odXJpLCAzLCAw
LCAiTmV0d29ya1JlcGx5IiwgUU9iamVjdDo6dHIoIkNhbm5vdCBjcmVhdGUgc2VwYXJhdGUgaW5z
dGFuY2Ugb2YgTmV0d29ya1JlcGx5IikpOworICAgICAgICBxbWxSZWdpc3RlclVuY3JlYXRhYmxl
VHlwZTxRV2ViRG93bmxvYWRJdGVtPih1cmksIDUsIDAsICJEb3dubG9hZEl0ZW0iLCBRT2JqZWN0
Ojp0cigiQ2Fubm90IGNyZWF0ZSBzZXBhcmF0ZSBpbnN0YW5jZSBvZiBEb3dubG9hZEl0ZW0iKSk7
CiAjZW5kaWYKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0
L1dlYkNvcmVBcmd1bWVudENvZGVyc1F0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNRdC5jcHAKaW5kZXggMWZjMTVjNTk2ZjZmY2Y3ZDlmOGQzM2Zk
ZWViMzNjMWVlZTI4NmE3Yi4uOTUwZDM3MmQyZGRjN2U0NmY4MDc3ODM5NTBlMGMyODc2ZTM3ZGI0
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1dlYkNvcmVBcmd1bWVudENv
ZGVyc1F0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzUXQuY3BwCkBAIC02MSw2ICs2MSw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJj
ZVJlc3BvbnNlPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgUmVzCiAg
ICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNlUmVzcG9uc2UubWltZVR5cGUoKSk7CiAgICAgZW5j
b2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PGludDY0X3Q+KHJlc291cmNlUmVzcG9uc2UuZXhwZWN0
ZWRDb250ZW50TGVuZ3RoKCkpKTsKICAgICBlbmNvZGVyLT5lbmNvZGUocmVzb3VyY2VSZXNwb25z
ZS50ZXh0RW5jb2RpbmdOYW1lKCkpOworICAgIGVuY29kZXItPmVuY29kZShyZXNvdXJjZVJlc3Bv
bnNlLnN1Z2dlc3RlZEZpbGVuYW1lKCkpOwogfQogCiBib29sIEFyZ3VtZW50Q29kZXI8UmVzb3Vy
Y2VSZXNwb25zZT46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlUmVz
cG9uc2UmIHJlc291cmNlUmVzcG9uc2UpCkBAIC04Nyw2ICs4OCwxMSBAQCBib29sIEFyZ3VtZW50
Q29kZXI8UmVzb3VyY2VSZXNwb25zZT46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIs
IFJlc291cmNlUgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmVzcG9uc2Uuc2V0VGV4dEVu
Y29kaW5nTmFtZSh0ZXh0RW5jb2RpbmdOYW1lKTsKIAorICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxl
bmFtZTsKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShzdWdnZXN0ZWRGaWxlbmFtZSkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICByZXNwb25zZS5zZXRTdWdnZXN0ZWRGaWxlbmFtZShzdWdn
ZXN0ZWRGaWxlbmFtZSk7CisKICAgICByZXNvdXJjZVJlc3BvbnNlID0gcmVzcG9uc2U7CiAgICAg
cmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L1dLVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9XS1ZpZXcuaApp
bmRleCAzMWY2NzI2ZjkzNmM2YzdjMjMxYzRlNmE3NWY1MWFmMzBiMjA2NjZhLi44MmRlYTQ3ZjVm
NmI5Yzg0NzEwYmVjNmI2MDc3NDNjZmZmODIwYTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L1dLVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvV0tWaWV3LmgKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlIDxXZWJLaXQyL3Fk
ZXNrdG9wd2Vidmlldy5oPgogI2luY2x1ZGUgPFdlYktpdDIvcXRvdWNod2Vidmlldy5oPgogI2lu
Y2x1ZGUgPFdlYktpdDIvcXRvdWNod2VicGFnZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvcXdlYmRv
d25sb2FkaXRlbS5oPgogI2luY2x1ZGUgPFdlYktpdDIvcXdlYm5hdmlnYXRpb25jb250cm9sbGVy
Lmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9xd2VicHJlZmVyZW5jZXMuaD4KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xYmFzZXdlYnZpZXcuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWJhc2V3ZWJ2aWV3LmgKaW5kZXggMmFkOTAyOTRhYzI5
YWRiMWMyZmQwNTRkY2M1YzE4ZGQ3ZmMyZWU0OC4uODQ0ODVmMWIwY2U3Nzg1Y2FmMmI1OTc3ZWRm
ZGY5NTRkODU0NjgxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xYmFzZXdlYnZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Fi
YXNld2Vidmlldy5oCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSA8UXREZWNsYXJhdGl2ZS9x
cXVpY2twYWludGVkaXRlbS5oPgogCiBjbGFzcyBRQmFzZVdlYlZpZXdQcml2YXRlOworY2xhc3Mg
UVdlYkRvd25sb2FkSXRlbTsKIGNsYXNzIFFXZWJOYXZpZ2F0aW9uQ29udHJvbGxlcjsKIGNsYXNz
IFFXZWJQcmVmZXJlbmNlczsKIApAQCAtNTIsNyArNTMsOCBAQCBwdWJsaWM6CiAgICAgZW51bSBF
cnJvclR5cGUgewogICAgICAgICBFbmdpbmVFcnJvciwKICAgICAgICAgTmV0d29ya0Vycm9yLAot
ICAgICAgICBIdHRwRXJyb3IKKyAgICAgICAgSHR0cEVycm9yLAorICAgICAgICBEb3dubG9hZEVy
cm9yCiAgICAgfTsKICAgICB2aXJ0dWFsIH5RQmFzZVdlYlZpZXcoKTsKIApAQCAtNzcsNiArNzks
NyBAQCBRX1NJR05BTFM6CiAgICAgdm9pZCBsb2FkRmFpbGVkKFFCYXNlV2ViVmlldzo6RXJyb3JU
eXBlIGVycm9yVHlwZSwgaW50IGVycm9yQ29kZSwgY29uc3QgUVVybCYgdXJsKTsKICAgICB2b2lk
IGxvYWRQcm9ncmVzc0NoYW5nZWQoaW50IHByb2dyZXNzKTsKICAgICB2b2lkIHVybENoYW5nZWQo
Y29uc3QgUVVybCYgdXJsKTsKKyAgICB2b2lkIGRvd25sb2FkUmVxdWVzdGVkKFFXZWJEb3dubG9h
ZEl0ZW0qIGRvd25sb2FkSXRlbSk7CiAKIHByb3RlY3RlZDoKICAgICBRQmFzZVdlYlZpZXcoUUJh
c2VXZWJWaWV3UHJpdmF0ZSAmZGQsIFFRdWlja0l0ZW0gKnBhcmVudCA9IDApOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwCmluZGV4
IDhiMDg1NWMwMzFhOTUxMDM1ZWYzNzI4NzVkNWE2NjFlNmRiYTZjYTQuLjgwOWE1OTE1OGM2ZjAz
NzYyZDViNTZjMGFjZTAyZTBlYjcyZjFhZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHAKQEAgLTI1LDExICsyNSwxMyBAQAog
I2luY2x1ZGUgIlF0V2ViRXJyb3IuaCIKICNpbmNsdWRlICJVdGlsc1F0LmgiCiAjaW5jbHVkZSAi
cWRlc2t0b3B3ZWJ2aWV3X3AuaCIKKyNpbmNsdWRlICJxd2ViZG93bmxvYWRpdGVtLmgiCiAjaW5j
bHVkZSA8UUZpbGVEaWFsb2c+CiAjaW5jbHVkZSA8UXREZWNsYXJhdGl2ZS9xZGVjbGFyYXRpdmVl
bmdpbmUuaD4KICNpbmNsdWRlIDxRdERlY2xhcmF0aXZlL3FxdWlja2NhbnZhcy5oPgogI2luY2x1
ZGUgPFF0RGVjbGFyYXRpdmUvcXF1aWNrdmlldy5oPgogI2luY2x1ZGUgPFF0R3VpL1FDdXJzb3I+
CisjaW5jbHVkZSA8UXRHdWkvUURlc2t0b3BTZXJ2aWNlcz4KICNpbmNsdWRlIDxRdEd1aS9RRHJh
Zz4KICNpbmNsdWRlIDxRdEd1aS9RRm9jdXNFdmVudD4KICNpbmNsdWRlIDxRdEd1aS9RR3VpQXBw
bGljYXRpb24+CkBAIC00OTcsNiArNDk5LDE3IEBAIHZvaWQgUURlc2t0b3BXZWJWaWV3UHJpdmF0
ZTo6ZGlkTW91c2VNb3ZlT3ZlckVsZW1lbnQoY29uc3QgUVVybCYgbGlua1VSTCwgY29uc3QKICAg
ICBlbWl0IHEtPmxpbmtIb3ZlcmVkKGxhc3RIb3ZlcmVkVVJMLCBsYXN0SG92ZXJlZFRpdGxlKTsK
IH0KIAordm9pZCBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpkb3dubG9hZFJlcXVlc3RlZChRV2Vi
RG93bmxvYWRJdGVtKiBkb3dubG9hZEl0ZW0pCit7CisgICAgaWYgKCFkb3dubG9hZEl0ZW0pCisg
ICAgICAgIHJldHVybjsKKworICAgIFFfUShRRGVza3RvcFdlYlZpZXcpOworCisgICAgUURlY2xh
cmF0aXZlRW5naW5lOjpzZXRPYmplY3RPd25lcnNoaXAoZG93bmxvYWRJdGVtLCBRRGVjbGFyYXRp
dmVFbmdpbmU6OkphdmFTY3JpcHRPd25lcnNoaXApOworICAgIGVtaXQgcS0+ZG93bmxvYWRSZXF1
ZXN0ZWQoZG93bmxvYWRJdGVtKTsKK30KKwogc3RhdGljIFF0UG9saWN5SW50ZXJmYWNlOjpQb2xp
Y3lBY3Rpb24gdG9Qb2xpY3lBY3Rpb24oUURlc2t0b3BXZWJWaWV3OjpOYXZpZ2F0aW9uUG9saWN5
IHBvbGljeSkKIHsKICAgICBzd2l0Y2ggKHBvbGljeSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXdfcC5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXdfcC5oCmluZGV4IGNiZjkzZDYxZGIw
MTFmNTY3MjdlNDY3MzM5NjQ0MmQwNTVkZmE3MDAuLjI1MmU2YzMwNDc1YzM4YzkzYjZjNjllNTA4
Yjk1M2RhMWVhMWNiZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcWRlc2t0b3B3ZWJ2aWV3X3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3FkZXNrdG9wd2Vidmlld19wLmgKQEAgLTg0LDYgKzg0LDcgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIFFKU0VuZ2luZSogZW5naW5lKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgY2hvb3NlRmls
ZXMoV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiwgY29uc3QgUVN0cmluZ0xpc3QmIHNlbGVj
dGVkRmlsZU5hbWVzLCBRdFZpZXdJbnRlcmZhY2U6OkZpbGVDaG9vc2VyVHlwZSk7CisgICAgdmly
dHVhbCB2b2lkIGRvd25sb2FkUmVxdWVzdGVkKFFXZWJEb3dubG9hZEl0ZW0qIGRvd25sb2FkSXRl
bSk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkTW91c2VNb3ZlT3ZlckVsZW1lbnQoY29uc3QgUVVy
bCYsIGNvbnN0IFFTdHJpbmcmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9xd2ViZG93bmxvYWRpdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXdlYmRvd25sb2FkaXRlbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjU5MGI3NDhjZDA4OTM1
MzI1ZGQ1MDQ4NWZiZTc4ZDU4OTM5MTk0NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYmRvd25sb2FkaXRlbS5jcHAKQEAgLTAsMCArMSw5NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRz
IHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJxd2Vi
ZG93bmxvYWRpdGVtLmgiCisKKyNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCisjaW5jbHVkZSAi
cXdlYmRvd25sb2FkaXRlbV9wLmgiCisKK1FXZWJEb3dubG9hZEl0ZW1Qcml2YXRlOjpRV2ViRG93
bmxvYWRJdGVtUHJpdmF0ZShRV2ViRG93bmxvYWRJdGVtKiBxcSkKKyAgICA6IHEocXEpCisgICAg
LCBkb3dubG9hZFByb3h5KDApCisgICAgLCBleHBlY3RlZENvbnRlbnRMZW5ndGgoMCkKKyAgICAs
IHRvdGFsQnl0ZXNSZWNlaXZlZCgwKQoreworfQorCitRV2ViRG93bmxvYWRJdGVtOjpRV2ViRG93
bmxvYWRJdGVtKFFPYmplY3QqIHBhcmVudCkKKyAgICA6IFFPYmplY3QocGFyZW50KQorICAgICwg
ZChuZXcgUVdlYkRvd25sb2FkSXRlbVByaXZhdGUodGhpcykpCit7Cit9CisKK1FXZWJEb3dubG9h
ZEl0ZW06On5RV2ViRG93bmxvYWRJdGVtKCkKK3sKKyAgICBkZWxldGUgZDsKK30KKworUVVybCBR
V2ViRG93bmxvYWRJdGVtOjp1cmwoKSBjb25zdAoreworICAgIHJldHVybiBkLT5zb3VyY2VVcmw7
Cit9CisKK1FTdHJpbmcgUVdlYkRvd25sb2FkSXRlbTo6ZGVzdGluYXRpb25QYXRoKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gZC0+ZGVzdGluYXRpb25QYXRoOworfQorCit2b2lkIFFXZWJEb3dubG9h
ZEl0ZW06OnNldERlc3RpbmF0aW9uUGF0aChjb25zdCBRU3RyaW5nJiBkZXN0aW5hdGlvbikKK3sK
KyAgICBkLT5kZXN0aW5hdGlvblBhdGggPSBkZXN0aW5hdGlvbjsKK30KKworUVN0cmluZyBRV2Vi
RG93bmxvYWRJdGVtOjpzdWdnZXN0ZWRGaWxlbmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQt
PnN1Z2dlc3RlZEZpbGVuYW1lOworfQorCitRU3RyaW5nIFFXZWJEb3dubG9hZEl0ZW06Om1pbWVU
eXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZC0+bWltZVR5cGU7Cit9CisKK3F1aW50NjQgUVdl
YkRvd25sb2FkSXRlbTo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gZC0+ZXhwZWN0ZWRDb250ZW50TGVuZ3RoOworfQorCitxdWludDY0IFFXZWJEb3dubG9hZEl0
ZW06OnRvdGFsQnl0ZXNSZWNlaXZlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPnRvdGFsQnl0
ZXNSZWNlaXZlZDsKK30KKwordm9pZCBRV2ViRG93bmxvYWRJdGVtOjpjYW5jZWwoKQoreworICAg
IEFTU0VSVChkLT5kb3dubG9hZFByb3h5KTsKKyAgICBkLT5kb3dubG9hZFByb3h5LT5jYW5jZWwo
KTsKK30KKwordm9pZCBRV2ViRG93bmxvYWRJdGVtOjpzdGFydCgpCit7CisgICAgQVNTRVJUKCFk
LT5zdWdnZXN0ZWRGaWxlbmFtZS5pc0VtcHR5KCkpOworCisgICAgaWYgKGQtPmRlc3RpbmF0aW9u
UGF0aC5pc0VtcHR5KCkpCisgICAgICAgIGQtPmRlc3RpbmF0aW9uUGF0aCA9IGQtPnN1Z2dlc3Rl
ZEZpbGVuYW1lOworCisgICAgZC0+ZG93bmxvYWRQcm94eS0+c3RhcnRUcmFuc2ZlcihkLT5kZXN0
aW5hdGlvblBhdGgpOworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3F3ZWJkb3dubG9hZGl0ZW0uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcXdlYmRvd25sb2FkaXRlbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0NGM1YjA4MzgyYmJlOGJhY2EzOTIy
NGFmZjlmZDg1ZDBkNTY4ODYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3F3ZWJkb3dubG9hZGl0ZW0uaApAQCAtMCwwICsxLDg2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFy
eSgtaWVzKQorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBU
aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxv
bmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyAqCisgKi8KKworI2lmbmRlZiBxd2ViZG93bmxvYWRpdGVtX2gKKyNkZWZpbmUgcXdlYmRvd25s
b2FkaXRlbV9oCisKKyNpbmNsdWRlICJxd2Via2l0Z2xvYmFsLmgiCisjaW5jbHVkZSA8UU9iamVj
dD4KKyNpbmNsdWRlIDxRVXJsPgorCitjbGFzcyBRV2ViRG93bmxvYWRJdGVtUHJpdmF0ZTsKK2Ns
YXNzIFF0V2ViRXJyb3I7CisKK1FUX0JFR0lOX05BTUVTUEFDRQorY2xhc3MgUVN0cmluZzsKK1FU
X0VORF9OQU1FU1BBQ0UKKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBRdERvd25sb2FkTWFu
YWdlcjsKK30KKworY2xhc3MgUVdFQktJVF9FWFBPUlQgUVdlYkRvd25sb2FkSXRlbSA6IHB1Ymxp
YyBRT2JqZWN0IHsKKyAgICBRX09CSkVDVAorICAgIFFfUFJPUEVSVFkocXVpbnQ2NCBleHBlY3Rl
ZENvbnRlbnRMZW5ndGggUkVBRCBleHBlY3RlZENvbnRlbnRMZW5ndGggQ09OU1RBTlQgRklOQUwp
CisgICAgUV9QUk9QRVJUWShRU3RyaW5nIGRlc3RpbmF0aW9uUGF0aCBSRUFEIGRlc3RpbmF0aW9u
UGF0aCBXUklURSBzZXREZXN0aW5hdGlvblBhdGgpCisgICAgUV9QUk9QRVJUWShRU3RyaW5nIHN1
Z2dlc3RlZEZpbGVuYW1lIFJFQUQgc3VnZ2VzdGVkRmlsZW5hbWUgQ09OU1RBTlQgRklOQUwpCisg
ICAgUV9QUk9QRVJUWShxdWludDY0IHRvdGFsQnl0ZXNSZWNlaXZlZCBSRUFEIHRvdGFsQnl0ZXNS
ZWNlaXZlZCBOT1RJRlkgdG90YWxCeXRlc1JlY2VpdmVkQ2hhbmdlZCBGSU5BTCkKKyAgICBRX1BS
T1BFUlRZKFFVcmwgdXJsIFJFQUQgdXJsIENPTlNUQU5UIEZJTkFMKQorICAgIFFfRU5VTVMoRG93
bmxvYWRFcnJvcikKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5RV2ViRG93bmxvYWRJdGVtKCk7CisK
KyAgICBlbnVtIERvd25sb2FkRXJyb3IgeworICAgICAgICBBYm9ydGVkID0gMCwKKyAgICAgICAg
Q2Fubm90V3JpdGVUb0ZpbGUsCisgICAgICAgIENhbm5vdE9wZW5GaWxlLAorICAgICAgICBEZXN0
aW5hdGlvbkFscmVhZHlFeGlzdHMsCisgICAgICAgIENhbmNlbGxlZCwKKyAgICAgICAgQ2Fubm90
RGV0ZXJtaW5lRmlsZW5hbWUsCisgICAgICAgIE5ldHdvcmtGYWlsdXJlCisgICAgfTsKKworICAg
IFFVcmwgdXJsKCkgY29uc3Q7CisgICAgUVN0cmluZyBkZXN0aW5hdGlvblBhdGgoKSBjb25zdDsK
KyAgICBRU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3Q7CisgICAgUVN0cmluZyBtaW1l
VHlwZSgpIGNvbnN0OworICAgIHF1aW50NjQgZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgY29uc3Q7
CisgICAgcXVpbnQ2NCB0b3RhbEJ5dGVzUmVjZWl2ZWQoKSBjb25zdDsKKyAgICB2b2lkIHNldERl
c3RpbmF0aW9uUGF0aChjb25zdCBRU3RyaW5nJiBkZXN0aW5hdGlvbik7CisKK3B1YmxpYyBRX1NM
T1RTOgorICAgIHZvaWQgc3RhcnQoKTsKKyAgICB2b2lkIGNhbmNlbCgpOworCitRX1NJR05BTFM6
CisgICAgdm9pZCBkZXN0aW5hdGlvbkZpbGVDcmVhdGVkKGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0
aW9uUGF0aCk7CisgICAgdm9pZCB0b3RhbEJ5dGVzUmVjZWl2ZWRDaGFuZ2VkKHF1aW50NjQgYnl0
ZXNSZWNlaXZlZCk7CisgICAgdm9pZCBzdWNjZWVkZWQoKTsKKyAgICB2b2lkIGZhaWxlZChRV2Vi
RG93bmxvYWRJdGVtOjpEb3dubG9hZEVycm9yIGVycm9yLCBjb25zdCBRVXJsJiB1cmwsIGNvbnN0
IFFTdHJpbmcmIGRlc2NyaXB0aW9uKTsKKworcHJpdmF0ZToKKyAgICBRV2ViRG93bmxvYWRJdGVt
KFFPYmplY3QqIHBhcmVudCA9IDApOworICAgIFFXZWJEb3dubG9hZEl0ZW1Qcml2YXRlKiBkOwor
CisgICAgZnJpZW5kIGNsYXNzIFdlYktpdDo6UXREb3dubG9hZE1hbmFnZXI7CisgICAgZnJpZW5k
IGNsYXNzIFF0V2ViUGFnZVByb3h5OworfTsKKworI2VuZGlmIC8qIHF3ZWJkb3dubG9hZGl0ZW1f
aCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93
bmxvYWRpdGVtX3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYmRvd25s
b2FkaXRlbV9wLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmI4YzI1MmE3NzdkN2Q4MjRkYzkyODg5YWQ5MWFmZjJh
ZGFhMTBmZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcXdlYmRvd25sb2FkaXRlbV9wLmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAgICBDb3B5cmln
aHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMp
CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
Ki8KKworCisjaWZuZGVmIHF3ZWJkb3dubG9hZGl0ZW1fcF9oCisjZGVmaW5lIHF3ZWJkb3dubG9h
ZGl0ZW1fcF9oCisKKyNpbmNsdWRlICJxd2ViZG93bmxvYWRpdGVtLmgiCisjaW5jbHVkZSA8UVVy
bD4KKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBEb3dubG9hZFByb3h5OworfQorCitjbGFz
cyBRV2ViRG93bmxvYWRJdGVtUHJpdmF0ZSA6IHB1YmxpYyBRT2JqZWN0IHsKKyAgICBRX09CSkVD
VAorcHVibGljOgorICAgIFFXZWJEb3dubG9hZEl0ZW1Qcml2YXRlKFFXZWJEb3dubG9hZEl0ZW0q
KTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFFXZWJEb3dubG9hZEl0ZW0qIGRvd25s
b2FkKSB7IGVtaXQgcmVjZWl2ZWRSZXNwb25zZShkb3dubG9hZCk7IH0KKworICAgIFFXZWJEb3du
bG9hZEl0ZW0qIHE7CisKKyAgICBXZWJLaXQ6OkRvd25sb2FkUHJveHkqIGRvd25sb2FkUHJveHk7
CisKKyAgICBRVXJsIHNvdXJjZVVybDsKKyAgICBRU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lOwor
ICAgIFFTdHJpbmcgZGVzdGluYXRpb25QYXRoOworICAgIFFTdHJpbmcgbWltZVR5cGU7CisgICAg
cXVpbnQ2NCBleHBlY3RlZENvbnRlbnRMZW5ndGg7CisgICAgcXVpbnQ2NCB0b3RhbEJ5dGVzUmVj
ZWl2ZWQ7CisKK1FfU0lHTkFMUzoKKyAgICB2b2lkIHJlY2VpdmVkUmVzcG9uc2UoUVdlYkRvd25s
b2FkSXRlbSopOworfTsKKworI2VuZGlmIC8qIHF3ZWJkb3dubG9hZGl0ZW1fcF9oICovCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL0Rl
c2t0b3BXZWJWaWV3L3RzdF9kb3dubG9hZC5xbWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3Rlc3RzL3FtbHRlc3RzL0Rlc2t0b3BXZWJWaWV3L3RzdF9kb3dubG9hZC5xbWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZWI1Yzg1NWJjYTUwNzExYjVkZWMxNjY3ODlmNDBhOGRhODkzNTM5ZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVz
dHMvRGVza3RvcFdlYlZpZXcvdHN0X2Rvd25sb2FkLnFtbApAQCAtMCwwICsxLDc1IEBACitpbXBv
cnQgUXRRdWljayAyLjAKK2ltcG9ydCBRdFRlc3QgMS4wCitpbXBvcnQgUXRXZWJLaXQgMy4wCisK
K0Rlc2t0b3BXZWJWaWV3IHsKKyAgICBpZDogd2ViVmlldworICAgIHdpZHRoOiAyMDAKKyAgICBo
ZWlnaHQ6IDQwMAorCisgICAgcHJvcGVydHkgaW50IGV4cGVjdGVkTGVuZ3RoIDogMAorICAgIHBy
b3BlcnR5IGludCB0b3RhbEJ5dGVzIDogMAorCisgICAgU2lnbmFsU3B5IHsKKyAgICAgICAgaWQ6
IHNweQorICAgICAgICB0YXJnZXQ6IHdlYlZpZXcKKyAgICAgICAgc2lnbmFsTmFtZTogImRvd25s
b2FkUmVxdWVzdGVkIgorICAgIH0KKworICAgIG9uRG93bmxvYWRSZXF1ZXN0ZWQ6IHsKKyAgICAg
ICAgZG93bmxvYWQudGFyZ2V0ID0gZG93bmxvYWRJdGVtCisgICAgICAgIGV4cGVjdGVkTGVuZ3Ro
ID0gZG93bmxvYWRJdGVtLmV4cGVjdGVkQ29udGVudExlbmd0aAorICAgICAgICBkb3dubG9hZEl0
ZW0uZGVzdGluYXRpb25QYXRoID0gZG93bmxvYWRJdGVtLnN1Z2dlc3RlZEZpbGVuYW1lCisgICAg
ICAgIGRvd25sb2FkSXRlbS5zdGFydCgpCisgICAgfQorCisgICAgQ29ubmVjdGlvbnMgeworICAg
ICAgICBpZDogZG93bmxvYWQKKyAgICAgICAgaWdub3JlVW5rbm93blNpZ25hbHM6IHRydWUKKyAg
ICAgICAgb25TdWNjZWVkZWQ6IHsgdG90YWxCeXRlcyA9IGRvd25sb2FkLnRhcmdldC50b3RhbEJ5
dGVzUmVjZWl2ZWQgfQorICAgIH0KKworICAgIFNpZ25hbFNweSB7CisgICAgICAgIGlkOiBvdGhl
clNweQorICAgICAgICB0YXJnZXQ6IGRvd25sb2FkCisgICAgICAgIHNpZ25hbE5hbWU6ICJzdWNj
ZWVkZWQiCisgICAgfQorCisgICAgVGVzdENhc2UgeworICAgICAgICBuYW1lOiAiRGVza3RvcFdl
YlZpZXdEb3dubG9hZCIKKyAgICAgICAgd2hlbjogd2luZG93U2hvd24KKworICAgICAgICBmdW5j
dGlvbiB0ZXN0X2Rvd25sb2FkUmVxdWVzdCgpIHsKKyAgICAgICAgICAgIHNweS5jbGVhcigpCisg
ICAgICAgICAgICBjb21wYXJlKHNweS5jb3VudCwgMCkKKyAgICAgICAgICAgIHdlYlZpZXcubG9h
ZChRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL2Rvd25sb2FkLmh0bWwiKSkKKyAgICAgICAgICAg
IG1vdXNlQ2xpY2sod2ViVmlldywgMTAwLCAxMDAsIFF0LkxlZnRCdXR0b24pCisgICAgICAgICAg
ICBzcHkud2FpdCgpCisgICAgICAgICAgICBjb21wYXJlKHNweS5jb3VudCwgMSkKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHRlc3RfZXhwZWN0ZWRMZW5ndGgoKSB7CisgICAgICAgICAg
ICBzcHkuY2xlYXIoKQorICAgICAgICAgICAgY29tcGFyZShzcHkuY291bnQsIDApCisgICAgICAg
ICAgICB3ZWJWaWV3LmxvYWQoUXQucmVzb2x2ZWRVcmwoIi4uL2NvbW1vbi9kb3dubG9hZC5odG1s
IikpCisgICAgICAgICAgICBtb3VzZUNsaWNrKHdlYlZpZXcsIDEwMCwgMTAwLCBRdC5MZWZ0QnV0
dG9uKQorICAgICAgICAgICAgc3B5LndhaXQoKQorICAgICAgICAgICAgY29tcGFyZShzcHkuY291
bnQsIDEpCisgICAgICAgICAgICBjb21wYXJlKGV4cGVjdGVkTGVuZ3RoLCAzMjUpCisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiB0ZXN0X3N1Y2NlZWRlZCgpIHsKKyAgICAgICAgICAgIHNw
eS5jbGVhcigpCisgICAgICAgICAgICBjb21wYXJlKHNweS5jb3VudCwgMCkKKyAgICAgICAgICAg
IG90aGVyU3B5LmNsZWFyKCkKKyAgICAgICAgICAgIGNvbXBhcmUob3RoZXJTcHkuY291bnQsIDAp
CisgICAgICAgICAgICB3ZWJWaWV3LmxvYWQoUXQucmVzb2x2ZWRVcmwoIi4uL2NvbW1vbi9kb3du
bG9hZC5odG1sIikpCisgICAgICAgICAgICBtb3VzZUNsaWNrKHdlYlZpZXcsIDEwMCwgMTAwLCBR
dC5MZWZ0QnV0dG9uKQorICAgICAgICAgICAgc3B5LndhaXQoKQorICAgICAgICAgICAgY29tcGFy
ZShzcHkuY291bnQsIDEpCisgICAgICAgICAgICBvdGhlclNweS53YWl0KCkKKyAgICAgICAgICAg
IGNvbXBhcmUob3RoZXJTcHkuY291bnQsIDEpCisgICAgICAgICAgICBjb21wYXJlKHRvdGFsQnl0
ZXMsIGV4cGVjdGVkTGVuZ3RoKQorICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21tb24vZG93bmxv
YWQuaHRtbCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMv
Y29tbW9uL2Rvd25sb2FkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjA2ZmE0Y2E3NjNkN2E0ZmVhYzE4MTc0
MWJlNWM5Nzc2NDhmOTVmNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL2Rvd25sb2FkLmh0bWwKQEAgLTAsMCAr
MSw2IEBACis8aHRtbD4KKzxoZWFkPjx0aXRsZT5Eb3dubG9hZCBUZXN0IHBhZ2Ugd2l0aCBodWdl
IGxpbmsgYXJlYTwvdGl0bGU+PC9oZWFkPgorPGJvZHk+Cis8YSB0aXRsZT0iWmlwIGZpbGUiIGhy
ZWY9ImRvd25sb2FkLnppcCI+PGltZyB3aWR0aD0yMDAgaGVpZ2h0PTIwMD48L2E+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rl
c3RzL3FtbHRlc3RzL2NvbW1vbi9kb3dubG9hZC56aXAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1vbi9kb3dubG9hZC56aXAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YjU0NTYzNTFhNTUxNTU2MTM1Mzk2MTVhY2NlY2U5ZWUwMzBiN2Q0NApHSVQgYmluYXJ5IHBhdGNo
CmxpdGVyYWwgMzI1CnpjbVdJV1dAWnMjVXxgXjJ1IXN0X3w4VmRCcDxXPkdKUC0+cSRTfnlPQ254
M3ZtKmZ7RXJsO3k8bDtxfXdoSHhANAp6XlcyJXxDamBXJDcyRkpyRUg5V0Q3KzZ3KDhiYlNSYDNA
YGF3M2hvZFpvMSRWWVQrUkpQNERjNXhQflV6NiQmbSMKensrQGgwK2hNeFR3RU5aNV9PbWt8VF9D
fTtWbEM0cmskfHJedD9nZU9jej5Ifig8JWs7d3U4enlRKU1Ad3RXKXdrCnotNGc1a0wtcHNDe01m
NSpoT15JVEtrfkBrYEFuQW88Y29zRVE/PyR5clduaWQqaWpeMD02cHsyYFJkPENqKjhsZwp6cmtg
JEZsT00rUWJOUiVyJE4yLWk4SlhtbWFyc09GPXYpUXtNaiYzJjJ4NExKQ285Q0NYbnFYdldAUTZ1
VTxBVCYKS0Fia1ZHVkVfUjY+Mk0kYgoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9xbWx0ZXN0
cy5wcm8gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL3Ft
bHRlc3RzLnBybwppbmRleCA5NjAzNWRjYzI3MTk1YWQwODcxYWJkNDI4MzFiNjUyOWQ1NjYxZmI0
Li4xM2E2MWQzYTJhY2Q1YTI2ZGYwMjFlYmVjZTQ5NTZlNWQyYjcwM2NlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL3FtbHRlc3RzLnBy
bworKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL3Ft
bHRlc3RzLnBybwpAQCAtMTUsNiArMTUsNyBAQCBPVEhFUl9GSUxFUyArPSBcCiAgICAgRGVza3Rv
cFdlYlZpZXcvdHN0X2xvYWRQcm9ncmVzcy5xbWwgXAogICAgIERlc2t0b3BXZWJWaWV3L3RzdF9s
b2FkUHJvZ3Jlc3NTaWduYWwucW1sIFwKICAgICBEZXNrdG9wV2ViVmlldy90c3RfbGlua0hvdmVy
ZWQucW1sIFwKKyAgICBEZXNrdG9wV2ViVmlldy90c3RfZG93bmxvYWQucW1sIFwKICAgICBUb3Vj
aFdlYlZpZXcvdHN0X3Byb3BlcnRpZXMucW1sIFwKICAgICBUb3VjaFdlYlZpZXcvdHN0X2xvYWQu
cW1sIFwKICAgICBUb3VjaFdlYlZpZXcvdHN0X2xvYWRaZXJvU2l6ZVZpZXcucW1sIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3Bw
CmluZGV4IGM5M2E2ZGZiZTY5YmJlMzZlNmI5MjQ0OGYwNDdiYmJiZTdkOTJkNDIuLjI2YTUyMWYz
OWJjNzFlMjE0NTg3NzMyMTk2NGRkYzY3Mjc0MWIxNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcApAQCAtMTg3LDUgKzE4
NywxNiBAQCB2b2lkIERvd25sb2FkUHJveHk6OmRpZENhbmNlbChjb25zdCBDb3JlSVBDOjpEYXRh
UmVmZXJlbmNlJiByZXN1bWVEYXRhKQogICAgIG1fd2ViQ29udGV4dC0+ZG93bmxvYWRGaW5pc2hl
ZCh0aGlzKTsKIH0KIAorI2lmIFBMQVRGT1JNKFFUKQordm9pZCBEb3dubG9hZFByb3h5OjpzdGFy
dFRyYW5zZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCit7CisgICAgaWYgKCFtX3dlYkNvbnRl
eHQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJWE1FIChNdWx0aS1XZWJQcm9jZXNzKTog
RG93bmxvYWRzIHNob3VsZG4ndCBiZSBoYW5kbGVkIGluIHRoZSB3ZWIgcHJvY2Vzcy4KKyAgICBt
X3dlYkNvbnRleHQtPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U3Rh
cnRUcmFuc2ZlcihtX2Rvd25sb2FkSUQsIGZpbGVuYW1lKSk7Cit9CisjZW5kaWYKKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZFByb3h5LmgKaW5kZXggOTlkZGJlYzBjYmM0YmE4ZjZkOWY0MjFmOWRiNjg1
NTU4MjhiOTlkNS4uYzFlZGExZmQxOTA3Yzk5N2RiYTgzZmUzMGM0N2I1NjYyZTZmMzliOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5
LmgKQEAgLTQzLDYgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkNvbnRl
eHQ7CiBjbGFzcyBXZWJEYXRhOworY2xhc3MgV2ViUGFnZVByb3h5OwogCiBjbGFzcyBEb3dubG9h
ZFByb3h5IDogcHVibGljIEFQSU9iamVjdCB7CiBwdWJsaWM6CkBAIC02Myw2ICs2NCwxMCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlRG93bmxvYWRQcm94eU1lc3NhZ2UoQ29yZUlQQzo6
Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVy
Kik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY0Rvd25sb2FkUHJveHlNZXNzYWdlKENvcmVJUEM6
OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rl
ciosIE93blB0cjxDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI+Jik7CiAKKyNpZiBQTEFURk9STShR
VCkKKyAgICB2b2lkIHN0YXJ0VHJhbnNmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSk7CisjZW5k
aWYKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBEb3dubG9hZFByb3h5KFdlYkNvbnRleHQqKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggZjE5NDc4NzNhMDIxY2Fi
YTZkOGU0ZDcxYjA1ZjM4MjZmNWM4Mzc3Zi4uODIzZWRlMzA0ZjZmOTczZDYxZGM5NzBjNjhhZDM4
ZWVmMjAzMzE1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC00NCw2
ICs0NCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgc3RydWN0IFZpZXdwb3J0QXJndW1l
bnRzOwogfQogCisjaWYgUExBVEZPUk0oUVQpCitjbGFzcyBRdFdlYlBhZ2VQcm94eTsKKyNlbmRp
ZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgRHJhd2luZ0FyZWFQcm94eTsKQEAgLTEw
Myw2ICsxMDcsNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oUVQpCiAgICAgdmlydHVhbCB2b2lk
IGRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRGaW5kWm9vbWFibGVBcmVhKGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxl
RG93bmxvYWRSZXF1ZXN0KERvd25sb2FkUHJveHkqKSA9IDA7CiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKFFUKSB8fCBQTEFURk9STShHVEspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4
dC5jcHAKaW5kZXggZjQ1M2Q4YzNmZGExYmQ2OTQ1ZTgxN2IwZTZlZDlhZDYyZmExYTZmOS4uYjY0
NDg0NTlhMjUzODE0NmNhMzVmMmFkOGI0YzcwYTA3ZGE4NmZlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJDb250ZXh0LmNwcApAQCAtMzkyLDYgKzM5MiwxMSBAQCBEb3dubG9hZFByb3h5
KiBXZWJDb250ZXh0Ojpkb3dubG9hZChXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25z
dCBSZXNvdXJjZQogICAgIERvd25sb2FkUHJveHkqIGRvd25sb2FkID0gY3JlYXRlRG93bmxvYWRQ
cm94eSgpOwogICAgIHVpbnQ2NF90IGluaXRpYXRpbmdQYWdlSUQgPSBpbml0aWF0aW5nUGFnZSA/
IGluaXRpYXRpbmdQYWdlLT5wYWdlSUQoKSA6IDA7CiAKKyNpZiBQTEFURk9STShRVCkKKyAgICBB
U1NFUlQoaW5pdGlhdGluZ1BhZ2UpOyAvLyBPdXIgZGVzaWduIGRvZXMgbm90IHN1cHBwb3J0IGRv
d25sb2FkcyB3aXRob3V0IGEgV2ViUGFnZS4KKyAgICBpbml0aWF0aW5nUGFnZS0+aGFuZGxlRG93
bmxvYWRSZXF1ZXN0KGRvd25sb2FkKTsKKyNlbmRpZgorCiAgICAgcHJvY2VzcygpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzOjpEb3dubG9hZFJlcXVlc3QoZG93bmxvYWQtPmRvd25sb2FkSUQo
KSwgaW5pdGlhdGluZ1BhZ2VJRCwgcmVxdWVzdCksIDApOwogICAgIHJldHVybiBkb3dubG9hZDsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMTk0ZmQw
YmRlMmRlN2E4OGQyY2ViMzZmNDMxZGVmYjAyZDI3NDFmZi4uYzU0M2VlZTZhN2IzMjc0MDA0ODQ2
ZWJhZmU2ZmE0MzE3NDQ4OWFkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKQEAgLTEwMTUsNyArMTAxNSwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2
ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9uLCBXZWJGcmFtZVByb3h5KiBmcgog
ICAgIHVpbnQ2NF90IGRvd25sb2FkSUQgPSAwOwogICAgIGlmIChhY3Rpb24gPT0gUG9saWN5RG93
bmxvYWQpIHsKICAgICAgICAgLy8gQ3JlYXRlIGEgZG93bmxvYWQgcHJveHkuCi0gICAgICAgIGRv
d25sb2FkSUQgPSBtX3Byb2Nlc3MtPmNvbnRleHQoKS0+Y3JlYXRlRG93bmxvYWRQcm94eSgpLT5k
b3dubG9hZElEKCk7CisgICAgICAgIERvd25sb2FkUHJveHkqIGRvd25sb2FkID0gbV9wcm9jZXNz
LT5jb250ZXh0KCktPmNyZWF0ZURvd25sb2FkUHJveHkoKTsKKyAgICAgICAgZG93bmxvYWRJRCA9
IGRvd25sb2FkLT5kb3dubG9hZElEKCk7CisjaWYgUExBVEZPUk0oUVQpCisgICAgICAgIGhhbmRs
ZURvd25sb2FkUmVxdWVzdChkb3dubG9hZCk7CisjZW5kaWYKICAgICB9CiAKICAgICAvLyBJZiB3
ZSByZWNlaXZlZCBhIHBvbGljeSBkZWNpc2lvbiB3aGlsZSBpbiBkZWNpZGVQb2xpY3lGb3JNSU1F
VHlwZSB0aGUgZGVjaXNpb24gd2lsbCAKQEAgLTIyNjYsNiArMjI3MCwxMSBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZmluZFpvb21hYmxlQXJlYUZvclBvaW50KGNvbnN0IEludFBvaW50JiBwb2ludCkK
IAogICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RmluZFpvb21hYmxlQXJl
YUZvclBvaW50KHBvaW50KSwgbV9wYWdlSUQpOwogfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6aGFu
ZGxlRG93bmxvYWRSZXF1ZXN0KERvd25sb2FkUHJveHkqIGRvd25sb2FkKQoreworICAgIG1fcGFn
ZUNsaWVudC0+aGFuZGxlRG93bmxvYWRSZXF1ZXN0KGRvd25sb2FkKTsKK30KICNlbmRpZgogCiAj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAppbmRleCA0MDMxMmFhNmFiMzRjYjM0NGZhZWRkNmZkMTI5MTcyMDVlZjAxOGE2Li43OWM3
YzI2YjA3NWFhZWViOGEyOGZhZWI0ZWUzOGUwMmE2NmJkZWMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC01MjEsNiArNTIxLDcgQEAgcHVibGljOgogCiAjaWYg
UExBVEZPUk0oUVQpCiAgICAgdm9pZCBmaW5kWm9vbWFibGVBcmVhRm9yUG9pbnQoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmKTsKKyAgICB2b2lkIGhhbmRsZURvd25sb2FkUmVxdWVzdChEb3dubG9h
ZFByb3h5Kik7CiAjZW5kaWYKIAogICAgIHZvaWQgYWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJv
b2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3F0L1F0RG93bmxvYWRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9RdERvd25sb2FkTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Y5N2ZjNjNjNGNi
MTFjNzg1YzYzODIyNDdjNWUzZjUxODMzNTIyYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdERvd25sb2FkTWFuYWdlci5jcHAKQEAgLTAsMCArMSwxNDUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5k
L29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiUXREb3dubG9hZE1hbmFnZXIuaCIKKworI2luY2x1ZGUgIkNsaWVudEltcGwuaCIKKyNpbmNs
dWRlICJEb3dubG9hZFByb3h5LmgiCisjaW5jbHVkZSAiUXRXZWJFcnJvci5oIgorI2luY2x1ZGUg
IldLU3RyaW5nUXQuaCIKKyNpbmNsdWRlICJXS1VSTFF0LmgiCisjaW5jbHVkZSAiV2ViQ29udGV4
dC5oIgorI2luY2x1ZGUgInF3ZWJkb3dubG9hZGl0ZW0uaCIKKyNpbmNsdWRlICJxd2ViZG93bmxv
YWRpdGVtX3AuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBpbmxpbmUgUXREb3du
bG9hZE1hbmFnZXIqIHRvUXREb3dubG9hZE1hbmFnZXIoY29uc3Qgdm9pZCogY2xpZW50SW5mbykK
K3sKKyAgICBBU1NFUlQoY2xpZW50SW5mbyk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
UXREb3dubG9hZE1hbmFnZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7Cit9CisK
K3N0YXRpYyB2b2lkIHF0X3drX2RpZFJlY2VpdmVSZXNwb25zZShXS0NvbnRleHRSZWYgY29udGV4
dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tVUkxSZXNwb25zZVJlZiByZXNwb25zZSwgY29u
c3Qgdm9pZCAqY2xpZW50SW5mbykKK3sKKyAgICB0b1F0RG93bmxvYWRNYW5hZ2VyKGNsaWVudElu
Zm8pLT5kb3dubG9hZFJlY2VpdmVkUmVzcG9uc2UodG9JbXBsKGRvd25sb2FkKSwgdG9JbXBsKHJl
c3BvbnNlKS0+cmVzb3VyY2VSZXNwb25zZSgpKTsKK30KKworc3RhdGljIHZvaWQgcXRfd2tfZGlk
Q3JlYXRlRGVzdGluYXRpb24oV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93
bmxvYWQsIFdLU3RyaW5nUmVmIHBhdGgsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCit7CisgICAg
dG9RdERvd25sb2FkTWFuYWdlcihjbGllbnRJbmZvKS0+ZG93bmxvYWRDcmVhdGVkRGVzdGluYXRp
b24odG9JbXBsKGRvd25sb2FkKSwgV0tTdHJpbmdDb3B5UVN0cmluZyhwYXRoKSk7Cit9CisKK3N0
YXRpYyB2b2lkIHF0X3drX2RpZEZpbmlzaERvd25sb2FkKFdLQ29udGV4dFJlZiBjb250ZXh0LCBX
S0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQoreworICAgIHRv
UXREb3dubG9hZE1hbmFnZXIoY2xpZW50SW5mbyktPmRvd25sb2FkRmluaXNoZWQodG9JbXBsKGRv
d25sb2FkKSk7Cit9CisKK3N0YXRpYyB2b2lkIHF0X3drX2RpZEZhaWxEb3dubG9hZChXS0NvbnRl
eHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tFcnJvclJlZiBlcnJvciwg
Y29uc3Qgdm9pZCAqY2xpZW50SW5mbykKK3sKKyAgICBRVXJsIGZhaWxpbmdVcmwgPSBXS1VSTENv
cHlRVXJsKFdLRXJyb3JDb3B5RmFpbGluZ1VSTChlcnJvcikpOworCisgICAgdG9RdERvd25sb2Fk
TWFuYWdlcihjbGllbnRJbmZvKS0+ZG93bmxvYWRGYWlsZWQodG9JbXBsKGRvd25sb2FkKSwgUXRX
ZWJFcnJvcihlcnJvcikpOworfQorCitzdGF0aWMgdm9pZCBxdF93a19kaWRSZWNlaXZlRGF0YUZv
ckRvd25sb2FkKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCB1
aW50NjRfdCBsZW5ndGgsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCit7CisgICAgdG9RdERvd25s
b2FkTWFuYWdlcihjbGllbnRJbmZvKS0+ZG93bmxvYWREYXRhUmVjZWl2ZWQodG9JbXBsKGRvd25s
b2FkKSwgbGVuZ3RoKTsKK30KKworUXREb3dubG9hZE1hbmFnZXI6OlF0RG93bmxvYWRNYW5hZ2Vy
KCkKK3sKK30KKworUXREb3dubG9hZE1hbmFnZXI6On5RdERvd25sb2FkTWFuYWdlcigpCit7Cit9
CisKK1Bhc3NSZWZQdHI8UXREb3dubG9hZE1hbmFnZXI+IFF0RG93bmxvYWRNYW5hZ2VyOjpjcmVh
dGUoV2ViQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBRdERvd25sb2FkTWFuYWdlciogbWFuYWdl
ciA9IG5ldyBRdERvd25sb2FkTWFuYWdlcigpOworCisgICAgV0tDb250ZXh0RG93bmxvYWRDbGll
bnQgZG93bmxvYWRDbGllbnQ7CisgICAgbWVtc2V0KCZkb3dubG9hZENsaWVudCwgMCwgc2l6ZW9m
KFdLQ29udGV4dERvd25sb2FkQ2xpZW50KSk7CisgICAgZG93bmxvYWRDbGllbnQudmVyc2lvbiA9
IGtXS0NvbnRleHREb3dubG9hZENsaWVudEN1cnJlbnRWZXJzaW9uOworICAgIGRvd25sb2FkQ2xp
ZW50LmNsaWVudEluZm8gPSBtYW5hZ2VyOworICAgIGRvd25sb2FkQ2xpZW50LmRpZFJlY2VpdmVS
ZXNwb25zZSA9IHF0X3drX2RpZFJlY2VpdmVSZXNwb25zZTsKKyAgICBkb3dubG9hZENsaWVudC5k
aWRSZWNlaXZlRGF0YSA9IHF0X3drX2RpZFJlY2VpdmVEYXRhRm9yRG93bmxvYWQ7CisgICAgZG93
bmxvYWRDbGllbnQuZGlkQ3JlYXRlRGVzdGluYXRpb24gPSBxdF93a19kaWRDcmVhdGVEZXN0aW5h
dGlvbjsKKyAgICBkb3dubG9hZENsaWVudC5kaWRGaW5pc2ggPSBxdF93a19kaWRGaW5pc2hEb3du
bG9hZDsKKyAgICBkb3dubG9hZENsaWVudC5kaWRGYWlsID0gcXRfd2tfZGlkRmFpbERvd25sb2Fk
OworICAgIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KHRvQVBJKGNvbnRleHQpLCAmZG93bmxv
YWRDbGllbnQpOworICAgIHJldHVybiBhZG9wdFJlZihtYW5hZ2VyKTsKK30KKwordm9pZCBRdERv
d25sb2FkTWFuYWdlcjo6ZG93bmxvYWRSZWNlaXZlZFJlc3BvbnNlKERvd25sb2FkUHJveHkqIGRv
d25sb2FkLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3sKKyAg
ICAvLyBXaWxsIGJlIGNhbGxlZCB3aGVuIHRoZSBoZWFkZXJzIGFyZSByZWFkIGJ5IFdlYlByb2Nl
c3MuCisgICAgUVdlYkRvd25sb2FkSXRlbSogZG93bmxvYWRJdGVtID0gbV9kb3dubG9hZHMudmFs
dWUoZG93bmxvYWQtPmRvd25sb2FkSUQoKSk7CisgICAgQVNTRVJUKGRvd25sb2FkSXRlbSk7CisK
KyAgICBkb3dubG9hZEl0ZW0tPmQtPnNvdXJjZVVybCA9IHJlc3BvbnNlLnVybCgpOworICAgIGRv
d25sb2FkSXRlbS0+ZC0+bWltZVR5cGUgPSByZXNwb25zZS5taW1lVHlwZSgpOworICAgIGRvd25s
b2FkSXRlbS0+ZC0+ZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0gcmVzcG9uc2UuZXhwZWN0ZWRDb250
ZW50TGVuZ3RoKCk7CisgICAgZG93bmxvYWRJdGVtLT5kLT5zdWdnZXN0ZWRGaWxlbmFtZSA9IHJl
c3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lKCk7CisKKyAgICBkb3dubG9hZEl0ZW0tPmQtPmRpZFJl
Y2VpdmVSZXNwb25zZShkb3dubG9hZEl0ZW0pOworfQorCit2b2lkIFF0RG93bmxvYWRNYW5hZ2Vy
Ojpkb3dubG9hZENyZWF0ZWREZXN0aW5hdGlvbihEb3dubG9hZFByb3h5KiBkb3dubG9hZCwgY29u
c3QgUVN0cmluZyYgcGF0aCkKK3sKKyAgICBRV2ViRG93bmxvYWRJdGVtKiBkb3dubG9hZEl0ZW0g
PSBtX2Rvd25sb2Fkcy52YWx1ZShkb3dubG9hZC0+ZG93bmxvYWRJRCgpKTsKKyAgICBBU1NFUlQo
ZG93bmxvYWRJdGVtKTsKKyAgICBkb3dubG9hZEl0ZW0tPmQtPmRlc3RpbmF0aW9uUGF0aCA9IHBh
dGg7CisgICAgZW1pdCBkb3dubG9hZEl0ZW0tPmRlc3RpbmF0aW9uRmlsZUNyZWF0ZWQoZG93bmxv
YWRJdGVtLT5kLT5kZXN0aW5hdGlvblBhdGgpOworfQorCit2b2lkIFF0RG93bmxvYWRNYW5hZ2Vy
Ojpkb3dubG9hZEZpbmlzaGVkKERvd25sb2FkUHJveHkqIGRvd25sb2FkKQoreworICAgIC8vIFdp
bGwgYmUgY2FsbGVkIHdoZW4gZG93bmxvYWQgZmluaXNoZXMgd2l0aCBzdWNjZXNzLgorICAgIFFX
ZWJEb3dubG9hZEl0ZW0qIGRvd25sb2FkSXRlbSA9IG1fZG93bmxvYWRzLnRha2UoZG93bmxvYWQt
PmRvd25sb2FkSUQoKSk7CisgICAgQVNTRVJUKGRvd25sb2FkSXRlbSk7CisgICAgZW1pdCBkb3du
bG9hZEl0ZW0tPnN1Y2NlZWRlZCgpOworfQorCit2b2lkIFF0RG93bmxvYWRNYW5hZ2VyOjpkb3du
bG9hZEZhaWxlZChEb3dubG9hZFByb3h5KiBkb3dubG9hZCwgY29uc3QgUXRXZWJFcnJvciYgZXJy
b3IpCit7CisgICAgLy8gV2lsbCBiZSBjYWxsZWQgd2hlbiBkb3dubG9hZCBmYWlscyBvciBpcyBh
Ym9ydGVkLgorICAgIFFXZWJEb3dubG9hZEl0ZW0qIGRvd25sb2FkSXRlbSA9IG1fZG93bmxvYWRz
LnRha2UoZG93bmxvYWQtPmRvd25sb2FkSUQoKSk7CisgICAgQVNTRVJUKGRvd25sb2FkSXRlbSk7
CisgICAgZW1pdCBkb3dubG9hZEl0ZW0tPmZhaWxlZChlcnJvci5lcnJvckNvZGVBc0Rvd25sb2Fk
RXJyb3IoKSwgZXJyb3IudXJsKCksIGVycm9yLmRlc2NyaXB0aW9uKCkpOworfQorCit2b2lkIFF0
RG93bmxvYWRNYW5hZ2VyOjpkb3dubG9hZERhdGFSZWNlaXZlZChEb3dubG9hZFByb3h5KiBkb3du
bG9hZCwgdWludDY0X3QgbGVuZ3RoKQoreworICAgIC8vIFdpbGwgYmUgY2FsbGVkIGV2ZXJ5dGlt
ZSBieXRlcyB3ZXJlIHdyaXR0ZW4gdG8gZGVzdGluYXRpb24gZmlsZSBieSBXZWJQcm9jZXNzLgor
ICAgIFFXZWJEb3dubG9hZEl0ZW0qIGRvd25sb2FkSXRlbSA9IG1fZG93bmxvYWRzLnZhbHVlKGRv
d25sb2FkLT5kb3dubG9hZElEKCkpOworICAgIEFTU0VSVChkb3dubG9hZEl0ZW0pOworICAgIGRv
d25sb2FkSXRlbS0+ZC0+dG90YWxCeXRlc1JlY2VpdmVkICs9IGxlbmd0aDsKKyAgICBlbWl0IGRv
d25sb2FkSXRlbS0+dG90YWxCeXRlc1JlY2VpdmVkQ2hhbmdlZChsZW5ndGgpOworfQorCit2b2lk
IFF0RG93bmxvYWRNYW5hZ2VyOjphZGREb3dubG9hZChEb3dubG9hZFByb3h5KiBkb3dubG9hZCwg
UVdlYkRvd25sb2FkSXRlbSogZG93bmxvYWRJdGVtKQoreworICAgIG1fZG93bmxvYWRzW2Rvd25s
b2FkLT5kb3dubG9hZElEKCldID0gZG93bmxvYWRJdGVtOworfQorCit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXREb3dubG9hZE1hbmFnZXIuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdERvd25sb2FkTWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiZjcy
MTZkNDE2ODlhNjAyYTAzNzNlNGI3OTE0YmE5M2Q3YzJlNzgKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXREb3dubG9hZE1hbmFnZXIuaApAQCAtMCwwICsx
LDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExIE5va2lhIENvcnBvcmF0aW9u
IGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBRdERvd25sb2FkTWFuYWdl
cl9oCisjZGVmaW5lIFF0RG93bmxvYWRNYW5hZ2VyX2gKKworI2luY2x1ZGUgPFFNYXA+CisjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCitj
bGFzcyBRdFdlYkVycm9yOworY2xhc3MgUVdlYkRvd25sb2FkSXRlbTsKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIERvd25sb2FkUHJveHk7CitjbGFzcyBXZWJDb250ZXh0OworCitjbGFzcyBRdERv
d25sb2FkTWFuYWdlciA6IHB1YmxpYyBSZWZDb3VudGVkPFF0RG93bmxvYWRNYW5hZ2VyPiB7Citw
dWJsaWM6CisgICAgflF0RG93bmxvYWRNYW5hZ2VyKCk7CisKKyAgICB2b2lkIGFkZERvd25sb2Fk
KERvd25sb2FkUHJveHkqLCBRV2ViRG93bmxvYWRJdGVtKik7CisKKyAgICB2b2lkIGRvd25sb2Fk
UmVjZWl2ZWRSZXNwb25zZShEb3dubG9hZFByb3h5KiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYpOworICAgIHZvaWQgZG93bmxvYWRDcmVhdGVkRGVzdGluYXRpb24oRG93bmxvYWRQ
cm94eSosIGNvbnN0IFFTdHJpbmcmIHBhdGgpOworICAgIHZvaWQgZG93bmxvYWRGaW5pc2hlZChE
b3dubG9hZFByb3h5Kik7CisgICAgdm9pZCBkb3dubG9hZEZhaWxlZChEb3dubG9hZFByb3h5Kiwg
Y29uc3QgUXRXZWJFcnJvciYpOworICAgIHZvaWQgZG93bmxvYWREYXRhUmVjZWl2ZWQoRG93bmxv
YWRQcm94eSosIHVpbnQ2NF90IGxlbmd0aCk7CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxRdERv
d25sb2FkTWFuYWdlcj4gY3JlYXRlKFdlYkNvbnRleHQqKTsKK3ByaXZhdGU6CisgICAgUXREb3du
bG9hZE1hbmFnZXIoKTsKKworICAgIFFNYXA8dWludDY0X3QsIFFXZWJEb3dubG9hZEl0ZW0qPiBt
X2Rvd25sb2FkczsKK307CisKK30KKyNlbmRpZiAvKiBRdERvd25sb2FkTWFuYWdlcl9oICovCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRUb3VjaFZpZXdJbnRlcmZh
Y2UuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFRvdWNoVmlld0ludGVyZmFjZS5o
CmluZGV4IDNhNDUzNDkwZjkyMzFkODA5ODI0YWJmOGEzZWFjMTljNDlkMWQ2N2IuLmE0ZmQ0NTdh
Mzg5NDQ1NzIzOGUzZjI2YjQ2ZWJmOTUzN2JkNWRjYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9RdFRvdWNoVmlld0ludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9RdFRvdWNoVmlld0ludGVyZmFjZS5oCkBAIC04MSw2ICs4MSw3IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCBRSlNFbmdpbmUqIGVuZ2luZSgpOwogCiAgICAgdmlydHVh
bCB2b2lkIGNob29zZUZpbGVzKFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJSZWYsIGNvbnN0IFFT
dHJpbmdMaXN0JiwgRmlsZUNob29zZXJUeXBlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZG93bmxv
YWRSZXF1ZXN0ZWQoUVdlYkRvd25sb2FkSXRlbSogZG93bmxvYWRJdGVtKSB7IH0KIAogICAgIHZp
cnR1YWwgdm9pZCBkaWRNb3VzZU1vdmVPdmVyRWxlbWVudChjb25zdCBRVXJsJiwgY29uc3QgUVN0
cmluZyYpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRW
aWV3SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRWaWV3SW50ZXJm
YWNlLmgKaW5kZXggNTI2YTQ5NTYxMGQ5NjQxNDFlOGM5MzRmMmY1ZWNjOWExNTk5ODBiYy4uYTgx
ODkxMTQxOGMzMzIwMDAzNjBiZGY0NGUzNTRhMzVjMmE5ZTczMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0Vmlld0ludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9RdFZpZXdJbnRlcmZhY2UuaApAQCAtMjcsNiArMjcsNyBAQAogI2lu
Y2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CiAKIGNsYXNzIFF0V2ViRXJyb3I7CitjbGFzcyBRV2Vi
RG93bmxvYWRJdGVtOwogCiBRVF9CRUdJTl9OQU1FU1BBQ0UKIGNsYXNzIFFDdXJzb3I7CkBAIC05
Myw2ICs5NCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2hvb3NlRmlsZXMoV0tPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lclJlZiwgY29uc3QgUVN0cmluZ0xpc3QmIHNlbGVjdGVkRmlsZU5h
bWVzLCBGaWxlQ2hvb3NlclR5cGUpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRNb3VzZU1v
dmVPdmVyRWxlbWVudChjb25zdCBRVXJsJiwgY29uc3QgUVN0cmluZyYpID0gMDsKKworICAgIHZp
cnR1YWwgdm9pZCBkb3dubG9hZFJlcXVlc3RlZChRV2ViRG93bmxvYWRJdGVtKikgPSAwOwogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViRXJyb3Iu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViRXJyb3IuY3BwCmluZGV4IDc2
NTQ5NzdlMDc3YmFiN2Q1NGI1OTdlZDFmYjRiYTliYWQxNTc5ZDYuLjZkMmUxMGQ4MTExNDUwYTYy
YWNmY2Q4YTQ4NDBiNmMxM2QwMDgyZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9RdFdlYkVycm9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
UXRXZWJFcnJvci5jcHAKQEAgLTYwLDMgKzYwLDggQEAgUVVybCBRdFdlYkVycm9yOjp1cmwoKSBj
b25zdAogICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiBmYWlsaW5nVVJMID0gYWRvcHRXSyhXS0Vy
cm9yQ29weUZhaWxpbmdVUkwoZXJyb3IuZ2V0KCkpKTsKICAgICByZXR1cm4gV0tVUkxDb3B5UVVy
bChmYWlsaW5nVVJMLmdldCgpKTsKIH0KKworUVN0cmluZyBRdFdlYkVycm9yOjpkZXNjcmlwdGlv
bigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdLU3RyaW5nQ29weVFTdHJpbmcoV0tFcnJvckNvcHlM
b2NhbGl6ZWREZXNjcmlwdGlvbihlcnJvci5nZXQoKSkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViRXJyb3IuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9RdFdlYkVycm9yLmgKaW5kZXggMTFiMDk1M2YyZWVlM2U1NjUxM2M0Yzk5MGYyOWQw
MzEzYWQ2MjZkNC4uOTExODdlOTI2YTRjZGFlYjkzZDk3ZDhiYzMxYTEwZjU3NGM4NjQ2YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViRXJyb3IuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJFcnJvci5oCkBAIC0yMSw2ICsyMSw3IEBA
CiAjaWZuZGVmIFF0V2ViRXJyb3JfaAogI2RlZmluZSBRdFdlYkVycm9yX2gKIAorI2luY2x1ZGUg
InF3ZWJkb3dubG9hZGl0ZW0uaCIKICNpbmNsdWRlICJxd2Via2l0Z2xvYmFsLmgiCiAjaW5jbHVk
ZSA8UXROZXR3b3JrL1FOZXR3b3JrUmVwbHk+CiAjaW5jbHVkZSA8V0tFcnJvci5oPgpAQCAtNDIs
OSArNDMsMTEgQEAgcHVibGljOgogICAgIFR5cGUgdHlwZSgpIGNvbnN0OwogICAgIFFVcmwgdXJs
KCkgY29uc3Q7CiAgICAgaW50IGVycm9yQ29kZSgpIGNvbnN0OworICAgIFFTdHJpbmcgZGVzY3Jp
cHRpb24oKSBjb25zdDsKIAogICAgIGludCBlcnJvckNvZGVBc0h0dHBTdGF0dXNDb2RlKCkgY29u
c3QgeyByZXR1cm4gZXJyb3JDb2RlKCk7IH0KICAgICBRTmV0d29ya1JlcGx5OjpOZXR3b3JrRXJy
b3IgZXJyb3JDb2RlQXNOZXR3b3JrRXJyb3IoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxR
TmV0d29ya1JlcGx5OjpOZXR3b3JrRXJyb3I+KGVycm9yQ29kZSgpKTsgfQorICAgIFFXZWJEb3du
bG9hZEl0ZW06OkRvd25sb2FkRXJyb3IgZXJyb3JDb2RlQXNEb3dubG9hZEVycm9yKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8UVdlYkRvd25sb2FkSXRlbTo6RG93bmxvYWRFcnJvcj4oZXJy
b3JDb2RlKCkpOyB9CiAKICAgICBRdFdlYkVycm9yKGNvbnN0IFF0V2ViRXJyb3ImKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAKaW5kZXggNmE0
NGFkNWI0ZWRlODI5NzgwOWYxY2IxMzk2OTEzYjMwNDMzNTdlZC4uNTQwMWRmMjFjYmYzMDk0OTBl
ZjA3ZmQ5ODA5ZDQ1NGIxNDkzMTMxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvUXRXZWJQYWdlUHJveHkuY3BwCkBAIC0yMiwxMCArMjIsMTMgQEAKICNpbmNsdWRlICJRdFdl
YlBhZ2VQcm94eS5oIgogCiAjaW5jbHVkZSAiUXRXZWJFcnJvci5oIgorI2luY2x1ZGUgInF3ZWJk
b3dubG9hZGl0ZW0uaCIKKyNpbmNsdWRlICJxd2ViZG93bmxvYWRpdGVtX3AuaCIKICNpbmNsdWRl
ICJxd2VicHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJxd2VicHJlZmVyZW5jZXNfcC5oIgogCiAj
aW5jbHVkZSAiQ2xpZW50SW1wbC5oIgorI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKICNpbmNs
dWRlICJxd2toaXN0b3J5LmgiCiAjaW5jbHVkZSAicXdraGlzdG9yeV9wLmgiCiAjaW5jbHVkZSAi
RmluZEluZGljYXRvci5oIgpAQCAtNjMsMTMgKzY2LDE2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiAKIFJlZlB0cjxXZWJDb250ZXh0PiBRdFdlYlBhZ2VQcm94eTo6c19kZWZhdWx0Q29u
dGV4dDsKK1JlZlB0cjxRdERvd25sb2FkTWFuYWdlcj4gUXRXZWJQYWdlUHJveHk6OnNfZG93bmxv
YWRNYW5hZ2VyOwogCiB1bnNpZ25lZCBRdFdlYlBhZ2VQcm94eTo6c19kZWZhdWx0UGFnZVByb3h5
Q291bnQgPSAwOwogCiBQYXNzUmVmUHRyPFdlYkNvbnRleHQ+IFF0V2ViUGFnZVByb3h5OjpkZWZh
dWx0V0tDb250ZXh0KCkKIHsKLSAgICBpZiAoIXNfZGVmYXVsdENvbnRleHQpCisgICAgaWYgKCFz
X2RlZmF1bHRDb250ZXh0KSB7CiAgICAgICAgIHNfZGVmYXVsdENvbnRleHQgPSBXZWJDb250ZXh0
OjpjcmVhdGUoU3RyaW5nKCkpOworICAgICAgICBzX2Rvd25sb2FkTWFuYWdlciA9IFF0RG93bmxv
YWRNYW5hZ2VyOjpjcmVhdGUoc19kZWZhdWx0Q29udGV4dC5nZXQoKSk7CisgICAgfQogICAgIHJl
dHVybiBzX2RlZmF1bHRDb250ZXh0OwogfQogCkBAIC0xMzMsOCArMTM5LDEwIEBAIFF0V2ViUGFn
ZVByb3h5Ojp+UXRXZWJQYWdlUHJveHkoKQogICAgIGlmIChtX2NvbnRleHQgPT0gc19kZWZhdWx0
Q29udGV4dCkgewogICAgICAgICBBU1NFUlQoc19kZWZhdWx0UGFnZVByb3h5Q291bnQgPiAwKTsK
ICAgICAgICAgc19kZWZhdWx0UGFnZVByb3h5Q291bnQtLTsKLSAgICAgICAgaWYgKCFzX2RlZmF1
bHRQYWdlUHJveHlDb3VudCkKKyAgICAgICAgaWYgKCFzX2RlZmF1bHRQYWdlUHJveHlDb3VudCkg
ewogICAgICAgICAgICAgc19kZWZhdWx0Q29udGV4dC5jbGVhcigpOworICAgICAgICAgICAgc19k
b3dubG9hZE1hbmFnZXIuY2xlYXIoKTsKKyAgICAgICAgfQogICAgIH0KICAgICBkZWxldGUgbV9o
aXN0b3J5OwogfQpAQCAtNTU5LDQgKzU2NywyMyBAQCB2b2lkIFF0V2ViUGFnZVByb3h5OjpkaWRD
aGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudAog
ICAgIG1fdmlld0ludGVyZmFjZS0+ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGFyZ3MpOwog
fQogCit2b2lkIFF0V2ViUGFnZVByb3h5OjpoYW5kbGVEb3dubG9hZFJlcXVlc3QoRG93bmxvYWRQ
cm94eSogZG93bmxvYWQpCit7CisgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBm
b3IgaG9va2luZyB1cCBhIERvd25sb2FkUHJveHkgdG8gb3VyIEFQSSBsYXllcgorICAgIC8vIGJ5
IGNyZWF0aW5nIGEgUVdlYkRvd25sb2FkSXRlbS4gSXQgd2lsbCB0aGVuIHdhaXQgZm9yIHRoZSBR
V2ViRG93bmxvYWRJdGVtIHRvIGJlCisgICAgLy8gcmVhZHkgKGZpbGxlZCB3aXRoIHRoZSBSZXNv
dXJjZVJlc3BvbnNlIGluZm9ybWF0aW9uKSBzbyB3ZSBjYW4gcGFzcyBpdCB0aHJvdWdoIHRvCisg
ICAgLy8gb3VyIFdlYlZpZXdzLgorICAgIFFXZWJEb3dubG9hZEl0ZW0qIGRvd25sb2FkSXRlbSA9
IG5ldyBRV2ViRG93bmxvYWRJdGVtKCk7CisgICAgZG93bmxvYWRJdGVtLT5kLT5kb3dubG9hZFBy
b3h5ID0gZG93bmxvYWQ7CisKKyAgICBjb25uZWN0KGRvd25sb2FkSXRlbS0+ZCwgU0lHTkFMKHJl
Y2VpdmVkUmVzcG9uc2UoUVdlYkRvd25sb2FkSXRlbSopKSwgdGhpcywgU0xPVChkaWRSZWNlaXZl
RG93bmxvYWRSZXNwb25zZShRV2ViRG93bmxvYWRJdGVtKikpKTsKKyAgICBzX2Rvd25sb2FkTWFu
YWdlci0+YWRkRG93bmxvYWQoZG93bmxvYWQsIGRvd25sb2FkSXRlbSk7Cit9CisKK3ZvaWQgUXRX
ZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVEb3dubG9hZFJlc3BvbnNlKFFXZWJEb3dubG9hZEl0ZW0q
IGRvd25sb2FkKQoreworICAgIC8vIE5vdyB0aGF0IG91ciBkb3dubG9hZEl0ZW0gaGFzIGV2ZXJ5
dGhpbmcgd2UgbmVlZCB3ZSBjYW4gZW1pdCBkb3dubG9hZFJlcXVlc3RlZC4KKyAgICBtX3ZpZXdJ
bnRlcmZhY2UtPmRvd25sb2FkUmVxdWVzdGVkKGRvd25sb2FkKTsKK30KKwogI2luY2x1ZGUgIm1v
Y19RdFdlYlBhZ2VQcm94eS5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvUXRXZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdl
YlBhZ2VQcm94eS5oCmluZGV4IDFhZjgwMGQ1MDk1NGMzMzE0ZmI4MGVlNGQ4NGZjOWRlMzVmYTFh
YzIuLjhjMDI0MDQ4ZjI2NmY2N2EyNmJkOGUyOGE4ZDUzMjQ3NWUxMzg5MWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5oCkBAIC0yMyw2ICsyMyw3IEBA
CiAKICNpbmNsdWRlICJMYXllclRyZWVDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGFnZUNsaWVudC5o
IgorI2luY2x1ZGUgIlF0RG93bmxvYWRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUXRQb2xpY3lJbnRl
cmZhY2UuaCIKICNpbmNsdWRlICJRdFZpZXdJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJTaGFyZWFi
bGVCaXRtYXAuaCIKQEAgLTE3Miw4ICsxNzMsMTEgQEAgcHVibGljOgogICAgIFFXS0hpc3Rvcnkq
IGhpc3RvcnkoKSBjb25zdDsKICAgICBRdFZpZXdJbnRlcmZhY2UqIHZpZXdJbnRlcmZhY2UoKSBj
b25zdCB7IHJldHVybiBtX3ZpZXdJbnRlcmZhY2U7IH0KIAorICAgIHZvaWQgaGFuZGxlRG93bmxv
YWRSZXF1ZXN0KERvd25sb2FkUHJveHkqKTsKKwogcHVibGljIFFfU0xPVFM6CiAgICAgdm9pZCBu
YXZpZ2F0aW9uU3RhdGVDaGFuZ2VkKCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRG93bmxvYWRSZXNw
b25zZShRV2ViRG93bmxvYWRJdGVtKik7CiAKIHB1YmxpYzoKICAgICBRX1NJR05BTCB2b2lkIHNj
cm9sbFJlcXVlc3RlZChpbnQgZHgsIGludCBkeSk7CkBAIC0xOTYsNiArMjAwLDcgQEAgcHJpdmF0
ZToKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvbnRleHQ+IGRlZmF1bHRXS0NvbnRleHQo
KTsKICAgICBzdGF0aWMgUmVmUHRyPFdlYkNvbnRleHQ+IHNfZGVmYXVsdENvbnRleHQ7CisgICAg
c3RhdGljIFJlZlB0cjxRdERvd25sb2FkTWFuYWdlcj4gc19kb3dubG9hZE1hbmFnZXI7CiAgICAg
c3RhdGljIHVuc2lnbmVkIHNfZGVmYXVsdFBhZ2VQcm94eUNvdW50OwogCiAgICAgUmVmUHRyPFdl
YkNvbnRleHQ+IG1fY29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIu
cHJvIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcm8KaW5kZXggMGQyMTY4ODAyYzljYjAxZTNi
ZmQ5MzQwMjZlZjc5MDhkNzkwODAxZi4uYmYzYTUyYjNmZmM4ZDQyNDgzNjA5ZWY5YTBjZmIyOWVh
YjQ4ODZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcm8KKysrIGIvU291
cmNlL1dlYktpdDIvV2ViS2l0Mi5wcm8KQEAgLTI2MCw2ICsyNjAsNyBAQCBIRUFERVJTICs9IFwK
ICAgICBVSVByb2Nlc3MvcXQvUXREZXNrdG9wV2ViUGFnZVByb3h5LmggXAogICAgIFVJUHJvY2Vz
cy9xdC9RdFRvdWNoV2ViUGFnZVByb3h5LmggXAogICAgIFVJUHJvY2Vzcy9xdC9RdFdlYkVycm9y
LmggXAorICAgIFVJUHJvY2Vzcy9xdC9RdERvd25sb2FkTWFuYWdlci5oIFwKICAgICBVSVByb2Nl
c3MvcXQvUXRXZWJQYWdlUHJveHkuaCBcCiAgICAgVUlQcm9jZXNzL3F0L3F3a2hpc3RvcnkuaCBc
CiAgICAgVUlQcm9jZXNzL3F0L3F3a2hpc3RvcnlfcC5oIFwKQEAgLTUwNCw2ICs1MDUsNyBAQCBT
T1VSQ0VTICs9IFwKICAgICBVSVByb2Nlc3MvcXQvUXREZXNrdG9wV2ViUGFnZVByb3h5LmNwcCBc
CiAgICAgVUlQcm9jZXNzL3F0L1F0VG91Y2hXZWJQYWdlUHJveHkuY3BwIFwKICAgICBVSVByb2Nl
c3MvcXQvUXRXZWJFcnJvci5jcHAgXAorICAgIFVJUHJvY2Vzcy9xdC9RdERvd25sb2FkTWFuYWdl
ci5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAgXAogICAgIFVJUHJv
Y2Vzcy9xdC9xd2toaXN0b3J5LmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0U0dVcGRhdGVRdWV1
ZS5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0MkFQSS5wcmkgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJLaXQyQVBJLnByaQppbmRleCA1MTg1OTU3NjJlZDA3NTgzODliMTliZmQy
OTgzODNkMTQ4NmU4ODkzLi4xYWI4NjRjODRlZDlhZDMwNjZkNjdjZjIyYmVmOWYzYTdkODliZTJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyQVBJLnByaQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyQVBJLnByaQpAQCAtNTAsNiArNTAsNyBAQCBXRUJLSVQyX0FQSV9TT1VS
Q0VTID0gXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL3F0L1dL
VVJMUXQuY3BwIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Fi
YXNld2Vidmlldy5jcHAgXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcCBcCisgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9xd2ViZG93bmxvYWRpdGVtLmNwcCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJwYWdlLmNwcCBcCiAgICAgJCRTT1VSQ0VfRElS
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3LmNwcCBcCiAgICAgJCRTT1VS
Q0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2VibmF2aWdhdGlvbmNvbnRyb2xsZXIu
Y3BwIFwKQEAgLTEzNSw2ICsxMzYsOCBAQCBXRUJLSVQyX0FQSV9IRUFERVJTICs9IFwKICAgICAk
JFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlld19wLmgg
XAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnByZWZlcmVu
Y2VzLmggXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnBy
ZWZlcmVuY2VzX3AuaCBcCisgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xd2ViZG93bmxvYWRpdGVtLmggXAorICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXdlYmRvd25sb2FkaXRlbV9wLmggXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZS5oIFwKICAgICAkJFNPVVJDRV9ESVIvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2VfcC5oIFwKICAgICAkJFNPVVJDRV9E
SVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXcuaCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaAppbmRleCBhY2NjZDNmODhl
MmE2OTk1OTdhMzliN2JmODI4ZDQzNjM3YjcwZjM4Li5jMDY2ZTJmNmI0NDM5ZTZjNTZlYzMwMTVm
N2JmZTU1MjFhOTcyNDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkLmgKQEAgLTkzLDYgKzkzLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENh
bmNlbChjb25zdCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhKTsKICAgICB2b2lk
IGRpZERlY2lkZURlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYsIGJvb2wgYWxsb3dPdmVyd3JpdGUp
OwogCisjaWYgUExBVEZPUk0oUVQpCisgICAgdm9pZCBzdGFydFRyYW5zZmVyKGNvbnN0IFN0cmlu
ZyYgZGVzdGluYXRpb24pOworI2VuZGlmCisKICNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIGNvbnN0
IFN0cmluZyYgZGVzdGluYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uOyB9CiAg
ICAgRG93bmxvYWRBdXRoZW50aWNhdGlvbkNsaWVudCogYXV0aGVudGljYXRpb25DbGllbnQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZE1hbmFnZXIuY3BwCmluZGV4IGE2MjQ4OTFmODAxOTRmM2FkYzE1MTgxYWM4MDg0YjQ2OTU1OGJj
YjYuLjYwZGNlODliNGVlNGNjYzM4YmVmOTg5NjU1OWY5ZDc4ZTY3ZjMyNjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2Vy
LmNwcApAQCAtNzksNCArNzksMTMgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OmRvd25sb2FkRmlu
aXNoZWQoRG93bmxvYWQqIGRvd25sb2FkKQogICAgIGRlbGV0ZSBkb3dubG9hZDsKIH0KIAorI2lm
IFBMQVRGT1JNKFFUKQordm9pZCBEb3dubG9hZE1hbmFnZXI6OnN0YXJ0VHJhbnNmZXIodWludDY0
X3QgZG93bmxvYWRJRCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbikKK3sKKyAgICBBU1NFUlQo
bV9kb3dubG9hZHMuY29udGFpbnMoZG93bmxvYWRJRCkpOworICAgIERvd25sb2FkKiBkb3dubG9h
ZCA9IG1fZG93bmxvYWRzLmdldChkb3dubG9hZElEKTsKKyAgICBkb3dubG9hZC0+c3RhcnRUcmFu
c2ZlcihkZXN0aW5hdGlvbik7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1h
bmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFu
YWdlci5oCmluZGV4IDFmMjdiODY3YWVkNTU4ZmJiNzUzYmM2NTJmMThiMGFjYjY5YTAwMjMuLjZm
YTdhZWJlZTRmMjdiZDQzYzE3MDY2Y2JiN2JiODNhNjg0MmQ0YzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCkBAIC0y
OSw2ICsyOSwxMCBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CiAKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgU3RyaW5nOworfQorCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiAgICAgY2xhc3MgUmVz
b3VyY2VSZXF1ZXN0OwpAQCAtNTQsNiArNTgsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZG93bmxv
YWRGaW5pc2hlZChEb3dubG9hZCopOwogICAgIGJvb2wgaXNEb3dubG9hZGluZygpIGNvbnN0IHsg
cmV0dXJuICFtX2Rvd25sb2Fkcy5pc0VtcHR5KCk7IH0KIAorI2lmIFBMQVRGT1JNKFFUKQorICAg
IHZvaWQgc3RhcnRUcmFuc2Zlcih1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBXVEY6OlN0cmlu
ZyYgZGVzdGluYXRpb24pOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgRG93bmxvYWRNYW5hZ2Vy
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0
L0Rvd25sb2FkUXQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQv
RG93bmxvYWRRdC5jcHAKaW5kZXggOWVlOTk5NWU4MGU4ODBkZGE2ZDI3YzlhM2I1MGYwYzE2MWRl
YTBlMC4uNGVlZjQxYzQwYjZjNzY0OWJhOTA1NDM0NmUyODE2YWE4OTU0MGQ3MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvRG93bmxvYWRRdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvRG93bmxvYWRRdC5j
cHAKQEAgLTQ2LDEzICs0NiwxNCBAQCB2b2lkIERvd25sb2FkOjpzdGFydChXZWJQYWdlKiBpbml0
aWF0aW5nV2ViUGFnZSkKICAgICBBU1NFUlQoIW1fcXREb3dubG9hZGVyKTsKIAogICAgIG1fcXRE
b3dubG9hZGVyID0gbmV3IFF0RmlsZURvd25sb2FkZXIodGhpcywgYWRvcHRQdHIobWFuYWdlci0+
Z2V0KG1fcmVxdWVzdC50b05ldHdvcmtSZXF1ZXN0KCkpKSk7Ci0gICAgbV9xdERvd25sb2FkZXIt
PnN0YXJ0KCk7CisgICAgbV9xdERvd25sb2FkZXItPmluaXQoKTsKIH0KIAogdm9pZCBEb3dubG9h
ZDo6c3RhcnRXaXRoSGFuZGxlKFdlYlBhZ2UqIGluaXRpYXRpbmdQYWdlLCBSZXNvdXJjZUhhbmRs
ZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGluaXRpYWxSZXF1ZXN0LCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwKQogewogICAgIEFTU0VSVCghbV9xdERvd25sb2FkZXIpOwog
ICAgIG1fcXREb3dubG9hZGVyID0gbmV3IFF0RmlsZURvd25sb2FkZXIodGhpcywgYWRvcHRQdHIo
aGFuZGxlLT5nZXRJbnRlcm5hbCgpLT5tX2pvYi0+cmVsZWFzZSgpKSk7CisgICAgbV9xdERvd25s
b2FkZXItPmluaXQoKTsKIH0KIAogdm9pZCBEb3dubG9hZDo6Y2FuY2VsKCkKQEAgLTcwLDcgKzcx
LDEyIEBAIHZvaWQgRG93bmxvYWQ6OnBsYXRmb3JtSW52YWxpZGF0ZSgpCiAKIHZvaWQgRG93bmxv
YWQ6OmRpZERlY2lkZURlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24sIGJvb2wg
YWxsb3dPdmVyd3JpdGUpCiB7Ci0gICAgbV9xdERvd25sb2FkZXItPmRlY2lkZWREZXN0aW5hdGlv
bihkZXN0aW5hdGlvbiwgYWxsb3dPdmVyd3JpdGUpOworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3ZvaWQgRG93bmxvYWQ6OnN0YXJ0VHJhbnNmZXIoY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlv
bikKK3sKKyAgICBtX3F0RG93bmxvYWRlci0+c3RhcnRUcmFuc2ZlcihkZXN0aW5hdGlvbik7CiB9
CiAKIHZvaWQgRG93bmxvYWQ6OnBsYXRmb3JtRGlkRmluaXNoKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L1F0RmlsZURvd25sb2FkZXIuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5j
cHAKaW5kZXggYzkzNmIwOGU3MGY5MDRjZjRiNWIzMzZmNTRiNzI2OTc3ZGJlZDBmOS4uYzNiMmU4
ZDBlZTIyYTQ3NzU3ZDNjMDNkYThjYWRkMzBlZGRmMmVlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5j
cHAKQEAgLTUzLDQ1ICs1Myw0MSBAQCBRdEZpbGVEb3dubG9hZGVyOjp+UXRGaWxlRG93bmxvYWRl
cigpCiAgICAgYWJvcnREb3dubG9hZFdyaXRpbmdBbmRFbWl0RXJyb3IoUXRGaWxlRG93bmxvYWRl
cjo6RG93bmxvYWRFcnJvckFib3J0ZWQpOwogfQogCi12b2lkIFF0RmlsZURvd25sb2FkZXI6OnN0
YXJ0KCkKK3ZvaWQgUXRGaWxlRG93bmxvYWRlcjo6aW5pdCgpCiB7CiAgICAgY29ubmVjdChtX3Jl
cGx5LmdldCgpLCBTSUdOQUwocmVhZHlSZWFkKCkpLCBTTE9UKG9uUmVhZHlSZWFkKCkpKTsKICAg
ICBjb25uZWN0KG1fcmVwbHkuZ2V0KCksIFNJR05BTChmaW5pc2hlZCgpKSwgU0xPVChvbkZpbmlz
aGVkKCkpKTsKICAgICBjb25uZWN0KG1fcmVwbHkuZ2V0KCksIFNJR05BTChlcnJvcihRTmV0d29y
a1JlcGx5OjpOZXR3b3JrRXJyb3IpKSwgU0xPVChvbkVycm9yKFFOZXR3b3JrUmVwbHk6Ok5ldHdv
cmtFcnJvcikpKTsKLQotICAgIC8vIENhbGwgb25SZWFkeVJlYWQganVzdCBpbiBjYXNlIHNvbWUg
ZGF0YSBpcyBhbHJlYWR5IHdhaXRpbmcuCi0gICAgb25SZWFkeVJlYWQoKTsKIH0KIAotdm9pZCBR
dEZpbGVEb3dubG9hZGVyOjpkZXRlcm1pbmVGaWxlbmFtZSgpCitRU3RyaW5nIFF0RmlsZURvd25s
b2FkZXI6OmRldGVybWluZUZpbGVuYW1lKCkKIHsKICAgICBBU1NFUlQoIW1fZGVzdGluYXRpb25G
aWxlKTsKIAotICAgIFFTdHJpbmcgZmlsZU5hbWVDYW5kaWRhdGUgPSBmaWxlbmFtZUZyb21IVFRQ
Q29udGVudERpc3Bvc2l0aW9uKFFTdHJpbmc6OmZyb21MYXRpbjEobV9yZXBseS0+cmF3SGVhZGVy
KCJDb250ZW50LURpc3Bvc2l0aW9uIikpKTsKLSAgICBpZiAoZmlsZU5hbWVDYW5kaWRhdGUuaXNF
bXB0eSgpKSB7CisgICAgUVN0cmluZyBmaWxlbmFtZUNhbmRpZGF0ZSA9IGZpbGVuYW1lRnJvbUhU
VFBDb250ZW50RGlzcG9zaXRpb24oUVN0cmluZzo6ZnJvbUxhdGluMShtX3JlcGx5LT5yYXdIZWFk
ZXIoIkNvbnRlbnQtRGlzcG9zaXRpb24iKSkpOworICAgIGlmIChmaWxlbmFtZUNhbmRpZGF0ZS5p
c0VtcHR5KCkpIHsKICAgICAgICAgS1VSTCBrdXJsID0gbV9yZXBseS0+dXJsKCk7Ci0gICAgICAg
IGZpbGVOYW1lQ2FuZGlkYXRlID0gZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKGt1cmwubGFzdFBh
dGhDb21wb25lbnQoKSk7CisgICAgICAgIGZpbGVuYW1lQ2FuZGlkYXRlID0gZGVjb2RlVVJMRXNj
YXBlU2VxdWVuY2VzKGt1cmwubGFzdFBhdGhDb21wb25lbnQoKSk7CiAgICAgfQogCi0gICAgaWYg
KGZpbGVOYW1lQ2FuZGlkYXRlLmlzRW1wdHkoKSkgeworICAgIGlmIChmaWxlbmFtZUNhbmRpZGF0
ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgYWJvcnREb3dubG9hZFdyaXRpbmdBbmRFbWl0RXJyb3Io
UXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvckNhbm5vdERldGVybWluZUZpbGVuYW1lKTsK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gUVN0cmluZygpOwogICAgIH0KIAogICAg
IC8vIE1ha2Ugc3VyZSB0aGF0IHdlIHJlbW92ZSBwb3NzaWJsZSAiLi4vLi4iIHBhcnRzIGluIHRo
ZSBnaXZlbiBmaWxlIG5hbWUuCi0gICAgUUZpbGVJbmZvIGZpbGVOYW1lRmlsdGVyKGZpbGVOYW1l
Q2FuZGlkYXRlKTsKLSAgICBRU3RyaW5nIGZpbGVOYW1lID0gZmlsZU5hbWVGaWx0ZXIuZmlsZU5h
bWUoKTsKKyAgICBRRmlsZUluZm8gZmlsZW5hbWVGaWx0ZXIoZmlsZW5hbWVDYW5kaWRhdGUpOwor
ICAgIFFTdHJpbmcgZmlsZW5hbWUgPSBmaWxlbmFtZUZpbHRlci5maWxlTmFtZSgpOwogCi0gICAg
aWYgKGZpbGVOYW1lLmlzRW1wdHkoKSkgeworICAgIGlmIChmaWxlbmFtZS5pc0VtcHR5KCkpIHsK
ICAgICAgICAgYWJvcnREb3dubG9hZFdyaXRpbmdBbmRFbWl0RXJyb3IoUXRGaWxlRG93bmxvYWRl
cjo6RG93bmxvYWRFcnJvckNhbm5vdERldGVybWluZUZpbGVuYW1lKTsKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gUVN0cmluZygpOwogICAgIH0KIAotICAgIGJvb2wgYWxsb3dPdmVy
d3JpdGU7Ci0gICAgbV9kb3dubG9hZC0+ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmls
ZW5hbWUoZmlsZU5hbWUsIGFsbG93T3ZlcndyaXRlKTsKKyAgICByZXR1cm4gZmlsZW5hbWU7CiB9
CiAKLXZvaWQgUXRGaWxlRG93bmxvYWRlcjo6ZGVjaWRlZERlc3RpbmF0aW9uKGNvbnN0IFFTdHJp
bmcmIGRlY2lkZWRGaWxlUGF0aCwgYm9vbCBhbGxvd092ZXJ3cml0ZSkKK3ZvaWQgUXRGaWxlRG93
bmxvYWRlcjo6c3RhcnRUcmFuc2Zlcihjb25zdCBRU3RyaW5nJiBkZWNpZGVkRmlsZVBhdGgpCiB7
CiAgICAgQVNTRVJUKCFtX2Rlc3RpbmF0aW9uRmlsZSk7CiAKQEAgLTEwMiwxNyArOTgsMTIgQEAg
dm9pZCBRdEZpbGVEb3dubG9hZGVyOjpkZWNpZGVkRGVzdGluYXRpb24oY29uc3QgUVN0cmluZyYg
ZGVjaWRlZEZpbGVQYXRoLCBib29sIGEKICAgICB9CiAKICAgICBpZiAoZGVjaWRlZEZpbGVQYXRo
LmlzRW1wdHkoKSkgewotICAgICAgICBhYm9ydERvd25sb2FkV3JpdGluZ0FuZEVtaXRFcnJvcihR
dEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9yQ2FuY2VsbGVkQnlDYWxsZXIpOworICAgICAg
ICBhYm9ydERvd25sb2FkV3JpdGluZ0FuZEVtaXRFcnJvcihRdEZpbGVEb3dubG9hZGVyOjpEb3du
bG9hZEVycm9yQ2FuY2VsbGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIE93blB0
cjxRRmlsZT4gZG93bmxvYWRGaWxlID0gYWRvcHRQdHIobmV3IFFGaWxlKGRlY2lkZWRGaWxlUGF0
aCkpOwogCi0gICAgaWYgKCFhbGxvd092ZXJ3cml0ZSAmJiBkb3dubG9hZEZpbGUtPmV4aXN0cygp
KSB7Ci0gICAgICAgIGFib3J0RG93bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKFF0RmlsZURvd25s
b2FkZXI6OkRvd25sb2FkRXJyb3JGaWxlQWxyZWFkeUV4aXN0cyk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KICAgICBpZiAoIWRvd25sb2FkRmlsZS0+b3BlbihRSU9EZXZpY2U6OldyaXRlT25s
eSB8IFFJT0RldmljZTo6VHJ1bmNhdGUpKSB7CiAgICAgICAgIGFib3J0RG93bmxvYWRXcml0aW5n
QW5kRW1pdEVycm9yKFF0RmlsZURvd25sb2FkZXI6OkRvd25sb2FkRXJyb3JDYW5ub3RPcGVuRmls
ZSk7CiAgICAgICAgIHJldHVybjsKQEAgLTEzMyw3ICsxMjQsNiBAQCB2b2lkIFF0RmlsZURvd25s
b2FkZXI6OmRlY2lkZWREZXN0aW5hdGlvbihjb25zdCBRU3RyaW5nJiBkZWNpZGVkRmlsZVBhdGgs
IGJvb2wgYQogICAgIC8vIGZ1bmN0aW9uIHdhcyBjYWxsZWQuCiAgICAgaWYgKG1fcmVwbHktPmlz
RmluaXNoZWQoKSkKICAgICAgICAgb25GaW5pc2hlZCgpOwotCiB9CiAKIHZvaWQgUXRGaWxlRG93
bmxvYWRlcjo6YWJvcnREb3dubG9hZFdyaXRpbmdBbmRFbWl0RXJyb3IoUXRGaWxlRG93bmxvYWRl
cjo6RG93bmxvYWRFcnJvciBlcnJvckNvZGUpCkBAIC0xNTcsMTAgKzE0NywxMCBAQCB2b2lkIFF0
RmlsZURvd25sb2FkZXI6OmFib3J0RG93bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKFF0RmlsZURv
d25sb2FkZXI6OkRvd25sbwogICAgIGNhc2UgUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJv
ckNhbm5vdE9wZW5GaWxlOgogICAgICAgICB0cmFuc2xhdGVkRXJyb3JNZXNzYWdlID0gUUNvcmVB
cHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRdEZpbGVEb3dubG9hZGVyIiwgIkNhbm5vdCBvcGVuIGZp
bGUgZm9yIHdyaXRpbmciKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBRdEZpbGVEb3dubG9h
ZGVyOjpEb3dubG9hZEVycm9yRmlsZUFscmVhZHlFeGlzdHM6Ci0gICAgICAgIHRyYW5zbGF0ZWRF
cnJvck1lc3NhZ2UgPSBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlF0RmlsZURvd25sb2Fk
ZXIiLCAiRmlsZSBhbHJlYWR5IGV4aXN0cyIpOworICAgIGNhc2UgUXRGaWxlRG93bmxvYWRlcjo6
RG93bmxvYWRFcnJvckRlc3RpbmF0aW9uQWxyZWFkeUV4aXN0czoKKyAgICAgICAgdHJhbnNsYXRl
ZEVycm9yTWVzc2FnZSA9IFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUXRGaWxlRG93bmxv
YWRlciIsICJEZXN0aW5hdGlvbiBhbHJlYWR5IGV4aXN0cyIpOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIFF0RmlsZURvd25sb2FkZXI6OkRvd25sb2FkRXJyb3JDYW5jZWxsZWRCeUNhbGxlcjoK
KyAgICBjYXNlIFF0RmlsZURvd25sb2FkZXI6OkRvd25sb2FkRXJyb3JDYW5jZWxsZWQ6CiAgICAg
ICAgIHRyYW5zbGF0ZWRFcnJvck1lc3NhZ2UgPSBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUo
IlF0RmlsZURvd25sb2FkZXIiLCAiRG93bmxvYWQgY2FuY2VsbGVkIGJ5IGNhbGxlciIpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIFF0RmlsZURvd25sb2FkZXI6OkRvd25sb2FkRXJyb3JDYW5u
b3REZXRlcm1pbmVGaWxlbmFtZToKQEAgLTE3NSw2ICsxNjUsMjcgQEAgdm9pZCBRdEZpbGVEb3du
bG9hZGVyOjphYm9ydERvd25sb2FkV3JpdGluZ0FuZEVtaXRFcnJvcihRdEZpbGVEb3dubG9hZGVy
OjpEb3dubG8KICAgICBtX2Rvd25sb2FkLT5kaWRGYWlsKGRvd25sb2FkRXJyb3IsIENvcmVJUEM6
OkRhdGFSZWZlcmVuY2UoMCwgMCkpOwogfQogCit2b2lkIFF0RmlsZURvd25sb2FkZXI6OmhhbmRs
ZURvd25sb2FkUmVzcG9uc2UoKQoreworICAgIC8vIEJ5IEFQSSBjb250cmFjdCwgUU5ldHdvcmtS
ZXBseTo6bWV0YURhdGFDaGFuZ2VkIGNhbm5vdCByZWFsbHkgYmUgdHJ1c3RlZC4KKyAgICAvLyBU
aHVzIHdlIG5lZWQgdG8gY2FsbCB0aGlzIHVwb24gcmVjZWl2aW5nIGZpcnN0IGRhdGEuCisgICAg
U3RyaW5nIGNvbnRlbnRUeXBlID0gbV9yZXBseS0+aGVhZGVyKFFOZXR3b3JrUmVxdWVzdDo6Q29u
dGVudFR5cGVIZWFkZXIpLnRvU3RyaW5nKCk7CisgICAgU3RyaW5nIGVuY29kaW5nID0gZXh0cmFj
dENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlKTsKKyAgICBTdHJpbmcgbWltZVR5cGUg
PSBleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlKTsKKyAgICBTdHJpbmcg
ZmlsZW5hbWUgPSBkZXRlcm1pbmVGaWxlbmFtZSgpOworCisgICAgLy8gSWYgZmlsZW5hbWUgaXMg
ZW1wdHkgaXQgbWVhbnMgZGV0ZXJtaW5lRmlsZW5hbWUgYWJvcnRlZCBhbmQgZW1pdHRlZCBhbiBl
cnJvci4KKyAgICBpZiAoZmlsZW5hbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICAvLyBMZXQncyB0cnkgdG8gZ3Vlc3MgZnJvbSB0aGUgZXh0ZW5zaW9uLgorICAgIGlmIChtaW1l
VHlwZS5pc0VtcHR5KCkpCisgICAgICAgIG1pbWVUeXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0
TUlNRVR5cGVGb3JQYXRoKG1fcmVwbHktPnVybCgpLnBhdGgoKSk7CisKKyAgICBSZXNvdXJjZVJl
c3BvbnNlIHJlc3BvbnNlKG1fcmVwbHktPnVybCgpLCBtaW1lVHlwZSwgbV9yZXBseS0+aGVhZGVy
KFFOZXR3b3JrUmVxdWVzdDo6Q29udGVudExlbmd0aEhlYWRlcikudG9Mb25nTG9uZygpLCBlbmNv
ZGluZywgZmlsZW5hbWUpOworICAgIG1fZG93bmxvYWQtPmRpZFJlY2VpdmVSZXNwb25zZShyZXNw
b25zZSk7Cit9CisKIHZvaWQgUXRGaWxlRG93bmxvYWRlcjo6b25SZWFkeVJlYWQoKQogewogICAg
IGlmIChtX2Rlc3RpbmF0aW9uRmlsZSkgewpAQCAtMTk1LDI3ICsyMDYsMjEgQEAgdm9pZCBRdEZp
bGVEb3dubG9hZGVyOjpvblJlYWR5UmVhZCgpCiAKICAgICAgICAgbV9kb3dubG9hZC0+ZGlkUmVj
ZWl2ZURhdGEoYnl0ZXNXcml0dGVuKTsKICAgICB9IGVsc2UgaWYgKCFtX2hlYWRlcnNSZWFkKSB7
Ci0gICAgICAgIC8vIEJ5IEFQSSBjb250cmFjdCwgUU5ldHdvcmtSZXBseTo6bWV0YURhdGFDaGFu
Z2VkIGNhbm5vdCByZWFsbHkgYmUgdHJ1c3RlZC4KLSAgICAgICAgLy8gVGh1cyB3ZSBuZWVkIHRv
IGNhbGwgdGhpcyB1cG9uIHJlY2VpdmluZyBmaXJzdCBkYXRhLgotICAgICAgICBTdHJpbmcgY29u
dGVudFR5cGUgPSBtX3JlcGx5LT5oZWFkZXIoUU5ldHdvcmtSZXF1ZXN0OjpDb250ZW50VHlwZUhl
YWRlcikudG9TdHJpbmcoKTsKLSAgICAgICAgU3RyaW5nIGVuY29kaW5nID0gZXh0cmFjdENoYXJz
ZXRGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlKTsKLSAgICAgICAgU3RyaW5nIG1pbWVUeXBlID0g
ZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSk7Ci0KLSAgICAgICAgLy8g
TGV0J3MgdHJ5IHRvIGd1ZXNzIGZyb20gdGhlIGV4dGVuc2lvbi4KLSAgICAgICAgaWYgKG1pbWVU
eXBlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1pbWVUeXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6
Z2V0TUlNRVR5cGVGb3JQYXRoKG1fcmVwbHktPnVybCgpLnBhdGgoKSk7Ci0KLSAgICAgICAgUmVz
b3VyY2VSZXNwb25zZSByZXNwb25zZShtX3JlcGx5LT51cmwoKSwgbWltZVR5cGUsIG1fcmVwbHkt
PmhlYWRlcihRTmV0d29ya1JlcXVlc3Q6OkNvbnRlbnRMZW5ndGhIZWFkZXIpLnRvTG9uZ0xvbmco
KSwgZW5jb2RpbmcsIFN0cmluZygpKTsKLSAgICAgICAgbV9kb3dubG9hZC0+ZGlkUmVjZWl2ZVJl
c3BvbnNlKHJlc3BvbnNlKTsKLQotICAgICAgICBkZXRlcm1pbmVGaWxlbmFtZSgpOwotCisgICAg
ICAgIGhhbmRsZURvd25sb2FkUmVzcG9uc2UoKTsKICAgICAgICAgbV9oZWFkZXJzUmVhZCA9IHRy
dWU7CiAgICAgfQogfQogCiB2b2lkIFF0RmlsZURvd25sb2FkZXI6Om9uRmluaXNoZWQoKQogewor
ICAgIC8vIElmIGl0J3MgZmluaXNoZWQgYW5kIHdlIGhhdmVuJ3QgZXZlbiByZWFkIHRoZSBoZWFk
ZXJzLCBpdCBtZWFucyB3ZSBuZXZlciBnb3QgdG8gb25SZWFkeVJlYWQgYW5kIHRoYXQgd2UgYXJl
CisgICAgLy8gcHJvYmFibHkgZGVhbGluZyB3aXRoIHRoZSBkb3dubG9hZCBvZiBhIGxvY2FsIGZp
bGUgb3Igb2YgYSBzbWFsbCBmaWxlIHRoYXQgd2FzIHN0YXJ0ZWQgd2l0aCBhIGhhbmRsZS4KKyAg
ICBpZiAoIW1faGVhZGVyc1JlYWQpIHsKKyAgICAgICAgaGFuZGxlRG93bmxvYWRSZXNwb25zZSgp
OworICAgICAgICBtX2hlYWRlcnNSZWFkID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KwogICAgIGlmICghbV9kZXN0aW5hdGlvbkZpbGUpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjIz
LDYgKzIyOCw4IEBAIHZvaWQgUXRGaWxlRG93bmxvYWRlcjo6b25GaW5pc2hlZCgpCiAKICAgICBp
ZiAobV9lcnJvciA9PSBRTmV0d29ya1JlcGx5OjpOb0Vycm9yKQogICAgICAgICBtX2Rvd25sb2Fk
LT5kaWRGaW5pc2goKTsKKyAgICBlbHNlIGlmICAobV9lcnJvciA9PSBRTmV0d29ya1JlcGx5OjpP
cGVyYXRpb25DYW5jZWxlZEVycm9yKQorICAgICAgICBhYm9ydERvd25sb2FkV3JpdGluZ0FuZEVt
aXRFcnJvcihRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9yQ2FuY2VsbGVkKTsKICAgICBl
bHNlCiAgICAgICAgIGFib3J0RG93bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKFF0RmlsZURvd25s
b2FkZXI6OkRvd25sb2FkRXJyb3JOZXR3b3JrRmFpbHVyZSk7CiB9CkBAIC0yMzUsNiArMjQyLDcg
QEAgdm9pZCBRdEZpbGVEb3dubG9hZGVyOjpvbkVycm9yKFFOZXR3b3JrUmVwbHk6Ok5ldHdvcmtF
cnJvciBjb2RlKQogdm9pZCBRdEZpbGVEb3dubG9hZGVyOjpjYW5jZWwoKQogewogICAgIG1fcmVw
bHktPmFib3J0KCk7CisgICAgLy8gUXRGaWxlRG93bmxvYWRlcjo6b25GaW5pc2hlZCgpIHdpbGwg
YmUgY2FsbGVkIGFuZCB3aWxsIHJhaXNlIGEgRG93bmxvYWRFcnJvckNhbmNlbGxlZC4KIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3dubG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3dubG9hZGVyLmgKaW5kZXggYjZiOGJhMjhiZWE5
ZjhhYjFkNjk0Yzg0MzM0MTQ0YTRhMmM5ZDE1Yi4uMGFlMGZkODRhNjljN2RlYzFmMmE0MDg2OTJh
ZTZiOTZiYjliMmU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3du
bG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvRG93bmxvYWRzL3F0L1F0RmlsZURvd25sb2FkZXIuaApAQCAtNDQsMTYgKzQ0LDE2IEBAIGNs
YXNzIFF0RmlsZURvd25sb2FkZXIgOiBwdWJsaWMgUU9iamVjdCB7CiBwdWJsaWM6CiAgICAgUXRG
aWxlRG93bmxvYWRlcihEb3dubG9hZCosIFBhc3NPd25QdHI8UU5ldHdvcmtSZXBseT4pOwogICAg
IHZpcnR1YWwgflF0RmlsZURvd25sb2FkZXIoKTsKLSAgICB2b2lkIGRlY2lkZWREZXN0aW5hdGlv
bihjb25zdCBRU3RyaW5nJiBkZWNpZGVkRmlsZVBhdGgsIGJvb2wgYWxsb3dPdmVyd3JpdGUpOwog
ICAgIHZvaWQgY2FuY2VsKCk7Ci0gICAgdm9pZCBzdGFydCgpOworICAgIHZvaWQgaW5pdCgpOwor
ICAgIHZvaWQgc3RhcnRUcmFuc2Zlcihjb25zdCBRU3RyaW5nJiBkZXN0aW5hdGlvbik7CiAKICAg
ICBlbnVtIERvd25sb2FkRXJyb3IgewogICAgICAgICBEb3dubG9hZEVycm9yQWJvcnRlZCA9IDAs
CiAgICAgICAgIERvd25sb2FkRXJyb3JDYW5ub3RXcml0ZVRvRmlsZSwKICAgICAgICAgRG93bmxv
YWRFcnJvckNhbm5vdE9wZW5GaWxlLAotICAgICAgICBEb3dubG9hZEVycm9yRmlsZUFscmVhZHlF
eGlzdHMsCi0gICAgICAgIERvd25sb2FkRXJyb3JDYW5jZWxsZWRCeUNhbGxlciwKKyAgICAgICAg
RG93bmxvYWRFcnJvckRlc3RpbmF0aW9uQWxyZWFkeUV4aXN0cywKKyAgICAgICAgRG93bmxvYWRF
cnJvckNhbmNlbGxlZCwKICAgICAgICAgRG93bmxvYWRFcnJvckNhbm5vdERldGVybWluZUZpbGVu
YW1lLAogICAgICAgICBEb3dubG9hZEVycm9yTmV0d29ya0ZhaWx1cmUKICAgICB9OwpAQCAtNjUs
NyArNjUsOCBAQCBwcml2YXRlIHNsb3RzOgogCiBwcml2YXRlOgogICAgIHZvaWQgYWJvcnREb3du
bG9hZFdyaXRpbmdBbmRFbWl0RXJyb3IoUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvcik7
Ci0gICAgdm9pZCBkZXRlcm1pbmVGaWxlbmFtZSgpOworICAgIFFTdHJpbmcgZGV0ZXJtaW5lRmls
ZW5hbWUoKTsKKyAgICB2b2lkIGhhbmRsZURvd25sb2FkUmVzcG9uc2UoKTsKIAogICAgIERvd25s
b2FkKiBtX2Rvd25sb2FkOwogICAgIE93blB0cjxRTmV0d29ya1JlcGx5PiBtX3JlcGx5OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZThhYTdhZGE0YjZlNWU2
YWYxNmE0NzM4M2Y5MmM0MDdiMjg2OGE1Zi4uYmQ2OWNhZDdlZGIwNWY1YmE5YTRhYmMwNTYzYTM3
NjJhZjM3ZTU2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBA
IC05NTcsNiArOTU3LDEzIEBAIHZvaWQgV2ViUHJvY2Vzczo6Y2FuY2VsRG93bmxvYWQodWludDY0
X3QgZG93bmxvYWRJRCkKICAgICBEb3dubG9hZE1hbmFnZXI6OnNoYXJlZCgpLmNhbmNlbERvd25s
b2FkKGRvd25sb2FkSUQpOwogfQogCisjaWYgUExBVEZPUk0oUVQpCit2b2lkIFdlYlByb2Nlc3M6
OnN0YXJ0VHJhbnNmZXIodWludDY0X3QgZG93bmxvYWRJRCwgY29uc3QgU3RyaW5nJiBkZXN0aW5h
dGlvbikKK3sKKyAgICBEb3dubG9hZE1hbmFnZXI6OnNoYXJlZCgpLnN0YXJ0VHJhbnNmZXIoZG93
bmxvYWRJRCwgZGVzdGluYXRpb24pOworfQorI2VuZGlmCisKIHZvaWQgV2ViUHJvY2Vzczo6c2V0
RW5oYW5jZWRBY2Nlc3NpYmlsaXR5KGJvb2wgZmxhZykKIHsKICAgICBXZWJDb3JlOjpBWE9iamVj
dENhY2hlOjpzZXRFbmhhbmNlZFVzZXJJbnRlcmZhY2VBY2Nlc3NpYmlsaXR5KGZsYWcpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCAwZDVkNzRhOWMxYzE0OTEyZDIz
NmRkMzg0ZjY1MzYwMzFiNDE0MTMyLi4zOWY4YTVmMGNlODhjMDgwM2ZiMjk2NjkwYTZjZjc0ZTYx
ZTYyZDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMTc1LDYg
KzE3NSw5IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRvd25sb2FkUmVxdWVzdCh1aW50NjRfdCBk
b3dubG9hZElELCB1aW50NjRfdCBpbml0aWF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGNhbmNlbERvd25sb2FkKHVpbnQ2NF90IGRvd25sb2Fk
SUQpOworI2lmIFBMQVRGT1JNKFFUKQorICAgIHZvaWQgc3RhcnRUcmFuc2Zlcih1aW50NjRfdCBk
b3dubG9hZElELCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uKTsKKyNlbmRpZgogCiAgICAgdm9p
ZCBzZXRUZXh0Q2hlY2tlclN0YXRlKGNvbnN0IFRleHRDaGVja2VyU3RhdGUmKTsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRl
eCA0NGY0NDE5YTA3ODdmYzc3NTljYzUyYjNlNTQ0MzVmNzk1ZmMzOGY4Li5mOTE5NmFlMmE5OGQx
N2I2ODNhZDQ3NjBjMGI1ZjQ5N2ExNWVmYzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC02NCw2ICs2NCw5IEBAIG1lc3NhZ2Vz
IC0+IFdlYlByb2Nlc3MgewogICAgICMgdHdvIG1lc3NhZ2VzLgogICAgIERvd25sb2FkUmVxdWVz
dCh1aW50NjRfdCBkb3dubG9hZElELCB1aW50NjRfdCBpbml0aWF0aW5nUGFnZUlELCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCkKICAgICBDYW5jZWxEb3dubG9hZCh1aW50NjRfdCBk
b3dubG9hZElEKQorI2lmIFBMQVRGT1JNKFFUKQorICAgIFN0YXJ0VHJhbnNmZXIodWludDY0X3Qg
ZG93bmxvYWRJRCwgV1RGOjpTdHJpbmcgZGVzdGluYXRpb24pCisjZW5kaWYKIAogICAgIFNldFRl
eHRDaGVja2VyU3RhdGUoV2ViS2l0OjpUZXh0Q2hlY2tlclN0YXRlIHRleHRDaGVja2VyU3RhdGUp
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113352</attachid>
            <date>2011-11-02 12:30:24 -0700</date>
            <delta_ts>2011-11-03 04:35:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68962-20111102212948.patch</filename>
            <type>text/plain</type>
            <size>63514</size>
            <attacher name="Jesus Sanchez-Palencia">jesus</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkwNzYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggODM1NzBhN2VkMGNk
ZjgwMzIwMzQ2MDEwOTM3NDRjNmFkOGRlMWFlOS4uNWIxZGVhYTQ1NjAxNzQ0MTc1ODFiMWExMWU2
YmFlZjFiZGI4Nzc1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0xMS0w
MiAgSmVzdXMgU2FuY2hlei1QYWxlbmNpYSAgPGplc3VzLnBhbGVuY2lhQG9wZW5ib3NzYS5vcmc+
CisKKyAgICAgICAgW1F0XVtXSzJdIERvd25sb2FkIHN1cHBvcnQgYW5kIEFQSSBpbiBVSVByb2Nl
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4OTYy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVnaXN0
ZXJpbmcgbmV3IHFtbCB0eXBlIFFXZWJEb3dubG9hZEl0ZW0uCisKKyAgICAgICAgKiBkZWNsYXJh
dGl2ZS9wbHVnaW4uY3BwOgorICAgICAgICAoV2ViS2l0UW1sUGx1Z2luOjpyZWdpc3RlclR5cGVz
KToKKwogMjAxMS0xMS0wMiAgRGVlcGFrIFNoZXJ2ZWdoYXIgIDxicHd2NjRAbW90b3JvbGEuY29t
PgogCiAgICAgICAgIFtRdF0gRmFpbGluZyB0ZXN0IG1lZGlhL3ZpZGVvLWRvY3VtZW50LXR5cGVz
Lmh0bWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwppbmRleCBkMDExMDQ3M2ZiYTY2NWIzMTVmZmFjYjg5NTBiMTc4ZmIzM2Qx
OWFhLi45NGMxOWQxYjRhNThmMTRhM2M3MDFhNjI4YTliMjJkMDU5NjRmOTE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTQ4IEBACisyMDExLTExLTAyICBKZXN1cyBTYW5jaGV6LVBhbGVuY2lhICA8
amVzdXMucGFsZW5jaWFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBbUXRdW1dLMl0gRG93bmxv
YWQgc3VwcG9ydCBhbmQgQVBJIGluIFVJUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg5NjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZSBpbXBsZW1lbnQgb3VyIFdrQ29udGV4dERvd25sb2Fk
Q2xpZW50IGFuZCB0aGUgbmVlZGVkIGNhbGxiYWNrcy4KKyAgICAgICAgV2UgYWxzbyBhZGQgQVBJ
cyBieSBleHBvc2luZyBRV2ViRG93bmxvYWRJdGVtLiBPYmplY3RzIGZyb20gdGhpcyB0eXBlCisg
ICAgICAgIGhhdmUgdGhlaXIgb3duZXJzaGlwIGhhbmRsZWQgYnkgUURlc2t0b3BXZWJWaWV3IGFu
ZCB3aWxsIGJlIGNyZWF0ZWQgb3IKKyAgICAgICAgZGVzdHJveWVkIGFzIG5lZWRlZC4gQ2xhc3Nl
cyBpbXBsZW1lbnRpbmcgVmlld0ludGVyZmFjZSAoUURlc2t0b3BXZWJWaWV3UHJpdmF0ZQorICAg
ICAgICBhbmQgVG91Y2hWaWV3SW50ZXJmYWNlKSB3aWxsIHJlY2VpdmUgYSBzaWduYWwgKGRvd25s
b2FkUmVxdWVzdGVkKSB3aXRoIGEgcG9pbnRlcgorICAgICAgICB0byB0aGUgcmVjZW50bHkgY3Jl
YXRlZCBRV2ViRG93bmxvYWRJdGVtLiBXaXRoIHRoYXQgdGhleSBjYW4gY29ubmVjdCB0aGUgcHJv
cGVyCisgICAgICAgIHNpZ25hbHMgYW5kIHNsb3RzLCBzZXQgdGhlIGRvd25sb2FkIGRlc3RpbmF0
aW9uIHBhdGggYW5kIHRoZW4gY2FsbCBzdGFydCgpLgorICAgICAgICBPYmplY3RzIG9mIHRoaXMg
dHlwZSB3aWxsIHByb3ZpZGUgdGhlIHByb2dyZXNzIG9mIGEgZG93bmxvYWQsIGEgc2xvdCB0byBj
YW5jZWwgaXQsCisgICAgICAgIGFuZCBzaWduYWxzIGZvciBnZXR0aW5nIGZpbmlzaGVkIG9yIGZh
aWx1cmUgc3RhdHVzLgorICAgICAgICBRV2ViRG93bmxvYWRJdGVtIHdhcyBhbHNvIGV4cG9zZWQg
aW4gUU1MLgorICAgICAgICBRdCBuZWVkZWQgYW4gYXN5bmNocm9ub3VzIHdheSBmb3IgVUlQcm9j
ZXNzIHRvIHJldHVybiBhIGRlc3RpbmF0aW9uIHBhdGggdG8gV2ViUHJvY2VzcywKKyAgICAgICAg
dGhlcmVmb3JlIHRoZSBzdGFydFRyYW5zZmVyIEFQSSB3YXMgYWRkZWQgdG8gV2ViS2l0MidzIERv
d25sb2FkIGhhbmRsZXJzLgorCisgICAgICAgICogU2hhcmVkL3F0L1dlYkNvcmVBcmd1bWVudENv
ZGVyc1F0LmNwcDoKKyAgICAgICAgKENvcmVJUEM6Ojo6ZW5jb2RlKToKKyAgICAgICAgKENvcmVJ
UEM6Ojo6ZGVjb2RlKToKKyAgICAgICAgQWRkIGVuY29kaW5nIGFuZCBkZWNvZGluZyBvZiBzdWdn
ZXN0ZWRGaWxlbmFtZSBmb3IgUmVzb3VyY2VSZXNwb25zZS4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvcXQvV0tWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xYmFzZXdlYnZp
ZXcuaDogQWRkIHNpZ25hbCBkb3dubG9hZFJlcXVlc3RlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHA6CisgICAgICAgIChRRGVza3RvcFdlYlZpZXdQcml2
YXRlOjpkb3dubG9hZFJlcXVlc3RlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xZGVz
a3RvcHdlYnZpZXdfcC5oOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxv
YWRpdGVtLmNwcDogQWRkZWQuCisgICAgICAgIChRV2ViRG93bmxvYWRJdGVtUHJpdmF0ZTo6UVdl
YkRvd25sb2FkSXRlbVByaXZhdGUpOgorICAgICAgICAoUVdlYkRvd25sb2FkSXRlbTo6UVdlYkRv
d25sb2FkSXRlbSk6CisgICAgICAgIChRV2ViRG93bmxvYWRJdGVtOjp+UVdlYkRvd25sb2FkSXRl
bSk6CisgICAgICAgIChRV2ViRG93bmxvYWRJdGVtOjp1cmwpOgorICAgICAgICAoUVdlYkRvd25s
b2FkSXRlbTo6ZGVzdGluYXRpb25QYXRoKToKKyAgICAgICAgKFFXZWJEb3dubG9hZEl0ZW06OnNl
dERlc3RpbmF0aW9uUGF0aCk6CisgICAgICAgIChRV2ViRG93bmxvYWRJdGVtOjpzdWdnZXN0ZWRG
aWxlbmFtZSk6CisgICAgICAgIChRV2ViRG93bmxvYWRJdGVtOjptaW1lVHlwZSk6CisgICAgICAg
IChRV2ViRG93bmxvYWRJdGVtOjpleHBlY3RlZENvbnRlbnRMZW5ndGgpOgorICAgICAgICAoUVdl
YkRvd25sb2FkSXRlbTo6dG90YWxCeXRlc1JlY2VpdmVkKToKKyAgICAgICAgKFFXZWJEb3dubG9h
ZEl0ZW06OmNhbmNlbCk6CisgICAgICAgIChRV2ViRG93bmxvYWRJdGVtOjpzdGFydCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxvYWRpdGVtLmg6IEFkZGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdlYmRvd25sb2FkaXRlbV9wLmg6IEFkZGVkLgorICAgICAg
ICAoUVdlYkRvd25sb2FkSXRlbVByaXZhdGU6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL0Rlc2t0b3BXZWJWaWV3L3RzdF9k
b3dubG9hZC5xbWw6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1s
dGVzdHMvY29tbW9uL2Rvd25sb2FkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL2Rvd25sb2FkLnppcDogQWRkZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9xbWx0ZXN0cy5wcm86CisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpEb3dubG9hZFByb3h5OjpzdGFydFRyYW5zZmVyKTogUXQgb25seSBmdW5jdGlvbiBhZGRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaDoKKworICAg
ICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6IEFkZGVkIFF0IHNwZWNpZmljIGZ1bmN0aW9u
IHRvIGNhbGwgaGFuZGxlRG93bmxvYWRSZXF1ZXN0IGZyb20gUXRXZWJQYWdlUHJveHkuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
bnRleHQ6OmRvd25sb2FkKToKKyAgICAgICAgVXNpbmcgV2ViUGFnZVByb3h5OjpoYW5kbGVEb3du
bG9hZFJlcXVlc3QgdG8gYm9vdHN0cmFwIGEgZG93bmxvYWQgdGhyb3VnaCBQYWdlQ2xpZW50Lgor
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbik6CisgICAgICAgIFVzaW5nIGhh
bmRsZURvd25sb2FkUmVxdWVzdCgpIHRvIGJvb3RzdHJhcCBhIGRvd25sb2FkIHRocm91Z2ggUGFn
ZUNsaWVudC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpoYW5kbGVEb3dubG9hZFJl
cXVlc3QpOiBDYWxscyBQYWdlQ2xpZW50OjpoYW5kbGVEb3dubG9hZFJlcXVlc3QoKS4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQv
UXREb3dubG9hZE1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6dG9RdERvd25s
b2FkTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OnF0X3drX2RpZFJlY2VpdmVSZXNwb25zZSk6
CisgICAgICAgIChXZWJLaXQ6OnF0X3drX2RpZENyZWF0ZURlc3RpbmF0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6cXRfd2tfZGlkRmluaXNoRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpxdF93
a19kaWRGYWlsRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpxdF93a19kaWRSZWNlaXZlRGF0
YUZvckRvd25sb2FkKToKKyAgICAgICAgKFF0RG93bmxvYWRNYW5hZ2VyOjpkb3dubG9hZFJlY2Vp
dmVkUmVzcG9uc2UpOiBXaWxsIHJlYWNoIFF0V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlRG93bmxv
YWRSZXNwb25zZS4KKyAgICAgICAgKFF0RG93bmxvYWRNYW5hZ2VyOjpkb3dubG9hZENyZWF0ZWRE
ZXN0aW5hdGlvbik6CisgICAgICAgIChRdERvd25sb2FkTWFuYWdlcjo6ZG93bmxvYWRGaW5pc2hl
ZCk6CisgICAgICAgIChRdERvd25sb2FkTWFuYWdlcjo6ZG93bmxvYWRGYWlsZWQpOgorICAgICAg
ICAoUXREb3dubG9hZE1hbmFnZXI6OmRvd25sb2FkRGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvcXQvUXREb3dubG9hZE1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgIEJvb3RzdHJh
cCBvdXIgV0tDb250ZXh0RG93bmxvYWRDbGllbnQgYW5kIHNldCBpdHMgY2FsbGJhY2tzLgorICAg
ICAgICBUaGlzIGVudGl0eSB3aWxsIGFsc28gaGFuZGxlIGFsbCBkb3dubG9hZHMgYW5kIGtlZXAg
YSBtYXAgb2YgdGhlbS4KKyAgICAgICAgSXQgd2lsbCBiZSBrZXB0IGFsaXZlIHRvZ2V0aGVyIHdp
dGggdGhlIFdlYkNvbnRleHQgYXMgYSBzdGF0aWMgbWVtYmVyCisgICAgICAgIG9mIFF0V2ViUGFn
ZVByb3h5LCBzbyB3ZSBjYW4ga2VlcCBpdCBhY3Jvc3Mgc2V2ZXJhbCBXZWJQYWdlcyBhbmQsIHRo
ZXJlZm9yZSwKKyAgICAgICAgV2ViVmlld3MuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRX
ZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoUXRXZWJQYWdlUHJveHk6OmRlZmF1bHRXS0NvbnRl
eHQpOgorICAgICAgICAoUXRXZWJQYWdlUHJveHk6On5RdFdlYlBhZ2VQcm94eSk6CisgICAgICAg
IChRdFdlYlBhZ2VQcm94eTo6aGFuZGxlRG93bmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKFF0V2Vi
UGFnZVByb3h5OjpkaWRSZWNlaXZlRG93bmxvYWRSZXNwb25zZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL3F0L1F0V2ViUGFnZVByb3h5Lmg6CisgICAgICAgIEZyb20gbm93IG9uIGl0IHdpbGwga2Vl
cCBhIHN0YXRpYyBRdERvd25sb2FkTWFuYWdlciB0byBsaXZlIHRvZ2V0aGVyCisgICAgICAgIHdp
dGggdGhlIGRlZmF1bHQgV2ViQ29udGV4dC4gSXQgaW1wbGVtZW50cyBQYWdlQ2xpZW50OjpoYW5k
bGVEb3dubG9hZFJlcXVlc3QuCisgICAgICAgIFF0V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlRG93
bmxvYWRSZXNwb25zZSB3aWxsIGVtaXQgdGhlIHZpZXcncyBzaWduYWwgZG93bmxvYWRSZXF1ZXN0
ZWQuCisKKyAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFRvdWNoVmlld0ludGVyZmFjZS5oOgorICAg
ICAgICAoV2ViS2l0OjpRdFRvdWNoVmlld0ludGVyZmFjZTo6ZG93bmxvYWRSZXF1ZXN0ZWQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFZpZXdJbnRlcmZhY2UuaDoKKworICAgICAgICAqIFVJ
UHJvY2Vzcy9xdC9xd2ViZXJyb3IuY3BwOgorICAgICAgICAoUVdlYkVycm9yOjpkZXNjcmlwdGlv
bik6CisgICAgICAgICogVUlQcm9jZXNzL3F0L3F3ZWJlcnJvci5oOgorICAgICAgICAoUVdlYkVy
cm9yOjplcnJvckNvZGVBc0Rvd25sb2FkRXJyb3IpOgorICAgICAgICBBZGQgRG93bmxvYWQgZXJy
b3IgaGFuZGxpbmcgdG8gUVdlYkVycm9yIGFuZCBhIG5ldyBBUEkKKyAgICAgICAgdG8gcmV0cmll
dmUgdGhlIGVycm9yIGRlc2NyaXB0aW9uIGZyb20gdGhlIG9yaWdpbmFsIFJlc291cmNlRXJyb3Iu
CisgICAgICAgIEFsc28sIGl0IG5vdyBoYXMgUVdlYkRvd25sb2FkSXRlbTo6RG93bmxvYWRFcnJv
ciBlcnJvckNvZGVBc0Rvd25sb2FkRXJyb3IoKQorICAgICAgICB0aGF0IHJldHVybnMgdGhlIGVy
cm9yIGNvZGUgYXMgYSBEb3dubG9hZEVycm9yLgorCisgICAgICAgICogV2ViS2l0Mi5wcm86Cisg
ICAgICAgICogV2ViS2l0MkFQSS5wcmk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFu
YWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6c3RhcnRUcmFuc2Zl
cik6CisgICAgICAgICogV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg6Cisg
ICAgICAgIEFkZGluZyBRdCBzcGVjaWZpYyBzdGFydFRyYW5zZmVyIGZ1bmN0aW9uLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvRG93bmxvYWRRdC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkRvd25sb2FkOjpzdGFydCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpzdGFy
dFdpdGhIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6ZGlkRGVjaWRlRGVzdGlu
YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6c3RhcnRUcmFuc2Zlcik6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlF0RmlsZURvd25sb2FkZXI6OmluaXQpOiBzdGFydCgpIHdhcyByZW5hbWVk
IHRvIGluaXQoKS4KKyAgICAgICAgKFdlYktpdDo6UXRGaWxlRG93bmxvYWRlcjo6ZGV0ZXJtaW5l
RmlsZW5hbWUpOgorICAgICAgICBDYWxsaW5nIG9uUmVhZHlSZWFkKCkgaGVyZSB3YXMgdW5uZWNl
c3NhcnkgYW5kIGl0IHdhcyB0cmlnZ2VyaW5nIHRoZSBvdmVyYWxsCisgICAgICAgIGRvd25sb2Fk
IHByb2Nlc3MgZXZlbiBiZWZvcmUgRG93bmxvYWRNYW5hZ2VyIGZpbmlzaGVkIHN0YXJ0RG93bmxv
YWQoKS4gVGhpcworICAgICAgICB3YXMgbGVhZGluZyB0byBhIERvd25sb2FkTWFuYWdlciB3aXRo
IGFuIGVtcHR5IGxpc3Qgb2YgZG93bmxvYWRzLgorICAgICAgICAoV2ViS2l0OjpRdEZpbGVEb3du
bG9hZGVyOjpzdGFydFRyYW5zZmVyKTogZGVjaWRlZERlc3RpbmF0aW9uKCkgYmVjYW1lIHN0YXJ0
VHJhbnNmZXIoKS4KKyAgICAgICAgKFdlYktpdDo6UXRGaWxlRG93bmxvYWRlcjo6YWJvcnREb3du
bG9hZFdyaXRpbmdBbmRFbWl0RXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpRdEZpbGVEb3dubG9h
ZGVyOjpoYW5kbGVEb3dubG9hZFJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6UXRGaWxlRG93
bmxvYWRlcjo6b25SZWFkeVJlYWQpOgorICAgICAgICAoV2ViS2l0OjpRdEZpbGVEb3dubG9hZGVy
OjpvbkZpbmlzaGVkKToKKyAgICAgICAgKFdlYktpdDo6UXRGaWxlRG93bmxvYWRlcjo6Y2FuY2Vs
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3dubG9hZGVyLmg6
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjpzdGFydFRyYW5zZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46Cisg
ICAgICAgIEFkZGluZyBRdCBzcGVjaWZpYyBtZXNzYWdlIFN0YXJ0VHJhbnNmZXIgYW5kIGhhbmRs
aW5nIGZ1bmN0aW9uLgorCiAyMDExLTExLTAyICBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50
dXJjb3R0ZUBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBGaXggcW1sdGVzdCBBUEkgdGVzdCBm
YWlsdXJlcyByZWxhdGVkIHRvIHI5ODk3My4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQv
ZGVjbGFyYXRpdmUvcGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvZGVjbGFyYXRpdmUvcGx1
Z2luLmNwcAppbmRleCBjZjNiZGQ0YTEyZWI2OTY1NzI0ZGI5YTY1ZWM3YTUzZWJlNjQ5YzU2Li5h
NTFlZGJjNGQ4YzUyOTBlODU5ZjJhNDA3MmRkZmU2MjkzZDFjNGYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3F0L2RlY2xhcmF0aXZlL3BsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9x
dC9kZWNsYXJhdGl2ZS9wbHVnaW4uY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAicWRl
c2t0b3B3ZWJ2aWV3LmgiCiAjaW5jbHVkZSAicXRvdWNod2VicGFnZS5oIgogI2luY2x1ZGUgInF0
b3VjaHdlYnZpZXcuaCIKKyNpbmNsdWRlICJxd2ViZG93bmxvYWRpdGVtLmgiCiAjaW5jbHVkZSAi
cXdlYm5hdmlnYXRpb25jb250cm9sbGVyLmgiCiAjaW5jbHVkZSAicXdlYnByZWZlcmVuY2VzLmgi
CiAKQEAgLTU1LDYgKzU2LDcgQEAgcHVibGljOgogICAgICAgICBxbWxSZWdpc3RlclVuY3JlYXRh
YmxlVHlwZTxRV2ViUHJlZmVyZW5jZXM+KHVyaSwgMywgMCwgIldlYlByZWZlcmVuY2VzIiwgUU9i
amVjdDo6dHIoIkNhbm5vdCBjcmVhdGUgc2VwYXJhdGUgaW5zdGFuY2Ugb2YgV2ViUHJlZmVyZW5j
ZXMiKSk7CiAgICAgICAgIHFtbFJlZ2lzdGVyVW5jcmVhdGFibGVUeXBlPFFUb3VjaFdlYlBhZ2U+
KHVyaSwgMywgMCwgIlRvdWNoV2ViUGFnZSIsIFFPYmplY3Q6OnRyKCJDYW5ub3QgY3JlYXRlIHNl
cGFyYXRlIGluc3RhbmNlIG9mIFRvdWNoV2ViUGFnZSwgdXNlIFRvdWNoV2ViVmlldyIpKTsKICAg
ICAgICAgcW1sUmVnaXN0ZXJVbmNyZWF0YWJsZVR5cGU8UU5ldHdvcmtSZXBseT4odXJpLCAzLCAw
LCAiTmV0d29ya1JlcGx5IiwgUU9iamVjdDo6dHIoIkNhbm5vdCBjcmVhdGUgc2VwYXJhdGUgaW5z
dGFuY2Ugb2YgTmV0d29ya1JlcGx5IikpOworICAgICAgICBxbWxSZWdpc3RlclVuY3JlYXRhYmxl
VHlwZTxRV2ViRG93bmxvYWRJdGVtPih1cmksIDUsIDAsICJEb3dubG9hZEl0ZW0iLCBRT2JqZWN0
Ojp0cigiQ2Fubm90IGNyZWF0ZSBzZXBhcmF0ZSBpbnN0YW5jZSBvZiBEb3dubG9hZEl0ZW0iKSk7
CiAjZW5kaWYKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0
L1dlYkNvcmVBcmd1bWVudENvZGVyc1F0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNRdC5jcHAKaW5kZXggMWZjMTVjNTk2ZjZmY2Y3ZDlmOGQzM2Zk
ZWViMzNjMWVlZTI4NmE3Yi4uOTUwZDM3MmQyZGRjN2U0NmY4MDc3ODM5NTBlMGMyODc2ZTM3ZGI0
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1dlYkNvcmVBcmd1bWVudENv
ZGVyc1F0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzUXQuY3BwCkBAIC02MSw2ICs2MSw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJj
ZVJlc3BvbnNlPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgUmVzCiAg
ICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNlUmVzcG9uc2UubWltZVR5cGUoKSk7CiAgICAgZW5j
b2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PGludDY0X3Q+KHJlc291cmNlUmVzcG9uc2UuZXhwZWN0
ZWRDb250ZW50TGVuZ3RoKCkpKTsKICAgICBlbmNvZGVyLT5lbmNvZGUocmVzb3VyY2VSZXNwb25z
ZS50ZXh0RW5jb2RpbmdOYW1lKCkpOworICAgIGVuY29kZXItPmVuY29kZShyZXNvdXJjZVJlc3Bv
bnNlLnN1Z2dlc3RlZEZpbGVuYW1lKCkpOwogfQogCiBib29sIEFyZ3VtZW50Q29kZXI8UmVzb3Vy
Y2VSZXNwb25zZT46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlUmVz
cG9uc2UmIHJlc291cmNlUmVzcG9uc2UpCkBAIC04Nyw2ICs4OCwxMSBAQCBib29sIEFyZ3VtZW50
Q29kZXI8UmVzb3VyY2VSZXNwb25zZT46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIs
IFJlc291cmNlUgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmVzcG9uc2Uuc2V0VGV4dEVu
Y29kaW5nTmFtZSh0ZXh0RW5jb2RpbmdOYW1lKTsKIAorICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxl
bmFtZTsKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShzdWdnZXN0ZWRGaWxlbmFtZSkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICByZXNwb25zZS5zZXRTdWdnZXN0ZWRGaWxlbmFtZShzdWdn
ZXN0ZWRGaWxlbmFtZSk7CisKICAgICByZXNvdXJjZVJlc3BvbnNlID0gcmVzcG9uc2U7CiAgICAg
cmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L1dLVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9XS1ZpZXcuaApp
bmRleCAzMWY2NzI2ZjkzNmM2YzdjMjMxYzRlNmE3NWY1MWFmMzBiMjA2NjZhLi44MmRlYTQ3ZjVm
NmI5Yzg0NzEwYmVjNmI2MDc3NDNjZmZmODIwYTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L1dLVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvV0tWaWV3LmgKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlIDxXZWJLaXQyL3Fk
ZXNrdG9wd2Vidmlldy5oPgogI2luY2x1ZGUgPFdlYktpdDIvcXRvdWNod2Vidmlldy5oPgogI2lu
Y2x1ZGUgPFdlYktpdDIvcXRvdWNod2VicGFnZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvcXdlYmRv
d25sb2FkaXRlbS5oPgogI2luY2x1ZGUgPFdlYktpdDIvcXdlYm5hdmlnYXRpb25jb250cm9sbGVy
Lmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9xd2VicHJlZmVyZW5jZXMuaD4KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xYmFzZXdlYnZpZXcuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWJhc2V3ZWJ2aWV3LmgKaW5kZXggMmFkOTAyOTRhYzI5
YWRiMWMyZmQwNTRkY2M1YzE4ZGQ3ZmMyZWU0OC4uODQ0ODVmMWIwY2U3Nzg1Y2FmMmI1OTc3ZWRm
ZGY5NTRkODU0NjgxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xYmFzZXdlYnZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Fi
YXNld2Vidmlldy5oCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSA8UXREZWNsYXJhdGl2ZS9x
cXVpY2twYWludGVkaXRlbS5oPgogCiBjbGFzcyBRQmFzZVdlYlZpZXdQcml2YXRlOworY2xhc3Mg
UVdlYkRvd25sb2FkSXRlbTsKIGNsYXNzIFFXZWJOYXZpZ2F0aW9uQ29udHJvbGxlcjsKIGNsYXNz
IFFXZWJQcmVmZXJlbmNlczsKIApAQCAtNTIsNyArNTMsOCBAQCBwdWJsaWM6CiAgICAgZW51bSBF
cnJvclR5cGUgewogICAgICAgICBFbmdpbmVFcnJvciwKICAgICAgICAgTmV0d29ya0Vycm9yLAot
ICAgICAgICBIdHRwRXJyb3IKKyAgICAgICAgSHR0cEVycm9yLAorICAgICAgICBEb3dubG9hZEVy
cm9yCiAgICAgfTsKICAgICB2aXJ0dWFsIH5RQmFzZVdlYlZpZXcoKTsKIApAQCAtNzcsNiArNzks
NyBAQCBRX1NJR05BTFM6CiAgICAgdm9pZCBsb2FkRmFpbGVkKFFCYXNlV2ViVmlldzo6RXJyb3JU
eXBlIGVycm9yVHlwZSwgaW50IGVycm9yQ29kZSwgY29uc3QgUVVybCYgdXJsKTsKICAgICB2b2lk
IGxvYWRQcm9ncmVzc0NoYW5nZWQoaW50IHByb2dyZXNzKTsKICAgICB2b2lkIHVybENoYW5nZWQo
Y29uc3QgUVVybCYgdXJsKTsKKyAgICB2b2lkIGRvd25sb2FkUmVxdWVzdGVkKFFXZWJEb3dubG9h
ZEl0ZW0qIGRvd25sb2FkSXRlbSk7CiAKIHByb3RlY3RlZDoKICAgICBRQmFzZVdlYlZpZXcoUUJh
c2VXZWJWaWV3UHJpdmF0ZSAmZGQsIFFRdWlja0l0ZW0gKnBhcmVudCA9IDApOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwCmluZGV4
IDhiMDg1NWMwMzFhOTUxMDM1ZWYzNzI4NzVkNWE2NjFlNmRiYTZjYTQuLjgwOWE1OTE1OGM2ZjAz
NzYyZDViNTZjMGFjZTAyZTBlYjcyZjFhZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHAKQEAgLTI1LDExICsyNSwxMyBAQAog
I2luY2x1ZGUgIlF0V2ViRXJyb3IuaCIKICNpbmNsdWRlICJVdGlsc1F0LmgiCiAjaW5jbHVkZSAi
cWRlc2t0b3B3ZWJ2aWV3X3AuaCIKKyNpbmNsdWRlICJxd2ViZG93bmxvYWRpdGVtLmgiCiAjaW5j
bHVkZSA8UUZpbGVEaWFsb2c+CiAjaW5jbHVkZSA8UXREZWNsYXJhdGl2ZS9xZGVjbGFyYXRpdmVl
bmdpbmUuaD4KICNpbmNsdWRlIDxRdERlY2xhcmF0aXZlL3FxdWlja2NhbnZhcy5oPgogI2luY2x1
ZGUgPFF0RGVjbGFyYXRpdmUvcXF1aWNrdmlldy5oPgogI2luY2x1ZGUgPFF0R3VpL1FDdXJzb3I+
CisjaW5jbHVkZSA8UXRHdWkvUURlc2t0b3BTZXJ2aWNlcz4KICNpbmNsdWRlIDxRdEd1aS9RRHJh
Zz4KICNpbmNsdWRlIDxRdEd1aS9RRm9jdXNFdmVudD4KICNpbmNsdWRlIDxRdEd1aS9RR3VpQXBw
bGljYXRpb24+CkBAIC00OTcsNiArNDk5LDE3IEBAIHZvaWQgUURlc2t0b3BXZWJWaWV3UHJpdmF0
ZTo6ZGlkTW91c2VNb3ZlT3ZlckVsZW1lbnQoY29uc3QgUVVybCYgbGlua1VSTCwgY29uc3QKICAg
ICBlbWl0IHEtPmxpbmtIb3ZlcmVkKGxhc3RIb3ZlcmVkVVJMLCBsYXN0SG92ZXJlZFRpdGxlKTsK
IH0KIAordm9pZCBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpkb3dubG9hZFJlcXVlc3RlZChRV2Vi
RG93bmxvYWRJdGVtKiBkb3dubG9hZEl0ZW0pCit7CisgICAgaWYgKCFkb3dubG9hZEl0ZW0pCisg
ICAgICAgIHJldHVybjsKKworICAgIFFfUShRRGVza3RvcFdlYlZpZXcpOworCisgICAgUURlY2xh
cmF0aXZlRW5naW5lOjpzZXRPYmplY3RPd25lcnNoaXAoZG93bmxvYWRJdGVtLCBRRGVjbGFyYXRp
dmVFbmdpbmU6OkphdmFTY3JpcHRPd25lcnNoaXApOworICAgIGVtaXQgcS0+ZG93bmxvYWRSZXF1
ZXN0ZWQoZG93bmxvYWRJdGVtKTsKK30KKwogc3RhdGljIFF0UG9saWN5SW50ZXJmYWNlOjpQb2xp
Y3lBY3Rpb24gdG9Qb2xpY3lBY3Rpb24oUURlc2t0b3BXZWJWaWV3OjpOYXZpZ2F0aW9uUG9saWN5
IHBvbGljeSkKIHsKICAgICBzd2l0Y2ggKHBvbGljeSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXdfcC5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXdfcC5oCmluZGV4IGNiZjkzZDYxZGIw
MTFmNTY3MjdlNDY3MzM5NjQ0MmQwNTVkZmE3MDAuLjI1MmU2YzMwNDc1YzM4YzkzYjZjNjllNTA4
Yjk1M2RhMWVhMWNiZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcWRlc2t0b3B3ZWJ2aWV3X3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3FkZXNrdG9wd2Vidmlld19wLmgKQEAgLTg0LDYgKzg0LDcgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIFFKU0VuZ2luZSogZW5naW5lKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgY2hvb3NlRmls
ZXMoV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiwgY29uc3QgUVN0cmluZ0xpc3QmIHNlbGVj
dGVkRmlsZU5hbWVzLCBRdFZpZXdJbnRlcmZhY2U6OkZpbGVDaG9vc2VyVHlwZSk7CisgICAgdmly
dHVhbCB2b2lkIGRvd25sb2FkUmVxdWVzdGVkKFFXZWJEb3dubG9hZEl0ZW0qIGRvd25sb2FkSXRl
bSk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkTW91c2VNb3ZlT3ZlckVsZW1lbnQoY29uc3QgUVVy
bCYsIGNvbnN0IFFTdHJpbmcmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9xd2ViZG93bmxvYWRpdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXdlYmRvd25sb2FkaXRlbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjU5MGI3NDhjZDA4OTM1
MzI1ZGQ1MDQ4NWZiZTc4ZDU4OTM5MTk0NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYmRvd25sb2FkaXRlbS5jcHAKQEAgLTAsMCArMSw5NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRz
IHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJxd2Vi
ZG93bmxvYWRpdGVtLmgiCisKKyNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCisjaW5jbHVkZSAi
cXdlYmRvd25sb2FkaXRlbV9wLmgiCisKK1FXZWJEb3dubG9hZEl0ZW1Qcml2YXRlOjpRV2ViRG93
bmxvYWRJdGVtUHJpdmF0ZShRV2ViRG93bmxvYWRJdGVtKiBxcSkKKyAgICA6IHEocXEpCisgICAg
LCBkb3dubG9hZFByb3h5KDApCisgICAgLCBleHBlY3RlZENvbnRlbnRMZW5ndGgoMCkKKyAgICAs
IHRvdGFsQnl0ZXNSZWNlaXZlZCgwKQoreworfQorCitRV2ViRG93bmxvYWRJdGVtOjpRV2ViRG93
bmxvYWRJdGVtKFFPYmplY3QqIHBhcmVudCkKKyAgICA6IFFPYmplY3QocGFyZW50KQorICAgICwg
ZChuZXcgUVdlYkRvd25sb2FkSXRlbVByaXZhdGUodGhpcykpCit7Cit9CisKK1FXZWJEb3dubG9h
ZEl0ZW06On5RV2ViRG93bmxvYWRJdGVtKCkKK3sKKyAgICBkZWxldGUgZDsKK30KKworUVVybCBR
V2ViRG93bmxvYWRJdGVtOjp1cmwoKSBjb25zdAoreworICAgIHJldHVybiBkLT5zb3VyY2VVcmw7
Cit9CisKK1FTdHJpbmcgUVdlYkRvd25sb2FkSXRlbTo6ZGVzdGluYXRpb25QYXRoKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gZC0+ZGVzdGluYXRpb25QYXRoOworfQorCit2b2lkIFFXZWJEb3dubG9h
ZEl0ZW06OnNldERlc3RpbmF0aW9uUGF0aChjb25zdCBRU3RyaW5nJiBkZXN0aW5hdGlvbikKK3sK
KyAgICBkLT5kZXN0aW5hdGlvblBhdGggPSBkZXN0aW5hdGlvbjsKK30KKworUVN0cmluZyBRV2Vi
RG93bmxvYWRJdGVtOjpzdWdnZXN0ZWRGaWxlbmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQt
PnN1Z2dlc3RlZEZpbGVuYW1lOworfQorCitRU3RyaW5nIFFXZWJEb3dubG9hZEl0ZW06Om1pbWVU
eXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZC0+bWltZVR5cGU7Cit9CisKK3F1aW50NjQgUVdl
YkRvd25sb2FkSXRlbTo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gZC0+ZXhwZWN0ZWRDb250ZW50TGVuZ3RoOworfQorCitxdWludDY0IFFXZWJEb3dubG9hZEl0
ZW06OnRvdGFsQnl0ZXNSZWNlaXZlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPnRvdGFsQnl0
ZXNSZWNlaXZlZDsKK30KKwordm9pZCBRV2ViRG93bmxvYWRJdGVtOjpjYW5jZWwoKQoreworICAg
IEFTU0VSVChkLT5kb3dubG9hZFByb3h5KTsKKyAgICBkLT5kb3dubG9hZFByb3h5LT5jYW5jZWwo
KTsKK30KKwordm9pZCBRV2ViRG93bmxvYWRJdGVtOjpzdGFydCgpCit7CisgICAgQVNTRVJUKCFk
LT5zdWdnZXN0ZWRGaWxlbmFtZS5pc0VtcHR5KCkpOworCisgICAgaWYgKGQtPmRlc3RpbmF0aW9u
UGF0aC5pc0VtcHR5KCkpCisgICAgICAgIGQtPmRlc3RpbmF0aW9uUGF0aCA9IGQtPnN1Z2dlc3Rl
ZEZpbGVuYW1lOworCisgICAgZC0+ZG93bmxvYWRQcm94eS0+c3RhcnRUcmFuc2ZlcihkLT5kZXN0
aW5hdGlvblBhdGgpOworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3F3ZWJkb3dubG9hZGl0ZW0uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcXdlYmRvd25sb2FkaXRlbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0NGM1YjA4MzgyYmJlOGJhY2EzOTIy
NGFmZjlmZDg1ZDBkNTY4ODYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3F3ZWJkb3dubG9hZGl0ZW0uaApAQCAtMCwwICsxLDg2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFy
eSgtaWVzKQorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBU
aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxv
bmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyAqCisgKi8KKworI2lmbmRlZiBxd2ViZG93bmxvYWRpdGVtX2gKKyNkZWZpbmUgcXdlYmRvd25s
b2FkaXRlbV9oCisKKyNpbmNsdWRlICJxd2Via2l0Z2xvYmFsLmgiCisjaW5jbHVkZSA8UU9iamVj
dD4KKyNpbmNsdWRlIDxRVXJsPgorCitjbGFzcyBRV2ViRG93bmxvYWRJdGVtUHJpdmF0ZTsKK2Ns
YXNzIFF0V2ViRXJyb3I7CisKK1FUX0JFR0lOX05BTUVTUEFDRQorY2xhc3MgUVN0cmluZzsKK1FU
X0VORF9OQU1FU1BBQ0UKKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBRdERvd25sb2FkTWFu
YWdlcjsKK30KKworY2xhc3MgUVdFQktJVF9FWFBPUlQgUVdlYkRvd25sb2FkSXRlbSA6IHB1Ymxp
YyBRT2JqZWN0IHsKKyAgICBRX09CSkVDVAorICAgIFFfUFJPUEVSVFkocXVpbnQ2NCBleHBlY3Rl
ZENvbnRlbnRMZW5ndGggUkVBRCBleHBlY3RlZENvbnRlbnRMZW5ndGggQ09OU1RBTlQgRklOQUwp
CisgICAgUV9QUk9QRVJUWShRU3RyaW5nIGRlc3RpbmF0aW9uUGF0aCBSRUFEIGRlc3RpbmF0aW9u
UGF0aCBXUklURSBzZXREZXN0aW5hdGlvblBhdGgpCisgICAgUV9QUk9QRVJUWShRU3RyaW5nIHN1
Z2dlc3RlZEZpbGVuYW1lIFJFQUQgc3VnZ2VzdGVkRmlsZW5hbWUgQ09OU1RBTlQgRklOQUwpCisg
ICAgUV9QUk9QRVJUWShxdWludDY0IHRvdGFsQnl0ZXNSZWNlaXZlZCBSRUFEIHRvdGFsQnl0ZXNS
ZWNlaXZlZCBOT1RJRlkgdG90YWxCeXRlc1JlY2VpdmVkQ2hhbmdlZCBGSU5BTCkKKyAgICBRX1BS
T1BFUlRZKFFVcmwgdXJsIFJFQUQgdXJsIENPTlNUQU5UIEZJTkFMKQorICAgIFFfRU5VTVMoRG93
bmxvYWRFcnJvcikKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5RV2ViRG93bmxvYWRJdGVtKCk7CisK
KyAgICBlbnVtIERvd25sb2FkRXJyb3IgeworICAgICAgICBBYm9ydGVkID0gMCwKKyAgICAgICAg
Q2Fubm90V3JpdGVUb0ZpbGUsCisgICAgICAgIENhbm5vdE9wZW5GaWxlLAorICAgICAgICBEZXN0
aW5hdGlvbkFscmVhZHlFeGlzdHMsCisgICAgICAgIENhbmNlbGxlZCwKKyAgICAgICAgQ2Fubm90
RGV0ZXJtaW5lRmlsZW5hbWUsCisgICAgICAgIE5ldHdvcmtGYWlsdXJlCisgICAgfTsKKworICAg
IFFVcmwgdXJsKCkgY29uc3Q7CisgICAgUVN0cmluZyBkZXN0aW5hdGlvblBhdGgoKSBjb25zdDsK
KyAgICBRU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3Q7CisgICAgUVN0cmluZyBtaW1l
VHlwZSgpIGNvbnN0OworICAgIHF1aW50NjQgZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgY29uc3Q7
CisgICAgcXVpbnQ2NCB0b3RhbEJ5dGVzUmVjZWl2ZWQoKSBjb25zdDsKKyAgICB2b2lkIHNldERl
c3RpbmF0aW9uUGF0aChjb25zdCBRU3RyaW5nJiBkZXN0aW5hdGlvbik7CisKK3B1YmxpYyBRX1NM
T1RTOgorICAgIHZvaWQgc3RhcnQoKTsKKyAgICB2b2lkIGNhbmNlbCgpOworCitRX1NJR05BTFM6
CisgICAgdm9pZCBkZXN0aW5hdGlvbkZpbGVDcmVhdGVkKGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0
aW9uUGF0aCk7CisgICAgdm9pZCB0b3RhbEJ5dGVzUmVjZWl2ZWRDaGFuZ2VkKHF1aW50NjQgYnl0
ZXNSZWNlaXZlZCk7CisgICAgdm9pZCBzdWNjZWVkZWQoKTsKKyAgICB2b2lkIGZhaWxlZChRV2Vi
RG93bmxvYWRJdGVtOjpEb3dubG9hZEVycm9yIGVycm9yLCBjb25zdCBRVXJsJiB1cmwsIGNvbnN0
IFFTdHJpbmcmIGRlc2NyaXB0aW9uKTsKKworcHJpdmF0ZToKKyAgICBRV2ViRG93bmxvYWRJdGVt
KFFPYmplY3QqIHBhcmVudCA9IDApOworICAgIFFXZWJEb3dubG9hZEl0ZW1Qcml2YXRlKiBkOwor
CisgICAgZnJpZW5kIGNsYXNzIFdlYktpdDo6UXREb3dubG9hZE1hbmFnZXI7CisgICAgZnJpZW5k
IGNsYXNzIFF0V2ViUGFnZVByb3h5OworfTsKKworI2VuZGlmIC8qIHF3ZWJkb3dubG9hZGl0ZW1f
aCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93
bmxvYWRpdGVtX3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYmRvd25s
b2FkaXRlbV9wLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmI4YzI1MmE3NzdkN2Q4MjRkYzkyODg5YWQ5MWFmZjJh
ZGFhMTBmZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcXdlYmRvd25sb2FkaXRlbV9wLmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAgICBDb3B5cmln
aHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMp
CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
Ki8KKworCisjaWZuZGVmIHF3ZWJkb3dubG9hZGl0ZW1fcF9oCisjZGVmaW5lIHF3ZWJkb3dubG9h
ZGl0ZW1fcF9oCisKKyNpbmNsdWRlICJxd2ViZG93bmxvYWRpdGVtLmgiCisjaW5jbHVkZSA8UVVy
bD4KKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBEb3dubG9hZFByb3h5OworfQorCitjbGFz
cyBRV2ViRG93bmxvYWRJdGVtUHJpdmF0ZSA6IHB1YmxpYyBRT2JqZWN0IHsKKyAgICBRX09CSkVD
VAorcHVibGljOgorICAgIFFXZWJEb3dubG9hZEl0ZW1Qcml2YXRlKFFXZWJEb3dubG9hZEl0ZW0q
KTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFFXZWJEb3dubG9hZEl0ZW0qIGRvd25s
b2FkKSB7IGVtaXQgcmVjZWl2ZWRSZXNwb25zZShkb3dubG9hZCk7IH0KKworICAgIFFXZWJEb3du
bG9hZEl0ZW0qIHE7CisKKyAgICBXZWJLaXQ6OkRvd25sb2FkUHJveHkqIGRvd25sb2FkUHJveHk7
CisKKyAgICBRVXJsIHNvdXJjZVVybDsKKyAgICBRU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lOwor
ICAgIFFTdHJpbmcgZGVzdGluYXRpb25QYXRoOworICAgIFFTdHJpbmcgbWltZVR5cGU7CisgICAg
cXVpbnQ2NCBleHBlY3RlZENvbnRlbnRMZW5ndGg7CisgICAgcXVpbnQ2NCB0b3RhbEJ5dGVzUmVj
ZWl2ZWQ7CisKK1FfU0lHTkFMUzoKKyAgICB2b2lkIHJlY2VpdmVkUmVzcG9uc2UoUVdlYkRvd25s
b2FkSXRlbSopOworfTsKKworI2VuZGlmIC8qIHF3ZWJkb3dubG9hZGl0ZW1fcF9oICovCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL0Rl
c2t0b3BXZWJWaWV3L3RzdF9kb3dubG9hZC5xbWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3Rlc3RzL3FtbHRlc3RzL0Rlc2t0b3BXZWJWaWV3L3RzdF9kb3dubG9hZC5xbWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZWI1Yzg1NWJjYTUwNzExYjVkZWMxNjY3ODlmNDBhOGRhODkzNTM5ZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVz
dHMvRGVza3RvcFdlYlZpZXcvdHN0X2Rvd25sb2FkLnFtbApAQCAtMCwwICsxLDc1IEBACitpbXBv
cnQgUXRRdWljayAyLjAKK2ltcG9ydCBRdFRlc3QgMS4wCitpbXBvcnQgUXRXZWJLaXQgMy4wCisK
K0Rlc2t0b3BXZWJWaWV3IHsKKyAgICBpZDogd2ViVmlldworICAgIHdpZHRoOiAyMDAKKyAgICBo
ZWlnaHQ6IDQwMAorCisgICAgcHJvcGVydHkgaW50IGV4cGVjdGVkTGVuZ3RoIDogMAorICAgIHBy
b3BlcnR5IGludCB0b3RhbEJ5dGVzIDogMAorCisgICAgU2lnbmFsU3B5IHsKKyAgICAgICAgaWQ6
IHNweQorICAgICAgICB0YXJnZXQ6IHdlYlZpZXcKKyAgICAgICAgc2lnbmFsTmFtZTogImRvd25s
b2FkUmVxdWVzdGVkIgorICAgIH0KKworICAgIG9uRG93bmxvYWRSZXF1ZXN0ZWQ6IHsKKyAgICAg
ICAgZG93bmxvYWQudGFyZ2V0ID0gZG93bmxvYWRJdGVtCisgICAgICAgIGV4cGVjdGVkTGVuZ3Ro
ID0gZG93bmxvYWRJdGVtLmV4cGVjdGVkQ29udGVudExlbmd0aAorICAgICAgICBkb3dubG9hZEl0
ZW0uZGVzdGluYXRpb25QYXRoID0gZG93bmxvYWRJdGVtLnN1Z2dlc3RlZEZpbGVuYW1lCisgICAg
ICAgIGRvd25sb2FkSXRlbS5zdGFydCgpCisgICAgfQorCisgICAgQ29ubmVjdGlvbnMgeworICAg
ICAgICBpZDogZG93bmxvYWQKKyAgICAgICAgaWdub3JlVW5rbm93blNpZ25hbHM6IHRydWUKKyAg
ICAgICAgb25TdWNjZWVkZWQ6IHsgdG90YWxCeXRlcyA9IGRvd25sb2FkLnRhcmdldC50b3RhbEJ5
dGVzUmVjZWl2ZWQgfQorICAgIH0KKworICAgIFNpZ25hbFNweSB7CisgICAgICAgIGlkOiBvdGhl
clNweQorICAgICAgICB0YXJnZXQ6IGRvd25sb2FkCisgICAgICAgIHNpZ25hbE5hbWU6ICJzdWNj
ZWVkZWQiCisgICAgfQorCisgICAgVGVzdENhc2UgeworICAgICAgICBuYW1lOiAiRGVza3RvcFdl
YlZpZXdEb3dubG9hZCIKKyAgICAgICAgd2hlbjogd2luZG93U2hvd24KKworICAgICAgICBmdW5j
dGlvbiB0ZXN0X2Rvd25sb2FkUmVxdWVzdCgpIHsKKyAgICAgICAgICAgIHNweS5jbGVhcigpCisg
ICAgICAgICAgICBjb21wYXJlKHNweS5jb3VudCwgMCkKKyAgICAgICAgICAgIHdlYlZpZXcubG9h
ZChRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL2Rvd25sb2FkLmh0bWwiKSkKKyAgICAgICAgICAg
IG1vdXNlQ2xpY2sod2ViVmlldywgMTAwLCAxMDAsIFF0LkxlZnRCdXR0b24pCisgICAgICAgICAg
ICBzcHkud2FpdCgpCisgICAgICAgICAgICBjb21wYXJlKHNweS5jb3VudCwgMSkKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHRlc3RfZXhwZWN0ZWRMZW5ndGgoKSB7CisgICAgICAgICAg
ICBzcHkuY2xlYXIoKQorICAgICAgICAgICAgY29tcGFyZShzcHkuY291bnQsIDApCisgICAgICAg
ICAgICB3ZWJWaWV3LmxvYWQoUXQucmVzb2x2ZWRVcmwoIi4uL2NvbW1vbi9kb3dubG9hZC5odG1s
IikpCisgICAgICAgICAgICBtb3VzZUNsaWNrKHdlYlZpZXcsIDEwMCwgMTAwLCBRdC5MZWZ0QnV0
dG9uKQorICAgICAgICAgICAgc3B5LndhaXQoKQorICAgICAgICAgICAgY29tcGFyZShzcHkuY291
bnQsIDEpCisgICAgICAgICAgICBjb21wYXJlKGV4cGVjdGVkTGVuZ3RoLCAzMjUpCisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiB0ZXN0X3N1Y2NlZWRlZCgpIHsKKyAgICAgICAgICAgIHNw
eS5jbGVhcigpCisgICAgICAgICAgICBjb21wYXJlKHNweS5jb3VudCwgMCkKKyAgICAgICAgICAg
IG90aGVyU3B5LmNsZWFyKCkKKyAgICAgICAgICAgIGNvbXBhcmUob3RoZXJTcHkuY291bnQsIDAp
CisgICAgICAgICAgICB3ZWJWaWV3LmxvYWQoUXQucmVzb2x2ZWRVcmwoIi4uL2NvbW1vbi9kb3du
bG9hZC5odG1sIikpCisgICAgICAgICAgICBtb3VzZUNsaWNrKHdlYlZpZXcsIDEwMCwgMTAwLCBR
dC5MZWZ0QnV0dG9uKQorICAgICAgICAgICAgc3B5LndhaXQoKQorICAgICAgICAgICAgY29tcGFy
ZShzcHkuY291bnQsIDEpCisgICAgICAgICAgICBvdGhlclNweS53YWl0KCkKKyAgICAgICAgICAg
IGNvbXBhcmUob3RoZXJTcHkuY291bnQsIDEpCisgICAgICAgICAgICBjb21wYXJlKHRvdGFsQnl0
ZXMsIGV4cGVjdGVkTGVuZ3RoKQorICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21tb24vZG93bmxv
YWQuaHRtbCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMv
Y29tbW9uL2Rvd25sb2FkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjA2ZmE0Y2E3NjNkN2E0ZmVhYzE4MTc0
MWJlNWM5Nzc2NDhmOTVmNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL2Rvd25sb2FkLmh0bWwKQEAgLTAsMCAr
MSw2IEBACis8aHRtbD4KKzxoZWFkPjx0aXRsZT5Eb3dubG9hZCBUZXN0IHBhZ2Ugd2l0aCBodWdl
IGxpbmsgYXJlYTwvdGl0bGU+PC9oZWFkPgorPGJvZHk+Cis8YSB0aXRsZT0iWmlwIGZpbGUiIGhy
ZWY9ImRvd25sb2FkLnppcCI+PGltZyB3aWR0aD0yMDAgaGVpZ2h0PTIwMD48L2E+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rl
c3RzL3FtbHRlc3RzL2NvbW1vbi9kb3dubG9hZC56aXAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1vbi9kb3dubG9hZC56aXAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YjU0NTYzNTFhNTUxNTU2MTM1Mzk2MTVhY2NlY2U5ZWUwMzBiN2Q0NApHSVQgYmluYXJ5IHBhdGNo
CmxpdGVyYWwgMzI1CnpjbVdJV1dAWnMjVXxgXjJ1IXN0X3w4VmRCcDxXPkdKUC0+cSRTfnlPQ254
M3ZtKmZ7RXJsO3k8bDtxfXdoSHhANAp6XlcyJXxDamBXJDcyRkpyRUg5V0Q3KzZ3KDhiYlNSYDNA
YGF3M2hvZFpvMSRWWVQrUkpQNERjNXhQflV6NiQmbSMKensrQGgwK2hNeFR3RU5aNV9PbWt8VF9D
fTtWbEM0cmskfHJedD9nZU9jej5Ifig8JWs7d3U4enlRKU1Ad3RXKXdrCnotNGc1a0wtcHNDe01m
NSpoT15JVEtrfkBrYEFuQW88Y29zRVE/PyR5clduaWQqaWpeMD02cHsyYFJkPENqKjhsZwp6cmtg
JEZsT00rUWJOUiVyJE4yLWk4SlhtbWFyc09GPXYpUXtNaiYzJjJ4NExKQ285Q0NYbnFYdldAUTZ1
VTxBVCYKS0Fia1ZHVkVfUjY+Mk0kYgoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9xbWx0ZXN0
cy5wcm8gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL3Ft
bHRlc3RzLnBybwppbmRleCA5NjAzNWRjYzI3MTk1YWQwODcxYWJkNDI4MzFiNjUyOWQ1NjYxZmI0
Li4xM2E2MWQzYTJhY2Q1YTI2ZGYwMjFlYmVjZTQ5NTZlNWQyYjcwM2NlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL3FtbHRlc3RzLnBy
bworKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL3Ft
bHRlc3RzLnBybwpAQCAtMTUsNiArMTUsNyBAQCBPVEhFUl9GSUxFUyArPSBcCiAgICAgRGVza3Rv
cFdlYlZpZXcvdHN0X2xvYWRQcm9ncmVzcy5xbWwgXAogICAgIERlc2t0b3BXZWJWaWV3L3RzdF9s
b2FkUHJvZ3Jlc3NTaWduYWwucW1sIFwKICAgICBEZXNrdG9wV2ViVmlldy90c3RfbGlua0hvdmVy
ZWQucW1sIFwKKyAgICBEZXNrdG9wV2ViVmlldy90c3RfZG93bmxvYWQucW1sIFwKICAgICBUb3Vj
aFdlYlZpZXcvdHN0X3Byb3BlcnRpZXMucW1sIFwKICAgICBUb3VjaFdlYlZpZXcvdHN0X2xvYWQu
cW1sIFwKICAgICBUb3VjaFdlYlZpZXcvdHN0X2xvYWRaZXJvU2l6ZVZpZXcucW1sIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3Bw
CmluZGV4IGM5M2E2ZGZiZTY5YmJlMzZlNmI5MjQ0OGYwNDdiYmJiZTdkOTJkNDIuLjI2YTUyMWYz
OWJjNzFlMjE0NTg3NzMyMTk2NGRkYzY3Mjc0MWIxNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcApAQCAtMTg3LDUgKzE4
NywxNiBAQCB2b2lkIERvd25sb2FkUHJveHk6OmRpZENhbmNlbChjb25zdCBDb3JlSVBDOjpEYXRh
UmVmZXJlbmNlJiByZXN1bWVEYXRhKQogICAgIG1fd2ViQ29udGV4dC0+ZG93bmxvYWRGaW5pc2hl
ZCh0aGlzKTsKIH0KIAorI2lmIFBMQVRGT1JNKFFUKQordm9pZCBEb3dubG9hZFByb3h5OjpzdGFy
dFRyYW5zZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCit7CisgICAgaWYgKCFtX3dlYkNvbnRl
eHQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJWE1FIChNdWx0aS1XZWJQcm9jZXNzKTog
RG93bmxvYWRzIHNob3VsZG4ndCBiZSBoYW5kbGVkIGluIHRoZSB3ZWIgcHJvY2Vzcy4KKyAgICBt
X3dlYkNvbnRleHQtPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U3Rh
cnRUcmFuc2ZlcihtX2Rvd25sb2FkSUQsIGZpbGVuYW1lKSk7Cit9CisjZW5kaWYKKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZFByb3h5LmgKaW5kZXggOTlkZGJlYzBjYmM0YmE4ZjZkOWY0MjFmOWRiNjg1
NTU4MjhiOTlkNS4uYzFlZGExZmQxOTA3Yzk5N2RiYTgzZmUzMGM0N2I1NjYyZTZmMzliOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5
LmgKQEAgLTQzLDYgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkNvbnRl
eHQ7CiBjbGFzcyBXZWJEYXRhOworY2xhc3MgV2ViUGFnZVByb3h5OwogCiBjbGFzcyBEb3dubG9h
ZFByb3h5IDogcHVibGljIEFQSU9iamVjdCB7CiBwdWJsaWM6CkBAIC02Myw2ICs2NCwxMCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlRG93bmxvYWRQcm94eU1lc3NhZ2UoQ29yZUlQQzo6
Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVy
Kik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY0Rvd25sb2FkUHJveHlNZXNzYWdlKENvcmVJUEM6
OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rl
ciosIE93blB0cjxDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI+Jik7CiAKKyNpZiBQTEFURk9STShR
VCkKKyAgICB2b2lkIHN0YXJ0VHJhbnNmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSk7CisjZW5k
aWYKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBEb3dubG9hZFByb3h5KFdlYkNvbnRleHQqKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggZjE5NDc4NzNhMDIxY2Fi
YTZkOGU0ZDcxYjA1ZjM4MjZmNWM4Mzc3Zi4uODIzZWRlMzA0ZjZmOTczZDYxZGM5NzBjNjhhZDM4
ZWVmMjAzMzE1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC00NCw2
ICs0NCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgc3RydWN0IFZpZXdwb3J0QXJndW1l
bnRzOwogfQogCisjaWYgUExBVEZPUk0oUVQpCitjbGFzcyBRdFdlYlBhZ2VQcm94eTsKKyNlbmRp
ZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgRHJhd2luZ0FyZWFQcm94eTsKQEAgLTEw
Myw2ICsxMDcsNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oUVQpCiAgICAgdmlydHVhbCB2b2lk
IGRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRGaW5kWm9vbWFibGVBcmVhKGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxl
RG93bmxvYWRSZXF1ZXN0KERvd25sb2FkUHJveHkqKSA9IDA7CiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKFFUKSB8fCBQTEFURk9STShHVEspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4
dC5jcHAKaW5kZXggZjQ1M2Q4YzNmZGExYmQ2OTQ1ZTgxN2IwZTZlZDlhZDYyZmExYTZmOS4uYjY0
NDg0NTlhMjUzODE0NmNhMzVmMmFkOGI0YzcwYTA3ZGE4NmZlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJDb250ZXh0LmNwcApAQCAtMzkyLDYgKzM5MiwxMSBAQCBEb3dubG9hZFByb3h5
KiBXZWJDb250ZXh0Ojpkb3dubG9hZChXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25z
dCBSZXNvdXJjZQogICAgIERvd25sb2FkUHJveHkqIGRvd25sb2FkID0gY3JlYXRlRG93bmxvYWRQ
cm94eSgpOwogICAgIHVpbnQ2NF90IGluaXRpYXRpbmdQYWdlSUQgPSBpbml0aWF0aW5nUGFnZSA/
IGluaXRpYXRpbmdQYWdlLT5wYWdlSUQoKSA6IDA7CiAKKyNpZiBQTEFURk9STShRVCkKKyAgICBB
U1NFUlQoaW5pdGlhdGluZ1BhZ2UpOyAvLyBPdXIgZGVzaWduIGRvZXMgbm90IHN1cHBwb3J0IGRv
d25sb2FkcyB3aXRob3V0IGEgV2ViUGFnZS4KKyAgICBpbml0aWF0aW5nUGFnZS0+aGFuZGxlRG93
bmxvYWRSZXF1ZXN0KGRvd25sb2FkKTsKKyNlbmRpZgorCiAgICAgcHJvY2VzcygpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzOjpEb3dubG9hZFJlcXVlc3QoZG93bmxvYWQtPmRvd25sb2FkSUQo
KSwgaW5pdGlhdGluZ1BhZ2VJRCwgcmVxdWVzdCksIDApOwogICAgIHJldHVybiBkb3dubG9hZDsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMTk0ZmQw
YmRlMmRlN2E4OGQyY2ViMzZmNDMxZGVmYjAyZDI3NDFmZi4uNjBhZGJjOGVmMWUwMDQ1Yzc5NTM2
MWYyOGExYmY0NjAyOTY1N2FiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKQEAgLTEwMTUsNyArMTAxNSwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2
ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9uLCBXZWJGcmFtZVByb3h5KiBmcgog
ICAgIHVpbnQ2NF90IGRvd25sb2FkSUQgPSAwOwogICAgIGlmIChhY3Rpb24gPT0gUG9saWN5RG93
bmxvYWQpIHsKICAgICAgICAgLy8gQ3JlYXRlIGEgZG93bmxvYWQgcHJveHkuCi0gICAgICAgIGRv
d25sb2FkSUQgPSBtX3Byb2Nlc3MtPmNvbnRleHQoKS0+Y3JlYXRlRG93bmxvYWRQcm94eSgpLT5k
b3dubG9hZElEKCk7CisgICAgICAgIERvd25sb2FkUHJveHkqIGRvd25sb2FkID0gbV9wcm9jZXNz
LT5jb250ZXh0KCktPmNyZWF0ZURvd25sb2FkUHJveHkoKTsKKyAgICAgICAgZG93bmxvYWRJRCA9
IGRvd25sb2FkLT5kb3dubG9hZElEKCk7CisjaWYgUExBVEZPUk0oUVQpCisgICAgICAgIC8vIE91
ciBkZXNpZ24gZG9lcyBub3Qgc3VwcHBvcnQgZG93bmxvYWRzIHdpdGhvdXQgYSBXZWJQYWdlLgor
ICAgICAgICBoYW5kbGVEb3dubG9hZFJlcXVlc3QoZG93bmxvYWQpOworI2VuZGlmCiAgICAgfQog
CiAgICAgLy8gSWYgd2UgcmVjZWl2ZWQgYSBwb2xpY3kgZGVjaXNpb24gd2hpbGUgaW4gZGVjaWRl
UG9saWN5Rm9yTUlNRVR5cGUgdGhlIGRlY2lzaW9uIHdpbGwgCkBAIC0yMjY2LDYgKzIyNzEsMTEg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmZpbmRab29tYWJsZUFyZWFGb3JQb2ludChjb25zdCBJbnRQ
b2ludCYgcG9pbnQpCiAKICAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZp
bmRab29tYWJsZUFyZWFGb3JQb2ludChwb2ludCksIG1fcGFnZUlEKTsKIH0KKwordm9pZCBXZWJQ
YWdlUHJveHk6OmhhbmRsZURvd25sb2FkUmVxdWVzdChEb3dubG9hZFByb3h5KiBkb3dubG9hZCkK
K3sKKyAgICBtX3BhZ2VDbGllbnQtPmhhbmRsZURvd25sb2FkUmVxdWVzdChkb3dubG9hZCk7Cit9
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNDAzMTJhYTZhYjM0Y2IzNDRmYWVkZDZmZDEyOTE3MjA1
ZWYwMThhNi4uNzljN2MyNmIwNzVhYWVlYjhhMjhmYWViNGVlMzhlMDJhNjZiZGVjMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNTIxLDYgKzUyMSw3IEBAIHB1
YmxpYzoKIAogI2lmIFBMQVRGT1JNKFFUKQogICAgIHZvaWQgZmluZFpvb21hYmxlQXJlYUZvclBv
aW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CisgICAgdm9pZCBoYW5kbGVEb3dubG9hZFJl
cXVlc3QoRG93bmxvYWRQcm94eSopOwogI2VuZGlmCiAKICAgICB2b2lkIGFkdmFuY2VUb05leHRN
aXNzcGVsbGluZyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdERvd25sb2FkTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXREb3dubG9hZE1hbmFnZXIuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjNmOTdmYzYzYzRjYjExYzc4NWM2MzgyMjQ3YzVlM2Y1MTgzMzUyMmIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXREb3dubG9hZE1hbmFnZXIuY3BwCkBA
IC0wLDAgKzEsMTQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExIE5va2lhIENv
cnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlF0RG93bmxvYWRNYW5hZ2VyLmgiCisKKyNpbmNsdWRlICJDbGllbnRJ
bXBsLmgiCisjaW5jbHVkZSAiRG93bmxvYWRQcm94eS5oIgorI2luY2x1ZGUgIlF0V2ViRXJyb3Iu
aCIKKyNpbmNsdWRlICJXS1N0cmluZ1F0LmgiCisjaW5jbHVkZSAiV0tVUkxRdC5oIgorI2luY2x1
ZGUgIldlYkNvbnRleHQuaCIKKyNpbmNsdWRlICJxd2ViZG93bmxvYWRpdGVtLmgiCisjaW5jbHVk
ZSAicXdlYmRvd25sb2FkaXRlbV9wLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMg
aW5saW5lIFF0RG93bmxvYWRNYW5hZ2VyKiB0b1F0RG93bmxvYWRNYW5hZ2VyKGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pCit7CisgICAgQVNTRVJUKGNsaWVudEluZm8pOworICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PFF0RG93bmxvYWRNYW5hZ2VyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50
SW5mbykpOworfQorCitzdGF0aWMgdm9pZCBxdF93a19kaWRSZWNlaXZlUmVzcG9uc2UoV0tDb250
ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLVVJMUmVzcG9uc2VSZWYg
cmVzcG9uc2UsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCit7CisgICAgdG9RdERvd25sb2FkTWFu
YWdlcihjbGllbnRJbmZvKS0+ZG93bmxvYWRSZWNlaXZlZFJlc3BvbnNlKHRvSW1wbChkb3dubG9h
ZCksIHRvSW1wbChyZXNwb25zZSktPnJlc291cmNlUmVzcG9uc2UoKSk7Cit9CisKK3N0YXRpYyB2
b2lkIHF0X3drX2RpZENyZWF0ZURlc3RpbmF0aW9uKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rv
d25sb2FkUmVmIGRvd25sb2FkLCBXS1N0cmluZ1JlZiBwYXRoLCBjb25zdCB2b2lkICpjbGllbnRJ
bmZvKQoreworICAgIHRvUXREb3dubG9hZE1hbmFnZXIoY2xpZW50SW5mbyktPmRvd25sb2FkQ3Jl
YXRlZERlc3RpbmF0aW9uKHRvSW1wbChkb3dubG9hZCksIFdLU3RyaW5nQ29weVFTdHJpbmcocGF0
aCkpOworfQorCitzdGF0aWMgdm9pZCBxdF93a19kaWRGaW5pc2hEb3dubG9hZChXS0NvbnRleHRS
ZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCAqY2xpZW50SW5m
bykKK3sKKyAgICB0b1F0RG93bmxvYWRNYW5hZ2VyKGNsaWVudEluZm8pLT5kb3dubG9hZEZpbmlz
aGVkKHRvSW1wbChkb3dubG9hZCkpOworfQorCitzdGF0aWMgdm9pZCBxdF93a19kaWRGYWlsRG93
bmxvYWQoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLRXJy
b3JSZWYgZXJyb3IsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCit7CisgICAgUVVybCBmYWlsaW5n
VXJsID0gV0tVUkxDb3B5UVVybChXS0Vycm9yQ29weUZhaWxpbmdVUkwoZXJyb3IpKTsKKworICAg
IHRvUXREb3dubG9hZE1hbmFnZXIoY2xpZW50SW5mbyktPmRvd25sb2FkRmFpbGVkKHRvSW1wbChk
b3dubG9hZCksIFF0V2ViRXJyb3IoZXJyb3IpKTsKK30KKworc3RhdGljIHZvaWQgcXRfd2tfZGlk
UmVjZWl2ZURhdGFGb3JEb3dubG9hZChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJl
ZiBkb3dubG9hZCwgdWludDY0X3QgbGVuZ3RoLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQorewor
ICAgIHRvUXREb3dubG9hZE1hbmFnZXIoY2xpZW50SW5mbyktPmRvd25sb2FkRGF0YVJlY2VpdmVk
KHRvSW1wbChkb3dubG9hZCksIGxlbmd0aCk7Cit9CisKK1F0RG93bmxvYWRNYW5hZ2VyOjpRdERv
d25sb2FkTWFuYWdlcigpCit7Cit9CisKK1F0RG93bmxvYWRNYW5hZ2VyOjp+UXREb3dubG9hZE1h
bmFnZXIoKQoreworfQorCitQYXNzUmVmUHRyPFF0RG93bmxvYWRNYW5hZ2VyPiBRdERvd25sb2Fk
TWFuYWdlcjo6Y3JlYXRlKFdlYkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgUXREb3dubG9hZE1h
bmFnZXIqIG1hbmFnZXIgPSBuZXcgUXREb3dubG9hZE1hbmFnZXIoKTsKKworICAgIFdLQ29udGV4
dERvd25sb2FkQ2xpZW50IGRvd25sb2FkQ2xpZW50OworICAgIG1lbXNldCgmZG93bmxvYWRDbGll
bnQsIDAsIHNpemVvZihXS0NvbnRleHREb3dubG9hZENsaWVudCkpOworICAgIGRvd25sb2FkQ2xp
ZW50LnZlcnNpb24gPSBrV0tDb250ZXh0RG93bmxvYWRDbGllbnRDdXJyZW50VmVyc2lvbjsKKyAg
ICBkb3dubG9hZENsaWVudC5jbGllbnRJbmZvID0gbWFuYWdlcjsKKyAgICBkb3dubG9hZENsaWVu
dC5kaWRSZWNlaXZlUmVzcG9uc2UgPSBxdF93a19kaWRSZWNlaXZlUmVzcG9uc2U7CisgICAgZG93
bmxvYWRDbGllbnQuZGlkUmVjZWl2ZURhdGEgPSBxdF93a19kaWRSZWNlaXZlRGF0YUZvckRvd25s
b2FkOworICAgIGRvd25sb2FkQ2xpZW50LmRpZENyZWF0ZURlc3RpbmF0aW9uID0gcXRfd2tfZGlk
Q3JlYXRlRGVzdGluYXRpb247CisgICAgZG93bmxvYWRDbGllbnQuZGlkRmluaXNoID0gcXRfd2tf
ZGlkRmluaXNoRG93bmxvYWQ7CisgICAgZG93bmxvYWRDbGllbnQuZGlkRmFpbCA9IHF0X3drX2Rp
ZEZhaWxEb3dubG9hZDsKKyAgICBXS0NvbnRleHRTZXREb3dubG9hZENsaWVudCh0b0FQSShjb250
ZXh0KSwgJmRvd25sb2FkQ2xpZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobWFuYWdlcik7Cit9
CisKK3ZvaWQgUXREb3dubG9hZE1hbmFnZXI6OmRvd25sb2FkUmVjZWl2ZWRSZXNwb25zZShEb3du
bG9hZFByb3h5KiBkb3dubG9hZCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCit7CisgICAgLy8gV2lsbCBiZSBjYWxsZWQgd2hlbiB0aGUgaGVhZGVycyBhcmUgcmVh
ZCBieSBXZWJQcm9jZXNzLgorICAgIFFXZWJEb3dubG9hZEl0ZW0qIGRvd25sb2FkSXRlbSA9IG1f
ZG93bmxvYWRzLnZhbHVlKGRvd25sb2FkLT5kb3dubG9hZElEKCkpOworICAgIEFTU0VSVChkb3du
bG9hZEl0ZW0pOworCisgICAgZG93bmxvYWRJdGVtLT5kLT5zb3VyY2VVcmwgPSByZXNwb25zZS51
cmwoKTsKKyAgICBkb3dubG9hZEl0ZW0tPmQtPm1pbWVUeXBlID0gcmVzcG9uc2UubWltZVR5cGUo
KTsKKyAgICBkb3dubG9hZEl0ZW0tPmQtPmV4cGVjdGVkQ29udGVudExlbmd0aCA9IHJlc3BvbnNl
LmV4cGVjdGVkQ29udGVudExlbmd0aCgpOworICAgIGRvd25sb2FkSXRlbS0+ZC0+c3VnZ2VzdGVk
RmlsZW5hbWUgPSByZXNwb25zZS5zdWdnZXN0ZWRGaWxlbmFtZSgpOworCisgICAgZG93bmxvYWRJ
dGVtLT5kLT5kaWRSZWNlaXZlUmVzcG9uc2UoZG93bmxvYWRJdGVtKTsKK30KKwordm9pZCBRdERv
d25sb2FkTWFuYWdlcjo6ZG93bmxvYWRDcmVhdGVkRGVzdGluYXRpb24oRG93bmxvYWRQcm94eSog
ZG93bmxvYWQsIGNvbnN0IFFTdHJpbmcmIHBhdGgpCit7CisgICAgUVdlYkRvd25sb2FkSXRlbSog
ZG93bmxvYWRJdGVtID0gbV9kb3dubG9hZHMudmFsdWUoZG93bmxvYWQtPmRvd25sb2FkSUQoKSk7
CisgICAgQVNTRVJUKGRvd25sb2FkSXRlbSk7CisgICAgZG93bmxvYWRJdGVtLT5kLT5kZXN0aW5h
dGlvblBhdGggPSBwYXRoOworICAgIGVtaXQgZG93bmxvYWRJdGVtLT5kZXN0aW5hdGlvbkZpbGVD
cmVhdGVkKGRvd25sb2FkSXRlbS0+ZC0+ZGVzdGluYXRpb25QYXRoKTsKK30KKwordm9pZCBRdERv
d25sb2FkTWFuYWdlcjo6ZG93bmxvYWRGaW5pc2hlZChEb3dubG9hZFByb3h5KiBkb3dubG9hZCkK
K3sKKyAgICAvLyBXaWxsIGJlIGNhbGxlZCB3aGVuIGRvd25sb2FkIGZpbmlzaGVzIHdpdGggc3Vj
Y2Vzcy4KKyAgICBRV2ViRG93bmxvYWRJdGVtKiBkb3dubG9hZEl0ZW0gPSBtX2Rvd25sb2Fkcy50
YWtlKGRvd25sb2FkLT5kb3dubG9hZElEKCkpOworICAgIEFTU0VSVChkb3dubG9hZEl0ZW0pOwor
ICAgIGVtaXQgZG93bmxvYWRJdGVtLT5zdWNjZWVkZWQoKTsKK30KKwordm9pZCBRdERvd25sb2Fk
TWFuYWdlcjo6ZG93bmxvYWRGYWlsZWQoRG93bmxvYWRQcm94eSogZG93bmxvYWQsIGNvbnN0IFF0
V2ViRXJyb3ImIGVycm9yKQoreworICAgIC8vIFdpbGwgYmUgY2FsbGVkIHdoZW4gZG93bmxvYWQg
ZmFpbHMgb3IgaXMgYWJvcnRlZC4KKyAgICBRV2ViRG93bmxvYWRJdGVtKiBkb3dubG9hZEl0ZW0g
PSBtX2Rvd25sb2Fkcy50YWtlKGRvd25sb2FkLT5kb3dubG9hZElEKCkpOworICAgIEFTU0VSVChk
b3dubG9hZEl0ZW0pOworICAgIGVtaXQgZG93bmxvYWRJdGVtLT5mYWlsZWQoZXJyb3IuZXJyb3JD
b2RlQXNEb3dubG9hZEVycm9yKCksIGVycm9yLnVybCgpLCBlcnJvci5kZXNjcmlwdGlvbigpKTsK
K30KKwordm9pZCBRdERvd25sb2FkTWFuYWdlcjo6ZG93bmxvYWREYXRhUmVjZWl2ZWQoRG93bmxv
YWRQcm94eSogZG93bmxvYWQsIHVpbnQ2NF90IGxlbmd0aCkKK3sKKyAgICAvLyBXaWxsIGJlIGNh
bGxlZCBldmVyeXRpbWUgYnl0ZXMgd2VyZSB3cml0dGVuIHRvIGRlc3RpbmF0aW9uIGZpbGUgYnkg
V2ViUHJvY2Vzcy4KKyAgICBRV2ViRG93bmxvYWRJdGVtKiBkb3dubG9hZEl0ZW0gPSBtX2Rvd25s
b2Fkcy52YWx1ZShkb3dubG9hZC0+ZG93bmxvYWRJRCgpKTsKKyAgICBBU1NFUlQoZG93bmxvYWRJ
dGVtKTsKKyAgICBkb3dubG9hZEl0ZW0tPmQtPnRvdGFsQnl0ZXNSZWNlaXZlZCArPSBsZW5ndGg7
CisgICAgZW1pdCBkb3dubG9hZEl0ZW0tPnRvdGFsQnl0ZXNSZWNlaXZlZENoYW5nZWQobGVuZ3Ro
KTsKK30KKwordm9pZCBRdERvd25sb2FkTWFuYWdlcjo6YWRkRG93bmxvYWQoRG93bmxvYWRQcm94
eSogZG93bmxvYWQsIFFXZWJEb3dubG9hZEl0ZW0qIGRvd25sb2FkSXRlbSkKK3sKKyAgICBtX2Rv
d25sb2Fkc1tkb3dubG9hZC0+ZG93bmxvYWRJRCgpXSA9IGRvd25sb2FkSXRlbTsKK30KKworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0RG93bmxvYWRNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXREb3dubG9hZE1hbmFnZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wYmY3MjE2ZDQxNjg5YTYwMmEwMzczZTRiNzkxNGJhOTNkN2MyZTc4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0RG93bmxvYWRNYW5hZ2Vy
LmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSBOb2tp
YSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgUXRE
b3dubG9hZE1hbmFnZXJfaAorI2RlZmluZSBRdERvd25sb2FkTWFuYWdlcl9oCisKKyNpbmNsdWRl
IDxRTWFwPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KKworY2xhc3MgUXRXZWJFcnJvcjsKK2NsYXNzIFFXZWJEb3dubG9hZEl0ZW07CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFJlc291cmNlUmVzcG9uc2U7Cit9CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBEb3dubG9hZFByb3h5OworY2xhc3MgV2ViQ29udGV4dDsK
KworY2xhc3MgUXREb3dubG9hZE1hbmFnZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxRdERvd25sb2Fk
TWFuYWdlcj4geworcHVibGljOgorICAgIH5RdERvd25sb2FkTWFuYWdlcigpOworCisgICAgdm9p
ZCBhZGREb3dubG9hZChEb3dubG9hZFByb3h5KiwgUVdlYkRvd25sb2FkSXRlbSopOworCisgICAg
dm9pZCBkb3dubG9hZFJlY2VpdmVkUmVzcG9uc2UoRG93bmxvYWRQcm94eSosIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICB2b2lkIGRvd25sb2FkQ3JlYXRlZERlc3RpbmF0
aW9uKERvd25sb2FkUHJveHkqLCBjb25zdCBRU3RyaW5nJiBwYXRoKTsKKyAgICB2b2lkIGRvd25s
b2FkRmluaXNoZWQoRG93bmxvYWRQcm94eSopOworICAgIHZvaWQgZG93bmxvYWRGYWlsZWQoRG93
bmxvYWRQcm94eSosIGNvbnN0IFF0V2ViRXJyb3ImKTsKKyAgICB2b2lkIGRvd25sb2FkRGF0YVJl
Y2VpdmVkKERvd25sb2FkUHJveHkqLCB1aW50NjRfdCBsZW5ndGgpOworCisgICAgc3RhdGljIFBh
c3NSZWZQdHI8UXREb3dubG9hZE1hbmFnZXI+IGNyZWF0ZShXZWJDb250ZXh0Kik7Citwcml2YXRl
OgorICAgIFF0RG93bmxvYWRNYW5hZ2VyKCk7CisKKyAgICBRTWFwPHVpbnQ2NF90LCBRV2ViRG93
bmxvYWRJdGVtKj4gbV9kb3dubG9hZHM7Cit9OworCit9CisjZW5kaWYgLyogUXREb3dubG9hZE1h
bmFnZXJfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0VG91
Y2hWaWV3SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRUb3VjaFZp
ZXdJbnRlcmZhY2UuaAppbmRleCAzYTQ1MzQ5MGY5MjMxZDgwOTgyNGFiZjhhM2VhYzE5YzQ5ZDFk
NjdiLi5hNGZkNDU3YTM4OTQ0NTcyMzhlM2YyNmI0NmViZjk1MzdiZDVkY2E3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRUb3VjaFZpZXdJbnRlcmZhY2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRUb3VjaFZpZXdJbnRlcmZhY2UuaApAQCAt
ODEsNiArODEsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgUUpTRW5naW5lKiBlbmdpbmUoKTsK
IAogICAgIHZpcnR1YWwgdm9pZCBjaG9vc2VGaWxlcyhXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVy
UmVmLCBjb25zdCBRU3RyaW5nTGlzdCYsIEZpbGVDaG9vc2VyVHlwZSkgeyB9CisgICAgdmlydHVh
bCB2b2lkIGRvd25sb2FkUmVxdWVzdGVkKFFXZWJEb3dubG9hZEl0ZW0qIGRvd25sb2FkSXRlbSkg
eyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkTW91c2VNb3ZlT3ZlckVsZW1lbnQoY29uc3QgUVVy
bCYsIGNvbnN0IFFTdHJpbmcmKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1F0Vmlld0ludGVyZmFjZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0
L1F0Vmlld0ludGVyZmFjZS5oCmluZGV4IDUyNmE0OTU2MTBkOTY0MTQxZThjOTM0ZjJmNWVjYzlh
MTU5OTgwYmMuLmE4MTg5MTE0MThjMzMyMDAwMzYwYmRmNDRlMzU0YTM1YzJhOWU3MzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFZpZXdJbnRlcmZhY2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRWaWV3SW50ZXJmYWNlLmgKQEAgLTI3LDYg
KzI3LDcgQEAKICNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgogCiBjbGFzcyBRdFdlYkVycm9y
OworY2xhc3MgUVdlYkRvd25sb2FkSXRlbTsKIAogUVRfQkVHSU5fTkFNRVNQQUNFCiBjbGFzcyBR
Q3Vyc29yOwpAQCAtOTMsNiArOTQsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNob29z
ZUZpbGVzKFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJSZWYsIGNvbnN0IFFTdHJpbmdMaXN0JiBz
ZWxlY3RlZEZpbGVOYW1lcywgRmlsZUNob29zZXJUeXBlKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZv
aWQgZGlkTW91c2VNb3ZlT3ZlckVsZW1lbnQoY29uc3QgUVVybCYsIGNvbnN0IFFTdHJpbmcmKSA9
IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWRSZXF1ZXN0ZWQoUVdlYkRvd25sb2FkSXRl
bSopID0gMDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9RdFdlYkVycm9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYkVycm9y
LmNwcAppbmRleCA3NjU0OTc3ZTA3N2JhYjdkNTRiNTk3ZWQxZmI0YmE5YmFkMTU3OWQ2Li42ZDJl
MTBkODExMTQ1MGE2MmFjZmNkOGE0ODQwYjZjMTNkMDA4MmU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJFcnJvci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L1F0V2ViRXJyb3IuY3BwCkBAIC02MCwzICs2MCw4IEBAIFFVcmwgUXRXZWJF
cnJvcjo6dXJsKCkgY29uc3QKICAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gZmFpbGluZ1VSTCA9
IGFkb3B0V0soV0tFcnJvckNvcHlGYWlsaW5nVVJMKGVycm9yLmdldCgpKSk7CiAgICAgcmV0dXJu
IFdLVVJMQ29weVFVcmwoZmFpbGluZ1VSTC5nZXQoKSk7CiB9CisKK1FTdHJpbmcgUXRXZWJFcnJv
cjo6ZGVzY3JpcHRpb24oKSBjb25zdAoreworICAgIHJldHVybiBXS1N0cmluZ0NvcHlRU3RyaW5n
KFdLRXJyb3JDb3B5TG9jYWxpemVkRGVzY3JpcHRpb24oZXJyb3IuZ2V0KCkpKTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYkVycm9yLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJFcnJvci5oCmluZGV4IDExYjA5NTNmMmVlZTNlNTY1
MTNjNGM5OTBmMjlkMDMxM2FkNjI2ZDQuLjkxMTg3ZTkyNmE0Y2RhZWI5M2Q5N2Q4YmMzMWExMGY1
NzRjODY0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYkVy
cm9yLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViRXJyb3IuaApAQCAt
MjEsNiArMjEsNyBAQAogI2lmbmRlZiBRdFdlYkVycm9yX2gKICNkZWZpbmUgUXRXZWJFcnJvcl9o
CiAKKyNpbmNsdWRlICJxd2ViZG93bmxvYWRpdGVtLmgiCiAjaW5jbHVkZSAicXdlYmtpdGdsb2Jh
bC5oIgogI2luY2x1ZGUgPFF0TmV0d29yay9RTmV0d29ya1JlcGx5PgogI2luY2x1ZGUgPFdLRXJy
b3IuaD4KQEAgLTQyLDkgKzQzLDExIEBAIHB1YmxpYzoKICAgICBUeXBlIHR5cGUoKSBjb25zdDsK
ICAgICBRVXJsIHVybCgpIGNvbnN0OwogICAgIGludCBlcnJvckNvZGUoKSBjb25zdDsKKyAgICBR
U3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Q7CiAKICAgICBpbnQgZXJyb3JDb2RlQXNIdHRwU3Rh
dHVzQ29kZSgpIGNvbnN0IHsgcmV0dXJuIGVycm9yQ29kZSgpOyB9CiAgICAgUU5ldHdvcmtSZXBs
eTo6TmV0d29ya0Vycm9yIGVycm9yQ29kZUFzTmV0d29ya0Vycm9yKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8UU5ldHdvcmtSZXBseTo6TmV0d29ya0Vycm9yPihlcnJvckNvZGUoKSk7IH0K
KyAgICBRV2ViRG93bmxvYWRJdGVtOjpEb3dubG9hZEVycm9yIGVycm9yQ29kZUFzRG93bmxvYWRF
cnJvcigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFFXZWJEb3dubG9hZEl0ZW06OkRvd25s
b2FkRXJyb3I+KGVycm9yQ29kZSgpKTsgfQogCiAgICAgUXRXZWJFcnJvcihjb25zdCBRdFdlYkVy
cm9yJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBh
Z2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHku
Y3BwCmluZGV4IDZhNDRhZDViNGVkZTgyOTc4MDlmMWNiMTM5NjkxM2IzMDQzMzU3ZWQuLjU0MDFk
ZjIxY2JmMzA5NDkwZWYwN2ZkOTgwOWQ0NTRiMTQ5MzEzMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcApAQCAtMjIsMTAgKzIyLDEzIEBACiAj
aW5jbHVkZSAiUXRXZWJQYWdlUHJveHkuaCIKIAogI2luY2x1ZGUgIlF0V2ViRXJyb3IuaCIKKyNp
bmNsdWRlICJxd2ViZG93bmxvYWRpdGVtLmgiCisjaW5jbHVkZSAicXdlYmRvd25sb2FkaXRlbV9w
LmgiCiAjaW5jbHVkZSAicXdlYnByZWZlcmVuY2VzLmgiCiAjaW5jbHVkZSAicXdlYnByZWZlcmVu
Y2VzX3AuaCIKIAogI2luY2x1ZGUgIkNsaWVudEltcGwuaCIKKyNpbmNsdWRlICJEb3dubG9hZFBy
b3h5LmgiCiAjaW5jbHVkZSAicXdraGlzdG9yeS5oIgogI2luY2x1ZGUgInF3a2hpc3RvcnlfcC5o
IgogI2luY2x1ZGUgIkZpbmRJbmRpY2F0b3IuaCIKQEAgLTYzLDEzICs2NiwxNiBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogCiBSZWZQdHI8V2ViQ29udGV4dD4gUXRXZWJQYWdlUHJveHk6
OnNfZGVmYXVsdENvbnRleHQ7CitSZWZQdHI8UXREb3dubG9hZE1hbmFnZXI+IFF0V2ViUGFnZVBy
b3h5OjpzX2Rvd25sb2FkTWFuYWdlcjsKIAogdW5zaWduZWQgUXRXZWJQYWdlUHJveHk6OnNfZGVm
YXVsdFBhZ2VQcm94eUNvdW50ID0gMDsKIAogUGFzc1JlZlB0cjxXZWJDb250ZXh0PiBRdFdlYlBh
Z2VQcm94eTo6ZGVmYXVsdFdLQ29udGV4dCgpCiB7Ci0gICAgaWYgKCFzX2RlZmF1bHRDb250ZXh0
KQorICAgIGlmICghc19kZWZhdWx0Q29udGV4dCkgewogICAgICAgICBzX2RlZmF1bHRDb250ZXh0
ID0gV2ViQ29udGV4dDo6Y3JlYXRlKFN0cmluZygpKTsKKyAgICAgICAgc19kb3dubG9hZE1hbmFn
ZXIgPSBRdERvd25sb2FkTWFuYWdlcjo6Y3JlYXRlKHNfZGVmYXVsdENvbnRleHQuZ2V0KCkpOwor
ICAgIH0KICAgICByZXR1cm4gc19kZWZhdWx0Q29udGV4dDsKIH0KIApAQCAtMTMzLDggKzEzOSwx
MCBAQCBRdFdlYlBhZ2VQcm94eTo6flF0V2ViUGFnZVByb3h5KCkKICAgICBpZiAobV9jb250ZXh0
ID09IHNfZGVmYXVsdENvbnRleHQpIHsKICAgICAgICAgQVNTRVJUKHNfZGVmYXVsdFBhZ2VQcm94
eUNvdW50ID4gMCk7CiAgICAgICAgIHNfZGVmYXVsdFBhZ2VQcm94eUNvdW50LS07Ci0gICAgICAg
IGlmICghc19kZWZhdWx0UGFnZVByb3h5Q291bnQpCisgICAgICAgIGlmICghc19kZWZhdWx0UGFn
ZVByb3h5Q291bnQpIHsKICAgICAgICAgICAgIHNfZGVmYXVsdENvbnRleHQuY2xlYXIoKTsKKyAg
ICAgICAgICAgIHNfZG93bmxvYWRNYW5hZ2VyLmNsZWFyKCk7CisgICAgICAgIH0KICAgICB9CiAg
ICAgZGVsZXRlIG1faGlzdG9yeTsKIH0KQEAgLTU1OSw0ICs1NjcsMjMgQEAgdm9pZCBRdFdlYlBh
Z2VQcm94eTo6ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdw
b3J0QXJndW1lbnQKICAgICBtX3ZpZXdJbnRlcmZhY2UtPmRpZENoYW5nZVZpZXdwb3J0UHJvcGVy
dGllcyhhcmdzKTsKIH0KIAordm9pZCBRdFdlYlBhZ2VQcm94eTo6aGFuZGxlRG93bmxvYWRSZXF1
ZXN0KERvd25sb2FkUHJveHkqIGRvd25sb2FkKQoreworICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMg
cmVzcG9uc2libGUgZm9yIGhvb2tpbmcgdXAgYSBEb3dubG9hZFByb3h5IHRvIG91ciBBUEkgbGF5
ZXIKKyAgICAvLyBieSBjcmVhdGluZyBhIFFXZWJEb3dubG9hZEl0ZW0uIEl0IHdpbGwgdGhlbiB3
YWl0IGZvciB0aGUgUVdlYkRvd25sb2FkSXRlbSB0byBiZQorICAgIC8vIHJlYWR5IChmaWxsZWQg
d2l0aCB0aGUgUmVzb3VyY2VSZXNwb25zZSBpbmZvcm1hdGlvbikgc28gd2UgY2FuIHBhc3MgaXQg
dGhyb3VnaCB0bworICAgIC8vIG91ciBXZWJWaWV3cy4KKyAgICBRV2ViRG93bmxvYWRJdGVtKiBk
b3dubG9hZEl0ZW0gPSBuZXcgUVdlYkRvd25sb2FkSXRlbSgpOworICAgIGRvd25sb2FkSXRlbS0+
ZC0+ZG93bmxvYWRQcm94eSA9IGRvd25sb2FkOworCisgICAgY29ubmVjdChkb3dubG9hZEl0ZW0t
PmQsIFNJR05BTChyZWNlaXZlZFJlc3BvbnNlKFFXZWJEb3dubG9hZEl0ZW0qKSksIHRoaXMsIFNM
T1QoZGlkUmVjZWl2ZURvd25sb2FkUmVzcG9uc2UoUVdlYkRvd25sb2FkSXRlbSopKSk7CisgICAg
c19kb3dubG9hZE1hbmFnZXItPmFkZERvd25sb2FkKGRvd25sb2FkLCBkb3dubG9hZEl0ZW0pOwor
fQorCit2b2lkIFF0V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlRG93bmxvYWRSZXNwb25zZShRV2Vi
RG93bmxvYWRJdGVtKiBkb3dubG9hZCkKK3sKKyAgICAvLyBOb3cgdGhhdCBvdXIgZG93bmxvYWRJ
dGVtIGhhcyBldmVyeXRoaW5nIHdlIG5lZWQgd2UgY2FuIGVtaXQgZG93bmxvYWRSZXF1ZXN0ZWQu
CisgICAgbV92aWV3SW50ZXJmYWNlLT5kb3dubG9hZFJlcXVlc3RlZChkb3dubG9hZCk7Cit9CisK
ICNpbmNsdWRlICJtb2NfUXRXZWJQYWdlUHJveHkuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaAppbmRleCAxYWY4MDBkNTA5NTRjMzMxNGZiODBlZTRk
ODRmYzlkZTM1ZmExYWMyLi44YzAyNDA0OGYyNjZmNjdhMjZiZDhlMjhhOGQ1MzI0NzVlMTM4OTFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaApAQCAt
MjMsNiArMjMsNyBAQAogCiAjaW5jbHVkZSAiTGF5ZXJUcmVlQ29udGV4dC5oIgogI2luY2x1ZGUg
IlBhZ2VDbGllbnQuaCIKKyNpbmNsdWRlICJRdERvd25sb2FkTWFuYWdlci5oIgogI2luY2x1ZGUg
IlF0UG9saWN5SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiUXRWaWV3SW50ZXJmYWNlLmgiCiAjaW5j
bHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCkBAIC0xNzIsOCArMTczLDExIEBAIHB1YmxpYzoKICAg
ICBRV0tIaXN0b3J5KiBoaXN0b3J5KCkgY29uc3Q7CiAgICAgUXRWaWV3SW50ZXJmYWNlKiB2aWV3
SW50ZXJmYWNlKCkgY29uc3QgeyByZXR1cm4gbV92aWV3SW50ZXJmYWNlOyB9CiAKKyAgICB2b2lk
IGhhbmRsZURvd25sb2FkUmVxdWVzdChEb3dubG9hZFByb3h5Kik7CisKIHB1YmxpYyBRX1NMT1RT
OgogICAgIHZvaWQgbmF2aWdhdGlvblN0YXRlQ2hhbmdlZCgpOworICAgIHZvaWQgZGlkUmVjZWl2
ZURvd25sb2FkUmVzcG9uc2UoUVdlYkRvd25sb2FkSXRlbSopOwogCiBwdWJsaWM6CiAgICAgUV9T
SUdOQUwgdm9pZCBzY3JvbGxSZXF1ZXN0ZWQoaW50IGR4LCBpbnQgZHkpOwpAQCAtMTk2LDYgKzIw
MCw3IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb250ZXh0PiBkZWZh
dWx0V0tDb250ZXh0KCk7CiAgICAgc3RhdGljIFJlZlB0cjxXZWJDb250ZXh0PiBzX2RlZmF1bHRD
b250ZXh0OworICAgIHN0YXRpYyBSZWZQdHI8UXREb3dubG9hZE1hbmFnZXI+IHNfZG93bmxvYWRN
YW5hZ2VyOwogICAgIHN0YXRpYyB1bnNpZ25lZCBzX2RlZmF1bHRQYWdlUHJveHlDb3VudDsKIAog
ICAgIFJlZlB0cjxXZWJDb250ZXh0PiBtX2NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnBybyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJvCmluZGV4IDBkMjE2
ODgwMmM5Y2IwMWUzYmZkOTM0MDI2ZWY3OTA4ZDc5MDgwMWYuLmJmM2E1MmIzZmZjOGQ0MjQ4MzYw
OWVmOWEwY2ZiMjllYWI0ODg2ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIu
cHJvCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJvCkBAIC0yNjAsNiArMjYwLDcgQEAg
SEVBREVSUyArPSBcCiAgICAgVUlQcm9jZXNzL3F0L1F0RGVza3RvcFdlYlBhZ2VQcm94eS5oIFwK
ICAgICBVSVByb2Nlc3MvcXQvUXRUb3VjaFdlYlBhZ2VQcm94eS5oIFwKICAgICBVSVByb2Nlc3Mv
cXQvUXRXZWJFcnJvci5oIFwKKyAgICBVSVByb2Nlc3MvcXQvUXREb3dubG9hZE1hbmFnZXIuaCBc
CiAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmggXAogICAgIFVJUHJvY2Vzcy9xdC9x
d2toaXN0b3J5LmggXAogICAgIFVJUHJvY2Vzcy9xdC9xd2toaXN0b3J5X3AuaCBcCkBAIC01MDQs
NiArNTA1LDcgQEAgU09VUkNFUyArPSBcCiAgICAgVUlQcm9jZXNzL3F0L1F0RGVza3RvcFdlYlBh
Z2VQcm94eS5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9RdFRvdWNoV2ViUGFnZVByb3h5LmNwcCBc
CiAgICAgVUlQcm9jZXNzL3F0L1F0V2ViRXJyb3IuY3BwIFwKKyAgICBVSVByb2Nlc3MvcXQvUXRE
b3dubG9hZE1hbmFnZXIuY3BwIFwKICAgICBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3Bw
IFwKICAgICBVSVByb2Nlc3MvcXQvcXdraGlzdG9yeS5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9R
dFNHVXBkYXRlUXVldWUuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDJB
UEkucHJpIGIvU291cmNlL1dlYktpdDIvV2ViS2l0MkFQSS5wcmkKaW5kZXggNTE4NTk1NzYyZWQw
NzU4Mzg5YjE5YmZkMjk4MzgzZDE0ODZlODg5My4uMWFiODY0Yzg0ZWQ5YWQzMDY2ZDY3Y2YyMmJl
ZjlmM2E3ZDg5YmUyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0MkFQSS5wcmkK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0MkFQSS5wcmkKQEAgLTUwLDYgKzUwLDcgQEAgV0VC
S0lUMl9BUElfU09VUkNFUyA9IFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2NwcC9xdC9XS1VSTFF0LmNwcCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9xYmFzZXdlYnZpZXcuY3BwIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHAgXAorICAgICQkU09VUkNFX0RJUi9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYmRvd25sb2FkaXRlbS5jcHAgXAogICAgICQkU09V
UkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZS5jcHAgXAogICAg
ICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2Vidmlldy5jcHAg
XAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYm5hdmlnYXRp
b25jb250cm9sbGVyLmNwcCBcCkBAIC0xMzUsNiArMTM2LDggQEAgV0VCS0lUMl9BUElfSEVBREVS
UyArPSBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3Rv
cHdlYnZpZXdfcC5oIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3F3ZWJwcmVmZXJlbmNlcy5oIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3F3ZWJwcmVmZXJlbmNlc19wLmggXAorICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvcXdlYmRvd25sb2FkaXRlbS5oIFwKKyAgICAkJFNPVVJDRV9ESVIvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJkb3dubG9hZGl0ZW1fcC5oIFwKICAgICAkJFNPVVJD
RV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2UuaCBcCiAgICAgJCRT
T1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJwYWdlX3AuaCBcCiAg
ICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3Lmgg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKaW5k
ZXggYWNjY2QzZjg4ZTJhNjk5NTk3YTM5YjdiZjgyOGQ0MzYzN2I3MGYzOC4uYzA2NmUyZjZiNDQz
OWU2YzU2ZWMzMDE1ZjdiZmU1NTIxYTk3MjQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCkBAIC05Myw2ICs5MywxMCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkaWRDYW5jZWwoY29uc3QgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0
YSk7CiAgICAgdm9pZCBkaWREZWNpZGVEZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmLCBib29sIGFs
bG93T3ZlcndyaXRlKTsKIAorI2lmIFBMQVRGT1JNKFFUKQorICAgIHZvaWQgc3RhcnRUcmFuc2Zl
cihjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uKTsKKyNlbmRpZgorCiAjaWYgVVNFKENGTkVUV09S
SykKICAgICBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0
aW5hdGlvbjsgfQogICAgIERvd25sb2FkQXV0aGVudGljYXRpb25DbGllbnQqIGF1dGhlbnRpY2F0
aW9uQ2xpZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAppbmRleCBhNjI0ODkxZjgwMTk0ZjNhZGMxNTE4MWFj
ODA4NGI0Njk1NThiY2I2Li42MGRjZTg5YjRlZTRjY2MzOGJlZjk4OTY1NTlmOWQ3OGU2N2YzMjYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkTWFuYWdlci5jcHAKQEAgLTc5LDQgKzc5LDEzIEBAIHZvaWQgRG93bmxvYWRNYW5hZ2Vy
Ojpkb3dubG9hZEZpbmlzaGVkKERvd25sb2FkKiBkb3dubG9hZCkKICAgICBkZWxldGUgZG93bmxv
YWQ7CiB9CiAKKyNpZiBQTEFURk9STShRVCkKK3ZvaWQgRG93bmxvYWRNYW5hZ2VyOjpzdGFydFRy
YW5zZmVyKHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24pCit7
CisgICAgQVNTRVJUKG1fZG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsKKyAgICBEb3du
bG9hZCogZG93bmxvYWQgPSBtX2Rvd25sb2Fkcy5nZXQoZG93bmxvYWRJRCk7CisgICAgZG93bmxv
YWQtPnN0YXJ0VHJhbnNmZXIoZGVzdGluYXRpb24pOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZE1hbmFnZXIuaAppbmRleCAxZjI3Yjg2N2FlZDU1OGZiYjc1M2JjNjUyZjE4YjBh
Y2I2OWEwMDIzLi42ZmE3YWViZWU0ZjI3YmQ0M2MxNzA2NmNiYjdiYjgzYTY4NDJkNGM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFn
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1h
bmFnZXIuaApAQCAtMjksNiArMjksMTAgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFN0cmlu
ZzsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFJlc291cmNlSGFuZGxlOwog
ICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKQEAgLTU0LDYgKzU4LDEwIEBAIHB1YmxpYzoKICAg
ICB2b2lkIGRvd25sb2FkRmluaXNoZWQoRG93bmxvYWQqKTsKICAgICBib29sIGlzRG93bmxvYWRp
bmcoKSBjb25zdCB7IHJldHVybiAhbV9kb3dubG9hZHMuaXNFbXB0eSgpOyB9CiAKKyNpZiBQTEFU
Rk9STShRVCkKKyAgICB2b2lkIHN0YXJ0VHJhbnNmZXIodWludDY0X3QgZG93bmxvYWRJRCwgY29u
c3QgV1RGOjpTdHJpbmcmIGRlc3RpbmF0aW9uKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIERv
d25sb2FkTWFuYWdlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0Rvd25sb2Fkcy9xdC9Eb3dubG9hZFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
RG93bmxvYWRzL3F0L0Rvd25sb2FkUXQuY3BwCmluZGV4IDllZTk5OTVlODBlODgwZGRhNmQyN2M5
YTNiNTBmMGMxNjFkZWEwZTAuLjRlZWY0MWM0MGI2Yzc2NDliYTkwNTQzNDZlMjgxNmFhODk1NDBk
NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L0Rv
d25sb2FkUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0
L0Rvd25sb2FkUXQuY3BwCkBAIC00NiwxMyArNDYsMTQgQEAgdm9pZCBEb3dubG9hZDo6c3RhcnQo
V2ViUGFnZSogaW5pdGlhdGluZ1dlYlBhZ2UpCiAgICAgQVNTRVJUKCFtX3F0RG93bmxvYWRlcik7
CiAKICAgICBtX3F0RG93bmxvYWRlciA9IG5ldyBRdEZpbGVEb3dubG9hZGVyKHRoaXMsIGFkb3B0
UHRyKG1hbmFnZXItPmdldChtX3JlcXVlc3QudG9OZXR3b3JrUmVxdWVzdCgpKSkpOwotICAgIG1f
cXREb3dubG9hZGVyLT5zdGFydCgpOworICAgIG1fcXREb3dubG9hZGVyLT5pbml0KCk7CiB9CiAK
IHZvaWQgRG93bmxvYWQ6OnN0YXJ0V2l0aEhhbmRsZShXZWJQYWdlKiBpbml0aWF0aW5nUGFnZSwg
UmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBpbml0aWFsUmVx
dWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcCkKIHsKICAgICBBU1NFUlQoIW1fcXRE
b3dubG9hZGVyKTsKICAgICBtX3F0RG93bmxvYWRlciA9IG5ldyBRdEZpbGVEb3dubG9hZGVyKHRo
aXMsIGFkb3B0UHRyKGhhbmRsZS0+Z2V0SW50ZXJuYWwoKS0+bV9qb2ItPnJlbGVhc2UoKSkpOwor
ICAgIG1fcXREb3dubG9hZGVyLT5pbml0KCk7CiB9CiAKIHZvaWQgRG93bmxvYWQ6OmNhbmNlbCgp
CkBAIC03MCw3ICs3MSwxMiBAQCB2b2lkIERvd25sb2FkOjpwbGF0Zm9ybUludmFsaWRhdGUoKQog
CiB2b2lkIERvd25sb2FkOjpkaWREZWNpZGVEZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIGRlc3Rp
bmF0aW9uLCBib29sIGFsbG93T3ZlcndyaXRlKQogewotICAgIG1fcXREb3dubG9hZGVyLT5kZWNp
ZGVkRGVzdGluYXRpb24oZGVzdGluYXRpb24sIGFsbG93T3ZlcndyaXRlKTsKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCit2b2lkIERvd25sb2FkOjpzdGFydFRyYW5zZmVyKGNvbnN0IFN0cmlu
ZyYgZGVzdGluYXRpb24pCit7CisgICAgbV9xdERvd25sb2FkZXItPnN0YXJ0VHJhbnNmZXIoZGVz
dGluYXRpb24pOwogfQogCiB2b2lkIERvd25sb2FkOjpwbGF0Zm9ybURpZEZpbmlzaCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3du
bG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L1F0Rmls
ZURvd25sb2FkZXIuY3BwCmluZGV4IGM5MzZiMDhlNzBmOTA0Y2Y0YjViMzM2ZjU0YjcyNjk3N2Ri
ZWQwZjkuLmMzYjJlOGQwZWUyMmE0Nzc1N2QzYzAzZGE4Y2FkZDMwZWRkZjJlZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L1F0RmlsZURvd25sb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L1F0Rmls
ZURvd25sb2FkZXIuY3BwCkBAIC01Myw0NSArNTMsNDEgQEAgUXRGaWxlRG93bmxvYWRlcjo6flF0
RmlsZURvd25sb2FkZXIoKQogICAgIGFib3J0RG93bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKFF0
RmlsZURvd25sb2FkZXI6OkRvd25sb2FkRXJyb3JBYm9ydGVkKTsKIH0KIAotdm9pZCBRdEZpbGVE
b3dubG9hZGVyOjpzdGFydCgpCit2b2lkIFF0RmlsZURvd25sb2FkZXI6OmluaXQoKQogewogICAg
IGNvbm5lY3QobV9yZXBseS5nZXQoKSwgU0lHTkFMKHJlYWR5UmVhZCgpKSwgU0xPVChvblJlYWR5
UmVhZCgpKSk7CiAgICAgY29ubmVjdChtX3JlcGx5LmdldCgpLCBTSUdOQUwoZmluaXNoZWQoKSks
IFNMT1Qob25GaW5pc2hlZCgpKSk7CiAgICAgY29ubmVjdChtX3JlcGx5LmdldCgpLCBTSUdOQUwo
ZXJyb3IoUU5ldHdvcmtSZXBseTo6TmV0d29ya0Vycm9yKSksIFNMT1Qob25FcnJvcihRTmV0d29y
a1JlcGx5OjpOZXR3b3JrRXJyb3IpKSk7Ci0KLSAgICAvLyBDYWxsIG9uUmVhZHlSZWFkIGp1c3Qg
aW4gY2FzZSBzb21lIGRhdGEgaXMgYWxyZWFkeSB3YWl0aW5nLgotICAgIG9uUmVhZHlSZWFkKCk7
CiB9CiAKLXZvaWQgUXRGaWxlRG93bmxvYWRlcjo6ZGV0ZXJtaW5lRmlsZW5hbWUoKQorUVN0cmlu
ZyBRdEZpbGVEb3dubG9hZGVyOjpkZXRlcm1pbmVGaWxlbmFtZSgpCiB7CiAgICAgQVNTRVJUKCFt
X2Rlc3RpbmF0aW9uRmlsZSk7CiAKLSAgICBRU3RyaW5nIGZpbGVOYW1lQ2FuZGlkYXRlID0gZmls
ZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlvbihRU3RyaW5nOjpmcm9tTGF0aW4xKG1fcmVw
bHktPnJhd0hlYWRlcigiQ29udGVudC1EaXNwb3NpdGlvbiIpKSk7Ci0gICAgaWYgKGZpbGVOYW1l
Q2FuZGlkYXRlLmlzRW1wdHkoKSkgeworICAgIFFTdHJpbmcgZmlsZW5hbWVDYW5kaWRhdGUgPSBm
aWxlbmFtZUZyb21IVFRQQ29udGVudERpc3Bvc2l0aW9uKFFTdHJpbmc6OmZyb21MYXRpbjEobV9y
ZXBseS0+cmF3SGVhZGVyKCJDb250ZW50LURpc3Bvc2l0aW9uIikpKTsKKyAgICBpZiAoZmlsZW5h
bWVDYW5kaWRhdGUuaXNFbXB0eSgpKSB7CiAgICAgICAgIEtVUkwga3VybCA9IG1fcmVwbHktPnVy
bCgpOwotICAgICAgICBmaWxlTmFtZUNhbmRpZGF0ZSA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNl
cyhrdXJsLmxhc3RQYXRoQ29tcG9uZW50KCkpOworICAgICAgICBmaWxlbmFtZUNhbmRpZGF0ZSA9
IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhrdXJsLmxhc3RQYXRoQ29tcG9uZW50KCkpOwogICAg
IH0KIAotICAgIGlmIChmaWxlTmFtZUNhbmRpZGF0ZS5pc0VtcHR5KCkpIHsKKyAgICBpZiAoZmls
ZW5hbWVDYW5kaWRhdGUuaXNFbXB0eSgpKSB7CiAgICAgICAgIGFib3J0RG93bmxvYWRXcml0aW5n
QW5kRW1pdEVycm9yKFF0RmlsZURvd25sb2FkZXI6OkRvd25sb2FkRXJyb3JDYW5ub3REZXRlcm1p
bmVGaWxlbmFtZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIFFTdHJpbmcoKTsK
ICAgICB9CiAKICAgICAvLyBNYWtlIHN1cmUgdGhhdCB3ZSByZW1vdmUgcG9zc2libGUgIi4uLy4u
IiBwYXJ0cyBpbiB0aGUgZ2l2ZW4gZmlsZSBuYW1lLgotICAgIFFGaWxlSW5mbyBmaWxlTmFtZUZp
bHRlcihmaWxlTmFtZUNhbmRpZGF0ZSk7Ci0gICAgUVN0cmluZyBmaWxlTmFtZSA9IGZpbGVOYW1l
RmlsdGVyLmZpbGVOYW1lKCk7CisgICAgUUZpbGVJbmZvIGZpbGVuYW1lRmlsdGVyKGZpbGVuYW1l
Q2FuZGlkYXRlKTsKKyAgICBRU3RyaW5nIGZpbGVuYW1lID0gZmlsZW5hbWVGaWx0ZXIuZmlsZU5h
bWUoKTsKIAotICAgIGlmIChmaWxlTmFtZS5pc0VtcHR5KCkpIHsKKyAgICBpZiAoZmlsZW5hbWUu
aXNFbXB0eSgpKSB7CiAgICAgICAgIGFib3J0RG93bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKFF0
RmlsZURvd25sb2FkZXI6OkRvd25sb2FkRXJyb3JDYW5ub3REZXRlcm1pbmVGaWxlbmFtZSk7Ci0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIFFTdHJpbmcoKTsKICAgICB9CiAKLSAgICBi
b29sIGFsbG93T3ZlcndyaXRlOwotICAgIG1fZG93bmxvYWQtPmRlY2lkZURlc3RpbmF0aW9uV2l0
aFN1Z2dlc3RlZEZpbGVuYW1lKGZpbGVOYW1lLCBhbGxvd092ZXJ3cml0ZSk7CisgICAgcmV0dXJu
IGZpbGVuYW1lOwogfQogCi12b2lkIFF0RmlsZURvd25sb2FkZXI6OmRlY2lkZWREZXN0aW5hdGlv
bihjb25zdCBRU3RyaW5nJiBkZWNpZGVkRmlsZVBhdGgsIGJvb2wgYWxsb3dPdmVyd3JpdGUpCit2
b2lkIFF0RmlsZURvd25sb2FkZXI6OnN0YXJ0VHJhbnNmZXIoY29uc3QgUVN0cmluZyYgZGVjaWRl
ZEZpbGVQYXRoKQogewogICAgIEFTU0VSVCghbV9kZXN0aW5hdGlvbkZpbGUpOwogCkBAIC0xMDIs
MTcgKzk4LDEyIEBAIHZvaWQgUXRGaWxlRG93bmxvYWRlcjo6ZGVjaWRlZERlc3RpbmF0aW9uKGNv
bnN0IFFTdHJpbmcmIGRlY2lkZWRGaWxlUGF0aCwgYm9vbCBhCiAgICAgfQogCiAgICAgaWYgKGRl
Y2lkZWRGaWxlUGF0aC5pc0VtcHR5KCkpIHsKLSAgICAgICAgYWJvcnREb3dubG9hZFdyaXRpbmdB
bmRFbWl0RXJyb3IoUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvckNhbmNlbGxlZEJ5Q2Fs
bGVyKTsKKyAgICAgICAgYWJvcnREb3dubG9hZFdyaXRpbmdBbmRFbWl0RXJyb3IoUXRGaWxlRG93
bmxvYWRlcjo6RG93bmxvYWRFcnJvckNhbmNlbGxlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKICAgICBPd25QdHI8UUZpbGU+IGRvd25sb2FkRmlsZSA9IGFkb3B0UHRyKG5ldyBRRmlsZShk
ZWNpZGVkRmlsZVBhdGgpKTsKIAotICAgIGlmICghYWxsb3dPdmVyd3JpdGUgJiYgZG93bmxvYWRG
aWxlLT5leGlzdHMoKSkgewotICAgICAgICBhYm9ydERvd25sb2FkV3JpdGluZ0FuZEVtaXRFcnJv
cihRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9yRmlsZUFscmVhZHlFeGlzdHMpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgaWYgKCFkb3dubG9hZEZpbGUtPm9wZW4oUUlPRGV2
aWNlOjpXcml0ZU9ubHkgfCBRSU9EZXZpY2U6OlRydW5jYXRlKSkgewogICAgICAgICBhYm9ydERv
d25sb2FkV3JpdGluZ0FuZEVtaXRFcnJvcihRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9y
Q2Fubm90T3BlbkZpbGUpOwogICAgICAgICByZXR1cm47CkBAIC0xMzMsNyArMTI0LDYgQEAgdm9p
ZCBRdEZpbGVEb3dubG9hZGVyOjpkZWNpZGVkRGVzdGluYXRpb24oY29uc3QgUVN0cmluZyYgZGVj
aWRlZEZpbGVQYXRoLCBib29sIGEKICAgICAvLyBmdW5jdGlvbiB3YXMgY2FsbGVkLgogICAgIGlm
IChtX3JlcGx5LT5pc0ZpbmlzaGVkKCkpCiAgICAgICAgIG9uRmluaXNoZWQoKTsKLQogfQogCiB2
b2lkIFF0RmlsZURvd25sb2FkZXI6OmFib3J0RG93bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKFF0
RmlsZURvd25sb2FkZXI6OkRvd25sb2FkRXJyb3IgZXJyb3JDb2RlKQpAQCAtMTU3LDEwICsxNDcs
MTAgQEAgdm9pZCBRdEZpbGVEb3dubG9hZGVyOjphYm9ydERvd25sb2FkV3JpdGluZ0FuZEVtaXRF
cnJvcihRdEZpbGVEb3dubG9hZGVyOjpEb3dubG8KICAgICBjYXNlIFF0RmlsZURvd25sb2FkZXI6
OkRvd25sb2FkRXJyb3JDYW5ub3RPcGVuRmlsZToKICAgICAgICAgdHJhbnNsYXRlZEVycm9yTWVz
c2FnZSA9IFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUXRGaWxlRG93bmxvYWRlciIsICJD
YW5ub3Qgb3BlbiBmaWxlIGZvciB3cml0aW5nIik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
UXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvckZpbGVBbHJlYWR5RXhpc3RzOgotICAgICAg
ICB0cmFuc2xhdGVkRXJyb3JNZXNzYWdlID0gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJR
dEZpbGVEb3dubG9hZGVyIiwgIkZpbGUgYWxyZWFkeSBleGlzdHMiKTsKKyAgICBjYXNlIFF0Rmls
ZURvd25sb2FkZXI6OkRvd25sb2FkRXJyb3JEZXN0aW5hdGlvbkFscmVhZHlFeGlzdHM6CisgICAg
ICAgIHRyYW5zbGF0ZWRFcnJvck1lc3NhZ2UgPSBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUo
IlF0RmlsZURvd25sb2FkZXIiLCAiRGVzdGluYXRpb24gYWxyZWFkeSBleGlzdHMiKTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9yQ2FuY2Vs
bGVkQnlDYWxsZXI6CisgICAgY2FzZSBRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9yQ2Fu
Y2VsbGVkOgogICAgICAgICB0cmFuc2xhdGVkRXJyb3JNZXNzYWdlID0gUUNvcmVBcHBsaWNhdGlv
bjo6dHJhbnNsYXRlKCJRdEZpbGVEb3dubG9hZGVyIiwgIkRvd25sb2FkIGNhbmNlbGxlZCBieSBj
YWxsZXIiKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBRdEZpbGVEb3dubG9hZGVyOjpEb3du
bG9hZEVycm9yQ2Fubm90RGV0ZXJtaW5lRmlsZW5hbWU6CkBAIC0xNzUsNiArMTY1LDI3IEBAIHZv
aWQgUXRGaWxlRG93bmxvYWRlcjo6YWJvcnREb3dubG9hZFdyaXRpbmdBbmRFbWl0RXJyb3IoUXRG
aWxlRG93bmxvYWRlcjo6RG93bmxvCiAgICAgbV9kb3dubG9hZC0+ZGlkRmFpbChkb3dubG9hZEVy
cm9yLCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlKDAsIDApKTsKIH0KIAordm9pZCBRdEZpbGVEb3du
bG9hZGVyOjpoYW5kbGVEb3dubG9hZFJlc3BvbnNlKCkKK3sKKyAgICAvLyBCeSBBUEkgY29udHJh
Y3QsIFFOZXR3b3JrUmVwbHk6Om1ldGFEYXRhQ2hhbmdlZCBjYW5ub3QgcmVhbGx5IGJlIHRydXN0
ZWQuCisgICAgLy8gVGh1cyB3ZSBuZWVkIHRvIGNhbGwgdGhpcyB1cG9uIHJlY2VpdmluZyBmaXJz
dCBkYXRhLgorICAgIFN0cmluZyBjb250ZW50VHlwZSA9IG1fcmVwbHktPmhlYWRlcihRTmV0d29y
a1JlcXVlc3Q6OkNvbnRlbnRUeXBlSGVhZGVyKS50b1N0cmluZygpOworICAgIFN0cmluZyBlbmNv
ZGluZyA9IGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSk7CisgICAgU3Ry
aW5nIG1pbWVUeXBlID0gZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSk7
CisgICAgU3RyaW5nIGZpbGVuYW1lID0gZGV0ZXJtaW5lRmlsZW5hbWUoKTsKKworICAgIC8vIElm
IGZpbGVuYW1lIGlzIGVtcHR5IGl0IG1lYW5zIGRldGVybWluZUZpbGVuYW1lIGFib3J0ZWQgYW5k
IGVtaXR0ZWQgYW4gZXJyb3IuCisgICAgaWYgKGZpbGVuYW1lLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgLy8gTGV0J3MgdHJ5IHRvIGd1ZXNzIGZyb20gdGhlIGV4dGVuc2lvbi4K
KyAgICBpZiAobWltZVR5cGUuaXNFbXB0eSgpKQorICAgICAgICBtaW1lVHlwZSA9IE1JTUVUeXBl
UmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yUGF0aChtX3JlcGx5LT51cmwoKS5wYXRoKCkpOworCisg
ICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShtX3JlcGx5LT51cmwoKSwgbWltZVR5cGUsIG1f
cmVwbHktPmhlYWRlcihRTmV0d29ya1JlcXVlc3Q6OkNvbnRlbnRMZW5ndGhIZWFkZXIpLnRvTG9u
Z0xvbmcoKSwgZW5jb2RpbmcsIGZpbGVuYW1lKTsKKyAgICBtX2Rvd25sb2FkLT5kaWRSZWNlaXZl
UmVzcG9uc2UocmVzcG9uc2UpOworfQorCiB2b2lkIFF0RmlsZURvd25sb2FkZXI6Om9uUmVhZHlS
ZWFkKCkKIHsKICAgICBpZiAobV9kZXN0aW5hdGlvbkZpbGUpIHsKQEAgLTE5NSwyNyArMjA2LDIx
IEBAIHZvaWQgUXRGaWxlRG93bmxvYWRlcjo6b25SZWFkeVJlYWQoKQogCiAgICAgICAgIG1fZG93
bmxvYWQtPmRpZFJlY2VpdmVEYXRhKGJ5dGVzV3JpdHRlbik7CiAgICAgfSBlbHNlIGlmICghbV9o
ZWFkZXJzUmVhZCkgewotICAgICAgICAvLyBCeSBBUEkgY29udHJhY3QsIFFOZXR3b3JrUmVwbHk6
Om1ldGFEYXRhQ2hhbmdlZCBjYW5ub3QgcmVhbGx5IGJlIHRydXN0ZWQuCi0gICAgICAgIC8vIFRo
dXMgd2UgbmVlZCB0byBjYWxsIHRoaXMgdXBvbiByZWNlaXZpbmcgZmlyc3QgZGF0YS4KLSAgICAg
ICAgU3RyaW5nIGNvbnRlbnRUeXBlID0gbV9yZXBseS0+aGVhZGVyKFFOZXR3b3JrUmVxdWVzdDo6
Q29udGVudFR5cGVIZWFkZXIpLnRvU3RyaW5nKCk7Ci0gICAgICAgIFN0cmluZyBlbmNvZGluZyA9
IGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSk7Ci0gICAgICAgIFN0cmlu
ZyBtaW1lVHlwZSA9IGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUpOwot
Ci0gICAgICAgIC8vIExldCdzIHRyeSB0byBndWVzcyBmcm9tIHRoZSBleHRlbnNpb24uCi0gICAg
ICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBtaW1lVHlwZSA9IE1JTUVU
eXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yUGF0aChtX3JlcGx5LT51cmwoKS5wYXRoKCkpOwot
Ci0gICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UobV9yZXBseS0+dXJsKCksIG1pbWVU
eXBlLCBtX3JlcGx5LT5oZWFkZXIoUU5ldHdvcmtSZXF1ZXN0OjpDb250ZW50TGVuZ3RoSGVhZGVy
KS50b0xvbmdMb25nKCksIGVuY29kaW5nLCBTdHJpbmcoKSk7Ci0gICAgICAgIG1fZG93bmxvYWQt
PmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7Ci0KLSAgICAgICAgZGV0ZXJtaW5lRmlsZW5h
bWUoKTsKLQorICAgICAgICBoYW5kbGVEb3dubG9hZFJlc3BvbnNlKCk7CiAgICAgICAgIG1faGVh
ZGVyc1JlYWQgPSB0cnVlOwogICAgIH0KIH0KIAogdm9pZCBRdEZpbGVEb3dubG9hZGVyOjpvbkZp
bmlzaGVkKCkKIHsKKyAgICAvLyBJZiBpdCdzIGZpbmlzaGVkIGFuZCB3ZSBoYXZlbid0IGV2ZW4g
cmVhZCB0aGUgaGVhZGVycywgaXQgbWVhbnMgd2UgbmV2ZXIgZ290IHRvIG9uUmVhZHlSZWFkIGFu
ZCB0aGF0IHdlIGFyZQorICAgIC8vIHByb2JhYmx5IGRlYWxpbmcgd2l0aCB0aGUgZG93bmxvYWQg
b2YgYSBsb2NhbCBmaWxlIG9yIG9mIGEgc21hbGwgZmlsZSB0aGF0IHdhcyBzdGFydGVkIHdpdGgg
YSBoYW5kbGUuCisgICAgaWYgKCFtX2hlYWRlcnNSZWFkKSB7CisgICAgICAgIGhhbmRsZURvd25s
b2FkUmVzcG9uc2UoKTsKKyAgICAgICAgbV9oZWFkZXJzUmVhZCA9IHRydWU7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKICAgICBpZiAoIW1fZGVzdGluYXRpb25GaWxlKQogICAgICAgICByZXR1
cm47CiAKQEAgLTIyMyw2ICsyMjgsOCBAQCB2b2lkIFF0RmlsZURvd25sb2FkZXI6Om9uRmluaXNo
ZWQoKQogCiAgICAgaWYgKG1fZXJyb3IgPT0gUU5ldHdvcmtSZXBseTo6Tm9FcnJvcikKICAgICAg
ICAgbV9kb3dubG9hZC0+ZGlkRmluaXNoKCk7CisgICAgZWxzZSBpZiAgKG1fZXJyb3IgPT0gUU5l
dHdvcmtSZXBseTo6T3BlcmF0aW9uQ2FuY2VsZWRFcnJvcikKKyAgICAgICAgYWJvcnREb3dubG9h
ZFdyaXRpbmdBbmRFbWl0RXJyb3IoUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvckNhbmNl
bGxlZCk7CiAgICAgZWxzZQogICAgICAgICBhYm9ydERvd25sb2FkV3JpdGluZ0FuZEVtaXRFcnJv
cihRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9yTmV0d29ya0ZhaWx1cmUpOwogfQpAQCAt
MjM1LDYgKzI0Miw3IEBAIHZvaWQgUXRGaWxlRG93bmxvYWRlcjo6b25FcnJvcihRTmV0d29ya1Jl
cGx5OjpOZXR3b3JrRXJyb3IgY29kZSkKIHZvaWQgUXRGaWxlRG93bmxvYWRlcjo6Y2FuY2VsKCkK
IHsKICAgICBtX3JlcGx5LT5hYm9ydCgpOworICAgIC8vIFF0RmlsZURvd25sb2FkZXI6Om9uRmlu
aXNoZWQoKSB3aWxsIGJlIGNhbGxlZCBhbmQgd2lsbCByYWlzZSBhIERvd25sb2FkRXJyb3JDYW5j
ZWxsZWQuCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5oCmluZGV4
IGI2YjhiYTI4YmVhOWY4YWIxZDY5NGM4NDMzNDE0NGE0YTJjOWQxNWIuLjBhZTBmZDg0YTY5Yzdk
ZWMxZjJhNDA4NjkyYWU2Yjk2YmI5YjJlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvRG93bmxvYWRzL3F0L1F0RmlsZURvd25sb2FkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3dubG9hZGVyLmgKQEAgLTQ0LDE2
ICs0NCwxNiBAQCBjbGFzcyBRdEZpbGVEb3dubG9hZGVyIDogcHVibGljIFFPYmplY3QgewogcHVi
bGljOgogICAgIFF0RmlsZURvd25sb2FkZXIoRG93bmxvYWQqLCBQYXNzT3duUHRyPFFOZXR3b3Jr
UmVwbHk+KTsKICAgICB2aXJ0dWFsIH5RdEZpbGVEb3dubG9hZGVyKCk7Ci0gICAgdm9pZCBkZWNp
ZGVkRGVzdGluYXRpb24oY29uc3QgUVN0cmluZyYgZGVjaWRlZEZpbGVQYXRoLCBib29sIGFsbG93
T3ZlcndyaXRlKTsKICAgICB2b2lkIGNhbmNlbCgpOwotICAgIHZvaWQgc3RhcnQoKTsKKyAgICB2
b2lkIGluaXQoKTsKKyAgICB2b2lkIHN0YXJ0VHJhbnNmZXIoY29uc3QgUVN0cmluZyYgZGVzdGlu
YXRpb24pOwogCiAgICAgZW51bSBEb3dubG9hZEVycm9yIHsKICAgICAgICAgRG93bmxvYWRFcnJv
ckFib3J0ZWQgPSAwLAogICAgICAgICBEb3dubG9hZEVycm9yQ2Fubm90V3JpdGVUb0ZpbGUsCiAg
ICAgICAgIERvd25sb2FkRXJyb3JDYW5ub3RPcGVuRmlsZSwKLSAgICAgICAgRG93bmxvYWRFcnJv
ckZpbGVBbHJlYWR5RXhpc3RzLAotICAgICAgICBEb3dubG9hZEVycm9yQ2FuY2VsbGVkQnlDYWxs
ZXIsCisgICAgICAgIERvd25sb2FkRXJyb3JEZXN0aW5hdGlvbkFscmVhZHlFeGlzdHMsCisgICAg
ICAgIERvd25sb2FkRXJyb3JDYW5jZWxsZWQsCiAgICAgICAgIERvd25sb2FkRXJyb3JDYW5ub3RE
ZXRlcm1pbmVGaWxlbmFtZSwKICAgICAgICAgRG93bmxvYWRFcnJvck5ldHdvcmtGYWlsdXJlCiAg
ICAgfTsKQEAgLTY1LDcgKzY1LDggQEAgcHJpdmF0ZSBzbG90czoKIAogcHJpdmF0ZToKICAgICB2
b2lkIGFib3J0RG93bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKFF0RmlsZURvd25sb2FkZXI6OkRv
d25sb2FkRXJyb3IpOwotICAgIHZvaWQgZGV0ZXJtaW5lRmlsZW5hbWUoKTsKKyAgICBRU3RyaW5n
IGRldGVybWluZUZpbGVuYW1lKCk7CisgICAgdm9pZCBoYW5kbGVEb3dubG9hZFJlc3BvbnNlKCk7
CiAKICAgICBEb3dubG9hZCogbV9kb3dubG9hZDsKICAgICBPd25QdHI8UU5ldHdvcmtSZXBseT4g
bV9yZXBseTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGU4
YWE3YWRhNGI2ZTVlNmFmMTZhNDczODNmOTJjNDA3YjI4NjhhNWYuLmJkNjljYWQ3ZWRiMDVmNWJh
OWE0YWJjMDU2M2EzNzYyYWYzN2U1NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcApAQCAtOTU3LDYgKzk1NywxMyBAQCB2b2lkIFdlYlByb2Nlc3M6OmNhbmNlbERv
d25sb2FkKHVpbnQ2NF90IGRvd25sb2FkSUQpCiAgICAgRG93bmxvYWRNYW5hZ2VyOjpzaGFyZWQo
KS5jYW5jZWxEb3dubG9hZChkb3dubG9hZElEKTsKIH0KIAorI2lmIFBMQVRGT1JNKFFUKQordm9p
ZCBXZWJQcm9jZXNzOjpzdGFydFRyYW5zZmVyKHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFN0
cmluZyYgZGVzdGluYXRpb24pCit7CisgICAgRG93bmxvYWRNYW5hZ2VyOjpzaGFyZWQoKS5zdGFy
dFRyYW5zZmVyKGRvd25sb2FkSUQsIGRlc3RpbmF0aW9uKTsKK30KKyNlbmRpZgorCiB2b2lkIFdl
YlByb2Nlc3M6OnNldEVuaGFuY2VkQWNjZXNzaWJpbGl0eShib29sIGZsYWcpCiB7CiAgICAgV2Vi
Q29yZTo6QVhPYmplY3RDYWNoZTo6c2V0RW5oYW5jZWRVc2VySW50ZXJmYWNlQWNjZXNzaWJpbGl0
eShmbGFnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggMGQ1ZDc0
YTljMWMxNDkxMmQyMzZkZDM4NGY2NTM2MDMxYjQxNDEzMi4uMzlmOGE1ZjBjZTg4YzA4MDNmYjI5
NjY5MGE2Y2Y3NGU2MWU2MmQyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmgKQEAgLTE3NSw2ICsxNzUsOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkb3dubG9hZFJlcXVl
c3QodWludDY0X3QgZG93bmxvYWRJRCwgdWludDY0X3QgaW5pdGlhdGluZ1BhZ2VJRCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdm9pZCBjYW5jZWxEb3dubG9hZCh1aW50
NjRfdCBkb3dubG9hZElEKTsKKyNpZiBQTEFURk9STShRVCkKKyAgICB2b2lkIHN0YXJ0VHJhbnNm
ZXIodWludDY0X3QgZG93bmxvYWRJRCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbik7CisjZW5k
aWYKIAogICAgIHZvaWQgc2V0VGV4dENoZWNrZXJTdGF0ZShjb25zdCBUZXh0Q2hlY2tlclN0YXRl
Jik7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KaW5kZXggNDRmNDQxOWEwNzg3ZmM3NzU5Y2M1MmIzZTU0NDM1Zjc5NWZjMzhmOC4u
ZjkxOTZhZTJhOThkMTdiNjgzYWQ0NzYwYzBiNWY0OTdhMTVlZmM4MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNjQsNiArNjQs
OSBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIHsKICAgICAjIHR3byBtZXNzYWdlcy4KICAgICBE
b3dubG9hZFJlcXVlc3QodWludDY0X3QgZG93bmxvYWRJRCwgdWludDY0X3QgaW5pdGlhdGluZ1Bh
Z2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QpCiAgICAgQ2FuY2VsRG93bmxv
YWQodWludDY0X3QgZG93bmxvYWRJRCkKKyNpZiBQTEFURk9STShRVCkKKyAgICBTdGFydFRyYW5z
ZmVyKHVpbnQ2NF90IGRvd25sb2FkSUQsIFdURjo6U3RyaW5nIGRlc3RpbmF0aW9uKQorI2VuZGlm
CiAKICAgICBTZXRUZXh0Q2hlY2tlclN0YXRlKFdlYktpdDo6VGV4dENoZWNrZXJTdGF0ZSB0ZXh0
Q2hlY2tlclN0YXRlKQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113460</attachid>
            <date>2011-11-03 04:35:43 -0700</date>
            <delta_ts>2011-11-03 04:38:24 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-68962-20111103133510.patch</filename>
            <type>text/plain</type>
            <size>63708</size>
            <attacher name="Jesus Sanchez-Palencia">jesus</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkxNjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggODEzNTU4NGJiOGRi
NTMwZDA1ZmE3MmJlOGJjMWI2OWU2Y2QyZDllNS4uYzY3OTI5YjA0NmIzYjFkYmQ2NmQ3ODhiZDUw
M2YxNDc3Y2U5NTRmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0xMS0w
MiAgSmVzdXMgU2FuY2hlei1QYWxlbmNpYSAgPGplc3VzLnBhbGVuY2lhQG9wZW5ib3NzYS5vcmc+
CisKKyAgICAgICAgW1F0XVtXSzJdIERvd25sb2FkIHN1cHBvcnQgYW5kIEFQSSBpbiBVSVByb2Nl
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4OTYy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVnaXN0
ZXJpbmcgbmV3IHFtbCB0eXBlIFFXZWJEb3dubG9hZEl0ZW0uCisKKyAgICAgICAgKiBkZWNsYXJh
dGl2ZS9wbHVnaW4uY3BwOgorICAgICAgICAoV2ViS2l0UW1sUGx1Z2luOjpyZWdpc3RlclR5cGVz
KToKKwogMjAxMS0xMS0wMiAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CiAKICAgICAgICAg
RXhwYW5kIERyYWdDb250cm9sbGVyIHRvIHByb3ZpZGUgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0
aGUgZHJhZ2dpbmcgc2Vzc2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDQ1YWQyMWM3NTY5YWY3ODQ5ZDcyYzgz
YWE4NGYzZDhiYzY3ZjNhMjIuLjFlM2QxMjA2NjFkMjVkMDljYWRmNzk0YjY3M2UxMzg3OGViY2Uw
NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNDggQEAKKzIwMTEtMTEtMDIgIEplc3VzIFNhbmNo
ZXotUGFsZW5jaWEgIDxqZXN1cy5wYWxlbmNpYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFtR
dF1bV0syXSBEb3dubG9hZCBzdXBwb3J0IGFuZCBBUEkgaW4gVUlQcm9jZXNzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODk2MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGltcGxlbWVudCBvdXIgV2tD
b250ZXh0RG93bmxvYWRDbGllbnQgYW5kIHRoZSBuZWVkZWQgY2FsbGJhY2tzLgorICAgICAgICBX
ZSBhbHNvIGFkZCBBUElzIGJ5IGV4cG9zaW5nIFFXZWJEb3dubG9hZEl0ZW0uIE9iamVjdHMgZnJv
bSB0aGlzIHR5cGUKKyAgICAgICAgaGF2ZSB0aGVpciBvd25lcnNoaXAgaGFuZGxlZCBieSBRRGVz
a3RvcFdlYlZpZXcgYW5kIHdpbGwgYmUgY3JlYXRlZCBvcgorICAgICAgICBkZXN0cm95ZWQgYXMg
bmVlZGVkLiBDbGFzc2VzIGltcGxlbWVudGluZyBWaWV3SW50ZXJmYWNlIChRRGVza3RvcFdlYlZp
ZXdQcml2YXRlCisgICAgICAgIGFuZCBUb3VjaFZpZXdJbnRlcmZhY2UpIHdpbGwgcmVjZWl2ZSBh
IHNpZ25hbCAoZG93bmxvYWRSZXF1ZXN0ZWQpIHdpdGggYSBwb2ludGVyCisgICAgICAgIHRvIHRo
ZSByZWNlbnRseSBjcmVhdGVkIFFXZWJEb3dubG9hZEl0ZW0uIFdpdGggdGhhdCB0aGV5IGNhbiBj
b25uZWN0IHRoZSBwcm9wZXIKKyAgICAgICAgc2lnbmFscyBhbmQgc2xvdHMsIHNldCB0aGUgZG93
bmxvYWQgZGVzdGluYXRpb24gcGF0aCBhbmQgdGhlbiBjYWxsIHN0YXJ0KCkuCisgICAgICAgIE9i
amVjdHMgb2YgdGhpcyB0eXBlIHdpbGwgcHJvdmlkZSB0aGUgcHJvZ3Jlc3Mgb2YgYSBkb3dubG9h
ZCwgYSBzbG90IHRvIGNhbmNlbCBpdCwKKyAgICAgICAgYW5kIHNpZ25hbHMgZm9yIGdldHRpbmcg
ZmluaXNoZWQgb3IgZmFpbHVyZSBzdGF0dXMuCisgICAgICAgIFFXZWJEb3dubG9hZEl0ZW0gd2Fz
IGFsc28gZXhwb3NlZCBpbiBRTUwuCisgICAgICAgIFF0IG5lZWRlZCBhbiBhc3luY2hyb25vdXMg
d2F5IGZvciBVSVByb2Nlc3MgdG8gcmV0dXJuIGEgZGVzdGluYXRpb24gcGF0aCB0byBXZWJQcm9j
ZXNzLAorICAgICAgICB0aGVyZWZvcmUgdGhlIHN0YXJ0VHJhbnNmZXIgQVBJIHdhcyBhZGRlZCB0
byBXZWJLaXQyJ3MgRG93bmxvYWQgaGFuZGxlcnMuCisKKyAgICAgICAgKiBTaGFyZWQvcXQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzUXQuY3BwOgorICAgICAgICAoQ29yZUlQQzo6OjplbmNvZGUpOgor
ICAgICAgICAoQ29yZUlQQzo6OjpkZWNvZGUpOgorICAgICAgICBBZGQgZW5jb2RpbmcgYW5kIGRl
Y29kaW5nIG9mIHN1Z2dlc3RlZEZpbGVuYW1lIGZvciBSZXNvdXJjZVJlc3BvbnNlLgorCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9xdC9XS1ZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L3F0L3FiYXNld2Vidmlldy5oOiBBZGQgc2lnbmFsIGRvd25sb2FkUmVxdWVzdGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFEZXNr
dG9wV2ViVmlld1ByaXZhdGU6OmRvd25sb2FkUmVxdWVzdGVkKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlld19wLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L3F0L3F3ZWJkb3dubG9hZGl0ZW0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFFXZWJEb3dubG9hZEl0
ZW1Qcml2YXRlOjpRV2ViRG93bmxvYWRJdGVtUHJpdmF0ZSk6CisgICAgICAgIChRV2ViRG93bmxv
YWRJdGVtOjpRV2ViRG93bmxvYWRJdGVtKToKKyAgICAgICAgKFFXZWJEb3dubG9hZEl0ZW06On5R
V2ViRG93bmxvYWRJdGVtKToKKyAgICAgICAgKFFXZWJEb3dubG9hZEl0ZW06OnVybCk6CisgICAg
ICAgIChRV2ViRG93bmxvYWRJdGVtOjpkZXN0aW5hdGlvblBhdGgpOgorICAgICAgICAoUVdlYkRv
d25sb2FkSXRlbTo6c2V0RGVzdGluYXRpb25QYXRoKToKKyAgICAgICAgKFFXZWJEb3dubG9hZEl0
ZW06OnN1Z2dlc3RlZEZpbGVuYW1lKToKKyAgICAgICAgKFFXZWJEb3dubG9hZEl0ZW06Om1pbWVU
eXBlKToKKyAgICAgICAgKFFXZWJEb3dubG9hZEl0ZW06OmV4cGVjdGVkQ29udGVudExlbmd0aCk6
CisgICAgICAgIChRV2ViRG93bmxvYWRJdGVtOjp0b3RhbEJ5dGVzUmVjZWl2ZWQpOgorICAgICAg
ICAoUVdlYkRvd25sb2FkSXRlbTo6Y2FuY2VsKToKKyAgICAgICAgKFFXZWJEb3dubG9hZEl0ZW06
OnN0YXJ0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F3ZWJkb3dubG9hZGl0ZW0uaDog
QWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxvYWRpdGVtX3AuaDog
QWRkZWQuCisgICAgICAgIChRV2ViRG93bmxvYWRJdGVtUHJpdmF0ZTo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvRGVza3Rv
cFdlYlZpZXcvdHN0X2Rvd25sb2FkLnFtbDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21tb24vZG93bmxvYWQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21tb24vZG93bmxvYWQuemlwOiBB
ZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL3FtbHRlc3Rz
LnBybzoKKworICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OnN0YXJ0VHJhbnNmZXIpOiBRdCBvbmx5
IGZ1bmN0aW9uIGFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQ
cm94eS5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDogQWRkZWQgUXQgc3Bl
Y2lmaWMgZnVuY3Rpb24gdG8gY2FsbCBoYW5kbGVEb3dubG9hZFJlcXVlc3QgZnJvbSBRdFdlYlBh
Z2VQcm94eS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29udGV4dDo6ZG93bmxvYWQpOgorICAgICAgICBVc2luZyBXZWJQYWdlUHJv
eHk6OmhhbmRsZURvd25sb2FkUmVxdWVzdCB0byBib290c3RyYXAgYSBkb3dubG9hZCB0aHJvdWdo
IFBhZ2VDbGllbnQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKToKKyAg
ICAgICAgVXNpbmcgaGFuZGxlRG93bmxvYWRSZXF1ZXN0KCkgdG8gYm9vdHN0cmFwIGEgZG93bmxv
YWQgdGhyb3VnaCBQYWdlQ2xpZW50LgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omhh
bmRsZURvd25sb2FkUmVxdWVzdCk6IENhbGxzIFBhZ2VDbGllbnQ6OmhhbmRsZURvd25sb2FkUmVx
dWVzdCgpLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKworICAgICAgICAq
IFVJUHJvY2Vzcy9xdC9RdERvd25sb2FkTWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0Ojp0b1F0RG93bmxvYWRNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6cXRfd2tfZGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6cXRfd2tfZGlkQ3JlYXRlRGVzdGluYXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpxdF93a19kaWRGaW5pc2hEb3dubG9hZCk6CisgICAgICAg
IChXZWJLaXQ6OnF0X3drX2RpZEZhaWxEb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OnF0X3dr
X2RpZFJlY2VpdmVEYXRhRm9yRG93bmxvYWQpOgorICAgICAgICAoUXREb3dubG9hZE1hbmFnZXI6
OmRvd25sb2FkUmVjZWl2ZWRSZXNwb25zZSk6IFdpbGwgcmVhY2ggUXRXZWJQYWdlUHJveHk6OmRp
ZFJlY2VpdmVEb3dubG9hZFJlc3BvbnNlLgorICAgICAgICAoUXREb3dubG9hZE1hbmFnZXI6OmRv
d25sb2FkQ3JlYXRlZERlc3RpbmF0aW9uKToKKyAgICAgICAgKFF0RG93bmxvYWRNYW5hZ2VyOjpk
b3dubG9hZEZpbmlzaGVkKToKKyAgICAgICAgKFF0RG93bmxvYWRNYW5hZ2VyOjpkb3dubG9hZEZh
aWxlZCk6CisgICAgICAgIChRdERvd25sb2FkTWFuYWdlcjo6ZG93bmxvYWREYXRhUmVjZWl2ZWQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdERvd25sb2FkTWFuYWdlci5oOiBBZGRlZC4KKyAg
ICAgICAgQm9vdHN0cmFwIG91ciBXS0NvbnRleHREb3dubG9hZENsaWVudCBhbmQgc2V0IGl0cyBj
YWxsYmFja3MuCisgICAgICAgIFRoaXMgZW50aXR5IHdpbGwgYWxzbyBoYW5kbGUgYWxsIGRvd25s
b2FkcyBhbmQga2VlcCBhIG1hcCBvZiB0aGVtLgorICAgICAgICBJdCB3aWxsIGJlIGtlcHQgYWxp
dmUgdG9nZXRoZXIgd2l0aCB0aGUgV2ViQ29udGV4dCBhcyBhIHN0YXRpYyBtZW1iZXIKKyAgICAg
ICAgb2YgUXRXZWJQYWdlUHJveHksIHNvIHdlIGNhbiBrZWVwIGl0IGFjcm9zcyBzZXZlcmFsIFdl
YlBhZ2VzIGFuZCwgdGhlcmVmb3JlLAorICAgICAgICBXZWJWaWV3cy4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChRdFdlYlBhZ2VQcm94eTo6
ZGVmYXVsdFdLQ29udGV4dCk6CisgICAgICAgIChRdFdlYlBhZ2VQcm94eTo6flF0V2ViUGFnZVBy
b3h5KToKKyAgICAgICAgKFF0V2ViUGFnZVByb3h5OjpoYW5kbGVEb3dubG9hZFJlcXVlc3QpOgor
ICAgICAgICAoUXRXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVEb3dubG9hZFJlc3BvbnNlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaDoKKyAgICAgICAgRnJvbSBub3cg
b24gaXQgd2lsbCBrZWVwIGEgc3RhdGljIFF0RG93bmxvYWRNYW5hZ2VyIHRvIGxpdmUgdG9nZXRo
ZXIKKyAgICAgICAgd2l0aCB0aGUgZGVmYXVsdCBXZWJDb250ZXh0LiBJdCBpbXBsZW1lbnRzIFBh
Z2VDbGllbnQ6OmhhbmRsZURvd25sb2FkUmVxdWVzdC4KKyAgICAgICAgUXRXZWJQYWdlUHJveHk6
OmRpZFJlY2VpdmVEb3dubG9hZFJlc3BvbnNlIHdpbGwgZW1pdCB0aGUgdmlldydzIHNpZ25hbCBk
b3dubG9hZFJlcXVlc3RlZC4KKworICAgICAgICogVUlQcm9jZXNzL3F0L1F0VG91Y2hWaWV3SW50
ZXJmYWNlLmg6CisgICAgICAgIChXZWJLaXQ6OlF0VG91Y2hWaWV3SW50ZXJmYWNlOjpkb3dubG9h
ZFJlcXVlc3RlZCk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0Vmlld0ludGVyZmFjZS5oOgor
CisgICAgICAgICogVUlQcm9jZXNzL3F0L3F3ZWJlcnJvci5jcHA6CisgICAgICAgIChRV2ViRXJy
b3I6OmRlc2NyaXB0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvcXdlYmVycm9yLmg6Cisg
ICAgICAgIChRV2ViRXJyb3I6OmVycm9yQ29kZUFzRG93bmxvYWRFcnJvcik6CisgICAgICAgIEFk
ZCBEb3dubG9hZCBlcnJvciBoYW5kbGluZyB0byBRV2ViRXJyb3IgYW5kIGEgbmV3IEFQSQorICAg
ICAgICB0byByZXRyaWV2ZSB0aGUgZXJyb3IgZGVzY3JpcHRpb24gZnJvbSB0aGUgb3JpZ2luYWwg
UmVzb3VyY2VFcnJvci4KKyAgICAgICAgQWxzbywgaXQgbm93IGhhcyBRV2ViRG93bmxvYWRJdGVt
OjpEb3dubG9hZEVycm9yIGVycm9yQ29kZUFzRG93bmxvYWRFcnJvcigpCisgICAgICAgIHRoYXQg
cmV0dXJucyB0aGUgZXJyb3IgY29kZSBhcyBhIERvd25sb2FkRXJyb3IuCisKKyAgICAgICAgKiBX
ZWJLaXQyLnBybzoKKyAgICAgICAgKiBXZWJLaXQyQVBJLnByaToKKworICAgICAgICAqIFdlYlBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2Vy
OjpzdGFydFRyYW5zZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZE1hbmFnZXIuaDoKKyAgICAgICAgQWRkaW5nIFF0IHNwZWNpZmljIHN0YXJ0VHJhbnNmZXIgZnVu
Y3Rpb24uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9Eb3dubG9hZFF0LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6
RG93bmxvYWQ6OnN0YXJ0V2l0aEhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpk
aWREZWNpZGVEZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpzdGFydFRy
YW5zZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3dubG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UXRGaWxlRG93bmxvYWRlcjo6aW5pdCk6IHN0YXJ0
KCkgd2FzIHJlbmFtZWQgdG8gaW5pdCgpLgorICAgICAgICAoV2ViS2l0OjpRdEZpbGVEb3dubG9h
ZGVyOjpkZXRlcm1pbmVGaWxlbmFtZSk6CisgICAgICAgIENhbGxpbmcgb25SZWFkeVJlYWQoKSBo
ZXJlIHdhcyB1bm5lY2Vzc2FyeSBhbmQgaXQgd2FzIHRyaWdnZXJpbmcgdGhlIG92ZXJhbGwKKyAg
ICAgICAgZG93bmxvYWQgcHJvY2VzcyBldmVuIGJlZm9yZSBEb3dubG9hZE1hbmFnZXIgZmluaXNo
ZWQgc3RhcnREb3dubG9hZCgpLiBUaGlzCisgICAgICAgIHdhcyBsZWFkaW5nIHRvIGEgRG93bmxv
YWRNYW5hZ2VyIHdpdGggYW4gZW1wdHkgbGlzdCBvZiBkb3dubG9hZHMuCisgICAgICAgIChXZWJL
aXQ6OlF0RmlsZURvd25sb2FkZXI6OnN0YXJ0VHJhbnNmZXIpOiBkZWNpZGVkRGVzdGluYXRpb24o
KSBiZWNhbWUgc3RhcnRUcmFuc2ZlcigpLgorICAgICAgICAoV2ViS2l0OjpRdEZpbGVEb3dubG9h
ZGVyOjphYm9ydERvd25sb2FkV3JpdGluZ0FuZEVtaXRFcnJvcik6CisgICAgICAgIChXZWJLaXQ6
OlF0RmlsZURvd25sb2FkZXI6OmhhbmRsZURvd25sb2FkUmVzcG9uc2UpOgorICAgICAgICAoV2Vi
S2l0OjpRdEZpbGVEb3dubG9hZGVyOjpvblJlYWR5UmVhZCk6CisgICAgICAgIChXZWJLaXQ6OlF0
RmlsZURvd25sb2FkZXI6Om9uRmluaXNoZWQpOgorICAgICAgICAoV2ViS2l0OjpRdEZpbGVEb3du
bG9hZGVyOjpjYW5jZWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvRG93bmxvYWRzL3F0L1F0Rmls
ZURvd25sb2FkZXIuaDoKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnN0YXJ0VHJhbnNmZXIpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgQWRkaW5nIFF0IHNwZWNpZmljIG1lc3NhZ2UgU3RhcnRUcmFu
c2ZlciBhbmQgaGFuZGxpbmcgZnVuY3Rpb24uCisKIDIwMTEtMTEtMDMgIFNpbW9uIEhhdXNtYW5u
ICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gW1dLMl0gTWluaUJy
b3dzZXIgYXNzZXJ0IGluIFF0V2ViUHJvY2Nlc3Mgb24gc3RhcnR1cCBpbiBkZWJ1ZyBidWlsZC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvZGVjbGFyYXRpdmUvcGx1Z2luLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvcXQvZGVjbGFyYXRpdmUvcGx1Z2luLmNwcAppbmRleCBjZjNiZGQ0YTEyZWI2
OTY1NzI0ZGI5YTY1ZWM3YTUzZWJlNjQ5YzU2Li5hNTFlZGJjNGQ4YzUyOTBlODU5ZjJhNDA3MmRk
ZmU2MjkzZDFjNGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L2RlY2xhcmF0aXZlL3Bs
dWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9kZWNsYXJhdGl2ZS9wbHVnaW4uY3BwCkBA
IC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAicWRlc2t0b3B3ZWJ2aWV3LmgiCiAjaW5jbHVkZSAi
cXRvdWNod2VicGFnZS5oIgogI2luY2x1ZGUgInF0b3VjaHdlYnZpZXcuaCIKKyNpbmNsdWRlICJx
d2ViZG93bmxvYWRpdGVtLmgiCiAjaW5jbHVkZSAicXdlYm5hdmlnYXRpb25jb250cm9sbGVyLmgi
CiAjaW5jbHVkZSAicXdlYnByZWZlcmVuY2VzLmgiCiAKQEAgLTU1LDYgKzU2LDcgQEAgcHVibGlj
OgogICAgICAgICBxbWxSZWdpc3RlclVuY3JlYXRhYmxlVHlwZTxRV2ViUHJlZmVyZW5jZXM+KHVy
aSwgMywgMCwgIldlYlByZWZlcmVuY2VzIiwgUU9iamVjdDo6dHIoIkNhbm5vdCBjcmVhdGUgc2Vw
YXJhdGUgaW5zdGFuY2Ugb2YgV2ViUHJlZmVyZW5jZXMiKSk7CiAgICAgICAgIHFtbFJlZ2lzdGVy
VW5jcmVhdGFibGVUeXBlPFFUb3VjaFdlYlBhZ2U+KHVyaSwgMywgMCwgIlRvdWNoV2ViUGFnZSIs
IFFPYmplY3Q6OnRyKCJDYW5ub3QgY3JlYXRlIHNlcGFyYXRlIGluc3RhbmNlIG9mIFRvdWNoV2Vi
UGFnZSwgdXNlIFRvdWNoV2ViVmlldyIpKTsKICAgICAgICAgcW1sUmVnaXN0ZXJVbmNyZWF0YWJs
ZVR5cGU8UU5ldHdvcmtSZXBseT4odXJpLCAzLCAwLCAiTmV0d29ya1JlcGx5IiwgUU9iamVjdDo6
dHIoIkNhbm5vdCBjcmVhdGUgc2VwYXJhdGUgaW5zdGFuY2Ugb2YgTmV0d29ya1JlcGx5IikpOwor
ICAgICAgICBxbWxSZWdpc3RlclVuY3JlYXRhYmxlVHlwZTxRV2ViRG93bmxvYWRJdGVtPih1cmks
IDUsIDAsICJEb3dubG9hZEl0ZW0iLCBRT2JqZWN0Ojp0cigiQ2Fubm90IGNyZWF0ZSBzZXBhcmF0
ZSBpbnN0YW5jZSBvZiBEb3dubG9hZEl0ZW0iKSk7CiAjZW5kaWYKICAgICB9CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1dlYkNvcmVBcmd1bWVudENvZGVyc1F0LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9XZWJDb3JlQXJndW1lbnRDb2RlcnNRdC5jcHAK
aW5kZXggMWZjMTVjNTk2ZjZmY2Y3ZDlmOGQzM2ZkZWViMzNjMWVlZTI4NmE3Yi4uOTUwZDM3MmQy
ZGRjN2U0NmY4MDc3ODM5NTBlMGMyODc2ZTM3ZGI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL3F0L1dlYkNvcmVBcmd1bWVudENvZGVyc1F0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvcXQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzUXQuY3BwCkBAIC02MSw2ICs2MSw3
IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlc3BvbnNlPjo6ZW5jb2RlKEFyZ3VtZW50
RW5jb2RlciogZW5jb2RlciwgY29uc3QgUmVzCiAgICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNl
UmVzcG9uc2UubWltZVR5cGUoKSk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PGlu
dDY0X3Q+KHJlc291cmNlUmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkpKTsKICAgICBl
bmNvZGVyLT5lbmNvZGUocmVzb3VyY2VSZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lKCkpOworICAg
IGVuY29kZXItPmVuY29kZShyZXNvdXJjZVJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lKCkpOwog
fQogCiBib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXNwb25zZT46OmRlY29kZShBcmd1bWVu
dERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlUmVzcG9uc2UmIHJlc291cmNlUmVzcG9uc2UpCkBA
IC04Nyw2ICs4OCwxMSBAQCBib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXNwb25zZT46OmRl
Y29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlUgogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgcmVzcG9uc2Uuc2V0VGV4dEVuY29kaW5nTmFtZSh0ZXh0RW5jb2RpbmdOYW1l
KTsKIAorICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZTsKKyAgICBpZiAoIWRlY29kZXItPmRl
Y29kZShzdWdnZXN0ZWRGaWxlbmFtZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXNw
b25zZS5zZXRTdWdnZXN0ZWRGaWxlbmFtZShzdWdnZXN0ZWRGaWxlbmFtZSk7CisKICAgICByZXNv
dXJjZVJlc3BvbnNlID0gcmVzcG9uc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L1dLVmlldy5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9XS1ZpZXcuaAppbmRleCAzMWY2NzI2ZjkzNmM2YzdjMjMxYzRl
NmE3NWY1MWFmMzBiMjA2NjZhLi44MmRlYTQ3ZjVmNmI5Yzg0NzEwYmVjNmI2MDc3NDNjZmZmODIw
YTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L1dLVmlldy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvV0tWaWV3LmgKQEAgLTIzLDYg
KzIzLDcgQEAKICNpbmNsdWRlIDxXZWJLaXQyL3FkZXNrdG9wd2Vidmlldy5oPgogI2luY2x1ZGUg
PFdlYktpdDIvcXRvdWNod2Vidmlldy5oPgogI2luY2x1ZGUgPFdlYktpdDIvcXRvdWNod2VicGFn
ZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvcXdlYmRvd25sb2FkaXRlbS5oPgogI2luY2x1ZGUgPFdl
YktpdDIvcXdlYm5hdmlnYXRpb25jb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9xd2Vi
cHJlZmVyZW5jZXMuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xYmFzZXdlYnZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWJh
c2V3ZWJ2aWV3LmgKaW5kZXggZGE3NmUzODhlNDJkMGFlODNjMzBlOGM0MTU5N2ZiNGJiODUwNzZl
Ny4uMDVjZjU1MDEwOGUzMTBiNjE4MGZiNzViNzNmNDNmMTY5NjVhN2IyZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xYmFzZXdlYnZpZXcuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FiYXNld2Vidmlldy5oCkBAIC0yNSw2ICsyNSw3
IEBACiAjaW5jbHVkZSA8UXREZWNsYXJhdGl2ZS9xcXVpY2twYWludGVkaXRlbS5oPgogCiBjbGFz
cyBRQmFzZVdlYlZpZXdQcml2YXRlOworY2xhc3MgUVdlYkRvd25sb2FkSXRlbTsKIGNsYXNzIFFX
ZWJOYXZpZ2F0aW9uQ29udHJvbGxlcjsKIGNsYXNzIFFXZWJQcmVmZXJlbmNlczsKIApAQCAtNTIs
NyArNTMsOCBAQCBwdWJsaWM6CiAgICAgZW51bSBFcnJvclR5cGUgewogICAgICAgICBFbmdpbmVF
cnJvciwKICAgICAgICAgTmV0d29ya0Vycm9yLAotICAgICAgICBIdHRwRXJyb3IKKyAgICAgICAg
SHR0cEVycm9yLAorICAgICAgICBEb3dubG9hZEVycm9yCiAgICAgfTsKICAgICB2aXJ0dWFsIH5R
QmFzZVdlYlZpZXcoKTsKIApAQCAtNzksNiArODEsNyBAQCBRX1NJR05BTFM6CiAgICAgdm9pZCBs
b2FkUHJvZ3Jlc3NDaGFuZ2VkKGludCBwcm9ncmVzcyk7CiAgICAgdm9pZCB1cmxDaGFuZ2VkKGNv
bnN0IFFVcmwmIHVybCk7CiAgICAgdm9pZCBtZXNzYWdlUmVjZWl2ZWQoY29uc3QgUVZhcmlhbnRN
YXAmIG1lc3NhZ2UpOworICAgIHZvaWQgZG93bmxvYWRSZXF1ZXN0ZWQoUVdlYkRvd25sb2FkSXRl
bSogZG93bmxvYWRJdGVtKTsKIAogcHJvdGVjdGVkOgogICAgIFFCYXNlV2ViVmlldyhRQmFzZVdl
YlZpZXdQcml2YXRlICZkZCwgUVF1aWNrSXRlbSAqcGFyZW50ID0gMCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHAKaW5kZXggOGIw
ODU1YzAzMWE5NTEwMzVlZjM3Mjg3NWQ1YTY2MWU2ZGJhNmNhNC4uODA5YTU5MTU4YzZmMDM3NjJk
NWI1NmMwYWNlMDJlMGViNzJmMWFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcApAQCAtMjUsMTEgKzI1LDEzIEBACiAjaW5j
bHVkZSAiUXRXZWJFcnJvci5oIgogI2luY2x1ZGUgIlV0aWxzUXQuaCIKICNpbmNsdWRlICJxZGVz
a3RvcHdlYnZpZXdfcC5oIgorI2luY2x1ZGUgInF3ZWJkb3dubG9hZGl0ZW0uaCIKICNpbmNsdWRl
IDxRRmlsZURpYWxvZz4KICNpbmNsdWRlIDxRdERlY2xhcmF0aXZlL3FkZWNsYXJhdGl2ZWVuZ2lu
ZS5oPgogI2luY2x1ZGUgPFF0RGVjbGFyYXRpdmUvcXF1aWNrY2FudmFzLmg+CiAjaW5jbHVkZSA8
UXREZWNsYXJhdGl2ZS9xcXVpY2t2aWV3Lmg+CiAjaW5jbHVkZSA8UXRHdWkvUUN1cnNvcj4KKyNp
bmNsdWRlIDxRdEd1aS9RRGVza3RvcFNlcnZpY2VzPgogI2luY2x1ZGUgPFF0R3VpL1FEcmFnPgog
I2luY2x1ZGUgPFF0R3VpL1FGb2N1c0V2ZW50PgogI2luY2x1ZGUgPFF0R3VpL1FHdWlBcHBsaWNh
dGlvbj4KQEAgLTQ5Nyw2ICs0OTksMTcgQEAgdm9pZCBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpk
aWRNb3VzZU1vdmVPdmVyRWxlbWVudChjb25zdCBRVXJsJiBsaW5rVVJMLCBjb25zdAogICAgIGVt
aXQgcS0+bGlua0hvdmVyZWQobGFzdEhvdmVyZWRVUkwsIGxhc3RIb3ZlcmVkVGl0bGUpOwogfQog
Cit2b2lkIFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OmRvd25sb2FkUmVxdWVzdGVkKFFXZWJEb3du
bG9hZEl0ZW0qIGRvd25sb2FkSXRlbSkKK3sKKyAgICBpZiAoIWRvd25sb2FkSXRlbSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgUV9RKFFEZXNrdG9wV2ViVmlldyk7CisKKyAgICBRRGVjbGFyYXRp
dmVFbmdpbmU6OnNldE9iamVjdE93bmVyc2hpcChkb3dubG9hZEl0ZW0sIFFEZWNsYXJhdGl2ZUVu
Z2luZTo6SmF2YVNjcmlwdE93bmVyc2hpcCk7CisgICAgZW1pdCBxLT5kb3dubG9hZFJlcXVlc3Rl
ZChkb3dubG9hZEl0ZW0pOworfQorCiBzdGF0aWMgUXRQb2xpY3lJbnRlcmZhY2U6OlBvbGljeUFj
dGlvbiB0b1BvbGljeUFjdGlvbihRRGVza3RvcFdlYlZpZXc6Ok5hdmlnYXRpb25Qb2xpY3kgcG9s
aWN5KQogewogICAgIHN3aXRjaCAocG9saWN5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlld19wLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlld19wLmgKaW5kZXggY2JmOTNkNjFkYjAxMWY1
NjcyN2U0NjczMzk2NDQyZDA1NWRmYTcwMC4uMjUyZTZjMzA0NzVjMzhjOTNiNmM2OWU1MDhiOTUz
ZGExZWExY2JkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
ZGVza3RvcHdlYnZpZXdfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cWRlc2t0b3B3ZWJ2aWV3X3AuaApAQCAtODQsNiArODQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgUUpTRW5naW5lKiBlbmdpbmUoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBjaG9vc2VGaWxlcyhX
S09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmLCBjb25zdCBRU3RyaW5nTGlzdCYgc2VsZWN0ZWRG
aWxlTmFtZXMsIFF0Vmlld0ludGVyZmFjZTo6RmlsZUNob29zZXJUeXBlKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZG93bmxvYWRSZXF1ZXN0ZWQoUVdlYkRvd25sb2FkSXRlbSogZG93bmxvYWRJdGVtKTsK
IAogICAgIHZpcnR1YWwgdm9pZCBkaWRNb3VzZU1vdmVPdmVyRWxlbWVudChjb25zdCBRVXJsJiwg
Y29uc3QgUVN0cmluZyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3F3ZWJkb3dubG9hZGl0ZW0uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xd2ViZG93bmxvYWRpdGVtLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NTkwYjc0OGNkMDg5MzUzMjVk
ZDUwNDg1ZmJlNzhkNTg5MzkxOTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxvYWRpdGVtLmNwcApAQCAtMCwwICsxLDk2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKQorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgInF3ZWJkb3du
bG9hZGl0ZW0uaCIKKworI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKKyNpbmNsdWRlICJxd2Vi
ZG93bmxvYWRpdGVtX3AuaCIKKworUVdlYkRvd25sb2FkSXRlbVByaXZhdGU6OlFXZWJEb3dubG9h
ZEl0ZW1Qcml2YXRlKFFXZWJEb3dubG9hZEl0ZW0qIHFxKQorICAgIDogcShxcSkKKyAgICAsIGRv
d25sb2FkUHJveHkoMCkKKyAgICAsIGV4cGVjdGVkQ29udGVudExlbmd0aCgwKQorICAgICwgdG90
YWxCeXRlc1JlY2VpdmVkKDApCit7Cit9CisKK1FXZWJEb3dubG9hZEl0ZW06OlFXZWJEb3dubG9h
ZEl0ZW0oUU9iamVjdCogcGFyZW50KQorICAgIDogUU9iamVjdChwYXJlbnQpCisgICAgLCBkKG5l
dyBRV2ViRG93bmxvYWRJdGVtUHJpdmF0ZSh0aGlzKSkKK3sKK30KKworUVdlYkRvd25sb2FkSXRl
bTo6flFXZWJEb3dubG9hZEl0ZW0oKQoreworICAgIGRlbGV0ZSBkOworfQorCitRVXJsIFFXZWJE
b3dubG9hZEl0ZW06OnVybCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPnNvdXJjZVVybDsKK30K
KworUVN0cmluZyBRV2ViRG93bmxvYWRJdGVtOjpkZXN0aW5hdGlvblBhdGgoKSBjb25zdAorewor
ICAgIHJldHVybiBkLT5kZXN0aW5hdGlvblBhdGg7Cit9CisKK3ZvaWQgUVdlYkRvd25sb2FkSXRl
bTo6c2V0RGVzdGluYXRpb25QYXRoKGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uKQoreworICAg
IGQtPmRlc3RpbmF0aW9uUGF0aCA9IGRlc3RpbmF0aW9uOworfQorCitRU3RyaW5nIFFXZWJEb3du
bG9hZEl0ZW06OnN1Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZC0+c3Vn
Z2VzdGVkRmlsZW5hbWU7Cit9CisKK1FTdHJpbmcgUVdlYkRvd25sb2FkSXRlbTo6bWltZVR5cGUo
KSBjb25zdAoreworICAgIHJldHVybiBkLT5taW1lVHlwZTsKK30KKworcXVpbnQ2NCBRV2ViRG93
bmxvYWRJdGVtOjpleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBk
LT5leHBlY3RlZENvbnRlbnRMZW5ndGg7Cit9CisKK3F1aW50NjQgUVdlYkRvd25sb2FkSXRlbTo6
dG90YWxCeXRlc1JlY2VpdmVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZC0+dG90YWxCeXRlc1Jl
Y2VpdmVkOworfQorCit2b2lkIFFXZWJEb3dubG9hZEl0ZW06OmNhbmNlbCgpCit7CisgICAgQVNT
RVJUKGQtPmRvd25sb2FkUHJveHkpOworICAgIGQtPmRvd25sb2FkUHJveHktPmNhbmNlbCgpOwor
fQorCit2b2lkIFFXZWJEb3dubG9hZEl0ZW06OnN0YXJ0KCkKK3sKKyAgICBBU1NFUlQoIWQtPnN1
Z2dlc3RlZEZpbGVuYW1lLmlzRW1wdHkoKSk7CisKKyAgICBpZiAoZC0+ZGVzdGluYXRpb25QYXRo
LmlzRW1wdHkoKSkKKyAgICAgICAgZC0+ZGVzdGluYXRpb25QYXRoID0gZC0+c3VnZ2VzdGVkRmls
ZW5hbWU7CisKKyAgICBkLT5kb3dubG9hZFByb3h5LT5zdGFydFRyYW5zZmVyKGQtPmRlc3RpbmF0
aW9uUGF0aCk7Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcXdlYmRvd25sb2FkaXRlbS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
d2ViZG93bmxvYWRpdGVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjQ0YzViMDgzODJiYmU4YmFjYTM5MjI0YWZm
OWZkODVkMGQ1Njg4NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXdlYmRvd25sb2FkaXRlbS5oCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoK
KyAqLworCisjaWZuZGVmIHF3ZWJkb3dubG9hZGl0ZW1faAorI2RlZmluZSBxd2ViZG93bmxvYWRp
dGVtX2gKKworI2luY2x1ZGUgInF3ZWJraXRnbG9iYWwuaCIKKyNpbmNsdWRlIDxRT2JqZWN0Pgor
I2luY2x1ZGUgPFFVcmw+CisKK2NsYXNzIFFXZWJEb3dubG9hZEl0ZW1Qcml2YXRlOworY2xhc3Mg
UXRXZWJFcnJvcjsKKworUVRfQkVHSU5fTkFNRVNQQUNFCitjbGFzcyBRU3RyaW5nOworUVRfRU5E
X05BTUVTUEFDRQorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFF0RG93bmxvYWRNYW5hZ2Vy
OworfQorCitjbGFzcyBRV0VCS0lUX0VYUE9SVCBRV2ViRG93bmxvYWRJdGVtIDogcHVibGljIFFP
YmplY3QgeworICAgIFFfT0JKRUNUCisgICAgUV9QUk9QRVJUWShxdWludDY0IGV4cGVjdGVkQ29u
dGVudExlbmd0aCBSRUFEIGV4cGVjdGVkQ29udGVudExlbmd0aCBDT05TVEFOVCBGSU5BTCkKKyAg
ICBRX1BST1BFUlRZKFFTdHJpbmcgZGVzdGluYXRpb25QYXRoIFJFQUQgZGVzdGluYXRpb25QYXRo
IFdSSVRFIHNldERlc3RpbmF0aW9uUGF0aCkKKyAgICBRX1BST1BFUlRZKFFTdHJpbmcgc3VnZ2Vz
dGVkRmlsZW5hbWUgUkVBRCBzdWdnZXN0ZWRGaWxlbmFtZSBDT05TVEFOVCBGSU5BTCkKKyAgICBR
X1BST1BFUlRZKHF1aW50NjQgdG90YWxCeXRlc1JlY2VpdmVkIFJFQUQgdG90YWxCeXRlc1JlY2Vp
dmVkIE5PVElGWSB0b3RhbEJ5dGVzUmVjZWl2ZWRDaGFuZ2VkIEZJTkFMKQorICAgIFFfUFJPUEVS
VFkoUVVybCB1cmwgUkVBRCB1cmwgQ09OU1RBTlQgRklOQUwpCisgICAgUV9FTlVNUyhEb3dubG9h
ZEVycm9yKQorcHVibGljOgorICAgIHZpcnR1YWwgflFXZWJEb3dubG9hZEl0ZW0oKTsKKworICAg
IGVudW0gRG93bmxvYWRFcnJvciB7CisgICAgICAgIEFib3J0ZWQgPSAwLAorICAgICAgICBDYW5u
b3RXcml0ZVRvRmlsZSwKKyAgICAgICAgQ2Fubm90T3BlbkZpbGUsCisgICAgICAgIERlc3RpbmF0
aW9uQWxyZWFkeUV4aXN0cywKKyAgICAgICAgQ2FuY2VsbGVkLAorICAgICAgICBDYW5ub3REZXRl
cm1pbmVGaWxlbmFtZSwKKyAgICAgICAgTmV0d29ya0ZhaWx1cmUKKyAgICB9OworCisgICAgUVVy
bCB1cmwoKSBjb25zdDsKKyAgICBRU3RyaW5nIGRlc3RpbmF0aW9uUGF0aCgpIGNvbnN0OworICAg
IFFTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25zdDsKKyAgICBRU3RyaW5nIG1pbWVUeXBl
KCkgY29uc3Q7CisgICAgcXVpbnQ2NCBleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBjb25zdDsKKyAg
ICBxdWludDY0IHRvdGFsQnl0ZXNSZWNlaXZlZCgpIGNvbnN0OworICAgIHZvaWQgc2V0RGVzdGlu
YXRpb25QYXRoKGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uKTsKKworcHVibGljIFFfU0xPVFM6
CisgICAgdm9pZCBzdGFydCgpOworICAgIHZvaWQgY2FuY2VsKCk7CisKK1FfU0lHTkFMUzoKKyAg
ICB2b2lkIGRlc3RpbmF0aW9uRmlsZUNyZWF0ZWQoY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb25Q
YXRoKTsKKyAgICB2b2lkIHRvdGFsQnl0ZXNSZWNlaXZlZENoYW5nZWQocXVpbnQ2NCBieXRlc1Jl
Y2VpdmVkKTsKKyAgICB2b2lkIHN1Y2NlZWRlZCgpOworICAgIHZvaWQgZmFpbGVkKFFXZWJEb3du
bG9hZEl0ZW06OkRvd25sb2FkRXJyb3IgZXJyb3IsIGNvbnN0IFFVcmwmIHVybCwgY29uc3QgUVN0
cmluZyYgZGVzY3JpcHRpb24pOworCitwcml2YXRlOgorICAgIFFXZWJEb3dubG9hZEl0ZW0oUU9i
amVjdCogcGFyZW50ID0gMCk7CisgICAgUVdlYkRvd25sb2FkSXRlbVByaXZhdGUqIGQ7CisKKyAg
ICBmcmllbmQgY2xhc3MgV2ViS2l0OjpRdERvd25sb2FkTWFuYWdlcjsKKyAgICBmcmllbmQgY2xh
c3MgUXRXZWJQYWdlUHJveHk7Cit9OworCisjZW5kaWYgLyogcXdlYmRvd25sb2FkaXRlbV9oICov
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJkb3dubG9h
ZGl0ZW1fcC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxvYWRp
dGVtX3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iYjhjMjUyYTc3N2Q3ZDgyNGRjOTI4ODlhZDkxYWZmMmFkYWEx
MGZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
d2ViZG93bmxvYWRpdGVtX3AuaApAQCAtMCwwICsxLDUzIEBACisvKgorICAgIENvcHlyaWdodCAo
QykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAg
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLwor
CisKKyNpZm5kZWYgcXdlYmRvd25sb2FkaXRlbV9wX2gKKyNkZWZpbmUgcXdlYmRvd25sb2FkaXRl
bV9wX2gKKworI2luY2x1ZGUgInF3ZWJkb3dubG9hZGl0ZW0uaCIKKyNpbmNsdWRlIDxRVXJsPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIERvd25sb2FkUHJveHk7Cit9CisKK2NsYXNzIFFX
ZWJEb3dubG9hZEl0ZW1Qcml2YXRlIDogcHVibGljIFFPYmplY3QgeworICAgIFFfT0JKRUNUCitw
dWJsaWM6CisgICAgUVdlYkRvd25sb2FkSXRlbVByaXZhdGUoUVdlYkRvd25sb2FkSXRlbSopOwor
CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUVdlYkRvd25sb2FkSXRlbSogZG93bmxvYWQp
IHsgZW1pdCByZWNlaXZlZFJlc3BvbnNlKGRvd25sb2FkKTsgfQorCisgICAgUVdlYkRvd25sb2Fk
SXRlbSogcTsKKworICAgIFdlYktpdDo6RG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eTsKKwor
ICAgIFFVcmwgc291cmNlVXJsOworICAgIFFTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWU7CisgICAg
UVN0cmluZyBkZXN0aW5hdGlvblBhdGg7CisgICAgUVN0cmluZyBtaW1lVHlwZTsKKyAgICBxdWlu
dDY0IGV4cGVjdGVkQ29udGVudExlbmd0aDsKKyAgICBxdWludDY0IHRvdGFsQnl0ZXNSZWNlaXZl
ZDsKKworUV9TSUdOQUxTOgorICAgIHZvaWQgcmVjZWl2ZWRSZXNwb25zZShRV2ViRG93bmxvYWRJ
dGVtKik7Cit9OworCisjZW5kaWYgLyogcXdlYmRvd25sb2FkaXRlbV9wX2ggKi8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvRGVza3Rv
cFdlYlZpZXcvdHN0X2Rvd25sb2FkLnFtbCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvdGVzdHMvcW1sdGVzdHMvRGVza3RvcFdlYlZpZXcvdHN0X2Rvd25sb2FkLnFtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lYjVjODU1YmNhNTA3MTFiNWRlYzE2Njc4OWY0MGE4ZGE4OTM1MzlkCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9E
ZXNrdG9wV2ViVmlldy90c3RfZG93bmxvYWQucW1sCkBAIC0wLDAgKzEsNzUgQEAKK2ltcG9ydCBR
dFF1aWNrIDIuMAoraW1wb3J0IFF0VGVzdCAxLjAKK2ltcG9ydCBRdFdlYktpdCAzLjAKKworRGVz
a3RvcFdlYlZpZXcgeworICAgIGlkOiB3ZWJWaWV3CisgICAgd2lkdGg6IDIwMAorICAgIGhlaWdo
dDogNDAwCisKKyAgICBwcm9wZXJ0eSBpbnQgZXhwZWN0ZWRMZW5ndGggOiAwCisgICAgcHJvcGVy
dHkgaW50IHRvdGFsQnl0ZXMgOiAwCisKKyAgICBTaWduYWxTcHkgeworICAgICAgICBpZDogc3B5
CisgICAgICAgIHRhcmdldDogd2ViVmlldworICAgICAgICBzaWduYWxOYW1lOiAiZG93bmxvYWRS
ZXF1ZXN0ZWQiCisgICAgfQorCisgICAgb25Eb3dubG9hZFJlcXVlc3RlZDogeworICAgICAgICBk
b3dubG9hZC50YXJnZXQgPSBkb3dubG9hZEl0ZW0KKyAgICAgICAgZXhwZWN0ZWRMZW5ndGggPSBk
b3dubG9hZEl0ZW0uZXhwZWN0ZWRDb250ZW50TGVuZ3RoCisgICAgICAgIGRvd25sb2FkSXRlbS5k
ZXN0aW5hdGlvblBhdGggPSBkb3dubG9hZEl0ZW0uc3VnZ2VzdGVkRmlsZW5hbWUKKyAgICAgICAg
ZG93bmxvYWRJdGVtLnN0YXJ0KCkKKyAgICB9CisKKyAgICBDb25uZWN0aW9ucyB7CisgICAgICAg
IGlkOiBkb3dubG9hZAorICAgICAgICBpZ25vcmVVbmtub3duU2lnbmFsczogdHJ1ZQorICAgICAg
ICBvblN1Y2NlZWRlZDogeyB0b3RhbEJ5dGVzID0gZG93bmxvYWQudGFyZ2V0LnRvdGFsQnl0ZXNS
ZWNlaXZlZCB9CisgICAgfQorCisgICAgU2lnbmFsU3B5IHsKKyAgICAgICAgaWQ6IG90aGVyU3B5
CisgICAgICAgIHRhcmdldDogZG93bmxvYWQKKyAgICAgICAgc2lnbmFsTmFtZTogInN1Y2NlZWRl
ZCIKKyAgICB9CisKKyAgICBUZXN0Q2FzZSB7CisgICAgICAgIG5hbWU6ICJEZXNrdG9wV2ViVmll
d0Rvd25sb2FkIgorICAgICAgICB3aGVuOiB3aW5kb3dTaG93bgorCisgICAgICAgIGZ1bmN0aW9u
IHRlc3RfZG93bmxvYWRSZXF1ZXN0KCkgeworICAgICAgICAgICAgc3B5LmNsZWFyKCkKKyAgICAg
ICAgICAgIGNvbXBhcmUoc3B5LmNvdW50LCAwKQorICAgICAgICAgICAgd2ViVmlldy5sb2FkKFF0
LnJlc29sdmVkVXJsKCIuLi9jb21tb24vZG93bmxvYWQuaHRtbCIpKQorICAgICAgICAgICAgbW91
c2VDbGljayh3ZWJWaWV3LCAxMDAsIDEwMCwgUXQuTGVmdEJ1dHRvbikKKyAgICAgICAgICAgIHNw
eS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBhcmUoc3B5LmNvdW50LCAxKQorICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gdGVzdF9leHBlY3RlZExlbmd0aCgpIHsKKyAgICAgICAgICAgIHNw
eS5jbGVhcigpCisgICAgICAgICAgICBjb21wYXJlKHNweS5jb3VudCwgMCkKKyAgICAgICAgICAg
IHdlYlZpZXcubG9hZChRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL2Rvd25sb2FkLmh0bWwiKSkK
KyAgICAgICAgICAgIG1vdXNlQ2xpY2sod2ViVmlldywgMTAwLCAxMDAsIFF0LkxlZnRCdXR0b24p
CisgICAgICAgICAgICBzcHkud2FpdCgpCisgICAgICAgICAgICBjb21wYXJlKHNweS5jb3VudCwg
MSkKKyAgICAgICAgICAgIGNvbXBhcmUoZXhwZWN0ZWRMZW5ndGgsIDMyNSkKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIHRlc3Rfc3VjY2VlZGVkKCkgeworICAgICAgICAgICAgc3B5LmNs
ZWFyKCkKKyAgICAgICAgICAgIGNvbXBhcmUoc3B5LmNvdW50LCAwKQorICAgICAgICAgICAgb3Ro
ZXJTcHkuY2xlYXIoKQorICAgICAgICAgICAgY29tcGFyZShvdGhlclNweS5jb3VudCwgMCkKKyAg
ICAgICAgICAgIHdlYlZpZXcubG9hZChRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL2Rvd25sb2Fk
Lmh0bWwiKSkKKyAgICAgICAgICAgIG1vdXNlQ2xpY2sod2ViVmlldywgMTAwLCAxMDAsIFF0Lkxl
ZnRCdXR0b24pCisgICAgICAgICAgICBzcHkud2FpdCgpCisgICAgICAgICAgICBjb21wYXJlKHNw
eS5jb3VudCwgMSkKKyAgICAgICAgICAgIG90aGVyU3B5LndhaXQoKQorICAgICAgICAgICAgY29t
cGFyZShvdGhlclNweS5jb3VudCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUodG90YWxCeXRlcywg
ZXhwZWN0ZWRMZW5ndGgpCisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1vbi9kb3dubG9hZC5o
dG1sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21t
b24vZG93bmxvYWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MDZmYTRjYTc2M2Q3YTRmZWFjMTgxNzQxYmU1
Yzk3NzY0OGY5NWY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21tb24vZG93bmxvYWQuaHRtbApAQCAtMCwwICsxLDYg
QEAKKzxodG1sPgorPGhlYWQ+PHRpdGxlPkRvd25sb2FkIFRlc3QgcGFnZSB3aXRoIGh1Z2UgbGlu
ayBhcmVhPC90aXRsZT48L2hlYWQ+Cis8Ym9keT4KKzxhIHRpdGxlPSJaaXAgZmlsZSIgaHJlZj0i
ZG93bmxvYWQuemlwIj48aW1nIHdpZHRoPTIwMCBoZWlnaHQ9MjAwPjwvYT4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMv
cW1sdGVzdHMvY29tbW9uL2Rvd25sb2FkLnppcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL2Rvd25sb2FkLnppcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNTQ1
NjM1MWE1NTE1NTYxMzUzOTYxNWFjY2VjZTllZTAzMGI3ZDQ0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0
ZXJhbCAzMjUKemNtV0lXV0BacyNVfGBeMnUhc3RffDhWZEJwPFc+R0pQLT5xJFN+eU9Dbngzdm0q
ZntFcmw7eTxsO3F9d2hIeEA0CnpeVzIlfENqYFckNzJGSnJFSDlXRDcrNncoOGJiU1JgM0BgYXcz
aG9kWm8xJFZZVCtSSlA0RGM1eFB+VXo2JCZtIwp6eytAaDAraE14VHdFTlo1X09ta3xUX0N9O1Zs
QzRyayR8cl50P2dlT2N6Pkh+KDwlazt3dTh6eVEpTUB3dFcpd2sKei00ZzVrTC1wc0N7TWY1KmhP
XklUS2t+QGtgQW5Bbzxjb3NFUT8/JHlyV25pZCppal4wPTZwezJgUmQ8Q2oqOGxnCnpya2AkRmxP
TStRYk5SJXIkTjItaThKWG1tYXJzT0Y9dilRe01qJjMmMng0TEpDbzlDQ1hucVh2V0BRNnVVPEFU
JgpLQWJrVkdWRV9SNj4yTSRiCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL3FtbHRlc3RzLnBy
byBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvcW1sdGVz
dHMucHJvCmluZGV4IGVjMGU4NGRkZmU0YmQzZDM1NjU2NDIyODczNWMxY2JiMTJmMDYyMDIuLjM2
ZTBjNTBjYWQ5OGNjZWE3NTRhNmExZDI3ZDI1MzFkMWNkYTJiMzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvcW1sdGVzdHMucHJvCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvcW1sdGVz
dHMucHJvCkBAIC0xNiw2ICsxNiw3IEBAIE9USEVSX0ZJTEVTICs9IFwKICAgICBEZXNrdG9wV2Vi
Vmlldy90c3RfbG9hZFByb2dyZXNzU2lnbmFsLnFtbCBcCiAgICAgRGVza3RvcFdlYlZpZXcvdHN0
X2xpbmtIb3ZlcmVkLnFtbCBcCiAgICAgRGVza3RvcFdlYlZpZXcvdHN0X21lc3NhZ2luZy5xbWwg
XAorICAgIERlc2t0b3BXZWJWaWV3L3RzdF9kb3dubG9hZC5xbWwgXAogICAgIFRvdWNoV2ViVmll
dy90c3RfcHJvcGVydGllcy5xbWwgXAogICAgIFRvdWNoV2ViVmlldy90c3RfbG9hZC5xbWwgXAog
ICAgIFRvdWNoV2ViVmlldy90c3RfbG9hZFplcm9TaXplVmlldy5xbWwgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAKaW5kZXgg
YzkzYTZkZmJlNjliYmUzNmU2YjkyNDQ4ZjA0N2JiYmJlN2Q5MmQ0Mi4uMjZhNTIxZjM5YmM3MWUy
MTQ1ODc3MzIxOTY0ZGRjNjcyNzQxYjE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCkBAIC0xODcsNSArMTg3LDE2IEBA
IHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkQ2FuY2VsKGNvbnN0IENvcmVJUEM6OkRhdGFSZWZlcmVu
Y2UmIHJlc3VtZURhdGEpCiAgICAgbV93ZWJDb250ZXh0LT5kb3dubG9hZEZpbmlzaGVkKHRoaXMp
OwogfQogCisjaWYgUExBVEZPUk0oUVQpCit2b2lkIERvd25sb2FkUHJveHk6OnN0YXJ0VHJhbnNm
ZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKK3sKKyAgICBpZiAoIW1fd2ViQ29udGV4dCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUUgKE11bHRpLVdlYlByb2Nlc3MpOiBEb3dubG9h
ZHMgc2hvdWxkbid0IGJlIGhhbmRsZWQgaW4gdGhlIHdlYiBwcm9jZXNzLgorICAgIG1fd2ViQ29u
dGV4dC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTdGFydFRyYW5z
ZmVyKG1fZG93bmxvYWRJRCwgZmlsZW5hbWUpKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkUHJveHkuaAppbmRleCA5OWRkYmVjMGNiYzRiYThmNmQ5ZjQyMWY5ZGI2ODU1NTgyOGI5
OWQ1Li5jMWVkYTFmZDE5MDdjOTk3ZGJhODNmZTMwYzQ3YjU2NjJlNmYzOWI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaApAQCAt
NDMsNiArNDMsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViQ29udGV4dDsKIGNs
YXNzIFdlYkRhdGE7CitjbGFzcyBXZWJQYWdlUHJveHk7CiAKIGNsYXNzIERvd25sb2FkUHJveHkg
OiBwdWJsaWMgQVBJT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTYzLDYgKzY0LDEwIEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRpZFJlY2VpdmVEb3dubG9hZFByb3h5TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0
aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKICAg
ICB2b2lkIGRpZFJlY2VpdmVTeW5jRG93bmxvYWRQcm94eU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVj
dGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgT3du
UHRyPENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4mKTsKIAorI2lmIFBMQVRGT1JNKFFUKQorICAg
IHZvaWQgc3RhcnRUcmFuc2Zlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lKTsKKyNlbmRpZgorCiBw
cml2YXRlOgogICAgIGV4cGxpY2l0IERvd25sb2FkUHJveHkoV2ViQ29udGV4dCopOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCA2NmY5ZWNiYmIwYTM5NWE5M2IyOTlj
ZTExZTIzZDA4Y2NjMjcwZWI2Li4zZmZhMmJmYTFjOTk3ZGUyYjI2NWUxODZiZjU0YjIyMDNlODYw
OWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTQ0LDYgKzQ0LDEw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBzdHJ1Y3QgVmlld3BvcnRBcmd1bWVudHM7CiB9
CiAKKyNpZiBQTEFURk9STShRVCkKK2NsYXNzIFF0V2ViUGFnZVByb3h5OworI2VuZGlmCisKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBEcmF3aW5nQXJlYVByb3h5OwpAQCAtMTA0LDYgKzEw
OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQ29udGVudHNTaXplKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmRab29t
YWJsZUFyZWEoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21OYXZpZ2F0b3JR
dE9iamVjdChjb25zdCBTdHJpbmcmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZURvd25s
b2FkUmVxdWVzdChEb3dubG9hZFByb3h5KikgPSAwOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShR
VCkgfHwgUExBVEZPUk0oR1RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3Bw
CmluZGV4IGY0NTNkOGMzZmRhMWJkNjk0NWU4MTdiMGU2ZWQ5YWQ2MmZhMWE2ZjkuLmI2NDQ4NDU5
YTI1MzgxNDZjYTM1ZjJhZDhiNGM3MGEwN2RhODZmZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQ29udGV4dC5jcHAKQEAgLTM5Miw2ICszOTIsMTEgQEAgRG93bmxvYWRQcm94eSogV2Vi
Q29udGV4dDo6ZG93bmxvYWQoV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgUmVz
b3VyY2UKICAgICBEb3dubG9hZFByb3h5KiBkb3dubG9hZCA9IGNyZWF0ZURvd25sb2FkUHJveHko
KTsKICAgICB1aW50NjRfdCBpbml0aWF0aW5nUGFnZUlEID0gaW5pdGlhdGluZ1BhZ2UgPyBpbml0
aWF0aW5nUGFnZS0+cGFnZUlEKCkgOiAwOwogCisjaWYgUExBVEZPUk0oUVQpCisgICAgQVNTRVJU
KGluaXRpYXRpbmdQYWdlKTsgLy8gT3VyIGRlc2lnbiBkb2VzIG5vdCBzdXBwcG9ydCBkb3dubG9h
ZHMgd2l0aG91dCBhIFdlYlBhZ2UuCisgICAgaW5pdGlhdGluZ1BhZ2UtPmhhbmRsZURvd25sb2Fk
UmVxdWVzdChkb3dubG9hZCk7CisjZW5kaWYKKwogICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdl
czo6V2ViUHJvY2Vzczo6RG93bmxvYWRSZXF1ZXN0KGRvd25sb2FkLT5kb3dubG9hZElEKCksIGlu
aXRpYXRpbmdQYWdlSUQsIHJlcXVlc3QpLCAwKTsKICAgICByZXR1cm4gZG93bmxvYWQ7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGVlNDNiMjhmMGFj
NWQ5YmQzMDg3NGE5YjhkMmRlMWEzYjM5YjZkNzUuLjVmMWEyZTdhNWUyZGE1YTExYjgwMjBiZDQ4
YThhOTc3NmI4NTk2ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCkBAIC0xMDE2LDcgKzEwMTYsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9s
aWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwgV2ViRnJhbWVQcm94eSogZnIKICAgICB1
aW50NjRfdCBkb3dubG9hZElEID0gMDsKICAgICBpZiAoYWN0aW9uID09IFBvbGljeURvd25sb2Fk
KSB7CiAgICAgICAgIC8vIENyZWF0ZSBhIGRvd25sb2FkIHByb3h5LgotICAgICAgICBkb3dubG9h
ZElEID0gbV9wcm9jZXNzLT5jb250ZXh0KCktPmNyZWF0ZURvd25sb2FkUHJveHkoKS0+ZG93bmxv
YWRJRCgpOworICAgICAgICBEb3dubG9hZFByb3h5KiBkb3dubG9hZCA9IG1fcHJvY2Vzcy0+Y29u
dGV4dCgpLT5jcmVhdGVEb3dubG9hZFByb3h5KCk7CisgICAgICAgIGRvd25sb2FkSUQgPSBkb3du
bG9hZC0+ZG93bmxvYWRJRCgpOworI2lmIFBMQVRGT1JNKFFUKQorICAgICAgICAvLyBPdXIgZGVz
aWduIGRvZXMgbm90IHN1cHBwb3J0IGRvd25sb2FkcyB3aXRob3V0IGEgV2ViUGFnZS4KKyAgICAg
ICAgaGFuZGxlRG93bmxvYWRSZXF1ZXN0KGRvd25sb2FkKTsKKyNlbmRpZgogICAgIH0KIAogICAg
IC8vIElmIHdlIHJlY2VpdmVkIGEgcG9saWN5IGRlY2lzaW9uIHdoaWxlIGluIGRlY2lkZVBvbGlj
eUZvck1JTUVUeXBlIHRoZSBkZWNpc2lvbiB3aWxsIApAQCAtMjI4NSw2ICsyMjkwLDExIEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlTWVzc2FnZUZyb21OYXZpZ2F0b3JRdE9iamVjdChj
b25zdCBTdHJpbmcmIGNvbnRlbnRzCiB7CiAgICAgbV9wYWdlQ2xpZW50LT5kaWRSZWNlaXZlTWVz
c2FnZUZyb21OYXZpZ2F0b3JRdE9iamVjdChjb250ZW50cyk7CiB9CisKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpoYW5kbGVEb3dubG9hZFJlcXVlc3QoRG93bmxvYWRQcm94eSogZG93bmxvYWQpCit7Cisg
ICAgbV9wYWdlQ2xpZW50LT5oYW5kbGVEb3dubG9hZFJlcXVlc3QoZG93bmxvYWQpOworfQogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCmluZGV4IGI5NWFhNWY3MDI5ODU0MzljYTkxNzQxNTA3ZmJjY2YzZDViYTBj
ODQuLmVmMzA2OWE3NzJkMDI5NzJkNDMyODQ5NTI2MmVjZTNkYTIxMzBjYTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTUyMyw2ICs1MjMsNyBAQCBwdWJsaWM6
CiAjaWYgUExBVEZPUk0oUVQpCiAgICAgdm9pZCBmaW5kWm9vbWFibGVBcmVhRm9yUG9pbnQoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbU5h
dmlnYXRvclF0T2JqZWN0KGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgaGFuZGxlRG93bmxvYWRS
ZXF1ZXN0KERvd25sb2FkUHJveHkqKTsKICNlbmRpZgogCiAgICAgdm9pZCBhZHZhbmNlVG9OZXh0
TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbikgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXREb3dubG9hZE1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0RG93bmxvYWRNYW5hZ2VyLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zZjk3ZmM2M2M0Y2IxMWM3ODVjNjM4MjI0N2M1ZTNmNTE4MzM1MjJiCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0RG93bmxvYWRNYW5hZ2VyLmNwcApA
QCAtMCwwICsxLDE0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
ICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJRdERvd25sb2FkTWFuYWdlci5oIgorCisjaW5jbHVkZSAiQ2xpZW50
SW1wbC5oIgorI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKKyNpbmNsdWRlICJRdFdlYkVycm9y
LmgiCisjaW5jbHVkZSAiV0tTdHJpbmdRdC5oIgorI2luY2x1ZGUgIldLVVJMUXQuaCIKKyNpbmNs
dWRlICJXZWJDb250ZXh0LmgiCisjaW5jbHVkZSAicXdlYmRvd25sb2FkaXRlbS5oIgorI2luY2x1
ZGUgInF3ZWJkb3dubG9hZGl0ZW1fcC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGlj
IGlubGluZSBRdERvd25sb2FkTWFuYWdlciogdG9RdERvd25sb2FkTWFuYWdlcihjb25zdCB2b2lk
KiBjbGllbnRJbmZvKQoreworICAgIEFTU0VSVChjbGllbnRJbmZvKTsKKyAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxRdERvd25sb2FkTWFuYWdlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVu
dEluZm8pKTsKK30KKworc3RhdGljIHZvaWQgcXRfd2tfZGlkUmVjZWl2ZVJlc3BvbnNlKFdLQ29u
dGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1VSTFJlc3BvbnNlUmVm
IHJlc3BvbnNlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQoreworICAgIHRvUXREb3dubG9hZE1h
bmFnZXIoY2xpZW50SW5mbyktPmRvd25sb2FkUmVjZWl2ZWRSZXNwb25zZSh0b0ltcGwoZG93bmxv
YWQpLCB0b0ltcGwocmVzcG9uc2UpLT5yZXNvdXJjZVJlc3BvbnNlKCkpOworfQorCitzdGF0aWMg
dm9pZCBxdF93a19kaWRDcmVhdGVEZXN0aW5hdGlvbihXS0NvbnRleHRSZWYgY29udGV4dCwgV0tE
b3dubG9hZFJlZiBkb3dubG9hZCwgV0tTdHJpbmdSZWYgcGF0aCwgY29uc3Qgdm9pZCAqY2xpZW50
SW5mbykKK3sKKyAgICB0b1F0RG93bmxvYWRNYW5hZ2VyKGNsaWVudEluZm8pLT5kb3dubG9hZENy
ZWF0ZWREZXN0aW5hdGlvbih0b0ltcGwoZG93bmxvYWQpLCBXS1N0cmluZ0NvcHlRU3RyaW5nKHBh
dGgpKTsKK30KKworc3RhdGljIHZvaWQgcXRfd2tfZGlkRmluaXNoRG93bmxvYWQoV0tDb250ZXh0
UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQgKmNsaWVudElu
Zm8pCit7CisgICAgdG9RdERvd25sb2FkTWFuYWdlcihjbGllbnRJbmZvKS0+ZG93bmxvYWRGaW5p
c2hlZCh0b0ltcGwoZG93bmxvYWQpKTsKK30KKworc3RhdGljIHZvaWQgcXRfd2tfZGlkRmFpbERv
d25sb2FkKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS0Vy
cm9yUmVmIGVycm9yLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQoreworICAgIFFVcmwgZmFpbGlu
Z1VybCA9IFdLVVJMQ29weVFVcmwoV0tFcnJvckNvcHlGYWlsaW5nVVJMKGVycm9yKSk7CisKKyAg
ICB0b1F0RG93bmxvYWRNYW5hZ2VyKGNsaWVudEluZm8pLT5kb3dubG9hZEZhaWxlZCh0b0ltcGwo
ZG93bmxvYWQpLCBRdFdlYkVycm9yKGVycm9yKSk7Cit9CisKK3N0YXRpYyB2b2lkIHF0X3drX2Rp
ZFJlY2VpdmVEYXRhRm9yRG93bmxvYWQoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRS
ZWYgZG93bmxvYWQsIHVpbnQ2NF90IGxlbmd0aCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKK3sK
KyAgICB0b1F0RG93bmxvYWRNYW5hZ2VyKGNsaWVudEluZm8pLT5kb3dubG9hZERhdGFSZWNlaXZl
ZCh0b0ltcGwoZG93bmxvYWQpLCBsZW5ndGgpOworfQorCitRdERvd25sb2FkTWFuYWdlcjo6UXRE
b3dubG9hZE1hbmFnZXIoKQoreworfQorCitRdERvd25sb2FkTWFuYWdlcjo6flF0RG93bmxvYWRN
YW5hZ2VyKCkKK3sKK30KKworUGFzc1JlZlB0cjxRdERvd25sb2FkTWFuYWdlcj4gUXREb3dubG9h
ZE1hbmFnZXI6OmNyZWF0ZShXZWJDb250ZXh0KiBjb250ZXh0KQoreworICAgIFF0RG93bmxvYWRN
YW5hZ2VyKiBtYW5hZ2VyID0gbmV3IFF0RG93bmxvYWRNYW5hZ2VyKCk7CisKKyAgICBXS0NvbnRl
eHREb3dubG9hZENsaWVudCBkb3dubG9hZENsaWVudDsKKyAgICBtZW1zZXQoJmRvd25sb2FkQ2xp
ZW50LCAwLCBzaXplb2YoV0tDb250ZXh0RG93bmxvYWRDbGllbnQpKTsKKyAgICBkb3dubG9hZENs
aWVudC52ZXJzaW9uID0ga1dLQ29udGV4dERvd25sb2FkQ2xpZW50Q3VycmVudFZlcnNpb247Cisg
ICAgZG93bmxvYWRDbGllbnQuY2xpZW50SW5mbyA9IG1hbmFnZXI7CisgICAgZG93bmxvYWRDbGll
bnQuZGlkUmVjZWl2ZVJlc3BvbnNlID0gcXRfd2tfZGlkUmVjZWl2ZVJlc3BvbnNlOworICAgIGRv
d25sb2FkQ2xpZW50LmRpZFJlY2VpdmVEYXRhID0gcXRfd2tfZGlkUmVjZWl2ZURhdGFGb3JEb3du
bG9hZDsKKyAgICBkb3dubG9hZENsaWVudC5kaWRDcmVhdGVEZXN0aW5hdGlvbiA9IHF0X3drX2Rp
ZENyZWF0ZURlc3RpbmF0aW9uOworICAgIGRvd25sb2FkQ2xpZW50LmRpZEZpbmlzaCA9IHF0X3dr
X2RpZEZpbmlzaERvd25sb2FkOworICAgIGRvd25sb2FkQ2xpZW50LmRpZEZhaWwgPSBxdF93a19k
aWRGYWlsRG93bmxvYWQ7CisgICAgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQodG9BUEkoY29u
dGV4dCksICZkb3dubG9hZENsaWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG1hbmFnZXIpOwor
fQorCit2b2lkIFF0RG93bmxvYWRNYW5hZ2VyOjpkb3dubG9hZFJlY2VpdmVkUmVzcG9uc2UoRG93
bmxvYWRQcm94eSogZG93bmxvYWQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKQoreworICAgIC8vIFdpbGwgYmUgY2FsbGVkIHdoZW4gdGhlIGhlYWRlcnMgYXJlIHJl
YWQgYnkgV2ViUHJvY2Vzcy4KKyAgICBRV2ViRG93bmxvYWRJdGVtKiBkb3dubG9hZEl0ZW0gPSBt
X2Rvd25sb2Fkcy52YWx1ZShkb3dubG9hZC0+ZG93bmxvYWRJRCgpKTsKKyAgICBBU1NFUlQoZG93
bmxvYWRJdGVtKTsKKworICAgIGRvd25sb2FkSXRlbS0+ZC0+c291cmNlVXJsID0gcmVzcG9uc2Uu
dXJsKCk7CisgICAgZG93bmxvYWRJdGVtLT5kLT5taW1lVHlwZSA9IHJlc3BvbnNlLm1pbWVUeXBl
KCk7CisgICAgZG93bmxvYWRJdGVtLT5kLT5leHBlY3RlZENvbnRlbnRMZW5ndGggPSByZXNwb25z
ZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKTsKKyAgICBkb3dubG9hZEl0ZW0tPmQtPnN1Z2dlc3Rl
ZEZpbGVuYW1lID0gcmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUoKTsKKworICAgIGRvd25sb2Fk
SXRlbS0+ZC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGRvd25sb2FkSXRlbSk7Cit9CisKK3ZvaWQgUXRE
b3dubG9hZE1hbmFnZXI6OmRvd25sb2FkQ3JlYXRlZERlc3RpbmF0aW9uKERvd25sb2FkUHJveHkq
IGRvd25sb2FkLCBjb25zdCBRU3RyaW5nJiBwYXRoKQoreworICAgIFFXZWJEb3dubG9hZEl0ZW0q
IGRvd25sb2FkSXRlbSA9IG1fZG93bmxvYWRzLnZhbHVlKGRvd25sb2FkLT5kb3dubG9hZElEKCkp
OworICAgIEFTU0VSVChkb3dubG9hZEl0ZW0pOworICAgIGRvd25sb2FkSXRlbS0+ZC0+ZGVzdGlu
YXRpb25QYXRoID0gcGF0aDsKKyAgICBlbWl0IGRvd25sb2FkSXRlbS0+ZGVzdGluYXRpb25GaWxl
Q3JlYXRlZChkb3dubG9hZEl0ZW0tPmQtPmRlc3RpbmF0aW9uUGF0aCk7Cit9CisKK3ZvaWQgUXRE
b3dubG9hZE1hbmFnZXI6OmRvd25sb2FkRmluaXNoZWQoRG93bmxvYWRQcm94eSogZG93bmxvYWQp
Cit7CisgICAgLy8gV2lsbCBiZSBjYWxsZWQgd2hlbiBkb3dubG9hZCBmaW5pc2hlcyB3aXRoIHN1
Y2Nlc3MuCisgICAgUVdlYkRvd25sb2FkSXRlbSogZG93bmxvYWRJdGVtID0gbV9kb3dubG9hZHMu
dGFrZShkb3dubG9hZC0+ZG93bmxvYWRJRCgpKTsKKyAgICBBU1NFUlQoZG93bmxvYWRJdGVtKTsK
KyAgICBlbWl0IGRvd25sb2FkSXRlbS0+c3VjY2VlZGVkKCk7Cit9CisKK3ZvaWQgUXREb3dubG9h
ZE1hbmFnZXI6OmRvd25sb2FkRmFpbGVkKERvd25sb2FkUHJveHkqIGRvd25sb2FkLCBjb25zdCBR
dFdlYkVycm9yJiBlcnJvcikKK3sKKyAgICAvLyBXaWxsIGJlIGNhbGxlZCB3aGVuIGRvd25sb2Fk
IGZhaWxzIG9yIGlzIGFib3J0ZWQuCisgICAgUVdlYkRvd25sb2FkSXRlbSogZG93bmxvYWRJdGVt
ID0gbV9kb3dubG9hZHMudGFrZShkb3dubG9hZC0+ZG93bmxvYWRJRCgpKTsKKyAgICBBU1NFUlQo
ZG93bmxvYWRJdGVtKTsKKyAgICBlbWl0IGRvd25sb2FkSXRlbS0+ZmFpbGVkKGVycm9yLmVycm9y
Q29kZUFzRG93bmxvYWRFcnJvcigpLCBlcnJvci51cmwoKSwgZXJyb3IuZGVzY3JpcHRpb24oKSk7
Cit9CisKK3ZvaWQgUXREb3dubG9hZE1hbmFnZXI6OmRvd25sb2FkRGF0YVJlY2VpdmVkKERvd25s
b2FkUHJveHkqIGRvd25sb2FkLCB1aW50NjRfdCBsZW5ndGgpCit7CisgICAgLy8gV2lsbCBiZSBj
YWxsZWQgZXZlcnl0aW1lIGJ5dGVzIHdlcmUgd3JpdHRlbiB0byBkZXN0aW5hdGlvbiBmaWxlIGJ5
IFdlYlByb2Nlc3MuCisgICAgUVdlYkRvd25sb2FkSXRlbSogZG93bmxvYWRJdGVtID0gbV9kb3du
bG9hZHMudmFsdWUoZG93bmxvYWQtPmRvd25sb2FkSUQoKSk7CisgICAgQVNTRVJUKGRvd25sb2Fk
SXRlbSk7CisgICAgZG93bmxvYWRJdGVtLT5kLT50b3RhbEJ5dGVzUmVjZWl2ZWQgKz0gbGVuZ3Ro
OworICAgIGVtaXQgZG93bmxvYWRJdGVtLT50b3RhbEJ5dGVzUmVjZWl2ZWRDaGFuZ2VkKGxlbmd0
aCk7Cit9CisKK3ZvaWQgUXREb3dubG9hZE1hbmFnZXI6OmFkZERvd25sb2FkKERvd25sb2FkUHJv
eHkqIGRvd25sb2FkLCBRV2ViRG93bmxvYWRJdGVtKiBkb3dubG9hZEl0ZW0pCit7CisgICAgbV9k
b3dubG9hZHNbZG93bmxvYWQtPmRvd25sb2FkSUQoKV0gPSBkb3dubG9hZEl0ZW07Cit9CisKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdERvd25sb2FkTWFuYWdl
ci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0RG93bmxvYWRNYW5hZ2VyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMGJmNzIxNmQ0MTY4OWE2MDJhMDM3M2U0Yjc5MTRiYTkzZDdjMmU3OAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdERvd25sb2FkTWFuYWdl
ci5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgTm9r
aWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIFF0
RG93bmxvYWRNYW5hZ2VyX2gKKyNkZWZpbmUgUXREb3dubG9hZE1hbmFnZXJfaAorCisjaW5jbHVk
ZSA8UU1hcD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CisKK2NsYXNzIFF0V2ViRXJyb3I7CitjbGFzcyBRV2ViRG93bmxvYWRJdGVtOwor
CituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOworfQorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgRG93bmxvYWRQcm94eTsKK2NsYXNzIFdlYkNvbnRleHQ7
CisKK2NsYXNzIFF0RG93bmxvYWRNYW5hZ2VyIDogcHVibGljIFJlZkNvdW50ZWQ8UXREb3dubG9h
ZE1hbmFnZXI+IHsKK3B1YmxpYzoKKyAgICB+UXREb3dubG9hZE1hbmFnZXIoKTsKKworICAgIHZv
aWQgYWRkRG93bmxvYWQoRG93bmxvYWRQcm94eSosIFFXZWJEb3dubG9hZEl0ZW0qKTsKKworICAg
IHZvaWQgZG93bmxvYWRSZWNlaXZlZFJlc3BvbnNlKERvd25sb2FkUHJveHkqLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgdm9pZCBkb3dubG9hZENyZWF0ZWREZXN0aW5h
dGlvbihEb3dubG9hZFByb3h5KiwgY29uc3QgUVN0cmluZyYgcGF0aCk7CisgICAgdm9pZCBkb3du
bG9hZEZpbmlzaGVkKERvd25sb2FkUHJveHkqKTsKKyAgICB2b2lkIGRvd25sb2FkRmFpbGVkKERv
d25sb2FkUHJveHkqLCBjb25zdCBRdFdlYkVycm9yJik7CisgICAgdm9pZCBkb3dubG9hZERhdGFS
ZWNlaXZlZChEb3dubG9hZFByb3h5KiwgdWludDY0X3QgbGVuZ3RoKTsKKworICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFF0RG93bmxvYWRNYW5hZ2VyPiBjcmVhdGUoV2ViQ29udGV4dCopOworcHJpdmF0
ZToKKyAgICBRdERvd25sb2FkTWFuYWdlcigpOworCisgICAgUU1hcDx1aW50NjRfdCwgUVdlYkRv
d25sb2FkSXRlbSo+IG1fZG93bmxvYWRzOworfTsKKworfQorI2VuZGlmIC8qIFF0RG93bmxvYWRN
YW5hZ2VyX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFRv
dWNoVmlld0ludGVyZmFjZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0VG91Y2hW
aWV3SW50ZXJmYWNlLmgKaW5kZXggM2E0NTM0OTBmOTIzMWQ4MDk4MjRhYmY4YTNlYWMxOWM0OWQx
ZDY3Yi4uYTRmZDQ1N2EzODk0NDU3MjM4ZTNmMjZiNDZlYmY5NTM3YmQ1ZGNhNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0VG91Y2hWaWV3SW50ZXJmYWNlLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0VG91Y2hWaWV3SW50ZXJmYWNlLmgKQEAg
LTgxLDYgKzgxLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFFKU0VuZ2luZSogZW5naW5lKCk7
CiAKICAgICB2aXJ0dWFsIHZvaWQgY2hvb3NlRmlsZXMoV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
clJlZiwgY29uc3QgUVN0cmluZ0xpc3QmLCBGaWxlQ2hvb3NlclR5cGUpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBkb3dubG9hZFJlcXVlc3RlZChRV2ViRG93bmxvYWRJdGVtKiBkb3dubG9hZEl0ZW0p
IHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZE1vdXNlTW92ZU92ZXJFbGVtZW50KGNvbnN0IFFV
cmwmLCBjb25zdCBRU3RyaW5nJikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9RdFZpZXdJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9RdFZpZXdJbnRlcmZhY2UuaAppbmRleCA1MjZhNDk1NjEwZDk2NDE0MWU4YzkzNGYyZjVlY2M5
YTE1OTk4MGJjLi5hODE4OTExNDE4YzMzMjAwMDM2MGJkZjQ0ZTM1NGEzNWMyYTllNzMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRWaWV3SW50ZXJmYWNlLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0Vmlld0ludGVyZmFjZS5oCkBAIC0yNyw2
ICsyNyw3IEBACiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KIAogY2xhc3MgUXRXZWJFcnJv
cjsKK2NsYXNzIFFXZWJEb3dubG9hZEl0ZW07CiAKIFFUX0JFR0lOX05BTUVTUEFDRQogY2xhc3Mg
UUN1cnNvcjsKQEAgLTkzLDYgKzk0LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjaG9v
c2VGaWxlcyhXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmLCBjb25zdCBRU3RyaW5nTGlzdCYg
c2VsZWN0ZWRGaWxlTmFtZXMsIEZpbGVDaG9vc2VyVHlwZSkgPSAwOwogCiAgICAgdmlydHVhbCB2
b2lkIGRpZE1vdXNlTW92ZU92ZXJFbGVtZW50KGNvbnN0IFFVcmwmLCBjb25zdCBRU3RyaW5nJikg
PSAwOworCisgICAgdmlydHVhbCB2b2lkIGRvd25sb2FkUmVxdWVzdGVkKFFXZWJEb3dubG9hZEl0
ZW0qKSA9IDA7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvUXRXZWJFcnJvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJFcnJv
ci5jcHAKaW5kZXggNzY1NDk3N2UwNzdiYWI3ZDU0YjU5N2VkMWZiNGJhOWJhZDE1NzlkNi4uNmQy
ZTEwZDgxMTE0NTBhNjJhY2ZjZDhhNDg0MGI2YzEzZDAwODJlNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9RdFdlYkVycm9yLmNwcApAQCAtNjAsMyArNjAsOCBAQCBRVXJsIFF0V2Vi
RXJyb3I6OnVybCgpIGNvbnN0CiAgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IGZhaWxpbmdVUkwg
PSBhZG9wdFdLKFdLRXJyb3JDb3B5RmFpbGluZ1VSTChlcnJvci5nZXQoKSkpOwogICAgIHJldHVy
biBXS1VSTENvcHlRVXJsKGZhaWxpbmdVUkwuZ2V0KCkpOwogfQorCitRU3RyaW5nIFF0V2ViRXJy
b3I6OmRlc2NyaXB0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV0tTdHJpbmdDb3B5UVN0cmlu
ZyhXS0Vycm9yQ29weUxvY2FsaXplZERlc2NyaXB0aW9uKGVycm9yLmdldCgpKSk7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJFcnJvci5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViRXJyb3IuaAppbmRleCAxMWIwOTUzZjJlZWUzZTU2
NTEzYzRjOTkwZjI5ZDAzMTNhZDYyNmQ0Li45MTE4N2U5MjZhNGNkYWViOTNkOTdkOGJjMzFhMTBm
NTc0Yzg2NDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJF
cnJvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYkVycm9yLmgKQEAg
LTIxLDYgKzIxLDcgQEAKICNpZm5kZWYgUXRXZWJFcnJvcl9oCiAjZGVmaW5lIFF0V2ViRXJyb3Jf
aAogCisjaW5jbHVkZSAicXdlYmRvd25sb2FkaXRlbS5oIgogI2luY2x1ZGUgInF3ZWJraXRnbG9i
YWwuaCIKICNpbmNsdWRlIDxRdE5ldHdvcmsvUU5ldHdvcmtSZXBseT4KICNpbmNsdWRlIDxXS0Vy
cm9yLmg+CkBAIC00Miw5ICs0MywxMSBAQCBwdWJsaWM6CiAgICAgVHlwZSB0eXBlKCkgY29uc3Q7
CiAgICAgUVVybCB1cmwoKSBjb25zdDsKICAgICBpbnQgZXJyb3JDb2RlKCkgY29uc3Q7CisgICAg
UVN0cmluZyBkZXNjcmlwdGlvbigpIGNvbnN0OwogCiAgICAgaW50IGVycm9yQ29kZUFzSHR0cFN0
YXR1c0NvZGUoKSBjb25zdCB7IHJldHVybiBlcnJvckNvZGUoKTsgfQogICAgIFFOZXR3b3JrUmVw
bHk6Ok5ldHdvcmtFcnJvciBlcnJvckNvZGVBc05ldHdvcmtFcnJvcigpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PFFOZXR3b3JrUmVwbHk6Ok5ldHdvcmtFcnJvcj4oZXJyb3JDb2RlKCkpOyB9
CisgICAgUVdlYkRvd25sb2FkSXRlbTo6RG93bmxvYWRFcnJvciBlcnJvckNvZGVBc0Rvd25sb2Fk
RXJyb3IoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxRV2ViRG93bmxvYWRJdGVtOjpEb3du
bG9hZEVycm9yPihlcnJvckNvZGUoKSk7IH0KIAogICAgIFF0V2ViRXJyb3IoY29uc3QgUXRXZWJF
cnJvciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQ
YWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5
LmNwcAppbmRleCA2NDMwYTA5MDA1MTYzOWFjNjY0YTAyMWZjNjdmMzFiZGM3ZDkzMzRiLi45NDU0
ZjU2MDUwMjA3Zjg0ZmJkM2ZhNTBjYzhiOTg2YzlhZTUwNTM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAKQEAgLTIyLDEwICsyMiwxMyBAQAog
I2luY2x1ZGUgIlF0V2ViUGFnZVByb3h5LmgiCiAKICNpbmNsdWRlICJRdFdlYkVycm9yLmgiCisj
aW5jbHVkZSAicXdlYmRvd25sb2FkaXRlbS5oIgorI2luY2x1ZGUgInF3ZWJkb3dubG9hZGl0ZW1f
cC5oIgogI2luY2x1ZGUgInF3ZWJwcmVmZXJlbmNlcy5oIgogI2luY2x1ZGUgInF3ZWJwcmVmZXJl
bmNlc19wLmgiCiAKICNpbmNsdWRlICJDbGllbnRJbXBsLmgiCisjaW5jbHVkZSAiRG93bmxvYWRQ
cm94eS5oIgogI2luY2x1ZGUgInF3a2hpc3RvcnkuaCIKICNpbmNsdWRlICJxd2toaXN0b3J5X3Au
aCIKICNpbmNsdWRlICJGaW5kSW5kaWNhdG9yLmgiCkBAIC02Myw2ICs2Niw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogUmVmUHRyPFdlYkNv
bnRleHQ+IFF0V2ViUGFnZVByb3h5OjpzX2RlZmF1bHRDb250ZXh0OworUmVmUHRyPFF0RG93bmxv
YWRNYW5hZ2VyPiBRdFdlYlBhZ2VQcm94eTo6c19kb3dubG9hZE1hbmFnZXI7CiAKIHVuc2lnbmVk
IFF0V2ViUGFnZVByb3h5OjpzX2RlZmF1bHRQYWdlUHJveHlDb3VudCA9IDA7CiAKQEAgLTcxLDYg
Kzc1LDcgQEAgUGFzc1JlZlB0cjxXZWJDb250ZXh0PiBRdFdlYlBhZ2VQcm94eTo6ZGVmYXVsdFdL
Q29udGV4dCgpCiAgICAgaWYgKCFzX2RlZmF1bHRDb250ZXh0KSB7CiAgICAgICAgIHNfZGVmYXVs
dENvbnRleHQgPSBXZWJDb250ZXh0OjpjcmVhdGUoU3RyaW5nKCkpOwogICAgICAgICBzZXR1cENv
bnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudCh0b0FQSShzX2RlZmF1bHRDb250ZXh0LmdldCgpKSk7
CisgICAgICAgIHNfZG93bmxvYWRNYW5hZ2VyID0gUXREb3dubG9hZE1hbmFnZXI6OmNyZWF0ZShz
X2RlZmF1bHRDb250ZXh0LmdldCgpKTsKICAgICB9CiAgICAgcmV0dXJuIHNfZGVmYXVsdENvbnRl
eHQ7CiB9CkBAIC0xMzYsOCArMTQxLDEwIEBAIFF0V2ViUGFnZVByb3h5Ojp+UXRXZWJQYWdlUHJv
eHkoKQogICAgIGlmIChtX2NvbnRleHQgPT0gc19kZWZhdWx0Q29udGV4dCkgewogICAgICAgICBB
U1NFUlQoc19kZWZhdWx0UGFnZVByb3h5Q291bnQgPiAwKTsKICAgICAgICAgc19kZWZhdWx0UGFn
ZVByb3h5Q291bnQtLTsKLSAgICAgICAgaWYgKCFzX2RlZmF1bHRQYWdlUHJveHlDb3VudCkKKyAg
ICAgICAgaWYgKCFzX2RlZmF1bHRQYWdlUHJveHlDb3VudCkgewogICAgICAgICAgICAgc19kZWZh
dWx0Q29udGV4dC5jbGVhcigpOworICAgICAgICAgICAgc19kb3dubG9hZE1hbmFnZXIuY2xlYXIo
KTsKKyAgICAgICAgfQogICAgIH0KICAgICBkZWxldGUgbV9oaXN0b3J5OwogfQpAQCAtNTk1LDQg
KzYwMiwyMyBAQCB2b2lkIFF0V2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRp
ZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudAogICAgIG1fdmlld0ludGVyZmFjZS0+
ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGFyZ3MpOwogfQogCit2b2lkIFF0V2ViUGFnZVBy
b3h5OjpoYW5kbGVEb3dubG9hZFJlcXVlc3QoRG93bmxvYWRQcm94eSogZG93bmxvYWQpCit7Cisg
ICAgLy8gVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgaG9va2luZyB1cCBhIERvd25s
b2FkUHJveHkgdG8gb3VyIEFQSSBsYXllcgorICAgIC8vIGJ5IGNyZWF0aW5nIGEgUVdlYkRvd25s
b2FkSXRlbS4gSXQgd2lsbCB0aGVuIHdhaXQgZm9yIHRoZSBRV2ViRG93bmxvYWRJdGVtIHRvIGJl
CisgICAgLy8gcmVhZHkgKGZpbGxlZCB3aXRoIHRoZSBSZXNvdXJjZVJlc3BvbnNlIGluZm9ybWF0
aW9uKSBzbyB3ZSBjYW4gcGFzcyBpdCB0aHJvdWdoIHRvCisgICAgLy8gb3VyIFdlYlZpZXdzLgor
ICAgIFFXZWJEb3dubG9hZEl0ZW0qIGRvd25sb2FkSXRlbSA9IG5ldyBRV2ViRG93bmxvYWRJdGVt
KCk7CisgICAgZG93bmxvYWRJdGVtLT5kLT5kb3dubG9hZFByb3h5ID0gZG93bmxvYWQ7CisKKyAg
ICBjb25uZWN0KGRvd25sb2FkSXRlbS0+ZCwgU0lHTkFMKHJlY2VpdmVkUmVzcG9uc2UoUVdlYkRv
d25sb2FkSXRlbSopKSwgdGhpcywgU0xPVChkaWRSZWNlaXZlRG93bmxvYWRSZXNwb25zZShRV2Vi
RG93bmxvYWRJdGVtKikpKTsKKyAgICBzX2Rvd25sb2FkTWFuYWdlci0+YWRkRG93bmxvYWQoZG93
bmxvYWQsIGRvd25sb2FkSXRlbSk7Cit9CisKK3ZvaWQgUXRXZWJQYWdlUHJveHk6OmRpZFJlY2Vp
dmVEb3dubG9hZFJlc3BvbnNlKFFXZWJEb3dubG9hZEl0ZW0qIGRvd25sb2FkKQoreworICAgIC8v
IE5vdyB0aGF0IG91ciBkb3dubG9hZEl0ZW0gaGFzIGV2ZXJ5dGhpbmcgd2UgbmVlZCB3ZSBjYW4g
ZW1pdCBkb3dubG9hZFJlcXVlc3RlZC4KKyAgICBtX3ZpZXdJbnRlcmZhY2UtPmRvd25sb2FkUmVx
dWVzdGVkKGRvd25sb2FkKTsKK30KKwogI2luY2x1ZGUgIm1vY19RdFdlYlBhZ2VQcm94eS5jcHAi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5oCmluZGV4IDRh
ZTQ3YzljNWI0M2Y5Y2QzNmQ3Y2ZiYjZlZGJiMGExNjMzMTRlZTYuLmRlMDFkYjI3OGVjZmFkZDY0
MDA0OTU5NzIwYzM2OTJlNTQ4ODlmYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9RdFdlYlBhZ2VQcm94eS5oCkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNsdWRlICJMYXllclRy
ZWVDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGFnZUNsaWVudC5oIgorI2luY2x1ZGUgIlF0RG93bmxv
YWRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUXRQb2xpY3lJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJR
dFZpZXdJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKQEAgLTE3OCw4
ICsxNzksMTEgQEAgcHVibGljOgogICAgIFFXS0hpc3RvcnkqIGhpc3RvcnkoKSBjb25zdDsKICAg
ICBRdFZpZXdJbnRlcmZhY2UqIHZpZXdJbnRlcmZhY2UoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdJ
bnRlcmZhY2U7IH0KIAorICAgIHZvaWQgaGFuZGxlRG93bmxvYWRSZXF1ZXN0KERvd25sb2FkUHJv
eHkqKTsKKwogcHVibGljIFFfU0xPVFM6CiAgICAgdm9pZCBuYXZpZ2F0aW9uU3RhdGVDaGFuZ2Vk
KCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRG93bmxvYWRSZXNwb25zZShRV2ViRG93bmxvYWRJdGVt
Kik7CiAKIHB1YmxpYzoKICAgICBRX1NJR05BTCB2b2lkIHNjcm9sbFJlcXVlc3RlZChpbnQgZHgs
IGludCBkeSk7CkBAIC0yMDMsNiArMjA3LDcgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFdlYkNvbnRleHQ+IGRlZmF1bHRXS0NvbnRleHQoKTsKICAgICBzdGF0aWMgUmVmUHRy
PFdlYkNvbnRleHQ+IHNfZGVmYXVsdENvbnRleHQ7CisgICAgc3RhdGljIFJlZlB0cjxRdERvd25s
b2FkTWFuYWdlcj4gc19kb3dubG9hZE1hbmFnZXI7CiAgICAgc3RhdGljIHVuc2lnbmVkIHNfZGVm
YXVsdFBhZ2VQcm94eUNvdW50OwogCiAgICAgUmVmUHRyPFdlYkNvbnRleHQ+IG1fY29udGV4dDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJvIGIvU291cmNlL1dlYktpdDIv
V2ViS2l0Mi5wcm8KaW5kZXggMGQyMTY4ODAyYzljYjAxZTNiZmQ5MzQwMjZlZjc5MDhkNzkwODAx
Zi4uYmYzYTUyYjNmZmM4ZDQyNDgzNjA5ZWY5YTBjZmIyOWVhYjQ4ODZkMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcm8KKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi5w
cm8KQEAgLTI2MCw2ICsyNjAsNyBAQCBIRUFERVJTICs9IFwKICAgICBVSVByb2Nlc3MvcXQvUXRE
ZXNrdG9wV2ViUGFnZVByb3h5LmggXAogICAgIFVJUHJvY2Vzcy9xdC9RdFRvdWNoV2ViUGFnZVBy
b3h5LmggXAogICAgIFVJUHJvY2Vzcy9xdC9RdFdlYkVycm9yLmggXAorICAgIFVJUHJvY2Vzcy9x
dC9RdERvd25sb2FkTWFuYWdlci5oIFwKICAgICBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHku
aCBcCiAgICAgVUlQcm9jZXNzL3F0L3F3a2hpc3RvcnkuaCBcCiAgICAgVUlQcm9jZXNzL3F0L3F3
a2hpc3RvcnlfcC5oIFwKQEAgLTUwNCw2ICs1MDUsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBVSVBy
b2Nlc3MvcXQvUXREZXNrdG9wV2ViUGFnZVByb3h5LmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0
VG91Y2hXZWJQYWdlUHJveHkuY3BwIFwKICAgICBVSVByb2Nlc3MvcXQvUXRXZWJFcnJvci5jcHAg
XAorICAgIFVJUHJvY2Vzcy9xdC9RdERvd25sb2FkTWFuYWdlci5jcHAgXAogICAgIFVJUHJvY2Vz
cy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9xd2toaXN0b3J5LmNw
cCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0U0dVcGRhdGVRdWV1ZS5jcHAgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViS2l0MkFQSS5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyQVBJ
LnByaQppbmRleCA1MTg1OTU3NjJlZDA3NTgzODliMTliZmQyOTgzODNkMTQ4NmU4ODkzLi4xYWI4
NjRjODRlZDlhZDMwNjZkNjdjZjIyYmVmOWYzYTdkODliZTJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyQVBJLnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyQVBJLnBy
aQpAQCAtNTAsNiArNTAsNyBAQCBXRUJLSVQyX0FQSV9TT1VSQ0VTID0gXAogICAgICQkU09VUkNF
X0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL3F0L1dLVVJMUXQuY3BwIFwKICAgICAkJFNP
VVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FiYXNld2Vidmlldy5jcHAgXAogICAg
ICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNw
cCBcCisgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxv
YWRpdGVtLmNwcCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
dG91Y2h3ZWJwYWdlLmNwcCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xdG91Y2h3ZWJ2aWV3LmNwcCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9xd2VibmF2aWdhdGlvbmNvbnRyb2xsZXIuY3BwIFwKQEAgLTEzNSw2ICsxMzYs
OCBAQCBXRUJLSVQyX0FQSV9IRUFERVJTICs9IFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlld19wLmggXAogICAgICQkU09VUkNFX0RJUi9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnByZWZlcmVuY2VzLmggXAogICAgICQkU09VUkNF
X0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnByZWZlcmVuY2VzX3AuaCBcCisgICAg
JCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxvYWRpdGVtLmgg
XAorICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYmRvd25sb2Fk
aXRlbV9wLmggXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRv
dWNod2VicGFnZS5oIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3F0b3VjaHdlYnBhZ2VfcC5oIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3F0b3VjaHdlYnZpZXcuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWQuaAppbmRleCBhY2NjZDNmODhlMmE2OTk1OTdhMzliN2JmODI4ZDQz
NjM3YjcwZjM4Li5jMDY2ZTJmNmI0NDM5ZTZjNTZlYzMwMTVmN2JmZTU1MjFhOTcyNDVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKQEAgLTkz
LDYgKzkzLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENhbmNlbChjb25zdCBDb3JlSVBDOjpE
YXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhKTsKICAgICB2b2lkIGRpZERlY2lkZURlc3RpbmF0aW9u
KGNvbnN0IFN0cmluZyYsIGJvb2wgYWxsb3dPdmVyd3JpdGUpOwogCisjaWYgUExBVEZPUk0oUVQp
CisgICAgdm9pZCBzdGFydFRyYW5zZmVyKGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24pOworI2Vu
ZGlmCisKICNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24o
KSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uOyB9CiAgICAgRG93bmxvYWRBdXRoZW50aWNh
dGlvbkNsaWVudCogYXV0aGVudGljYXRpb25DbGllbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCmluZGV4IGE2
MjQ4OTFmODAxOTRmM2FkYzE1MTgxYWM4MDg0YjQ2OTU1OGJjYjYuLjYwZGNlODliNGVlNGNjYzM4
YmVmOTg5NjU1OWY5ZDc4ZTY3ZjMyNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcApAQCAtNzksNCArNzksMTMg
QEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OmRvd25sb2FkRmluaXNoZWQoRG93bmxvYWQqIGRvd25s
b2FkKQogICAgIGRlbGV0ZSBkb3dubG9hZDsKIH0KIAorI2lmIFBMQVRGT1JNKFFUKQordm9pZCBE
b3dubG9hZE1hbmFnZXI6OnN0YXJ0VHJhbnNmZXIodWludDY0X3QgZG93bmxvYWRJRCwgY29uc3Qg
U3RyaW5nJiBkZXN0aW5hdGlvbikKK3sKKyAgICBBU1NFUlQobV9kb3dubG9hZHMuY29udGFpbnMo
ZG93bmxvYWRJRCkpOworICAgIERvd25sb2FkKiBkb3dubG9hZCA9IG1fZG93bmxvYWRzLmdldChk
b3dubG9hZElEKTsKKyAgICBkb3dubG9hZC0+c3RhcnRUcmFuc2ZlcihkZXN0aW5hdGlvbik7Cit9
CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCmluZGV4IDFmMjdiODY3
YWVkNTU4ZmJiNzUzYmM2NTJmMThiMGFjYjY5YTAwMjMuLjZmYTdhZWJlZTRmMjdiZDQzYzE3MDY2
Y2JiN2JiODNhNjg0MmQ0YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCkBAIC0yOSw2ICsyOSwxMCBAQAogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKK25hbWVz
cGFjZSBXVEYgeworY2xhc3MgU3RyaW5nOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
Y2xhc3MgUmVzb3VyY2VIYW5kbGU7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwpAQCAtNTQs
NiArNTgsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZG93bmxvYWRGaW5pc2hlZChEb3dubG9hZCop
OwogICAgIGJvb2wgaXNEb3dubG9hZGluZygpIGNvbnN0IHsgcmV0dXJuICFtX2Rvd25sb2Fkcy5p
c0VtcHR5KCk7IH0KIAorI2lmIFBMQVRGT1JNKFFUKQorICAgIHZvaWQgc3RhcnRUcmFuc2Zlcih1
aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBXVEY6OlN0cmluZyYgZGVzdGluYXRpb24pOworI2Vu
ZGlmCisKIHByaXZhdGU6CiAgICAgRG93bmxvYWRNYW5hZ2VyKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L0Rvd25sb2FkUXQuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvRG93bmxvYWRRdC5jcHAKaW5kZXgg
OWVlOTk5NWU4MGU4ODBkZGE2ZDI3YzlhM2I1MGYwYzE2MWRlYTBlMC4uNGVlZjQxYzQwYjZjNzY0
OWJhOTA1NDM0NmUyODE2YWE4OTU0MGQ3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9Eb3dubG9hZHMvcXQvRG93bmxvYWRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvRG93bmxvYWRRdC5jcHAKQEAgLTQ2LDEzICs0NiwxNCBA
QCB2b2lkIERvd25sb2FkOjpzdGFydChXZWJQYWdlKiBpbml0aWF0aW5nV2ViUGFnZSkKICAgICBB
U1NFUlQoIW1fcXREb3dubG9hZGVyKTsKIAogICAgIG1fcXREb3dubG9hZGVyID0gbmV3IFF0Rmls
ZURvd25sb2FkZXIodGhpcywgYWRvcHRQdHIobWFuYWdlci0+Z2V0KG1fcmVxdWVzdC50b05ldHdv
cmtSZXF1ZXN0KCkpKSk7Ci0gICAgbV9xdERvd25sb2FkZXItPnN0YXJ0KCk7CisgICAgbV9xdERv
d25sb2FkZXItPmluaXQoKTsKIH0KIAogdm9pZCBEb3dubG9hZDo6c3RhcnRXaXRoSGFuZGxlKFdl
YlBhZ2UqIGluaXRpYXRpbmdQYWdlLCBSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIGluaXRpYWxSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
KQogewogICAgIEFTU0VSVCghbV9xdERvd25sb2FkZXIpOwogICAgIG1fcXREb3dubG9hZGVyID0g
bmV3IFF0RmlsZURvd25sb2FkZXIodGhpcywgYWRvcHRQdHIoaGFuZGxlLT5nZXRJbnRlcm5hbCgp
LT5tX2pvYi0+cmVsZWFzZSgpKSk7CisgICAgbV9xdERvd25sb2FkZXItPmluaXQoKTsKIH0KIAog
dm9pZCBEb3dubG9hZDo6Y2FuY2VsKCkKQEAgLTcwLDcgKzcxLDEyIEBAIHZvaWQgRG93bmxvYWQ6
OnBsYXRmb3JtSW52YWxpZGF0ZSgpCiAKIHZvaWQgRG93bmxvYWQ6OmRpZERlY2lkZURlc3RpbmF0
aW9uKGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24sIGJvb2wgYWxsb3dPdmVyd3JpdGUpCiB7Ci0g
ICAgbV9xdERvd25sb2FkZXItPmRlY2lkZWREZXN0aW5hdGlvbihkZXN0aW5hdGlvbiwgYWxsb3dP
dmVyd3JpdGUpOworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRG93bmxvYWQ6OnN0
YXJ0VHJhbnNmZXIoY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbikKK3sKKyAgICBtX3F0RG93bmxv
YWRlci0+c3RhcnRUcmFuc2ZlcihkZXN0aW5hdGlvbik7CiB9CiAKIHZvaWQgRG93bmxvYWQ6OnBs
YXRmb3JtRGlkRmluaXNoKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
RG93bmxvYWRzL3F0L1F0RmlsZURvd25sb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9Eb3dubG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5jcHAKaW5kZXggYzkzNmIwOGU3MGY5
MDRjZjRiNWIzMzZmNTRiNzI2OTc3ZGJlZDBmOS4uYzNiMmU4ZDBlZTIyYTQ3NzU3ZDNjMDNkYThj
YWRkMzBlZGRmMmVlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3du
bG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9Eb3dubG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5jcHAKQEAgLTUzLDQ1ICs1Myw0MSBA
QCBRdEZpbGVEb3dubG9hZGVyOjp+UXRGaWxlRG93bmxvYWRlcigpCiAgICAgYWJvcnREb3dubG9h
ZFdyaXRpbmdBbmRFbWl0RXJyb3IoUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvckFib3J0
ZWQpOwogfQogCi12b2lkIFF0RmlsZURvd25sb2FkZXI6OnN0YXJ0KCkKK3ZvaWQgUXRGaWxlRG93
bmxvYWRlcjo6aW5pdCgpCiB7CiAgICAgY29ubmVjdChtX3JlcGx5LmdldCgpLCBTSUdOQUwocmVh
ZHlSZWFkKCkpLCBTTE9UKG9uUmVhZHlSZWFkKCkpKTsKICAgICBjb25uZWN0KG1fcmVwbHkuZ2V0
KCksIFNJR05BTChmaW5pc2hlZCgpKSwgU0xPVChvbkZpbmlzaGVkKCkpKTsKICAgICBjb25uZWN0
KG1fcmVwbHkuZ2V0KCksIFNJR05BTChlcnJvcihRTmV0d29ya1JlcGx5OjpOZXR3b3JrRXJyb3Ip
KSwgU0xPVChvbkVycm9yKFFOZXR3b3JrUmVwbHk6Ok5ldHdvcmtFcnJvcikpKTsKLQotICAgIC8v
IENhbGwgb25SZWFkeVJlYWQganVzdCBpbiBjYXNlIHNvbWUgZGF0YSBpcyBhbHJlYWR5IHdhaXRp
bmcuCi0gICAgb25SZWFkeVJlYWQoKTsKIH0KIAotdm9pZCBRdEZpbGVEb3dubG9hZGVyOjpkZXRl
cm1pbmVGaWxlbmFtZSgpCitRU3RyaW5nIFF0RmlsZURvd25sb2FkZXI6OmRldGVybWluZUZpbGVu
YW1lKCkKIHsKICAgICBBU1NFUlQoIW1fZGVzdGluYXRpb25GaWxlKTsKIAotICAgIFFTdHJpbmcg
ZmlsZU5hbWVDYW5kaWRhdGUgPSBmaWxlbmFtZUZyb21IVFRQQ29udGVudERpc3Bvc2l0aW9uKFFT
dHJpbmc6OmZyb21MYXRpbjEobV9yZXBseS0+cmF3SGVhZGVyKCJDb250ZW50LURpc3Bvc2l0aW9u
IikpKTsKLSAgICBpZiAoZmlsZU5hbWVDYW5kaWRhdGUuaXNFbXB0eSgpKSB7CisgICAgUVN0cmlu
ZyBmaWxlbmFtZUNhbmRpZGF0ZSA9IGZpbGVuYW1lRnJvbUhUVFBDb250ZW50RGlzcG9zaXRpb24o
UVN0cmluZzo6ZnJvbUxhdGluMShtX3JlcGx5LT5yYXdIZWFkZXIoIkNvbnRlbnQtRGlzcG9zaXRp
b24iKSkpOworICAgIGlmIChmaWxlbmFtZUNhbmRpZGF0ZS5pc0VtcHR5KCkpIHsKICAgICAgICAg
S1VSTCBrdXJsID0gbV9yZXBseS0+dXJsKCk7Ci0gICAgICAgIGZpbGVOYW1lQ2FuZGlkYXRlID0g
ZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKGt1cmwubGFzdFBhdGhDb21wb25lbnQoKSk7CisgICAg
ICAgIGZpbGVuYW1lQ2FuZGlkYXRlID0gZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKGt1cmwubGFz
dFBhdGhDb21wb25lbnQoKSk7CiAgICAgfQogCi0gICAgaWYgKGZpbGVOYW1lQ2FuZGlkYXRlLmlz
RW1wdHkoKSkgeworICAgIGlmIChmaWxlbmFtZUNhbmRpZGF0ZS5pc0VtcHR5KCkpIHsKICAgICAg
ICAgYWJvcnREb3dubG9hZFdyaXRpbmdBbmRFbWl0RXJyb3IoUXRGaWxlRG93bmxvYWRlcjo6RG93
bmxvYWRFcnJvckNhbm5vdERldGVybWluZUZpbGVuYW1lKTsKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gUVN0cmluZygpOwogICAgIH0KIAogICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHdl
IHJlbW92ZSBwb3NzaWJsZSAiLi4vLi4iIHBhcnRzIGluIHRoZSBnaXZlbiBmaWxlIG5hbWUuCi0g
ICAgUUZpbGVJbmZvIGZpbGVOYW1lRmlsdGVyKGZpbGVOYW1lQ2FuZGlkYXRlKTsKLSAgICBRU3Ry
aW5nIGZpbGVOYW1lID0gZmlsZU5hbWVGaWx0ZXIuZmlsZU5hbWUoKTsKKyAgICBRRmlsZUluZm8g
ZmlsZW5hbWVGaWx0ZXIoZmlsZW5hbWVDYW5kaWRhdGUpOworICAgIFFTdHJpbmcgZmlsZW5hbWUg
PSBmaWxlbmFtZUZpbHRlci5maWxlTmFtZSgpOwogCi0gICAgaWYgKGZpbGVOYW1lLmlzRW1wdHko
KSkgeworICAgIGlmIChmaWxlbmFtZS5pc0VtcHR5KCkpIHsKICAgICAgICAgYWJvcnREb3dubG9h
ZFdyaXRpbmdBbmRFbWl0RXJyb3IoUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvckNhbm5v
dERldGVybWluZUZpbGVuYW1lKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gUVN0
cmluZygpOwogICAgIH0KIAotICAgIGJvb2wgYWxsb3dPdmVyd3JpdGU7Ci0gICAgbV9kb3dubG9h
ZC0+ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoZmlsZU5hbWUsIGFsbG93
T3ZlcndyaXRlKTsKKyAgICByZXR1cm4gZmlsZW5hbWU7CiB9CiAKLXZvaWQgUXRGaWxlRG93bmxv
YWRlcjo6ZGVjaWRlZERlc3RpbmF0aW9uKGNvbnN0IFFTdHJpbmcmIGRlY2lkZWRGaWxlUGF0aCwg
Ym9vbCBhbGxvd092ZXJ3cml0ZSkKK3ZvaWQgUXRGaWxlRG93bmxvYWRlcjo6c3RhcnRUcmFuc2Zl
cihjb25zdCBRU3RyaW5nJiBkZWNpZGVkRmlsZVBhdGgpCiB7CiAgICAgQVNTRVJUKCFtX2Rlc3Rp
bmF0aW9uRmlsZSk7CiAKQEAgLTEwMiwxNyArOTgsMTIgQEAgdm9pZCBRdEZpbGVEb3dubG9hZGVy
OjpkZWNpZGVkRGVzdGluYXRpb24oY29uc3QgUVN0cmluZyYgZGVjaWRlZEZpbGVQYXRoLCBib29s
IGEKICAgICB9CiAKICAgICBpZiAoZGVjaWRlZEZpbGVQYXRoLmlzRW1wdHkoKSkgewotICAgICAg
ICBhYm9ydERvd25sb2FkV3JpdGluZ0FuZEVtaXRFcnJvcihRdEZpbGVEb3dubG9hZGVyOjpEb3du
bG9hZEVycm9yQ2FuY2VsbGVkQnlDYWxsZXIpOworICAgICAgICBhYm9ydERvd25sb2FkV3JpdGlu
Z0FuZEVtaXRFcnJvcihRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9yQ2FuY2VsbGVkKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIE93blB0cjxRRmlsZT4gZG93bmxvYWRGaWxl
ID0gYWRvcHRQdHIobmV3IFFGaWxlKGRlY2lkZWRGaWxlUGF0aCkpOwogCi0gICAgaWYgKCFhbGxv
d092ZXJ3cml0ZSAmJiBkb3dubG9hZEZpbGUtPmV4aXN0cygpKSB7Ci0gICAgICAgIGFib3J0RG93
bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKFF0RmlsZURvd25sb2FkZXI6OkRvd25sb2FkRXJyb3JG
aWxlQWxyZWFkeUV4aXN0cyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBpZiAoIWRv
d25sb2FkRmlsZS0+b3BlbihRSU9EZXZpY2U6OldyaXRlT25seSB8IFFJT0RldmljZTo6VHJ1bmNh
dGUpKSB7CiAgICAgICAgIGFib3J0RG93bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKFF0RmlsZURv
d25sb2FkZXI6OkRvd25sb2FkRXJyb3JDYW5ub3RPcGVuRmlsZSk7CiAgICAgICAgIHJldHVybjsK
QEAgLTEzMyw3ICsxMjQsNiBAQCB2b2lkIFF0RmlsZURvd25sb2FkZXI6OmRlY2lkZWREZXN0aW5h
dGlvbihjb25zdCBRU3RyaW5nJiBkZWNpZGVkRmlsZVBhdGgsIGJvb2wgYQogICAgIC8vIGZ1bmN0
aW9uIHdhcyBjYWxsZWQuCiAgICAgaWYgKG1fcmVwbHktPmlzRmluaXNoZWQoKSkKICAgICAgICAg
b25GaW5pc2hlZCgpOwotCiB9CiAKIHZvaWQgUXRGaWxlRG93bmxvYWRlcjo6YWJvcnREb3dubG9h
ZFdyaXRpbmdBbmRFbWl0RXJyb3IoUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvciBlcnJv
ckNvZGUpCkBAIC0xNTcsMTAgKzE0NywxMCBAQCB2b2lkIFF0RmlsZURvd25sb2FkZXI6OmFib3J0
RG93bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKFF0RmlsZURvd25sb2FkZXI6OkRvd25sbwogICAg
IGNhc2UgUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvckNhbm5vdE9wZW5GaWxlOgogICAg
ICAgICB0cmFuc2xhdGVkRXJyb3JNZXNzYWdlID0gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRl
KCJRdEZpbGVEb3dubG9hZGVyIiwgIkNhbm5vdCBvcGVuIGZpbGUgZm9yIHdyaXRpbmciKTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9yRmls
ZUFscmVhZHlFeGlzdHM6Ci0gICAgICAgIHRyYW5zbGF0ZWRFcnJvck1lc3NhZ2UgPSBRQ29yZUFw
cGxpY2F0aW9uOjp0cmFuc2xhdGUoIlF0RmlsZURvd25sb2FkZXIiLCAiRmlsZSBhbHJlYWR5IGV4
aXN0cyIpOworICAgIGNhc2UgUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvckRlc3RpbmF0
aW9uQWxyZWFkeUV4aXN0czoKKyAgICAgICAgdHJhbnNsYXRlZEVycm9yTWVzc2FnZSA9IFFDb3Jl
QXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUXRGaWxlRG93bmxvYWRlciIsICJEZXN0aW5hdGlvbiBh
bHJlYWR5IGV4aXN0cyIpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFF0RmlsZURvd25sb2Fk
ZXI6OkRvd25sb2FkRXJyb3JDYW5jZWxsZWRCeUNhbGxlcjoKKyAgICBjYXNlIFF0RmlsZURvd25s
b2FkZXI6OkRvd25sb2FkRXJyb3JDYW5jZWxsZWQ6CiAgICAgICAgIHRyYW5zbGF0ZWRFcnJvck1l
c3NhZ2UgPSBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlF0RmlsZURvd25sb2FkZXIiLCAi
RG93bmxvYWQgY2FuY2VsbGVkIGJ5IGNhbGxlciIpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IFF0RmlsZURvd25sb2FkZXI6OkRvd25sb2FkRXJyb3JDYW5ub3REZXRlcm1pbmVGaWxlbmFtZToK
QEAgLTE3NSw2ICsxNjUsMjcgQEAgdm9pZCBRdEZpbGVEb3dubG9hZGVyOjphYm9ydERvd25sb2Fk
V3JpdGluZ0FuZEVtaXRFcnJvcihRdEZpbGVEb3dubG9hZGVyOjpEb3dubG8KICAgICBtX2Rvd25s
b2FkLT5kaWRGYWlsKGRvd25sb2FkRXJyb3IsIENvcmVJUEM6OkRhdGFSZWZlcmVuY2UoMCwgMCkp
OwogfQogCit2b2lkIFF0RmlsZURvd25sb2FkZXI6OmhhbmRsZURvd25sb2FkUmVzcG9uc2UoKQor
eworICAgIC8vIEJ5IEFQSSBjb250cmFjdCwgUU5ldHdvcmtSZXBseTo6bWV0YURhdGFDaGFuZ2Vk
IGNhbm5vdCByZWFsbHkgYmUgdHJ1c3RlZC4KKyAgICAvLyBUaHVzIHdlIG5lZWQgdG8gY2FsbCB0
aGlzIHVwb24gcmVjZWl2aW5nIGZpcnN0IGRhdGEuCisgICAgU3RyaW5nIGNvbnRlbnRUeXBlID0g
bV9yZXBseS0+aGVhZGVyKFFOZXR3b3JrUmVxdWVzdDo6Q29udGVudFR5cGVIZWFkZXIpLnRvU3Ry
aW5nKCk7CisgICAgU3RyaW5nIGVuY29kaW5nID0gZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBl
KGNvbnRlbnRUeXBlKTsKKyAgICBTdHJpbmcgbWltZVR5cGUgPSBleHRyYWN0TUlNRVR5cGVGcm9t
TWVkaWFUeXBlKGNvbnRlbnRUeXBlKTsKKyAgICBTdHJpbmcgZmlsZW5hbWUgPSBkZXRlcm1pbmVG
aWxlbmFtZSgpOworCisgICAgLy8gSWYgZmlsZW5hbWUgaXMgZW1wdHkgaXQgbWVhbnMgZGV0ZXJt
aW5lRmlsZW5hbWUgYWJvcnRlZCBhbmQgZW1pdHRlZCBhbiBlcnJvci4KKyAgICBpZiAoZmlsZW5h
bWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBMZXQncyB0cnkgdG8gZ3Vl
c3MgZnJvbSB0aGUgZXh0ZW5zaW9uLgorICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5KCkpCisgICAg
ICAgIG1pbWVUeXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JQYXRoKG1fcmVw
bHktPnVybCgpLnBhdGgoKSk7CisKKyAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKG1fcmVw
bHktPnVybCgpLCBtaW1lVHlwZSwgbV9yZXBseS0+aGVhZGVyKFFOZXR3b3JrUmVxdWVzdDo6Q29u
dGVudExlbmd0aEhlYWRlcikudG9Mb25nTG9uZygpLCBlbmNvZGluZywgZmlsZW5hbWUpOworICAg
IG1fZG93bmxvYWQtPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7Cit9CisKIHZvaWQgUXRG
aWxlRG93bmxvYWRlcjo6b25SZWFkeVJlYWQoKQogewogICAgIGlmIChtX2Rlc3RpbmF0aW9uRmls
ZSkgewpAQCAtMTk1LDI3ICsyMDYsMjEgQEAgdm9pZCBRdEZpbGVEb3dubG9hZGVyOjpvblJlYWR5
UmVhZCgpCiAKICAgICAgICAgbV9kb3dubG9hZC0+ZGlkUmVjZWl2ZURhdGEoYnl0ZXNXcml0dGVu
KTsKICAgICB9IGVsc2UgaWYgKCFtX2hlYWRlcnNSZWFkKSB7Ci0gICAgICAgIC8vIEJ5IEFQSSBj
b250cmFjdCwgUU5ldHdvcmtSZXBseTo6bWV0YURhdGFDaGFuZ2VkIGNhbm5vdCByZWFsbHkgYmUg
dHJ1c3RlZC4KLSAgICAgICAgLy8gVGh1cyB3ZSBuZWVkIHRvIGNhbGwgdGhpcyB1cG9uIHJlY2Vp
dmluZyBmaXJzdCBkYXRhLgotICAgICAgICBTdHJpbmcgY29udGVudFR5cGUgPSBtX3JlcGx5LT5o
ZWFkZXIoUU5ldHdvcmtSZXF1ZXN0OjpDb250ZW50VHlwZUhlYWRlcikudG9TdHJpbmcoKTsKLSAg
ICAgICAgU3RyaW5nIGVuY29kaW5nID0gZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnRl
bnRUeXBlKTsKLSAgICAgICAgU3RyaW5nIG1pbWVUeXBlID0gZXh0cmFjdE1JTUVUeXBlRnJvbU1l
ZGlhVHlwZShjb250ZW50VHlwZSk7Ci0KLSAgICAgICAgLy8gTGV0J3MgdHJ5IHRvIGd1ZXNzIGZy
b20gdGhlIGV4dGVuc2lvbi4KLSAgICAgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIG1pbWVUeXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JQYXRoKG1f
cmVwbHktPnVybCgpLnBhdGgoKSk7Ci0KLSAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25z
ZShtX3JlcGx5LT51cmwoKSwgbWltZVR5cGUsIG1fcmVwbHktPmhlYWRlcihRTmV0d29ya1JlcXVl
c3Q6OkNvbnRlbnRMZW5ndGhIZWFkZXIpLnRvTG9uZ0xvbmcoKSwgZW5jb2RpbmcsIFN0cmluZygp
KTsKLSAgICAgICAgbV9kb3dubG9hZC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKLQot
ICAgICAgICBkZXRlcm1pbmVGaWxlbmFtZSgpOwotCisgICAgICAgIGhhbmRsZURvd25sb2FkUmVz
cG9uc2UoKTsKICAgICAgICAgbV9oZWFkZXJzUmVhZCA9IHRydWU7CiAgICAgfQogfQogCiB2b2lk
IFF0RmlsZURvd25sb2FkZXI6Om9uRmluaXNoZWQoKQogeworICAgIC8vIElmIGl0J3MgZmluaXNo
ZWQgYW5kIHdlIGhhdmVuJ3QgZXZlbiByZWFkIHRoZSBoZWFkZXJzLCBpdCBtZWFucyB3ZSBuZXZl
ciBnb3QgdG8gb25SZWFkeVJlYWQgYW5kIHRoYXQgd2UgYXJlCisgICAgLy8gcHJvYmFibHkgZGVh
bGluZyB3aXRoIHRoZSBkb3dubG9hZCBvZiBhIGxvY2FsIGZpbGUgb3Igb2YgYSBzbWFsbCBmaWxl
IHRoYXQgd2FzIHN0YXJ0ZWQgd2l0aCBhIGhhbmRsZS4KKyAgICBpZiAoIW1faGVhZGVyc1JlYWQp
IHsKKyAgICAgICAgaGFuZGxlRG93bmxvYWRSZXNwb25zZSgpOworICAgICAgICBtX2hlYWRlcnNS
ZWFkID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmICghbV9kZXN0aW5h
dGlvbkZpbGUpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjIzLDYgKzIyOCw4IEBAIHZvaWQgUXRG
aWxlRG93bmxvYWRlcjo6b25GaW5pc2hlZCgpCiAKICAgICBpZiAobV9lcnJvciA9PSBRTmV0d29y
a1JlcGx5OjpOb0Vycm9yKQogICAgICAgICBtX2Rvd25sb2FkLT5kaWRGaW5pc2goKTsKKyAgICBl
bHNlIGlmICAobV9lcnJvciA9PSBRTmV0d29ya1JlcGx5OjpPcGVyYXRpb25DYW5jZWxlZEVycm9y
KQorICAgICAgICBhYm9ydERvd25sb2FkV3JpdGluZ0FuZEVtaXRFcnJvcihRdEZpbGVEb3dubG9h
ZGVyOjpEb3dubG9hZEVycm9yQ2FuY2VsbGVkKTsKICAgICBlbHNlCiAgICAgICAgIGFib3J0RG93
bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKFF0RmlsZURvd25sb2FkZXI6OkRvd25sb2FkRXJyb3JO
ZXR3b3JrRmFpbHVyZSk7CiB9CkBAIC0yMzUsNiArMjQyLDcgQEAgdm9pZCBRdEZpbGVEb3dubG9h
ZGVyOjpvbkVycm9yKFFOZXR3b3JrUmVwbHk6Ok5ldHdvcmtFcnJvciBjb2RlKQogdm9pZCBRdEZp
bGVEb3dubG9hZGVyOjpjYW5jZWwoKQogewogICAgIG1fcmVwbHktPmFib3J0KCk7CisgICAgLy8g
UXRGaWxlRG93bmxvYWRlcjo6b25GaW5pc2hlZCgpIHdpbGwgYmUgY2FsbGVkIGFuZCB3aWxsIHJh
aXNlIGEgRG93bmxvYWRFcnJvckNhbmNlbGxlZC4KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZp
bGVEb3dubG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9R
dEZpbGVEb3dubG9hZGVyLmgKaW5kZXggYjZiOGJhMjhiZWE5ZjhhYjFkNjk0Yzg0MzM0MTQ0YTRh
MmM5ZDE1Yi4uMGFlMGZkODRhNjljN2RlYzFmMmE0MDg2OTJhZTZiOTZiYjliMmU2MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvUXRGaWxlRG93bmxv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L1F0Rmls
ZURvd25sb2FkZXIuaApAQCAtNDQsMTYgKzQ0LDE2IEBAIGNsYXNzIFF0RmlsZURvd25sb2FkZXIg
OiBwdWJsaWMgUU9iamVjdCB7CiBwdWJsaWM6CiAgICAgUXRGaWxlRG93bmxvYWRlcihEb3dubG9h
ZCosIFBhc3NPd25QdHI8UU5ldHdvcmtSZXBseT4pOwogICAgIHZpcnR1YWwgflF0RmlsZURvd25s
b2FkZXIoKTsKLSAgICB2b2lkIGRlY2lkZWREZXN0aW5hdGlvbihjb25zdCBRU3RyaW5nJiBkZWNp
ZGVkRmlsZVBhdGgsIGJvb2wgYWxsb3dPdmVyd3JpdGUpOwogICAgIHZvaWQgY2FuY2VsKCk7Ci0g
ICAgdm9pZCBzdGFydCgpOworICAgIHZvaWQgaW5pdCgpOworICAgIHZvaWQgc3RhcnRUcmFuc2Zl
cihjb25zdCBRU3RyaW5nJiBkZXN0aW5hdGlvbik7CiAKICAgICBlbnVtIERvd25sb2FkRXJyb3Ig
ewogICAgICAgICBEb3dubG9hZEVycm9yQWJvcnRlZCA9IDAsCiAgICAgICAgIERvd25sb2FkRXJy
b3JDYW5ub3RXcml0ZVRvRmlsZSwKICAgICAgICAgRG93bmxvYWRFcnJvckNhbm5vdE9wZW5GaWxl
LAotICAgICAgICBEb3dubG9hZEVycm9yRmlsZUFscmVhZHlFeGlzdHMsCi0gICAgICAgIERvd25s
b2FkRXJyb3JDYW5jZWxsZWRCeUNhbGxlciwKKyAgICAgICAgRG93bmxvYWRFcnJvckRlc3RpbmF0
aW9uQWxyZWFkeUV4aXN0cywKKyAgICAgICAgRG93bmxvYWRFcnJvckNhbmNlbGxlZCwKICAgICAg
ICAgRG93bmxvYWRFcnJvckNhbm5vdERldGVybWluZUZpbGVuYW1lLAogICAgICAgICBEb3dubG9h
ZEVycm9yTmV0d29ya0ZhaWx1cmUKICAgICB9OwpAQCAtNjUsNyArNjUsOCBAQCBwcml2YXRlIHNs
b3RzOgogCiBwcml2YXRlOgogICAgIHZvaWQgYWJvcnREb3dubG9hZFdyaXRpbmdBbmRFbWl0RXJy
b3IoUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvcik7Ci0gICAgdm9pZCBkZXRlcm1pbmVG
aWxlbmFtZSgpOworICAgIFFTdHJpbmcgZGV0ZXJtaW5lRmlsZW5hbWUoKTsKKyAgICB2b2lkIGhh
bmRsZURvd25sb2FkUmVzcG9uc2UoKTsKIAogICAgIERvd25sb2FkKiBtX2Rvd25sb2FkOwogICAg
IE93blB0cjxRTmV0d29ya1JlcGx5PiBtX3JlcGx5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAKaW5kZXggZThhYTdhZGE0YjZlNWU2YWYxNmE0NzM4M2Y5MmM0MDdiMjg2
OGE1Zi4uYmQ2OWNhZDdlZGIwNWY1YmE5YTRhYmMwNTYzYTM3NjJhZjM3ZTU2OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC05NTcsNiArOTU3LDEzIEBAIHZv
aWQgV2ViUHJvY2Vzczo6Y2FuY2VsRG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCkKICAgICBE
b3dubG9hZE1hbmFnZXI6OnNoYXJlZCgpLmNhbmNlbERvd25sb2FkKGRvd25sb2FkSUQpOwogfQog
CisjaWYgUExBVEZPUk0oUVQpCit2b2lkIFdlYlByb2Nlc3M6OnN0YXJ0VHJhbnNmZXIodWludDY0
X3QgZG93bmxvYWRJRCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbikKK3sKKyAgICBEb3dubG9h
ZE1hbmFnZXI6OnNoYXJlZCgpLnN0YXJ0VHJhbnNmZXIoZG93bmxvYWRJRCwgZGVzdGluYXRpb24p
OworfQorI2VuZGlmCisKIHZvaWQgV2ViUHJvY2Vzczo6c2V0RW5oYW5jZWRBY2Nlc3NpYmlsaXR5
KGJvb2wgZmxhZykKIHsKICAgICBXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpzZXRFbmhhbmNlZFVz
ZXJJbnRlcmZhY2VBY2Nlc3NpYmlsaXR5KGZsYWcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaAppbmRleCAwZDVkNzRhOWMxYzE0OTEyZDIzNmRkMzg0ZjY1MzYwMzFiNDE0MTMy
Li4zOWY4YTVmMGNlODhjMDgwM2ZiMjk2NjkwYTZjZjc0ZTYxZTYyZDJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMTc1LDYgKzE3NSw5IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIGRvd25sb2FkUmVxdWVzdCh1aW50NjRfdCBkb3dubG9hZElELCB1aW50NjRfdCBp
bml0aWF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2
b2lkIGNhbmNlbERvd25sb2FkKHVpbnQ2NF90IGRvd25sb2FkSUQpOworI2lmIFBMQVRGT1JNKFFU
KQorICAgIHZvaWQgc3RhcnRUcmFuc2Zlcih1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBTdHJp
bmcmIGRlc3RpbmF0aW9uKTsKKyNlbmRpZgogCiAgICAgdm9pZCBzZXRUZXh0Q2hlY2tlclN0YXRl
KGNvbnN0IFRleHRDaGVja2VyU3RhdGUmKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA0NGY0NDE5YTA3ODdmYzc3NTlj
YzUyYjNlNTQ0MzVmNzk1ZmMzOGY4Li5mOTE5NmFlMmE5OGQxN2I2ODNhZDQ3NjBjMGI1ZjQ5N2Ex
NWVmYzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCkBAIC02NCw2ICs2NCw5IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgewogICAg
ICMgdHdvIG1lc3NhZ2VzLgogICAgIERvd25sb2FkUmVxdWVzdCh1aW50NjRfdCBkb3dubG9hZElE
LCB1aW50NjRfdCBpbml0aWF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVx
dWVzdCkKICAgICBDYW5jZWxEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElEKQorI2lmIFBMQVRG
T1JNKFFUKQorICAgIFN0YXJ0VHJhbnNmZXIodWludDY0X3QgZG93bmxvYWRJRCwgV1RGOjpTdHJp
bmcgZGVzdGluYXRpb24pCisjZW5kaWYKIAogICAgIFNldFRleHRDaGVja2VyU3RhdGUoV2ViS2l0
OjpUZXh0Q2hlY2tlclN0YXRlIHRleHRDaGVja2VyU3RhdGUpCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113462</attachid>
            <date>2011-11-03 04:38:31 -0700</date>
            <delta_ts>2011-11-03 05:08:26 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-68962-20111103133757.patch</filename>
            <type>text/plain</type>
            <size>63708</size>
            <attacher name="Jesus Sanchez-Palencia">jesus</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkxNjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggODEzNTU4NGJiOGRi
NTMwZDA1ZmE3MmJlOGJjMWI2OWU2Y2QyZDllNS4uYzY3OTI5YjA0NmIzYjFkYmQ2NmQ3ODhiZDUw
M2YxNDc3Y2U5NTRmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0xMS0w
MiAgSmVzdXMgU2FuY2hlei1QYWxlbmNpYSAgPGplc3VzLnBhbGVuY2lhQG9wZW5ib3NzYS5vcmc+
CisKKyAgICAgICAgW1F0XVtXSzJdIERvd25sb2FkIHN1cHBvcnQgYW5kIEFQSSBpbiBVSVByb2Nl
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4OTYy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVnaXN0
ZXJpbmcgbmV3IHFtbCB0eXBlIFFXZWJEb3dubG9hZEl0ZW0uCisKKyAgICAgICAgKiBkZWNsYXJh
dGl2ZS9wbHVnaW4uY3BwOgorICAgICAgICAoV2ViS2l0UW1sUGx1Z2luOjpyZWdpc3RlclR5cGVz
KToKKwogMjAxMS0xMS0wMiAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CiAKICAgICAgICAg
RXhwYW5kIERyYWdDb250cm9sbGVyIHRvIHByb3ZpZGUgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0
aGUgZHJhZ2dpbmcgc2Vzc2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDQ1YWQyMWM3NTY5YWY3ODQ5ZDcyYzgz
YWE4NGYzZDhiYzY3ZjNhMjIuLjFlM2QxMjA2NjFkMjVkMDljYWRmNzk0YjY3M2UxMzg3OGViY2Uw
NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNDggQEAKKzIwMTEtMTEtMDIgIEplc3VzIFNhbmNo
ZXotUGFsZW5jaWEgIDxqZXN1cy5wYWxlbmNpYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFtR
dF1bV0syXSBEb3dubG9hZCBzdXBwb3J0IGFuZCBBUEkgaW4gVUlQcm9jZXNzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODk2MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGltcGxlbWVudCBvdXIgV2tD
b250ZXh0RG93bmxvYWRDbGllbnQgYW5kIHRoZSBuZWVkZWQgY2FsbGJhY2tzLgorICAgICAgICBX
ZSBhbHNvIGFkZCBBUElzIGJ5IGV4cG9zaW5nIFFXZWJEb3dubG9hZEl0ZW0uIE9iamVjdHMgZnJv
bSB0aGlzIHR5cGUKKyAgICAgICAgaGF2ZSB0aGVpciBvd25lcnNoaXAgaGFuZGxlZCBieSBRRGVz
a3RvcFdlYlZpZXcgYW5kIHdpbGwgYmUgY3JlYXRlZCBvcgorICAgICAgICBkZXN0cm95ZWQgYXMg
bmVlZGVkLiBDbGFzc2VzIGltcGxlbWVudGluZyBWaWV3SW50ZXJmYWNlIChRRGVza3RvcFdlYlZp
ZXdQcml2YXRlCisgICAgICAgIGFuZCBUb3VjaFZpZXdJbnRlcmZhY2UpIHdpbGwgcmVjZWl2ZSBh
IHNpZ25hbCAoZG93bmxvYWRSZXF1ZXN0ZWQpIHdpdGggYSBwb2ludGVyCisgICAgICAgIHRvIHRo
ZSByZWNlbnRseSBjcmVhdGVkIFFXZWJEb3dubG9hZEl0ZW0uIFdpdGggdGhhdCB0aGV5IGNhbiBj
b25uZWN0IHRoZSBwcm9wZXIKKyAgICAgICAgc2lnbmFscyBhbmQgc2xvdHMsIHNldCB0aGUgZG93
bmxvYWQgZGVzdGluYXRpb24gcGF0aCBhbmQgdGhlbiBjYWxsIHN0YXJ0KCkuCisgICAgICAgIE9i
amVjdHMgb2YgdGhpcyB0eXBlIHdpbGwgcHJvdmlkZSB0aGUgcHJvZ3Jlc3Mgb2YgYSBkb3dubG9h
ZCwgYSBzbG90IHRvIGNhbmNlbCBpdCwKKyAgICAgICAgYW5kIHNpZ25hbHMgZm9yIGdldHRpbmcg
ZmluaXNoZWQgb3IgZmFpbHVyZSBzdGF0dXMuCisgICAgICAgIFFXZWJEb3dubG9hZEl0ZW0gd2Fz
IGFsc28gZXhwb3NlZCBpbiBRTUwuCisgICAgICAgIFF0IG5lZWRlZCBhbiBhc3luY2hyb25vdXMg
d2F5IGZvciBVSVByb2Nlc3MgdG8gcmV0dXJuIGEgZGVzdGluYXRpb24gcGF0aCB0byBXZWJQcm9j
ZXNzLAorICAgICAgICB0aGVyZWZvcmUgdGhlIHN0YXJ0VHJhbnNmZXIgQVBJIHdhcyBhZGRlZCB0
byBXZWJLaXQyJ3MgRG93bmxvYWQgaGFuZGxlcnMuCisKKyAgICAgICAgKiBTaGFyZWQvcXQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzUXQuY3BwOgorICAgICAgICAoQ29yZUlQQzo6OjplbmNvZGUpOgor
ICAgICAgICAoQ29yZUlQQzo6OjpkZWNvZGUpOgorICAgICAgICBBZGQgZW5jb2RpbmcgYW5kIGRl
Y29kaW5nIG9mIHN1Z2dlc3RlZEZpbGVuYW1lIGZvciBSZXNvdXJjZVJlc3BvbnNlLgorCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9xdC9XS1ZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L3F0L3FiYXNld2Vidmlldy5oOiBBZGQgc2lnbmFsIGRvd25sb2FkUmVxdWVzdGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFEZXNr
dG9wV2ViVmlld1ByaXZhdGU6OmRvd25sb2FkUmVxdWVzdGVkKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlld19wLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L3F0L3F3ZWJkb3dubG9hZGl0ZW0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFFXZWJEb3dubG9hZEl0
ZW1Qcml2YXRlOjpRV2ViRG93bmxvYWRJdGVtUHJpdmF0ZSk6CisgICAgICAgIChRV2ViRG93bmxv
YWRJdGVtOjpRV2ViRG93bmxvYWRJdGVtKToKKyAgICAgICAgKFFXZWJEb3dubG9hZEl0ZW06On5R
V2ViRG93bmxvYWRJdGVtKToKKyAgICAgICAgKFFXZWJEb3dubG9hZEl0ZW06OnVybCk6CisgICAg
ICAgIChRV2ViRG93bmxvYWRJdGVtOjpkZXN0aW5hdGlvblBhdGgpOgorICAgICAgICAoUVdlYkRv
d25sb2FkSXRlbTo6c2V0RGVzdGluYXRpb25QYXRoKToKKyAgICAgICAgKFFXZWJEb3dubG9hZEl0
ZW06OnN1Z2dlc3RlZEZpbGVuYW1lKToKKyAgICAgICAgKFFXZWJEb3dubG9hZEl0ZW06Om1pbWVU
eXBlKToKKyAgICAgICAgKFFXZWJEb3dubG9hZEl0ZW06OmV4cGVjdGVkQ29udGVudExlbmd0aCk6
CisgICAgICAgIChRV2ViRG93bmxvYWRJdGVtOjp0b3RhbEJ5dGVzUmVjZWl2ZWQpOgorICAgICAg
ICAoUVdlYkRvd25sb2FkSXRlbTo6Y2FuY2VsKToKKyAgICAgICAgKFFXZWJEb3dubG9hZEl0ZW06
OnN0YXJ0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F3ZWJkb3dubG9hZGl0ZW0uaDog
QWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxvYWRpdGVtX3AuaDog
QWRkZWQuCisgICAgICAgIChRV2ViRG93bmxvYWRJdGVtUHJpdmF0ZTo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvRGVza3Rv
cFdlYlZpZXcvdHN0X2Rvd25sb2FkLnFtbDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21tb24vZG93bmxvYWQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21tb24vZG93bmxvYWQuemlwOiBB
ZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL3FtbHRlc3Rz
LnBybzoKKworICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OnN0YXJ0VHJhbnNmZXIpOiBRdCBvbmx5
IGZ1bmN0aW9uIGFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQ
cm94eS5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDogQWRkZWQgUXQgc3Bl
Y2lmaWMgZnVuY3Rpb24gdG8gY2FsbCBoYW5kbGVEb3dubG9hZFJlcXVlc3QgZnJvbSBRdFdlYlBh
Z2VQcm94eS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29udGV4dDo6ZG93bmxvYWQpOgorICAgICAgICBVc2luZyBXZWJQYWdlUHJv
eHk6OmhhbmRsZURvd25sb2FkUmVxdWVzdCB0byBib290c3RyYXAgYSBkb3dubG9hZCB0aHJvdWdo
IFBhZ2VDbGllbnQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKToKKyAg
ICAgICAgVXNpbmcgaGFuZGxlRG93bmxvYWRSZXF1ZXN0KCkgdG8gYm9vdHN0cmFwIGEgZG93bmxv
YWQgdGhyb3VnaCBQYWdlQ2xpZW50LgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omhh
bmRsZURvd25sb2FkUmVxdWVzdCk6IENhbGxzIFBhZ2VDbGllbnQ6OmhhbmRsZURvd25sb2FkUmVx
dWVzdCgpLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKworICAgICAgICAq
IFVJUHJvY2Vzcy9xdC9RdERvd25sb2FkTWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0Ojp0b1F0RG93bmxvYWRNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6cXRfd2tfZGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6cXRfd2tfZGlkQ3JlYXRlRGVzdGluYXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpxdF93a19kaWRGaW5pc2hEb3dubG9hZCk6CisgICAgICAg
IChXZWJLaXQ6OnF0X3drX2RpZEZhaWxEb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OnF0X3dr
X2RpZFJlY2VpdmVEYXRhRm9yRG93bmxvYWQpOgorICAgICAgICAoUXREb3dubG9hZE1hbmFnZXI6
OmRvd25sb2FkUmVjZWl2ZWRSZXNwb25zZSk6IFdpbGwgcmVhY2ggUXRXZWJQYWdlUHJveHk6OmRp
ZFJlY2VpdmVEb3dubG9hZFJlc3BvbnNlLgorICAgICAgICAoUXREb3dubG9hZE1hbmFnZXI6OmRv
d25sb2FkQ3JlYXRlZERlc3RpbmF0aW9uKToKKyAgICAgICAgKFF0RG93bmxvYWRNYW5hZ2VyOjpk
b3dubG9hZEZpbmlzaGVkKToKKyAgICAgICAgKFF0RG93bmxvYWRNYW5hZ2VyOjpkb3dubG9hZEZh
aWxlZCk6CisgICAgICAgIChRdERvd25sb2FkTWFuYWdlcjo6ZG93bmxvYWREYXRhUmVjZWl2ZWQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdERvd25sb2FkTWFuYWdlci5oOiBBZGRlZC4KKyAg
ICAgICAgQm9vdHN0cmFwIG91ciBXS0NvbnRleHREb3dubG9hZENsaWVudCBhbmQgc2V0IGl0cyBj
YWxsYmFja3MuCisgICAgICAgIFRoaXMgZW50aXR5IHdpbGwgYWxzbyBoYW5kbGUgYWxsIGRvd25s
b2FkcyBhbmQga2VlcCBhIG1hcCBvZiB0aGVtLgorICAgICAgICBJdCB3aWxsIGJlIGtlcHQgYWxp
dmUgdG9nZXRoZXIgd2l0aCB0aGUgV2ViQ29udGV4dCBhcyBhIHN0YXRpYyBtZW1iZXIKKyAgICAg
ICAgb2YgUXRXZWJQYWdlUHJveHksIHNvIHdlIGNhbiBrZWVwIGl0IGFjcm9zcyBzZXZlcmFsIFdl
YlBhZ2VzIGFuZCwgdGhlcmVmb3JlLAorICAgICAgICBXZWJWaWV3cy4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChRdFdlYlBhZ2VQcm94eTo6
ZGVmYXVsdFdLQ29udGV4dCk6CisgICAgICAgIChRdFdlYlBhZ2VQcm94eTo6flF0V2ViUGFnZVBy
b3h5KToKKyAgICAgICAgKFF0V2ViUGFnZVByb3h5OjpoYW5kbGVEb3dubG9hZFJlcXVlc3QpOgor
ICAgICAgICAoUXRXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVEb3dubG9hZFJlc3BvbnNlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaDoKKyAgICAgICAgRnJvbSBub3cg
b24gaXQgd2lsbCBrZWVwIGEgc3RhdGljIFF0RG93bmxvYWRNYW5hZ2VyIHRvIGxpdmUgdG9nZXRo
ZXIKKyAgICAgICAgd2l0aCB0aGUgZGVmYXVsdCBXZWJDb250ZXh0LiBJdCBpbXBsZW1lbnRzIFBh
Z2VDbGllbnQ6OmhhbmRsZURvd25sb2FkUmVxdWVzdC4KKyAgICAgICAgUXRXZWJQYWdlUHJveHk6
OmRpZFJlY2VpdmVEb3dubG9hZFJlc3BvbnNlIHdpbGwgZW1pdCB0aGUgdmlldydzIHNpZ25hbCBk
b3dubG9hZFJlcXVlc3RlZC4KKworICAgICAgICogVUlQcm9jZXNzL3F0L1F0VG91Y2hWaWV3SW50
ZXJmYWNlLmg6CisgICAgICAgIChXZWJLaXQ6OlF0VG91Y2hWaWV3SW50ZXJmYWNlOjpkb3dubG9h
ZFJlcXVlc3RlZCk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0Vmlld0ludGVyZmFjZS5oOgor
CisgICAgICAgICogVUlQcm9jZXNzL3F0L3F3ZWJlcnJvci5jcHA6CisgICAgICAgIChRV2ViRXJy
b3I6OmRlc2NyaXB0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvcXdlYmVycm9yLmg6Cisg
ICAgICAgIChRV2ViRXJyb3I6OmVycm9yQ29kZUFzRG93bmxvYWRFcnJvcik6CisgICAgICAgIEFk
ZCBEb3dubG9hZCBlcnJvciBoYW5kbGluZyB0byBRV2ViRXJyb3IgYW5kIGEgbmV3IEFQSQorICAg
ICAgICB0byByZXRyaWV2ZSB0aGUgZXJyb3IgZGVzY3JpcHRpb24gZnJvbSB0aGUgb3JpZ2luYWwg
UmVzb3VyY2VFcnJvci4KKyAgICAgICAgQWxzbywgaXQgbm93IGhhcyBRV2ViRG93bmxvYWRJdGVt
OjpEb3dubG9hZEVycm9yIGVycm9yQ29kZUFzRG93bmxvYWRFcnJvcigpCisgICAgICAgIHRoYXQg
cmV0dXJucyB0aGUgZXJyb3IgY29kZSBhcyBhIERvd25sb2FkRXJyb3IuCisKKyAgICAgICAgKiBX
ZWJLaXQyLnBybzoKKyAgICAgICAgKiBXZWJLaXQyQVBJLnByaToKKworICAgICAgICAqIFdlYlBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2Vy
OjpzdGFydFRyYW5zZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZE1hbmFnZXIuaDoKKyAgICAgICAgQWRkaW5nIFF0IHNwZWNpZmljIHN0YXJ0VHJhbnNmZXIgZnVu
Y3Rpb24uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9Eb3dubG9hZFF0LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6
RG93bmxvYWQ6OnN0YXJ0V2l0aEhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpk
aWREZWNpZGVEZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpzdGFydFRy
YW5zZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3dubG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UXRGaWxlRG93bmxvYWRlcjo6aW5pdCk6IHN0YXJ0
KCkgd2FzIHJlbmFtZWQgdG8gaW5pdCgpLgorICAgICAgICAoV2ViS2l0OjpRdEZpbGVEb3dubG9h
ZGVyOjpkZXRlcm1pbmVGaWxlbmFtZSk6CisgICAgICAgIENhbGxpbmcgb25SZWFkeVJlYWQoKSBo
ZXJlIHdhcyB1bm5lY2Vzc2FyeSBhbmQgaXQgd2FzIHRyaWdnZXJpbmcgdGhlIG92ZXJhbGwKKyAg
ICAgICAgZG93bmxvYWQgcHJvY2VzcyBldmVuIGJlZm9yZSBEb3dubG9hZE1hbmFnZXIgZmluaXNo
ZWQgc3RhcnREb3dubG9hZCgpLiBUaGlzCisgICAgICAgIHdhcyBsZWFkaW5nIHRvIGEgRG93bmxv
YWRNYW5hZ2VyIHdpdGggYW4gZW1wdHkgbGlzdCBvZiBkb3dubG9hZHMuCisgICAgICAgIChXZWJL
aXQ6OlF0RmlsZURvd25sb2FkZXI6OnN0YXJ0VHJhbnNmZXIpOiBkZWNpZGVkRGVzdGluYXRpb24o
KSBiZWNhbWUgc3RhcnRUcmFuc2ZlcigpLgorICAgICAgICAoV2ViS2l0OjpRdEZpbGVEb3dubG9h
ZGVyOjphYm9ydERvd25sb2FkV3JpdGluZ0FuZEVtaXRFcnJvcik6CisgICAgICAgIChXZWJLaXQ6
OlF0RmlsZURvd25sb2FkZXI6OmhhbmRsZURvd25sb2FkUmVzcG9uc2UpOgorICAgICAgICAoV2Vi
S2l0OjpRdEZpbGVEb3dubG9hZGVyOjpvblJlYWR5UmVhZCk6CisgICAgICAgIChXZWJLaXQ6OlF0
RmlsZURvd25sb2FkZXI6Om9uRmluaXNoZWQpOgorICAgICAgICAoV2ViS2l0OjpRdEZpbGVEb3du
bG9hZGVyOjpjYW5jZWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvRG93bmxvYWRzL3F0L1F0Rmls
ZURvd25sb2FkZXIuaDoKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnN0YXJ0VHJhbnNmZXIpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgQWRkaW5nIFF0IHNwZWNpZmljIG1lc3NhZ2UgU3RhcnRUcmFu
c2ZlciBhbmQgaGFuZGxpbmcgZnVuY3Rpb24uCisKIDIwMTEtMTEtMDMgIFNpbW9uIEhhdXNtYW5u
ICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gW1dLMl0gTWluaUJy
b3dzZXIgYXNzZXJ0IGluIFF0V2ViUHJvY2Nlc3Mgb24gc3RhcnR1cCBpbiBkZWJ1ZyBidWlsZC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvZGVjbGFyYXRpdmUvcGx1Z2luLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvcXQvZGVjbGFyYXRpdmUvcGx1Z2luLmNwcAppbmRleCBjZjNiZGQ0YTEyZWI2
OTY1NzI0ZGI5YTY1ZWM3YTUzZWJlNjQ5YzU2Li5hNTFlZGJjNGQ4YzUyOTBlODU5ZjJhNDA3MmRk
ZmU2MjkzZDFjNGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L2RlY2xhcmF0aXZlL3Bs
dWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9kZWNsYXJhdGl2ZS9wbHVnaW4uY3BwCkBA
IC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAicWRlc2t0b3B3ZWJ2aWV3LmgiCiAjaW5jbHVkZSAi
cXRvdWNod2VicGFnZS5oIgogI2luY2x1ZGUgInF0b3VjaHdlYnZpZXcuaCIKKyNpbmNsdWRlICJx
d2ViZG93bmxvYWRpdGVtLmgiCiAjaW5jbHVkZSAicXdlYm5hdmlnYXRpb25jb250cm9sbGVyLmgi
CiAjaW5jbHVkZSAicXdlYnByZWZlcmVuY2VzLmgiCiAKQEAgLTU1LDYgKzU2LDcgQEAgcHVibGlj
OgogICAgICAgICBxbWxSZWdpc3RlclVuY3JlYXRhYmxlVHlwZTxRV2ViUHJlZmVyZW5jZXM+KHVy
aSwgMywgMCwgIldlYlByZWZlcmVuY2VzIiwgUU9iamVjdDo6dHIoIkNhbm5vdCBjcmVhdGUgc2Vw
YXJhdGUgaW5zdGFuY2Ugb2YgV2ViUHJlZmVyZW5jZXMiKSk7CiAgICAgICAgIHFtbFJlZ2lzdGVy
VW5jcmVhdGFibGVUeXBlPFFUb3VjaFdlYlBhZ2U+KHVyaSwgMywgMCwgIlRvdWNoV2ViUGFnZSIs
IFFPYmplY3Q6OnRyKCJDYW5ub3QgY3JlYXRlIHNlcGFyYXRlIGluc3RhbmNlIG9mIFRvdWNoV2Vi
UGFnZSwgdXNlIFRvdWNoV2ViVmlldyIpKTsKICAgICAgICAgcW1sUmVnaXN0ZXJVbmNyZWF0YWJs
ZVR5cGU8UU5ldHdvcmtSZXBseT4odXJpLCAzLCAwLCAiTmV0d29ya1JlcGx5IiwgUU9iamVjdDo6
dHIoIkNhbm5vdCBjcmVhdGUgc2VwYXJhdGUgaW5zdGFuY2Ugb2YgTmV0d29ya1JlcGx5IikpOwor
ICAgICAgICBxbWxSZWdpc3RlclVuY3JlYXRhYmxlVHlwZTxRV2ViRG93bmxvYWRJdGVtPih1cmks
IDUsIDAsICJEb3dubG9hZEl0ZW0iLCBRT2JqZWN0Ojp0cigiQ2Fubm90IGNyZWF0ZSBzZXBhcmF0
ZSBpbnN0YW5jZSBvZiBEb3dubG9hZEl0ZW0iKSk7CiAjZW5kaWYKICAgICB9CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1dlYkNvcmVBcmd1bWVudENvZGVyc1F0LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9XZWJDb3JlQXJndW1lbnRDb2RlcnNRdC5jcHAK
aW5kZXggMWZjMTVjNTk2ZjZmY2Y3ZDlmOGQzM2ZkZWViMzNjMWVlZTI4NmE3Yi4uOTUwZDM3MmQy
ZGRjN2U0NmY4MDc3ODM5NTBlMGMyODc2ZTM3ZGI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL3F0L1dlYkNvcmVBcmd1bWVudENvZGVyc1F0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvcXQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzUXQuY3BwCkBAIC02MSw2ICs2MSw3
IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlc3BvbnNlPjo6ZW5jb2RlKEFyZ3VtZW50
RW5jb2RlciogZW5jb2RlciwgY29uc3QgUmVzCiAgICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNl
UmVzcG9uc2UubWltZVR5cGUoKSk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PGlu
dDY0X3Q+KHJlc291cmNlUmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkpKTsKICAgICBl
bmNvZGVyLT5lbmNvZGUocmVzb3VyY2VSZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lKCkpOworICAg
IGVuY29kZXItPmVuY29kZShyZXNvdXJjZVJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lKCkpOwog
fQogCiBib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXNwb25zZT46OmRlY29kZShBcmd1bWVu
dERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlUmVzcG9uc2UmIHJlc291cmNlUmVzcG9uc2UpCkBA
IC04Nyw2ICs4OCwxMSBAQCBib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXNwb25zZT46OmRl
Y29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlUgogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgcmVzcG9uc2Uuc2V0VGV4dEVuY29kaW5nTmFtZSh0ZXh0RW5jb2RpbmdOYW1l
KTsKIAorICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZTsKKyAgICBpZiAoIWRlY29kZXItPmRl
Y29kZShzdWdnZXN0ZWRGaWxlbmFtZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXNw
b25zZS5zZXRTdWdnZXN0ZWRGaWxlbmFtZShzdWdnZXN0ZWRGaWxlbmFtZSk7CisKICAgICByZXNv
dXJjZVJlc3BvbnNlID0gcmVzcG9uc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L1dLVmlldy5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9XS1ZpZXcuaAppbmRleCAzMWY2NzI2ZjkzNmM2YzdjMjMxYzRl
NmE3NWY1MWFmMzBiMjA2NjZhLi44MmRlYTQ3ZjVmNmI5Yzg0NzEwYmVjNmI2MDc3NDNjZmZmODIw
YTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L1dLVmlldy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvV0tWaWV3LmgKQEAgLTIzLDYg
KzIzLDcgQEAKICNpbmNsdWRlIDxXZWJLaXQyL3FkZXNrdG9wd2Vidmlldy5oPgogI2luY2x1ZGUg
PFdlYktpdDIvcXRvdWNod2Vidmlldy5oPgogI2luY2x1ZGUgPFdlYktpdDIvcXRvdWNod2VicGFn
ZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvcXdlYmRvd25sb2FkaXRlbS5oPgogI2luY2x1ZGUgPFdl
YktpdDIvcXdlYm5hdmlnYXRpb25jb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9xd2Vi
cHJlZmVyZW5jZXMuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xYmFzZXdlYnZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWJh
c2V3ZWJ2aWV3LmgKaW5kZXggZGE3NmUzODhlNDJkMGFlODNjMzBlOGM0MTU5N2ZiNGJiODUwNzZl
Ny4uMDVjZjU1MDEwOGUzMTBiNjE4MGZiNzViNzNmNDNmMTY5NjVhN2IyZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xYmFzZXdlYnZpZXcuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FiYXNld2Vidmlldy5oCkBAIC0yNSw2ICsyNSw3
IEBACiAjaW5jbHVkZSA8UXREZWNsYXJhdGl2ZS9xcXVpY2twYWludGVkaXRlbS5oPgogCiBjbGFz
cyBRQmFzZVdlYlZpZXdQcml2YXRlOworY2xhc3MgUVdlYkRvd25sb2FkSXRlbTsKIGNsYXNzIFFX
ZWJOYXZpZ2F0aW9uQ29udHJvbGxlcjsKIGNsYXNzIFFXZWJQcmVmZXJlbmNlczsKIApAQCAtNTIs
NyArNTMsOCBAQCBwdWJsaWM6CiAgICAgZW51bSBFcnJvclR5cGUgewogICAgICAgICBFbmdpbmVF
cnJvciwKICAgICAgICAgTmV0d29ya0Vycm9yLAotICAgICAgICBIdHRwRXJyb3IKKyAgICAgICAg
SHR0cEVycm9yLAorICAgICAgICBEb3dubG9hZEVycm9yCiAgICAgfTsKICAgICB2aXJ0dWFsIH5R
QmFzZVdlYlZpZXcoKTsKIApAQCAtNzksNiArODEsNyBAQCBRX1NJR05BTFM6CiAgICAgdm9pZCBs
b2FkUHJvZ3Jlc3NDaGFuZ2VkKGludCBwcm9ncmVzcyk7CiAgICAgdm9pZCB1cmxDaGFuZ2VkKGNv
bnN0IFFVcmwmIHVybCk7CiAgICAgdm9pZCBtZXNzYWdlUmVjZWl2ZWQoY29uc3QgUVZhcmlhbnRN
YXAmIG1lc3NhZ2UpOworICAgIHZvaWQgZG93bmxvYWRSZXF1ZXN0ZWQoUVdlYkRvd25sb2FkSXRl
bSogZG93bmxvYWRJdGVtKTsKIAogcHJvdGVjdGVkOgogICAgIFFCYXNlV2ViVmlldyhRQmFzZVdl
YlZpZXdQcml2YXRlICZkZCwgUVF1aWNrSXRlbSAqcGFyZW50ID0gMCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHAKaW5kZXggOGIw
ODU1YzAzMWE5NTEwMzVlZjM3Mjg3NWQ1YTY2MWU2ZGJhNmNhNC4uODA5YTU5MTU4YzZmMDM3NjJk
NWI1NmMwYWNlMDJlMGViNzJmMWFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcApAQCAtMjUsMTEgKzI1LDEzIEBACiAjaW5j
bHVkZSAiUXRXZWJFcnJvci5oIgogI2luY2x1ZGUgIlV0aWxzUXQuaCIKICNpbmNsdWRlICJxZGVz
a3RvcHdlYnZpZXdfcC5oIgorI2luY2x1ZGUgInF3ZWJkb3dubG9hZGl0ZW0uaCIKICNpbmNsdWRl
IDxRRmlsZURpYWxvZz4KICNpbmNsdWRlIDxRdERlY2xhcmF0aXZlL3FkZWNsYXJhdGl2ZWVuZ2lu
ZS5oPgogI2luY2x1ZGUgPFF0RGVjbGFyYXRpdmUvcXF1aWNrY2FudmFzLmg+CiAjaW5jbHVkZSA8
UXREZWNsYXJhdGl2ZS9xcXVpY2t2aWV3Lmg+CiAjaW5jbHVkZSA8UXRHdWkvUUN1cnNvcj4KKyNp
bmNsdWRlIDxRdEd1aS9RRGVza3RvcFNlcnZpY2VzPgogI2luY2x1ZGUgPFF0R3VpL1FEcmFnPgog
I2luY2x1ZGUgPFF0R3VpL1FGb2N1c0V2ZW50PgogI2luY2x1ZGUgPFF0R3VpL1FHdWlBcHBsaWNh
dGlvbj4KQEAgLTQ5Nyw2ICs0OTksMTcgQEAgdm9pZCBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpk
aWRNb3VzZU1vdmVPdmVyRWxlbWVudChjb25zdCBRVXJsJiBsaW5rVVJMLCBjb25zdAogICAgIGVt
aXQgcS0+bGlua0hvdmVyZWQobGFzdEhvdmVyZWRVUkwsIGxhc3RIb3ZlcmVkVGl0bGUpOwogfQog
Cit2b2lkIFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OmRvd25sb2FkUmVxdWVzdGVkKFFXZWJEb3du
bG9hZEl0ZW0qIGRvd25sb2FkSXRlbSkKK3sKKyAgICBpZiAoIWRvd25sb2FkSXRlbSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgUV9RKFFEZXNrdG9wV2ViVmlldyk7CisKKyAgICBRRGVjbGFyYXRp
dmVFbmdpbmU6OnNldE9iamVjdE93bmVyc2hpcChkb3dubG9hZEl0ZW0sIFFEZWNsYXJhdGl2ZUVu
Z2luZTo6SmF2YVNjcmlwdE93bmVyc2hpcCk7CisgICAgZW1pdCBxLT5kb3dubG9hZFJlcXVlc3Rl
ZChkb3dubG9hZEl0ZW0pOworfQorCiBzdGF0aWMgUXRQb2xpY3lJbnRlcmZhY2U6OlBvbGljeUFj
dGlvbiB0b1BvbGljeUFjdGlvbihRRGVza3RvcFdlYlZpZXc6Ok5hdmlnYXRpb25Qb2xpY3kgcG9s
aWN5KQogewogICAgIHN3aXRjaCAocG9saWN5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlld19wLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlld19wLmgKaW5kZXggY2JmOTNkNjFkYjAxMWY1
NjcyN2U0NjczMzk2NDQyZDA1NWRmYTcwMC4uMjUyZTZjMzA0NzVjMzhjOTNiNmM2OWU1MDhiOTUz
ZGExZWExY2JkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
ZGVza3RvcHdlYnZpZXdfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cWRlc2t0b3B3ZWJ2aWV3X3AuaApAQCAtODQsNiArODQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgUUpTRW5naW5lKiBlbmdpbmUoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBjaG9vc2VGaWxlcyhX
S09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmLCBjb25zdCBRU3RyaW5nTGlzdCYgc2VsZWN0ZWRG
aWxlTmFtZXMsIFF0Vmlld0ludGVyZmFjZTo6RmlsZUNob29zZXJUeXBlKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZG93bmxvYWRSZXF1ZXN0ZWQoUVdlYkRvd25sb2FkSXRlbSogZG93bmxvYWRJdGVtKTsK
IAogICAgIHZpcnR1YWwgdm9pZCBkaWRNb3VzZU1vdmVPdmVyRWxlbWVudChjb25zdCBRVXJsJiwg
Y29uc3QgUVN0cmluZyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3F3ZWJkb3dubG9hZGl0ZW0uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xd2ViZG93bmxvYWRpdGVtLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NTkwYjc0OGNkMDg5MzUzMjVk
ZDUwNDg1ZmJlNzhkNTg5MzkxOTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxvYWRpdGVtLmNwcApAQCAtMCwwICsxLDk2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKQorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgInF3ZWJkb3du
bG9hZGl0ZW0uaCIKKworI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKKyNpbmNsdWRlICJxd2Vi
ZG93bmxvYWRpdGVtX3AuaCIKKworUVdlYkRvd25sb2FkSXRlbVByaXZhdGU6OlFXZWJEb3dubG9h
ZEl0ZW1Qcml2YXRlKFFXZWJEb3dubG9hZEl0ZW0qIHFxKQorICAgIDogcShxcSkKKyAgICAsIGRv
d25sb2FkUHJveHkoMCkKKyAgICAsIGV4cGVjdGVkQ29udGVudExlbmd0aCgwKQorICAgICwgdG90
YWxCeXRlc1JlY2VpdmVkKDApCit7Cit9CisKK1FXZWJEb3dubG9hZEl0ZW06OlFXZWJEb3dubG9h
ZEl0ZW0oUU9iamVjdCogcGFyZW50KQorICAgIDogUU9iamVjdChwYXJlbnQpCisgICAgLCBkKG5l
dyBRV2ViRG93bmxvYWRJdGVtUHJpdmF0ZSh0aGlzKSkKK3sKK30KKworUVdlYkRvd25sb2FkSXRl
bTo6flFXZWJEb3dubG9hZEl0ZW0oKQoreworICAgIGRlbGV0ZSBkOworfQorCitRVXJsIFFXZWJE
b3dubG9hZEl0ZW06OnVybCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPnNvdXJjZVVybDsKK30K
KworUVN0cmluZyBRV2ViRG93bmxvYWRJdGVtOjpkZXN0aW5hdGlvblBhdGgoKSBjb25zdAorewor
ICAgIHJldHVybiBkLT5kZXN0aW5hdGlvblBhdGg7Cit9CisKK3ZvaWQgUVdlYkRvd25sb2FkSXRl
bTo6c2V0RGVzdGluYXRpb25QYXRoKGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uKQoreworICAg
IGQtPmRlc3RpbmF0aW9uUGF0aCA9IGRlc3RpbmF0aW9uOworfQorCitRU3RyaW5nIFFXZWJEb3du
bG9hZEl0ZW06OnN1Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZC0+c3Vn
Z2VzdGVkRmlsZW5hbWU7Cit9CisKK1FTdHJpbmcgUVdlYkRvd25sb2FkSXRlbTo6bWltZVR5cGUo
KSBjb25zdAoreworICAgIHJldHVybiBkLT5taW1lVHlwZTsKK30KKworcXVpbnQ2NCBRV2ViRG93
bmxvYWRJdGVtOjpleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBk
LT5leHBlY3RlZENvbnRlbnRMZW5ndGg7Cit9CisKK3F1aW50NjQgUVdlYkRvd25sb2FkSXRlbTo6
dG90YWxCeXRlc1JlY2VpdmVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZC0+dG90YWxCeXRlc1Jl
Y2VpdmVkOworfQorCit2b2lkIFFXZWJEb3dubG9hZEl0ZW06OmNhbmNlbCgpCit7CisgICAgQVNT
RVJUKGQtPmRvd25sb2FkUHJveHkpOworICAgIGQtPmRvd25sb2FkUHJveHktPmNhbmNlbCgpOwor
fQorCit2b2lkIFFXZWJEb3dubG9hZEl0ZW06OnN0YXJ0KCkKK3sKKyAgICBBU1NFUlQoIWQtPnN1
Z2dlc3RlZEZpbGVuYW1lLmlzRW1wdHkoKSk7CisKKyAgICBpZiAoZC0+ZGVzdGluYXRpb25QYXRo
LmlzRW1wdHkoKSkKKyAgICAgICAgZC0+ZGVzdGluYXRpb25QYXRoID0gZC0+c3VnZ2VzdGVkRmls
ZW5hbWU7CisKKyAgICBkLT5kb3dubG9hZFByb3h5LT5zdGFydFRyYW5zZmVyKGQtPmRlc3RpbmF0
aW9uUGF0aCk7Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcXdlYmRvd25sb2FkaXRlbS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
d2ViZG93bmxvYWRpdGVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjQ0YzViMDgzODJiYmU4YmFjYTM5MjI0YWZm
OWZkODVkMGQ1Njg4NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXdlYmRvd25sb2FkaXRlbS5oCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoK
KyAqLworCisjaWZuZGVmIHF3ZWJkb3dubG9hZGl0ZW1faAorI2RlZmluZSBxd2ViZG93bmxvYWRp
dGVtX2gKKworI2luY2x1ZGUgInF3ZWJraXRnbG9iYWwuaCIKKyNpbmNsdWRlIDxRT2JqZWN0Pgor
I2luY2x1ZGUgPFFVcmw+CisKK2NsYXNzIFFXZWJEb3dubG9hZEl0ZW1Qcml2YXRlOworY2xhc3Mg
UXRXZWJFcnJvcjsKKworUVRfQkVHSU5fTkFNRVNQQUNFCitjbGFzcyBRU3RyaW5nOworUVRfRU5E
X05BTUVTUEFDRQorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFF0RG93bmxvYWRNYW5hZ2Vy
OworfQorCitjbGFzcyBRV0VCS0lUX0VYUE9SVCBRV2ViRG93bmxvYWRJdGVtIDogcHVibGljIFFP
YmplY3QgeworICAgIFFfT0JKRUNUCisgICAgUV9QUk9QRVJUWShxdWludDY0IGV4cGVjdGVkQ29u
dGVudExlbmd0aCBSRUFEIGV4cGVjdGVkQ29udGVudExlbmd0aCBDT05TVEFOVCBGSU5BTCkKKyAg
ICBRX1BST1BFUlRZKFFTdHJpbmcgZGVzdGluYXRpb25QYXRoIFJFQUQgZGVzdGluYXRpb25QYXRo
IFdSSVRFIHNldERlc3RpbmF0aW9uUGF0aCkKKyAgICBRX1BST1BFUlRZKFFTdHJpbmcgc3VnZ2Vz
dGVkRmlsZW5hbWUgUkVBRCBzdWdnZXN0ZWRGaWxlbmFtZSBDT05TVEFOVCBGSU5BTCkKKyAgICBR
X1BST1BFUlRZKHF1aW50NjQgdG90YWxCeXRlc1JlY2VpdmVkIFJFQUQgdG90YWxCeXRlc1JlY2Vp
dmVkIE5PVElGWSB0b3RhbEJ5dGVzUmVjZWl2ZWRDaGFuZ2VkIEZJTkFMKQorICAgIFFfUFJPUEVS
VFkoUVVybCB1cmwgUkVBRCB1cmwgQ09OU1RBTlQgRklOQUwpCisgICAgUV9FTlVNUyhEb3dubG9h
ZEVycm9yKQorcHVibGljOgorICAgIHZpcnR1YWwgflFXZWJEb3dubG9hZEl0ZW0oKTsKKworICAg
IGVudW0gRG93bmxvYWRFcnJvciB7CisgICAgICAgIEFib3J0ZWQgPSAwLAorICAgICAgICBDYW5u
b3RXcml0ZVRvRmlsZSwKKyAgICAgICAgQ2Fubm90T3BlbkZpbGUsCisgICAgICAgIERlc3RpbmF0
aW9uQWxyZWFkeUV4aXN0cywKKyAgICAgICAgQ2FuY2VsbGVkLAorICAgICAgICBDYW5ub3REZXRl
cm1pbmVGaWxlbmFtZSwKKyAgICAgICAgTmV0d29ya0ZhaWx1cmUKKyAgICB9OworCisgICAgUVVy
bCB1cmwoKSBjb25zdDsKKyAgICBRU3RyaW5nIGRlc3RpbmF0aW9uUGF0aCgpIGNvbnN0OworICAg
IFFTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25zdDsKKyAgICBRU3RyaW5nIG1pbWVUeXBl
KCkgY29uc3Q7CisgICAgcXVpbnQ2NCBleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBjb25zdDsKKyAg
ICBxdWludDY0IHRvdGFsQnl0ZXNSZWNlaXZlZCgpIGNvbnN0OworICAgIHZvaWQgc2V0RGVzdGlu
YXRpb25QYXRoKGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uKTsKKworcHVibGljIFFfU0xPVFM6
CisgICAgdm9pZCBzdGFydCgpOworICAgIHZvaWQgY2FuY2VsKCk7CisKK1FfU0lHTkFMUzoKKyAg
ICB2b2lkIGRlc3RpbmF0aW9uRmlsZUNyZWF0ZWQoY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb25Q
YXRoKTsKKyAgICB2b2lkIHRvdGFsQnl0ZXNSZWNlaXZlZENoYW5nZWQocXVpbnQ2NCBieXRlc1Jl
Y2VpdmVkKTsKKyAgICB2b2lkIHN1Y2NlZWRlZCgpOworICAgIHZvaWQgZmFpbGVkKFFXZWJEb3du
bG9hZEl0ZW06OkRvd25sb2FkRXJyb3IgZXJyb3IsIGNvbnN0IFFVcmwmIHVybCwgY29uc3QgUVN0
cmluZyYgZGVzY3JpcHRpb24pOworCitwcml2YXRlOgorICAgIFFXZWJEb3dubG9hZEl0ZW0oUU9i
amVjdCogcGFyZW50ID0gMCk7CisgICAgUVdlYkRvd25sb2FkSXRlbVByaXZhdGUqIGQ7CisKKyAg
ICBmcmllbmQgY2xhc3MgV2ViS2l0OjpRdERvd25sb2FkTWFuYWdlcjsKKyAgICBmcmllbmQgY2xh
c3MgUXRXZWJQYWdlUHJveHk7Cit9OworCisjZW5kaWYgLyogcXdlYmRvd25sb2FkaXRlbV9oICov
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJkb3dubG9h
ZGl0ZW1fcC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxvYWRp
dGVtX3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iYjhjMjUyYTc3N2Q3ZDgyNGRjOTI4ODlhZDkxYWZmMmFkYWEx
MGZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
d2ViZG93bmxvYWRpdGVtX3AuaApAQCAtMCwwICsxLDUzIEBACisvKgorICAgIENvcHlyaWdodCAo
QykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAg
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLwor
CisKKyNpZm5kZWYgcXdlYmRvd25sb2FkaXRlbV9wX2gKKyNkZWZpbmUgcXdlYmRvd25sb2FkaXRl
bV9wX2gKKworI2luY2x1ZGUgInF3ZWJkb3dubG9hZGl0ZW0uaCIKKyNpbmNsdWRlIDxRVXJsPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIERvd25sb2FkUHJveHk7Cit9CisKK2NsYXNzIFFX
ZWJEb3dubG9hZEl0ZW1Qcml2YXRlIDogcHVibGljIFFPYmplY3QgeworICAgIFFfT0JKRUNUCitw
dWJsaWM6CisgICAgUVdlYkRvd25sb2FkSXRlbVByaXZhdGUoUVdlYkRvd25sb2FkSXRlbSopOwor
CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUVdlYkRvd25sb2FkSXRlbSogZG93bmxvYWQp
IHsgZW1pdCByZWNlaXZlZFJlc3BvbnNlKGRvd25sb2FkKTsgfQorCisgICAgUVdlYkRvd25sb2Fk
SXRlbSogcTsKKworICAgIFdlYktpdDo6RG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eTsKKwor
ICAgIFFVcmwgc291cmNlVXJsOworICAgIFFTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWU7CisgICAg
UVN0cmluZyBkZXN0aW5hdGlvblBhdGg7CisgICAgUVN0cmluZyBtaW1lVHlwZTsKKyAgICBxdWlu
dDY0IGV4cGVjdGVkQ29udGVudExlbmd0aDsKKyAgICBxdWludDY0IHRvdGFsQnl0ZXNSZWNlaXZl
ZDsKKworUV9TSUdOQUxTOgorICAgIHZvaWQgcmVjZWl2ZWRSZXNwb25zZShRV2ViRG93bmxvYWRJ
dGVtKik7Cit9OworCisjZW5kaWYgLyogcXdlYmRvd25sb2FkaXRlbV9wX2ggKi8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvRGVza3Rv
cFdlYlZpZXcvdHN0X2Rvd25sb2FkLnFtbCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvdGVzdHMvcW1sdGVzdHMvRGVza3RvcFdlYlZpZXcvdHN0X2Rvd25sb2FkLnFtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lYjVjODU1YmNhNTA3MTFiNWRlYzE2Njc4OWY0MGE4ZGE4OTM1MzlkCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9E
ZXNrdG9wV2ViVmlldy90c3RfZG93bmxvYWQucW1sCkBAIC0wLDAgKzEsNzUgQEAKK2ltcG9ydCBR
dFF1aWNrIDIuMAoraW1wb3J0IFF0VGVzdCAxLjAKK2ltcG9ydCBRdFdlYktpdCAzLjAKKworRGVz
a3RvcFdlYlZpZXcgeworICAgIGlkOiB3ZWJWaWV3CisgICAgd2lkdGg6IDIwMAorICAgIGhlaWdo
dDogNDAwCisKKyAgICBwcm9wZXJ0eSBpbnQgZXhwZWN0ZWRMZW5ndGggOiAwCisgICAgcHJvcGVy
dHkgaW50IHRvdGFsQnl0ZXMgOiAwCisKKyAgICBTaWduYWxTcHkgeworICAgICAgICBpZDogc3B5
CisgICAgICAgIHRhcmdldDogd2ViVmlldworICAgICAgICBzaWduYWxOYW1lOiAiZG93bmxvYWRS
ZXF1ZXN0ZWQiCisgICAgfQorCisgICAgb25Eb3dubG9hZFJlcXVlc3RlZDogeworICAgICAgICBk
b3dubG9hZC50YXJnZXQgPSBkb3dubG9hZEl0ZW0KKyAgICAgICAgZXhwZWN0ZWRMZW5ndGggPSBk
b3dubG9hZEl0ZW0uZXhwZWN0ZWRDb250ZW50TGVuZ3RoCisgICAgICAgIGRvd25sb2FkSXRlbS5k
ZXN0aW5hdGlvblBhdGggPSBkb3dubG9hZEl0ZW0uc3VnZ2VzdGVkRmlsZW5hbWUKKyAgICAgICAg
ZG93bmxvYWRJdGVtLnN0YXJ0KCkKKyAgICB9CisKKyAgICBDb25uZWN0aW9ucyB7CisgICAgICAg
IGlkOiBkb3dubG9hZAorICAgICAgICBpZ25vcmVVbmtub3duU2lnbmFsczogdHJ1ZQorICAgICAg
ICBvblN1Y2NlZWRlZDogeyB0b3RhbEJ5dGVzID0gZG93bmxvYWQudGFyZ2V0LnRvdGFsQnl0ZXNS
ZWNlaXZlZCB9CisgICAgfQorCisgICAgU2lnbmFsU3B5IHsKKyAgICAgICAgaWQ6IG90aGVyU3B5
CisgICAgICAgIHRhcmdldDogZG93bmxvYWQKKyAgICAgICAgc2lnbmFsTmFtZTogInN1Y2NlZWRl
ZCIKKyAgICB9CisKKyAgICBUZXN0Q2FzZSB7CisgICAgICAgIG5hbWU6ICJEZXNrdG9wV2ViVmll
d0Rvd25sb2FkIgorICAgICAgICB3aGVuOiB3aW5kb3dTaG93bgorCisgICAgICAgIGZ1bmN0aW9u
IHRlc3RfZG93bmxvYWRSZXF1ZXN0KCkgeworICAgICAgICAgICAgc3B5LmNsZWFyKCkKKyAgICAg
ICAgICAgIGNvbXBhcmUoc3B5LmNvdW50LCAwKQorICAgICAgICAgICAgd2ViVmlldy5sb2FkKFF0
LnJlc29sdmVkVXJsKCIuLi9jb21tb24vZG93bmxvYWQuaHRtbCIpKQorICAgICAgICAgICAgbW91
c2VDbGljayh3ZWJWaWV3LCAxMDAsIDEwMCwgUXQuTGVmdEJ1dHRvbikKKyAgICAgICAgICAgIHNw
eS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBhcmUoc3B5LmNvdW50LCAxKQorICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gdGVzdF9leHBlY3RlZExlbmd0aCgpIHsKKyAgICAgICAgICAgIHNw
eS5jbGVhcigpCisgICAgICAgICAgICBjb21wYXJlKHNweS5jb3VudCwgMCkKKyAgICAgICAgICAg
IHdlYlZpZXcubG9hZChRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL2Rvd25sb2FkLmh0bWwiKSkK
KyAgICAgICAgICAgIG1vdXNlQ2xpY2sod2ViVmlldywgMTAwLCAxMDAsIFF0LkxlZnRCdXR0b24p
CisgICAgICAgICAgICBzcHkud2FpdCgpCisgICAgICAgICAgICBjb21wYXJlKHNweS5jb3VudCwg
MSkKKyAgICAgICAgICAgIGNvbXBhcmUoZXhwZWN0ZWRMZW5ndGgsIDMyNSkKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIHRlc3Rfc3VjY2VlZGVkKCkgeworICAgICAgICAgICAgc3B5LmNs
ZWFyKCkKKyAgICAgICAgICAgIGNvbXBhcmUoc3B5LmNvdW50LCAwKQorICAgICAgICAgICAgb3Ro
ZXJTcHkuY2xlYXIoKQorICAgICAgICAgICAgY29tcGFyZShvdGhlclNweS5jb3VudCwgMCkKKyAg
ICAgICAgICAgIHdlYlZpZXcubG9hZChRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL2Rvd25sb2Fk
Lmh0bWwiKSkKKyAgICAgICAgICAgIG1vdXNlQ2xpY2sod2ViVmlldywgMTAwLCAxMDAsIFF0Lkxl
ZnRCdXR0b24pCisgICAgICAgICAgICBzcHkud2FpdCgpCisgICAgICAgICAgICBjb21wYXJlKHNw
eS5jb3VudCwgMSkKKyAgICAgICAgICAgIG90aGVyU3B5LndhaXQoKQorICAgICAgICAgICAgY29t
cGFyZShvdGhlclNweS5jb3VudCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUodG90YWxCeXRlcywg
ZXhwZWN0ZWRMZW5ndGgpCisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1vbi9kb3dubG9hZC5o
dG1sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21t
b24vZG93bmxvYWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MDZmYTRjYTc2M2Q3YTRmZWFjMTgxNzQxYmU1
Yzk3NzY0OGY5NWY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21tb24vZG93bmxvYWQuaHRtbApAQCAtMCwwICsxLDYg
QEAKKzxodG1sPgorPGhlYWQ+PHRpdGxlPkRvd25sb2FkIFRlc3QgcGFnZSB3aXRoIGh1Z2UgbGlu
ayBhcmVhPC90aXRsZT48L2hlYWQ+Cis8Ym9keT4KKzxhIHRpdGxlPSJaaXAgZmlsZSIgaHJlZj0i
ZG93bmxvYWQuemlwIj48aW1nIHdpZHRoPTIwMCBoZWlnaHQ9MjAwPjwvYT4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMv
cW1sdGVzdHMvY29tbW9uL2Rvd25sb2FkLnppcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL2Rvd25sb2FkLnppcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNTQ1
NjM1MWE1NTE1NTYxMzUzOTYxNWFjY2VjZTllZTAzMGI3ZDQ0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0
ZXJhbCAzMjUKemNtV0lXV0BacyNVfGBeMnUhc3RffDhWZEJwPFc+R0pQLT5xJFN+eU9Dbngzdm0q
ZntFcmw7eTxsO3F9d2hIeEA0CnpeVzIlfENqYFckNzJGSnJFSDlXRDcrNncoOGJiU1JgM0BgYXcz
aG9kWm8xJFZZVCtSSlA0RGM1eFB+VXo2JCZtIwp6eytAaDAraE14VHdFTlo1X09ta3xUX0N9O1Zs
QzRyayR8cl50P2dlT2N6Pkh+KDwlazt3dTh6eVEpTUB3dFcpd2sKei00ZzVrTC1wc0N7TWY1KmhP
XklUS2t+QGtgQW5Bbzxjb3NFUT8/JHlyV25pZCppal4wPTZwezJgUmQ8Q2oqOGxnCnpya2AkRmxP
TStRYk5SJXIkTjItaThKWG1tYXJzT0Y9dilRe01qJjMmMng0TEpDbzlDQ1hucVh2V0BRNnVVPEFU
JgpLQWJrVkdWRV9SNj4yTSRiCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL3FtbHRlc3RzLnBy
byBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvcW1sdGVz
dHMucHJvCmluZGV4IGVjMGU4NGRkZmU0YmQzZDM1NjU2NDIyODczNWMxY2JiMTJmMDYyMDIuLjM2
ZTBjNTBjYWQ5OGNjZWE3NTRhNmExZDI3ZDI1MzFkMWNkYTJiMzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvcW1sdGVzdHMucHJvCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvcW1sdGVz
dHMucHJvCkBAIC0xNiw2ICsxNiw3IEBAIE9USEVSX0ZJTEVTICs9IFwKICAgICBEZXNrdG9wV2Vi
Vmlldy90c3RfbG9hZFByb2dyZXNzU2lnbmFsLnFtbCBcCiAgICAgRGVza3RvcFdlYlZpZXcvdHN0
X2xpbmtIb3ZlcmVkLnFtbCBcCiAgICAgRGVza3RvcFdlYlZpZXcvdHN0X21lc3NhZ2luZy5xbWwg
XAorICAgIERlc2t0b3BXZWJWaWV3L3RzdF9kb3dubG9hZC5xbWwgXAogICAgIFRvdWNoV2ViVmll
dy90c3RfcHJvcGVydGllcy5xbWwgXAogICAgIFRvdWNoV2ViVmlldy90c3RfbG9hZC5xbWwgXAog
ICAgIFRvdWNoV2ViVmlldy90c3RfbG9hZFplcm9TaXplVmlldy5xbWwgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAKaW5kZXgg
YzkzYTZkZmJlNjliYmUzNmU2YjkyNDQ4ZjA0N2JiYmJlN2Q5MmQ0Mi4uMjZhNTIxZjM5YmM3MWUy
MTQ1ODc3MzIxOTY0ZGRjNjcyNzQxYjE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCkBAIC0xODcsNSArMTg3LDE2IEBA
IHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkQ2FuY2VsKGNvbnN0IENvcmVJUEM6OkRhdGFSZWZlcmVu
Y2UmIHJlc3VtZURhdGEpCiAgICAgbV93ZWJDb250ZXh0LT5kb3dubG9hZEZpbmlzaGVkKHRoaXMp
OwogfQogCisjaWYgUExBVEZPUk0oUVQpCit2b2lkIERvd25sb2FkUHJveHk6OnN0YXJ0VHJhbnNm
ZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKK3sKKyAgICBpZiAoIW1fd2ViQ29udGV4dCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUUgKE11bHRpLVdlYlByb2Nlc3MpOiBEb3dubG9h
ZHMgc2hvdWxkbid0IGJlIGhhbmRsZWQgaW4gdGhlIHdlYiBwcm9jZXNzLgorICAgIG1fd2ViQ29u
dGV4dC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTdGFydFRyYW5z
ZmVyKG1fZG93bmxvYWRJRCwgZmlsZW5hbWUpKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkUHJveHkuaAppbmRleCA5OWRkYmVjMGNiYzRiYThmNmQ5ZjQyMWY5ZGI2ODU1NTgyOGI5
OWQ1Li5jMWVkYTFmZDE5MDdjOTk3ZGJhODNmZTMwYzQ3YjU2NjJlNmYzOWI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaApAQCAt
NDMsNiArNDMsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViQ29udGV4dDsKIGNs
YXNzIFdlYkRhdGE7CitjbGFzcyBXZWJQYWdlUHJveHk7CiAKIGNsYXNzIERvd25sb2FkUHJveHkg
OiBwdWJsaWMgQVBJT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTYzLDYgKzY0LDEwIEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRpZFJlY2VpdmVEb3dubG9hZFByb3h5TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0
aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKICAg
ICB2b2lkIGRpZFJlY2VpdmVTeW5jRG93bmxvYWRQcm94eU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVj
dGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgT3du
UHRyPENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4mKTsKIAorI2lmIFBMQVRGT1JNKFFUKQorICAg
IHZvaWQgc3RhcnRUcmFuc2Zlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lKTsKKyNlbmRpZgorCiBw
cml2YXRlOgogICAgIGV4cGxpY2l0IERvd25sb2FkUHJveHkoV2ViQ29udGV4dCopOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCA2NmY5ZWNiYmIwYTM5NWE5M2IyOTlj
ZTExZTIzZDA4Y2NjMjcwZWI2Li4zZmZhMmJmYTFjOTk3ZGUyYjI2NWUxODZiZjU0YjIyMDNlODYw
OWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTQ0LDYgKzQ0LDEw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBzdHJ1Y3QgVmlld3BvcnRBcmd1bWVudHM7CiB9
CiAKKyNpZiBQTEFURk9STShRVCkKK2NsYXNzIFF0V2ViUGFnZVByb3h5OworI2VuZGlmCisKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBEcmF3aW5nQXJlYVByb3h5OwpAQCAtMTA0LDYgKzEw
OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQ29udGVudHNTaXplKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmRab29t
YWJsZUFyZWEoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21OYXZpZ2F0b3JR
dE9iamVjdChjb25zdCBTdHJpbmcmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZURvd25s
b2FkUmVxdWVzdChEb3dubG9hZFByb3h5KikgPSAwOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShR
VCkgfHwgUExBVEZPUk0oR1RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3Bw
CmluZGV4IGY0NTNkOGMzZmRhMWJkNjk0NWU4MTdiMGU2ZWQ5YWQ2MmZhMWE2ZjkuLmI2NDQ4NDU5
YTI1MzgxNDZjYTM1ZjJhZDhiNGM3MGEwN2RhODZmZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQ29udGV4dC5jcHAKQEAgLTM5Miw2ICszOTIsMTEgQEAgRG93bmxvYWRQcm94eSogV2Vi
Q29udGV4dDo6ZG93bmxvYWQoV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgUmVz
b3VyY2UKICAgICBEb3dubG9hZFByb3h5KiBkb3dubG9hZCA9IGNyZWF0ZURvd25sb2FkUHJveHko
KTsKICAgICB1aW50NjRfdCBpbml0aWF0aW5nUGFnZUlEID0gaW5pdGlhdGluZ1BhZ2UgPyBpbml0
aWF0aW5nUGFnZS0+cGFnZUlEKCkgOiAwOwogCisjaWYgUExBVEZPUk0oUVQpCisgICAgQVNTRVJU
KGluaXRpYXRpbmdQYWdlKTsgLy8gT3VyIGRlc2lnbiBkb2VzIG5vdCBzdXBwcG9ydCBkb3dubG9h
ZHMgd2l0aG91dCBhIFdlYlBhZ2UuCisgICAgaW5pdGlhdGluZ1BhZ2UtPmhhbmRsZURvd25sb2Fk
UmVxdWVzdChkb3dubG9hZCk7CisjZW5kaWYKKwogICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdl
czo6V2ViUHJvY2Vzczo6RG93bmxvYWRSZXF1ZXN0KGRvd25sb2FkLT5kb3dubG9hZElEKCksIGlu
aXRpYXRpbmdQYWdlSUQsIHJlcXVlc3QpLCAwKTsKICAgICByZXR1cm4gZG93bmxvYWQ7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGVlNDNiMjhmMGFj
NWQ5YmQzMDg3NGE5YjhkMmRlMWEzYjM5YjZkNzUuLjVmMWEyZTdhNWUyZGE1YTExYjgwMjBiZDQ4
YThhOTc3NmI4NTk2ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCkBAIC0xMDE2LDcgKzEwMTYsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9s
aWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwgV2ViRnJhbWVQcm94eSogZnIKICAgICB1
aW50NjRfdCBkb3dubG9hZElEID0gMDsKICAgICBpZiAoYWN0aW9uID09IFBvbGljeURvd25sb2Fk
KSB7CiAgICAgICAgIC8vIENyZWF0ZSBhIGRvd25sb2FkIHByb3h5LgotICAgICAgICBkb3dubG9h
ZElEID0gbV9wcm9jZXNzLT5jb250ZXh0KCktPmNyZWF0ZURvd25sb2FkUHJveHkoKS0+ZG93bmxv
YWRJRCgpOworICAgICAgICBEb3dubG9hZFByb3h5KiBkb3dubG9hZCA9IG1fcHJvY2Vzcy0+Y29u
dGV4dCgpLT5jcmVhdGVEb3dubG9hZFByb3h5KCk7CisgICAgICAgIGRvd25sb2FkSUQgPSBkb3du
bG9hZC0+ZG93bmxvYWRJRCgpOworI2lmIFBMQVRGT1JNKFFUKQorICAgICAgICAvLyBPdXIgZGVz
aWduIGRvZXMgbm90IHN1cHBwb3J0IGRvd25sb2FkcyB3aXRob3V0IGEgV2ViUGFnZS4KKyAgICAg
ICAgaGFuZGxlRG93bmxvYWRSZXF1ZXN0KGRvd25sb2FkKTsKKyNlbmRpZgogICAgIH0KIAogICAg
IC8vIElmIHdlIHJlY2VpdmVkIGEgcG9saWN5IGRlY2lzaW9uIHdoaWxlIGluIGRlY2lkZVBvbGlj
eUZvck1JTUVUeXBlIHRoZSBkZWNpc2lvbiB3aWxsIApAQCAtMjI4NSw2ICsyMjkwLDExIEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlTWVzc2FnZUZyb21OYXZpZ2F0b3JRdE9iamVjdChj
b25zdCBTdHJpbmcmIGNvbnRlbnRzCiB7CiAgICAgbV9wYWdlQ2xpZW50LT5kaWRSZWNlaXZlTWVz
c2FnZUZyb21OYXZpZ2F0b3JRdE9iamVjdChjb250ZW50cyk7CiB9CisKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpoYW5kbGVEb3dubG9hZFJlcXVlc3QoRG93bmxvYWRQcm94eSogZG93bmxvYWQpCit7Cisg
ICAgbV9wYWdlQ2xpZW50LT5oYW5kbGVEb3dubG9hZFJlcXVlc3QoZG93bmxvYWQpOworfQogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCmluZGV4IGI5NWFhNWY3MDI5ODU0MzljYTkxNzQxNTA3ZmJjY2YzZDViYTBj
ODQuLmVmMzA2OWE3NzJkMDI5NzJkNDMyODQ5NTI2MmVjZTNkYTIxMzBjYTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTUyMyw2ICs1MjMsNyBAQCBwdWJsaWM6
CiAjaWYgUExBVEZPUk0oUVQpCiAgICAgdm9pZCBmaW5kWm9vbWFibGVBcmVhRm9yUG9pbnQoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbU5h
dmlnYXRvclF0T2JqZWN0KGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgaGFuZGxlRG93bmxvYWRS
ZXF1ZXN0KERvd25sb2FkUHJveHkqKTsKICNlbmRpZgogCiAgICAgdm9pZCBhZHZhbmNlVG9OZXh0
TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbikgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXREb3dubG9hZE1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0RG93bmxvYWRNYW5hZ2VyLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zZjk3ZmM2M2M0Y2IxMWM3ODVjNjM4MjI0N2M1ZTNmNTE4MzM1MjJiCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0RG93bmxvYWRNYW5hZ2VyLmNwcApA
QCAtMCwwICsxLDE0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
ICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJRdERvd25sb2FkTWFuYWdlci5oIgorCisjaW5jbHVkZSAiQ2xpZW50
SW1wbC5oIgorI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKKyNpbmNsdWRlICJRdFdlYkVycm9y
LmgiCisjaW5jbHVkZSAiV0tTdHJpbmdRdC5oIgorI2luY2x1ZGUgIldLVVJMUXQuaCIKKyNpbmNs
dWRlICJXZWJDb250ZXh0LmgiCisjaW5jbHVkZSAicXdlYmRvd25sb2FkaXRlbS5oIgorI2luY2x1
ZGUgInF3ZWJkb3dubG9hZGl0ZW1fcC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGlj
IGlubGluZSBRdERvd25sb2FkTWFuYWdlciogdG9RdERvd25sb2FkTWFuYWdlcihjb25zdCB2b2lk
KiBjbGllbnRJbmZvKQoreworICAgIEFTU0VSVChjbGllbnRJbmZvKTsKKyAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxRdERvd25sb2FkTWFuYWdlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVu
dEluZm8pKTsKK30KKworc3RhdGljIHZvaWQgcXRfd2tfZGlkUmVjZWl2ZVJlc3BvbnNlKFdLQ29u
dGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1VSTFJlc3BvbnNlUmVm
IHJlc3BvbnNlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQoreworICAgIHRvUXREb3dubG9hZE1h
bmFnZXIoY2xpZW50SW5mbyktPmRvd25sb2FkUmVjZWl2ZWRSZXNwb25zZSh0b0ltcGwoZG93bmxv
YWQpLCB0b0ltcGwocmVzcG9uc2UpLT5yZXNvdXJjZVJlc3BvbnNlKCkpOworfQorCitzdGF0aWMg
dm9pZCBxdF93a19kaWRDcmVhdGVEZXN0aW5hdGlvbihXS0NvbnRleHRSZWYgY29udGV4dCwgV0tE
b3dubG9hZFJlZiBkb3dubG9hZCwgV0tTdHJpbmdSZWYgcGF0aCwgY29uc3Qgdm9pZCAqY2xpZW50
SW5mbykKK3sKKyAgICB0b1F0RG93bmxvYWRNYW5hZ2VyKGNsaWVudEluZm8pLT5kb3dubG9hZENy
ZWF0ZWREZXN0aW5hdGlvbih0b0ltcGwoZG93bmxvYWQpLCBXS1N0cmluZ0NvcHlRU3RyaW5nKHBh
dGgpKTsKK30KKworc3RhdGljIHZvaWQgcXRfd2tfZGlkRmluaXNoRG93bmxvYWQoV0tDb250ZXh0
UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQgKmNsaWVudElu
Zm8pCit7CisgICAgdG9RdERvd25sb2FkTWFuYWdlcihjbGllbnRJbmZvKS0+ZG93bmxvYWRGaW5p
c2hlZCh0b0ltcGwoZG93bmxvYWQpKTsKK30KKworc3RhdGljIHZvaWQgcXRfd2tfZGlkRmFpbERv
d25sb2FkKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS0Vy
cm9yUmVmIGVycm9yLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQoreworICAgIFFVcmwgZmFpbGlu
Z1VybCA9IFdLVVJMQ29weVFVcmwoV0tFcnJvckNvcHlGYWlsaW5nVVJMKGVycm9yKSk7CisKKyAg
ICB0b1F0RG93bmxvYWRNYW5hZ2VyKGNsaWVudEluZm8pLT5kb3dubG9hZEZhaWxlZCh0b0ltcGwo
ZG93bmxvYWQpLCBRdFdlYkVycm9yKGVycm9yKSk7Cit9CisKK3N0YXRpYyB2b2lkIHF0X3drX2Rp
ZFJlY2VpdmVEYXRhRm9yRG93bmxvYWQoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRS
ZWYgZG93bmxvYWQsIHVpbnQ2NF90IGxlbmd0aCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKK3sK
KyAgICB0b1F0RG93bmxvYWRNYW5hZ2VyKGNsaWVudEluZm8pLT5kb3dubG9hZERhdGFSZWNlaXZl
ZCh0b0ltcGwoZG93bmxvYWQpLCBsZW5ndGgpOworfQorCitRdERvd25sb2FkTWFuYWdlcjo6UXRE
b3dubG9hZE1hbmFnZXIoKQoreworfQorCitRdERvd25sb2FkTWFuYWdlcjo6flF0RG93bmxvYWRN
YW5hZ2VyKCkKK3sKK30KKworUGFzc1JlZlB0cjxRdERvd25sb2FkTWFuYWdlcj4gUXREb3dubG9h
ZE1hbmFnZXI6OmNyZWF0ZShXZWJDb250ZXh0KiBjb250ZXh0KQoreworICAgIFF0RG93bmxvYWRN
YW5hZ2VyKiBtYW5hZ2VyID0gbmV3IFF0RG93bmxvYWRNYW5hZ2VyKCk7CisKKyAgICBXS0NvbnRl
eHREb3dubG9hZENsaWVudCBkb3dubG9hZENsaWVudDsKKyAgICBtZW1zZXQoJmRvd25sb2FkQ2xp
ZW50LCAwLCBzaXplb2YoV0tDb250ZXh0RG93bmxvYWRDbGllbnQpKTsKKyAgICBkb3dubG9hZENs
aWVudC52ZXJzaW9uID0ga1dLQ29udGV4dERvd25sb2FkQ2xpZW50Q3VycmVudFZlcnNpb247Cisg
ICAgZG93bmxvYWRDbGllbnQuY2xpZW50SW5mbyA9IG1hbmFnZXI7CisgICAgZG93bmxvYWRDbGll
bnQuZGlkUmVjZWl2ZVJlc3BvbnNlID0gcXRfd2tfZGlkUmVjZWl2ZVJlc3BvbnNlOworICAgIGRv
d25sb2FkQ2xpZW50LmRpZFJlY2VpdmVEYXRhID0gcXRfd2tfZGlkUmVjZWl2ZURhdGFGb3JEb3du
bG9hZDsKKyAgICBkb3dubG9hZENsaWVudC5kaWRDcmVhdGVEZXN0aW5hdGlvbiA9IHF0X3drX2Rp
ZENyZWF0ZURlc3RpbmF0aW9uOworICAgIGRvd25sb2FkQ2xpZW50LmRpZEZpbmlzaCA9IHF0X3dr
X2RpZEZpbmlzaERvd25sb2FkOworICAgIGRvd25sb2FkQ2xpZW50LmRpZEZhaWwgPSBxdF93a19k
aWRGYWlsRG93bmxvYWQ7CisgICAgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQodG9BUEkoY29u
dGV4dCksICZkb3dubG9hZENsaWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG1hbmFnZXIpOwor
fQorCit2b2lkIFF0RG93bmxvYWRNYW5hZ2VyOjpkb3dubG9hZFJlY2VpdmVkUmVzcG9uc2UoRG93
bmxvYWRQcm94eSogZG93bmxvYWQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKQoreworICAgIC8vIFdpbGwgYmUgY2FsbGVkIHdoZW4gdGhlIGhlYWRlcnMgYXJlIHJl
YWQgYnkgV2ViUHJvY2Vzcy4KKyAgICBRV2ViRG93bmxvYWRJdGVtKiBkb3dubG9hZEl0ZW0gPSBt
X2Rvd25sb2Fkcy52YWx1ZShkb3dubG9hZC0+ZG93bmxvYWRJRCgpKTsKKyAgICBBU1NFUlQoZG93
bmxvYWRJdGVtKTsKKworICAgIGRvd25sb2FkSXRlbS0+ZC0+c291cmNlVXJsID0gcmVzcG9uc2Uu
dXJsKCk7CisgICAgZG93bmxvYWRJdGVtLT5kLT5taW1lVHlwZSA9IHJlc3BvbnNlLm1pbWVUeXBl
KCk7CisgICAgZG93bmxvYWRJdGVtLT5kLT5leHBlY3RlZENvbnRlbnRMZW5ndGggPSByZXNwb25z
ZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKTsKKyAgICBkb3dubG9hZEl0ZW0tPmQtPnN1Z2dlc3Rl
ZEZpbGVuYW1lID0gcmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUoKTsKKworICAgIGRvd25sb2Fk
SXRlbS0+ZC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGRvd25sb2FkSXRlbSk7Cit9CisKK3ZvaWQgUXRE
b3dubG9hZE1hbmFnZXI6OmRvd25sb2FkQ3JlYXRlZERlc3RpbmF0aW9uKERvd25sb2FkUHJveHkq
IGRvd25sb2FkLCBjb25zdCBRU3RyaW5nJiBwYXRoKQoreworICAgIFFXZWJEb3dubG9hZEl0ZW0q
IGRvd25sb2FkSXRlbSA9IG1fZG93bmxvYWRzLnZhbHVlKGRvd25sb2FkLT5kb3dubG9hZElEKCkp
OworICAgIEFTU0VSVChkb3dubG9hZEl0ZW0pOworICAgIGRvd25sb2FkSXRlbS0+ZC0+ZGVzdGlu
YXRpb25QYXRoID0gcGF0aDsKKyAgICBlbWl0IGRvd25sb2FkSXRlbS0+ZGVzdGluYXRpb25GaWxl
Q3JlYXRlZChkb3dubG9hZEl0ZW0tPmQtPmRlc3RpbmF0aW9uUGF0aCk7Cit9CisKK3ZvaWQgUXRE
b3dubG9hZE1hbmFnZXI6OmRvd25sb2FkRmluaXNoZWQoRG93bmxvYWRQcm94eSogZG93bmxvYWQp
Cit7CisgICAgLy8gV2lsbCBiZSBjYWxsZWQgd2hlbiBkb3dubG9hZCBmaW5pc2hlcyB3aXRoIHN1
Y2Nlc3MuCisgICAgUVdlYkRvd25sb2FkSXRlbSogZG93bmxvYWRJdGVtID0gbV9kb3dubG9hZHMu
dGFrZShkb3dubG9hZC0+ZG93bmxvYWRJRCgpKTsKKyAgICBBU1NFUlQoZG93bmxvYWRJdGVtKTsK
KyAgICBlbWl0IGRvd25sb2FkSXRlbS0+c3VjY2VlZGVkKCk7Cit9CisKK3ZvaWQgUXREb3dubG9h
ZE1hbmFnZXI6OmRvd25sb2FkRmFpbGVkKERvd25sb2FkUHJveHkqIGRvd25sb2FkLCBjb25zdCBR
dFdlYkVycm9yJiBlcnJvcikKK3sKKyAgICAvLyBXaWxsIGJlIGNhbGxlZCB3aGVuIGRvd25sb2Fk
IGZhaWxzIG9yIGlzIGFib3J0ZWQuCisgICAgUVdlYkRvd25sb2FkSXRlbSogZG93bmxvYWRJdGVt
ID0gbV9kb3dubG9hZHMudGFrZShkb3dubG9hZC0+ZG93bmxvYWRJRCgpKTsKKyAgICBBU1NFUlQo
ZG93bmxvYWRJdGVtKTsKKyAgICBlbWl0IGRvd25sb2FkSXRlbS0+ZmFpbGVkKGVycm9yLmVycm9y
Q29kZUFzRG93bmxvYWRFcnJvcigpLCBlcnJvci51cmwoKSwgZXJyb3IuZGVzY3JpcHRpb24oKSk7
Cit9CisKK3ZvaWQgUXREb3dubG9hZE1hbmFnZXI6OmRvd25sb2FkRGF0YVJlY2VpdmVkKERvd25s
b2FkUHJveHkqIGRvd25sb2FkLCB1aW50NjRfdCBsZW5ndGgpCit7CisgICAgLy8gV2lsbCBiZSBj
YWxsZWQgZXZlcnl0aW1lIGJ5dGVzIHdlcmUgd3JpdHRlbiB0byBkZXN0aW5hdGlvbiBmaWxlIGJ5
IFdlYlByb2Nlc3MuCisgICAgUVdlYkRvd25sb2FkSXRlbSogZG93bmxvYWRJdGVtID0gbV9kb3du
bG9hZHMudmFsdWUoZG93bmxvYWQtPmRvd25sb2FkSUQoKSk7CisgICAgQVNTRVJUKGRvd25sb2Fk
SXRlbSk7CisgICAgZG93bmxvYWRJdGVtLT5kLT50b3RhbEJ5dGVzUmVjZWl2ZWQgKz0gbGVuZ3Ro
OworICAgIGVtaXQgZG93bmxvYWRJdGVtLT50b3RhbEJ5dGVzUmVjZWl2ZWRDaGFuZ2VkKGxlbmd0
aCk7Cit9CisKK3ZvaWQgUXREb3dubG9hZE1hbmFnZXI6OmFkZERvd25sb2FkKERvd25sb2FkUHJv
eHkqIGRvd25sb2FkLCBRV2ViRG93bmxvYWRJdGVtKiBkb3dubG9hZEl0ZW0pCit7CisgICAgbV9k
b3dubG9hZHNbZG93bmxvYWQtPmRvd25sb2FkSUQoKV0gPSBkb3dubG9hZEl0ZW07Cit9CisKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdERvd25sb2FkTWFuYWdl
ci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0RG93bmxvYWRNYW5hZ2VyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMGJmNzIxNmQ0MTY4OWE2MDJhMDM3M2U0Yjc5MTRiYTkzZDdjMmU3OAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdERvd25sb2FkTWFuYWdl
ci5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgTm9r
aWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIFF0
RG93bmxvYWRNYW5hZ2VyX2gKKyNkZWZpbmUgUXREb3dubG9hZE1hbmFnZXJfaAorCisjaW5jbHVk
ZSA8UU1hcD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CisKK2NsYXNzIFF0V2ViRXJyb3I7CitjbGFzcyBRV2ViRG93bmxvYWRJdGVtOwor
CituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOworfQorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgRG93bmxvYWRQcm94eTsKK2NsYXNzIFdlYkNvbnRleHQ7
CisKK2NsYXNzIFF0RG93bmxvYWRNYW5hZ2VyIDogcHVibGljIFJlZkNvdW50ZWQ8UXREb3dubG9h
ZE1hbmFnZXI+IHsKK3B1YmxpYzoKKyAgICB+UXREb3dubG9hZE1hbmFnZXIoKTsKKworICAgIHZv
aWQgYWRkRG93bmxvYWQoRG93bmxvYWRQcm94eSosIFFXZWJEb3dubG9hZEl0ZW0qKTsKKworICAg
IHZvaWQgZG93bmxvYWRSZWNlaXZlZFJlc3BvbnNlKERvd25sb2FkUHJveHkqLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgdm9pZCBkb3dubG9hZENyZWF0ZWREZXN0aW5h
dGlvbihEb3dubG9hZFByb3h5KiwgY29uc3QgUVN0cmluZyYgcGF0aCk7CisgICAgdm9pZCBkb3du
bG9hZEZpbmlzaGVkKERvd25sb2FkUHJveHkqKTsKKyAgICB2b2lkIGRvd25sb2FkRmFpbGVkKERv
d25sb2FkUHJveHkqLCBjb25zdCBRdFdlYkVycm9yJik7CisgICAgdm9pZCBkb3dubG9hZERhdGFS
ZWNlaXZlZChEb3dubG9hZFByb3h5KiwgdWludDY0X3QgbGVuZ3RoKTsKKworICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFF0RG93bmxvYWRNYW5hZ2VyPiBjcmVhdGUoV2ViQ29udGV4dCopOworcHJpdmF0
ZToKKyAgICBRdERvd25sb2FkTWFuYWdlcigpOworCisgICAgUU1hcDx1aW50NjRfdCwgUVdlYkRv
d25sb2FkSXRlbSo+IG1fZG93bmxvYWRzOworfTsKKworfQorI2VuZGlmIC8qIFF0RG93bmxvYWRN
YW5hZ2VyX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFRv
dWNoVmlld0ludGVyZmFjZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0VG91Y2hW
aWV3SW50ZXJmYWNlLmgKaW5kZXggM2E0NTM0OTBmOTIzMWQ4MDk4MjRhYmY4YTNlYWMxOWM0OWQx
ZDY3Yi4uYTRmZDQ1N2EzODk0NDU3MjM4ZTNmMjZiNDZlYmY5NTM3YmQ1ZGNhNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0VG91Y2hWaWV3SW50ZXJmYWNlLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0VG91Y2hWaWV3SW50ZXJmYWNlLmgKQEAg
LTgxLDYgKzgxLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFFKU0VuZ2luZSogZW5naW5lKCk7
CiAKICAgICB2aXJ0dWFsIHZvaWQgY2hvb3NlRmlsZXMoV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
clJlZiwgY29uc3QgUVN0cmluZ0xpc3QmLCBGaWxlQ2hvb3NlclR5cGUpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBkb3dubG9hZFJlcXVlc3RlZChRV2ViRG93bmxvYWRJdGVtKiBkb3dubG9hZEl0ZW0p
IHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZE1vdXNlTW92ZU92ZXJFbGVtZW50KGNvbnN0IFFV
cmwmLCBjb25zdCBRU3RyaW5nJikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9RdFZpZXdJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9RdFZpZXdJbnRlcmZhY2UuaAppbmRleCA1MjZhNDk1NjEwZDk2NDE0MWU4YzkzNGYyZjVlY2M5
YTE1OTk4MGJjLi5hODE4OTExNDE4YzMzMjAwMDM2MGJkZjQ0ZTM1NGEzNWMyYTllNzMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRWaWV3SW50ZXJmYWNlLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0Vmlld0ludGVyZmFjZS5oCkBAIC0yNyw2
ICsyNyw3IEBACiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KIAogY2xhc3MgUXRXZWJFcnJv
cjsKK2NsYXNzIFFXZWJEb3dubG9hZEl0ZW07CiAKIFFUX0JFR0lOX05BTUVTUEFDRQogY2xhc3Mg
UUN1cnNvcjsKQEAgLTkzLDYgKzk0LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjaG9v
c2VGaWxlcyhXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmLCBjb25zdCBRU3RyaW5nTGlzdCYg
c2VsZWN0ZWRGaWxlTmFtZXMsIEZpbGVDaG9vc2VyVHlwZSkgPSAwOwogCiAgICAgdmlydHVhbCB2
b2lkIGRpZE1vdXNlTW92ZU92ZXJFbGVtZW50KGNvbnN0IFFVcmwmLCBjb25zdCBRU3RyaW5nJikg
PSAwOworCisgICAgdmlydHVhbCB2b2lkIGRvd25sb2FkUmVxdWVzdGVkKFFXZWJEb3dubG9hZEl0
ZW0qKSA9IDA7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvUXRXZWJFcnJvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJFcnJv
ci5jcHAKaW5kZXggNzY1NDk3N2UwNzdiYWI3ZDU0YjU5N2VkMWZiNGJhOWJhZDE1NzlkNi4uNmQy
ZTEwZDgxMTE0NTBhNjJhY2ZjZDhhNDg0MGI2YzEzZDAwODJlNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9RdFdlYkVycm9yLmNwcApAQCAtNjAsMyArNjAsOCBAQCBRVXJsIFF0V2Vi
RXJyb3I6OnVybCgpIGNvbnN0CiAgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IGZhaWxpbmdVUkwg
PSBhZG9wdFdLKFdLRXJyb3JDb3B5RmFpbGluZ1VSTChlcnJvci5nZXQoKSkpOwogICAgIHJldHVy
biBXS1VSTENvcHlRVXJsKGZhaWxpbmdVUkwuZ2V0KCkpOwogfQorCitRU3RyaW5nIFF0V2ViRXJy
b3I6OmRlc2NyaXB0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV0tTdHJpbmdDb3B5UVN0cmlu
ZyhXS0Vycm9yQ29weUxvY2FsaXplZERlc2NyaXB0aW9uKGVycm9yLmdldCgpKSk7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJFcnJvci5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViRXJyb3IuaAppbmRleCAxMWIwOTUzZjJlZWUzZTU2
NTEzYzRjOTkwZjI5ZDAzMTNhZDYyNmQ0Li45MTE4N2U5MjZhNGNkYWViOTNkOTdkOGJjMzFhMTBm
NTc0Yzg2NDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJF
cnJvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYkVycm9yLmgKQEAg
LTIxLDYgKzIxLDcgQEAKICNpZm5kZWYgUXRXZWJFcnJvcl9oCiAjZGVmaW5lIFF0V2ViRXJyb3Jf
aAogCisjaW5jbHVkZSAicXdlYmRvd25sb2FkaXRlbS5oIgogI2luY2x1ZGUgInF3ZWJraXRnbG9i
YWwuaCIKICNpbmNsdWRlIDxRdE5ldHdvcmsvUU5ldHdvcmtSZXBseT4KICNpbmNsdWRlIDxXS0Vy
cm9yLmg+CkBAIC00Miw5ICs0MywxMSBAQCBwdWJsaWM6CiAgICAgVHlwZSB0eXBlKCkgY29uc3Q7
CiAgICAgUVVybCB1cmwoKSBjb25zdDsKICAgICBpbnQgZXJyb3JDb2RlKCkgY29uc3Q7CisgICAg
UVN0cmluZyBkZXNjcmlwdGlvbigpIGNvbnN0OwogCiAgICAgaW50IGVycm9yQ29kZUFzSHR0cFN0
YXR1c0NvZGUoKSBjb25zdCB7IHJldHVybiBlcnJvckNvZGUoKTsgfQogICAgIFFOZXR3b3JrUmVw
bHk6Ok5ldHdvcmtFcnJvciBlcnJvckNvZGVBc05ldHdvcmtFcnJvcigpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PFFOZXR3b3JrUmVwbHk6Ok5ldHdvcmtFcnJvcj4oZXJyb3JDb2RlKCkpOyB9
CisgICAgUVdlYkRvd25sb2FkSXRlbTo6RG93bmxvYWRFcnJvciBlcnJvckNvZGVBc0Rvd25sb2Fk
RXJyb3IoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxRV2ViRG93bmxvYWRJdGVtOjpEb3du
bG9hZEVycm9yPihlcnJvckNvZGUoKSk7IH0KIAogICAgIFF0V2ViRXJyb3IoY29uc3QgUXRXZWJF
cnJvciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQ
YWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5
LmNwcAppbmRleCA2NDMwYTA5MDA1MTYzOWFjNjY0YTAyMWZjNjdmMzFiZGM3ZDkzMzRiLi45NDU0
ZjU2MDUwMjA3Zjg0ZmJkM2ZhNTBjYzhiOTg2YzlhZTUwNTM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAKQEAgLTIyLDEwICsyMiwxMyBAQAog
I2luY2x1ZGUgIlF0V2ViUGFnZVByb3h5LmgiCiAKICNpbmNsdWRlICJRdFdlYkVycm9yLmgiCisj
aW5jbHVkZSAicXdlYmRvd25sb2FkaXRlbS5oIgorI2luY2x1ZGUgInF3ZWJkb3dubG9hZGl0ZW1f
cC5oIgogI2luY2x1ZGUgInF3ZWJwcmVmZXJlbmNlcy5oIgogI2luY2x1ZGUgInF3ZWJwcmVmZXJl
bmNlc19wLmgiCiAKICNpbmNsdWRlICJDbGllbnRJbXBsLmgiCisjaW5jbHVkZSAiRG93bmxvYWRQ
cm94eS5oIgogI2luY2x1ZGUgInF3a2hpc3RvcnkuaCIKICNpbmNsdWRlICJxd2toaXN0b3J5X3Au
aCIKICNpbmNsdWRlICJGaW5kSW5kaWNhdG9yLmgiCkBAIC02Myw2ICs2Niw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogUmVmUHRyPFdlYkNv
bnRleHQ+IFF0V2ViUGFnZVByb3h5OjpzX2RlZmF1bHRDb250ZXh0OworUmVmUHRyPFF0RG93bmxv
YWRNYW5hZ2VyPiBRdFdlYlBhZ2VQcm94eTo6c19kb3dubG9hZE1hbmFnZXI7CiAKIHVuc2lnbmVk
IFF0V2ViUGFnZVByb3h5OjpzX2RlZmF1bHRQYWdlUHJveHlDb3VudCA9IDA7CiAKQEAgLTcxLDYg
Kzc1LDcgQEAgUGFzc1JlZlB0cjxXZWJDb250ZXh0PiBRdFdlYlBhZ2VQcm94eTo6ZGVmYXVsdFdL
Q29udGV4dCgpCiAgICAgaWYgKCFzX2RlZmF1bHRDb250ZXh0KSB7CiAgICAgICAgIHNfZGVmYXVs
dENvbnRleHQgPSBXZWJDb250ZXh0OjpjcmVhdGUoU3RyaW5nKCkpOwogICAgICAgICBzZXR1cENv
bnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudCh0b0FQSShzX2RlZmF1bHRDb250ZXh0LmdldCgpKSk7
CisgICAgICAgIHNfZG93bmxvYWRNYW5hZ2VyID0gUXREb3dubG9hZE1hbmFnZXI6OmNyZWF0ZShz
X2RlZmF1bHRDb250ZXh0LmdldCgpKTsKICAgICB9CiAgICAgcmV0dXJuIHNfZGVmYXVsdENvbnRl
eHQ7CiB9CkBAIC0xMzYsOCArMTQxLDEwIEBAIFF0V2ViUGFnZVByb3h5Ojp+UXRXZWJQYWdlUHJv
eHkoKQogICAgIGlmIChtX2NvbnRleHQgPT0gc19kZWZhdWx0Q29udGV4dCkgewogICAgICAgICBB
U1NFUlQoc19kZWZhdWx0UGFnZVByb3h5Q291bnQgPiAwKTsKICAgICAgICAgc19kZWZhdWx0UGFn
ZVByb3h5Q291bnQtLTsKLSAgICAgICAgaWYgKCFzX2RlZmF1bHRQYWdlUHJveHlDb3VudCkKKyAg
ICAgICAgaWYgKCFzX2RlZmF1bHRQYWdlUHJveHlDb3VudCkgewogICAgICAgICAgICAgc19kZWZh
dWx0Q29udGV4dC5jbGVhcigpOworICAgICAgICAgICAgc19kb3dubG9hZE1hbmFnZXIuY2xlYXIo
KTsKKyAgICAgICAgfQogICAgIH0KICAgICBkZWxldGUgbV9oaXN0b3J5OwogfQpAQCAtNTk1LDQg
KzYwMiwyMyBAQCB2b2lkIFF0V2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRp
ZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudAogICAgIG1fdmlld0ludGVyZmFjZS0+
ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGFyZ3MpOwogfQogCit2b2lkIFF0V2ViUGFnZVBy
b3h5OjpoYW5kbGVEb3dubG9hZFJlcXVlc3QoRG93bmxvYWRQcm94eSogZG93bmxvYWQpCit7Cisg
ICAgLy8gVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgaG9va2luZyB1cCBhIERvd25s
b2FkUHJveHkgdG8gb3VyIEFQSSBsYXllcgorICAgIC8vIGJ5IGNyZWF0aW5nIGEgUVdlYkRvd25s
b2FkSXRlbS4gSXQgd2lsbCB0aGVuIHdhaXQgZm9yIHRoZSBRV2ViRG93bmxvYWRJdGVtIHRvIGJl
CisgICAgLy8gcmVhZHkgKGZpbGxlZCB3aXRoIHRoZSBSZXNvdXJjZVJlc3BvbnNlIGluZm9ybWF0
aW9uKSBzbyB3ZSBjYW4gcGFzcyBpdCB0aHJvdWdoIHRvCisgICAgLy8gb3VyIFdlYlZpZXdzLgor
ICAgIFFXZWJEb3dubG9hZEl0ZW0qIGRvd25sb2FkSXRlbSA9IG5ldyBRV2ViRG93bmxvYWRJdGVt
KCk7CisgICAgZG93bmxvYWRJdGVtLT5kLT5kb3dubG9hZFByb3h5ID0gZG93bmxvYWQ7CisKKyAg
ICBjb25uZWN0KGRvd25sb2FkSXRlbS0+ZCwgU0lHTkFMKHJlY2VpdmVkUmVzcG9uc2UoUVdlYkRv
d25sb2FkSXRlbSopKSwgdGhpcywgU0xPVChkaWRSZWNlaXZlRG93bmxvYWRSZXNwb25zZShRV2Vi
RG93bmxvYWRJdGVtKikpKTsKKyAgICBzX2Rvd25sb2FkTWFuYWdlci0+YWRkRG93bmxvYWQoZG93
bmxvYWQsIGRvd25sb2FkSXRlbSk7Cit9CisKK3ZvaWQgUXRXZWJQYWdlUHJveHk6OmRpZFJlY2Vp
dmVEb3dubG9hZFJlc3BvbnNlKFFXZWJEb3dubG9hZEl0ZW0qIGRvd25sb2FkKQoreworICAgIC8v
IE5vdyB0aGF0IG91ciBkb3dubG9hZEl0ZW0gaGFzIGV2ZXJ5dGhpbmcgd2UgbmVlZCB3ZSBjYW4g
ZW1pdCBkb3dubG9hZFJlcXVlc3RlZC4KKyAgICBtX3ZpZXdJbnRlcmZhY2UtPmRvd25sb2FkUmVx
dWVzdGVkKGRvd25sb2FkKTsKK30KKwogI2luY2x1ZGUgIm1vY19RdFdlYlBhZ2VQcm94eS5jcHAi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5oCmluZGV4IDRh
ZTQ3YzljNWI0M2Y5Y2QzNmQ3Y2ZiYjZlZGJiMGExNjMzMTRlZTYuLmRlMDFkYjI3OGVjZmFkZDY0
MDA0OTU5NzIwYzM2OTJlNTQ4ODlmYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9RdFdlYlBhZ2VQcm94eS5oCkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNsdWRlICJMYXllclRy
ZWVDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGFnZUNsaWVudC5oIgorI2luY2x1ZGUgIlF0RG93bmxv
YWRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUXRQb2xpY3lJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJR
dFZpZXdJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKQEAgLTE3OCw4
ICsxNzksMTEgQEAgcHVibGljOgogICAgIFFXS0hpc3RvcnkqIGhpc3RvcnkoKSBjb25zdDsKICAg
ICBRdFZpZXdJbnRlcmZhY2UqIHZpZXdJbnRlcmZhY2UoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdJ
bnRlcmZhY2U7IH0KIAorICAgIHZvaWQgaGFuZGxlRG93bmxvYWRSZXF1ZXN0KERvd25sb2FkUHJv
eHkqKTsKKwogcHVibGljIFFfU0xPVFM6CiAgICAgdm9pZCBuYXZpZ2F0aW9uU3RhdGVDaGFuZ2Vk
KCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRG93bmxvYWRSZXNwb25zZShRV2ViRG93bmxvYWRJdGVt
Kik7CiAKIHB1YmxpYzoKICAgICBRX1NJR05BTCB2b2lkIHNjcm9sbFJlcXVlc3RlZChpbnQgZHgs
IGludCBkeSk7CkBAIC0yMDMsNiArMjA3LDcgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFdlYkNvbnRleHQ+IGRlZmF1bHRXS0NvbnRleHQoKTsKICAgICBzdGF0aWMgUmVmUHRy
PFdlYkNvbnRleHQ+IHNfZGVmYXVsdENvbnRleHQ7CisgICAgc3RhdGljIFJlZlB0cjxRdERvd25s
b2FkTWFuYWdlcj4gc19kb3dubG9hZE1hbmFnZXI7CiAgICAgc3RhdGljIHVuc2lnbmVkIHNfZGVm
YXVsdFBhZ2VQcm94eUNvdW50OwogCiAgICAgUmVmUHRyPFdlYkNvbnRleHQ+IG1fY29udGV4dDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJvIGIvU291cmNlL1dlYktpdDIv
V2ViS2l0Mi5wcm8KaW5kZXggMGQyMTY4ODAyYzljYjAxZTNiZmQ5MzQwMjZlZjc5MDhkNzkwODAx
Zi4uYmYzYTUyYjNmZmM4ZDQyNDgzNjA5ZWY5YTBjZmIyOWVhYjQ4ODZkMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcm8KKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi5w
cm8KQEAgLTI2MCw2ICsyNjAsNyBAQCBIRUFERVJTICs9IFwKICAgICBVSVByb2Nlc3MvcXQvUXRE
ZXNrdG9wV2ViUGFnZVByb3h5LmggXAogICAgIFVJUHJvY2Vzcy9xdC9RdFRvdWNoV2ViUGFnZVBy
b3h5LmggXAogICAgIFVJUHJvY2Vzcy9xdC9RdFdlYkVycm9yLmggXAorICAgIFVJUHJvY2Vzcy9x
dC9RdERvd25sb2FkTWFuYWdlci5oIFwKICAgICBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHku
aCBcCiAgICAgVUlQcm9jZXNzL3F0L3F3a2hpc3RvcnkuaCBcCiAgICAgVUlQcm9jZXNzL3F0L3F3
a2hpc3RvcnlfcC5oIFwKQEAgLTUwNCw2ICs1MDUsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBVSVBy
b2Nlc3MvcXQvUXREZXNrdG9wV2ViUGFnZVByb3h5LmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0
VG91Y2hXZWJQYWdlUHJveHkuY3BwIFwKICAgICBVSVByb2Nlc3MvcXQvUXRXZWJFcnJvci5jcHAg
XAorICAgIFVJUHJvY2Vzcy9xdC9RdERvd25sb2FkTWFuYWdlci5jcHAgXAogICAgIFVJUHJvY2Vz
cy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9xd2toaXN0b3J5LmNw
cCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0U0dVcGRhdGVRdWV1ZS5jcHAgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViS2l0MkFQSS5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyQVBJ
LnByaQppbmRleCA1MTg1OTU3NjJlZDA3NTgzODliMTliZmQyOTgzODNkMTQ4NmU4ODkzLi4xYWI4
NjRjODRlZDlhZDMwNjZkNjdjZjIyYmVmOWYzYTdkODliZTJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyQVBJLnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyQVBJLnBy
aQpAQCAtNTAsNiArNTAsNyBAQCBXRUJLSVQyX0FQSV9TT1VSQ0VTID0gXAogICAgICQkU09VUkNF
X0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL3F0L1dLVVJMUXQuY3BwIFwKICAgICAkJFNP
VVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FiYXNld2Vidmlldy5jcHAgXAogICAg
ICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNw
cCBcCisgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxv
YWRpdGVtLmNwcCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
dG91Y2h3ZWJwYWdlLmNwcCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xdG91Y2h3ZWJ2aWV3LmNwcCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9xd2VibmF2aWdhdGlvbmNvbnRyb2xsZXIuY3BwIFwKQEAgLTEzNSw2ICsxMzYs
OCBAQCBXRUJLSVQyX0FQSV9IRUFERVJTICs9IFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlld19wLmggXAogICAgICQkU09VUkNFX0RJUi9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnByZWZlcmVuY2VzLmggXAogICAgICQkU09VUkNF
X0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnByZWZlcmVuY2VzX3AuaCBcCisgICAg
JCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxvYWRpdGVtLmgg
XAorICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYmRvd25sb2Fk
aXRlbV9wLmggXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRv
dWNod2VicGFnZS5oIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3F0b3VjaHdlYnBhZ2VfcC5oIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3F0b3VjaHdlYnZpZXcuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWQuaAppbmRleCBhY2NjZDNmODhlMmE2OTk1OTdhMzliN2JmODI4ZDQz
NjM3YjcwZjM4Li5jMDY2ZTJmNmI0NDM5ZTZjNTZlYzMwMTVmN2JmZTU1MjFhOTcyNDVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKQEAgLTkz
LDYgKzkzLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENhbmNlbChjb25zdCBDb3JlSVBDOjpE
YXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhKTsKICAgICB2b2lkIGRpZERlY2lkZURlc3RpbmF0aW9u
KGNvbnN0IFN0cmluZyYsIGJvb2wgYWxsb3dPdmVyd3JpdGUpOwogCisjaWYgUExBVEZPUk0oUVQp
CisgICAgdm9pZCBzdGFydFRyYW5zZmVyKGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24pOworI2Vu
ZGlmCisKICNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24o
KSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uOyB9CiAgICAgRG93bmxvYWRBdXRoZW50aWNh
dGlvbkNsaWVudCogYXV0aGVudGljYXRpb25DbGllbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCmluZGV4IGE2
MjQ4OTFmODAxOTRmM2FkYzE1MTgxYWM4MDg0YjQ2OTU1OGJjYjYuLjYwZGNlODliNGVlNGNjYzM4
YmVmOTg5NjU1OWY5ZDc4ZTY3ZjMyNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcApAQCAtNzksNCArNzksMTMg
QEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OmRvd25sb2FkRmluaXNoZWQoRG93bmxvYWQqIGRvd25s
b2FkKQogICAgIGRlbGV0ZSBkb3dubG9hZDsKIH0KIAorI2lmIFBMQVRGT1JNKFFUKQordm9pZCBE
b3dubG9hZE1hbmFnZXI6OnN0YXJ0VHJhbnNmZXIodWludDY0X3QgZG93bmxvYWRJRCwgY29uc3Qg
U3RyaW5nJiBkZXN0aW5hdGlvbikKK3sKKyAgICBBU1NFUlQobV9kb3dubG9hZHMuY29udGFpbnMo
ZG93bmxvYWRJRCkpOworICAgIERvd25sb2FkKiBkb3dubG9hZCA9IG1fZG93bmxvYWRzLmdldChk
b3dubG9hZElEKTsKKyAgICBkb3dubG9hZC0+c3RhcnRUcmFuc2ZlcihkZXN0aW5hdGlvbik7Cit9
CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCmluZGV4IDFmMjdiODY3
YWVkNTU4ZmJiNzUzYmM2NTJmMThiMGFjYjY5YTAwMjMuLjZmYTdhZWJlZTRmMjdiZDQzYzE3MDY2
Y2JiN2JiODNhNjg0MmQ0YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCkBAIC0yOSw2ICsyOSwxMCBAQAogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKK25hbWVz
cGFjZSBXVEYgeworY2xhc3MgU3RyaW5nOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
Y2xhc3MgUmVzb3VyY2VIYW5kbGU7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwpAQCAtNTQs
NiArNTgsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZG93bmxvYWRGaW5pc2hlZChEb3dubG9hZCop
OwogICAgIGJvb2wgaXNEb3dubG9hZGluZygpIGNvbnN0IHsgcmV0dXJuICFtX2Rvd25sb2Fkcy5p
c0VtcHR5KCk7IH0KIAorI2lmIFBMQVRGT1JNKFFUKQorICAgIHZvaWQgc3RhcnRUcmFuc2Zlcih1
aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBXVEY6OlN0cmluZyYgZGVzdGluYXRpb24pOworI2Vu
ZGlmCisKIHByaXZhdGU6CiAgICAgRG93bmxvYWRNYW5hZ2VyKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L0Rvd25sb2FkUXQuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvRG93bmxvYWRRdC5jcHAKaW5kZXgg
OWVlOTk5NWU4MGU4ODBkZGE2ZDI3YzlhM2I1MGYwYzE2MWRlYTBlMC4uNGVlZjQxYzQwYjZjNzY0
OWJhOTA1NDM0NmUyODE2YWE4OTU0MGQ3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9Eb3dubG9hZHMvcXQvRG93bmxvYWRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvRG93bmxvYWRRdC5jcHAKQEAgLTQ2LDEzICs0NiwxNCBA
QCB2b2lkIERvd25sb2FkOjpzdGFydChXZWJQYWdlKiBpbml0aWF0aW5nV2ViUGFnZSkKICAgICBB
U1NFUlQoIW1fcXREb3dubG9hZGVyKTsKIAogICAgIG1fcXREb3dubG9hZGVyID0gbmV3IFF0Rmls
ZURvd25sb2FkZXIodGhpcywgYWRvcHRQdHIobWFuYWdlci0+Z2V0KG1fcmVxdWVzdC50b05ldHdv
cmtSZXF1ZXN0KCkpKSk7Ci0gICAgbV9xdERvd25sb2FkZXItPnN0YXJ0KCk7CisgICAgbV9xdERv
d25sb2FkZXItPmluaXQoKTsKIH0KIAogdm9pZCBEb3dubG9hZDo6c3RhcnRXaXRoSGFuZGxlKFdl
YlBhZ2UqIGluaXRpYXRpbmdQYWdlLCBSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIGluaXRpYWxSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
KQogewogICAgIEFTU0VSVCghbV9xdERvd25sb2FkZXIpOwogICAgIG1fcXREb3dubG9hZGVyID0g
bmV3IFF0RmlsZURvd25sb2FkZXIodGhpcywgYWRvcHRQdHIoaGFuZGxlLT5nZXRJbnRlcm5hbCgp
LT5tX2pvYi0+cmVsZWFzZSgpKSk7CisgICAgbV9xdERvd25sb2FkZXItPmluaXQoKTsKIH0KIAog
dm9pZCBEb3dubG9hZDo6Y2FuY2VsKCkKQEAgLTcwLDcgKzcxLDEyIEBAIHZvaWQgRG93bmxvYWQ6
OnBsYXRmb3JtSW52YWxpZGF0ZSgpCiAKIHZvaWQgRG93bmxvYWQ6OmRpZERlY2lkZURlc3RpbmF0
aW9uKGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24sIGJvb2wgYWxsb3dPdmVyd3JpdGUpCiB7Ci0g
ICAgbV9xdERvd25sb2FkZXItPmRlY2lkZWREZXN0aW5hdGlvbihkZXN0aW5hdGlvbiwgYWxsb3dP
dmVyd3JpdGUpOworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRG93bmxvYWQ6OnN0
YXJ0VHJhbnNmZXIoY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbikKK3sKKyAgICBtX3F0RG93bmxv
YWRlci0+c3RhcnRUcmFuc2ZlcihkZXN0aW5hdGlvbik7CiB9CiAKIHZvaWQgRG93bmxvYWQ6OnBs
YXRmb3JtRGlkRmluaXNoKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
RG93bmxvYWRzL3F0L1F0RmlsZURvd25sb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9Eb3dubG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5jcHAKaW5kZXggYzkzNmIwOGU3MGY5
MDRjZjRiNWIzMzZmNTRiNzI2OTc3ZGJlZDBmOS4uYzNiMmU4ZDBlZTIyYTQ3NzU3ZDNjMDNkYThj
YWRkMzBlZGRmMmVlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3du
bG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9Eb3dubG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5jcHAKQEAgLTUzLDQ1ICs1Myw0MSBA
QCBRdEZpbGVEb3dubG9hZGVyOjp+UXRGaWxlRG93bmxvYWRlcigpCiAgICAgYWJvcnREb3dubG9h
ZFdyaXRpbmdBbmRFbWl0RXJyb3IoUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvckFib3J0
ZWQpOwogfQogCi12b2lkIFF0RmlsZURvd25sb2FkZXI6OnN0YXJ0KCkKK3ZvaWQgUXRGaWxlRG93
bmxvYWRlcjo6aW5pdCgpCiB7CiAgICAgY29ubmVjdChtX3JlcGx5LmdldCgpLCBTSUdOQUwocmVh
ZHlSZWFkKCkpLCBTTE9UKG9uUmVhZHlSZWFkKCkpKTsKICAgICBjb25uZWN0KG1fcmVwbHkuZ2V0
KCksIFNJR05BTChmaW5pc2hlZCgpKSwgU0xPVChvbkZpbmlzaGVkKCkpKTsKICAgICBjb25uZWN0
KG1fcmVwbHkuZ2V0KCksIFNJR05BTChlcnJvcihRTmV0d29ya1JlcGx5OjpOZXR3b3JrRXJyb3Ip
KSwgU0xPVChvbkVycm9yKFFOZXR3b3JrUmVwbHk6Ok5ldHdvcmtFcnJvcikpKTsKLQotICAgIC8v
IENhbGwgb25SZWFkeVJlYWQganVzdCBpbiBjYXNlIHNvbWUgZGF0YSBpcyBhbHJlYWR5IHdhaXRp
bmcuCi0gICAgb25SZWFkeVJlYWQoKTsKIH0KIAotdm9pZCBRdEZpbGVEb3dubG9hZGVyOjpkZXRl
cm1pbmVGaWxlbmFtZSgpCitRU3RyaW5nIFF0RmlsZURvd25sb2FkZXI6OmRldGVybWluZUZpbGVu
YW1lKCkKIHsKICAgICBBU1NFUlQoIW1fZGVzdGluYXRpb25GaWxlKTsKIAotICAgIFFTdHJpbmcg
ZmlsZU5hbWVDYW5kaWRhdGUgPSBmaWxlbmFtZUZyb21IVFRQQ29udGVudERpc3Bvc2l0aW9uKFFT
dHJpbmc6OmZyb21MYXRpbjEobV9yZXBseS0+cmF3SGVhZGVyKCJDb250ZW50LURpc3Bvc2l0aW9u
IikpKTsKLSAgICBpZiAoZmlsZU5hbWVDYW5kaWRhdGUuaXNFbXB0eSgpKSB7CisgICAgUVN0cmlu
ZyBmaWxlbmFtZUNhbmRpZGF0ZSA9IGZpbGVuYW1lRnJvbUhUVFBDb250ZW50RGlzcG9zaXRpb24o
UVN0cmluZzo6ZnJvbUxhdGluMShtX3JlcGx5LT5yYXdIZWFkZXIoIkNvbnRlbnQtRGlzcG9zaXRp
b24iKSkpOworICAgIGlmIChmaWxlbmFtZUNhbmRpZGF0ZS5pc0VtcHR5KCkpIHsKICAgICAgICAg
S1VSTCBrdXJsID0gbV9yZXBseS0+dXJsKCk7Ci0gICAgICAgIGZpbGVOYW1lQ2FuZGlkYXRlID0g
ZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKGt1cmwubGFzdFBhdGhDb21wb25lbnQoKSk7CisgICAg
ICAgIGZpbGVuYW1lQ2FuZGlkYXRlID0gZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKGt1cmwubGFz
dFBhdGhDb21wb25lbnQoKSk7CiAgICAgfQogCi0gICAgaWYgKGZpbGVOYW1lQ2FuZGlkYXRlLmlz
RW1wdHkoKSkgeworICAgIGlmIChmaWxlbmFtZUNhbmRpZGF0ZS5pc0VtcHR5KCkpIHsKICAgICAg
ICAgYWJvcnREb3dubG9hZFdyaXRpbmdBbmRFbWl0RXJyb3IoUXRGaWxlRG93bmxvYWRlcjo6RG93
bmxvYWRFcnJvckNhbm5vdERldGVybWluZUZpbGVuYW1lKTsKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gUVN0cmluZygpOwogICAgIH0KIAogICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHdl
IHJlbW92ZSBwb3NzaWJsZSAiLi4vLi4iIHBhcnRzIGluIHRoZSBnaXZlbiBmaWxlIG5hbWUuCi0g
ICAgUUZpbGVJbmZvIGZpbGVOYW1lRmlsdGVyKGZpbGVOYW1lQ2FuZGlkYXRlKTsKLSAgICBRU3Ry
aW5nIGZpbGVOYW1lID0gZmlsZU5hbWVGaWx0ZXIuZmlsZU5hbWUoKTsKKyAgICBRRmlsZUluZm8g
ZmlsZW5hbWVGaWx0ZXIoZmlsZW5hbWVDYW5kaWRhdGUpOworICAgIFFTdHJpbmcgZmlsZW5hbWUg
PSBmaWxlbmFtZUZpbHRlci5maWxlTmFtZSgpOwogCi0gICAgaWYgKGZpbGVOYW1lLmlzRW1wdHko
KSkgeworICAgIGlmIChmaWxlbmFtZS5pc0VtcHR5KCkpIHsKICAgICAgICAgYWJvcnREb3dubG9h
ZFdyaXRpbmdBbmRFbWl0RXJyb3IoUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvckNhbm5v
dERldGVybWluZUZpbGVuYW1lKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gUVN0
cmluZygpOwogICAgIH0KIAotICAgIGJvb2wgYWxsb3dPdmVyd3JpdGU7Ci0gICAgbV9kb3dubG9h
ZC0+ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoZmlsZU5hbWUsIGFsbG93
T3ZlcndyaXRlKTsKKyAgICByZXR1cm4gZmlsZW5hbWU7CiB9CiAKLXZvaWQgUXRGaWxlRG93bmxv
YWRlcjo6ZGVjaWRlZERlc3RpbmF0aW9uKGNvbnN0IFFTdHJpbmcmIGRlY2lkZWRGaWxlUGF0aCwg
Ym9vbCBhbGxvd092ZXJ3cml0ZSkKK3ZvaWQgUXRGaWxlRG93bmxvYWRlcjo6c3RhcnRUcmFuc2Zl
cihjb25zdCBRU3RyaW5nJiBkZWNpZGVkRmlsZVBhdGgpCiB7CiAgICAgQVNTRVJUKCFtX2Rlc3Rp
bmF0aW9uRmlsZSk7CiAKQEAgLTEwMiwxNyArOTgsMTIgQEAgdm9pZCBRdEZpbGVEb3dubG9hZGVy
OjpkZWNpZGVkRGVzdGluYXRpb24oY29uc3QgUVN0cmluZyYgZGVjaWRlZEZpbGVQYXRoLCBib29s
IGEKICAgICB9CiAKICAgICBpZiAoZGVjaWRlZEZpbGVQYXRoLmlzRW1wdHkoKSkgewotICAgICAg
ICBhYm9ydERvd25sb2FkV3JpdGluZ0FuZEVtaXRFcnJvcihRdEZpbGVEb3dubG9hZGVyOjpEb3du
bG9hZEVycm9yQ2FuY2VsbGVkQnlDYWxsZXIpOworICAgICAgICBhYm9ydERvd25sb2FkV3JpdGlu
Z0FuZEVtaXRFcnJvcihRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9yQ2FuY2VsbGVkKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIE93blB0cjxRRmlsZT4gZG93bmxvYWRGaWxl
ID0gYWRvcHRQdHIobmV3IFFGaWxlKGRlY2lkZWRGaWxlUGF0aCkpOwogCi0gICAgaWYgKCFhbGxv
d092ZXJ3cml0ZSAmJiBkb3dubG9hZEZpbGUtPmV4aXN0cygpKSB7Ci0gICAgICAgIGFib3J0RG93
bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKFF0RmlsZURvd25sb2FkZXI6OkRvd25sb2FkRXJyb3JG
aWxlQWxyZWFkeUV4aXN0cyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBpZiAoIWRv
d25sb2FkRmlsZS0+b3BlbihRSU9EZXZpY2U6OldyaXRlT25seSB8IFFJT0RldmljZTo6VHJ1bmNh
dGUpKSB7CiAgICAgICAgIGFib3J0RG93bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKFF0RmlsZURv
d25sb2FkZXI6OkRvd25sb2FkRXJyb3JDYW5ub3RPcGVuRmlsZSk7CiAgICAgICAgIHJldHVybjsK
QEAgLTEzMyw3ICsxMjQsNiBAQCB2b2lkIFF0RmlsZURvd25sb2FkZXI6OmRlY2lkZWREZXN0aW5h
dGlvbihjb25zdCBRU3RyaW5nJiBkZWNpZGVkRmlsZVBhdGgsIGJvb2wgYQogICAgIC8vIGZ1bmN0
aW9uIHdhcyBjYWxsZWQuCiAgICAgaWYgKG1fcmVwbHktPmlzRmluaXNoZWQoKSkKICAgICAgICAg
b25GaW5pc2hlZCgpOwotCiB9CiAKIHZvaWQgUXRGaWxlRG93bmxvYWRlcjo6YWJvcnREb3dubG9h
ZFdyaXRpbmdBbmRFbWl0RXJyb3IoUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvciBlcnJv
ckNvZGUpCkBAIC0xNTcsMTAgKzE0NywxMCBAQCB2b2lkIFF0RmlsZURvd25sb2FkZXI6OmFib3J0
RG93bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKFF0RmlsZURvd25sb2FkZXI6OkRvd25sbwogICAg
IGNhc2UgUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvckNhbm5vdE9wZW5GaWxlOgogICAg
ICAgICB0cmFuc2xhdGVkRXJyb3JNZXNzYWdlID0gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRl
KCJRdEZpbGVEb3dubG9hZGVyIiwgIkNhbm5vdCBvcGVuIGZpbGUgZm9yIHdyaXRpbmciKTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9yRmls
ZUFscmVhZHlFeGlzdHM6Ci0gICAgICAgIHRyYW5zbGF0ZWRFcnJvck1lc3NhZ2UgPSBRQ29yZUFw
cGxpY2F0aW9uOjp0cmFuc2xhdGUoIlF0RmlsZURvd25sb2FkZXIiLCAiRmlsZSBhbHJlYWR5IGV4
aXN0cyIpOworICAgIGNhc2UgUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvckRlc3RpbmF0
aW9uQWxyZWFkeUV4aXN0czoKKyAgICAgICAgdHJhbnNsYXRlZEVycm9yTWVzc2FnZSA9IFFDb3Jl
QXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUXRGaWxlRG93bmxvYWRlciIsICJEZXN0aW5hdGlvbiBh
bHJlYWR5IGV4aXN0cyIpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFF0RmlsZURvd25sb2Fk
ZXI6OkRvd25sb2FkRXJyb3JDYW5jZWxsZWRCeUNhbGxlcjoKKyAgICBjYXNlIFF0RmlsZURvd25s
b2FkZXI6OkRvd25sb2FkRXJyb3JDYW5jZWxsZWQ6CiAgICAgICAgIHRyYW5zbGF0ZWRFcnJvck1l
c3NhZ2UgPSBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlF0RmlsZURvd25sb2FkZXIiLCAi
RG93bmxvYWQgY2FuY2VsbGVkIGJ5IGNhbGxlciIpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IFF0RmlsZURvd25sb2FkZXI6OkRvd25sb2FkRXJyb3JDYW5ub3REZXRlcm1pbmVGaWxlbmFtZToK
QEAgLTE3NSw2ICsxNjUsMjcgQEAgdm9pZCBRdEZpbGVEb3dubG9hZGVyOjphYm9ydERvd25sb2Fk
V3JpdGluZ0FuZEVtaXRFcnJvcihRdEZpbGVEb3dubG9hZGVyOjpEb3dubG8KICAgICBtX2Rvd25s
b2FkLT5kaWRGYWlsKGRvd25sb2FkRXJyb3IsIENvcmVJUEM6OkRhdGFSZWZlcmVuY2UoMCwgMCkp
OwogfQogCit2b2lkIFF0RmlsZURvd25sb2FkZXI6OmhhbmRsZURvd25sb2FkUmVzcG9uc2UoKQor
eworICAgIC8vIEJ5IEFQSSBjb250cmFjdCwgUU5ldHdvcmtSZXBseTo6bWV0YURhdGFDaGFuZ2Vk
IGNhbm5vdCByZWFsbHkgYmUgdHJ1c3RlZC4KKyAgICAvLyBUaHVzIHdlIG5lZWQgdG8gY2FsbCB0
aGlzIHVwb24gcmVjZWl2aW5nIGZpcnN0IGRhdGEuCisgICAgU3RyaW5nIGNvbnRlbnRUeXBlID0g
bV9yZXBseS0+aGVhZGVyKFFOZXR3b3JrUmVxdWVzdDo6Q29udGVudFR5cGVIZWFkZXIpLnRvU3Ry
aW5nKCk7CisgICAgU3RyaW5nIGVuY29kaW5nID0gZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBl
KGNvbnRlbnRUeXBlKTsKKyAgICBTdHJpbmcgbWltZVR5cGUgPSBleHRyYWN0TUlNRVR5cGVGcm9t
TWVkaWFUeXBlKGNvbnRlbnRUeXBlKTsKKyAgICBTdHJpbmcgZmlsZW5hbWUgPSBkZXRlcm1pbmVG
aWxlbmFtZSgpOworCisgICAgLy8gSWYgZmlsZW5hbWUgaXMgZW1wdHkgaXQgbWVhbnMgZGV0ZXJt
aW5lRmlsZW5hbWUgYWJvcnRlZCBhbmQgZW1pdHRlZCBhbiBlcnJvci4KKyAgICBpZiAoZmlsZW5h
bWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBMZXQncyB0cnkgdG8gZ3Vl
c3MgZnJvbSB0aGUgZXh0ZW5zaW9uLgorICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5KCkpCisgICAg
ICAgIG1pbWVUeXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JQYXRoKG1fcmVw
bHktPnVybCgpLnBhdGgoKSk7CisKKyAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKG1fcmVw
bHktPnVybCgpLCBtaW1lVHlwZSwgbV9yZXBseS0+aGVhZGVyKFFOZXR3b3JrUmVxdWVzdDo6Q29u
dGVudExlbmd0aEhlYWRlcikudG9Mb25nTG9uZygpLCBlbmNvZGluZywgZmlsZW5hbWUpOworICAg
IG1fZG93bmxvYWQtPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7Cit9CisKIHZvaWQgUXRG
aWxlRG93bmxvYWRlcjo6b25SZWFkeVJlYWQoKQogewogICAgIGlmIChtX2Rlc3RpbmF0aW9uRmls
ZSkgewpAQCAtMTk1LDI3ICsyMDYsMjEgQEAgdm9pZCBRdEZpbGVEb3dubG9hZGVyOjpvblJlYWR5
UmVhZCgpCiAKICAgICAgICAgbV9kb3dubG9hZC0+ZGlkUmVjZWl2ZURhdGEoYnl0ZXNXcml0dGVu
KTsKICAgICB9IGVsc2UgaWYgKCFtX2hlYWRlcnNSZWFkKSB7Ci0gICAgICAgIC8vIEJ5IEFQSSBj
b250cmFjdCwgUU5ldHdvcmtSZXBseTo6bWV0YURhdGFDaGFuZ2VkIGNhbm5vdCByZWFsbHkgYmUg
dHJ1c3RlZC4KLSAgICAgICAgLy8gVGh1cyB3ZSBuZWVkIHRvIGNhbGwgdGhpcyB1cG9uIHJlY2Vp
dmluZyBmaXJzdCBkYXRhLgotICAgICAgICBTdHJpbmcgY29udGVudFR5cGUgPSBtX3JlcGx5LT5o
ZWFkZXIoUU5ldHdvcmtSZXF1ZXN0OjpDb250ZW50VHlwZUhlYWRlcikudG9TdHJpbmcoKTsKLSAg
ICAgICAgU3RyaW5nIGVuY29kaW5nID0gZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnRl
bnRUeXBlKTsKLSAgICAgICAgU3RyaW5nIG1pbWVUeXBlID0gZXh0cmFjdE1JTUVUeXBlRnJvbU1l
ZGlhVHlwZShjb250ZW50VHlwZSk7Ci0KLSAgICAgICAgLy8gTGV0J3MgdHJ5IHRvIGd1ZXNzIGZy
b20gdGhlIGV4dGVuc2lvbi4KLSAgICAgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIG1pbWVUeXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JQYXRoKG1f
cmVwbHktPnVybCgpLnBhdGgoKSk7Ci0KLSAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25z
ZShtX3JlcGx5LT51cmwoKSwgbWltZVR5cGUsIG1fcmVwbHktPmhlYWRlcihRTmV0d29ya1JlcXVl
c3Q6OkNvbnRlbnRMZW5ndGhIZWFkZXIpLnRvTG9uZ0xvbmcoKSwgZW5jb2RpbmcsIFN0cmluZygp
KTsKLSAgICAgICAgbV9kb3dubG9hZC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKLQot
ICAgICAgICBkZXRlcm1pbmVGaWxlbmFtZSgpOwotCisgICAgICAgIGhhbmRsZURvd25sb2FkUmVz
cG9uc2UoKTsKICAgICAgICAgbV9oZWFkZXJzUmVhZCA9IHRydWU7CiAgICAgfQogfQogCiB2b2lk
IFF0RmlsZURvd25sb2FkZXI6Om9uRmluaXNoZWQoKQogeworICAgIC8vIElmIGl0J3MgZmluaXNo
ZWQgYW5kIHdlIGhhdmVuJ3QgZXZlbiByZWFkIHRoZSBoZWFkZXJzLCBpdCBtZWFucyB3ZSBuZXZl
ciBnb3QgdG8gb25SZWFkeVJlYWQgYW5kIHRoYXQgd2UgYXJlCisgICAgLy8gcHJvYmFibHkgZGVh
bGluZyB3aXRoIHRoZSBkb3dubG9hZCBvZiBhIGxvY2FsIGZpbGUgb3Igb2YgYSBzbWFsbCBmaWxl
IHRoYXQgd2FzIHN0YXJ0ZWQgd2l0aCBhIGhhbmRsZS4KKyAgICBpZiAoIW1faGVhZGVyc1JlYWQp
IHsKKyAgICAgICAgaGFuZGxlRG93bmxvYWRSZXNwb25zZSgpOworICAgICAgICBtX2hlYWRlcnNS
ZWFkID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmICghbV9kZXN0aW5h
dGlvbkZpbGUpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjIzLDYgKzIyOCw4IEBAIHZvaWQgUXRG
aWxlRG93bmxvYWRlcjo6b25GaW5pc2hlZCgpCiAKICAgICBpZiAobV9lcnJvciA9PSBRTmV0d29y
a1JlcGx5OjpOb0Vycm9yKQogICAgICAgICBtX2Rvd25sb2FkLT5kaWRGaW5pc2goKTsKKyAgICBl
bHNlIGlmICAobV9lcnJvciA9PSBRTmV0d29ya1JlcGx5OjpPcGVyYXRpb25DYW5jZWxlZEVycm9y
KQorICAgICAgICBhYm9ydERvd25sb2FkV3JpdGluZ0FuZEVtaXRFcnJvcihRdEZpbGVEb3dubG9h
ZGVyOjpEb3dubG9hZEVycm9yQ2FuY2VsbGVkKTsKICAgICBlbHNlCiAgICAgICAgIGFib3J0RG93
bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKFF0RmlsZURvd25sb2FkZXI6OkRvd25sb2FkRXJyb3JO
ZXR3b3JrRmFpbHVyZSk7CiB9CkBAIC0yMzUsNiArMjQyLDcgQEAgdm9pZCBRdEZpbGVEb3dubG9h
ZGVyOjpvbkVycm9yKFFOZXR3b3JrUmVwbHk6Ok5ldHdvcmtFcnJvciBjb2RlKQogdm9pZCBRdEZp
bGVEb3dubG9hZGVyOjpjYW5jZWwoKQogewogICAgIG1fcmVwbHktPmFib3J0KCk7CisgICAgLy8g
UXRGaWxlRG93bmxvYWRlcjo6b25GaW5pc2hlZCgpIHdpbGwgYmUgY2FsbGVkIGFuZCB3aWxsIHJh
aXNlIGEgRG93bmxvYWRFcnJvckNhbmNlbGxlZC4KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZp
bGVEb3dubG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9R
dEZpbGVEb3dubG9hZGVyLmgKaW5kZXggYjZiOGJhMjhiZWE5ZjhhYjFkNjk0Yzg0MzM0MTQ0YTRh
MmM5ZDE1Yi4uMGFlMGZkODRhNjljN2RlYzFmMmE0MDg2OTJhZTZiOTZiYjliMmU2MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvUXRGaWxlRG93bmxv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L1F0Rmls
ZURvd25sb2FkZXIuaApAQCAtNDQsMTYgKzQ0LDE2IEBAIGNsYXNzIFF0RmlsZURvd25sb2FkZXIg
OiBwdWJsaWMgUU9iamVjdCB7CiBwdWJsaWM6CiAgICAgUXRGaWxlRG93bmxvYWRlcihEb3dubG9h
ZCosIFBhc3NPd25QdHI8UU5ldHdvcmtSZXBseT4pOwogICAgIHZpcnR1YWwgflF0RmlsZURvd25s
b2FkZXIoKTsKLSAgICB2b2lkIGRlY2lkZWREZXN0aW5hdGlvbihjb25zdCBRU3RyaW5nJiBkZWNp
ZGVkRmlsZVBhdGgsIGJvb2wgYWxsb3dPdmVyd3JpdGUpOwogICAgIHZvaWQgY2FuY2VsKCk7Ci0g
ICAgdm9pZCBzdGFydCgpOworICAgIHZvaWQgaW5pdCgpOworICAgIHZvaWQgc3RhcnRUcmFuc2Zl
cihjb25zdCBRU3RyaW5nJiBkZXN0aW5hdGlvbik7CiAKICAgICBlbnVtIERvd25sb2FkRXJyb3Ig
ewogICAgICAgICBEb3dubG9hZEVycm9yQWJvcnRlZCA9IDAsCiAgICAgICAgIERvd25sb2FkRXJy
b3JDYW5ub3RXcml0ZVRvRmlsZSwKICAgICAgICAgRG93bmxvYWRFcnJvckNhbm5vdE9wZW5GaWxl
LAotICAgICAgICBEb3dubG9hZEVycm9yRmlsZUFscmVhZHlFeGlzdHMsCi0gICAgICAgIERvd25s
b2FkRXJyb3JDYW5jZWxsZWRCeUNhbGxlciwKKyAgICAgICAgRG93bmxvYWRFcnJvckRlc3RpbmF0
aW9uQWxyZWFkeUV4aXN0cywKKyAgICAgICAgRG93bmxvYWRFcnJvckNhbmNlbGxlZCwKICAgICAg
ICAgRG93bmxvYWRFcnJvckNhbm5vdERldGVybWluZUZpbGVuYW1lLAogICAgICAgICBEb3dubG9h
ZEVycm9yTmV0d29ya0ZhaWx1cmUKICAgICB9OwpAQCAtNjUsNyArNjUsOCBAQCBwcml2YXRlIHNs
b3RzOgogCiBwcml2YXRlOgogICAgIHZvaWQgYWJvcnREb3dubG9hZFdyaXRpbmdBbmRFbWl0RXJy
b3IoUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvcik7Ci0gICAgdm9pZCBkZXRlcm1pbmVG
aWxlbmFtZSgpOworICAgIFFTdHJpbmcgZGV0ZXJtaW5lRmlsZW5hbWUoKTsKKyAgICB2b2lkIGhh
bmRsZURvd25sb2FkUmVzcG9uc2UoKTsKIAogICAgIERvd25sb2FkKiBtX2Rvd25sb2FkOwogICAg
IE93blB0cjxRTmV0d29ya1JlcGx5PiBtX3JlcGx5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAKaW5kZXggZThhYTdhZGE0YjZlNWU2YWYxNmE0NzM4M2Y5MmM0MDdiMjg2
OGE1Zi4uYmQ2OWNhZDdlZGIwNWY1YmE5YTRhYmMwNTYzYTM3NjJhZjM3ZTU2OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC05NTcsNiArOTU3LDEzIEBAIHZv
aWQgV2ViUHJvY2Vzczo6Y2FuY2VsRG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCkKICAgICBE
b3dubG9hZE1hbmFnZXI6OnNoYXJlZCgpLmNhbmNlbERvd25sb2FkKGRvd25sb2FkSUQpOwogfQog
CisjaWYgUExBVEZPUk0oUVQpCit2b2lkIFdlYlByb2Nlc3M6OnN0YXJ0VHJhbnNmZXIodWludDY0
X3QgZG93bmxvYWRJRCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbikKK3sKKyAgICBEb3dubG9h
ZE1hbmFnZXI6OnNoYXJlZCgpLnN0YXJ0VHJhbnNmZXIoZG93bmxvYWRJRCwgZGVzdGluYXRpb24p
OworfQorI2VuZGlmCisKIHZvaWQgV2ViUHJvY2Vzczo6c2V0RW5oYW5jZWRBY2Nlc3NpYmlsaXR5
KGJvb2wgZmxhZykKIHsKICAgICBXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpzZXRFbmhhbmNlZFVz
ZXJJbnRlcmZhY2VBY2Nlc3NpYmlsaXR5KGZsYWcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaAppbmRleCAwZDVkNzRhOWMxYzE0OTEyZDIzNmRkMzg0ZjY1MzYwMzFiNDE0MTMy
Li4zOWY4YTVmMGNlODhjMDgwM2ZiMjk2NjkwYTZjZjc0ZTYxZTYyZDJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMTc1LDYgKzE3NSw5IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIGRvd25sb2FkUmVxdWVzdCh1aW50NjRfdCBkb3dubG9hZElELCB1aW50NjRfdCBp
bml0aWF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2
b2lkIGNhbmNlbERvd25sb2FkKHVpbnQ2NF90IGRvd25sb2FkSUQpOworI2lmIFBMQVRGT1JNKFFU
KQorICAgIHZvaWQgc3RhcnRUcmFuc2Zlcih1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBTdHJp
bmcmIGRlc3RpbmF0aW9uKTsKKyNlbmRpZgogCiAgICAgdm9pZCBzZXRUZXh0Q2hlY2tlclN0YXRl
KGNvbnN0IFRleHRDaGVja2VyU3RhdGUmKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA0NGY0NDE5YTA3ODdmYzc3NTlj
YzUyYjNlNTQ0MzVmNzk1ZmMzOGY4Li5mOTE5NmFlMmE5OGQxN2I2ODNhZDQ3NjBjMGI1ZjQ5N2Ex
NWVmYzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCkBAIC02NCw2ICs2NCw5IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgewogICAg
ICMgdHdvIG1lc3NhZ2VzLgogICAgIERvd25sb2FkUmVxdWVzdCh1aW50NjRfdCBkb3dubG9hZElE
LCB1aW50NjRfdCBpbml0aWF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVx
dWVzdCkKICAgICBDYW5jZWxEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElEKQorI2lmIFBMQVRG
T1JNKFFUKQorICAgIFN0YXJ0VHJhbnNmZXIodWludDY0X3QgZG93bmxvYWRJRCwgV1RGOjpTdHJp
bmcgZGVzdGluYXRpb24pCisjZW5kaWYKIAogICAgIFNldFRleHRDaGVja2VyU3RhdGUoV2ViS2l0
OjpUZXh0Q2hlY2tlclN0YXRlIHRleHRDaGVja2VyU3RhdGUpCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113463</attachid>
            <date>2011-11-03 05:08:34 -0700</date>
            <delta_ts>2011-11-03 05:15:19 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-68962-20111103140800.patch</filename>
            <type>text/plain</type>
            <size>63708</size>
            <attacher name="Jesus Sanchez-Palencia">jesus</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkxNjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggODEzNTU4NGJiOGRi
NTMwZDA1ZmE3MmJlOGJjMWI2OWU2Y2QyZDllNS4uYzY3OTI5YjA0NmIzYjFkYmQ2NmQ3ODhiZDUw
M2YxNDc3Y2U5NTRmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0xMS0w
MiAgSmVzdXMgU2FuY2hlei1QYWxlbmNpYSAgPGplc3VzLnBhbGVuY2lhQG9wZW5ib3NzYS5vcmc+
CisKKyAgICAgICAgW1F0XVtXSzJdIERvd25sb2FkIHN1cHBvcnQgYW5kIEFQSSBpbiBVSVByb2Nl
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4OTYy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVnaXN0
ZXJpbmcgbmV3IHFtbCB0eXBlIFFXZWJEb3dubG9hZEl0ZW0uCisKKyAgICAgICAgKiBkZWNsYXJh
dGl2ZS9wbHVnaW4uY3BwOgorICAgICAgICAoV2ViS2l0UW1sUGx1Z2luOjpyZWdpc3RlclR5cGVz
KToKKwogMjAxMS0xMS0wMiAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CiAKICAgICAgICAg
RXhwYW5kIERyYWdDb250cm9sbGVyIHRvIHByb3ZpZGUgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0
aGUgZHJhZ2dpbmcgc2Vzc2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDQ1YWQyMWM3NTY5YWY3ODQ5ZDcyYzgz
YWE4NGYzZDhiYzY3ZjNhMjIuLjFlM2QxMjA2NjFkMjVkMDljYWRmNzk0YjY3M2UxMzg3OGViY2Uw
NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNDggQEAKKzIwMTEtMTEtMDIgIEplc3VzIFNhbmNo
ZXotUGFsZW5jaWEgIDxqZXN1cy5wYWxlbmNpYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFtR
dF1bV0syXSBEb3dubG9hZCBzdXBwb3J0IGFuZCBBUEkgaW4gVUlQcm9jZXNzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODk2MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGltcGxlbWVudCBvdXIgV2tD
b250ZXh0RG93bmxvYWRDbGllbnQgYW5kIHRoZSBuZWVkZWQgY2FsbGJhY2tzLgorICAgICAgICBX
ZSBhbHNvIGFkZCBBUElzIGJ5IGV4cG9zaW5nIFFXZWJEb3dubG9hZEl0ZW0uIE9iamVjdHMgZnJv
bSB0aGlzIHR5cGUKKyAgICAgICAgaGF2ZSB0aGVpciBvd25lcnNoaXAgaGFuZGxlZCBieSBRRGVz
a3RvcFdlYlZpZXcgYW5kIHdpbGwgYmUgY3JlYXRlZCBvcgorICAgICAgICBkZXN0cm95ZWQgYXMg
bmVlZGVkLiBDbGFzc2VzIGltcGxlbWVudGluZyBWaWV3SW50ZXJmYWNlIChRRGVza3RvcFdlYlZp
ZXdQcml2YXRlCisgICAgICAgIGFuZCBUb3VjaFZpZXdJbnRlcmZhY2UpIHdpbGwgcmVjZWl2ZSBh
IHNpZ25hbCAoZG93bmxvYWRSZXF1ZXN0ZWQpIHdpdGggYSBwb2ludGVyCisgICAgICAgIHRvIHRo
ZSByZWNlbnRseSBjcmVhdGVkIFFXZWJEb3dubG9hZEl0ZW0uIFdpdGggdGhhdCB0aGV5IGNhbiBj
b25uZWN0IHRoZSBwcm9wZXIKKyAgICAgICAgc2lnbmFscyBhbmQgc2xvdHMsIHNldCB0aGUgZG93
bmxvYWQgZGVzdGluYXRpb24gcGF0aCBhbmQgdGhlbiBjYWxsIHN0YXJ0KCkuCisgICAgICAgIE9i
amVjdHMgb2YgdGhpcyB0eXBlIHdpbGwgcHJvdmlkZSB0aGUgcHJvZ3Jlc3Mgb2YgYSBkb3dubG9h
ZCwgYSBzbG90IHRvIGNhbmNlbCBpdCwKKyAgICAgICAgYW5kIHNpZ25hbHMgZm9yIGdldHRpbmcg
ZmluaXNoZWQgb3IgZmFpbHVyZSBzdGF0dXMuCisgICAgICAgIFFXZWJEb3dubG9hZEl0ZW0gd2Fz
IGFsc28gZXhwb3NlZCBpbiBRTUwuCisgICAgICAgIFF0IG5lZWRlZCBhbiBhc3luY2hyb25vdXMg
d2F5IGZvciBVSVByb2Nlc3MgdG8gcmV0dXJuIGEgZGVzdGluYXRpb24gcGF0aCB0byBXZWJQcm9j
ZXNzLAorICAgICAgICB0aGVyZWZvcmUgdGhlIHN0YXJ0VHJhbnNmZXIgQVBJIHdhcyBhZGRlZCB0
byBXZWJLaXQyJ3MgRG93bmxvYWQgaGFuZGxlcnMuCisKKyAgICAgICAgKiBTaGFyZWQvcXQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzUXQuY3BwOgorICAgICAgICAoQ29yZUlQQzo6OjplbmNvZGUpOgor
ICAgICAgICAoQ29yZUlQQzo6OjpkZWNvZGUpOgorICAgICAgICBBZGQgZW5jb2RpbmcgYW5kIGRl
Y29kaW5nIG9mIHN1Z2dlc3RlZEZpbGVuYW1lIGZvciBSZXNvdXJjZVJlc3BvbnNlLgorCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9xdC9XS1ZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L3F0L3FiYXNld2Vidmlldy5oOiBBZGQgc2lnbmFsIGRvd25sb2FkUmVxdWVzdGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFEZXNr
dG9wV2ViVmlld1ByaXZhdGU6OmRvd25sb2FkUmVxdWVzdGVkKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlld19wLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L3F0L3F3ZWJkb3dubG9hZGl0ZW0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFFXZWJEb3dubG9hZEl0
ZW1Qcml2YXRlOjpRV2ViRG93bmxvYWRJdGVtUHJpdmF0ZSk6CisgICAgICAgIChRV2ViRG93bmxv
YWRJdGVtOjpRV2ViRG93bmxvYWRJdGVtKToKKyAgICAgICAgKFFXZWJEb3dubG9hZEl0ZW06On5R
V2ViRG93bmxvYWRJdGVtKToKKyAgICAgICAgKFFXZWJEb3dubG9hZEl0ZW06OnVybCk6CisgICAg
ICAgIChRV2ViRG93bmxvYWRJdGVtOjpkZXN0aW5hdGlvblBhdGgpOgorICAgICAgICAoUVdlYkRv
d25sb2FkSXRlbTo6c2V0RGVzdGluYXRpb25QYXRoKToKKyAgICAgICAgKFFXZWJEb3dubG9hZEl0
ZW06OnN1Z2dlc3RlZEZpbGVuYW1lKToKKyAgICAgICAgKFFXZWJEb3dubG9hZEl0ZW06Om1pbWVU
eXBlKToKKyAgICAgICAgKFFXZWJEb3dubG9hZEl0ZW06OmV4cGVjdGVkQ29udGVudExlbmd0aCk6
CisgICAgICAgIChRV2ViRG93bmxvYWRJdGVtOjp0b3RhbEJ5dGVzUmVjZWl2ZWQpOgorICAgICAg
ICAoUVdlYkRvd25sb2FkSXRlbTo6Y2FuY2VsKToKKyAgICAgICAgKFFXZWJEb3dubG9hZEl0ZW06
OnN0YXJ0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F3ZWJkb3dubG9hZGl0ZW0uaDog
QWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxvYWRpdGVtX3AuaDog
QWRkZWQuCisgICAgICAgIChRV2ViRG93bmxvYWRJdGVtUHJpdmF0ZTo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvRGVza3Rv
cFdlYlZpZXcvdHN0X2Rvd25sb2FkLnFtbDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21tb24vZG93bmxvYWQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21tb24vZG93bmxvYWQuemlwOiBB
ZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL3FtbHRlc3Rz
LnBybzoKKworICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OnN0YXJ0VHJhbnNmZXIpOiBRdCBvbmx5
IGZ1bmN0aW9uIGFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQ
cm94eS5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDogQWRkZWQgUXQgc3Bl
Y2lmaWMgZnVuY3Rpb24gdG8gY2FsbCBoYW5kbGVEb3dubG9hZFJlcXVlc3QgZnJvbSBRdFdlYlBh
Z2VQcm94eS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29udGV4dDo6ZG93bmxvYWQpOgorICAgICAgICBVc2luZyBXZWJQYWdlUHJv
eHk6OmhhbmRsZURvd25sb2FkUmVxdWVzdCB0byBib290c3RyYXAgYSBkb3dubG9hZCB0aHJvdWdo
IFBhZ2VDbGllbnQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKToKKyAg
ICAgICAgVXNpbmcgaGFuZGxlRG93bmxvYWRSZXF1ZXN0KCkgdG8gYm9vdHN0cmFwIGEgZG93bmxv
YWQgdGhyb3VnaCBQYWdlQ2xpZW50LgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omhh
bmRsZURvd25sb2FkUmVxdWVzdCk6IENhbGxzIFBhZ2VDbGllbnQ6OmhhbmRsZURvd25sb2FkUmVx
dWVzdCgpLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKworICAgICAgICAq
IFVJUHJvY2Vzcy9xdC9RdERvd25sb2FkTWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0Ojp0b1F0RG93bmxvYWRNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6cXRfd2tfZGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6cXRfd2tfZGlkQ3JlYXRlRGVzdGluYXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpxdF93a19kaWRGaW5pc2hEb3dubG9hZCk6CisgICAgICAg
IChXZWJLaXQ6OnF0X3drX2RpZEZhaWxEb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OnF0X3dr
X2RpZFJlY2VpdmVEYXRhRm9yRG93bmxvYWQpOgorICAgICAgICAoUXREb3dubG9hZE1hbmFnZXI6
OmRvd25sb2FkUmVjZWl2ZWRSZXNwb25zZSk6IFdpbGwgcmVhY2ggUXRXZWJQYWdlUHJveHk6OmRp
ZFJlY2VpdmVEb3dubG9hZFJlc3BvbnNlLgorICAgICAgICAoUXREb3dubG9hZE1hbmFnZXI6OmRv
d25sb2FkQ3JlYXRlZERlc3RpbmF0aW9uKToKKyAgICAgICAgKFF0RG93bmxvYWRNYW5hZ2VyOjpk
b3dubG9hZEZpbmlzaGVkKToKKyAgICAgICAgKFF0RG93bmxvYWRNYW5hZ2VyOjpkb3dubG9hZEZh
aWxlZCk6CisgICAgICAgIChRdERvd25sb2FkTWFuYWdlcjo6ZG93bmxvYWREYXRhUmVjZWl2ZWQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdERvd25sb2FkTWFuYWdlci5oOiBBZGRlZC4KKyAg
ICAgICAgQm9vdHN0cmFwIG91ciBXS0NvbnRleHREb3dubG9hZENsaWVudCBhbmQgc2V0IGl0cyBj
YWxsYmFja3MuCisgICAgICAgIFRoaXMgZW50aXR5IHdpbGwgYWxzbyBoYW5kbGUgYWxsIGRvd25s
b2FkcyBhbmQga2VlcCBhIG1hcCBvZiB0aGVtLgorICAgICAgICBJdCB3aWxsIGJlIGtlcHQgYWxp
dmUgdG9nZXRoZXIgd2l0aCB0aGUgV2ViQ29udGV4dCBhcyBhIHN0YXRpYyBtZW1iZXIKKyAgICAg
ICAgb2YgUXRXZWJQYWdlUHJveHksIHNvIHdlIGNhbiBrZWVwIGl0IGFjcm9zcyBzZXZlcmFsIFdl
YlBhZ2VzIGFuZCwgdGhlcmVmb3JlLAorICAgICAgICBXZWJWaWV3cy4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChRdFdlYlBhZ2VQcm94eTo6
ZGVmYXVsdFdLQ29udGV4dCk6CisgICAgICAgIChRdFdlYlBhZ2VQcm94eTo6flF0V2ViUGFnZVBy
b3h5KToKKyAgICAgICAgKFF0V2ViUGFnZVByb3h5OjpoYW5kbGVEb3dubG9hZFJlcXVlc3QpOgor
ICAgICAgICAoUXRXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVEb3dubG9hZFJlc3BvbnNlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaDoKKyAgICAgICAgRnJvbSBub3cg
b24gaXQgd2lsbCBrZWVwIGEgc3RhdGljIFF0RG93bmxvYWRNYW5hZ2VyIHRvIGxpdmUgdG9nZXRo
ZXIKKyAgICAgICAgd2l0aCB0aGUgZGVmYXVsdCBXZWJDb250ZXh0LiBJdCBpbXBsZW1lbnRzIFBh
Z2VDbGllbnQ6OmhhbmRsZURvd25sb2FkUmVxdWVzdC4KKyAgICAgICAgUXRXZWJQYWdlUHJveHk6
OmRpZFJlY2VpdmVEb3dubG9hZFJlc3BvbnNlIHdpbGwgZW1pdCB0aGUgdmlldydzIHNpZ25hbCBk
b3dubG9hZFJlcXVlc3RlZC4KKworICAgICAgICogVUlQcm9jZXNzL3F0L1F0VG91Y2hWaWV3SW50
ZXJmYWNlLmg6CisgICAgICAgIChXZWJLaXQ6OlF0VG91Y2hWaWV3SW50ZXJmYWNlOjpkb3dubG9h
ZFJlcXVlc3RlZCk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0Vmlld0ludGVyZmFjZS5oOgor
CisgICAgICAgICogVUlQcm9jZXNzL3F0L3F3ZWJlcnJvci5jcHA6CisgICAgICAgIChRV2ViRXJy
b3I6OmRlc2NyaXB0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvcXdlYmVycm9yLmg6Cisg
ICAgICAgIChRV2ViRXJyb3I6OmVycm9yQ29kZUFzRG93bmxvYWRFcnJvcik6CisgICAgICAgIEFk
ZCBEb3dubG9hZCBlcnJvciBoYW5kbGluZyB0byBRV2ViRXJyb3IgYW5kIGEgbmV3IEFQSQorICAg
ICAgICB0byByZXRyaWV2ZSB0aGUgZXJyb3IgZGVzY3JpcHRpb24gZnJvbSB0aGUgb3JpZ2luYWwg
UmVzb3VyY2VFcnJvci4KKyAgICAgICAgQWxzbywgaXQgbm93IGhhcyBRV2ViRG93bmxvYWRJdGVt
OjpEb3dubG9hZEVycm9yIGVycm9yQ29kZUFzRG93bmxvYWRFcnJvcigpCisgICAgICAgIHRoYXQg
cmV0dXJucyB0aGUgZXJyb3IgY29kZSBhcyBhIERvd25sb2FkRXJyb3IuCisKKyAgICAgICAgKiBX
ZWJLaXQyLnBybzoKKyAgICAgICAgKiBXZWJLaXQyQVBJLnByaToKKworICAgICAgICAqIFdlYlBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2Vy
OjpzdGFydFRyYW5zZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZE1hbmFnZXIuaDoKKyAgICAgICAgQWRkaW5nIFF0IHNwZWNpZmljIHN0YXJ0VHJhbnNmZXIgZnVu
Y3Rpb24uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9Eb3dubG9hZFF0LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6
RG93bmxvYWQ6OnN0YXJ0V2l0aEhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpk
aWREZWNpZGVEZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpzdGFydFRy
YW5zZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3dubG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UXRGaWxlRG93bmxvYWRlcjo6aW5pdCk6IHN0YXJ0
KCkgd2FzIHJlbmFtZWQgdG8gaW5pdCgpLgorICAgICAgICAoV2ViS2l0OjpRdEZpbGVEb3dubG9h
ZGVyOjpkZXRlcm1pbmVGaWxlbmFtZSk6CisgICAgICAgIENhbGxpbmcgb25SZWFkeVJlYWQoKSBo
ZXJlIHdhcyB1bm5lY2Vzc2FyeSBhbmQgaXQgd2FzIHRyaWdnZXJpbmcgdGhlIG92ZXJhbGwKKyAg
ICAgICAgZG93bmxvYWQgcHJvY2VzcyBldmVuIGJlZm9yZSBEb3dubG9hZE1hbmFnZXIgZmluaXNo
ZWQgc3RhcnREb3dubG9hZCgpLiBUaGlzCisgICAgICAgIHdhcyBsZWFkaW5nIHRvIGEgRG93bmxv
YWRNYW5hZ2VyIHdpdGggYW4gZW1wdHkgbGlzdCBvZiBkb3dubG9hZHMuCisgICAgICAgIChXZWJL
aXQ6OlF0RmlsZURvd25sb2FkZXI6OnN0YXJ0VHJhbnNmZXIpOiBkZWNpZGVkRGVzdGluYXRpb24o
KSBiZWNhbWUgc3RhcnRUcmFuc2ZlcigpLgorICAgICAgICAoV2ViS2l0OjpRdEZpbGVEb3dubG9h
ZGVyOjphYm9ydERvd25sb2FkV3JpdGluZ0FuZEVtaXRFcnJvcik6CisgICAgICAgIChXZWJLaXQ6
OlF0RmlsZURvd25sb2FkZXI6OmhhbmRsZURvd25sb2FkUmVzcG9uc2UpOgorICAgICAgICAoV2Vi
S2l0OjpRdEZpbGVEb3dubG9hZGVyOjpvblJlYWR5UmVhZCk6CisgICAgICAgIChXZWJLaXQ6OlF0
RmlsZURvd25sb2FkZXI6Om9uRmluaXNoZWQpOgorICAgICAgICAoV2ViS2l0OjpRdEZpbGVEb3du
bG9hZGVyOjpjYW5jZWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvRG93bmxvYWRzL3F0L1F0Rmls
ZURvd25sb2FkZXIuaDoKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnN0YXJ0VHJhbnNmZXIpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgQWRkaW5nIFF0IHNwZWNpZmljIG1lc3NhZ2UgU3RhcnRUcmFu
c2ZlciBhbmQgaGFuZGxpbmcgZnVuY3Rpb24uCisKIDIwMTEtMTEtMDMgIFNpbW9uIEhhdXNtYW5u
ICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gW1dLMl0gTWluaUJy
b3dzZXIgYXNzZXJ0IGluIFF0V2ViUHJvY2Nlc3Mgb24gc3RhcnR1cCBpbiBkZWJ1ZyBidWlsZC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvZGVjbGFyYXRpdmUvcGx1Z2luLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvcXQvZGVjbGFyYXRpdmUvcGx1Z2luLmNwcAppbmRleCBjZjNiZGQ0YTEyZWI2
OTY1NzI0ZGI5YTY1ZWM3YTUzZWJlNjQ5YzU2Li5hNTFlZGJjNGQ4YzUyOTBlODU5ZjJhNDA3MmRk
ZmU2MjkzZDFjNGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L2RlY2xhcmF0aXZlL3Bs
dWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9kZWNsYXJhdGl2ZS9wbHVnaW4uY3BwCkBA
IC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAicWRlc2t0b3B3ZWJ2aWV3LmgiCiAjaW5jbHVkZSAi
cXRvdWNod2VicGFnZS5oIgogI2luY2x1ZGUgInF0b3VjaHdlYnZpZXcuaCIKKyNpbmNsdWRlICJx
d2ViZG93bmxvYWRpdGVtLmgiCiAjaW5jbHVkZSAicXdlYm5hdmlnYXRpb25jb250cm9sbGVyLmgi
CiAjaW5jbHVkZSAicXdlYnByZWZlcmVuY2VzLmgiCiAKQEAgLTU1LDYgKzU2LDcgQEAgcHVibGlj
OgogICAgICAgICBxbWxSZWdpc3RlclVuY3JlYXRhYmxlVHlwZTxRV2ViUHJlZmVyZW5jZXM+KHVy
aSwgMywgMCwgIldlYlByZWZlcmVuY2VzIiwgUU9iamVjdDo6dHIoIkNhbm5vdCBjcmVhdGUgc2Vw
YXJhdGUgaW5zdGFuY2Ugb2YgV2ViUHJlZmVyZW5jZXMiKSk7CiAgICAgICAgIHFtbFJlZ2lzdGVy
VW5jcmVhdGFibGVUeXBlPFFUb3VjaFdlYlBhZ2U+KHVyaSwgMywgMCwgIlRvdWNoV2ViUGFnZSIs
IFFPYmplY3Q6OnRyKCJDYW5ub3QgY3JlYXRlIHNlcGFyYXRlIGluc3RhbmNlIG9mIFRvdWNoV2Vi
UGFnZSwgdXNlIFRvdWNoV2ViVmlldyIpKTsKICAgICAgICAgcW1sUmVnaXN0ZXJVbmNyZWF0YWJs
ZVR5cGU8UU5ldHdvcmtSZXBseT4odXJpLCAzLCAwLCAiTmV0d29ya1JlcGx5IiwgUU9iamVjdDo6
dHIoIkNhbm5vdCBjcmVhdGUgc2VwYXJhdGUgaW5zdGFuY2Ugb2YgTmV0d29ya1JlcGx5IikpOwor
ICAgICAgICBxbWxSZWdpc3RlclVuY3JlYXRhYmxlVHlwZTxRV2ViRG93bmxvYWRJdGVtPih1cmks
IDUsIDAsICJEb3dubG9hZEl0ZW0iLCBRT2JqZWN0Ojp0cigiQ2Fubm90IGNyZWF0ZSBzZXBhcmF0
ZSBpbnN0YW5jZSBvZiBEb3dubG9hZEl0ZW0iKSk7CiAjZW5kaWYKICAgICB9CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1dlYkNvcmVBcmd1bWVudENvZGVyc1F0LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9XZWJDb3JlQXJndW1lbnRDb2RlcnNRdC5jcHAK
aW5kZXggMWZjMTVjNTk2ZjZmY2Y3ZDlmOGQzM2ZkZWViMzNjMWVlZTI4NmE3Yi4uOTUwZDM3MmQy
ZGRjN2U0NmY4MDc3ODM5NTBlMGMyODc2ZTM3ZGI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL3F0L1dlYkNvcmVBcmd1bWVudENvZGVyc1F0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvcXQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzUXQuY3BwCkBAIC02MSw2ICs2MSw3
IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlc3BvbnNlPjo6ZW5jb2RlKEFyZ3VtZW50
RW5jb2RlciogZW5jb2RlciwgY29uc3QgUmVzCiAgICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNl
UmVzcG9uc2UubWltZVR5cGUoKSk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PGlu
dDY0X3Q+KHJlc291cmNlUmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkpKTsKICAgICBl
bmNvZGVyLT5lbmNvZGUocmVzb3VyY2VSZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lKCkpOworICAg
IGVuY29kZXItPmVuY29kZShyZXNvdXJjZVJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lKCkpOwog
fQogCiBib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXNwb25zZT46OmRlY29kZShBcmd1bWVu
dERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlUmVzcG9uc2UmIHJlc291cmNlUmVzcG9uc2UpCkBA
IC04Nyw2ICs4OCwxMSBAQCBib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXNwb25zZT46OmRl
Y29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlUgogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgcmVzcG9uc2Uuc2V0VGV4dEVuY29kaW5nTmFtZSh0ZXh0RW5jb2RpbmdOYW1l
KTsKIAorICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZTsKKyAgICBpZiAoIWRlY29kZXItPmRl
Y29kZShzdWdnZXN0ZWRGaWxlbmFtZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXNw
b25zZS5zZXRTdWdnZXN0ZWRGaWxlbmFtZShzdWdnZXN0ZWRGaWxlbmFtZSk7CisKICAgICByZXNv
dXJjZVJlc3BvbnNlID0gcmVzcG9uc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L1dLVmlldy5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9XS1ZpZXcuaAppbmRleCAzMWY2NzI2ZjkzNmM2YzdjMjMxYzRl
NmE3NWY1MWFmMzBiMjA2NjZhLi44MmRlYTQ3ZjVmNmI5Yzg0NzEwYmVjNmI2MDc3NDNjZmZmODIw
YTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L1dLVmlldy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvV0tWaWV3LmgKQEAgLTIzLDYg
KzIzLDcgQEAKICNpbmNsdWRlIDxXZWJLaXQyL3FkZXNrdG9wd2Vidmlldy5oPgogI2luY2x1ZGUg
PFdlYktpdDIvcXRvdWNod2Vidmlldy5oPgogI2luY2x1ZGUgPFdlYktpdDIvcXRvdWNod2VicGFn
ZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvcXdlYmRvd25sb2FkaXRlbS5oPgogI2luY2x1ZGUgPFdl
YktpdDIvcXdlYm5hdmlnYXRpb25jb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9xd2Vi
cHJlZmVyZW5jZXMuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xYmFzZXdlYnZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWJh
c2V3ZWJ2aWV3LmgKaW5kZXggZGE3NmUzODhlNDJkMGFlODNjMzBlOGM0MTU5N2ZiNGJiODUwNzZl
Ny4uMDVjZjU1MDEwOGUzMTBiNjE4MGZiNzViNzNmNDNmMTY5NjVhN2IyZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xYmFzZXdlYnZpZXcuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FiYXNld2Vidmlldy5oCkBAIC0yNSw2ICsyNSw3
IEBACiAjaW5jbHVkZSA8UXREZWNsYXJhdGl2ZS9xcXVpY2twYWludGVkaXRlbS5oPgogCiBjbGFz
cyBRQmFzZVdlYlZpZXdQcml2YXRlOworY2xhc3MgUVdlYkRvd25sb2FkSXRlbTsKIGNsYXNzIFFX
ZWJOYXZpZ2F0aW9uQ29udHJvbGxlcjsKIGNsYXNzIFFXZWJQcmVmZXJlbmNlczsKIApAQCAtNTIs
NyArNTMsOCBAQCBwdWJsaWM6CiAgICAgZW51bSBFcnJvclR5cGUgewogICAgICAgICBFbmdpbmVF
cnJvciwKICAgICAgICAgTmV0d29ya0Vycm9yLAotICAgICAgICBIdHRwRXJyb3IKKyAgICAgICAg
SHR0cEVycm9yLAorICAgICAgICBEb3dubG9hZEVycm9yCiAgICAgfTsKICAgICB2aXJ0dWFsIH5R
QmFzZVdlYlZpZXcoKTsKIApAQCAtNzksNiArODEsNyBAQCBRX1NJR05BTFM6CiAgICAgdm9pZCBs
b2FkUHJvZ3Jlc3NDaGFuZ2VkKGludCBwcm9ncmVzcyk7CiAgICAgdm9pZCB1cmxDaGFuZ2VkKGNv
bnN0IFFVcmwmIHVybCk7CiAgICAgdm9pZCBtZXNzYWdlUmVjZWl2ZWQoY29uc3QgUVZhcmlhbnRN
YXAmIG1lc3NhZ2UpOworICAgIHZvaWQgZG93bmxvYWRSZXF1ZXN0ZWQoUVdlYkRvd25sb2FkSXRl
bSogZG93bmxvYWRJdGVtKTsKIAogcHJvdGVjdGVkOgogICAgIFFCYXNlV2ViVmlldyhRQmFzZVdl
YlZpZXdQcml2YXRlICZkZCwgUVF1aWNrSXRlbSAqcGFyZW50ID0gMCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHAKaW5kZXggOGIw
ODU1YzAzMWE5NTEwMzVlZjM3Mjg3NWQ1YTY2MWU2ZGJhNmNhNC4uODA5YTU5MTU4YzZmMDM3NjJk
NWI1NmMwYWNlMDJlMGViNzJmMWFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcApAQCAtMjUsMTEgKzI1LDEzIEBACiAjaW5j
bHVkZSAiUXRXZWJFcnJvci5oIgogI2luY2x1ZGUgIlV0aWxzUXQuaCIKICNpbmNsdWRlICJxZGVz
a3RvcHdlYnZpZXdfcC5oIgorI2luY2x1ZGUgInF3ZWJkb3dubG9hZGl0ZW0uaCIKICNpbmNsdWRl
IDxRRmlsZURpYWxvZz4KICNpbmNsdWRlIDxRdERlY2xhcmF0aXZlL3FkZWNsYXJhdGl2ZWVuZ2lu
ZS5oPgogI2luY2x1ZGUgPFF0RGVjbGFyYXRpdmUvcXF1aWNrY2FudmFzLmg+CiAjaW5jbHVkZSA8
UXREZWNsYXJhdGl2ZS9xcXVpY2t2aWV3Lmg+CiAjaW5jbHVkZSA8UXRHdWkvUUN1cnNvcj4KKyNp
bmNsdWRlIDxRdEd1aS9RRGVza3RvcFNlcnZpY2VzPgogI2luY2x1ZGUgPFF0R3VpL1FEcmFnPgog
I2luY2x1ZGUgPFF0R3VpL1FGb2N1c0V2ZW50PgogI2luY2x1ZGUgPFF0R3VpL1FHdWlBcHBsaWNh
dGlvbj4KQEAgLTQ5Nyw2ICs0OTksMTcgQEAgdm9pZCBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpk
aWRNb3VzZU1vdmVPdmVyRWxlbWVudChjb25zdCBRVXJsJiBsaW5rVVJMLCBjb25zdAogICAgIGVt
aXQgcS0+bGlua0hvdmVyZWQobGFzdEhvdmVyZWRVUkwsIGxhc3RIb3ZlcmVkVGl0bGUpOwogfQog
Cit2b2lkIFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OmRvd25sb2FkUmVxdWVzdGVkKFFXZWJEb3du
bG9hZEl0ZW0qIGRvd25sb2FkSXRlbSkKK3sKKyAgICBpZiAoIWRvd25sb2FkSXRlbSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgUV9RKFFEZXNrdG9wV2ViVmlldyk7CisKKyAgICBRRGVjbGFyYXRp
dmVFbmdpbmU6OnNldE9iamVjdE93bmVyc2hpcChkb3dubG9hZEl0ZW0sIFFEZWNsYXJhdGl2ZUVu
Z2luZTo6SmF2YVNjcmlwdE93bmVyc2hpcCk7CisgICAgZW1pdCBxLT5kb3dubG9hZFJlcXVlc3Rl
ZChkb3dubG9hZEl0ZW0pOworfQorCiBzdGF0aWMgUXRQb2xpY3lJbnRlcmZhY2U6OlBvbGljeUFj
dGlvbiB0b1BvbGljeUFjdGlvbihRRGVza3RvcFdlYlZpZXc6Ok5hdmlnYXRpb25Qb2xpY3kgcG9s
aWN5KQogewogICAgIHN3aXRjaCAocG9saWN5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlld19wLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlld19wLmgKaW5kZXggY2JmOTNkNjFkYjAxMWY1
NjcyN2U0NjczMzk2NDQyZDA1NWRmYTcwMC4uMjUyZTZjMzA0NzVjMzhjOTNiNmM2OWU1MDhiOTUz
ZGExZWExY2JkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
ZGVza3RvcHdlYnZpZXdfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cWRlc2t0b3B3ZWJ2aWV3X3AuaApAQCAtODQsNiArODQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgUUpTRW5naW5lKiBlbmdpbmUoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBjaG9vc2VGaWxlcyhX
S09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmLCBjb25zdCBRU3RyaW5nTGlzdCYgc2VsZWN0ZWRG
aWxlTmFtZXMsIFF0Vmlld0ludGVyZmFjZTo6RmlsZUNob29zZXJUeXBlKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZG93bmxvYWRSZXF1ZXN0ZWQoUVdlYkRvd25sb2FkSXRlbSogZG93bmxvYWRJdGVtKTsK
IAogICAgIHZpcnR1YWwgdm9pZCBkaWRNb3VzZU1vdmVPdmVyRWxlbWVudChjb25zdCBRVXJsJiwg
Y29uc3QgUVN0cmluZyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3F3ZWJkb3dubG9hZGl0ZW0uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xd2ViZG93bmxvYWRpdGVtLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NTkwYjc0OGNkMDg5MzUzMjVk
ZDUwNDg1ZmJlNzhkNTg5MzkxOTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxvYWRpdGVtLmNwcApAQCAtMCwwICsxLDk2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKQorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgInF3ZWJkb3du
bG9hZGl0ZW0uaCIKKworI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKKyNpbmNsdWRlICJxd2Vi
ZG93bmxvYWRpdGVtX3AuaCIKKworUVdlYkRvd25sb2FkSXRlbVByaXZhdGU6OlFXZWJEb3dubG9h
ZEl0ZW1Qcml2YXRlKFFXZWJEb3dubG9hZEl0ZW0qIHFxKQorICAgIDogcShxcSkKKyAgICAsIGRv
d25sb2FkUHJveHkoMCkKKyAgICAsIGV4cGVjdGVkQ29udGVudExlbmd0aCgwKQorICAgICwgdG90
YWxCeXRlc1JlY2VpdmVkKDApCit7Cit9CisKK1FXZWJEb3dubG9hZEl0ZW06OlFXZWJEb3dubG9h
ZEl0ZW0oUU9iamVjdCogcGFyZW50KQorICAgIDogUU9iamVjdChwYXJlbnQpCisgICAgLCBkKG5l
dyBRV2ViRG93bmxvYWRJdGVtUHJpdmF0ZSh0aGlzKSkKK3sKK30KKworUVdlYkRvd25sb2FkSXRl
bTo6flFXZWJEb3dubG9hZEl0ZW0oKQoreworICAgIGRlbGV0ZSBkOworfQorCitRVXJsIFFXZWJE
b3dubG9hZEl0ZW06OnVybCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPnNvdXJjZVVybDsKK30K
KworUVN0cmluZyBRV2ViRG93bmxvYWRJdGVtOjpkZXN0aW5hdGlvblBhdGgoKSBjb25zdAorewor
ICAgIHJldHVybiBkLT5kZXN0aW5hdGlvblBhdGg7Cit9CisKK3ZvaWQgUVdlYkRvd25sb2FkSXRl
bTo6c2V0RGVzdGluYXRpb25QYXRoKGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uKQoreworICAg
IGQtPmRlc3RpbmF0aW9uUGF0aCA9IGRlc3RpbmF0aW9uOworfQorCitRU3RyaW5nIFFXZWJEb3du
bG9hZEl0ZW06OnN1Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZC0+c3Vn
Z2VzdGVkRmlsZW5hbWU7Cit9CisKK1FTdHJpbmcgUVdlYkRvd25sb2FkSXRlbTo6bWltZVR5cGUo
KSBjb25zdAoreworICAgIHJldHVybiBkLT5taW1lVHlwZTsKK30KKworcXVpbnQ2NCBRV2ViRG93
bmxvYWRJdGVtOjpleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBk
LT5leHBlY3RlZENvbnRlbnRMZW5ndGg7Cit9CisKK3F1aW50NjQgUVdlYkRvd25sb2FkSXRlbTo6
dG90YWxCeXRlc1JlY2VpdmVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZC0+dG90YWxCeXRlc1Jl
Y2VpdmVkOworfQorCit2b2lkIFFXZWJEb3dubG9hZEl0ZW06OmNhbmNlbCgpCit7CisgICAgQVNT
RVJUKGQtPmRvd25sb2FkUHJveHkpOworICAgIGQtPmRvd25sb2FkUHJveHktPmNhbmNlbCgpOwor
fQorCit2b2lkIFFXZWJEb3dubG9hZEl0ZW06OnN0YXJ0KCkKK3sKKyAgICBBU1NFUlQoIWQtPnN1
Z2dlc3RlZEZpbGVuYW1lLmlzRW1wdHkoKSk7CisKKyAgICBpZiAoZC0+ZGVzdGluYXRpb25QYXRo
LmlzRW1wdHkoKSkKKyAgICAgICAgZC0+ZGVzdGluYXRpb25QYXRoID0gZC0+c3VnZ2VzdGVkRmls
ZW5hbWU7CisKKyAgICBkLT5kb3dubG9hZFByb3h5LT5zdGFydFRyYW5zZmVyKGQtPmRlc3RpbmF0
aW9uUGF0aCk7Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcXdlYmRvd25sb2FkaXRlbS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
d2ViZG93bmxvYWRpdGVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjQ0YzViMDgzODJiYmU4YmFjYTM5MjI0YWZm
OWZkODVkMGQ1Njg4NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXdlYmRvd25sb2FkaXRlbS5oCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoK
KyAqLworCisjaWZuZGVmIHF3ZWJkb3dubG9hZGl0ZW1faAorI2RlZmluZSBxd2ViZG93bmxvYWRp
dGVtX2gKKworI2luY2x1ZGUgInF3ZWJraXRnbG9iYWwuaCIKKyNpbmNsdWRlIDxRT2JqZWN0Pgor
I2luY2x1ZGUgPFFVcmw+CisKK2NsYXNzIFFXZWJEb3dubG9hZEl0ZW1Qcml2YXRlOworY2xhc3Mg
UXRXZWJFcnJvcjsKKworUVRfQkVHSU5fTkFNRVNQQUNFCitjbGFzcyBRU3RyaW5nOworUVRfRU5E
X05BTUVTUEFDRQorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFF0RG93bmxvYWRNYW5hZ2Vy
OworfQorCitjbGFzcyBRV0VCS0lUX0VYUE9SVCBRV2ViRG93bmxvYWRJdGVtIDogcHVibGljIFFP
YmplY3QgeworICAgIFFfT0JKRUNUCisgICAgUV9QUk9QRVJUWShxdWludDY0IGV4cGVjdGVkQ29u
dGVudExlbmd0aCBSRUFEIGV4cGVjdGVkQ29udGVudExlbmd0aCBDT05TVEFOVCBGSU5BTCkKKyAg
ICBRX1BST1BFUlRZKFFTdHJpbmcgZGVzdGluYXRpb25QYXRoIFJFQUQgZGVzdGluYXRpb25QYXRo
IFdSSVRFIHNldERlc3RpbmF0aW9uUGF0aCkKKyAgICBRX1BST1BFUlRZKFFTdHJpbmcgc3VnZ2Vz
dGVkRmlsZW5hbWUgUkVBRCBzdWdnZXN0ZWRGaWxlbmFtZSBDT05TVEFOVCBGSU5BTCkKKyAgICBR
X1BST1BFUlRZKHF1aW50NjQgdG90YWxCeXRlc1JlY2VpdmVkIFJFQUQgdG90YWxCeXRlc1JlY2Vp
dmVkIE5PVElGWSB0b3RhbEJ5dGVzUmVjZWl2ZWRDaGFuZ2VkIEZJTkFMKQorICAgIFFfUFJPUEVS
VFkoUVVybCB1cmwgUkVBRCB1cmwgQ09OU1RBTlQgRklOQUwpCisgICAgUV9FTlVNUyhEb3dubG9h
ZEVycm9yKQorcHVibGljOgorICAgIHZpcnR1YWwgflFXZWJEb3dubG9hZEl0ZW0oKTsKKworICAg
IGVudW0gRG93bmxvYWRFcnJvciB7CisgICAgICAgIEFib3J0ZWQgPSAwLAorICAgICAgICBDYW5u
b3RXcml0ZVRvRmlsZSwKKyAgICAgICAgQ2Fubm90T3BlbkZpbGUsCisgICAgICAgIERlc3RpbmF0
aW9uQWxyZWFkeUV4aXN0cywKKyAgICAgICAgQ2FuY2VsbGVkLAorICAgICAgICBDYW5ub3REZXRl
cm1pbmVGaWxlbmFtZSwKKyAgICAgICAgTmV0d29ya0ZhaWx1cmUKKyAgICB9OworCisgICAgUVVy
bCB1cmwoKSBjb25zdDsKKyAgICBRU3RyaW5nIGRlc3RpbmF0aW9uUGF0aCgpIGNvbnN0OworICAg
IFFTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25zdDsKKyAgICBRU3RyaW5nIG1pbWVUeXBl
KCkgY29uc3Q7CisgICAgcXVpbnQ2NCBleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBjb25zdDsKKyAg
ICBxdWludDY0IHRvdGFsQnl0ZXNSZWNlaXZlZCgpIGNvbnN0OworICAgIHZvaWQgc2V0RGVzdGlu
YXRpb25QYXRoKGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uKTsKKworcHVibGljIFFfU0xPVFM6
CisgICAgdm9pZCBzdGFydCgpOworICAgIHZvaWQgY2FuY2VsKCk7CisKK1FfU0lHTkFMUzoKKyAg
ICB2b2lkIGRlc3RpbmF0aW9uRmlsZUNyZWF0ZWQoY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb25Q
YXRoKTsKKyAgICB2b2lkIHRvdGFsQnl0ZXNSZWNlaXZlZENoYW5nZWQocXVpbnQ2NCBieXRlc1Jl
Y2VpdmVkKTsKKyAgICB2b2lkIHN1Y2NlZWRlZCgpOworICAgIHZvaWQgZmFpbGVkKFFXZWJEb3du
bG9hZEl0ZW06OkRvd25sb2FkRXJyb3IgZXJyb3IsIGNvbnN0IFFVcmwmIHVybCwgY29uc3QgUVN0
cmluZyYgZGVzY3JpcHRpb24pOworCitwcml2YXRlOgorICAgIFFXZWJEb3dubG9hZEl0ZW0oUU9i
amVjdCogcGFyZW50ID0gMCk7CisgICAgUVdlYkRvd25sb2FkSXRlbVByaXZhdGUqIGQ7CisKKyAg
ICBmcmllbmQgY2xhc3MgV2ViS2l0OjpRdERvd25sb2FkTWFuYWdlcjsKKyAgICBmcmllbmQgY2xh
c3MgUXRXZWJQYWdlUHJveHk7Cit9OworCisjZW5kaWYgLyogcXdlYmRvd25sb2FkaXRlbV9oICov
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJkb3dubG9h
ZGl0ZW1fcC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxvYWRp
dGVtX3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iYjhjMjUyYTc3N2Q3ZDgyNGRjOTI4ODlhZDkxYWZmMmFkYWEx
MGZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
d2ViZG93bmxvYWRpdGVtX3AuaApAQCAtMCwwICsxLDUzIEBACisvKgorICAgIENvcHlyaWdodCAo
QykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAg
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLwor
CisKKyNpZm5kZWYgcXdlYmRvd25sb2FkaXRlbV9wX2gKKyNkZWZpbmUgcXdlYmRvd25sb2FkaXRl
bV9wX2gKKworI2luY2x1ZGUgInF3ZWJkb3dubG9hZGl0ZW0uaCIKKyNpbmNsdWRlIDxRVXJsPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIERvd25sb2FkUHJveHk7Cit9CisKK2NsYXNzIFFX
ZWJEb3dubG9hZEl0ZW1Qcml2YXRlIDogcHVibGljIFFPYmplY3QgeworICAgIFFfT0JKRUNUCitw
dWJsaWM6CisgICAgUVdlYkRvd25sb2FkSXRlbVByaXZhdGUoUVdlYkRvd25sb2FkSXRlbSopOwor
CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUVdlYkRvd25sb2FkSXRlbSogZG93bmxvYWQp
IHsgZW1pdCByZWNlaXZlZFJlc3BvbnNlKGRvd25sb2FkKTsgfQorCisgICAgUVdlYkRvd25sb2Fk
SXRlbSogcTsKKworICAgIFdlYktpdDo6RG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eTsKKwor
ICAgIFFVcmwgc291cmNlVXJsOworICAgIFFTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWU7CisgICAg
UVN0cmluZyBkZXN0aW5hdGlvblBhdGg7CisgICAgUVN0cmluZyBtaW1lVHlwZTsKKyAgICBxdWlu
dDY0IGV4cGVjdGVkQ29udGVudExlbmd0aDsKKyAgICBxdWludDY0IHRvdGFsQnl0ZXNSZWNlaXZl
ZDsKKworUV9TSUdOQUxTOgorICAgIHZvaWQgcmVjZWl2ZWRSZXNwb25zZShRV2ViRG93bmxvYWRJ
dGVtKik7Cit9OworCisjZW5kaWYgLyogcXdlYmRvd25sb2FkaXRlbV9wX2ggKi8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvRGVza3Rv
cFdlYlZpZXcvdHN0X2Rvd25sb2FkLnFtbCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvdGVzdHMvcW1sdGVzdHMvRGVza3RvcFdlYlZpZXcvdHN0X2Rvd25sb2FkLnFtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lYjVjODU1YmNhNTA3MTFiNWRlYzE2Njc4OWY0MGE4ZGE4OTM1MzlkCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9E
ZXNrdG9wV2ViVmlldy90c3RfZG93bmxvYWQucW1sCkBAIC0wLDAgKzEsNzUgQEAKK2ltcG9ydCBR
dFF1aWNrIDIuMAoraW1wb3J0IFF0VGVzdCAxLjAKK2ltcG9ydCBRdFdlYktpdCAzLjAKKworRGVz
a3RvcFdlYlZpZXcgeworICAgIGlkOiB3ZWJWaWV3CisgICAgd2lkdGg6IDIwMAorICAgIGhlaWdo
dDogNDAwCisKKyAgICBwcm9wZXJ0eSBpbnQgZXhwZWN0ZWRMZW5ndGggOiAwCisgICAgcHJvcGVy
dHkgaW50IHRvdGFsQnl0ZXMgOiAwCisKKyAgICBTaWduYWxTcHkgeworICAgICAgICBpZDogc3B5
CisgICAgICAgIHRhcmdldDogd2ViVmlldworICAgICAgICBzaWduYWxOYW1lOiAiZG93bmxvYWRS
ZXF1ZXN0ZWQiCisgICAgfQorCisgICAgb25Eb3dubG9hZFJlcXVlc3RlZDogeworICAgICAgICBk
b3dubG9hZC50YXJnZXQgPSBkb3dubG9hZEl0ZW0KKyAgICAgICAgZXhwZWN0ZWRMZW5ndGggPSBk
b3dubG9hZEl0ZW0uZXhwZWN0ZWRDb250ZW50TGVuZ3RoCisgICAgICAgIGRvd25sb2FkSXRlbS5k
ZXN0aW5hdGlvblBhdGggPSBkb3dubG9hZEl0ZW0uc3VnZ2VzdGVkRmlsZW5hbWUKKyAgICAgICAg
ZG93bmxvYWRJdGVtLnN0YXJ0KCkKKyAgICB9CisKKyAgICBDb25uZWN0aW9ucyB7CisgICAgICAg
IGlkOiBkb3dubG9hZAorICAgICAgICBpZ25vcmVVbmtub3duU2lnbmFsczogdHJ1ZQorICAgICAg
ICBvblN1Y2NlZWRlZDogeyB0b3RhbEJ5dGVzID0gZG93bmxvYWQudGFyZ2V0LnRvdGFsQnl0ZXNS
ZWNlaXZlZCB9CisgICAgfQorCisgICAgU2lnbmFsU3B5IHsKKyAgICAgICAgaWQ6IG90aGVyU3B5
CisgICAgICAgIHRhcmdldDogZG93bmxvYWQKKyAgICAgICAgc2lnbmFsTmFtZTogInN1Y2NlZWRl
ZCIKKyAgICB9CisKKyAgICBUZXN0Q2FzZSB7CisgICAgICAgIG5hbWU6ICJEZXNrdG9wV2ViVmll
d0Rvd25sb2FkIgorICAgICAgICB3aGVuOiB3aW5kb3dTaG93bgorCisgICAgICAgIGZ1bmN0aW9u
IHRlc3RfZG93bmxvYWRSZXF1ZXN0KCkgeworICAgICAgICAgICAgc3B5LmNsZWFyKCkKKyAgICAg
ICAgICAgIGNvbXBhcmUoc3B5LmNvdW50LCAwKQorICAgICAgICAgICAgd2ViVmlldy5sb2FkKFF0
LnJlc29sdmVkVXJsKCIuLi9jb21tb24vZG93bmxvYWQuaHRtbCIpKQorICAgICAgICAgICAgbW91
c2VDbGljayh3ZWJWaWV3LCAxMDAsIDEwMCwgUXQuTGVmdEJ1dHRvbikKKyAgICAgICAgICAgIHNw
eS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBhcmUoc3B5LmNvdW50LCAxKQorICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gdGVzdF9leHBlY3RlZExlbmd0aCgpIHsKKyAgICAgICAgICAgIHNw
eS5jbGVhcigpCisgICAgICAgICAgICBjb21wYXJlKHNweS5jb3VudCwgMCkKKyAgICAgICAgICAg
IHdlYlZpZXcubG9hZChRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL2Rvd25sb2FkLmh0bWwiKSkK
KyAgICAgICAgICAgIG1vdXNlQ2xpY2sod2ViVmlldywgMTAwLCAxMDAsIFF0LkxlZnRCdXR0b24p
CisgICAgICAgICAgICBzcHkud2FpdCgpCisgICAgICAgICAgICBjb21wYXJlKHNweS5jb3VudCwg
MSkKKyAgICAgICAgICAgIGNvbXBhcmUoZXhwZWN0ZWRMZW5ndGgsIDMyNSkKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIHRlc3Rfc3VjY2VlZGVkKCkgeworICAgICAgICAgICAgc3B5LmNs
ZWFyKCkKKyAgICAgICAgICAgIGNvbXBhcmUoc3B5LmNvdW50LCAwKQorICAgICAgICAgICAgb3Ro
ZXJTcHkuY2xlYXIoKQorICAgICAgICAgICAgY29tcGFyZShvdGhlclNweS5jb3VudCwgMCkKKyAg
ICAgICAgICAgIHdlYlZpZXcubG9hZChRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL2Rvd25sb2Fk
Lmh0bWwiKSkKKyAgICAgICAgICAgIG1vdXNlQ2xpY2sod2ViVmlldywgMTAwLCAxMDAsIFF0Lkxl
ZnRCdXR0b24pCisgICAgICAgICAgICBzcHkud2FpdCgpCisgICAgICAgICAgICBjb21wYXJlKHNw
eS5jb3VudCwgMSkKKyAgICAgICAgICAgIG90aGVyU3B5LndhaXQoKQorICAgICAgICAgICAgY29t
cGFyZShvdGhlclNweS5jb3VudCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUodG90YWxCeXRlcywg
ZXhwZWN0ZWRMZW5ndGgpCisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1vbi9kb3dubG9hZC5o
dG1sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21t
b24vZG93bmxvYWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MDZmYTRjYTc2M2Q3YTRmZWFjMTgxNzQxYmU1
Yzk3NzY0OGY5NWY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21tb24vZG93bmxvYWQuaHRtbApAQCAtMCwwICsxLDYg
QEAKKzxodG1sPgorPGhlYWQ+PHRpdGxlPkRvd25sb2FkIFRlc3QgcGFnZSB3aXRoIGh1Z2UgbGlu
ayBhcmVhPC90aXRsZT48L2hlYWQ+Cis8Ym9keT4KKzxhIHRpdGxlPSJaaXAgZmlsZSIgaHJlZj0i
ZG93bmxvYWQuemlwIj48aW1nIHdpZHRoPTIwMCBoZWlnaHQ9MjAwPjwvYT4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMv
cW1sdGVzdHMvY29tbW9uL2Rvd25sb2FkLnppcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL2Rvd25sb2FkLnppcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNTQ1
NjM1MWE1NTE1NTYxMzUzOTYxNWFjY2VjZTllZTAzMGI3ZDQ0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0
ZXJhbCAzMjUKemNtV0lXV0BacyNVfGBeMnUhc3RffDhWZEJwPFc+R0pQLT5xJFN+eU9Dbngzdm0q
ZntFcmw7eTxsO3F9d2hIeEA0CnpeVzIlfENqYFckNzJGSnJFSDlXRDcrNncoOGJiU1JgM0BgYXcz
aG9kWm8xJFZZVCtSSlA0RGM1eFB+VXo2JCZtIwp6eytAaDAraE14VHdFTlo1X09ta3xUX0N9O1Zs
QzRyayR8cl50P2dlT2N6Pkh+KDwlazt3dTh6eVEpTUB3dFcpd2sKei00ZzVrTC1wc0N7TWY1KmhP
XklUS2t+QGtgQW5Bbzxjb3NFUT8/JHlyV25pZCppal4wPTZwezJgUmQ8Q2oqOGxnCnpya2AkRmxP
TStRYk5SJXIkTjItaThKWG1tYXJzT0Y9dilRe01qJjMmMng0TEpDbzlDQ1hucVh2V0BRNnVVPEFU
JgpLQWJrVkdWRV9SNj4yTSRiCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL3FtbHRlc3RzLnBy
byBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvcW1sdGVz
dHMucHJvCmluZGV4IGVjMGU4NGRkZmU0YmQzZDM1NjU2NDIyODczNWMxY2JiMTJmMDYyMDIuLjM2
ZTBjNTBjYWQ5OGNjZWE3NTRhNmExZDI3ZDI1MzFkMWNkYTJiMzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvcW1sdGVzdHMucHJvCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvcW1sdGVz
dHMucHJvCkBAIC0xNiw2ICsxNiw3IEBAIE9USEVSX0ZJTEVTICs9IFwKICAgICBEZXNrdG9wV2Vi
Vmlldy90c3RfbG9hZFByb2dyZXNzU2lnbmFsLnFtbCBcCiAgICAgRGVza3RvcFdlYlZpZXcvdHN0
X2xpbmtIb3ZlcmVkLnFtbCBcCiAgICAgRGVza3RvcFdlYlZpZXcvdHN0X21lc3NhZ2luZy5xbWwg
XAorICAgIERlc2t0b3BXZWJWaWV3L3RzdF9kb3dubG9hZC5xbWwgXAogICAgIFRvdWNoV2ViVmll
dy90c3RfcHJvcGVydGllcy5xbWwgXAogICAgIFRvdWNoV2ViVmlldy90c3RfbG9hZC5xbWwgXAog
ICAgIFRvdWNoV2ViVmlldy90c3RfbG9hZFplcm9TaXplVmlldy5xbWwgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAKaW5kZXgg
YzkzYTZkZmJlNjliYmUzNmU2YjkyNDQ4ZjA0N2JiYmJlN2Q5MmQ0Mi4uMjZhNTIxZjM5YmM3MWUy
MTQ1ODc3MzIxOTY0ZGRjNjcyNzQxYjE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCkBAIC0xODcsNSArMTg3LDE2IEBA
IHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkQ2FuY2VsKGNvbnN0IENvcmVJUEM6OkRhdGFSZWZlcmVu
Y2UmIHJlc3VtZURhdGEpCiAgICAgbV93ZWJDb250ZXh0LT5kb3dubG9hZEZpbmlzaGVkKHRoaXMp
OwogfQogCisjaWYgUExBVEZPUk0oUVQpCit2b2lkIERvd25sb2FkUHJveHk6OnN0YXJ0VHJhbnNm
ZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKK3sKKyAgICBpZiAoIW1fd2ViQ29udGV4dCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUUgKE11bHRpLVdlYlByb2Nlc3MpOiBEb3dubG9h
ZHMgc2hvdWxkbid0IGJlIGhhbmRsZWQgaW4gdGhlIHdlYiBwcm9jZXNzLgorICAgIG1fd2ViQ29u
dGV4dC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTdGFydFRyYW5z
ZmVyKG1fZG93bmxvYWRJRCwgZmlsZW5hbWUpKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkUHJveHkuaAppbmRleCA5OWRkYmVjMGNiYzRiYThmNmQ5ZjQyMWY5ZGI2ODU1NTgyOGI5
OWQ1Li5jMWVkYTFmZDE5MDdjOTk3ZGJhODNmZTMwYzQ3YjU2NjJlNmYzOWI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaApAQCAt
NDMsNiArNDMsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViQ29udGV4dDsKIGNs
YXNzIFdlYkRhdGE7CitjbGFzcyBXZWJQYWdlUHJveHk7CiAKIGNsYXNzIERvd25sb2FkUHJveHkg
OiBwdWJsaWMgQVBJT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTYzLDYgKzY0LDEwIEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRpZFJlY2VpdmVEb3dubG9hZFByb3h5TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0
aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKICAg
ICB2b2lkIGRpZFJlY2VpdmVTeW5jRG93bmxvYWRQcm94eU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVj
dGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgT3du
UHRyPENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4mKTsKIAorI2lmIFBMQVRGT1JNKFFUKQorICAg
IHZvaWQgc3RhcnRUcmFuc2Zlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lKTsKKyNlbmRpZgorCiBw
cml2YXRlOgogICAgIGV4cGxpY2l0IERvd25sb2FkUHJveHkoV2ViQ29udGV4dCopOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCA2NmY5ZWNiYmIwYTM5NWE5M2IyOTlj
ZTExZTIzZDA4Y2NjMjcwZWI2Li4zZmZhMmJmYTFjOTk3ZGUyYjI2NWUxODZiZjU0YjIyMDNlODYw
OWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTQ0LDYgKzQ0LDEw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBzdHJ1Y3QgVmlld3BvcnRBcmd1bWVudHM7CiB9
CiAKKyNpZiBQTEFURk9STShRVCkKK2NsYXNzIFF0V2ViUGFnZVByb3h5OworI2VuZGlmCisKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBEcmF3aW5nQXJlYVByb3h5OwpAQCAtMTA0LDYgKzEw
OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQ29udGVudHNTaXplKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmRab29t
YWJsZUFyZWEoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21OYXZpZ2F0b3JR
dE9iamVjdChjb25zdCBTdHJpbmcmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZURvd25s
b2FkUmVxdWVzdChEb3dubG9hZFByb3h5KikgPSAwOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShR
VCkgfHwgUExBVEZPUk0oR1RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3Bw
CmluZGV4IGY0NTNkOGMzZmRhMWJkNjk0NWU4MTdiMGU2ZWQ5YWQ2MmZhMWE2ZjkuLmI2NDQ4NDU5
YTI1MzgxNDZjYTM1ZjJhZDhiNGM3MGEwN2RhODZmZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQ29udGV4dC5jcHAKQEAgLTM5Miw2ICszOTIsMTEgQEAgRG93bmxvYWRQcm94eSogV2Vi
Q29udGV4dDo6ZG93bmxvYWQoV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgUmVz
b3VyY2UKICAgICBEb3dubG9hZFByb3h5KiBkb3dubG9hZCA9IGNyZWF0ZURvd25sb2FkUHJveHko
KTsKICAgICB1aW50NjRfdCBpbml0aWF0aW5nUGFnZUlEID0gaW5pdGlhdGluZ1BhZ2UgPyBpbml0
aWF0aW5nUGFnZS0+cGFnZUlEKCkgOiAwOwogCisjaWYgUExBVEZPUk0oUVQpCisgICAgQVNTRVJU
KGluaXRpYXRpbmdQYWdlKTsgLy8gT3VyIGRlc2lnbiBkb2VzIG5vdCBzdXBwcG9ydCBkb3dubG9h
ZHMgd2l0aG91dCBhIFdlYlBhZ2UuCisgICAgaW5pdGlhdGluZ1BhZ2UtPmhhbmRsZURvd25sb2Fk
UmVxdWVzdChkb3dubG9hZCk7CisjZW5kaWYKKwogICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdl
czo6V2ViUHJvY2Vzczo6RG93bmxvYWRSZXF1ZXN0KGRvd25sb2FkLT5kb3dubG9hZElEKCksIGlu
aXRpYXRpbmdQYWdlSUQsIHJlcXVlc3QpLCAwKTsKICAgICByZXR1cm4gZG93bmxvYWQ7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGVlNDNiMjhmMGFj
NWQ5YmQzMDg3NGE5YjhkMmRlMWEzYjM5YjZkNzUuLjVmMWEyZTdhNWUyZGE1YTExYjgwMjBiZDQ4
YThhOTc3NmI4NTk2ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCkBAIC0xMDE2LDcgKzEwMTYsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9s
aWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwgV2ViRnJhbWVQcm94eSogZnIKICAgICB1
aW50NjRfdCBkb3dubG9hZElEID0gMDsKICAgICBpZiAoYWN0aW9uID09IFBvbGljeURvd25sb2Fk
KSB7CiAgICAgICAgIC8vIENyZWF0ZSBhIGRvd25sb2FkIHByb3h5LgotICAgICAgICBkb3dubG9h
ZElEID0gbV9wcm9jZXNzLT5jb250ZXh0KCktPmNyZWF0ZURvd25sb2FkUHJveHkoKS0+ZG93bmxv
YWRJRCgpOworICAgICAgICBEb3dubG9hZFByb3h5KiBkb3dubG9hZCA9IG1fcHJvY2Vzcy0+Y29u
dGV4dCgpLT5jcmVhdGVEb3dubG9hZFByb3h5KCk7CisgICAgICAgIGRvd25sb2FkSUQgPSBkb3du
bG9hZC0+ZG93bmxvYWRJRCgpOworI2lmIFBMQVRGT1JNKFFUKQorICAgICAgICAvLyBPdXIgZGVz
aWduIGRvZXMgbm90IHN1cHBwb3J0IGRvd25sb2FkcyB3aXRob3V0IGEgV2ViUGFnZS4KKyAgICAg
ICAgaGFuZGxlRG93bmxvYWRSZXF1ZXN0KGRvd25sb2FkKTsKKyNlbmRpZgogICAgIH0KIAogICAg
IC8vIElmIHdlIHJlY2VpdmVkIGEgcG9saWN5IGRlY2lzaW9uIHdoaWxlIGluIGRlY2lkZVBvbGlj
eUZvck1JTUVUeXBlIHRoZSBkZWNpc2lvbiB3aWxsIApAQCAtMjI4NSw2ICsyMjkwLDExIEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlTWVzc2FnZUZyb21OYXZpZ2F0b3JRdE9iamVjdChj
b25zdCBTdHJpbmcmIGNvbnRlbnRzCiB7CiAgICAgbV9wYWdlQ2xpZW50LT5kaWRSZWNlaXZlTWVz
c2FnZUZyb21OYXZpZ2F0b3JRdE9iamVjdChjb250ZW50cyk7CiB9CisKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpoYW5kbGVEb3dubG9hZFJlcXVlc3QoRG93bmxvYWRQcm94eSogZG93bmxvYWQpCit7Cisg
ICAgbV9wYWdlQ2xpZW50LT5oYW5kbGVEb3dubG9hZFJlcXVlc3QoZG93bmxvYWQpOworfQogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCmluZGV4IGI5NWFhNWY3MDI5ODU0MzljYTkxNzQxNTA3ZmJjY2YzZDViYTBj
ODQuLmVmMzA2OWE3NzJkMDI5NzJkNDMyODQ5NTI2MmVjZTNkYTIxMzBjYTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTUyMyw2ICs1MjMsNyBAQCBwdWJsaWM6
CiAjaWYgUExBVEZPUk0oUVQpCiAgICAgdm9pZCBmaW5kWm9vbWFibGVBcmVhRm9yUG9pbnQoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbU5h
dmlnYXRvclF0T2JqZWN0KGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgaGFuZGxlRG93bmxvYWRS
ZXF1ZXN0KERvd25sb2FkUHJveHkqKTsKICNlbmRpZgogCiAgICAgdm9pZCBhZHZhbmNlVG9OZXh0
TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbikgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXREb3dubG9hZE1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0RG93bmxvYWRNYW5hZ2VyLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zZjk3ZmM2M2M0Y2IxMWM3ODVjNjM4MjI0N2M1ZTNmNTE4MzM1MjJiCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0RG93bmxvYWRNYW5hZ2VyLmNwcApA
QCAtMCwwICsxLDE0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
ICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJRdERvd25sb2FkTWFuYWdlci5oIgorCisjaW5jbHVkZSAiQ2xpZW50
SW1wbC5oIgorI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKKyNpbmNsdWRlICJRdFdlYkVycm9y
LmgiCisjaW5jbHVkZSAiV0tTdHJpbmdRdC5oIgorI2luY2x1ZGUgIldLVVJMUXQuaCIKKyNpbmNs
dWRlICJXZWJDb250ZXh0LmgiCisjaW5jbHVkZSAicXdlYmRvd25sb2FkaXRlbS5oIgorI2luY2x1
ZGUgInF3ZWJkb3dubG9hZGl0ZW1fcC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGlj
IGlubGluZSBRdERvd25sb2FkTWFuYWdlciogdG9RdERvd25sb2FkTWFuYWdlcihjb25zdCB2b2lk
KiBjbGllbnRJbmZvKQoreworICAgIEFTU0VSVChjbGllbnRJbmZvKTsKKyAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxRdERvd25sb2FkTWFuYWdlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVu
dEluZm8pKTsKK30KKworc3RhdGljIHZvaWQgcXRfd2tfZGlkUmVjZWl2ZVJlc3BvbnNlKFdLQ29u
dGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1VSTFJlc3BvbnNlUmVm
IHJlc3BvbnNlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQoreworICAgIHRvUXREb3dubG9hZE1h
bmFnZXIoY2xpZW50SW5mbyktPmRvd25sb2FkUmVjZWl2ZWRSZXNwb25zZSh0b0ltcGwoZG93bmxv
YWQpLCB0b0ltcGwocmVzcG9uc2UpLT5yZXNvdXJjZVJlc3BvbnNlKCkpOworfQorCitzdGF0aWMg
dm9pZCBxdF93a19kaWRDcmVhdGVEZXN0aW5hdGlvbihXS0NvbnRleHRSZWYgY29udGV4dCwgV0tE
b3dubG9hZFJlZiBkb3dubG9hZCwgV0tTdHJpbmdSZWYgcGF0aCwgY29uc3Qgdm9pZCAqY2xpZW50
SW5mbykKK3sKKyAgICB0b1F0RG93bmxvYWRNYW5hZ2VyKGNsaWVudEluZm8pLT5kb3dubG9hZENy
ZWF0ZWREZXN0aW5hdGlvbih0b0ltcGwoZG93bmxvYWQpLCBXS1N0cmluZ0NvcHlRU3RyaW5nKHBh
dGgpKTsKK30KKworc3RhdGljIHZvaWQgcXRfd2tfZGlkRmluaXNoRG93bmxvYWQoV0tDb250ZXh0
UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQgKmNsaWVudElu
Zm8pCit7CisgICAgdG9RdERvd25sb2FkTWFuYWdlcihjbGllbnRJbmZvKS0+ZG93bmxvYWRGaW5p
c2hlZCh0b0ltcGwoZG93bmxvYWQpKTsKK30KKworc3RhdGljIHZvaWQgcXRfd2tfZGlkRmFpbERv
d25sb2FkKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS0Vy
cm9yUmVmIGVycm9yLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQoreworICAgIFFVcmwgZmFpbGlu
Z1VybCA9IFdLVVJMQ29weVFVcmwoV0tFcnJvckNvcHlGYWlsaW5nVVJMKGVycm9yKSk7CisKKyAg
ICB0b1F0RG93bmxvYWRNYW5hZ2VyKGNsaWVudEluZm8pLT5kb3dubG9hZEZhaWxlZCh0b0ltcGwo
ZG93bmxvYWQpLCBRdFdlYkVycm9yKGVycm9yKSk7Cit9CisKK3N0YXRpYyB2b2lkIHF0X3drX2Rp
ZFJlY2VpdmVEYXRhRm9yRG93bmxvYWQoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRS
ZWYgZG93bmxvYWQsIHVpbnQ2NF90IGxlbmd0aCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKK3sK
KyAgICB0b1F0RG93bmxvYWRNYW5hZ2VyKGNsaWVudEluZm8pLT5kb3dubG9hZERhdGFSZWNlaXZl
ZCh0b0ltcGwoZG93bmxvYWQpLCBsZW5ndGgpOworfQorCitRdERvd25sb2FkTWFuYWdlcjo6UXRE
b3dubG9hZE1hbmFnZXIoKQoreworfQorCitRdERvd25sb2FkTWFuYWdlcjo6flF0RG93bmxvYWRN
YW5hZ2VyKCkKK3sKK30KKworUGFzc1JlZlB0cjxRdERvd25sb2FkTWFuYWdlcj4gUXREb3dubG9h
ZE1hbmFnZXI6OmNyZWF0ZShXZWJDb250ZXh0KiBjb250ZXh0KQoreworICAgIFF0RG93bmxvYWRN
YW5hZ2VyKiBtYW5hZ2VyID0gbmV3IFF0RG93bmxvYWRNYW5hZ2VyKCk7CisKKyAgICBXS0NvbnRl
eHREb3dubG9hZENsaWVudCBkb3dubG9hZENsaWVudDsKKyAgICBtZW1zZXQoJmRvd25sb2FkQ2xp
ZW50LCAwLCBzaXplb2YoV0tDb250ZXh0RG93bmxvYWRDbGllbnQpKTsKKyAgICBkb3dubG9hZENs
aWVudC52ZXJzaW9uID0ga1dLQ29udGV4dERvd25sb2FkQ2xpZW50Q3VycmVudFZlcnNpb247Cisg
ICAgZG93bmxvYWRDbGllbnQuY2xpZW50SW5mbyA9IG1hbmFnZXI7CisgICAgZG93bmxvYWRDbGll
bnQuZGlkUmVjZWl2ZVJlc3BvbnNlID0gcXRfd2tfZGlkUmVjZWl2ZVJlc3BvbnNlOworICAgIGRv
d25sb2FkQ2xpZW50LmRpZFJlY2VpdmVEYXRhID0gcXRfd2tfZGlkUmVjZWl2ZURhdGFGb3JEb3du
bG9hZDsKKyAgICBkb3dubG9hZENsaWVudC5kaWRDcmVhdGVEZXN0aW5hdGlvbiA9IHF0X3drX2Rp
ZENyZWF0ZURlc3RpbmF0aW9uOworICAgIGRvd25sb2FkQ2xpZW50LmRpZEZpbmlzaCA9IHF0X3dr
X2RpZEZpbmlzaERvd25sb2FkOworICAgIGRvd25sb2FkQ2xpZW50LmRpZEZhaWwgPSBxdF93a19k
aWRGYWlsRG93bmxvYWQ7CisgICAgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQodG9BUEkoY29u
dGV4dCksICZkb3dubG9hZENsaWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG1hbmFnZXIpOwor
fQorCit2b2lkIFF0RG93bmxvYWRNYW5hZ2VyOjpkb3dubG9hZFJlY2VpdmVkUmVzcG9uc2UoRG93
bmxvYWRQcm94eSogZG93bmxvYWQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKQoreworICAgIC8vIFdpbGwgYmUgY2FsbGVkIHdoZW4gdGhlIGhlYWRlcnMgYXJlIHJl
YWQgYnkgV2ViUHJvY2Vzcy4KKyAgICBRV2ViRG93bmxvYWRJdGVtKiBkb3dubG9hZEl0ZW0gPSBt
X2Rvd25sb2Fkcy52YWx1ZShkb3dubG9hZC0+ZG93bmxvYWRJRCgpKTsKKyAgICBBU1NFUlQoZG93
bmxvYWRJdGVtKTsKKworICAgIGRvd25sb2FkSXRlbS0+ZC0+c291cmNlVXJsID0gcmVzcG9uc2Uu
dXJsKCk7CisgICAgZG93bmxvYWRJdGVtLT5kLT5taW1lVHlwZSA9IHJlc3BvbnNlLm1pbWVUeXBl
KCk7CisgICAgZG93bmxvYWRJdGVtLT5kLT5leHBlY3RlZENvbnRlbnRMZW5ndGggPSByZXNwb25z
ZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKTsKKyAgICBkb3dubG9hZEl0ZW0tPmQtPnN1Z2dlc3Rl
ZEZpbGVuYW1lID0gcmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUoKTsKKworICAgIGRvd25sb2Fk
SXRlbS0+ZC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGRvd25sb2FkSXRlbSk7Cit9CisKK3ZvaWQgUXRE
b3dubG9hZE1hbmFnZXI6OmRvd25sb2FkQ3JlYXRlZERlc3RpbmF0aW9uKERvd25sb2FkUHJveHkq
IGRvd25sb2FkLCBjb25zdCBRU3RyaW5nJiBwYXRoKQoreworICAgIFFXZWJEb3dubG9hZEl0ZW0q
IGRvd25sb2FkSXRlbSA9IG1fZG93bmxvYWRzLnZhbHVlKGRvd25sb2FkLT5kb3dubG9hZElEKCkp
OworICAgIEFTU0VSVChkb3dubG9hZEl0ZW0pOworICAgIGRvd25sb2FkSXRlbS0+ZC0+ZGVzdGlu
YXRpb25QYXRoID0gcGF0aDsKKyAgICBlbWl0IGRvd25sb2FkSXRlbS0+ZGVzdGluYXRpb25GaWxl
Q3JlYXRlZChkb3dubG9hZEl0ZW0tPmQtPmRlc3RpbmF0aW9uUGF0aCk7Cit9CisKK3ZvaWQgUXRE
b3dubG9hZE1hbmFnZXI6OmRvd25sb2FkRmluaXNoZWQoRG93bmxvYWRQcm94eSogZG93bmxvYWQp
Cit7CisgICAgLy8gV2lsbCBiZSBjYWxsZWQgd2hlbiBkb3dubG9hZCBmaW5pc2hlcyB3aXRoIHN1
Y2Nlc3MuCisgICAgUVdlYkRvd25sb2FkSXRlbSogZG93bmxvYWRJdGVtID0gbV9kb3dubG9hZHMu
dGFrZShkb3dubG9hZC0+ZG93bmxvYWRJRCgpKTsKKyAgICBBU1NFUlQoZG93bmxvYWRJdGVtKTsK
KyAgICBlbWl0IGRvd25sb2FkSXRlbS0+c3VjY2VlZGVkKCk7Cit9CisKK3ZvaWQgUXREb3dubG9h
ZE1hbmFnZXI6OmRvd25sb2FkRmFpbGVkKERvd25sb2FkUHJveHkqIGRvd25sb2FkLCBjb25zdCBR
dFdlYkVycm9yJiBlcnJvcikKK3sKKyAgICAvLyBXaWxsIGJlIGNhbGxlZCB3aGVuIGRvd25sb2Fk
IGZhaWxzIG9yIGlzIGFib3J0ZWQuCisgICAgUVdlYkRvd25sb2FkSXRlbSogZG93bmxvYWRJdGVt
ID0gbV9kb3dubG9hZHMudGFrZShkb3dubG9hZC0+ZG93bmxvYWRJRCgpKTsKKyAgICBBU1NFUlQo
ZG93bmxvYWRJdGVtKTsKKyAgICBlbWl0IGRvd25sb2FkSXRlbS0+ZmFpbGVkKGVycm9yLmVycm9y
Q29kZUFzRG93bmxvYWRFcnJvcigpLCBlcnJvci51cmwoKSwgZXJyb3IuZGVzY3JpcHRpb24oKSk7
Cit9CisKK3ZvaWQgUXREb3dubG9hZE1hbmFnZXI6OmRvd25sb2FkRGF0YVJlY2VpdmVkKERvd25s
b2FkUHJveHkqIGRvd25sb2FkLCB1aW50NjRfdCBsZW5ndGgpCit7CisgICAgLy8gV2lsbCBiZSBj
YWxsZWQgZXZlcnl0aW1lIGJ5dGVzIHdlcmUgd3JpdHRlbiB0byBkZXN0aW5hdGlvbiBmaWxlIGJ5
IFdlYlByb2Nlc3MuCisgICAgUVdlYkRvd25sb2FkSXRlbSogZG93bmxvYWRJdGVtID0gbV9kb3du
bG9hZHMudmFsdWUoZG93bmxvYWQtPmRvd25sb2FkSUQoKSk7CisgICAgQVNTRVJUKGRvd25sb2Fk
SXRlbSk7CisgICAgZG93bmxvYWRJdGVtLT5kLT50b3RhbEJ5dGVzUmVjZWl2ZWQgKz0gbGVuZ3Ro
OworICAgIGVtaXQgZG93bmxvYWRJdGVtLT50b3RhbEJ5dGVzUmVjZWl2ZWRDaGFuZ2VkKGxlbmd0
aCk7Cit9CisKK3ZvaWQgUXREb3dubG9hZE1hbmFnZXI6OmFkZERvd25sb2FkKERvd25sb2FkUHJv
eHkqIGRvd25sb2FkLCBRV2ViRG93bmxvYWRJdGVtKiBkb3dubG9hZEl0ZW0pCit7CisgICAgbV9k
b3dubG9hZHNbZG93bmxvYWQtPmRvd25sb2FkSUQoKV0gPSBkb3dubG9hZEl0ZW07Cit9CisKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdERvd25sb2FkTWFuYWdl
ci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0RG93bmxvYWRNYW5hZ2VyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMGJmNzIxNmQ0MTY4OWE2MDJhMDM3M2U0Yjc5MTRiYTkzZDdjMmU3OAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdERvd25sb2FkTWFuYWdl
ci5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgTm9r
aWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIFF0
RG93bmxvYWRNYW5hZ2VyX2gKKyNkZWZpbmUgUXREb3dubG9hZE1hbmFnZXJfaAorCisjaW5jbHVk
ZSA8UU1hcD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CisKK2NsYXNzIFF0V2ViRXJyb3I7CitjbGFzcyBRV2ViRG93bmxvYWRJdGVtOwor
CituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOworfQorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgRG93bmxvYWRQcm94eTsKK2NsYXNzIFdlYkNvbnRleHQ7
CisKK2NsYXNzIFF0RG93bmxvYWRNYW5hZ2VyIDogcHVibGljIFJlZkNvdW50ZWQ8UXREb3dubG9h
ZE1hbmFnZXI+IHsKK3B1YmxpYzoKKyAgICB+UXREb3dubG9hZE1hbmFnZXIoKTsKKworICAgIHZv
aWQgYWRkRG93bmxvYWQoRG93bmxvYWRQcm94eSosIFFXZWJEb3dubG9hZEl0ZW0qKTsKKworICAg
IHZvaWQgZG93bmxvYWRSZWNlaXZlZFJlc3BvbnNlKERvd25sb2FkUHJveHkqLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgdm9pZCBkb3dubG9hZENyZWF0ZWREZXN0aW5h
dGlvbihEb3dubG9hZFByb3h5KiwgY29uc3QgUVN0cmluZyYgcGF0aCk7CisgICAgdm9pZCBkb3du
bG9hZEZpbmlzaGVkKERvd25sb2FkUHJveHkqKTsKKyAgICB2b2lkIGRvd25sb2FkRmFpbGVkKERv
d25sb2FkUHJveHkqLCBjb25zdCBRdFdlYkVycm9yJik7CisgICAgdm9pZCBkb3dubG9hZERhdGFS
ZWNlaXZlZChEb3dubG9hZFByb3h5KiwgdWludDY0X3QgbGVuZ3RoKTsKKworICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFF0RG93bmxvYWRNYW5hZ2VyPiBjcmVhdGUoV2ViQ29udGV4dCopOworcHJpdmF0
ZToKKyAgICBRdERvd25sb2FkTWFuYWdlcigpOworCisgICAgUU1hcDx1aW50NjRfdCwgUVdlYkRv
d25sb2FkSXRlbSo+IG1fZG93bmxvYWRzOworfTsKKworfQorI2VuZGlmIC8qIFF0RG93bmxvYWRN
YW5hZ2VyX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFRv
dWNoVmlld0ludGVyZmFjZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0VG91Y2hW
aWV3SW50ZXJmYWNlLmgKaW5kZXggM2E0NTM0OTBmOTIzMWQ4MDk4MjRhYmY4YTNlYWMxOWM0OWQx
ZDY3Yi4uYTRmZDQ1N2EzODk0NDU3MjM4ZTNmMjZiNDZlYmY5NTM3YmQ1ZGNhNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0VG91Y2hWaWV3SW50ZXJmYWNlLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0VG91Y2hWaWV3SW50ZXJmYWNlLmgKQEAg
LTgxLDYgKzgxLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFFKU0VuZ2luZSogZW5naW5lKCk7
CiAKICAgICB2aXJ0dWFsIHZvaWQgY2hvb3NlRmlsZXMoV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
clJlZiwgY29uc3QgUVN0cmluZ0xpc3QmLCBGaWxlQ2hvb3NlclR5cGUpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBkb3dubG9hZFJlcXVlc3RlZChRV2ViRG93bmxvYWRJdGVtKiBkb3dubG9hZEl0ZW0p
IHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZE1vdXNlTW92ZU92ZXJFbGVtZW50KGNvbnN0IFFV
cmwmLCBjb25zdCBRU3RyaW5nJikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9RdFZpZXdJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9RdFZpZXdJbnRlcmZhY2UuaAppbmRleCA1MjZhNDk1NjEwZDk2NDE0MWU4YzkzNGYyZjVlY2M5
YTE1OTk4MGJjLi5hODE4OTExNDE4YzMzMjAwMDM2MGJkZjQ0ZTM1NGEzNWMyYTllNzMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRWaWV3SW50ZXJmYWNlLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0Vmlld0ludGVyZmFjZS5oCkBAIC0yNyw2
ICsyNyw3IEBACiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KIAogY2xhc3MgUXRXZWJFcnJv
cjsKK2NsYXNzIFFXZWJEb3dubG9hZEl0ZW07CiAKIFFUX0JFR0lOX05BTUVTUEFDRQogY2xhc3Mg
UUN1cnNvcjsKQEAgLTkzLDYgKzk0LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjaG9v
c2VGaWxlcyhXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmLCBjb25zdCBRU3RyaW5nTGlzdCYg
c2VsZWN0ZWRGaWxlTmFtZXMsIEZpbGVDaG9vc2VyVHlwZSkgPSAwOwogCiAgICAgdmlydHVhbCB2
b2lkIGRpZE1vdXNlTW92ZU92ZXJFbGVtZW50KGNvbnN0IFFVcmwmLCBjb25zdCBRU3RyaW5nJikg
PSAwOworCisgICAgdmlydHVhbCB2b2lkIGRvd25sb2FkUmVxdWVzdGVkKFFXZWJEb3dubG9hZEl0
ZW0qKSA9IDA7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvUXRXZWJFcnJvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJFcnJv
ci5jcHAKaW5kZXggNzY1NDk3N2UwNzdiYWI3ZDU0YjU5N2VkMWZiNGJhOWJhZDE1NzlkNi4uNmQy
ZTEwZDgxMTE0NTBhNjJhY2ZjZDhhNDg0MGI2YzEzZDAwODJlNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9RdFdlYkVycm9yLmNwcApAQCAtNjAsMyArNjAsOCBAQCBRVXJsIFF0V2Vi
RXJyb3I6OnVybCgpIGNvbnN0CiAgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IGZhaWxpbmdVUkwg
PSBhZG9wdFdLKFdLRXJyb3JDb3B5RmFpbGluZ1VSTChlcnJvci5nZXQoKSkpOwogICAgIHJldHVy
biBXS1VSTENvcHlRVXJsKGZhaWxpbmdVUkwuZ2V0KCkpOwogfQorCitRU3RyaW5nIFF0V2ViRXJy
b3I6OmRlc2NyaXB0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV0tTdHJpbmdDb3B5UVN0cmlu
ZyhXS0Vycm9yQ29weUxvY2FsaXplZERlc2NyaXB0aW9uKGVycm9yLmdldCgpKSk7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJFcnJvci5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViRXJyb3IuaAppbmRleCAxMWIwOTUzZjJlZWUzZTU2
NTEzYzRjOTkwZjI5ZDAzMTNhZDYyNmQ0Li45MTE4N2U5MjZhNGNkYWViOTNkOTdkOGJjMzFhMTBm
NTc0Yzg2NDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJF
cnJvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYkVycm9yLmgKQEAg
LTIxLDYgKzIxLDcgQEAKICNpZm5kZWYgUXRXZWJFcnJvcl9oCiAjZGVmaW5lIFF0V2ViRXJyb3Jf
aAogCisjaW5jbHVkZSAicXdlYmRvd25sb2FkaXRlbS5oIgogI2luY2x1ZGUgInF3ZWJraXRnbG9i
YWwuaCIKICNpbmNsdWRlIDxRdE5ldHdvcmsvUU5ldHdvcmtSZXBseT4KICNpbmNsdWRlIDxXS0Vy
cm9yLmg+CkBAIC00Miw5ICs0MywxMSBAQCBwdWJsaWM6CiAgICAgVHlwZSB0eXBlKCkgY29uc3Q7
CiAgICAgUVVybCB1cmwoKSBjb25zdDsKICAgICBpbnQgZXJyb3JDb2RlKCkgY29uc3Q7CisgICAg
UVN0cmluZyBkZXNjcmlwdGlvbigpIGNvbnN0OwogCiAgICAgaW50IGVycm9yQ29kZUFzSHR0cFN0
YXR1c0NvZGUoKSBjb25zdCB7IHJldHVybiBlcnJvckNvZGUoKTsgfQogICAgIFFOZXR3b3JrUmVw
bHk6Ok5ldHdvcmtFcnJvciBlcnJvckNvZGVBc05ldHdvcmtFcnJvcigpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PFFOZXR3b3JrUmVwbHk6Ok5ldHdvcmtFcnJvcj4oZXJyb3JDb2RlKCkpOyB9
CisgICAgUVdlYkRvd25sb2FkSXRlbTo6RG93bmxvYWRFcnJvciBlcnJvckNvZGVBc0Rvd25sb2Fk
RXJyb3IoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxRV2ViRG93bmxvYWRJdGVtOjpEb3du
bG9hZEVycm9yPihlcnJvckNvZGUoKSk7IH0KIAogICAgIFF0V2ViRXJyb3IoY29uc3QgUXRXZWJF
cnJvciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQ
YWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5
LmNwcAppbmRleCA2NDMwYTA5MDA1MTYzOWFjNjY0YTAyMWZjNjdmMzFiZGM3ZDkzMzRiLi45NDU0
ZjU2MDUwMjA3Zjg0ZmJkM2ZhNTBjYzhiOTg2YzlhZTUwNTM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAKQEAgLTIyLDEwICsyMiwxMyBAQAog
I2luY2x1ZGUgIlF0V2ViUGFnZVByb3h5LmgiCiAKICNpbmNsdWRlICJRdFdlYkVycm9yLmgiCisj
aW5jbHVkZSAicXdlYmRvd25sb2FkaXRlbS5oIgorI2luY2x1ZGUgInF3ZWJkb3dubG9hZGl0ZW1f
cC5oIgogI2luY2x1ZGUgInF3ZWJwcmVmZXJlbmNlcy5oIgogI2luY2x1ZGUgInF3ZWJwcmVmZXJl
bmNlc19wLmgiCiAKICNpbmNsdWRlICJDbGllbnRJbXBsLmgiCisjaW5jbHVkZSAiRG93bmxvYWRQ
cm94eS5oIgogI2luY2x1ZGUgInF3a2hpc3RvcnkuaCIKICNpbmNsdWRlICJxd2toaXN0b3J5X3Au
aCIKICNpbmNsdWRlICJGaW5kSW5kaWNhdG9yLmgiCkBAIC02Myw2ICs2Niw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogUmVmUHRyPFdlYkNv
bnRleHQ+IFF0V2ViUGFnZVByb3h5OjpzX2RlZmF1bHRDb250ZXh0OworUmVmUHRyPFF0RG93bmxv
YWRNYW5hZ2VyPiBRdFdlYlBhZ2VQcm94eTo6c19kb3dubG9hZE1hbmFnZXI7CiAKIHVuc2lnbmVk
IFF0V2ViUGFnZVByb3h5OjpzX2RlZmF1bHRQYWdlUHJveHlDb3VudCA9IDA7CiAKQEAgLTcxLDYg
Kzc1LDcgQEAgUGFzc1JlZlB0cjxXZWJDb250ZXh0PiBRdFdlYlBhZ2VQcm94eTo6ZGVmYXVsdFdL
Q29udGV4dCgpCiAgICAgaWYgKCFzX2RlZmF1bHRDb250ZXh0KSB7CiAgICAgICAgIHNfZGVmYXVs
dENvbnRleHQgPSBXZWJDb250ZXh0OjpjcmVhdGUoU3RyaW5nKCkpOwogICAgICAgICBzZXR1cENv
bnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudCh0b0FQSShzX2RlZmF1bHRDb250ZXh0LmdldCgpKSk7
CisgICAgICAgIHNfZG93bmxvYWRNYW5hZ2VyID0gUXREb3dubG9hZE1hbmFnZXI6OmNyZWF0ZShz
X2RlZmF1bHRDb250ZXh0LmdldCgpKTsKICAgICB9CiAgICAgcmV0dXJuIHNfZGVmYXVsdENvbnRl
eHQ7CiB9CkBAIC0xMzYsOCArMTQxLDEwIEBAIFF0V2ViUGFnZVByb3h5Ojp+UXRXZWJQYWdlUHJv
eHkoKQogICAgIGlmIChtX2NvbnRleHQgPT0gc19kZWZhdWx0Q29udGV4dCkgewogICAgICAgICBB
U1NFUlQoc19kZWZhdWx0UGFnZVByb3h5Q291bnQgPiAwKTsKICAgICAgICAgc19kZWZhdWx0UGFn
ZVByb3h5Q291bnQtLTsKLSAgICAgICAgaWYgKCFzX2RlZmF1bHRQYWdlUHJveHlDb3VudCkKKyAg
ICAgICAgaWYgKCFzX2RlZmF1bHRQYWdlUHJveHlDb3VudCkgewogICAgICAgICAgICAgc19kZWZh
dWx0Q29udGV4dC5jbGVhcigpOworICAgICAgICAgICAgc19kb3dubG9hZE1hbmFnZXIuY2xlYXIo
KTsKKyAgICAgICAgfQogICAgIH0KICAgICBkZWxldGUgbV9oaXN0b3J5OwogfQpAQCAtNTk1LDQg
KzYwMiwyMyBAQCB2b2lkIFF0V2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRp
ZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudAogICAgIG1fdmlld0ludGVyZmFjZS0+
ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGFyZ3MpOwogfQogCit2b2lkIFF0V2ViUGFnZVBy
b3h5OjpoYW5kbGVEb3dubG9hZFJlcXVlc3QoRG93bmxvYWRQcm94eSogZG93bmxvYWQpCit7Cisg
ICAgLy8gVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgaG9va2luZyB1cCBhIERvd25s
b2FkUHJveHkgdG8gb3VyIEFQSSBsYXllcgorICAgIC8vIGJ5IGNyZWF0aW5nIGEgUVdlYkRvd25s
b2FkSXRlbS4gSXQgd2lsbCB0aGVuIHdhaXQgZm9yIHRoZSBRV2ViRG93bmxvYWRJdGVtIHRvIGJl
CisgICAgLy8gcmVhZHkgKGZpbGxlZCB3aXRoIHRoZSBSZXNvdXJjZVJlc3BvbnNlIGluZm9ybWF0
aW9uKSBzbyB3ZSBjYW4gcGFzcyBpdCB0aHJvdWdoIHRvCisgICAgLy8gb3VyIFdlYlZpZXdzLgor
ICAgIFFXZWJEb3dubG9hZEl0ZW0qIGRvd25sb2FkSXRlbSA9IG5ldyBRV2ViRG93bmxvYWRJdGVt
KCk7CisgICAgZG93bmxvYWRJdGVtLT5kLT5kb3dubG9hZFByb3h5ID0gZG93bmxvYWQ7CisKKyAg
ICBjb25uZWN0KGRvd25sb2FkSXRlbS0+ZCwgU0lHTkFMKHJlY2VpdmVkUmVzcG9uc2UoUVdlYkRv
d25sb2FkSXRlbSopKSwgdGhpcywgU0xPVChkaWRSZWNlaXZlRG93bmxvYWRSZXNwb25zZShRV2Vi
RG93bmxvYWRJdGVtKikpKTsKKyAgICBzX2Rvd25sb2FkTWFuYWdlci0+YWRkRG93bmxvYWQoZG93
bmxvYWQsIGRvd25sb2FkSXRlbSk7Cit9CisKK3ZvaWQgUXRXZWJQYWdlUHJveHk6OmRpZFJlY2Vp
dmVEb3dubG9hZFJlc3BvbnNlKFFXZWJEb3dubG9hZEl0ZW0qIGRvd25sb2FkKQoreworICAgIC8v
IE5vdyB0aGF0IG91ciBkb3dubG9hZEl0ZW0gaGFzIGV2ZXJ5dGhpbmcgd2UgbmVlZCB3ZSBjYW4g
ZW1pdCBkb3dubG9hZFJlcXVlc3RlZC4KKyAgICBtX3ZpZXdJbnRlcmZhY2UtPmRvd25sb2FkUmVx
dWVzdGVkKGRvd25sb2FkKTsKK30KKwogI2luY2x1ZGUgIm1vY19RdFdlYlBhZ2VQcm94eS5jcHAi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5oCmluZGV4IDRh
ZTQ3YzljNWI0M2Y5Y2QzNmQ3Y2ZiYjZlZGJiMGExNjMzMTRlZTYuLmRlMDFkYjI3OGVjZmFkZDY0
MDA0OTU5NzIwYzM2OTJlNTQ4ODlmYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9RdFdlYlBhZ2VQcm94eS5oCkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNsdWRlICJMYXllclRy
ZWVDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGFnZUNsaWVudC5oIgorI2luY2x1ZGUgIlF0RG93bmxv
YWRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUXRQb2xpY3lJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJR
dFZpZXdJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKQEAgLTE3OCw4
ICsxNzksMTEgQEAgcHVibGljOgogICAgIFFXS0hpc3RvcnkqIGhpc3RvcnkoKSBjb25zdDsKICAg
ICBRdFZpZXdJbnRlcmZhY2UqIHZpZXdJbnRlcmZhY2UoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdJ
bnRlcmZhY2U7IH0KIAorICAgIHZvaWQgaGFuZGxlRG93bmxvYWRSZXF1ZXN0KERvd25sb2FkUHJv
eHkqKTsKKwogcHVibGljIFFfU0xPVFM6CiAgICAgdm9pZCBuYXZpZ2F0aW9uU3RhdGVDaGFuZ2Vk
KCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRG93bmxvYWRSZXNwb25zZShRV2ViRG93bmxvYWRJdGVt
Kik7CiAKIHB1YmxpYzoKICAgICBRX1NJR05BTCB2b2lkIHNjcm9sbFJlcXVlc3RlZChpbnQgZHgs
IGludCBkeSk7CkBAIC0yMDMsNiArMjA3LDcgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFdlYkNvbnRleHQ+IGRlZmF1bHRXS0NvbnRleHQoKTsKICAgICBzdGF0aWMgUmVmUHRy
PFdlYkNvbnRleHQ+IHNfZGVmYXVsdENvbnRleHQ7CisgICAgc3RhdGljIFJlZlB0cjxRdERvd25s
b2FkTWFuYWdlcj4gc19kb3dubG9hZE1hbmFnZXI7CiAgICAgc3RhdGljIHVuc2lnbmVkIHNfZGVm
YXVsdFBhZ2VQcm94eUNvdW50OwogCiAgICAgUmVmUHRyPFdlYkNvbnRleHQ+IG1fY29udGV4dDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJvIGIvU291cmNlL1dlYktpdDIv
V2ViS2l0Mi5wcm8KaW5kZXggMGQyMTY4ODAyYzljYjAxZTNiZmQ5MzQwMjZlZjc5MDhkNzkwODAx
Zi4uYmYzYTUyYjNmZmM4ZDQyNDgzNjA5ZWY5YTBjZmIyOWVhYjQ4ODZkMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcm8KKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi5w
cm8KQEAgLTI2MCw2ICsyNjAsNyBAQCBIRUFERVJTICs9IFwKICAgICBVSVByb2Nlc3MvcXQvUXRE
ZXNrdG9wV2ViUGFnZVByb3h5LmggXAogICAgIFVJUHJvY2Vzcy9xdC9RdFRvdWNoV2ViUGFnZVBy
b3h5LmggXAogICAgIFVJUHJvY2Vzcy9xdC9RdFdlYkVycm9yLmggXAorICAgIFVJUHJvY2Vzcy9x
dC9RdERvd25sb2FkTWFuYWdlci5oIFwKICAgICBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHku
aCBcCiAgICAgVUlQcm9jZXNzL3F0L3F3a2hpc3RvcnkuaCBcCiAgICAgVUlQcm9jZXNzL3F0L3F3
a2hpc3RvcnlfcC5oIFwKQEAgLTUwNCw2ICs1MDUsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBVSVBy
b2Nlc3MvcXQvUXREZXNrdG9wV2ViUGFnZVByb3h5LmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0
VG91Y2hXZWJQYWdlUHJveHkuY3BwIFwKICAgICBVSVByb2Nlc3MvcXQvUXRXZWJFcnJvci5jcHAg
XAorICAgIFVJUHJvY2Vzcy9xdC9RdERvd25sb2FkTWFuYWdlci5jcHAgXAogICAgIFVJUHJvY2Vz
cy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9xd2toaXN0b3J5LmNw
cCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0U0dVcGRhdGVRdWV1ZS5jcHAgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViS2l0MkFQSS5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyQVBJ
LnByaQppbmRleCA1MTg1OTU3NjJlZDA3NTgzODliMTliZmQyOTgzODNkMTQ4NmU4ODkzLi4xYWI4
NjRjODRlZDlhZDMwNjZkNjdjZjIyYmVmOWYzYTdkODliZTJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyQVBJLnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyQVBJLnBy
aQpAQCAtNTAsNiArNTAsNyBAQCBXRUJLSVQyX0FQSV9TT1VSQ0VTID0gXAogICAgICQkU09VUkNF
X0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL3F0L1dLVVJMUXQuY3BwIFwKICAgICAkJFNP
VVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FiYXNld2Vidmlldy5jcHAgXAogICAg
ICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNw
cCBcCisgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxv
YWRpdGVtLmNwcCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
dG91Y2h3ZWJwYWdlLmNwcCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xdG91Y2h3ZWJ2aWV3LmNwcCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9xd2VibmF2aWdhdGlvbmNvbnRyb2xsZXIuY3BwIFwKQEAgLTEzNSw2ICsxMzYs
OCBAQCBXRUJLSVQyX0FQSV9IRUFERVJTICs9IFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlld19wLmggXAogICAgICQkU09VUkNFX0RJUi9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnByZWZlcmVuY2VzLmggXAogICAgICQkU09VUkNF
X0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnByZWZlcmVuY2VzX3AuaCBcCisgICAg
JCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxvYWRpdGVtLmgg
XAorICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYmRvd25sb2Fk
aXRlbV9wLmggXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRv
dWNod2VicGFnZS5oIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3F0b3VjaHdlYnBhZ2VfcC5oIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3F0b3VjaHdlYnZpZXcuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWQuaAppbmRleCBhY2NjZDNmODhlMmE2OTk1OTdhMzliN2JmODI4ZDQz
NjM3YjcwZjM4Li5jMDY2ZTJmNmI0NDM5ZTZjNTZlYzMwMTVmN2JmZTU1MjFhOTcyNDVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKQEAgLTkz
LDYgKzkzLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENhbmNlbChjb25zdCBDb3JlSVBDOjpE
YXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhKTsKICAgICB2b2lkIGRpZERlY2lkZURlc3RpbmF0aW9u
KGNvbnN0IFN0cmluZyYsIGJvb2wgYWxsb3dPdmVyd3JpdGUpOwogCisjaWYgUExBVEZPUk0oUVQp
CisgICAgdm9pZCBzdGFydFRyYW5zZmVyKGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24pOworI2Vu
ZGlmCisKICNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24o
KSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uOyB9CiAgICAgRG93bmxvYWRBdXRoZW50aWNh
dGlvbkNsaWVudCogYXV0aGVudGljYXRpb25DbGllbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCmluZGV4IGE2
MjQ4OTFmODAxOTRmM2FkYzE1MTgxYWM4MDg0YjQ2OTU1OGJjYjYuLjYwZGNlODliNGVlNGNjYzM4
YmVmOTg5NjU1OWY5ZDc4ZTY3ZjMyNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcApAQCAtNzksNCArNzksMTMg
QEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OmRvd25sb2FkRmluaXNoZWQoRG93bmxvYWQqIGRvd25s
b2FkKQogICAgIGRlbGV0ZSBkb3dubG9hZDsKIH0KIAorI2lmIFBMQVRGT1JNKFFUKQordm9pZCBE
b3dubG9hZE1hbmFnZXI6OnN0YXJ0VHJhbnNmZXIodWludDY0X3QgZG93bmxvYWRJRCwgY29uc3Qg
U3RyaW5nJiBkZXN0aW5hdGlvbikKK3sKKyAgICBBU1NFUlQobV9kb3dubG9hZHMuY29udGFpbnMo
ZG93bmxvYWRJRCkpOworICAgIERvd25sb2FkKiBkb3dubG9hZCA9IG1fZG93bmxvYWRzLmdldChk
b3dubG9hZElEKTsKKyAgICBkb3dubG9hZC0+c3RhcnRUcmFuc2ZlcihkZXN0aW5hdGlvbik7Cit9
CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCmluZGV4IDFmMjdiODY3
YWVkNTU4ZmJiNzUzYmM2NTJmMThiMGFjYjY5YTAwMjMuLjZmYTdhZWJlZTRmMjdiZDQzYzE3MDY2
Y2JiN2JiODNhNjg0MmQ0YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCkBAIC0yOSw2ICsyOSwxMCBAQAogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKK25hbWVz
cGFjZSBXVEYgeworY2xhc3MgU3RyaW5nOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
Y2xhc3MgUmVzb3VyY2VIYW5kbGU7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwpAQCAtNTQs
NiArNTgsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZG93bmxvYWRGaW5pc2hlZChEb3dubG9hZCop
OwogICAgIGJvb2wgaXNEb3dubG9hZGluZygpIGNvbnN0IHsgcmV0dXJuICFtX2Rvd25sb2Fkcy5p
c0VtcHR5KCk7IH0KIAorI2lmIFBMQVRGT1JNKFFUKQorICAgIHZvaWQgc3RhcnRUcmFuc2Zlcih1
aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBXVEY6OlN0cmluZyYgZGVzdGluYXRpb24pOworI2Vu
ZGlmCisKIHByaXZhdGU6CiAgICAgRG93bmxvYWRNYW5hZ2VyKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L0Rvd25sb2FkUXQuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvRG93bmxvYWRRdC5jcHAKaW5kZXgg
OWVlOTk5NWU4MGU4ODBkZGE2ZDI3YzlhM2I1MGYwYzE2MWRlYTBlMC4uNGVlZjQxYzQwYjZjNzY0
OWJhOTA1NDM0NmUyODE2YWE4OTU0MGQ3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9Eb3dubG9hZHMvcXQvRG93bmxvYWRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvRG93bmxvYWRRdC5jcHAKQEAgLTQ2LDEzICs0NiwxNCBA
QCB2b2lkIERvd25sb2FkOjpzdGFydChXZWJQYWdlKiBpbml0aWF0aW5nV2ViUGFnZSkKICAgICBB
U1NFUlQoIW1fcXREb3dubG9hZGVyKTsKIAogICAgIG1fcXREb3dubG9hZGVyID0gbmV3IFF0Rmls
ZURvd25sb2FkZXIodGhpcywgYWRvcHRQdHIobWFuYWdlci0+Z2V0KG1fcmVxdWVzdC50b05ldHdv
cmtSZXF1ZXN0KCkpKSk7Ci0gICAgbV9xdERvd25sb2FkZXItPnN0YXJ0KCk7CisgICAgbV9xdERv
d25sb2FkZXItPmluaXQoKTsKIH0KIAogdm9pZCBEb3dubG9hZDo6c3RhcnRXaXRoSGFuZGxlKFdl
YlBhZ2UqIGluaXRpYXRpbmdQYWdlLCBSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIGluaXRpYWxSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
KQogewogICAgIEFTU0VSVCghbV9xdERvd25sb2FkZXIpOwogICAgIG1fcXREb3dubG9hZGVyID0g
bmV3IFF0RmlsZURvd25sb2FkZXIodGhpcywgYWRvcHRQdHIoaGFuZGxlLT5nZXRJbnRlcm5hbCgp
LT5tX2pvYi0+cmVsZWFzZSgpKSk7CisgICAgbV9xdERvd25sb2FkZXItPmluaXQoKTsKIH0KIAog
dm9pZCBEb3dubG9hZDo6Y2FuY2VsKCkKQEAgLTcwLDcgKzcxLDEyIEBAIHZvaWQgRG93bmxvYWQ6
OnBsYXRmb3JtSW52YWxpZGF0ZSgpCiAKIHZvaWQgRG93bmxvYWQ6OmRpZERlY2lkZURlc3RpbmF0
aW9uKGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24sIGJvb2wgYWxsb3dPdmVyd3JpdGUpCiB7Ci0g
ICAgbV9xdERvd25sb2FkZXItPmRlY2lkZWREZXN0aW5hdGlvbihkZXN0aW5hdGlvbiwgYWxsb3dP
dmVyd3JpdGUpOworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRG93bmxvYWQ6OnN0
YXJ0VHJhbnNmZXIoY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbikKK3sKKyAgICBtX3F0RG93bmxv
YWRlci0+c3RhcnRUcmFuc2ZlcihkZXN0aW5hdGlvbik7CiB9CiAKIHZvaWQgRG93bmxvYWQ6OnBs
YXRmb3JtRGlkRmluaXNoKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
RG93bmxvYWRzL3F0L1F0RmlsZURvd25sb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9Eb3dubG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5jcHAKaW5kZXggYzkzNmIwOGU3MGY5
MDRjZjRiNWIzMzZmNTRiNzI2OTc3ZGJlZDBmOS4uYzNiMmU4ZDBlZTIyYTQ3NzU3ZDNjMDNkYThj
YWRkMzBlZGRmMmVlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3du
bG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9Eb3dubG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5jcHAKQEAgLTUzLDQ1ICs1Myw0MSBA
QCBRdEZpbGVEb3dubG9hZGVyOjp+UXRGaWxlRG93bmxvYWRlcigpCiAgICAgYWJvcnREb3dubG9h
ZFdyaXRpbmdBbmRFbWl0RXJyb3IoUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvckFib3J0
ZWQpOwogfQogCi12b2lkIFF0RmlsZURvd25sb2FkZXI6OnN0YXJ0KCkKK3ZvaWQgUXRGaWxlRG93
bmxvYWRlcjo6aW5pdCgpCiB7CiAgICAgY29ubmVjdChtX3JlcGx5LmdldCgpLCBTSUdOQUwocmVh
ZHlSZWFkKCkpLCBTTE9UKG9uUmVhZHlSZWFkKCkpKTsKICAgICBjb25uZWN0KG1fcmVwbHkuZ2V0
KCksIFNJR05BTChmaW5pc2hlZCgpKSwgU0xPVChvbkZpbmlzaGVkKCkpKTsKICAgICBjb25uZWN0
KG1fcmVwbHkuZ2V0KCksIFNJR05BTChlcnJvcihRTmV0d29ya1JlcGx5OjpOZXR3b3JrRXJyb3Ip
KSwgU0xPVChvbkVycm9yKFFOZXR3b3JrUmVwbHk6Ok5ldHdvcmtFcnJvcikpKTsKLQotICAgIC8v
IENhbGwgb25SZWFkeVJlYWQganVzdCBpbiBjYXNlIHNvbWUgZGF0YSBpcyBhbHJlYWR5IHdhaXRp
bmcuCi0gICAgb25SZWFkeVJlYWQoKTsKIH0KIAotdm9pZCBRdEZpbGVEb3dubG9hZGVyOjpkZXRl
cm1pbmVGaWxlbmFtZSgpCitRU3RyaW5nIFF0RmlsZURvd25sb2FkZXI6OmRldGVybWluZUZpbGVu
YW1lKCkKIHsKICAgICBBU1NFUlQoIW1fZGVzdGluYXRpb25GaWxlKTsKIAotICAgIFFTdHJpbmcg
ZmlsZU5hbWVDYW5kaWRhdGUgPSBmaWxlbmFtZUZyb21IVFRQQ29udGVudERpc3Bvc2l0aW9uKFFT
dHJpbmc6OmZyb21MYXRpbjEobV9yZXBseS0+cmF3SGVhZGVyKCJDb250ZW50LURpc3Bvc2l0aW9u
IikpKTsKLSAgICBpZiAoZmlsZU5hbWVDYW5kaWRhdGUuaXNFbXB0eSgpKSB7CisgICAgUVN0cmlu
ZyBmaWxlbmFtZUNhbmRpZGF0ZSA9IGZpbGVuYW1lRnJvbUhUVFBDb250ZW50RGlzcG9zaXRpb24o
UVN0cmluZzo6ZnJvbUxhdGluMShtX3JlcGx5LT5yYXdIZWFkZXIoIkNvbnRlbnQtRGlzcG9zaXRp
b24iKSkpOworICAgIGlmIChmaWxlbmFtZUNhbmRpZGF0ZS5pc0VtcHR5KCkpIHsKICAgICAgICAg
S1VSTCBrdXJsID0gbV9yZXBseS0+dXJsKCk7Ci0gICAgICAgIGZpbGVOYW1lQ2FuZGlkYXRlID0g
ZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKGt1cmwubGFzdFBhdGhDb21wb25lbnQoKSk7CisgICAg
ICAgIGZpbGVuYW1lQ2FuZGlkYXRlID0gZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKGt1cmwubGFz
dFBhdGhDb21wb25lbnQoKSk7CiAgICAgfQogCi0gICAgaWYgKGZpbGVOYW1lQ2FuZGlkYXRlLmlz
RW1wdHkoKSkgeworICAgIGlmIChmaWxlbmFtZUNhbmRpZGF0ZS5pc0VtcHR5KCkpIHsKICAgICAg
ICAgYWJvcnREb3dubG9hZFdyaXRpbmdBbmRFbWl0RXJyb3IoUXRGaWxlRG93bmxvYWRlcjo6RG93
bmxvYWRFcnJvckNhbm5vdERldGVybWluZUZpbGVuYW1lKTsKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gUVN0cmluZygpOwogICAgIH0KIAogICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHdl
IHJlbW92ZSBwb3NzaWJsZSAiLi4vLi4iIHBhcnRzIGluIHRoZSBnaXZlbiBmaWxlIG5hbWUuCi0g
ICAgUUZpbGVJbmZvIGZpbGVOYW1lRmlsdGVyKGZpbGVOYW1lQ2FuZGlkYXRlKTsKLSAgICBRU3Ry
aW5nIGZpbGVOYW1lID0gZmlsZU5hbWVGaWx0ZXIuZmlsZU5hbWUoKTsKKyAgICBRRmlsZUluZm8g
ZmlsZW5hbWVGaWx0ZXIoZmlsZW5hbWVDYW5kaWRhdGUpOworICAgIFFTdHJpbmcgZmlsZW5hbWUg
PSBmaWxlbmFtZUZpbHRlci5maWxlTmFtZSgpOwogCi0gICAgaWYgKGZpbGVOYW1lLmlzRW1wdHko
KSkgeworICAgIGlmIChmaWxlbmFtZS5pc0VtcHR5KCkpIHsKICAgICAgICAgYWJvcnREb3dubG9h
ZFdyaXRpbmdBbmRFbWl0RXJyb3IoUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvckNhbm5v
dERldGVybWluZUZpbGVuYW1lKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gUVN0
cmluZygpOwogICAgIH0KIAotICAgIGJvb2wgYWxsb3dPdmVyd3JpdGU7Ci0gICAgbV9kb3dubG9h
ZC0+ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoZmlsZU5hbWUsIGFsbG93
T3ZlcndyaXRlKTsKKyAgICByZXR1cm4gZmlsZW5hbWU7CiB9CiAKLXZvaWQgUXRGaWxlRG93bmxv
YWRlcjo6ZGVjaWRlZERlc3RpbmF0aW9uKGNvbnN0IFFTdHJpbmcmIGRlY2lkZWRGaWxlUGF0aCwg
Ym9vbCBhbGxvd092ZXJ3cml0ZSkKK3ZvaWQgUXRGaWxlRG93bmxvYWRlcjo6c3RhcnRUcmFuc2Zl
cihjb25zdCBRU3RyaW5nJiBkZWNpZGVkRmlsZVBhdGgpCiB7CiAgICAgQVNTRVJUKCFtX2Rlc3Rp
bmF0aW9uRmlsZSk7CiAKQEAgLTEwMiwxNyArOTgsMTIgQEAgdm9pZCBRdEZpbGVEb3dubG9hZGVy
OjpkZWNpZGVkRGVzdGluYXRpb24oY29uc3QgUVN0cmluZyYgZGVjaWRlZEZpbGVQYXRoLCBib29s
IGEKICAgICB9CiAKICAgICBpZiAoZGVjaWRlZEZpbGVQYXRoLmlzRW1wdHkoKSkgewotICAgICAg
ICBhYm9ydERvd25sb2FkV3JpdGluZ0FuZEVtaXRFcnJvcihRdEZpbGVEb3dubG9hZGVyOjpEb3du
bG9hZEVycm9yQ2FuY2VsbGVkQnlDYWxsZXIpOworICAgICAgICBhYm9ydERvd25sb2FkV3JpdGlu
Z0FuZEVtaXRFcnJvcihRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9yQ2FuY2VsbGVkKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIE93blB0cjxRRmlsZT4gZG93bmxvYWRGaWxl
ID0gYWRvcHRQdHIobmV3IFFGaWxlKGRlY2lkZWRGaWxlUGF0aCkpOwogCi0gICAgaWYgKCFhbGxv
d092ZXJ3cml0ZSAmJiBkb3dubG9hZEZpbGUtPmV4aXN0cygpKSB7Ci0gICAgICAgIGFib3J0RG93
bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKFF0RmlsZURvd25sb2FkZXI6OkRvd25sb2FkRXJyb3JG
aWxlQWxyZWFkeUV4aXN0cyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBpZiAoIWRv
d25sb2FkRmlsZS0+b3BlbihRSU9EZXZpY2U6OldyaXRlT25seSB8IFFJT0RldmljZTo6VHJ1bmNh
dGUpKSB7CiAgICAgICAgIGFib3J0RG93bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKFF0RmlsZURv
d25sb2FkZXI6OkRvd25sb2FkRXJyb3JDYW5ub3RPcGVuRmlsZSk7CiAgICAgICAgIHJldHVybjsK
QEAgLTEzMyw3ICsxMjQsNiBAQCB2b2lkIFF0RmlsZURvd25sb2FkZXI6OmRlY2lkZWREZXN0aW5h
dGlvbihjb25zdCBRU3RyaW5nJiBkZWNpZGVkRmlsZVBhdGgsIGJvb2wgYQogICAgIC8vIGZ1bmN0
aW9uIHdhcyBjYWxsZWQuCiAgICAgaWYgKG1fcmVwbHktPmlzRmluaXNoZWQoKSkKICAgICAgICAg
b25GaW5pc2hlZCgpOwotCiB9CiAKIHZvaWQgUXRGaWxlRG93bmxvYWRlcjo6YWJvcnREb3dubG9h
ZFdyaXRpbmdBbmRFbWl0RXJyb3IoUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvciBlcnJv
ckNvZGUpCkBAIC0xNTcsMTAgKzE0NywxMCBAQCB2b2lkIFF0RmlsZURvd25sb2FkZXI6OmFib3J0
RG93bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKFF0RmlsZURvd25sb2FkZXI6OkRvd25sbwogICAg
IGNhc2UgUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvckNhbm5vdE9wZW5GaWxlOgogICAg
ICAgICB0cmFuc2xhdGVkRXJyb3JNZXNzYWdlID0gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRl
KCJRdEZpbGVEb3dubG9hZGVyIiwgIkNhbm5vdCBvcGVuIGZpbGUgZm9yIHdyaXRpbmciKTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9yRmls
ZUFscmVhZHlFeGlzdHM6Ci0gICAgICAgIHRyYW5zbGF0ZWRFcnJvck1lc3NhZ2UgPSBRQ29yZUFw
cGxpY2F0aW9uOjp0cmFuc2xhdGUoIlF0RmlsZURvd25sb2FkZXIiLCAiRmlsZSBhbHJlYWR5IGV4
aXN0cyIpOworICAgIGNhc2UgUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvckRlc3RpbmF0
aW9uQWxyZWFkeUV4aXN0czoKKyAgICAgICAgdHJhbnNsYXRlZEVycm9yTWVzc2FnZSA9IFFDb3Jl
QXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUXRGaWxlRG93bmxvYWRlciIsICJEZXN0aW5hdGlvbiBh
bHJlYWR5IGV4aXN0cyIpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFF0RmlsZURvd25sb2Fk
ZXI6OkRvd25sb2FkRXJyb3JDYW5jZWxsZWRCeUNhbGxlcjoKKyAgICBjYXNlIFF0RmlsZURvd25s
b2FkZXI6OkRvd25sb2FkRXJyb3JDYW5jZWxsZWQ6CiAgICAgICAgIHRyYW5zbGF0ZWRFcnJvck1l
c3NhZ2UgPSBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlF0RmlsZURvd25sb2FkZXIiLCAi
RG93bmxvYWQgY2FuY2VsbGVkIGJ5IGNhbGxlciIpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IFF0RmlsZURvd25sb2FkZXI6OkRvd25sb2FkRXJyb3JDYW5ub3REZXRlcm1pbmVGaWxlbmFtZToK
QEAgLTE3NSw2ICsxNjUsMjcgQEAgdm9pZCBRdEZpbGVEb3dubG9hZGVyOjphYm9ydERvd25sb2Fk
V3JpdGluZ0FuZEVtaXRFcnJvcihRdEZpbGVEb3dubG9hZGVyOjpEb3dubG8KICAgICBtX2Rvd25s
b2FkLT5kaWRGYWlsKGRvd25sb2FkRXJyb3IsIENvcmVJUEM6OkRhdGFSZWZlcmVuY2UoMCwgMCkp
OwogfQogCit2b2lkIFF0RmlsZURvd25sb2FkZXI6OmhhbmRsZURvd25sb2FkUmVzcG9uc2UoKQor
eworICAgIC8vIEJ5IEFQSSBjb250cmFjdCwgUU5ldHdvcmtSZXBseTo6bWV0YURhdGFDaGFuZ2Vk
IGNhbm5vdCByZWFsbHkgYmUgdHJ1c3RlZC4KKyAgICAvLyBUaHVzIHdlIG5lZWQgdG8gY2FsbCB0
aGlzIHVwb24gcmVjZWl2aW5nIGZpcnN0IGRhdGEuCisgICAgU3RyaW5nIGNvbnRlbnRUeXBlID0g
bV9yZXBseS0+aGVhZGVyKFFOZXR3b3JrUmVxdWVzdDo6Q29udGVudFR5cGVIZWFkZXIpLnRvU3Ry
aW5nKCk7CisgICAgU3RyaW5nIGVuY29kaW5nID0gZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBl
KGNvbnRlbnRUeXBlKTsKKyAgICBTdHJpbmcgbWltZVR5cGUgPSBleHRyYWN0TUlNRVR5cGVGcm9t
TWVkaWFUeXBlKGNvbnRlbnRUeXBlKTsKKyAgICBTdHJpbmcgZmlsZW5hbWUgPSBkZXRlcm1pbmVG
aWxlbmFtZSgpOworCisgICAgLy8gSWYgZmlsZW5hbWUgaXMgZW1wdHkgaXQgbWVhbnMgZGV0ZXJt
aW5lRmlsZW5hbWUgYWJvcnRlZCBhbmQgZW1pdHRlZCBhbiBlcnJvci4KKyAgICBpZiAoZmlsZW5h
bWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBMZXQncyB0cnkgdG8gZ3Vl
c3MgZnJvbSB0aGUgZXh0ZW5zaW9uLgorICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5KCkpCisgICAg
ICAgIG1pbWVUeXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JQYXRoKG1fcmVw
bHktPnVybCgpLnBhdGgoKSk7CisKKyAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKG1fcmVw
bHktPnVybCgpLCBtaW1lVHlwZSwgbV9yZXBseS0+aGVhZGVyKFFOZXR3b3JrUmVxdWVzdDo6Q29u
dGVudExlbmd0aEhlYWRlcikudG9Mb25nTG9uZygpLCBlbmNvZGluZywgZmlsZW5hbWUpOworICAg
IG1fZG93bmxvYWQtPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7Cit9CisKIHZvaWQgUXRG
aWxlRG93bmxvYWRlcjo6b25SZWFkeVJlYWQoKQogewogICAgIGlmIChtX2Rlc3RpbmF0aW9uRmls
ZSkgewpAQCAtMTk1LDI3ICsyMDYsMjEgQEAgdm9pZCBRdEZpbGVEb3dubG9hZGVyOjpvblJlYWR5
UmVhZCgpCiAKICAgICAgICAgbV9kb3dubG9hZC0+ZGlkUmVjZWl2ZURhdGEoYnl0ZXNXcml0dGVu
KTsKICAgICB9IGVsc2UgaWYgKCFtX2hlYWRlcnNSZWFkKSB7Ci0gICAgICAgIC8vIEJ5IEFQSSBj
b250cmFjdCwgUU5ldHdvcmtSZXBseTo6bWV0YURhdGFDaGFuZ2VkIGNhbm5vdCByZWFsbHkgYmUg
dHJ1c3RlZC4KLSAgICAgICAgLy8gVGh1cyB3ZSBuZWVkIHRvIGNhbGwgdGhpcyB1cG9uIHJlY2Vp
dmluZyBmaXJzdCBkYXRhLgotICAgICAgICBTdHJpbmcgY29udGVudFR5cGUgPSBtX3JlcGx5LT5o
ZWFkZXIoUU5ldHdvcmtSZXF1ZXN0OjpDb250ZW50VHlwZUhlYWRlcikudG9TdHJpbmcoKTsKLSAg
ICAgICAgU3RyaW5nIGVuY29kaW5nID0gZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnRl
bnRUeXBlKTsKLSAgICAgICAgU3RyaW5nIG1pbWVUeXBlID0gZXh0cmFjdE1JTUVUeXBlRnJvbU1l
ZGlhVHlwZShjb250ZW50VHlwZSk7Ci0KLSAgICAgICAgLy8gTGV0J3MgdHJ5IHRvIGd1ZXNzIGZy
b20gdGhlIGV4dGVuc2lvbi4KLSAgICAgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIG1pbWVUeXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JQYXRoKG1f
cmVwbHktPnVybCgpLnBhdGgoKSk7Ci0KLSAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25z
ZShtX3JlcGx5LT51cmwoKSwgbWltZVR5cGUsIG1fcmVwbHktPmhlYWRlcihRTmV0d29ya1JlcXVl
c3Q6OkNvbnRlbnRMZW5ndGhIZWFkZXIpLnRvTG9uZ0xvbmcoKSwgZW5jb2RpbmcsIFN0cmluZygp
KTsKLSAgICAgICAgbV9kb3dubG9hZC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKLQot
ICAgICAgICBkZXRlcm1pbmVGaWxlbmFtZSgpOwotCisgICAgICAgIGhhbmRsZURvd25sb2FkUmVz
cG9uc2UoKTsKICAgICAgICAgbV9oZWFkZXJzUmVhZCA9IHRydWU7CiAgICAgfQogfQogCiB2b2lk
IFF0RmlsZURvd25sb2FkZXI6Om9uRmluaXNoZWQoKQogeworICAgIC8vIElmIGl0J3MgZmluaXNo
ZWQgYW5kIHdlIGhhdmVuJ3QgZXZlbiByZWFkIHRoZSBoZWFkZXJzLCBpdCBtZWFucyB3ZSBuZXZl
ciBnb3QgdG8gb25SZWFkeVJlYWQgYW5kIHRoYXQgd2UgYXJlCisgICAgLy8gcHJvYmFibHkgZGVh
bGluZyB3aXRoIHRoZSBkb3dubG9hZCBvZiBhIGxvY2FsIGZpbGUgb3Igb2YgYSBzbWFsbCBmaWxl
IHRoYXQgd2FzIHN0YXJ0ZWQgd2l0aCBhIGhhbmRsZS4KKyAgICBpZiAoIW1faGVhZGVyc1JlYWQp
IHsKKyAgICAgICAgaGFuZGxlRG93bmxvYWRSZXNwb25zZSgpOworICAgICAgICBtX2hlYWRlcnNS
ZWFkID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmICghbV9kZXN0aW5h
dGlvbkZpbGUpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjIzLDYgKzIyOCw4IEBAIHZvaWQgUXRG
aWxlRG93bmxvYWRlcjo6b25GaW5pc2hlZCgpCiAKICAgICBpZiAobV9lcnJvciA9PSBRTmV0d29y
a1JlcGx5OjpOb0Vycm9yKQogICAgICAgICBtX2Rvd25sb2FkLT5kaWRGaW5pc2goKTsKKyAgICBl
bHNlIGlmICAobV9lcnJvciA9PSBRTmV0d29ya1JlcGx5OjpPcGVyYXRpb25DYW5jZWxlZEVycm9y
KQorICAgICAgICBhYm9ydERvd25sb2FkV3JpdGluZ0FuZEVtaXRFcnJvcihRdEZpbGVEb3dubG9h
ZGVyOjpEb3dubG9hZEVycm9yQ2FuY2VsbGVkKTsKICAgICBlbHNlCiAgICAgICAgIGFib3J0RG93
bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKFF0RmlsZURvd25sb2FkZXI6OkRvd25sb2FkRXJyb3JO
ZXR3b3JrRmFpbHVyZSk7CiB9CkBAIC0yMzUsNiArMjQyLDcgQEAgdm9pZCBRdEZpbGVEb3dubG9h
ZGVyOjpvbkVycm9yKFFOZXR3b3JrUmVwbHk6Ok5ldHdvcmtFcnJvciBjb2RlKQogdm9pZCBRdEZp
bGVEb3dubG9hZGVyOjpjYW5jZWwoKQogewogICAgIG1fcmVwbHktPmFib3J0KCk7CisgICAgLy8g
UXRGaWxlRG93bmxvYWRlcjo6b25GaW5pc2hlZCgpIHdpbGwgYmUgY2FsbGVkIGFuZCB3aWxsIHJh
aXNlIGEgRG93bmxvYWRFcnJvckNhbmNlbGxlZC4KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZp
bGVEb3dubG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9R
dEZpbGVEb3dubG9hZGVyLmgKaW5kZXggYjZiOGJhMjhiZWE5ZjhhYjFkNjk0Yzg0MzM0MTQ0YTRh
MmM5ZDE1Yi4uMGFlMGZkODRhNjljN2RlYzFmMmE0MDg2OTJhZTZiOTZiYjliMmU2MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvUXRGaWxlRG93bmxv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L1F0Rmls
ZURvd25sb2FkZXIuaApAQCAtNDQsMTYgKzQ0LDE2IEBAIGNsYXNzIFF0RmlsZURvd25sb2FkZXIg
OiBwdWJsaWMgUU9iamVjdCB7CiBwdWJsaWM6CiAgICAgUXRGaWxlRG93bmxvYWRlcihEb3dubG9h
ZCosIFBhc3NPd25QdHI8UU5ldHdvcmtSZXBseT4pOwogICAgIHZpcnR1YWwgflF0RmlsZURvd25s
b2FkZXIoKTsKLSAgICB2b2lkIGRlY2lkZWREZXN0aW5hdGlvbihjb25zdCBRU3RyaW5nJiBkZWNp
ZGVkRmlsZVBhdGgsIGJvb2wgYWxsb3dPdmVyd3JpdGUpOwogICAgIHZvaWQgY2FuY2VsKCk7Ci0g
ICAgdm9pZCBzdGFydCgpOworICAgIHZvaWQgaW5pdCgpOworICAgIHZvaWQgc3RhcnRUcmFuc2Zl
cihjb25zdCBRU3RyaW5nJiBkZXN0aW5hdGlvbik7CiAKICAgICBlbnVtIERvd25sb2FkRXJyb3Ig
ewogICAgICAgICBEb3dubG9hZEVycm9yQWJvcnRlZCA9IDAsCiAgICAgICAgIERvd25sb2FkRXJy
b3JDYW5ub3RXcml0ZVRvRmlsZSwKICAgICAgICAgRG93bmxvYWRFcnJvckNhbm5vdE9wZW5GaWxl
LAotICAgICAgICBEb3dubG9hZEVycm9yRmlsZUFscmVhZHlFeGlzdHMsCi0gICAgICAgIERvd25s
b2FkRXJyb3JDYW5jZWxsZWRCeUNhbGxlciwKKyAgICAgICAgRG93bmxvYWRFcnJvckRlc3RpbmF0
aW9uQWxyZWFkeUV4aXN0cywKKyAgICAgICAgRG93bmxvYWRFcnJvckNhbmNlbGxlZCwKICAgICAg
ICAgRG93bmxvYWRFcnJvckNhbm5vdERldGVybWluZUZpbGVuYW1lLAogICAgICAgICBEb3dubG9h
ZEVycm9yTmV0d29ya0ZhaWx1cmUKICAgICB9OwpAQCAtNjUsNyArNjUsOCBAQCBwcml2YXRlIHNs
b3RzOgogCiBwcml2YXRlOgogICAgIHZvaWQgYWJvcnREb3dubG9hZFdyaXRpbmdBbmRFbWl0RXJy
b3IoUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvcik7Ci0gICAgdm9pZCBkZXRlcm1pbmVG
aWxlbmFtZSgpOworICAgIFFTdHJpbmcgZGV0ZXJtaW5lRmlsZW5hbWUoKTsKKyAgICB2b2lkIGhh
bmRsZURvd25sb2FkUmVzcG9uc2UoKTsKIAogICAgIERvd25sb2FkKiBtX2Rvd25sb2FkOwogICAg
IE93blB0cjxRTmV0d29ya1JlcGx5PiBtX3JlcGx5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAKaW5kZXggZThhYTdhZGE0YjZlNWU2YWYxNmE0NzM4M2Y5MmM0MDdiMjg2
OGE1Zi4uYmQ2OWNhZDdlZGIwNWY1YmE5YTRhYmMwNTYzYTM3NjJhZjM3ZTU2OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC05NTcsNiArOTU3LDEzIEBAIHZv
aWQgV2ViUHJvY2Vzczo6Y2FuY2VsRG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCkKICAgICBE
b3dubG9hZE1hbmFnZXI6OnNoYXJlZCgpLmNhbmNlbERvd25sb2FkKGRvd25sb2FkSUQpOwogfQog
CisjaWYgUExBVEZPUk0oUVQpCit2b2lkIFdlYlByb2Nlc3M6OnN0YXJ0VHJhbnNmZXIodWludDY0
X3QgZG93bmxvYWRJRCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbikKK3sKKyAgICBEb3dubG9h
ZE1hbmFnZXI6OnNoYXJlZCgpLnN0YXJ0VHJhbnNmZXIoZG93bmxvYWRJRCwgZGVzdGluYXRpb24p
OworfQorI2VuZGlmCisKIHZvaWQgV2ViUHJvY2Vzczo6c2V0RW5oYW5jZWRBY2Nlc3NpYmlsaXR5
KGJvb2wgZmxhZykKIHsKICAgICBXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpzZXRFbmhhbmNlZFVz
ZXJJbnRlcmZhY2VBY2Nlc3NpYmlsaXR5KGZsYWcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaAppbmRleCAwZDVkNzRhOWMxYzE0OTEyZDIzNmRkMzg0ZjY1MzYwMzFiNDE0MTMy
Li4zOWY4YTVmMGNlODhjMDgwM2ZiMjk2NjkwYTZjZjc0ZTYxZTYyZDJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMTc1LDYgKzE3NSw5IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIGRvd25sb2FkUmVxdWVzdCh1aW50NjRfdCBkb3dubG9hZElELCB1aW50NjRfdCBp
bml0aWF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2
b2lkIGNhbmNlbERvd25sb2FkKHVpbnQ2NF90IGRvd25sb2FkSUQpOworI2lmIFBMQVRGT1JNKFFU
KQorICAgIHZvaWQgc3RhcnRUcmFuc2Zlcih1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBTdHJp
bmcmIGRlc3RpbmF0aW9uKTsKKyNlbmRpZgogCiAgICAgdm9pZCBzZXRUZXh0Q2hlY2tlclN0YXRl
KGNvbnN0IFRleHRDaGVja2VyU3RhdGUmKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA0NGY0NDE5YTA3ODdmYzc3NTlj
YzUyYjNlNTQ0MzVmNzk1ZmMzOGY4Li5mOTE5NmFlMmE5OGQxN2I2ODNhZDQ3NjBjMGI1ZjQ5N2Ex
NWVmYzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCkBAIC02NCw2ICs2NCw5IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgewogICAg
ICMgdHdvIG1lc3NhZ2VzLgogICAgIERvd25sb2FkUmVxdWVzdCh1aW50NjRfdCBkb3dubG9hZElE
LCB1aW50NjRfdCBpbml0aWF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVx
dWVzdCkKICAgICBDYW5jZWxEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElEKQorI2lmIFBMQVRG
T1JNKFFUKQorICAgIFN0YXJ0VHJhbnNmZXIodWludDY0X3QgZG93bmxvYWRJRCwgV1RGOjpTdHJp
bmcgZGVzdGluYXRpb24pCisjZW5kaWYKIAogICAgIFNldFRleHRDaGVja2VyU3RhdGUoV2ViS2l0
OjpUZXh0Q2hlY2tlclN0YXRlIHRleHRDaGVja2VyU3RhdGUpCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113464</attachid>
            <date>2011-11-03 05:15:26 -0700</date>
            <delta_ts>2011-11-03 06:05:46 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-68962-20111103141452.patch</filename>
            <type>text/plain</type>
            <size>63708</size>
            <attacher name="Jesus Sanchez-Palencia">jesus</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkxNjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggODEzNTU4NGJiOGRi
NTMwZDA1ZmE3MmJlOGJjMWI2OWU2Y2QyZDllNS4uZTBkYmYxNGJkNDQyODcyZTAzOGI4MGU1NmUx
OTFhMjA4NWQ3OGIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0xMS0w
MiAgSmVzdXMgU2FuY2hlei1QYWxlbmNpYSAgPGplc3VzLnBhbGVuY2lhQG9wZW5ib3NzYS5vcmc+
CisKKyAgICAgICAgW1F0XVtXSzJdIERvd25sb2FkIHN1cHBvcnQgYW5kIEFQSSBpbiBVSVByb2Nl
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4OTYy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgUmVnaXN0
ZXJpbmcgbmV3IHFtbCB0eXBlIFFXZWJEb3dubG9hZEl0ZW0uCisKKyAgICAgICAgKiBkZWNsYXJh
dGl2ZS9wbHVnaW4uY3BwOgorICAgICAgICAoV2ViS2l0UW1sUGx1Z2luOjpyZWdpc3RlclR5cGVz
KToKKwogMjAxMS0xMS0wMiAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CiAKICAgICAgICAg
RXhwYW5kIERyYWdDb250cm9sbGVyIHRvIHByb3ZpZGUgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0
aGUgZHJhZ2dpbmcgc2Vzc2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDQ1YWQyMWM3NTY5YWY3ODQ5ZDcyYzgz
YWE4NGYzZDhiYzY3ZjNhMjIuLjhmMzI5YzUwYTUxMWJiNGQyYTU4OWY4NTNjYWEyMzEzNzZjYzA1
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNDggQEAKKzIwMTEtMTEtMDIgIEplc3VzIFNhbmNo
ZXotUGFsZW5jaWEgIDxqZXN1cy5wYWxlbmNpYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFtR
dF1bV0syXSBEb3dubG9hZCBzdXBwb3J0IGFuZCBBUEkgaW4gVUlQcm9jZXNzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODk2MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFdlIGltcGxlbWVudCBvdXIgV2tD
b250ZXh0RG93bmxvYWRDbGllbnQgYW5kIHRoZSBuZWVkZWQgY2FsbGJhY2tzLgorICAgICAgICBX
ZSBhbHNvIGFkZCBBUElzIGJ5IGV4cG9zaW5nIFFXZWJEb3dubG9hZEl0ZW0uIE9iamVjdHMgZnJv
bSB0aGlzIHR5cGUKKyAgICAgICAgaGF2ZSB0aGVpciBvd25lcnNoaXAgaGFuZGxlZCBieSBRRGVz
a3RvcFdlYlZpZXcgYW5kIHdpbGwgYmUgY3JlYXRlZCBvcgorICAgICAgICBkZXN0cm95ZWQgYXMg
bmVlZGVkLiBDbGFzc2VzIGltcGxlbWVudGluZyBWaWV3SW50ZXJmYWNlIChRRGVza3RvcFdlYlZp
ZXdQcml2YXRlCisgICAgICAgIGFuZCBUb3VjaFZpZXdJbnRlcmZhY2UpIHdpbGwgcmVjZWl2ZSBh
IHNpZ25hbCAoZG93bmxvYWRSZXF1ZXN0ZWQpIHdpdGggYSBwb2ludGVyCisgICAgICAgIHRvIHRo
ZSByZWNlbnRseSBjcmVhdGVkIFFXZWJEb3dubG9hZEl0ZW0uIFdpdGggdGhhdCB0aGV5IGNhbiBj
b25uZWN0IHRoZSBwcm9wZXIKKyAgICAgICAgc2lnbmFscyBhbmQgc2xvdHMsIHNldCB0aGUgZG93
bmxvYWQgZGVzdGluYXRpb24gcGF0aCBhbmQgdGhlbiBjYWxsIHN0YXJ0KCkuCisgICAgICAgIE9i
amVjdHMgb2YgdGhpcyB0eXBlIHdpbGwgcHJvdmlkZSB0aGUgcHJvZ3Jlc3Mgb2YgYSBkb3dubG9h
ZCwgYSBzbG90IHRvIGNhbmNlbCBpdCwKKyAgICAgICAgYW5kIHNpZ25hbHMgZm9yIGdldHRpbmcg
ZmluaXNoZWQgb3IgZmFpbHVyZSBzdGF0dXMuCisgICAgICAgIFFXZWJEb3dubG9hZEl0ZW0gd2Fz
IGFsc28gZXhwb3NlZCBpbiBRTUwuCisgICAgICAgIFF0IG5lZWRlZCBhbiBhc3luY2hyb25vdXMg
d2F5IGZvciBVSVByb2Nlc3MgdG8gcmV0dXJuIGEgZGVzdGluYXRpb24gcGF0aCB0byBXZWJQcm9j
ZXNzLAorICAgICAgICB0aGVyZWZvcmUgdGhlIHN0YXJ0VHJhbnNmZXIgQVBJIHdhcyBhZGRlZCB0
byBXZWJLaXQyJ3MgRG93bmxvYWQgaGFuZGxlcnMuCisKKyAgICAgICAgKiBTaGFyZWQvcXQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzUXQuY3BwOgorICAgICAgICAoQ29yZUlQQzo6OjplbmNvZGUpOgor
ICAgICAgICAoQ29yZUlQQzo6OjpkZWNvZGUpOgorICAgICAgICBBZGQgZW5jb2RpbmcgYW5kIGRl
Y29kaW5nIG9mIHN1Z2dlc3RlZEZpbGVuYW1lIGZvciBSZXNvdXJjZVJlc3BvbnNlLgorCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9xdC9XS1ZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L3F0L3FiYXNld2Vidmlldy5oOiBBZGQgc2lnbmFsIGRvd25sb2FkUmVxdWVzdGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFEZXNr
dG9wV2ViVmlld1ByaXZhdGU6OmRvd25sb2FkUmVxdWVzdGVkKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlld19wLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L3F0L3F3ZWJkb3dubG9hZGl0ZW0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFFXZWJEb3dubG9hZEl0
ZW1Qcml2YXRlOjpRV2ViRG93bmxvYWRJdGVtUHJpdmF0ZSk6CisgICAgICAgIChRV2ViRG93bmxv
YWRJdGVtOjpRV2ViRG93bmxvYWRJdGVtKToKKyAgICAgICAgKFFXZWJEb3dubG9hZEl0ZW06On5R
V2ViRG93bmxvYWRJdGVtKToKKyAgICAgICAgKFFXZWJEb3dubG9hZEl0ZW06OnVybCk6CisgICAg
ICAgIChRV2ViRG93bmxvYWRJdGVtOjpkZXN0aW5hdGlvblBhdGgpOgorICAgICAgICAoUVdlYkRv
d25sb2FkSXRlbTo6c2V0RGVzdGluYXRpb25QYXRoKToKKyAgICAgICAgKFFXZWJEb3dubG9hZEl0
ZW06OnN1Z2dlc3RlZEZpbGVuYW1lKToKKyAgICAgICAgKFFXZWJEb3dubG9hZEl0ZW06Om1pbWVU
eXBlKToKKyAgICAgICAgKFFXZWJEb3dubG9hZEl0ZW06OmV4cGVjdGVkQ29udGVudExlbmd0aCk6
CisgICAgICAgIChRV2ViRG93bmxvYWRJdGVtOjp0b3RhbEJ5dGVzUmVjZWl2ZWQpOgorICAgICAg
ICAoUVdlYkRvd25sb2FkSXRlbTo6Y2FuY2VsKToKKyAgICAgICAgKFFXZWJEb3dubG9hZEl0ZW06
OnN0YXJ0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F3ZWJkb3dubG9hZGl0ZW0uaDog
QWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxvYWRpdGVtX3AuaDog
QWRkZWQuCisgICAgICAgIChRV2ViRG93bmxvYWRJdGVtUHJpdmF0ZTo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvRGVza3Rv
cFdlYlZpZXcvdHN0X2Rvd25sb2FkLnFtbDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21tb24vZG93bmxvYWQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21tb24vZG93bmxvYWQuemlwOiBB
ZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL3FtbHRlc3Rz
LnBybzoKKworICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OnN0YXJ0VHJhbnNmZXIpOiBRdCBvbmx5
IGZ1bmN0aW9uIGFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQ
cm94eS5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDogQWRkZWQgUXQgc3Bl
Y2lmaWMgZnVuY3Rpb24gdG8gY2FsbCBoYW5kbGVEb3dubG9hZFJlcXVlc3QgZnJvbSBRdFdlYlBh
Z2VQcm94eS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29udGV4dDo6ZG93bmxvYWQpOgorICAgICAgICBVc2luZyBXZWJQYWdlUHJv
eHk6OmhhbmRsZURvd25sb2FkUmVxdWVzdCB0byBib290c3RyYXAgYSBkb3dubG9hZCB0aHJvdWdo
IFBhZ2VDbGllbnQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKToKKyAg
ICAgICAgVXNpbmcgaGFuZGxlRG93bmxvYWRSZXF1ZXN0KCkgdG8gYm9vdHN0cmFwIGEgZG93bmxv
YWQgdGhyb3VnaCBQYWdlQ2xpZW50LgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omhh
bmRsZURvd25sb2FkUmVxdWVzdCk6IENhbGxzIFBhZ2VDbGllbnQ6OmhhbmRsZURvd25sb2FkUmVx
dWVzdCgpLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKworICAgICAgICAq
IFVJUHJvY2Vzcy9xdC9RdERvd25sb2FkTWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0Ojp0b1F0RG93bmxvYWRNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6cXRfd2tfZGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6cXRfd2tfZGlkQ3JlYXRlRGVzdGluYXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpxdF93a19kaWRGaW5pc2hEb3dubG9hZCk6CisgICAgICAg
IChXZWJLaXQ6OnF0X3drX2RpZEZhaWxEb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OnF0X3dr
X2RpZFJlY2VpdmVEYXRhRm9yRG93bmxvYWQpOgorICAgICAgICAoUXREb3dubG9hZE1hbmFnZXI6
OmRvd25sb2FkUmVjZWl2ZWRSZXNwb25zZSk6IFdpbGwgcmVhY2ggUXRXZWJQYWdlUHJveHk6OmRp
ZFJlY2VpdmVEb3dubG9hZFJlc3BvbnNlLgorICAgICAgICAoUXREb3dubG9hZE1hbmFnZXI6OmRv
d25sb2FkQ3JlYXRlZERlc3RpbmF0aW9uKToKKyAgICAgICAgKFF0RG93bmxvYWRNYW5hZ2VyOjpk
b3dubG9hZEZpbmlzaGVkKToKKyAgICAgICAgKFF0RG93bmxvYWRNYW5hZ2VyOjpkb3dubG9hZEZh
aWxlZCk6CisgICAgICAgIChRdERvd25sb2FkTWFuYWdlcjo6ZG93bmxvYWREYXRhUmVjZWl2ZWQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdERvd25sb2FkTWFuYWdlci5oOiBBZGRlZC4KKyAg
ICAgICAgQm9vdHN0cmFwIG91ciBXS0NvbnRleHREb3dubG9hZENsaWVudCBhbmQgc2V0IGl0cyBj
YWxsYmFja3MuCisgICAgICAgIFRoaXMgZW50aXR5IHdpbGwgYWxzbyBoYW5kbGUgYWxsIGRvd25s
b2FkcyBhbmQga2VlcCBhIG1hcCBvZiB0aGVtLgorICAgICAgICBJdCB3aWxsIGJlIGtlcHQgYWxp
dmUgdG9nZXRoZXIgd2l0aCB0aGUgV2ViQ29udGV4dCBhcyBhIHN0YXRpYyBtZW1iZXIKKyAgICAg
ICAgb2YgUXRXZWJQYWdlUHJveHksIHNvIHdlIGNhbiBrZWVwIGl0IGFjcm9zcyBzZXZlcmFsIFdl
YlBhZ2VzIGFuZCwgdGhlcmVmb3JlLAorICAgICAgICBXZWJWaWV3cy4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChRdFdlYlBhZ2VQcm94eTo6
ZGVmYXVsdFdLQ29udGV4dCk6CisgICAgICAgIChRdFdlYlBhZ2VQcm94eTo6flF0V2ViUGFnZVBy
b3h5KToKKyAgICAgICAgKFF0V2ViUGFnZVByb3h5OjpoYW5kbGVEb3dubG9hZFJlcXVlc3QpOgor
ICAgICAgICAoUXRXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVEb3dubG9hZFJlc3BvbnNlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaDoKKyAgICAgICAgRnJvbSBub3cg
b24gaXQgd2lsbCBrZWVwIGEgc3RhdGljIFF0RG93bmxvYWRNYW5hZ2VyIHRvIGxpdmUgdG9nZXRo
ZXIKKyAgICAgICAgd2l0aCB0aGUgZGVmYXVsdCBXZWJDb250ZXh0LiBJdCBpbXBsZW1lbnRzIFBh
Z2VDbGllbnQ6OmhhbmRsZURvd25sb2FkUmVxdWVzdC4KKyAgICAgICAgUXRXZWJQYWdlUHJveHk6
OmRpZFJlY2VpdmVEb3dubG9hZFJlc3BvbnNlIHdpbGwgZW1pdCB0aGUgdmlldydzIHNpZ25hbCBk
b3dubG9hZFJlcXVlc3RlZC4KKworICAgICAgICogVUlQcm9jZXNzL3F0L1F0VG91Y2hWaWV3SW50
ZXJmYWNlLmg6CisgICAgICAgIChXZWJLaXQ6OlF0VG91Y2hWaWV3SW50ZXJmYWNlOjpkb3dubG9h
ZFJlcXVlc3RlZCk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0Vmlld0ludGVyZmFjZS5oOgor
CisgICAgICAgICogVUlQcm9jZXNzL3F0L3F3ZWJlcnJvci5jcHA6CisgICAgICAgIChRV2ViRXJy
b3I6OmRlc2NyaXB0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvcXdlYmVycm9yLmg6Cisg
ICAgICAgIChRV2ViRXJyb3I6OmVycm9yQ29kZUFzRG93bmxvYWRFcnJvcik6CisgICAgICAgIEFk
ZCBEb3dubG9hZCBlcnJvciBoYW5kbGluZyB0byBRV2ViRXJyb3IgYW5kIGEgbmV3IEFQSQorICAg
ICAgICB0byByZXRyaWV2ZSB0aGUgZXJyb3IgZGVzY3JpcHRpb24gZnJvbSB0aGUgb3JpZ2luYWwg
UmVzb3VyY2VFcnJvci4KKyAgICAgICAgQWxzbywgaXQgbm93IGhhcyBRV2ViRG93bmxvYWRJdGVt
OjpEb3dubG9hZEVycm9yIGVycm9yQ29kZUFzRG93bmxvYWRFcnJvcigpCisgICAgICAgIHRoYXQg
cmV0dXJucyB0aGUgZXJyb3IgY29kZSBhcyBhIERvd25sb2FkRXJyb3IuCisKKyAgICAgICAgKiBX
ZWJLaXQyLnBybzoKKyAgICAgICAgKiBXZWJLaXQyQVBJLnByaToKKworICAgICAgICAqIFdlYlBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2Vy
OjpzdGFydFRyYW5zZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZE1hbmFnZXIuaDoKKyAgICAgICAgQWRkaW5nIFF0IHNwZWNpZmljIHN0YXJ0VHJhbnNmZXIgZnVu
Y3Rpb24uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9Eb3dubG9hZFF0LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6
RG93bmxvYWQ6OnN0YXJ0V2l0aEhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpk
aWREZWNpZGVEZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpzdGFydFRy
YW5zZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3dubG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UXRGaWxlRG93bmxvYWRlcjo6aW5pdCk6IHN0YXJ0
KCkgd2FzIHJlbmFtZWQgdG8gaW5pdCgpLgorICAgICAgICAoV2ViS2l0OjpRdEZpbGVEb3dubG9h
ZGVyOjpkZXRlcm1pbmVGaWxlbmFtZSk6CisgICAgICAgIENhbGxpbmcgb25SZWFkeVJlYWQoKSBo
ZXJlIHdhcyB1bm5lY2Vzc2FyeSBhbmQgaXQgd2FzIHRyaWdnZXJpbmcgdGhlIG92ZXJhbGwKKyAg
ICAgICAgZG93bmxvYWQgcHJvY2VzcyBldmVuIGJlZm9yZSBEb3dubG9hZE1hbmFnZXIgZmluaXNo
ZWQgc3RhcnREb3dubG9hZCgpLiBUaGlzCisgICAgICAgIHdhcyBsZWFkaW5nIHRvIGEgRG93bmxv
YWRNYW5hZ2VyIHdpdGggYW4gZW1wdHkgbGlzdCBvZiBkb3dubG9hZHMuCisgICAgICAgIChXZWJL
aXQ6OlF0RmlsZURvd25sb2FkZXI6OnN0YXJ0VHJhbnNmZXIpOiBkZWNpZGVkRGVzdGluYXRpb24o
KSBiZWNhbWUgc3RhcnRUcmFuc2ZlcigpLgorICAgICAgICAoV2ViS2l0OjpRdEZpbGVEb3dubG9h
ZGVyOjphYm9ydERvd25sb2FkV3JpdGluZ0FuZEVtaXRFcnJvcik6CisgICAgICAgIChXZWJLaXQ6
OlF0RmlsZURvd25sb2FkZXI6OmhhbmRsZURvd25sb2FkUmVzcG9uc2UpOgorICAgICAgICAoV2Vi
S2l0OjpRdEZpbGVEb3dubG9hZGVyOjpvblJlYWR5UmVhZCk6CisgICAgICAgIChXZWJLaXQ6OlF0
RmlsZURvd25sb2FkZXI6Om9uRmluaXNoZWQpOgorICAgICAgICAoV2ViS2l0OjpRdEZpbGVEb3du
bG9hZGVyOjpjYW5jZWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvRG93bmxvYWRzL3F0L1F0Rmls
ZURvd25sb2FkZXIuaDoKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnN0YXJ0VHJhbnNmZXIpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgQWRkaW5nIFF0IHNwZWNpZmljIG1lc3NhZ2UgU3RhcnRUcmFu
c2ZlciBhbmQgaGFuZGxpbmcgZnVuY3Rpb24uCisKIDIwMTEtMTEtMDMgIFNpbW9uIEhhdXNtYW5u
ICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gW1dLMl0gTWluaUJy
b3dzZXIgYXNzZXJ0IGluIFF0V2ViUHJvY2Nlc3Mgb24gc3RhcnR1cCBpbiBkZWJ1ZyBidWlsZC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvZGVjbGFyYXRpdmUvcGx1Z2luLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvcXQvZGVjbGFyYXRpdmUvcGx1Z2luLmNwcAppbmRleCBjZjNiZGQ0YTEyZWI2
OTY1NzI0ZGI5YTY1ZWM3YTUzZWJlNjQ5YzU2Li5hNTFlZGJjNGQ4YzUyOTBlODU5ZjJhNDA3MmRk
ZmU2MjkzZDFjNGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L2RlY2xhcmF0aXZlL3Bs
dWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9kZWNsYXJhdGl2ZS9wbHVnaW4uY3BwCkBA
IC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAicWRlc2t0b3B3ZWJ2aWV3LmgiCiAjaW5jbHVkZSAi
cXRvdWNod2VicGFnZS5oIgogI2luY2x1ZGUgInF0b3VjaHdlYnZpZXcuaCIKKyNpbmNsdWRlICJx
d2ViZG93bmxvYWRpdGVtLmgiCiAjaW5jbHVkZSAicXdlYm5hdmlnYXRpb25jb250cm9sbGVyLmgi
CiAjaW5jbHVkZSAicXdlYnByZWZlcmVuY2VzLmgiCiAKQEAgLTU1LDYgKzU2LDcgQEAgcHVibGlj
OgogICAgICAgICBxbWxSZWdpc3RlclVuY3JlYXRhYmxlVHlwZTxRV2ViUHJlZmVyZW5jZXM+KHVy
aSwgMywgMCwgIldlYlByZWZlcmVuY2VzIiwgUU9iamVjdDo6dHIoIkNhbm5vdCBjcmVhdGUgc2Vw
YXJhdGUgaW5zdGFuY2Ugb2YgV2ViUHJlZmVyZW5jZXMiKSk7CiAgICAgICAgIHFtbFJlZ2lzdGVy
VW5jcmVhdGFibGVUeXBlPFFUb3VjaFdlYlBhZ2U+KHVyaSwgMywgMCwgIlRvdWNoV2ViUGFnZSIs
IFFPYmplY3Q6OnRyKCJDYW5ub3QgY3JlYXRlIHNlcGFyYXRlIGluc3RhbmNlIG9mIFRvdWNoV2Vi
UGFnZSwgdXNlIFRvdWNoV2ViVmlldyIpKTsKICAgICAgICAgcW1sUmVnaXN0ZXJVbmNyZWF0YWJs
ZVR5cGU8UU5ldHdvcmtSZXBseT4odXJpLCAzLCAwLCAiTmV0d29ya1JlcGx5IiwgUU9iamVjdDo6
dHIoIkNhbm5vdCBjcmVhdGUgc2VwYXJhdGUgaW5zdGFuY2Ugb2YgTmV0d29ya1JlcGx5IikpOwor
ICAgICAgICBxbWxSZWdpc3RlclVuY3JlYXRhYmxlVHlwZTxRV2ViRG93bmxvYWRJdGVtPih1cmks
IDUsIDAsICJEb3dubG9hZEl0ZW0iLCBRT2JqZWN0Ojp0cigiQ2Fubm90IGNyZWF0ZSBzZXBhcmF0
ZSBpbnN0YW5jZSBvZiBEb3dubG9hZEl0ZW0iKSk7CiAjZW5kaWYKICAgICB9CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1dlYkNvcmVBcmd1bWVudENvZGVyc1F0LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9XZWJDb3JlQXJndW1lbnRDb2RlcnNRdC5jcHAK
aW5kZXggMWZjMTVjNTk2ZjZmY2Y3ZDlmOGQzM2ZkZWViMzNjMWVlZTI4NmE3Yi4uOTUwZDM3MmQy
ZGRjN2U0NmY4MDc3ODM5NTBlMGMyODc2ZTM3ZGI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL3F0L1dlYkNvcmVBcmd1bWVudENvZGVyc1F0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvcXQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzUXQuY3BwCkBAIC02MSw2ICs2MSw3
IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlc3BvbnNlPjo6ZW5jb2RlKEFyZ3VtZW50
RW5jb2RlciogZW5jb2RlciwgY29uc3QgUmVzCiAgICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNl
UmVzcG9uc2UubWltZVR5cGUoKSk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PGlu
dDY0X3Q+KHJlc291cmNlUmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkpKTsKICAgICBl
bmNvZGVyLT5lbmNvZGUocmVzb3VyY2VSZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lKCkpOworICAg
IGVuY29kZXItPmVuY29kZShyZXNvdXJjZVJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lKCkpOwog
fQogCiBib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXNwb25zZT46OmRlY29kZShBcmd1bWVu
dERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlUmVzcG9uc2UmIHJlc291cmNlUmVzcG9uc2UpCkBA
IC04Nyw2ICs4OCwxMSBAQCBib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXNwb25zZT46OmRl
Y29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlUgogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgcmVzcG9uc2Uuc2V0VGV4dEVuY29kaW5nTmFtZSh0ZXh0RW5jb2RpbmdOYW1l
KTsKIAorICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZTsKKyAgICBpZiAoIWRlY29kZXItPmRl
Y29kZShzdWdnZXN0ZWRGaWxlbmFtZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXNw
b25zZS5zZXRTdWdnZXN0ZWRGaWxlbmFtZShzdWdnZXN0ZWRGaWxlbmFtZSk7CisKICAgICByZXNv
dXJjZVJlc3BvbnNlID0gcmVzcG9uc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L1dLVmlldy5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9XS1ZpZXcuaAppbmRleCAzMWY2NzI2ZjkzNmM2YzdjMjMxYzRl
NmE3NWY1MWFmMzBiMjA2NjZhLi44MmRlYTQ3ZjVmNmI5Yzg0NzEwYmVjNmI2MDc3NDNjZmZmODIw
YTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L1dLVmlldy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvV0tWaWV3LmgKQEAgLTIzLDYg
KzIzLDcgQEAKICNpbmNsdWRlIDxXZWJLaXQyL3FkZXNrdG9wd2Vidmlldy5oPgogI2luY2x1ZGUg
PFdlYktpdDIvcXRvdWNod2Vidmlldy5oPgogI2luY2x1ZGUgPFdlYktpdDIvcXRvdWNod2VicGFn
ZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvcXdlYmRvd25sb2FkaXRlbS5oPgogI2luY2x1ZGUgPFdl
YktpdDIvcXdlYm5hdmlnYXRpb25jb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9xd2Vi
cHJlZmVyZW5jZXMuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xYmFzZXdlYnZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWJh
c2V3ZWJ2aWV3LmgKaW5kZXggZGE3NmUzODhlNDJkMGFlODNjMzBlOGM0MTU5N2ZiNGJiODUwNzZl
Ny4uMDVjZjU1MDEwOGUzMTBiNjE4MGZiNzViNzNmNDNmMTY5NjVhN2IyZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xYmFzZXdlYnZpZXcuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FiYXNld2Vidmlldy5oCkBAIC0yNSw2ICsyNSw3
IEBACiAjaW5jbHVkZSA8UXREZWNsYXJhdGl2ZS9xcXVpY2twYWludGVkaXRlbS5oPgogCiBjbGFz
cyBRQmFzZVdlYlZpZXdQcml2YXRlOworY2xhc3MgUVdlYkRvd25sb2FkSXRlbTsKIGNsYXNzIFFX
ZWJOYXZpZ2F0aW9uQ29udHJvbGxlcjsKIGNsYXNzIFFXZWJQcmVmZXJlbmNlczsKIApAQCAtNTIs
NyArNTMsOCBAQCBwdWJsaWM6CiAgICAgZW51bSBFcnJvclR5cGUgewogICAgICAgICBFbmdpbmVF
cnJvciwKICAgICAgICAgTmV0d29ya0Vycm9yLAotICAgICAgICBIdHRwRXJyb3IKKyAgICAgICAg
SHR0cEVycm9yLAorICAgICAgICBEb3dubG9hZEVycm9yCiAgICAgfTsKICAgICB2aXJ0dWFsIH5R
QmFzZVdlYlZpZXcoKTsKIApAQCAtNzksNiArODEsNyBAQCBRX1NJR05BTFM6CiAgICAgdm9pZCBs
b2FkUHJvZ3Jlc3NDaGFuZ2VkKGludCBwcm9ncmVzcyk7CiAgICAgdm9pZCB1cmxDaGFuZ2VkKGNv
bnN0IFFVcmwmIHVybCk7CiAgICAgdm9pZCBtZXNzYWdlUmVjZWl2ZWQoY29uc3QgUVZhcmlhbnRN
YXAmIG1lc3NhZ2UpOworICAgIHZvaWQgZG93bmxvYWRSZXF1ZXN0ZWQoUVdlYkRvd25sb2FkSXRl
bSogZG93bmxvYWRJdGVtKTsKIAogcHJvdGVjdGVkOgogICAgIFFCYXNlV2ViVmlldyhRQmFzZVdl
YlZpZXdQcml2YXRlICZkZCwgUVF1aWNrSXRlbSAqcGFyZW50ID0gMCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHAKaW5kZXggOGIw
ODU1YzAzMWE5NTEwMzVlZjM3Mjg3NWQ1YTY2MWU2ZGJhNmNhNC4uODA5YTU5MTU4YzZmMDM3NjJk
NWI1NmMwYWNlMDJlMGViNzJmMWFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcApAQCAtMjUsMTEgKzI1LDEzIEBACiAjaW5j
bHVkZSAiUXRXZWJFcnJvci5oIgogI2luY2x1ZGUgIlV0aWxzUXQuaCIKICNpbmNsdWRlICJxZGVz
a3RvcHdlYnZpZXdfcC5oIgorI2luY2x1ZGUgInF3ZWJkb3dubG9hZGl0ZW0uaCIKICNpbmNsdWRl
IDxRRmlsZURpYWxvZz4KICNpbmNsdWRlIDxRdERlY2xhcmF0aXZlL3FkZWNsYXJhdGl2ZWVuZ2lu
ZS5oPgogI2luY2x1ZGUgPFF0RGVjbGFyYXRpdmUvcXF1aWNrY2FudmFzLmg+CiAjaW5jbHVkZSA8
UXREZWNsYXJhdGl2ZS9xcXVpY2t2aWV3Lmg+CiAjaW5jbHVkZSA8UXRHdWkvUUN1cnNvcj4KKyNp
bmNsdWRlIDxRdEd1aS9RRGVza3RvcFNlcnZpY2VzPgogI2luY2x1ZGUgPFF0R3VpL1FEcmFnPgog
I2luY2x1ZGUgPFF0R3VpL1FGb2N1c0V2ZW50PgogI2luY2x1ZGUgPFF0R3VpL1FHdWlBcHBsaWNh
dGlvbj4KQEAgLTQ5Nyw2ICs0OTksMTcgQEAgdm9pZCBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpk
aWRNb3VzZU1vdmVPdmVyRWxlbWVudChjb25zdCBRVXJsJiBsaW5rVVJMLCBjb25zdAogICAgIGVt
aXQgcS0+bGlua0hvdmVyZWQobGFzdEhvdmVyZWRVUkwsIGxhc3RIb3ZlcmVkVGl0bGUpOwogfQog
Cit2b2lkIFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OmRvd25sb2FkUmVxdWVzdGVkKFFXZWJEb3du
bG9hZEl0ZW0qIGRvd25sb2FkSXRlbSkKK3sKKyAgICBpZiAoIWRvd25sb2FkSXRlbSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgUV9RKFFEZXNrdG9wV2ViVmlldyk7CisKKyAgICBRRGVjbGFyYXRp
dmVFbmdpbmU6OnNldE9iamVjdE93bmVyc2hpcChkb3dubG9hZEl0ZW0sIFFEZWNsYXJhdGl2ZUVu
Z2luZTo6SmF2YVNjcmlwdE93bmVyc2hpcCk7CisgICAgZW1pdCBxLT5kb3dubG9hZFJlcXVlc3Rl
ZChkb3dubG9hZEl0ZW0pOworfQorCiBzdGF0aWMgUXRQb2xpY3lJbnRlcmZhY2U6OlBvbGljeUFj
dGlvbiB0b1BvbGljeUFjdGlvbihRRGVza3RvcFdlYlZpZXc6Ok5hdmlnYXRpb25Qb2xpY3kgcG9s
aWN5KQogewogICAgIHN3aXRjaCAocG9saWN5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlld19wLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlld19wLmgKaW5kZXggY2JmOTNkNjFkYjAxMWY1
NjcyN2U0NjczMzk2NDQyZDA1NWRmYTcwMC4uMjUyZTZjMzA0NzVjMzhjOTNiNmM2OWU1MDhiOTUz
ZGExZWExY2JkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
ZGVza3RvcHdlYnZpZXdfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cWRlc2t0b3B3ZWJ2aWV3X3AuaApAQCAtODQsNiArODQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgUUpTRW5naW5lKiBlbmdpbmUoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBjaG9vc2VGaWxlcyhX
S09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmLCBjb25zdCBRU3RyaW5nTGlzdCYgc2VsZWN0ZWRG
aWxlTmFtZXMsIFF0Vmlld0ludGVyZmFjZTo6RmlsZUNob29zZXJUeXBlKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZG93bmxvYWRSZXF1ZXN0ZWQoUVdlYkRvd25sb2FkSXRlbSogZG93bmxvYWRJdGVtKTsK
IAogICAgIHZpcnR1YWwgdm9pZCBkaWRNb3VzZU1vdmVPdmVyRWxlbWVudChjb25zdCBRVXJsJiwg
Y29uc3QgUVN0cmluZyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3F3ZWJkb3dubG9hZGl0ZW0uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xd2ViZG93bmxvYWRpdGVtLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NTkwYjc0OGNkMDg5MzUzMjVk
ZDUwNDg1ZmJlNzhkNTg5MzkxOTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxvYWRpdGVtLmNwcApAQCAtMCwwICsxLDk2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKQorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgInF3ZWJkb3du
bG9hZGl0ZW0uaCIKKworI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKKyNpbmNsdWRlICJxd2Vi
ZG93bmxvYWRpdGVtX3AuaCIKKworUVdlYkRvd25sb2FkSXRlbVByaXZhdGU6OlFXZWJEb3dubG9h
ZEl0ZW1Qcml2YXRlKFFXZWJEb3dubG9hZEl0ZW0qIHFxKQorICAgIDogcShxcSkKKyAgICAsIGRv
d25sb2FkUHJveHkoMCkKKyAgICAsIGV4cGVjdGVkQ29udGVudExlbmd0aCgwKQorICAgICwgdG90
YWxCeXRlc1JlY2VpdmVkKDApCit7Cit9CisKK1FXZWJEb3dubG9hZEl0ZW06OlFXZWJEb3dubG9h
ZEl0ZW0oUU9iamVjdCogcGFyZW50KQorICAgIDogUU9iamVjdChwYXJlbnQpCisgICAgLCBkKG5l
dyBRV2ViRG93bmxvYWRJdGVtUHJpdmF0ZSh0aGlzKSkKK3sKK30KKworUVdlYkRvd25sb2FkSXRl
bTo6flFXZWJEb3dubG9hZEl0ZW0oKQoreworICAgIGRlbGV0ZSBkOworfQorCitRVXJsIFFXZWJE
b3dubG9hZEl0ZW06OnVybCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPnNvdXJjZVVybDsKK30K
KworUVN0cmluZyBRV2ViRG93bmxvYWRJdGVtOjpkZXN0aW5hdGlvblBhdGgoKSBjb25zdAorewor
ICAgIHJldHVybiBkLT5kZXN0aW5hdGlvblBhdGg7Cit9CisKK3ZvaWQgUVdlYkRvd25sb2FkSXRl
bTo6c2V0RGVzdGluYXRpb25QYXRoKGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uKQoreworICAg
IGQtPmRlc3RpbmF0aW9uUGF0aCA9IGRlc3RpbmF0aW9uOworfQorCitRU3RyaW5nIFFXZWJEb3du
bG9hZEl0ZW06OnN1Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZC0+c3Vn
Z2VzdGVkRmlsZW5hbWU7Cit9CisKK1FTdHJpbmcgUVdlYkRvd25sb2FkSXRlbTo6bWltZVR5cGUo
KSBjb25zdAoreworICAgIHJldHVybiBkLT5taW1lVHlwZTsKK30KKworcXVpbnQ2NCBRV2ViRG93
bmxvYWRJdGVtOjpleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBk
LT5leHBlY3RlZENvbnRlbnRMZW5ndGg7Cit9CisKK3F1aW50NjQgUVdlYkRvd25sb2FkSXRlbTo6
dG90YWxCeXRlc1JlY2VpdmVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZC0+dG90YWxCeXRlc1Jl
Y2VpdmVkOworfQorCit2b2lkIFFXZWJEb3dubG9hZEl0ZW06OmNhbmNlbCgpCit7CisgICAgQVNT
RVJUKGQtPmRvd25sb2FkUHJveHkpOworICAgIGQtPmRvd25sb2FkUHJveHktPmNhbmNlbCgpOwor
fQorCit2b2lkIFFXZWJEb3dubG9hZEl0ZW06OnN0YXJ0KCkKK3sKKyAgICBBU1NFUlQoIWQtPnN1
Z2dlc3RlZEZpbGVuYW1lLmlzRW1wdHkoKSk7CisKKyAgICBpZiAoZC0+ZGVzdGluYXRpb25QYXRo
LmlzRW1wdHkoKSkKKyAgICAgICAgZC0+ZGVzdGluYXRpb25QYXRoID0gZC0+c3VnZ2VzdGVkRmls
ZW5hbWU7CisKKyAgICBkLT5kb3dubG9hZFByb3h5LT5zdGFydFRyYW5zZmVyKGQtPmRlc3RpbmF0
aW9uUGF0aCk7Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcXdlYmRvd25sb2FkaXRlbS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
d2ViZG93bmxvYWRpdGVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjQ0YzViMDgzODJiYmU4YmFjYTM5MjI0YWZm
OWZkODVkMGQ1Njg4NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXdlYmRvd25sb2FkaXRlbS5oCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoK
KyAqLworCisjaWZuZGVmIHF3ZWJkb3dubG9hZGl0ZW1faAorI2RlZmluZSBxd2ViZG93bmxvYWRp
dGVtX2gKKworI2luY2x1ZGUgInF3ZWJraXRnbG9iYWwuaCIKKyNpbmNsdWRlIDxRT2JqZWN0Pgor
I2luY2x1ZGUgPFFVcmw+CisKK2NsYXNzIFFXZWJEb3dubG9hZEl0ZW1Qcml2YXRlOworY2xhc3Mg
UXRXZWJFcnJvcjsKKworUVRfQkVHSU5fTkFNRVNQQUNFCitjbGFzcyBRU3RyaW5nOworUVRfRU5E
X05BTUVTUEFDRQorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFF0RG93bmxvYWRNYW5hZ2Vy
OworfQorCitjbGFzcyBRV0VCS0lUX0VYUE9SVCBRV2ViRG93bmxvYWRJdGVtIDogcHVibGljIFFP
YmplY3QgeworICAgIFFfT0JKRUNUCisgICAgUV9QUk9QRVJUWShxdWludDY0IGV4cGVjdGVkQ29u
dGVudExlbmd0aCBSRUFEIGV4cGVjdGVkQ29udGVudExlbmd0aCBDT05TVEFOVCBGSU5BTCkKKyAg
ICBRX1BST1BFUlRZKFFTdHJpbmcgZGVzdGluYXRpb25QYXRoIFJFQUQgZGVzdGluYXRpb25QYXRo
IFdSSVRFIHNldERlc3RpbmF0aW9uUGF0aCkKKyAgICBRX1BST1BFUlRZKFFTdHJpbmcgc3VnZ2Vz
dGVkRmlsZW5hbWUgUkVBRCBzdWdnZXN0ZWRGaWxlbmFtZSBDT05TVEFOVCBGSU5BTCkKKyAgICBR
X1BST1BFUlRZKHF1aW50NjQgdG90YWxCeXRlc1JlY2VpdmVkIFJFQUQgdG90YWxCeXRlc1JlY2Vp
dmVkIE5PVElGWSB0b3RhbEJ5dGVzUmVjZWl2ZWRDaGFuZ2VkIEZJTkFMKQorICAgIFFfUFJPUEVS
VFkoUVVybCB1cmwgUkVBRCB1cmwgQ09OU1RBTlQgRklOQUwpCisgICAgUV9FTlVNUyhEb3dubG9h
ZEVycm9yKQorcHVibGljOgorICAgIHZpcnR1YWwgflFXZWJEb3dubG9hZEl0ZW0oKTsKKworICAg
IGVudW0gRG93bmxvYWRFcnJvciB7CisgICAgICAgIEFib3J0ZWQgPSAwLAorICAgICAgICBDYW5u
b3RXcml0ZVRvRmlsZSwKKyAgICAgICAgQ2Fubm90T3BlbkZpbGUsCisgICAgICAgIERlc3RpbmF0
aW9uQWxyZWFkeUV4aXN0cywKKyAgICAgICAgQ2FuY2VsbGVkLAorICAgICAgICBDYW5ub3REZXRl
cm1pbmVGaWxlbmFtZSwKKyAgICAgICAgTmV0d29ya0ZhaWx1cmUKKyAgICB9OworCisgICAgUVVy
bCB1cmwoKSBjb25zdDsKKyAgICBRU3RyaW5nIGRlc3RpbmF0aW9uUGF0aCgpIGNvbnN0OworICAg
IFFTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25zdDsKKyAgICBRU3RyaW5nIG1pbWVUeXBl
KCkgY29uc3Q7CisgICAgcXVpbnQ2NCBleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBjb25zdDsKKyAg
ICBxdWludDY0IHRvdGFsQnl0ZXNSZWNlaXZlZCgpIGNvbnN0OworICAgIHZvaWQgc2V0RGVzdGlu
YXRpb25QYXRoKGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uKTsKKworcHVibGljIFFfU0xPVFM6
CisgICAgdm9pZCBzdGFydCgpOworICAgIHZvaWQgY2FuY2VsKCk7CisKK1FfU0lHTkFMUzoKKyAg
ICB2b2lkIGRlc3RpbmF0aW9uRmlsZUNyZWF0ZWQoY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb25Q
YXRoKTsKKyAgICB2b2lkIHRvdGFsQnl0ZXNSZWNlaXZlZENoYW5nZWQocXVpbnQ2NCBieXRlc1Jl
Y2VpdmVkKTsKKyAgICB2b2lkIHN1Y2NlZWRlZCgpOworICAgIHZvaWQgZmFpbGVkKFFXZWJEb3du
bG9hZEl0ZW06OkRvd25sb2FkRXJyb3IgZXJyb3IsIGNvbnN0IFFVcmwmIHVybCwgY29uc3QgUVN0
cmluZyYgZGVzY3JpcHRpb24pOworCitwcml2YXRlOgorICAgIFFXZWJEb3dubG9hZEl0ZW0oUU9i
amVjdCogcGFyZW50ID0gMCk7CisgICAgUVdlYkRvd25sb2FkSXRlbVByaXZhdGUqIGQ7CisKKyAg
ICBmcmllbmQgY2xhc3MgV2ViS2l0OjpRdERvd25sb2FkTWFuYWdlcjsKKyAgICBmcmllbmQgY2xh
c3MgUXRXZWJQYWdlUHJveHk7Cit9OworCisjZW5kaWYgLyogcXdlYmRvd25sb2FkaXRlbV9oICov
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJkb3dubG9h
ZGl0ZW1fcC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxvYWRp
dGVtX3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iYjhjMjUyYTc3N2Q3ZDgyNGRjOTI4ODlhZDkxYWZmMmFkYWEx
MGZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
d2ViZG93bmxvYWRpdGVtX3AuaApAQCAtMCwwICsxLDUzIEBACisvKgorICAgIENvcHlyaWdodCAo
QykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAg
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLwor
CisKKyNpZm5kZWYgcXdlYmRvd25sb2FkaXRlbV9wX2gKKyNkZWZpbmUgcXdlYmRvd25sb2FkaXRl
bV9wX2gKKworI2luY2x1ZGUgInF3ZWJkb3dubG9hZGl0ZW0uaCIKKyNpbmNsdWRlIDxRVXJsPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIERvd25sb2FkUHJveHk7Cit9CisKK2NsYXNzIFFX
ZWJEb3dubG9hZEl0ZW1Qcml2YXRlIDogcHVibGljIFFPYmplY3QgeworICAgIFFfT0JKRUNUCitw
dWJsaWM6CisgICAgUVdlYkRvd25sb2FkSXRlbVByaXZhdGUoUVdlYkRvd25sb2FkSXRlbSopOwor
CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUVdlYkRvd25sb2FkSXRlbSogZG93bmxvYWQp
IHsgZW1pdCByZWNlaXZlZFJlc3BvbnNlKGRvd25sb2FkKTsgfQorCisgICAgUVdlYkRvd25sb2Fk
SXRlbSogcTsKKworICAgIFdlYktpdDo6RG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eTsKKwor
ICAgIFFVcmwgc291cmNlVXJsOworICAgIFFTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWU7CisgICAg
UVN0cmluZyBkZXN0aW5hdGlvblBhdGg7CisgICAgUVN0cmluZyBtaW1lVHlwZTsKKyAgICBxdWlu
dDY0IGV4cGVjdGVkQ29udGVudExlbmd0aDsKKyAgICBxdWludDY0IHRvdGFsQnl0ZXNSZWNlaXZl
ZDsKKworUV9TSUdOQUxTOgorICAgIHZvaWQgcmVjZWl2ZWRSZXNwb25zZShRV2ViRG93bmxvYWRJ
dGVtKik7Cit9OworCisjZW5kaWYgLyogcXdlYmRvd25sb2FkaXRlbV9wX2ggKi8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvRGVza3Rv
cFdlYlZpZXcvdHN0X2Rvd25sb2FkLnFtbCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvdGVzdHMvcW1sdGVzdHMvRGVza3RvcFdlYlZpZXcvdHN0X2Rvd25sb2FkLnFtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lYjVjODU1YmNhNTA3MTFiNWRlYzE2Njc4OWY0MGE4ZGE4OTM1MzlkCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9E
ZXNrdG9wV2ViVmlldy90c3RfZG93bmxvYWQucW1sCkBAIC0wLDAgKzEsNzUgQEAKK2ltcG9ydCBR
dFF1aWNrIDIuMAoraW1wb3J0IFF0VGVzdCAxLjAKK2ltcG9ydCBRdFdlYktpdCAzLjAKKworRGVz
a3RvcFdlYlZpZXcgeworICAgIGlkOiB3ZWJWaWV3CisgICAgd2lkdGg6IDIwMAorICAgIGhlaWdo
dDogNDAwCisKKyAgICBwcm9wZXJ0eSBpbnQgZXhwZWN0ZWRMZW5ndGggOiAwCisgICAgcHJvcGVy
dHkgaW50IHRvdGFsQnl0ZXMgOiAwCisKKyAgICBTaWduYWxTcHkgeworICAgICAgICBpZDogc3B5
CisgICAgICAgIHRhcmdldDogd2ViVmlldworICAgICAgICBzaWduYWxOYW1lOiAiZG93bmxvYWRS
ZXF1ZXN0ZWQiCisgICAgfQorCisgICAgb25Eb3dubG9hZFJlcXVlc3RlZDogeworICAgICAgICBk
b3dubG9hZC50YXJnZXQgPSBkb3dubG9hZEl0ZW0KKyAgICAgICAgZXhwZWN0ZWRMZW5ndGggPSBk
b3dubG9hZEl0ZW0uZXhwZWN0ZWRDb250ZW50TGVuZ3RoCisgICAgICAgIGRvd25sb2FkSXRlbS5k
ZXN0aW5hdGlvblBhdGggPSBkb3dubG9hZEl0ZW0uc3VnZ2VzdGVkRmlsZW5hbWUKKyAgICAgICAg
ZG93bmxvYWRJdGVtLnN0YXJ0KCkKKyAgICB9CisKKyAgICBDb25uZWN0aW9ucyB7CisgICAgICAg
IGlkOiBkb3dubG9hZAorICAgICAgICBpZ25vcmVVbmtub3duU2lnbmFsczogdHJ1ZQorICAgICAg
ICBvblN1Y2NlZWRlZDogeyB0b3RhbEJ5dGVzID0gZG93bmxvYWQudGFyZ2V0LnRvdGFsQnl0ZXNS
ZWNlaXZlZCB9CisgICAgfQorCisgICAgU2lnbmFsU3B5IHsKKyAgICAgICAgaWQ6IG90aGVyU3B5
CisgICAgICAgIHRhcmdldDogZG93bmxvYWQKKyAgICAgICAgc2lnbmFsTmFtZTogInN1Y2NlZWRl
ZCIKKyAgICB9CisKKyAgICBUZXN0Q2FzZSB7CisgICAgICAgIG5hbWU6ICJEZXNrdG9wV2ViVmll
d0Rvd25sb2FkIgorICAgICAgICB3aGVuOiB3aW5kb3dTaG93bgorCisgICAgICAgIGZ1bmN0aW9u
IHRlc3RfZG93bmxvYWRSZXF1ZXN0KCkgeworICAgICAgICAgICAgc3B5LmNsZWFyKCkKKyAgICAg
ICAgICAgIGNvbXBhcmUoc3B5LmNvdW50LCAwKQorICAgICAgICAgICAgd2ViVmlldy5sb2FkKFF0
LnJlc29sdmVkVXJsKCIuLi9jb21tb24vZG93bmxvYWQuaHRtbCIpKQorICAgICAgICAgICAgbW91
c2VDbGljayh3ZWJWaWV3LCAxMDAsIDEwMCwgUXQuTGVmdEJ1dHRvbikKKyAgICAgICAgICAgIHNw
eS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBhcmUoc3B5LmNvdW50LCAxKQorICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gdGVzdF9leHBlY3RlZExlbmd0aCgpIHsKKyAgICAgICAgICAgIHNw
eS5jbGVhcigpCisgICAgICAgICAgICBjb21wYXJlKHNweS5jb3VudCwgMCkKKyAgICAgICAgICAg
IHdlYlZpZXcubG9hZChRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL2Rvd25sb2FkLmh0bWwiKSkK
KyAgICAgICAgICAgIG1vdXNlQ2xpY2sod2ViVmlldywgMTAwLCAxMDAsIFF0LkxlZnRCdXR0b24p
CisgICAgICAgICAgICBzcHkud2FpdCgpCisgICAgICAgICAgICBjb21wYXJlKHNweS5jb3VudCwg
MSkKKyAgICAgICAgICAgIGNvbXBhcmUoZXhwZWN0ZWRMZW5ndGgsIDMyNSkKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIHRlc3Rfc3VjY2VlZGVkKCkgeworICAgICAgICAgICAgc3B5LmNs
ZWFyKCkKKyAgICAgICAgICAgIGNvbXBhcmUoc3B5LmNvdW50LCAwKQorICAgICAgICAgICAgb3Ro
ZXJTcHkuY2xlYXIoKQorICAgICAgICAgICAgY29tcGFyZShvdGhlclNweS5jb3VudCwgMCkKKyAg
ICAgICAgICAgIHdlYlZpZXcubG9hZChRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL2Rvd25sb2Fk
Lmh0bWwiKSkKKyAgICAgICAgICAgIG1vdXNlQ2xpY2sod2ViVmlldywgMTAwLCAxMDAsIFF0Lkxl
ZnRCdXR0b24pCisgICAgICAgICAgICBzcHkud2FpdCgpCisgICAgICAgICAgICBjb21wYXJlKHNw
eS5jb3VudCwgMSkKKyAgICAgICAgICAgIG90aGVyU3B5LndhaXQoKQorICAgICAgICAgICAgY29t
cGFyZShvdGhlclNweS5jb3VudCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUodG90YWxCeXRlcywg
ZXhwZWN0ZWRMZW5ndGgpCisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1vbi9kb3dubG9hZC5o
dG1sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21t
b24vZG93bmxvYWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MDZmYTRjYTc2M2Q3YTRmZWFjMTgxNzQxYmU1
Yzk3NzY0OGY5NWY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21tb24vZG93bmxvYWQuaHRtbApAQCAtMCwwICsxLDYg
QEAKKzxodG1sPgorPGhlYWQ+PHRpdGxlPkRvd25sb2FkIFRlc3QgcGFnZSB3aXRoIGh1Z2UgbGlu
ayBhcmVhPC90aXRsZT48L2hlYWQ+Cis8Ym9keT4KKzxhIHRpdGxlPSJaaXAgZmlsZSIgaHJlZj0i
ZG93bmxvYWQuemlwIj48aW1nIHdpZHRoPTIwMCBoZWlnaHQ9MjAwPjwvYT4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMv
cW1sdGVzdHMvY29tbW9uL2Rvd25sb2FkLnppcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL2Rvd25sb2FkLnppcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNTQ1
NjM1MWE1NTE1NTYxMzUzOTYxNWFjY2VjZTllZTAzMGI3ZDQ0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0
ZXJhbCAzMjUKemNtV0lXV0BacyNVfGBeMnUhc3RffDhWZEJwPFc+R0pQLT5xJFN+eU9Dbngzdm0q
ZntFcmw7eTxsO3F9d2hIeEA0CnpeVzIlfENqYFckNzJGSnJFSDlXRDcrNncoOGJiU1JgM0BgYXcz
aG9kWm8xJFZZVCtSSlA0RGM1eFB+VXo2JCZtIwp6eytAaDAraE14VHdFTlo1X09ta3xUX0N9O1Zs
QzRyayR8cl50P2dlT2N6Pkh+KDwlazt3dTh6eVEpTUB3dFcpd2sKei00ZzVrTC1wc0N7TWY1KmhP
XklUS2t+QGtgQW5Bbzxjb3NFUT8/JHlyV25pZCppal4wPTZwezJgUmQ8Q2oqOGxnCnpya2AkRmxP
TStRYk5SJXIkTjItaThKWG1tYXJzT0Y9dilRe01qJjMmMng0TEpDbzlDQ1hucVh2V0BRNnVVPEFU
JgpLQWJrVkdWRV9SNj4yTSRiCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL3FtbHRlc3RzLnBy
byBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvcW1sdGVz
dHMucHJvCmluZGV4IGVjMGU4NGRkZmU0YmQzZDM1NjU2NDIyODczNWMxY2JiMTJmMDYyMDIuLjM2
ZTBjNTBjYWQ5OGNjZWE3NTRhNmExZDI3ZDI1MzFkMWNkYTJiMzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvcW1sdGVzdHMucHJvCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvcW1sdGVz
dHMucHJvCkBAIC0xNiw2ICsxNiw3IEBAIE9USEVSX0ZJTEVTICs9IFwKICAgICBEZXNrdG9wV2Vi
Vmlldy90c3RfbG9hZFByb2dyZXNzU2lnbmFsLnFtbCBcCiAgICAgRGVza3RvcFdlYlZpZXcvdHN0
X2xpbmtIb3ZlcmVkLnFtbCBcCiAgICAgRGVza3RvcFdlYlZpZXcvdHN0X21lc3NhZ2luZy5xbWwg
XAorICAgIERlc2t0b3BXZWJWaWV3L3RzdF9kb3dubG9hZC5xbWwgXAogICAgIFRvdWNoV2ViVmll
dy90c3RfcHJvcGVydGllcy5xbWwgXAogICAgIFRvdWNoV2ViVmlldy90c3RfbG9hZC5xbWwgXAog
ICAgIFRvdWNoV2ViVmlldy90c3RfbG9hZFplcm9TaXplVmlldy5xbWwgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAKaW5kZXgg
YzkzYTZkZmJlNjliYmUzNmU2YjkyNDQ4ZjA0N2JiYmJlN2Q5MmQ0Mi4uMjZhNTIxZjM5YmM3MWUy
MTQ1ODc3MzIxOTY0ZGRjNjcyNzQxYjE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCkBAIC0xODcsNSArMTg3LDE2IEBA
IHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkQ2FuY2VsKGNvbnN0IENvcmVJUEM6OkRhdGFSZWZlcmVu
Y2UmIHJlc3VtZURhdGEpCiAgICAgbV93ZWJDb250ZXh0LT5kb3dubG9hZEZpbmlzaGVkKHRoaXMp
OwogfQogCisjaWYgUExBVEZPUk0oUVQpCit2b2lkIERvd25sb2FkUHJveHk6OnN0YXJ0VHJhbnNm
ZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKK3sKKyAgICBpZiAoIW1fd2ViQ29udGV4dCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUUgKE11bHRpLVdlYlByb2Nlc3MpOiBEb3dubG9h
ZHMgc2hvdWxkbid0IGJlIGhhbmRsZWQgaW4gdGhlIHdlYiBwcm9jZXNzLgorICAgIG1fd2ViQ29u
dGV4dC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTdGFydFRyYW5z
ZmVyKG1fZG93bmxvYWRJRCwgZmlsZW5hbWUpKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkUHJveHkuaAppbmRleCA5OWRkYmVjMGNiYzRiYThmNmQ5ZjQyMWY5ZGI2ODU1NTgyOGI5
OWQ1Li5jMWVkYTFmZDE5MDdjOTk3ZGJhODNmZTMwYzQ3YjU2NjJlNmYzOWI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaApAQCAt
NDMsNiArNDMsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViQ29udGV4dDsKIGNs
YXNzIFdlYkRhdGE7CitjbGFzcyBXZWJQYWdlUHJveHk7CiAKIGNsYXNzIERvd25sb2FkUHJveHkg
OiBwdWJsaWMgQVBJT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTYzLDYgKzY0LDEwIEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRpZFJlY2VpdmVEb3dubG9hZFByb3h5TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0
aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKICAg
ICB2b2lkIGRpZFJlY2VpdmVTeW5jRG93bmxvYWRQcm94eU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVj
dGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgT3du
UHRyPENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4mKTsKIAorI2lmIFBMQVRGT1JNKFFUKQorICAg
IHZvaWQgc3RhcnRUcmFuc2Zlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lKTsKKyNlbmRpZgorCiBw
cml2YXRlOgogICAgIGV4cGxpY2l0IERvd25sb2FkUHJveHkoV2ViQ29udGV4dCopOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCA2NmY5ZWNiYmIwYTM5NWE5M2IyOTlj
ZTExZTIzZDA4Y2NjMjcwZWI2Li4zZmZhMmJmYTFjOTk3ZGUyYjI2NWUxODZiZjU0YjIyMDNlODYw
OWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTQ0LDYgKzQ0LDEw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBzdHJ1Y3QgVmlld3BvcnRBcmd1bWVudHM7CiB9
CiAKKyNpZiBQTEFURk9STShRVCkKK2NsYXNzIFF0V2ViUGFnZVByb3h5OworI2VuZGlmCisKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBEcmF3aW5nQXJlYVByb3h5OwpAQCAtMTA0LDYgKzEw
OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQ29udGVudHNTaXplKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmRab29t
YWJsZUFyZWEoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21OYXZpZ2F0b3JR
dE9iamVjdChjb25zdCBTdHJpbmcmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZURvd25s
b2FkUmVxdWVzdChEb3dubG9hZFByb3h5KikgPSAwOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShR
VCkgfHwgUExBVEZPUk0oR1RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3Bw
CmluZGV4IGY0NTNkOGMzZmRhMWJkNjk0NWU4MTdiMGU2ZWQ5YWQ2MmZhMWE2ZjkuLmI2NDQ4NDU5
YTI1MzgxNDZjYTM1ZjJhZDhiNGM3MGEwN2RhODZmZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQ29udGV4dC5jcHAKQEAgLTM5Miw2ICszOTIsMTEgQEAgRG93bmxvYWRQcm94eSogV2Vi
Q29udGV4dDo6ZG93bmxvYWQoV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgUmVz
b3VyY2UKICAgICBEb3dubG9hZFByb3h5KiBkb3dubG9hZCA9IGNyZWF0ZURvd25sb2FkUHJveHko
KTsKICAgICB1aW50NjRfdCBpbml0aWF0aW5nUGFnZUlEID0gaW5pdGlhdGluZ1BhZ2UgPyBpbml0
aWF0aW5nUGFnZS0+cGFnZUlEKCkgOiAwOwogCisjaWYgUExBVEZPUk0oUVQpCisgICAgQVNTRVJU
KGluaXRpYXRpbmdQYWdlKTsgLy8gT3VyIGRlc2lnbiBkb2VzIG5vdCBzdXBwcG9ydCBkb3dubG9h
ZHMgd2l0aG91dCBhIFdlYlBhZ2UuCisgICAgaW5pdGlhdGluZ1BhZ2UtPmhhbmRsZURvd25sb2Fk
UmVxdWVzdChkb3dubG9hZCk7CisjZW5kaWYKKwogICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdl
czo6V2ViUHJvY2Vzczo6RG93bmxvYWRSZXF1ZXN0KGRvd25sb2FkLT5kb3dubG9hZElEKCksIGlu
aXRpYXRpbmdQYWdlSUQsIHJlcXVlc3QpLCAwKTsKICAgICByZXR1cm4gZG93bmxvYWQ7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGVlNDNiMjhmMGFj
NWQ5YmQzMDg3NGE5YjhkMmRlMWEzYjM5YjZkNzUuLjVmMWEyZTdhNWUyZGE1YTExYjgwMjBiZDQ4
YThhOTc3NmI4NTk2ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCkBAIC0xMDE2LDcgKzEwMTYsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9s
aWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwgV2ViRnJhbWVQcm94eSogZnIKICAgICB1
aW50NjRfdCBkb3dubG9hZElEID0gMDsKICAgICBpZiAoYWN0aW9uID09IFBvbGljeURvd25sb2Fk
KSB7CiAgICAgICAgIC8vIENyZWF0ZSBhIGRvd25sb2FkIHByb3h5LgotICAgICAgICBkb3dubG9h
ZElEID0gbV9wcm9jZXNzLT5jb250ZXh0KCktPmNyZWF0ZURvd25sb2FkUHJveHkoKS0+ZG93bmxv
YWRJRCgpOworICAgICAgICBEb3dubG9hZFByb3h5KiBkb3dubG9hZCA9IG1fcHJvY2Vzcy0+Y29u
dGV4dCgpLT5jcmVhdGVEb3dubG9hZFByb3h5KCk7CisgICAgICAgIGRvd25sb2FkSUQgPSBkb3du
bG9hZC0+ZG93bmxvYWRJRCgpOworI2lmIFBMQVRGT1JNKFFUKQorICAgICAgICAvLyBPdXIgZGVz
aWduIGRvZXMgbm90IHN1cHBwb3J0IGRvd25sb2FkcyB3aXRob3V0IGEgV2ViUGFnZS4KKyAgICAg
ICAgaGFuZGxlRG93bmxvYWRSZXF1ZXN0KGRvd25sb2FkKTsKKyNlbmRpZgogICAgIH0KIAogICAg
IC8vIElmIHdlIHJlY2VpdmVkIGEgcG9saWN5IGRlY2lzaW9uIHdoaWxlIGluIGRlY2lkZVBvbGlj
eUZvck1JTUVUeXBlIHRoZSBkZWNpc2lvbiB3aWxsIApAQCAtMjI4NSw2ICsyMjkwLDExIEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlTWVzc2FnZUZyb21OYXZpZ2F0b3JRdE9iamVjdChj
b25zdCBTdHJpbmcmIGNvbnRlbnRzCiB7CiAgICAgbV9wYWdlQ2xpZW50LT5kaWRSZWNlaXZlTWVz
c2FnZUZyb21OYXZpZ2F0b3JRdE9iamVjdChjb250ZW50cyk7CiB9CisKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpoYW5kbGVEb3dubG9hZFJlcXVlc3QoRG93bmxvYWRQcm94eSogZG93bmxvYWQpCit7Cisg
ICAgbV9wYWdlQ2xpZW50LT5oYW5kbGVEb3dubG9hZFJlcXVlc3QoZG93bmxvYWQpOworfQogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCmluZGV4IGI5NWFhNWY3MDI5ODU0MzljYTkxNzQxNTA3ZmJjY2YzZDViYTBj
ODQuLmVmMzA2OWE3NzJkMDI5NzJkNDMyODQ5NTI2MmVjZTNkYTIxMzBjYTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTUyMyw2ICs1MjMsNyBAQCBwdWJsaWM6
CiAjaWYgUExBVEZPUk0oUVQpCiAgICAgdm9pZCBmaW5kWm9vbWFibGVBcmVhRm9yUG9pbnQoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbU5h
dmlnYXRvclF0T2JqZWN0KGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgaGFuZGxlRG93bmxvYWRS
ZXF1ZXN0KERvd25sb2FkUHJveHkqKTsKICNlbmRpZgogCiAgICAgdm9pZCBhZHZhbmNlVG9OZXh0
TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbikgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXREb3dubG9hZE1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0RG93bmxvYWRNYW5hZ2VyLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zZjk3ZmM2M2M0Y2IxMWM3ODVjNjM4MjI0N2M1ZTNmNTE4MzM1MjJiCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0RG93bmxvYWRNYW5hZ2VyLmNwcApA
QCAtMCwwICsxLDE0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
ICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJRdERvd25sb2FkTWFuYWdlci5oIgorCisjaW5jbHVkZSAiQ2xpZW50
SW1wbC5oIgorI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKKyNpbmNsdWRlICJRdFdlYkVycm9y
LmgiCisjaW5jbHVkZSAiV0tTdHJpbmdRdC5oIgorI2luY2x1ZGUgIldLVVJMUXQuaCIKKyNpbmNs
dWRlICJXZWJDb250ZXh0LmgiCisjaW5jbHVkZSAicXdlYmRvd25sb2FkaXRlbS5oIgorI2luY2x1
ZGUgInF3ZWJkb3dubG9hZGl0ZW1fcC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGlj
IGlubGluZSBRdERvd25sb2FkTWFuYWdlciogdG9RdERvd25sb2FkTWFuYWdlcihjb25zdCB2b2lk
KiBjbGllbnRJbmZvKQoreworICAgIEFTU0VSVChjbGllbnRJbmZvKTsKKyAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxRdERvd25sb2FkTWFuYWdlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVu
dEluZm8pKTsKK30KKworc3RhdGljIHZvaWQgcXRfd2tfZGlkUmVjZWl2ZVJlc3BvbnNlKFdLQ29u
dGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1VSTFJlc3BvbnNlUmVm
IHJlc3BvbnNlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQoreworICAgIHRvUXREb3dubG9hZE1h
bmFnZXIoY2xpZW50SW5mbyktPmRvd25sb2FkUmVjZWl2ZWRSZXNwb25zZSh0b0ltcGwoZG93bmxv
YWQpLCB0b0ltcGwocmVzcG9uc2UpLT5yZXNvdXJjZVJlc3BvbnNlKCkpOworfQorCitzdGF0aWMg
dm9pZCBxdF93a19kaWRDcmVhdGVEZXN0aW5hdGlvbihXS0NvbnRleHRSZWYgY29udGV4dCwgV0tE
b3dubG9hZFJlZiBkb3dubG9hZCwgV0tTdHJpbmdSZWYgcGF0aCwgY29uc3Qgdm9pZCAqY2xpZW50
SW5mbykKK3sKKyAgICB0b1F0RG93bmxvYWRNYW5hZ2VyKGNsaWVudEluZm8pLT5kb3dubG9hZENy
ZWF0ZWREZXN0aW5hdGlvbih0b0ltcGwoZG93bmxvYWQpLCBXS1N0cmluZ0NvcHlRU3RyaW5nKHBh
dGgpKTsKK30KKworc3RhdGljIHZvaWQgcXRfd2tfZGlkRmluaXNoRG93bmxvYWQoV0tDb250ZXh0
UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQgKmNsaWVudElu
Zm8pCit7CisgICAgdG9RdERvd25sb2FkTWFuYWdlcihjbGllbnRJbmZvKS0+ZG93bmxvYWRGaW5p
c2hlZCh0b0ltcGwoZG93bmxvYWQpKTsKK30KKworc3RhdGljIHZvaWQgcXRfd2tfZGlkRmFpbERv
d25sb2FkKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS0Vy
cm9yUmVmIGVycm9yLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQoreworICAgIFFVcmwgZmFpbGlu
Z1VybCA9IFdLVVJMQ29weVFVcmwoV0tFcnJvckNvcHlGYWlsaW5nVVJMKGVycm9yKSk7CisKKyAg
ICB0b1F0RG93bmxvYWRNYW5hZ2VyKGNsaWVudEluZm8pLT5kb3dubG9hZEZhaWxlZCh0b0ltcGwo
ZG93bmxvYWQpLCBRdFdlYkVycm9yKGVycm9yKSk7Cit9CisKK3N0YXRpYyB2b2lkIHF0X3drX2Rp
ZFJlY2VpdmVEYXRhRm9yRG93bmxvYWQoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRS
ZWYgZG93bmxvYWQsIHVpbnQ2NF90IGxlbmd0aCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKK3sK
KyAgICB0b1F0RG93bmxvYWRNYW5hZ2VyKGNsaWVudEluZm8pLT5kb3dubG9hZERhdGFSZWNlaXZl
ZCh0b0ltcGwoZG93bmxvYWQpLCBsZW5ndGgpOworfQorCitRdERvd25sb2FkTWFuYWdlcjo6UXRE
b3dubG9hZE1hbmFnZXIoKQoreworfQorCitRdERvd25sb2FkTWFuYWdlcjo6flF0RG93bmxvYWRN
YW5hZ2VyKCkKK3sKK30KKworUGFzc1JlZlB0cjxRdERvd25sb2FkTWFuYWdlcj4gUXREb3dubG9h
ZE1hbmFnZXI6OmNyZWF0ZShXZWJDb250ZXh0KiBjb250ZXh0KQoreworICAgIFF0RG93bmxvYWRN
YW5hZ2VyKiBtYW5hZ2VyID0gbmV3IFF0RG93bmxvYWRNYW5hZ2VyKCk7CisKKyAgICBXS0NvbnRl
eHREb3dubG9hZENsaWVudCBkb3dubG9hZENsaWVudDsKKyAgICBtZW1zZXQoJmRvd25sb2FkQ2xp
ZW50LCAwLCBzaXplb2YoV0tDb250ZXh0RG93bmxvYWRDbGllbnQpKTsKKyAgICBkb3dubG9hZENs
aWVudC52ZXJzaW9uID0ga1dLQ29udGV4dERvd25sb2FkQ2xpZW50Q3VycmVudFZlcnNpb247Cisg
ICAgZG93bmxvYWRDbGllbnQuY2xpZW50SW5mbyA9IG1hbmFnZXI7CisgICAgZG93bmxvYWRDbGll
bnQuZGlkUmVjZWl2ZVJlc3BvbnNlID0gcXRfd2tfZGlkUmVjZWl2ZVJlc3BvbnNlOworICAgIGRv
d25sb2FkQ2xpZW50LmRpZFJlY2VpdmVEYXRhID0gcXRfd2tfZGlkUmVjZWl2ZURhdGFGb3JEb3du
bG9hZDsKKyAgICBkb3dubG9hZENsaWVudC5kaWRDcmVhdGVEZXN0aW5hdGlvbiA9IHF0X3drX2Rp
ZENyZWF0ZURlc3RpbmF0aW9uOworICAgIGRvd25sb2FkQ2xpZW50LmRpZEZpbmlzaCA9IHF0X3dr
X2RpZEZpbmlzaERvd25sb2FkOworICAgIGRvd25sb2FkQ2xpZW50LmRpZEZhaWwgPSBxdF93a19k
aWRGYWlsRG93bmxvYWQ7CisgICAgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQodG9BUEkoY29u
dGV4dCksICZkb3dubG9hZENsaWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG1hbmFnZXIpOwor
fQorCit2b2lkIFF0RG93bmxvYWRNYW5hZ2VyOjpkb3dubG9hZFJlY2VpdmVkUmVzcG9uc2UoRG93
bmxvYWRQcm94eSogZG93bmxvYWQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKQoreworICAgIC8vIFdpbGwgYmUgY2FsbGVkIHdoZW4gdGhlIGhlYWRlcnMgYXJlIHJl
YWQgYnkgV2ViUHJvY2Vzcy4KKyAgICBRV2ViRG93bmxvYWRJdGVtKiBkb3dubG9hZEl0ZW0gPSBt
X2Rvd25sb2Fkcy52YWx1ZShkb3dubG9hZC0+ZG93bmxvYWRJRCgpKTsKKyAgICBBU1NFUlQoZG93
bmxvYWRJdGVtKTsKKworICAgIGRvd25sb2FkSXRlbS0+ZC0+c291cmNlVXJsID0gcmVzcG9uc2Uu
dXJsKCk7CisgICAgZG93bmxvYWRJdGVtLT5kLT5taW1lVHlwZSA9IHJlc3BvbnNlLm1pbWVUeXBl
KCk7CisgICAgZG93bmxvYWRJdGVtLT5kLT5leHBlY3RlZENvbnRlbnRMZW5ndGggPSByZXNwb25z
ZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKTsKKyAgICBkb3dubG9hZEl0ZW0tPmQtPnN1Z2dlc3Rl
ZEZpbGVuYW1lID0gcmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUoKTsKKworICAgIGRvd25sb2Fk
SXRlbS0+ZC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGRvd25sb2FkSXRlbSk7Cit9CisKK3ZvaWQgUXRE
b3dubG9hZE1hbmFnZXI6OmRvd25sb2FkQ3JlYXRlZERlc3RpbmF0aW9uKERvd25sb2FkUHJveHkq
IGRvd25sb2FkLCBjb25zdCBRU3RyaW5nJiBwYXRoKQoreworICAgIFFXZWJEb3dubG9hZEl0ZW0q
IGRvd25sb2FkSXRlbSA9IG1fZG93bmxvYWRzLnZhbHVlKGRvd25sb2FkLT5kb3dubG9hZElEKCkp
OworICAgIEFTU0VSVChkb3dubG9hZEl0ZW0pOworICAgIGRvd25sb2FkSXRlbS0+ZC0+ZGVzdGlu
YXRpb25QYXRoID0gcGF0aDsKKyAgICBlbWl0IGRvd25sb2FkSXRlbS0+ZGVzdGluYXRpb25GaWxl
Q3JlYXRlZChkb3dubG9hZEl0ZW0tPmQtPmRlc3RpbmF0aW9uUGF0aCk7Cit9CisKK3ZvaWQgUXRE
b3dubG9hZE1hbmFnZXI6OmRvd25sb2FkRmluaXNoZWQoRG93bmxvYWRQcm94eSogZG93bmxvYWQp
Cit7CisgICAgLy8gV2lsbCBiZSBjYWxsZWQgd2hlbiBkb3dubG9hZCBmaW5pc2hlcyB3aXRoIHN1
Y2Nlc3MuCisgICAgUVdlYkRvd25sb2FkSXRlbSogZG93bmxvYWRJdGVtID0gbV9kb3dubG9hZHMu
dGFrZShkb3dubG9hZC0+ZG93bmxvYWRJRCgpKTsKKyAgICBBU1NFUlQoZG93bmxvYWRJdGVtKTsK
KyAgICBlbWl0IGRvd25sb2FkSXRlbS0+c3VjY2VlZGVkKCk7Cit9CisKK3ZvaWQgUXREb3dubG9h
ZE1hbmFnZXI6OmRvd25sb2FkRmFpbGVkKERvd25sb2FkUHJveHkqIGRvd25sb2FkLCBjb25zdCBR
dFdlYkVycm9yJiBlcnJvcikKK3sKKyAgICAvLyBXaWxsIGJlIGNhbGxlZCB3aGVuIGRvd25sb2Fk
IGZhaWxzIG9yIGlzIGFib3J0ZWQuCisgICAgUVdlYkRvd25sb2FkSXRlbSogZG93bmxvYWRJdGVt
ID0gbV9kb3dubG9hZHMudGFrZShkb3dubG9hZC0+ZG93bmxvYWRJRCgpKTsKKyAgICBBU1NFUlQo
ZG93bmxvYWRJdGVtKTsKKyAgICBlbWl0IGRvd25sb2FkSXRlbS0+ZmFpbGVkKGVycm9yLmVycm9y
Q29kZUFzRG93bmxvYWRFcnJvcigpLCBlcnJvci51cmwoKSwgZXJyb3IuZGVzY3JpcHRpb24oKSk7
Cit9CisKK3ZvaWQgUXREb3dubG9hZE1hbmFnZXI6OmRvd25sb2FkRGF0YVJlY2VpdmVkKERvd25s
b2FkUHJveHkqIGRvd25sb2FkLCB1aW50NjRfdCBsZW5ndGgpCit7CisgICAgLy8gV2lsbCBiZSBj
YWxsZWQgZXZlcnl0aW1lIGJ5dGVzIHdlcmUgd3JpdHRlbiB0byBkZXN0aW5hdGlvbiBmaWxlIGJ5
IFdlYlByb2Nlc3MuCisgICAgUVdlYkRvd25sb2FkSXRlbSogZG93bmxvYWRJdGVtID0gbV9kb3du
bG9hZHMudmFsdWUoZG93bmxvYWQtPmRvd25sb2FkSUQoKSk7CisgICAgQVNTRVJUKGRvd25sb2Fk
SXRlbSk7CisgICAgZG93bmxvYWRJdGVtLT5kLT50b3RhbEJ5dGVzUmVjZWl2ZWQgKz0gbGVuZ3Ro
OworICAgIGVtaXQgZG93bmxvYWRJdGVtLT50b3RhbEJ5dGVzUmVjZWl2ZWRDaGFuZ2VkKGxlbmd0
aCk7Cit9CisKK3ZvaWQgUXREb3dubG9hZE1hbmFnZXI6OmFkZERvd25sb2FkKERvd25sb2FkUHJv
eHkqIGRvd25sb2FkLCBRV2ViRG93bmxvYWRJdGVtKiBkb3dubG9hZEl0ZW0pCit7CisgICAgbV9k
b3dubG9hZHNbZG93bmxvYWQtPmRvd25sb2FkSUQoKV0gPSBkb3dubG9hZEl0ZW07Cit9CisKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdERvd25sb2FkTWFuYWdl
ci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0RG93bmxvYWRNYW5hZ2VyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMGJmNzIxNmQ0MTY4OWE2MDJhMDM3M2U0Yjc5MTRiYTkzZDdjMmU3OAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdERvd25sb2FkTWFuYWdl
ci5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgTm9r
aWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIFF0
RG93bmxvYWRNYW5hZ2VyX2gKKyNkZWZpbmUgUXREb3dubG9hZE1hbmFnZXJfaAorCisjaW5jbHVk
ZSA8UU1hcD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CisKK2NsYXNzIFF0V2ViRXJyb3I7CitjbGFzcyBRV2ViRG93bmxvYWRJdGVtOwor
CituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOworfQorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgRG93bmxvYWRQcm94eTsKK2NsYXNzIFdlYkNvbnRleHQ7
CisKK2NsYXNzIFF0RG93bmxvYWRNYW5hZ2VyIDogcHVibGljIFJlZkNvdW50ZWQ8UXREb3dubG9h
ZE1hbmFnZXI+IHsKK3B1YmxpYzoKKyAgICB+UXREb3dubG9hZE1hbmFnZXIoKTsKKworICAgIHZv
aWQgYWRkRG93bmxvYWQoRG93bmxvYWRQcm94eSosIFFXZWJEb3dubG9hZEl0ZW0qKTsKKworICAg
IHZvaWQgZG93bmxvYWRSZWNlaXZlZFJlc3BvbnNlKERvd25sb2FkUHJveHkqLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgdm9pZCBkb3dubG9hZENyZWF0ZWREZXN0aW5h
dGlvbihEb3dubG9hZFByb3h5KiwgY29uc3QgUVN0cmluZyYgcGF0aCk7CisgICAgdm9pZCBkb3du
bG9hZEZpbmlzaGVkKERvd25sb2FkUHJveHkqKTsKKyAgICB2b2lkIGRvd25sb2FkRmFpbGVkKERv
d25sb2FkUHJveHkqLCBjb25zdCBRdFdlYkVycm9yJik7CisgICAgdm9pZCBkb3dubG9hZERhdGFS
ZWNlaXZlZChEb3dubG9hZFByb3h5KiwgdWludDY0X3QgbGVuZ3RoKTsKKworICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFF0RG93bmxvYWRNYW5hZ2VyPiBjcmVhdGUoV2ViQ29udGV4dCopOworcHJpdmF0
ZToKKyAgICBRdERvd25sb2FkTWFuYWdlcigpOworCisgICAgUU1hcDx1aW50NjRfdCwgUVdlYkRv
d25sb2FkSXRlbSo+IG1fZG93bmxvYWRzOworfTsKKworfQorI2VuZGlmIC8qIFF0RG93bmxvYWRN
YW5hZ2VyX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFRv
dWNoVmlld0ludGVyZmFjZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0VG91Y2hW
aWV3SW50ZXJmYWNlLmgKaW5kZXggM2E0NTM0OTBmOTIzMWQ4MDk4MjRhYmY4YTNlYWMxOWM0OWQx
ZDY3Yi4uYTRmZDQ1N2EzODk0NDU3MjM4ZTNmMjZiNDZlYmY5NTM3YmQ1ZGNhNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0VG91Y2hWaWV3SW50ZXJmYWNlLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0VG91Y2hWaWV3SW50ZXJmYWNlLmgKQEAg
LTgxLDYgKzgxLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFFKU0VuZ2luZSogZW5naW5lKCk7
CiAKICAgICB2aXJ0dWFsIHZvaWQgY2hvb3NlRmlsZXMoV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
clJlZiwgY29uc3QgUVN0cmluZ0xpc3QmLCBGaWxlQ2hvb3NlclR5cGUpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBkb3dubG9hZFJlcXVlc3RlZChRV2ViRG93bmxvYWRJdGVtKiBkb3dubG9hZEl0ZW0p
IHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZE1vdXNlTW92ZU92ZXJFbGVtZW50KGNvbnN0IFFV
cmwmLCBjb25zdCBRU3RyaW5nJikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9RdFZpZXdJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9RdFZpZXdJbnRlcmZhY2UuaAppbmRleCA1MjZhNDk1NjEwZDk2NDE0MWU4YzkzNGYyZjVlY2M5
YTE1OTk4MGJjLi5hODE4OTExNDE4YzMzMjAwMDM2MGJkZjQ0ZTM1NGEzNWMyYTllNzMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRWaWV3SW50ZXJmYWNlLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0Vmlld0ludGVyZmFjZS5oCkBAIC0yNyw2
ICsyNyw3IEBACiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KIAogY2xhc3MgUXRXZWJFcnJv
cjsKK2NsYXNzIFFXZWJEb3dubG9hZEl0ZW07CiAKIFFUX0JFR0lOX05BTUVTUEFDRQogY2xhc3Mg
UUN1cnNvcjsKQEAgLTkzLDYgKzk0LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjaG9v
c2VGaWxlcyhXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmLCBjb25zdCBRU3RyaW5nTGlzdCYg
c2VsZWN0ZWRGaWxlTmFtZXMsIEZpbGVDaG9vc2VyVHlwZSkgPSAwOwogCiAgICAgdmlydHVhbCB2
b2lkIGRpZE1vdXNlTW92ZU92ZXJFbGVtZW50KGNvbnN0IFFVcmwmLCBjb25zdCBRU3RyaW5nJikg
PSAwOworCisgICAgdmlydHVhbCB2b2lkIGRvd25sb2FkUmVxdWVzdGVkKFFXZWJEb3dubG9hZEl0
ZW0qKSA9IDA7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvUXRXZWJFcnJvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJFcnJv
ci5jcHAKaW5kZXggNzY1NDk3N2UwNzdiYWI3ZDU0YjU5N2VkMWZiNGJhOWJhZDE1NzlkNi4uNmQy
ZTEwZDgxMTE0NTBhNjJhY2ZjZDhhNDg0MGI2YzEzZDAwODJlNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9RdFdlYkVycm9yLmNwcApAQCAtNjAsMyArNjAsOCBAQCBRVXJsIFF0V2Vi
RXJyb3I6OnVybCgpIGNvbnN0CiAgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IGZhaWxpbmdVUkwg
PSBhZG9wdFdLKFdLRXJyb3JDb3B5RmFpbGluZ1VSTChlcnJvci5nZXQoKSkpOwogICAgIHJldHVy
biBXS1VSTENvcHlRVXJsKGZhaWxpbmdVUkwuZ2V0KCkpOwogfQorCitRU3RyaW5nIFF0V2ViRXJy
b3I6OmRlc2NyaXB0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV0tTdHJpbmdDb3B5UVN0cmlu
ZyhXS0Vycm9yQ29weUxvY2FsaXplZERlc2NyaXB0aW9uKGVycm9yLmdldCgpKSk7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJFcnJvci5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViRXJyb3IuaAppbmRleCAxMWIwOTUzZjJlZWUzZTU2
NTEzYzRjOTkwZjI5ZDAzMTNhZDYyNmQ0Li45MTE4N2U5MjZhNGNkYWViOTNkOTdkOGJjMzFhMTBm
NTc0Yzg2NDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJF
cnJvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYkVycm9yLmgKQEAg
LTIxLDYgKzIxLDcgQEAKICNpZm5kZWYgUXRXZWJFcnJvcl9oCiAjZGVmaW5lIFF0V2ViRXJyb3Jf
aAogCisjaW5jbHVkZSAicXdlYmRvd25sb2FkaXRlbS5oIgogI2luY2x1ZGUgInF3ZWJraXRnbG9i
YWwuaCIKICNpbmNsdWRlIDxRdE5ldHdvcmsvUU5ldHdvcmtSZXBseT4KICNpbmNsdWRlIDxXS0Vy
cm9yLmg+CkBAIC00Miw5ICs0MywxMSBAQCBwdWJsaWM6CiAgICAgVHlwZSB0eXBlKCkgY29uc3Q7
CiAgICAgUVVybCB1cmwoKSBjb25zdDsKICAgICBpbnQgZXJyb3JDb2RlKCkgY29uc3Q7CisgICAg
UVN0cmluZyBkZXNjcmlwdGlvbigpIGNvbnN0OwogCiAgICAgaW50IGVycm9yQ29kZUFzSHR0cFN0
YXR1c0NvZGUoKSBjb25zdCB7IHJldHVybiBlcnJvckNvZGUoKTsgfQogICAgIFFOZXR3b3JrUmVw
bHk6Ok5ldHdvcmtFcnJvciBlcnJvckNvZGVBc05ldHdvcmtFcnJvcigpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PFFOZXR3b3JrUmVwbHk6Ok5ldHdvcmtFcnJvcj4oZXJyb3JDb2RlKCkpOyB9
CisgICAgUVdlYkRvd25sb2FkSXRlbTo6RG93bmxvYWRFcnJvciBlcnJvckNvZGVBc0Rvd25sb2Fk
RXJyb3IoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxRV2ViRG93bmxvYWRJdGVtOjpEb3du
bG9hZEVycm9yPihlcnJvckNvZGUoKSk7IH0KIAogICAgIFF0V2ViRXJyb3IoY29uc3QgUXRXZWJF
cnJvciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQ
YWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5
LmNwcAppbmRleCA2NDMwYTA5MDA1MTYzOWFjNjY0YTAyMWZjNjdmMzFiZGM3ZDkzMzRiLi45NDU0
ZjU2MDUwMjA3Zjg0ZmJkM2ZhNTBjYzhiOTg2YzlhZTUwNTM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAKQEAgLTIyLDEwICsyMiwxMyBAQAog
I2luY2x1ZGUgIlF0V2ViUGFnZVByb3h5LmgiCiAKICNpbmNsdWRlICJRdFdlYkVycm9yLmgiCisj
aW5jbHVkZSAicXdlYmRvd25sb2FkaXRlbS5oIgorI2luY2x1ZGUgInF3ZWJkb3dubG9hZGl0ZW1f
cC5oIgogI2luY2x1ZGUgInF3ZWJwcmVmZXJlbmNlcy5oIgogI2luY2x1ZGUgInF3ZWJwcmVmZXJl
bmNlc19wLmgiCiAKICNpbmNsdWRlICJDbGllbnRJbXBsLmgiCisjaW5jbHVkZSAiRG93bmxvYWRQ
cm94eS5oIgogI2luY2x1ZGUgInF3a2hpc3RvcnkuaCIKICNpbmNsdWRlICJxd2toaXN0b3J5X3Au
aCIKICNpbmNsdWRlICJGaW5kSW5kaWNhdG9yLmgiCkBAIC02Myw2ICs2Niw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogUmVmUHRyPFdlYkNv
bnRleHQ+IFF0V2ViUGFnZVByb3h5OjpzX2RlZmF1bHRDb250ZXh0OworUmVmUHRyPFF0RG93bmxv
YWRNYW5hZ2VyPiBRdFdlYlBhZ2VQcm94eTo6c19kb3dubG9hZE1hbmFnZXI7CiAKIHVuc2lnbmVk
IFF0V2ViUGFnZVByb3h5OjpzX2RlZmF1bHRQYWdlUHJveHlDb3VudCA9IDA7CiAKQEAgLTcxLDYg
Kzc1LDcgQEAgUGFzc1JlZlB0cjxXZWJDb250ZXh0PiBRdFdlYlBhZ2VQcm94eTo6ZGVmYXVsdFdL
Q29udGV4dCgpCiAgICAgaWYgKCFzX2RlZmF1bHRDb250ZXh0KSB7CiAgICAgICAgIHNfZGVmYXVs
dENvbnRleHQgPSBXZWJDb250ZXh0OjpjcmVhdGUoU3RyaW5nKCkpOwogICAgICAgICBzZXR1cENv
bnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudCh0b0FQSShzX2RlZmF1bHRDb250ZXh0LmdldCgpKSk7
CisgICAgICAgIHNfZG93bmxvYWRNYW5hZ2VyID0gUXREb3dubG9hZE1hbmFnZXI6OmNyZWF0ZShz
X2RlZmF1bHRDb250ZXh0LmdldCgpKTsKICAgICB9CiAgICAgcmV0dXJuIHNfZGVmYXVsdENvbnRl
eHQ7CiB9CkBAIC0xMzYsOCArMTQxLDEwIEBAIFF0V2ViUGFnZVByb3h5Ojp+UXRXZWJQYWdlUHJv
eHkoKQogICAgIGlmIChtX2NvbnRleHQgPT0gc19kZWZhdWx0Q29udGV4dCkgewogICAgICAgICBB
U1NFUlQoc19kZWZhdWx0UGFnZVByb3h5Q291bnQgPiAwKTsKICAgICAgICAgc19kZWZhdWx0UGFn
ZVByb3h5Q291bnQtLTsKLSAgICAgICAgaWYgKCFzX2RlZmF1bHRQYWdlUHJveHlDb3VudCkKKyAg
ICAgICAgaWYgKCFzX2RlZmF1bHRQYWdlUHJveHlDb3VudCkgewogICAgICAgICAgICAgc19kZWZh
dWx0Q29udGV4dC5jbGVhcigpOworICAgICAgICAgICAgc19kb3dubG9hZE1hbmFnZXIuY2xlYXIo
KTsKKyAgICAgICAgfQogICAgIH0KICAgICBkZWxldGUgbV9oaXN0b3J5OwogfQpAQCAtNTk1LDQg
KzYwMiwyMyBAQCB2b2lkIFF0V2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRp
ZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudAogICAgIG1fdmlld0ludGVyZmFjZS0+
ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGFyZ3MpOwogfQogCit2b2lkIFF0V2ViUGFnZVBy
b3h5OjpoYW5kbGVEb3dubG9hZFJlcXVlc3QoRG93bmxvYWRQcm94eSogZG93bmxvYWQpCit7Cisg
ICAgLy8gVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgaG9va2luZyB1cCBhIERvd25s
b2FkUHJveHkgdG8gb3VyIEFQSSBsYXllcgorICAgIC8vIGJ5IGNyZWF0aW5nIGEgUVdlYkRvd25s
b2FkSXRlbS4gSXQgd2lsbCB0aGVuIHdhaXQgZm9yIHRoZSBRV2ViRG93bmxvYWRJdGVtIHRvIGJl
CisgICAgLy8gcmVhZHkgKGZpbGxlZCB3aXRoIHRoZSBSZXNvdXJjZVJlc3BvbnNlIGluZm9ybWF0
aW9uKSBzbyB3ZSBjYW4gcGFzcyBpdCB0aHJvdWdoIHRvCisgICAgLy8gb3VyIFdlYlZpZXdzLgor
ICAgIFFXZWJEb3dubG9hZEl0ZW0qIGRvd25sb2FkSXRlbSA9IG5ldyBRV2ViRG93bmxvYWRJdGVt
KCk7CisgICAgZG93bmxvYWRJdGVtLT5kLT5kb3dubG9hZFByb3h5ID0gZG93bmxvYWQ7CisKKyAg
ICBjb25uZWN0KGRvd25sb2FkSXRlbS0+ZCwgU0lHTkFMKHJlY2VpdmVkUmVzcG9uc2UoUVdlYkRv
d25sb2FkSXRlbSopKSwgdGhpcywgU0xPVChkaWRSZWNlaXZlRG93bmxvYWRSZXNwb25zZShRV2Vi
RG93bmxvYWRJdGVtKikpKTsKKyAgICBzX2Rvd25sb2FkTWFuYWdlci0+YWRkRG93bmxvYWQoZG93
bmxvYWQsIGRvd25sb2FkSXRlbSk7Cit9CisKK3ZvaWQgUXRXZWJQYWdlUHJveHk6OmRpZFJlY2Vp
dmVEb3dubG9hZFJlc3BvbnNlKFFXZWJEb3dubG9hZEl0ZW0qIGRvd25sb2FkKQoreworICAgIC8v
IE5vdyB0aGF0IG91ciBkb3dubG9hZEl0ZW0gaGFzIGV2ZXJ5dGhpbmcgd2UgbmVlZCB3ZSBjYW4g
ZW1pdCBkb3dubG9hZFJlcXVlc3RlZC4KKyAgICBtX3ZpZXdJbnRlcmZhY2UtPmRvd25sb2FkUmVx
dWVzdGVkKGRvd25sb2FkKTsKK30KKwogI2luY2x1ZGUgIm1vY19RdFdlYlBhZ2VQcm94eS5jcHAi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5oCmluZGV4IDRh
ZTQ3YzljNWI0M2Y5Y2QzNmQ3Y2ZiYjZlZGJiMGExNjMzMTRlZTYuLmRlMDFkYjI3OGVjZmFkZDY0
MDA0OTU5NzIwYzM2OTJlNTQ4ODlmYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9RdFdlYlBhZ2VQcm94eS5oCkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNsdWRlICJMYXllclRy
ZWVDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGFnZUNsaWVudC5oIgorI2luY2x1ZGUgIlF0RG93bmxv
YWRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUXRQb2xpY3lJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJR
dFZpZXdJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKQEAgLTE3OCw4
ICsxNzksMTEgQEAgcHVibGljOgogICAgIFFXS0hpc3RvcnkqIGhpc3RvcnkoKSBjb25zdDsKICAg
ICBRdFZpZXdJbnRlcmZhY2UqIHZpZXdJbnRlcmZhY2UoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdJ
bnRlcmZhY2U7IH0KIAorICAgIHZvaWQgaGFuZGxlRG93bmxvYWRSZXF1ZXN0KERvd25sb2FkUHJv
eHkqKTsKKwogcHVibGljIFFfU0xPVFM6CiAgICAgdm9pZCBuYXZpZ2F0aW9uU3RhdGVDaGFuZ2Vk
KCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRG93bmxvYWRSZXNwb25zZShRV2ViRG93bmxvYWRJdGVt
Kik7CiAKIHB1YmxpYzoKICAgICBRX1NJR05BTCB2b2lkIHNjcm9sbFJlcXVlc3RlZChpbnQgZHgs
IGludCBkeSk7CkBAIC0yMDMsNiArMjA3LDcgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFdlYkNvbnRleHQ+IGRlZmF1bHRXS0NvbnRleHQoKTsKICAgICBzdGF0aWMgUmVmUHRy
PFdlYkNvbnRleHQ+IHNfZGVmYXVsdENvbnRleHQ7CisgICAgc3RhdGljIFJlZlB0cjxRdERvd25s
b2FkTWFuYWdlcj4gc19kb3dubG9hZE1hbmFnZXI7CiAgICAgc3RhdGljIHVuc2lnbmVkIHNfZGVm
YXVsdFBhZ2VQcm94eUNvdW50OwogCiAgICAgUmVmUHRyPFdlYkNvbnRleHQ+IG1fY29udGV4dDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJvIGIvU291cmNlL1dlYktpdDIv
V2ViS2l0Mi5wcm8KaW5kZXggMGQyMTY4ODAyYzljYjAxZTNiZmQ5MzQwMjZlZjc5MDhkNzkwODAx
Zi4uYmYzYTUyYjNmZmM4ZDQyNDgzNjA5ZWY5YTBjZmIyOWVhYjQ4ODZkMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcm8KKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi5w
cm8KQEAgLTI2MCw2ICsyNjAsNyBAQCBIRUFERVJTICs9IFwKICAgICBVSVByb2Nlc3MvcXQvUXRE
ZXNrdG9wV2ViUGFnZVByb3h5LmggXAogICAgIFVJUHJvY2Vzcy9xdC9RdFRvdWNoV2ViUGFnZVBy
b3h5LmggXAogICAgIFVJUHJvY2Vzcy9xdC9RdFdlYkVycm9yLmggXAorICAgIFVJUHJvY2Vzcy9x
dC9RdERvd25sb2FkTWFuYWdlci5oIFwKICAgICBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHku
aCBcCiAgICAgVUlQcm9jZXNzL3F0L3F3a2hpc3RvcnkuaCBcCiAgICAgVUlQcm9jZXNzL3F0L3F3
a2hpc3RvcnlfcC5oIFwKQEAgLTUwNCw2ICs1MDUsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBVSVBy
b2Nlc3MvcXQvUXREZXNrdG9wV2ViUGFnZVByb3h5LmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0
VG91Y2hXZWJQYWdlUHJveHkuY3BwIFwKICAgICBVSVByb2Nlc3MvcXQvUXRXZWJFcnJvci5jcHAg
XAorICAgIFVJUHJvY2Vzcy9xdC9RdERvd25sb2FkTWFuYWdlci5jcHAgXAogICAgIFVJUHJvY2Vz
cy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9xd2toaXN0b3J5LmNw
cCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0U0dVcGRhdGVRdWV1ZS5jcHAgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViS2l0MkFQSS5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyQVBJ
LnByaQppbmRleCA1MTg1OTU3NjJlZDA3NTgzODliMTliZmQyOTgzODNkMTQ4NmU4ODkzLi4xYWI4
NjRjODRlZDlhZDMwNjZkNjdjZjIyYmVmOWYzYTdkODliZTJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyQVBJLnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyQVBJLnBy
aQpAQCAtNTAsNiArNTAsNyBAQCBXRUJLSVQyX0FQSV9TT1VSQ0VTID0gXAogICAgICQkU09VUkNF
X0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL3F0L1dLVVJMUXQuY3BwIFwKICAgICAkJFNP
VVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FiYXNld2Vidmlldy5jcHAgXAogICAg
ICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNw
cCBcCisgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxv
YWRpdGVtLmNwcCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
dG91Y2h3ZWJwYWdlLmNwcCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xdG91Y2h3ZWJ2aWV3LmNwcCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9xd2VibmF2aWdhdGlvbmNvbnRyb2xsZXIuY3BwIFwKQEAgLTEzNSw2ICsxMzYs
OCBAQCBXRUJLSVQyX0FQSV9IRUFERVJTICs9IFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlld19wLmggXAogICAgICQkU09VUkNFX0RJUi9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnByZWZlcmVuY2VzLmggXAogICAgICQkU09VUkNF
X0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnByZWZlcmVuY2VzX3AuaCBcCisgICAg
JCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxvYWRpdGVtLmgg
XAorICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYmRvd25sb2Fk
aXRlbV9wLmggXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRv
dWNod2VicGFnZS5oIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3F0b3VjaHdlYnBhZ2VfcC5oIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3F0b3VjaHdlYnZpZXcuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWQuaAppbmRleCBhY2NjZDNmODhlMmE2OTk1OTdhMzliN2JmODI4ZDQz
NjM3YjcwZjM4Li5jMDY2ZTJmNmI0NDM5ZTZjNTZlYzMwMTVmN2JmZTU1MjFhOTcyNDVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKQEAgLTkz
LDYgKzkzLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENhbmNlbChjb25zdCBDb3JlSVBDOjpE
YXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhKTsKICAgICB2b2lkIGRpZERlY2lkZURlc3RpbmF0aW9u
KGNvbnN0IFN0cmluZyYsIGJvb2wgYWxsb3dPdmVyd3JpdGUpOwogCisjaWYgUExBVEZPUk0oUVQp
CisgICAgdm9pZCBzdGFydFRyYW5zZmVyKGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24pOworI2Vu
ZGlmCisKICNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24o
KSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uOyB9CiAgICAgRG93bmxvYWRBdXRoZW50aWNh
dGlvbkNsaWVudCogYXV0aGVudGljYXRpb25DbGllbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCmluZGV4IGE2
MjQ4OTFmODAxOTRmM2FkYzE1MTgxYWM4MDg0YjQ2OTU1OGJjYjYuLjYwZGNlODliNGVlNGNjYzM4
YmVmOTg5NjU1OWY5ZDc4ZTY3ZjMyNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcApAQCAtNzksNCArNzksMTMg
QEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OmRvd25sb2FkRmluaXNoZWQoRG93bmxvYWQqIGRvd25s
b2FkKQogICAgIGRlbGV0ZSBkb3dubG9hZDsKIH0KIAorI2lmIFBMQVRGT1JNKFFUKQordm9pZCBE
b3dubG9hZE1hbmFnZXI6OnN0YXJ0VHJhbnNmZXIodWludDY0X3QgZG93bmxvYWRJRCwgY29uc3Qg
U3RyaW5nJiBkZXN0aW5hdGlvbikKK3sKKyAgICBBU1NFUlQobV9kb3dubG9hZHMuY29udGFpbnMo
ZG93bmxvYWRJRCkpOworICAgIERvd25sb2FkKiBkb3dubG9hZCA9IG1fZG93bmxvYWRzLmdldChk
b3dubG9hZElEKTsKKyAgICBkb3dubG9hZC0+c3RhcnRUcmFuc2ZlcihkZXN0aW5hdGlvbik7Cit9
CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCmluZGV4IDFmMjdiODY3
YWVkNTU4ZmJiNzUzYmM2NTJmMThiMGFjYjY5YTAwMjMuLjZmYTdhZWJlZTRmMjdiZDQzYzE3MDY2
Y2JiN2JiODNhNjg0MmQ0YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCkBAIC0yOSw2ICsyOSwxMCBAQAogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKK25hbWVz
cGFjZSBXVEYgeworY2xhc3MgU3RyaW5nOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
Y2xhc3MgUmVzb3VyY2VIYW5kbGU7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwpAQCAtNTQs
NiArNTgsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZG93bmxvYWRGaW5pc2hlZChEb3dubG9hZCop
OwogICAgIGJvb2wgaXNEb3dubG9hZGluZygpIGNvbnN0IHsgcmV0dXJuICFtX2Rvd25sb2Fkcy5p
c0VtcHR5KCk7IH0KIAorI2lmIFBMQVRGT1JNKFFUKQorICAgIHZvaWQgc3RhcnRUcmFuc2Zlcih1
aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBXVEY6OlN0cmluZyYgZGVzdGluYXRpb24pOworI2Vu
ZGlmCisKIHByaXZhdGU6CiAgICAgRG93bmxvYWRNYW5hZ2VyKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L0Rvd25sb2FkUXQuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvRG93bmxvYWRRdC5jcHAKaW5kZXgg
OWVlOTk5NWU4MGU4ODBkZGE2ZDI3YzlhM2I1MGYwYzE2MWRlYTBlMC4uNGVlZjQxYzQwYjZjNzY0
OWJhOTA1NDM0NmUyODE2YWE4OTU0MGQ3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9Eb3dubG9hZHMvcXQvRG93bmxvYWRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvRG93bmxvYWRRdC5jcHAKQEAgLTQ2LDEzICs0NiwxNCBA
QCB2b2lkIERvd25sb2FkOjpzdGFydChXZWJQYWdlKiBpbml0aWF0aW5nV2ViUGFnZSkKICAgICBB
U1NFUlQoIW1fcXREb3dubG9hZGVyKTsKIAogICAgIG1fcXREb3dubG9hZGVyID0gbmV3IFF0Rmls
ZURvd25sb2FkZXIodGhpcywgYWRvcHRQdHIobWFuYWdlci0+Z2V0KG1fcmVxdWVzdC50b05ldHdv
cmtSZXF1ZXN0KCkpKSk7Ci0gICAgbV9xdERvd25sb2FkZXItPnN0YXJ0KCk7CisgICAgbV9xdERv
d25sb2FkZXItPmluaXQoKTsKIH0KIAogdm9pZCBEb3dubG9hZDo6c3RhcnRXaXRoSGFuZGxlKFdl
YlBhZ2UqIGluaXRpYXRpbmdQYWdlLCBSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIGluaXRpYWxSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
KQogewogICAgIEFTU0VSVCghbV9xdERvd25sb2FkZXIpOwogICAgIG1fcXREb3dubG9hZGVyID0g
bmV3IFF0RmlsZURvd25sb2FkZXIodGhpcywgYWRvcHRQdHIoaGFuZGxlLT5nZXRJbnRlcm5hbCgp
LT5tX2pvYi0+cmVsZWFzZSgpKSk7CisgICAgbV9xdERvd25sb2FkZXItPmluaXQoKTsKIH0KIAog
dm9pZCBEb3dubG9hZDo6Y2FuY2VsKCkKQEAgLTcwLDcgKzcxLDEyIEBAIHZvaWQgRG93bmxvYWQ6
OnBsYXRmb3JtSW52YWxpZGF0ZSgpCiAKIHZvaWQgRG93bmxvYWQ6OmRpZERlY2lkZURlc3RpbmF0
aW9uKGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24sIGJvb2wgYWxsb3dPdmVyd3JpdGUpCiB7Ci0g
ICAgbV9xdERvd25sb2FkZXItPmRlY2lkZWREZXN0aW5hdGlvbihkZXN0aW5hdGlvbiwgYWxsb3dP
dmVyd3JpdGUpOworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRG93bmxvYWQ6OnN0
YXJ0VHJhbnNmZXIoY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbikKK3sKKyAgICBtX3F0RG93bmxv
YWRlci0+c3RhcnRUcmFuc2ZlcihkZXN0aW5hdGlvbik7CiB9CiAKIHZvaWQgRG93bmxvYWQ6OnBs
YXRmb3JtRGlkRmluaXNoKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
RG93bmxvYWRzL3F0L1F0RmlsZURvd25sb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9Eb3dubG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5jcHAKaW5kZXggYzkzNmIwOGU3MGY5
MDRjZjRiNWIzMzZmNTRiNzI2OTc3ZGJlZDBmOS4uYzNiMmU4ZDBlZTIyYTQ3NzU3ZDNjMDNkYThj
YWRkMzBlZGRmMmVlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3du
bG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9Eb3dubG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5jcHAKQEAgLTUzLDQ1ICs1Myw0MSBA
QCBRdEZpbGVEb3dubG9hZGVyOjp+UXRGaWxlRG93bmxvYWRlcigpCiAgICAgYWJvcnREb3dubG9h
ZFdyaXRpbmdBbmRFbWl0RXJyb3IoUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvckFib3J0
ZWQpOwogfQogCi12b2lkIFF0RmlsZURvd25sb2FkZXI6OnN0YXJ0KCkKK3ZvaWQgUXRGaWxlRG93
bmxvYWRlcjo6aW5pdCgpCiB7CiAgICAgY29ubmVjdChtX3JlcGx5LmdldCgpLCBTSUdOQUwocmVh
ZHlSZWFkKCkpLCBTTE9UKG9uUmVhZHlSZWFkKCkpKTsKICAgICBjb25uZWN0KG1fcmVwbHkuZ2V0
KCksIFNJR05BTChmaW5pc2hlZCgpKSwgU0xPVChvbkZpbmlzaGVkKCkpKTsKICAgICBjb25uZWN0
KG1fcmVwbHkuZ2V0KCksIFNJR05BTChlcnJvcihRTmV0d29ya1JlcGx5OjpOZXR3b3JrRXJyb3Ip
KSwgU0xPVChvbkVycm9yKFFOZXR3b3JrUmVwbHk6Ok5ldHdvcmtFcnJvcikpKTsKLQotICAgIC8v
IENhbGwgb25SZWFkeVJlYWQganVzdCBpbiBjYXNlIHNvbWUgZGF0YSBpcyBhbHJlYWR5IHdhaXRp
bmcuCi0gICAgb25SZWFkeVJlYWQoKTsKIH0KIAotdm9pZCBRdEZpbGVEb3dubG9hZGVyOjpkZXRl
cm1pbmVGaWxlbmFtZSgpCitRU3RyaW5nIFF0RmlsZURvd25sb2FkZXI6OmRldGVybWluZUZpbGVu
YW1lKCkKIHsKICAgICBBU1NFUlQoIW1fZGVzdGluYXRpb25GaWxlKTsKIAotICAgIFFTdHJpbmcg
ZmlsZU5hbWVDYW5kaWRhdGUgPSBmaWxlbmFtZUZyb21IVFRQQ29udGVudERpc3Bvc2l0aW9uKFFT
dHJpbmc6OmZyb21MYXRpbjEobV9yZXBseS0+cmF3SGVhZGVyKCJDb250ZW50LURpc3Bvc2l0aW9u
IikpKTsKLSAgICBpZiAoZmlsZU5hbWVDYW5kaWRhdGUuaXNFbXB0eSgpKSB7CisgICAgUVN0cmlu
ZyBmaWxlbmFtZUNhbmRpZGF0ZSA9IGZpbGVuYW1lRnJvbUhUVFBDb250ZW50RGlzcG9zaXRpb24o
UVN0cmluZzo6ZnJvbUxhdGluMShtX3JlcGx5LT5yYXdIZWFkZXIoIkNvbnRlbnQtRGlzcG9zaXRp
b24iKSkpOworICAgIGlmIChmaWxlbmFtZUNhbmRpZGF0ZS5pc0VtcHR5KCkpIHsKICAgICAgICAg
S1VSTCBrdXJsID0gbV9yZXBseS0+dXJsKCk7Ci0gICAgICAgIGZpbGVOYW1lQ2FuZGlkYXRlID0g
ZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKGt1cmwubGFzdFBhdGhDb21wb25lbnQoKSk7CisgICAg
ICAgIGZpbGVuYW1lQ2FuZGlkYXRlID0gZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKGt1cmwubGFz
dFBhdGhDb21wb25lbnQoKSk7CiAgICAgfQogCi0gICAgaWYgKGZpbGVOYW1lQ2FuZGlkYXRlLmlz
RW1wdHkoKSkgeworICAgIGlmIChmaWxlbmFtZUNhbmRpZGF0ZS5pc0VtcHR5KCkpIHsKICAgICAg
ICAgYWJvcnREb3dubG9hZFdyaXRpbmdBbmRFbWl0RXJyb3IoUXRGaWxlRG93bmxvYWRlcjo6RG93
bmxvYWRFcnJvckNhbm5vdERldGVybWluZUZpbGVuYW1lKTsKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gUVN0cmluZygpOwogICAgIH0KIAogICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHdl
IHJlbW92ZSBwb3NzaWJsZSAiLi4vLi4iIHBhcnRzIGluIHRoZSBnaXZlbiBmaWxlIG5hbWUuCi0g
ICAgUUZpbGVJbmZvIGZpbGVOYW1lRmlsdGVyKGZpbGVOYW1lQ2FuZGlkYXRlKTsKLSAgICBRU3Ry
aW5nIGZpbGVOYW1lID0gZmlsZU5hbWVGaWx0ZXIuZmlsZU5hbWUoKTsKKyAgICBRRmlsZUluZm8g
ZmlsZW5hbWVGaWx0ZXIoZmlsZW5hbWVDYW5kaWRhdGUpOworICAgIFFTdHJpbmcgZmlsZW5hbWUg
PSBmaWxlbmFtZUZpbHRlci5maWxlTmFtZSgpOwogCi0gICAgaWYgKGZpbGVOYW1lLmlzRW1wdHko
KSkgeworICAgIGlmIChmaWxlbmFtZS5pc0VtcHR5KCkpIHsKICAgICAgICAgYWJvcnREb3dubG9h
ZFdyaXRpbmdBbmRFbWl0RXJyb3IoUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvckNhbm5v
dERldGVybWluZUZpbGVuYW1lKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gUVN0
cmluZygpOwogICAgIH0KIAotICAgIGJvb2wgYWxsb3dPdmVyd3JpdGU7Ci0gICAgbV9kb3dubG9h
ZC0+ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoZmlsZU5hbWUsIGFsbG93
T3ZlcndyaXRlKTsKKyAgICByZXR1cm4gZmlsZW5hbWU7CiB9CiAKLXZvaWQgUXRGaWxlRG93bmxv
YWRlcjo6ZGVjaWRlZERlc3RpbmF0aW9uKGNvbnN0IFFTdHJpbmcmIGRlY2lkZWRGaWxlUGF0aCwg
Ym9vbCBhbGxvd092ZXJ3cml0ZSkKK3ZvaWQgUXRGaWxlRG93bmxvYWRlcjo6c3RhcnRUcmFuc2Zl
cihjb25zdCBRU3RyaW5nJiBkZWNpZGVkRmlsZVBhdGgpCiB7CiAgICAgQVNTRVJUKCFtX2Rlc3Rp
bmF0aW9uRmlsZSk7CiAKQEAgLTEwMiwxNyArOTgsMTIgQEAgdm9pZCBRdEZpbGVEb3dubG9hZGVy
OjpkZWNpZGVkRGVzdGluYXRpb24oY29uc3QgUVN0cmluZyYgZGVjaWRlZEZpbGVQYXRoLCBib29s
IGEKICAgICB9CiAKICAgICBpZiAoZGVjaWRlZEZpbGVQYXRoLmlzRW1wdHkoKSkgewotICAgICAg
ICBhYm9ydERvd25sb2FkV3JpdGluZ0FuZEVtaXRFcnJvcihRdEZpbGVEb3dubG9hZGVyOjpEb3du
bG9hZEVycm9yQ2FuY2VsbGVkQnlDYWxsZXIpOworICAgICAgICBhYm9ydERvd25sb2FkV3JpdGlu
Z0FuZEVtaXRFcnJvcihRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9yQ2FuY2VsbGVkKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIE93blB0cjxRRmlsZT4gZG93bmxvYWRGaWxl
ID0gYWRvcHRQdHIobmV3IFFGaWxlKGRlY2lkZWRGaWxlUGF0aCkpOwogCi0gICAgaWYgKCFhbGxv
d092ZXJ3cml0ZSAmJiBkb3dubG9hZEZpbGUtPmV4aXN0cygpKSB7Ci0gICAgICAgIGFib3J0RG93
bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKFF0RmlsZURvd25sb2FkZXI6OkRvd25sb2FkRXJyb3JG
aWxlQWxyZWFkeUV4aXN0cyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBpZiAoIWRv
d25sb2FkRmlsZS0+b3BlbihRSU9EZXZpY2U6OldyaXRlT25seSB8IFFJT0RldmljZTo6VHJ1bmNh
dGUpKSB7CiAgICAgICAgIGFib3J0RG93bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKFF0RmlsZURv
d25sb2FkZXI6OkRvd25sb2FkRXJyb3JDYW5ub3RPcGVuRmlsZSk7CiAgICAgICAgIHJldHVybjsK
QEAgLTEzMyw3ICsxMjQsNiBAQCB2b2lkIFF0RmlsZURvd25sb2FkZXI6OmRlY2lkZWREZXN0aW5h
dGlvbihjb25zdCBRU3RyaW5nJiBkZWNpZGVkRmlsZVBhdGgsIGJvb2wgYQogICAgIC8vIGZ1bmN0
aW9uIHdhcyBjYWxsZWQuCiAgICAgaWYgKG1fcmVwbHktPmlzRmluaXNoZWQoKSkKICAgICAgICAg
b25GaW5pc2hlZCgpOwotCiB9CiAKIHZvaWQgUXRGaWxlRG93bmxvYWRlcjo6YWJvcnREb3dubG9h
ZFdyaXRpbmdBbmRFbWl0RXJyb3IoUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvciBlcnJv
ckNvZGUpCkBAIC0xNTcsMTAgKzE0NywxMCBAQCB2b2lkIFF0RmlsZURvd25sb2FkZXI6OmFib3J0
RG93bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKFF0RmlsZURvd25sb2FkZXI6OkRvd25sbwogICAg
IGNhc2UgUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvckNhbm5vdE9wZW5GaWxlOgogICAg
ICAgICB0cmFuc2xhdGVkRXJyb3JNZXNzYWdlID0gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRl
KCJRdEZpbGVEb3dubG9hZGVyIiwgIkNhbm5vdCBvcGVuIGZpbGUgZm9yIHdyaXRpbmciKTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9yRmls
ZUFscmVhZHlFeGlzdHM6Ci0gICAgICAgIHRyYW5zbGF0ZWRFcnJvck1lc3NhZ2UgPSBRQ29yZUFw
cGxpY2F0aW9uOjp0cmFuc2xhdGUoIlF0RmlsZURvd25sb2FkZXIiLCAiRmlsZSBhbHJlYWR5IGV4
aXN0cyIpOworICAgIGNhc2UgUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvckRlc3RpbmF0
aW9uQWxyZWFkeUV4aXN0czoKKyAgICAgICAgdHJhbnNsYXRlZEVycm9yTWVzc2FnZSA9IFFDb3Jl
QXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUXRGaWxlRG93bmxvYWRlciIsICJEZXN0aW5hdGlvbiBh
bHJlYWR5IGV4aXN0cyIpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFF0RmlsZURvd25sb2Fk
ZXI6OkRvd25sb2FkRXJyb3JDYW5jZWxsZWRCeUNhbGxlcjoKKyAgICBjYXNlIFF0RmlsZURvd25s
b2FkZXI6OkRvd25sb2FkRXJyb3JDYW5jZWxsZWQ6CiAgICAgICAgIHRyYW5zbGF0ZWRFcnJvck1l
c3NhZ2UgPSBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlF0RmlsZURvd25sb2FkZXIiLCAi
RG93bmxvYWQgY2FuY2VsbGVkIGJ5IGNhbGxlciIpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IFF0RmlsZURvd25sb2FkZXI6OkRvd25sb2FkRXJyb3JDYW5ub3REZXRlcm1pbmVGaWxlbmFtZToK
QEAgLTE3NSw2ICsxNjUsMjcgQEAgdm9pZCBRdEZpbGVEb3dubG9hZGVyOjphYm9ydERvd25sb2Fk
V3JpdGluZ0FuZEVtaXRFcnJvcihRdEZpbGVEb3dubG9hZGVyOjpEb3dubG8KICAgICBtX2Rvd25s
b2FkLT5kaWRGYWlsKGRvd25sb2FkRXJyb3IsIENvcmVJUEM6OkRhdGFSZWZlcmVuY2UoMCwgMCkp
OwogfQogCit2b2lkIFF0RmlsZURvd25sb2FkZXI6OmhhbmRsZURvd25sb2FkUmVzcG9uc2UoKQor
eworICAgIC8vIEJ5IEFQSSBjb250cmFjdCwgUU5ldHdvcmtSZXBseTo6bWV0YURhdGFDaGFuZ2Vk
IGNhbm5vdCByZWFsbHkgYmUgdHJ1c3RlZC4KKyAgICAvLyBUaHVzIHdlIG5lZWQgdG8gY2FsbCB0
aGlzIHVwb24gcmVjZWl2aW5nIGZpcnN0IGRhdGEuCisgICAgU3RyaW5nIGNvbnRlbnRUeXBlID0g
bV9yZXBseS0+aGVhZGVyKFFOZXR3b3JrUmVxdWVzdDo6Q29udGVudFR5cGVIZWFkZXIpLnRvU3Ry
aW5nKCk7CisgICAgU3RyaW5nIGVuY29kaW5nID0gZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBl
KGNvbnRlbnRUeXBlKTsKKyAgICBTdHJpbmcgbWltZVR5cGUgPSBleHRyYWN0TUlNRVR5cGVGcm9t
TWVkaWFUeXBlKGNvbnRlbnRUeXBlKTsKKyAgICBTdHJpbmcgZmlsZW5hbWUgPSBkZXRlcm1pbmVG
aWxlbmFtZSgpOworCisgICAgLy8gSWYgZmlsZW5hbWUgaXMgZW1wdHkgaXQgbWVhbnMgZGV0ZXJt
aW5lRmlsZW5hbWUgYWJvcnRlZCBhbmQgZW1pdHRlZCBhbiBlcnJvci4KKyAgICBpZiAoZmlsZW5h
bWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBMZXQncyB0cnkgdG8gZ3Vl
c3MgZnJvbSB0aGUgZXh0ZW5zaW9uLgorICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5KCkpCisgICAg
ICAgIG1pbWVUeXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JQYXRoKG1fcmVw
bHktPnVybCgpLnBhdGgoKSk7CisKKyAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKG1fcmVw
bHktPnVybCgpLCBtaW1lVHlwZSwgbV9yZXBseS0+aGVhZGVyKFFOZXR3b3JrUmVxdWVzdDo6Q29u
dGVudExlbmd0aEhlYWRlcikudG9Mb25nTG9uZygpLCBlbmNvZGluZywgZmlsZW5hbWUpOworICAg
IG1fZG93bmxvYWQtPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7Cit9CisKIHZvaWQgUXRG
aWxlRG93bmxvYWRlcjo6b25SZWFkeVJlYWQoKQogewogICAgIGlmIChtX2Rlc3RpbmF0aW9uRmls
ZSkgewpAQCAtMTk1LDI3ICsyMDYsMjEgQEAgdm9pZCBRdEZpbGVEb3dubG9hZGVyOjpvblJlYWR5
UmVhZCgpCiAKICAgICAgICAgbV9kb3dubG9hZC0+ZGlkUmVjZWl2ZURhdGEoYnl0ZXNXcml0dGVu
KTsKICAgICB9IGVsc2UgaWYgKCFtX2hlYWRlcnNSZWFkKSB7Ci0gICAgICAgIC8vIEJ5IEFQSSBj
b250cmFjdCwgUU5ldHdvcmtSZXBseTo6bWV0YURhdGFDaGFuZ2VkIGNhbm5vdCByZWFsbHkgYmUg
dHJ1c3RlZC4KLSAgICAgICAgLy8gVGh1cyB3ZSBuZWVkIHRvIGNhbGwgdGhpcyB1cG9uIHJlY2Vp
dmluZyBmaXJzdCBkYXRhLgotICAgICAgICBTdHJpbmcgY29udGVudFR5cGUgPSBtX3JlcGx5LT5o
ZWFkZXIoUU5ldHdvcmtSZXF1ZXN0OjpDb250ZW50VHlwZUhlYWRlcikudG9TdHJpbmcoKTsKLSAg
ICAgICAgU3RyaW5nIGVuY29kaW5nID0gZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnRl
bnRUeXBlKTsKLSAgICAgICAgU3RyaW5nIG1pbWVUeXBlID0gZXh0cmFjdE1JTUVUeXBlRnJvbU1l
ZGlhVHlwZShjb250ZW50VHlwZSk7Ci0KLSAgICAgICAgLy8gTGV0J3MgdHJ5IHRvIGd1ZXNzIGZy
b20gdGhlIGV4dGVuc2lvbi4KLSAgICAgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIG1pbWVUeXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JQYXRoKG1f
cmVwbHktPnVybCgpLnBhdGgoKSk7Ci0KLSAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25z
ZShtX3JlcGx5LT51cmwoKSwgbWltZVR5cGUsIG1fcmVwbHktPmhlYWRlcihRTmV0d29ya1JlcXVl
c3Q6OkNvbnRlbnRMZW5ndGhIZWFkZXIpLnRvTG9uZ0xvbmcoKSwgZW5jb2RpbmcsIFN0cmluZygp
KTsKLSAgICAgICAgbV9kb3dubG9hZC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKLQot
ICAgICAgICBkZXRlcm1pbmVGaWxlbmFtZSgpOwotCisgICAgICAgIGhhbmRsZURvd25sb2FkUmVz
cG9uc2UoKTsKICAgICAgICAgbV9oZWFkZXJzUmVhZCA9IHRydWU7CiAgICAgfQogfQogCiB2b2lk
IFF0RmlsZURvd25sb2FkZXI6Om9uRmluaXNoZWQoKQogeworICAgIC8vIElmIGl0J3MgZmluaXNo
ZWQgYW5kIHdlIGhhdmVuJ3QgZXZlbiByZWFkIHRoZSBoZWFkZXJzLCBpdCBtZWFucyB3ZSBuZXZl
ciBnb3QgdG8gb25SZWFkeVJlYWQgYW5kIHRoYXQgd2UgYXJlCisgICAgLy8gcHJvYmFibHkgZGVh
bGluZyB3aXRoIHRoZSBkb3dubG9hZCBvZiBhIGxvY2FsIGZpbGUgb3Igb2YgYSBzbWFsbCBmaWxl
IHRoYXQgd2FzIHN0YXJ0ZWQgd2l0aCBhIGhhbmRsZS4KKyAgICBpZiAoIW1faGVhZGVyc1JlYWQp
IHsKKyAgICAgICAgaGFuZGxlRG93bmxvYWRSZXNwb25zZSgpOworICAgICAgICBtX2hlYWRlcnNS
ZWFkID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmICghbV9kZXN0aW5h
dGlvbkZpbGUpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjIzLDYgKzIyOCw4IEBAIHZvaWQgUXRG
aWxlRG93bmxvYWRlcjo6b25GaW5pc2hlZCgpCiAKICAgICBpZiAobV9lcnJvciA9PSBRTmV0d29y
a1JlcGx5OjpOb0Vycm9yKQogICAgICAgICBtX2Rvd25sb2FkLT5kaWRGaW5pc2goKTsKKyAgICBl
bHNlIGlmICAobV9lcnJvciA9PSBRTmV0d29ya1JlcGx5OjpPcGVyYXRpb25DYW5jZWxlZEVycm9y
KQorICAgICAgICBhYm9ydERvd25sb2FkV3JpdGluZ0FuZEVtaXRFcnJvcihRdEZpbGVEb3dubG9h
ZGVyOjpEb3dubG9hZEVycm9yQ2FuY2VsbGVkKTsKICAgICBlbHNlCiAgICAgICAgIGFib3J0RG93
bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKFF0RmlsZURvd25sb2FkZXI6OkRvd25sb2FkRXJyb3JO
ZXR3b3JrRmFpbHVyZSk7CiB9CkBAIC0yMzUsNiArMjQyLDcgQEAgdm9pZCBRdEZpbGVEb3dubG9h
ZGVyOjpvbkVycm9yKFFOZXR3b3JrUmVwbHk6Ok5ldHdvcmtFcnJvciBjb2RlKQogdm9pZCBRdEZp
bGVEb3dubG9hZGVyOjpjYW5jZWwoKQogewogICAgIG1fcmVwbHktPmFib3J0KCk7CisgICAgLy8g
UXRGaWxlRG93bmxvYWRlcjo6b25GaW5pc2hlZCgpIHdpbGwgYmUgY2FsbGVkIGFuZCB3aWxsIHJh
aXNlIGEgRG93bmxvYWRFcnJvckNhbmNlbGxlZC4KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZp
bGVEb3dubG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9R
dEZpbGVEb3dubG9hZGVyLmgKaW5kZXggYjZiOGJhMjhiZWE5ZjhhYjFkNjk0Yzg0MzM0MTQ0YTRh
MmM5ZDE1Yi4uMGFlMGZkODRhNjljN2RlYzFmMmE0MDg2OTJhZTZiOTZiYjliMmU2MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvUXRGaWxlRG93bmxv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L1F0Rmls
ZURvd25sb2FkZXIuaApAQCAtNDQsMTYgKzQ0LDE2IEBAIGNsYXNzIFF0RmlsZURvd25sb2FkZXIg
OiBwdWJsaWMgUU9iamVjdCB7CiBwdWJsaWM6CiAgICAgUXRGaWxlRG93bmxvYWRlcihEb3dubG9h
ZCosIFBhc3NPd25QdHI8UU5ldHdvcmtSZXBseT4pOwogICAgIHZpcnR1YWwgflF0RmlsZURvd25s
b2FkZXIoKTsKLSAgICB2b2lkIGRlY2lkZWREZXN0aW5hdGlvbihjb25zdCBRU3RyaW5nJiBkZWNp
ZGVkRmlsZVBhdGgsIGJvb2wgYWxsb3dPdmVyd3JpdGUpOwogICAgIHZvaWQgY2FuY2VsKCk7Ci0g
ICAgdm9pZCBzdGFydCgpOworICAgIHZvaWQgaW5pdCgpOworICAgIHZvaWQgc3RhcnRUcmFuc2Zl
cihjb25zdCBRU3RyaW5nJiBkZXN0aW5hdGlvbik7CiAKICAgICBlbnVtIERvd25sb2FkRXJyb3Ig
ewogICAgICAgICBEb3dubG9hZEVycm9yQWJvcnRlZCA9IDAsCiAgICAgICAgIERvd25sb2FkRXJy
b3JDYW5ub3RXcml0ZVRvRmlsZSwKICAgICAgICAgRG93bmxvYWRFcnJvckNhbm5vdE9wZW5GaWxl
LAotICAgICAgICBEb3dubG9hZEVycm9yRmlsZUFscmVhZHlFeGlzdHMsCi0gICAgICAgIERvd25s
b2FkRXJyb3JDYW5jZWxsZWRCeUNhbGxlciwKKyAgICAgICAgRG93bmxvYWRFcnJvckRlc3RpbmF0
aW9uQWxyZWFkeUV4aXN0cywKKyAgICAgICAgRG93bmxvYWRFcnJvckNhbmNlbGxlZCwKICAgICAg
ICAgRG93bmxvYWRFcnJvckNhbm5vdERldGVybWluZUZpbGVuYW1lLAogICAgICAgICBEb3dubG9h
ZEVycm9yTmV0d29ya0ZhaWx1cmUKICAgICB9OwpAQCAtNjUsNyArNjUsOCBAQCBwcml2YXRlIHNs
b3RzOgogCiBwcml2YXRlOgogICAgIHZvaWQgYWJvcnREb3dubG9hZFdyaXRpbmdBbmRFbWl0RXJy
b3IoUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvcik7Ci0gICAgdm9pZCBkZXRlcm1pbmVG
aWxlbmFtZSgpOworICAgIFFTdHJpbmcgZGV0ZXJtaW5lRmlsZW5hbWUoKTsKKyAgICB2b2lkIGhh
bmRsZURvd25sb2FkUmVzcG9uc2UoKTsKIAogICAgIERvd25sb2FkKiBtX2Rvd25sb2FkOwogICAg
IE93blB0cjxRTmV0d29ya1JlcGx5PiBtX3JlcGx5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAKaW5kZXggZThhYTdhZGE0YjZlNWU2YWYxNmE0NzM4M2Y5MmM0MDdiMjg2
OGE1Zi4uYmQ2OWNhZDdlZGIwNWY1YmE5YTRhYmMwNTYzYTM3NjJhZjM3ZTU2OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC05NTcsNiArOTU3LDEzIEBAIHZv
aWQgV2ViUHJvY2Vzczo6Y2FuY2VsRG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCkKICAgICBE
b3dubG9hZE1hbmFnZXI6OnNoYXJlZCgpLmNhbmNlbERvd25sb2FkKGRvd25sb2FkSUQpOwogfQog
CisjaWYgUExBVEZPUk0oUVQpCit2b2lkIFdlYlByb2Nlc3M6OnN0YXJ0VHJhbnNmZXIodWludDY0
X3QgZG93bmxvYWRJRCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbikKK3sKKyAgICBEb3dubG9h
ZE1hbmFnZXI6OnNoYXJlZCgpLnN0YXJ0VHJhbnNmZXIoZG93bmxvYWRJRCwgZGVzdGluYXRpb24p
OworfQorI2VuZGlmCisKIHZvaWQgV2ViUHJvY2Vzczo6c2V0RW5oYW5jZWRBY2Nlc3NpYmlsaXR5
KGJvb2wgZmxhZykKIHsKICAgICBXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpzZXRFbmhhbmNlZFVz
ZXJJbnRlcmZhY2VBY2Nlc3NpYmlsaXR5KGZsYWcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaAppbmRleCAwZDVkNzRhOWMxYzE0OTEyZDIzNmRkMzg0ZjY1MzYwMzFiNDE0MTMy
Li4zOWY4YTVmMGNlODhjMDgwM2ZiMjk2NjkwYTZjZjc0ZTYxZTYyZDJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMTc1LDYgKzE3NSw5IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIGRvd25sb2FkUmVxdWVzdCh1aW50NjRfdCBkb3dubG9hZElELCB1aW50NjRfdCBp
bml0aWF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2
b2lkIGNhbmNlbERvd25sb2FkKHVpbnQ2NF90IGRvd25sb2FkSUQpOworI2lmIFBMQVRGT1JNKFFU
KQorICAgIHZvaWQgc3RhcnRUcmFuc2Zlcih1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBTdHJp
bmcmIGRlc3RpbmF0aW9uKTsKKyNlbmRpZgogCiAgICAgdm9pZCBzZXRUZXh0Q2hlY2tlclN0YXRl
KGNvbnN0IFRleHRDaGVja2VyU3RhdGUmKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA0NGY0NDE5YTA3ODdmYzc3NTlj
YzUyYjNlNTQ0MzVmNzk1ZmMzOGY4Li5mOTE5NmFlMmE5OGQxN2I2ODNhZDQ3NjBjMGI1ZjQ5N2Ex
NWVmYzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCkBAIC02NCw2ICs2NCw5IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgewogICAg
ICMgdHdvIG1lc3NhZ2VzLgogICAgIERvd25sb2FkUmVxdWVzdCh1aW50NjRfdCBkb3dubG9hZElE
LCB1aW50NjRfdCBpbml0aWF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVx
dWVzdCkKICAgICBDYW5jZWxEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElEKQorI2lmIFBMQVRG
T1JNKFFUKQorICAgIFN0YXJ0VHJhbnNmZXIodWludDY0X3QgZG93bmxvYWRJRCwgV1RGOjpTdHJp
bmcgZGVzdGluYXRpb24pCisjZW5kaWYKIAogICAgIFNldFRleHRDaGVja2VyU3RhdGUoV2ViS2l0
OjpUZXh0Q2hlY2tlclN0YXRlIHRleHRDaGVja2VyU3RhdGUpCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>