<?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>68153</bug_id>
          
          <creation_ts>2011-09-15 05:27:06 -0700</creation_ts>
          <short_desc>[Qt][WK2] Implement Download support in WebProcess</short_desc>
          <delta_ts>2011-09-21 08:09:55 -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>New Bugs</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jesus Sanchez-Palencia">jesus</reporter>
          <assigned_to name="Jesus Sanchez-Palencia">jesus</assigned_to>
          <cc>jturcotte</cc>
    
    <cc>kling</cc>
    
    <cc>menard</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>467745</commentid>
    <comment_count>0</comment_count>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2011-09-15 05:27:06 -0700</bug_when>
    <thetext>[Qt][WK2] Implement Download support in WebProcess</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467747</commentid>
    <comment_count>1</comment_count>
      <attachid>107479</attachid>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2011-09-15 05:28:43 -0700</bug_when>
    <thetext>Created attachment 107479
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467749</commentid>
    <comment_count>2</comment_count>
      <attachid>107479</attachid>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2011-09-15 05:30:30 -0700</bug_when>
    <thetext>Comment on attachment 107479
Patch

webkit-patch upload didn&apos;t run prepare-changelog... =/

Doing it manually and uploading a new patch in a few minutes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467759</commentid>
    <comment_count>3</comment_count>
      <attachid>107482</attachid>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2011-09-15 05:58:18 -0700</bug_when>
    <thetext>Created attachment 107482
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468466</commentid>
    <comment_count>4</comment_count>
      <attachid>107646</attachid>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2011-09-16 07:15:43 -0700</bug_when>
    <thetext>Created attachment 107646
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468484</commentid>
    <comment_count>5</comment_count>
      <attachid>107646</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-09-16 08:02:14 -0700</bug_when>
    <thetext>Comment on attachment 107646
Patch

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

&gt; Source/WebKit2/WebProcess/Downloads/qt/DownloadQt.cpp:48
&gt; +    m_qtDownloader = new QtFileDownloader(this, manager, m_request.toNetworkRequest(0));

The (0) is not talking much by itself. If a null originating object is correctly allowed by toNetworkRequest, I think it would be better to set null as originatingObject&apos;s default parameter value in it&apos;s declaration.

&gt; Source/WebKit2/WebProcess/Downloads/qt/DownloadQt.cpp:68
&gt; +    m_qtDownloader-&gt;deleteLater();

+ m_qtDownloader = 0;

&gt; Source/WebKit2/WebProcess/Downloads/qt/QtFileDownloader.cpp:39
&gt; +QtFileDownloader::QtFileDownloader(Download* download, QNetworkAccessManager* manager, const QNetworkRequest&amp; request)

m_manager and m_request aren&apos;t needed with the single threading in trunk, and this constructor could be merged with the QNetworkReply constructor.

&gt; Source/WebKit2/WebProcess/Downloads/qt/QtFileDownloader.cpp:72
&gt; +void QtFileDownloader::start()

start() was needed because of the asynchronous calls between threads. The logic could be moved to the constructor and the reply could be created outside by the Download object.

&gt; Source/WebKit2/WebProcess/Downloads/qt/QtFileDownloader.cpp:101
&gt; +        m_download-&gt;didFail(downloadError, CoreIPC::DataReference(reinterpret_cast&lt;const uint8_t*&gt;(m_reply-&gt;readAll().data()), m_reply-&gt;size() + 1));

Why are those &quot;+ 1&quot; necessary? I don&apos;t see them in the Mac port.

&gt; Source/WebKit2/WebProcess/Downloads/qt/QtFileDownloader.cpp:142
&gt; +    QFile* downloadFile = new QFile(decidedFilePath);

It would be safer to use an OwnPtr or a QScopedPointer here, same thing for m_destinationFile. I think m_destinationFile isn&apos;t deleted in the destructor, for example.

&gt; Source/WebKit2/WebProcess/Downloads/qt/QtFileDownloader.h:57
&gt; +    void onDecidedDestination(const QString&amp; decidedFilePath, bool allowOverwrite);
&gt; +    void onCancel();

Those don&apos;t need to be slots anymore and could be renamed as actions instead of reactions.

&gt; Source/WebKit2/WebProcess/Downloads/qt/QtFileDownloader.h:73
&gt; +    friend class Download;

You shouldn&apos;t need this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468846</commentid>
    <comment_count>6</comment_count>
      <attachid>107731</attachid>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2011-09-16 15:34:02 -0700</bug_when>
    <thetext>Created attachment 107731
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468873</commentid>
    <comment_count>7</comment_count>
      <attachid>107731</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-09-16 16:10:38 -0700</bug_when>
    <thetext>Comment on attachment 107731
Patch

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

&gt; Source/WebKit2/WebProcess/Downloads/qt/DownloadQt.cpp:60
&gt; +    m_qtDownloader-&gt;cancel();

Let&apos;s put an ASSERT(m_qtDownloader); up in here for good measure.

&gt; Source/WebKit2/WebProcess/Downloads/qt/DownloadQt.cpp:65
&gt; +    Q_ASSERT(m_qtDownloader);

We strive to use ASSERT rather than Q_ASSERT in WebKit code.

&gt; Source/WebKit2/WebProcess/Downloads/qt/QtFileDownloader.cpp:58
&gt; +    if (m_destinationFile) {

Early-return style would look better here.
if (!m_destinationFile)
    return;

&gt; Source/WebKit2/WebProcess/Downloads/qt/QtFileDownloader.cpp:65
&gt; +        m_destinationFile-&gt;close();
&gt; +        m_destinationFile.clear();

Both of these lines are redundant since ~QFile will close() and ~OwnPtr will delete the QFile.

&gt; Source/WebKit2/WebProcess/Downloads/qt/QtFileDownloader.cpp:71
&gt; +    Q_ASSERT(!m_destinationFile);

Q_ASSERT -&gt; ASSERT

&gt; Source/WebKit2/WebProcess/Downloads/qt/QtFileDownloader.cpp:73
&gt; +    QString fileName;

This declaration should be moved below where &apos;fileName&apos; is first used.

&gt; Source/WebKit2/WebProcess/Downloads/qt/QtFileDownloader.cpp:74
&gt; +    QString fileNameCandidate = filenameFromHTTPContentDisposition(QString::fromAscii(m_reply-&gt;rawHeader(&quot;Content-Disposition&quot;)));

QString::fromAscii() is almost always wrong as its behavior depends on the current system locale.
You probably want QString::fromUtf8() or QString::fromLatin1(). Check other implementations.

&gt; Source/WebKit2/WebProcess/Downloads/qt/QtFileDownloader.cpp:86
&gt; +        // Don&apos;t use size + 1 so the ending &apos;\0&apos; byte from QByteArray::data() is discarded

Period at end of sentences, bro.

&gt; Source/WebKit2/WebProcess/Downloads/qt/QtFileDownloader.cpp:105
&gt; +    bool allowOverwrite;
&gt; +    m_download-&gt;decideDestinationWithSuggestedFilename(fileName, allowOverwrite);

We don&apos;t need the value returned in &apos;allowOverwrite&apos; for anything?

&gt; Source/WebKit2/WebProcess/Downloads/qt/QtFileDownloader.cpp:110
&gt; +    Q_ASSERT(!m_destinationFile);

Q_ASSERT -&gt; ASSERT

&gt; Source/WebKit2/WebProcess/Downloads/qt/QtFileDownloader.cpp:140
&gt; +    // FIXME: here&apos;s a race condition due to qt api not allowing
&gt; +    // files to be created only if they don&apos;t exist

This is unclear, could you clean up the English a bit and be more specific?

&gt; Source/WebKit2/WebProcess/Downloads/qt/QtFileDownloader.cpp:185
&gt; +        if (bytesWritten == -1 || bytesWritten != content.size()) {

Are you sure that (bytesWritten != content.size()) is always an error?
In other words, should we retry at an offset in that case?

&gt; Source/WebKit2/WebProcess/Downloads/qt/QtFileDownloader.cpp:199
&gt; +        WTF::String contentType = m_reply-&gt;header(QNetworkRequest::ContentTypeHeader).toString();
&gt; +        WTF::String encoding = extractCharsetFromMediaType(contentType);
&gt; +        WTF::String mimeType = extractMIMETypeFromMediaType(contentType);

I&apos;d prefer that we were using namespace WTF;

&gt; Source/WebKit2/WebProcess/Downloads/qt/QtFileDownloader.cpp:216
&gt; +    if (m_destinationFile) {

Prefer early-return style here.

&gt; Source/WebKit2/WebProcess/Downloads/qt/QtFileDownloader.cpp:218
&gt; +        m_destinationFile-&gt;close();
&gt; +        m_destinationFile.clear();

Just clear() as noted earlier.

&gt; Source/WebKit2/WebProcess/Downloads/qt/QtFileDownloader.h:31
&gt; +class QFile;
&gt; +class QNetworkAccessManager;
&gt; +class QNetworkRequest;

These need to be wrapped in QT_BEGIN_NAMESPACE and QT_END_NAMESPACE.

&gt; Source/WebKit2/WebProcess/Downloads/qt/QtFileDownloader.h:54
&gt; +        DownloadErrorFilename = -1

What does DownloadErrorFilename mean?

&gt; Source/WebKit2/WebProcess/Downloads/qt/QtFileDownloader.h:60
&gt; +    void onError(QNetworkReply::NetworkError code);

The argument name &apos;code&apos; adds nothing here.

&gt; Source/WebKit2/WebProcess/Downloads/qt/QtFileDownloader.h:63
&gt; +    void abortDownloadWritingAndEmitError(const WebCore::ResourceError&amp; errorCode);

The argument name &apos;errorCode&apos; adds nothing here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469428</commentid>
    <comment_count>8</comment_count>
      <attachid>107865</attachid>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2011-09-19 08:57:17 -0700</bug_when>
    <thetext>Created attachment 107865
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470002</commentid>
    <comment_count>9</comment_count>
      <attachid>107989</attachid>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2011-09-20 05:52:14 -0700</bug_when>
    <thetext>Created attachment 107989
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470014</commentid>
    <comment_count>10</comment_count>
      <attachid>107989</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-09-20 06:18:50 -0700</bug_when>
    <thetext>Comment on attachment 107989
Patch

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

LGTM beside one thing:

&gt; Source/WebKit2/WebProcess/Downloads/qt/QtFileDownloader.cpp:145
&gt; +        m_download-&gt;didFail(QNetworkReplyHandler::errorForReply(m_reply.get()), CoreIPC::DataReference(reinterpret_cast&lt;const uint8_t*&gt;(m_resumeData.data()), dataSize));

Looked a bit further and resumeData is a mac-specific thing, it should be an URL+offest+partialFileName kind of thing and not actual downloaded data. DownloadCFNet.cpp set it to DataReference(0,0) and we can do the same until we properly support and test download resuming, if ever.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470023</commentid>
    <comment_count>11</comment_count>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2011-09-20 06:37:28 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Looked a bit further and resumeData is a mac-specific thing, it should be an URL+offest+partialFileName kind of thing and not actual downloaded data. DownloadCFNet.cpp set it to DataReference(0,0) and we can do the same until we properly support and test download resuming, if ever.

Ok, thanks, I will do the same and take our m_resumeData out of this patch.
New patch coming after the break...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470030</commentid>
    <comment_count>12</comment_count>
      <attachid>107996</attachid>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2011-09-20 06:48:34 -0700</bug_when>
    <thetext>Created attachment 107996
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470633</commentid>
    <comment_count>13</comment_count>
      <attachid>107996</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-09-21 00:37:27 -0700</bug_when>
    <thetext>Comment on attachment 107996
Patch

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

Looks good to me as well, though I&apos;m gonna say r- due to the missing QWebError code.

&gt; Source/WebKit2/WebProcess/Downloads/qt/QtFileDownloader.cpp:141
&gt; +        // Don&apos;t use size + 1 so the ending &apos;\0&apos; byte from QByteArray::data() is discarded.

This comment no longer applies.

&gt; Source/WebKit2/WebProcess/Downloads/qt/QtFileDownloader.cpp:170
&gt; +    ResourceError downloadError(&quot;Download&quot;, errorCode, m_reply-&gt;url().toString(), translatedErrorMessage);

Since you&apos;re adding the &quot;Download&quot; class of errors, you also need to add a corresponding error type to QWebError and hook that up.

&gt; Source/WebKit2/WebProcess/Downloads/qt/QtFileDownloader.cpp:172
&gt; +    // Don&apos;t use size + 1 so the ending &apos;\0&apos; byte from QByteArray::data() is discarded.

This comment no longer applies.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470798</commentid>
    <comment_count>14</comment_count>
      <attachid>108157</attachid>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2011-09-21 07:49:47 -0700</bug_when>
    <thetext>Created attachment 108157
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470808</commentid>
    <comment_count>15</comment_count>
      <attachid>108157</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-21 08:09:49 -0700</bug_when>
    <thetext>Comment on attachment 108157
Patch

Clearing flags on attachment: 108157

Committed r95631: &lt;http://trac.webkit.org/changeset/95631&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470809</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-21 08:09:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>107479</attachid>
            <date>2011-09-15 05:28:43 -0700</date>
            <delta_ts>2011-09-15 05:30:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68153-20110915092824.patch</filename>
            <type>text/plain</type>
            <size>24865</size>
            <attacher name="Jesus Sanchez-Palencia">jesus</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTUxMzMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5jcHAKaW5kZXggNmEw
M2NjZDI3MmI2ZTQxMjNkNTcxODFhYTliMGI3YWUyZDNkNTMyNC4uNWFmMDA0OWRhNDljMzJkYmVl
ZDdjMWQyNjViNzAyMzc5Mzc0NjY0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5jcHAKQEAgLTQ1NSwx
OCArNDU1LDggQEAgdm9pZCBRTmV0d29ya1JlcGx5SGFuZGxlcjo6ZmluaXNoKCkKIAogICAgIGlm
ICghbV9yZXBseVdyYXBwZXItPnJlcGx5KCktPmVycm9yKCkgfHwgc2hvdWxkSWdub3JlSHR0cEVy
cm9yKG1fcmVwbHlXcmFwcGVyLT5yZXBseSgpLCBtX3JlcGx5V3JhcHBlci0+cmVzcG9uc2VDb250
YWluc0RhdGEoKSkpCiAgICAgICAgIGNsaWVudC0+ZGlkRmluaXNoTG9hZGluZyhtX3Jlc291cmNl
SGFuZGxlLCAwKTsKLSAgICBlbHNlIHsKLSAgICAgICAgUVVybCB1cmwgPSBtX3JlcGx5V3JhcHBl
ci0+cmVwbHkoKS0+dXJsKCk7Ci0gICAgICAgIGludCBodHRwU3RhdHVzQ29kZSA9IG1fcmVwbHlX
cmFwcGVyLT5yZXBseSgpLT5hdHRyaWJ1dGUoUU5ldHdvcmtSZXF1ZXN0OjpIdHRwU3RhdHVzQ29k
ZUF0dHJpYnV0ZSkudG9JbnQoKTsKLQotICAgICAgICBpZiAoaHR0cFN0YXR1c0NvZGUpIHsKLSAg
ICAgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3IoIkhUVFAiLCBodHRwU3RhdHVzQ29kZSwgdXJs
LnRvU3RyaW5nKCksIG1fcmVwbHlXcmFwcGVyLT5yZXBseSgpLT5hdHRyaWJ1dGUoUU5ldHdvcmtS
ZXF1ZXN0OjpIdHRwUmVhc29uUGhyYXNlQXR0cmlidXRlKS50b1N0cmluZygpKTsKLSAgICAgICAg
ICAgIGNsaWVudC0+ZGlkRmFpbChtX3Jlc291cmNlSGFuZGxlLCBlcnJvcik7Ci0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yKCJRdE5ldHdvcmsiLCBtX3Jl
cGx5V3JhcHBlci0+cmVwbHkoKS0+ZXJyb3IoKSwgdXJsLnRvU3RyaW5nKCksIG1fcmVwbHlXcmFw
cGVyLT5yZXBseSgpLT5lcnJvclN0cmluZygpKTsKLSAgICAgICAgICAgIGNsaWVudC0+ZGlkRmFp
bChtX3Jlc291cmNlSGFuZGxlLCBlcnJvcik7Ci0gICAgICAgIH0KLSAgICB9CisgICAgZWxzZQor
ICAgICAgICBjbGllbnQtPmRpZEZhaWwobV9yZXNvdXJjZUhhbmRsZSwgZXJyb3JGb3JSZXBseSht
X3JlcGx5V3JhcHBlci0+cmVwbHkoKSkpOwogCiAgICAgbV9yZXBseVdyYXBwZXIgPSBudWxscHRy
OwogfQpAQCAtNjk0LDYgKzY4NCwxNyBAQCB2b2lkIFFOZXR3b3JrUmVwbHlIYW5kbGVyOjpzdGFy
dCgpCiAgICAgICAgIGNvbm5lY3QobV9yZXBseVdyYXBwZXItPnJlcGx5KCksIFNJR05BTCh1cGxv
YWRQcm9ncmVzcyhxaW50NjQsIHFpbnQ2NCkpLCB0aGlzLCBTTE9UKHVwbG9hZFByb2dyZXNzKHFp
bnQ2NCwgcWludDY0KSkpOwogfQogCitSZXNvdXJjZUVycm9yIFFOZXR3b3JrUmVwbHlIYW5kbGVy
OjplcnJvckZvclJlcGx5KFFOZXR3b3JrUmVwbHkqIHJlcGx5KQoreworICAgIFFVcmwgdXJsID0g
cmVwbHktPnVybCgpOworICAgIGludCBodHRwU3RhdHVzQ29kZSA9IHJlcGx5LT5hdHRyaWJ1dGUo
UU5ldHdvcmtSZXF1ZXN0OjpIdHRwU3RhdHVzQ29kZUF0dHJpYnV0ZSkudG9JbnQoKTsKKworICAg
IGlmIChodHRwU3RhdHVzQ29kZSkKKyAgICAgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoIkhUVFAi
LCBodHRwU3RhdHVzQ29kZSwgdXJsLnRvU3RyaW5nKCksIHJlcGx5LT5hdHRyaWJ1dGUoUU5ldHdv
cmtSZXF1ZXN0OjpIdHRwUmVhc29uUGhyYXNlQXR0cmlidXRlKS50b1N0cmluZygpKTsKKworICAg
IHJldHVybiBSZXNvdXJjZUVycm9yKCJRdE5ldHdvcmsiLCByZXBseS0+ZXJyb3IoKSwgdXJsLnRv
U3RyaW5nKCksIHJlcGx5LT5lcnJvclN0cmluZygpKTsKK30KKwogfQogCiAjaW5jbHVkZSAibW9j
X1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuaAppbmRleCA5ZDM2ZGEy
MjFkODUyZjEyNTc1ZTUxN2MyZTgzZDExN2JiNjYwOTVkLi5mN2E0NDdhNWNhNzJmNzc5MjcyMjhh
MjkzZGNlMjYwZDllNjI5ZjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5oCkBAIC0zNiw2ICszNiw3IEBA
IFFUX0VORF9OQU1FU1BBQ0UKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9ybURhdGFJ
T0RldmljZTsKK2NsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKIGNs
YXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CkBAIC0xMzMsNiAr
MTM0LDggQEAgcHVibGljOgogICAgIHZvaWQgZm9yd2FyZERhdGEoKTsKICAgICB2b2lkIHNlbmRS
ZXNwb25zZUlmTmVlZGVkKCk7CiAKKyAgICBzdGF0aWMgUmVzb3VyY2VFcnJvciBlcnJvckZvclJl
cGx5KFFOZXR3b3JrUmVwbHkqKTsKKwogcHJpdmF0ZSBzbG90czoKICAgICB2b2lkIHVwbG9hZFBy
b2dyZXNzKHFpbnQ2NCBieXRlc1NlbnQsIHFpbnQ2NCBieXRlc1RvdGFsKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcm8gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBy
bwppbmRleCAyZDBlNmRkYzk1NzM2NjJlNTlmZTQzNmQyYmMwY2VkNmQwMzdmOGExLi5hYTU2NGU4
MGZjZTE4YzdlNDg3NmM2NjM1YzI0NTdiZWUwNGE5YWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnBybworKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBybwpAQCAtMjYz
LDYgKzI2Myw3IEBAIEhFQURFUlMgKz0gXAogICAgIFdlYlByb2Nlc3MvQ29va2llcy9XZWJDb29r
aWVNYW5hZ2VyLmggXAogICAgIFdlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmggXAogICAg
IFdlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oIFwKKyAgICBXZWJQcm9jZXNz
L0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3dubG9hZGVyLmggXAogICAgIFdlYlByb2Nlc3MvRnVsbFNj
cmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5oIFwKICAgICBXZWJQcm9jZXNzL0dlb2xvY2F0aW9u
L0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmggXAogICAgIFdlYlByb2Nlc3Mv
R2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmggXApAQCAtNDk5LDYgKzUwMCw3IEBA
IFNPVVJDRVMgKz0gXAogICAgIFdlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcCBcCiAg
ICAgV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcCBcCiAgICAgV2ViUHJv
Y2Vzcy9Eb3dubG9hZHMvcXQvRG93bmxvYWRRdC5jcHAgXAorICAgIFdlYlByb2Nlc3MvRG93bmxv
YWRzL3F0L1F0RmlsZURvd25sb2FkZXIuY3BwIFwKICAgICBXZWJQcm9jZXNzL0Z1bGxTY3JlZW4v
V2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwIFwKICAgICBXZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9H
ZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuY3BwIFwKQEAgLTUwOSw3ICs1MTEsNyBA
QCBTT1VSQ0VTICs9IFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlQmFja0ZvcndhcmRMaXN0LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwIFwKICAgICBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQ2xpZW50LmNwcCBcCi0gICAgV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwIFwgICAgCisgICAg
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3Bw
IFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlv
bkFjdGlvbi5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAgXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwCmluZGV4IGM5ZmY1OTM5YzNk
OWViM2YxZDIzMDc2OGQzYWRhNjYzMzgyYTdlNzguLmUzN2IzZTA2ODJhOGMzZDNjMzJkMGE5ZGRl
MzQyMTU0YmE4OGQzNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZC5jcHAKQEAgLTUxLDYgKzUxLDkgQEAgRG93bmxvYWQ6OkRvd25sb2FkKHVp
bnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKICNpZiBV
U0UoQ0ZORVRXT1JLKQogICAgICwgbV9hbGxvd092ZXJ3cml0ZShmYWxzZSkKICNlbmRpZgorI2lm
IFBMQVRGT1JNKFFUKQorICAgICwgbV9kb3dubG9hZERlbGVnYXRlKDApCisjZW5kaWYKIHsKICAg
ICBBU1NFUlQobV9kb3dubG9hZElEKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkLmgKaW5kZXggZmU5YTU2ZDFlZTIzYTI4ZmIzNjU5NzI0ZTNhNjFi
Y2MyZWQ1MjE0Yy4uMTQyYmY4OWE3ZGU2YmY5NmZjNTY1ZWE1NGNhYTg0YWYwMmViMTkyMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCkBAIC02
MCw2ICs2MCwxMCBAQCBjbGFzcyBEb3dubG9hZEF1dGhlbnRpY2F0aW9uQ2xpZW50OwogY2xhc3Mg
U2FuZGJveEV4dGVuc2lvbjsKIGNsYXNzIFdlYlBhZ2U7CiAKKyNpZiBQTEFURk9STShRVCkKK2Ns
YXNzIFF0RG93bmxvYWREZWxlZ2F0ZTsKKyNlbmRpZgorCiBjbGFzcyBEb3dubG9hZCA6IHB1Ymxp
YyBDb3JlSVBDOjpNZXNzYWdlU2VuZGVyPERvd25sb2FkPiB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoRG93bmxvYWQpOwogcHVibGljOgpAQCAtMTI2LDYgKzEzMCw5IEBAIHByaXZhdGU6CiAg
ICAgUmV0YWluUHRyPENGVVJMRG93bmxvYWRSZWY+IG1fZG93bmxvYWQ7CiAgICAgUmVmUHRyPERv
d25sb2FkQXV0aGVudGljYXRpb25DbGllbnQ+IG1fYXV0aGVudGljYXRpb25DbGllbnQ7CiAjZW5k
aWYKKyNpZiBQTEFURk9STShRVCkKKyAgICBRdERvd25sb2FkRGVsZWdhdGUqIG1fZG93bmxvYWRE
ZWxlZ2F0ZTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9Eb3dubG9hZFF0LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L0Rvd25sb2FkUXQuY3BwCmlu
ZGV4IGFkNWU3ZGVlNmU0ZDQwMTJiZmM5ZGU2NzM2ZmM0NjA4NGI2YjFkOTguLjUwNzQ0YTdjMzMy
NDk4NjZlNDE5ZDQ2MzYxZmM3MjFjNzdkYTA0MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L0Rvd25sb2FkUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L0Rvd25sb2FkUXQuY3BwCkBAIC0xLDUgKzEsNiBA
QAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29y
IGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI2LDM1ICsyNywxMzMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEb3dubG9h
ZC5oIgogCisjaW5jbHVkZSAiUXRGaWxlRG93bmxvYWRlci5oIgorI2luY2x1ZGUgIldlYlByb2Nl
c3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9RTmV0d29ya1JlcGx5SGFuZGxlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VI
YW5kbGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBRdERvd25sb2FkRGVsZWdhdGUg
OiBwdWJsaWMgUU9iamVjdCB7CisgICAgUV9PQkpFQ1QKK3B1YmxpYzoKKyAgICBRdERvd25sb2Fk
RGVsZWdhdGUoRG93bmxvYWQqLCBRTmV0d29ya0FjY2Vzc01hbmFnZXIqLCBjb25zdCBRTmV0d29y
a1JlcXVlc3QmKTsKKyAgICBRdERvd25sb2FkRGVsZWdhdGUoRG93bmxvYWQqLCBRTmV0d29ya1Jl
cGx5Kik7CisgICAgdmlydHVhbCB+UXREb3dubG9hZERlbGVnYXRlKCk7CisgICAgdm9pZCBzZXRE
b3dubG9hZGVyKFF0RmlsZURvd25sb2FkZXIqIHF0RG93bmxvYWRlcik7CisKK3B1YmxpYyBzbG90
czoKKyAgICB2b2lkIG9uUmVjZWl2ZWREZXN0aW5hdGlvblN1Z2dlc3Rpb24oY29uc3QgUVN0cmlu
ZyYgc3VnZ2VzdGVkRmlsZU5hbWUpOworICAgIHZvaWQgb25SZWNlaXZlZFJlc3BvbnNlKGNvbnN0
IFFVcmwmIHNvdXJjZVVybCwgY29uc3QgUVN0cmluZyYgbWltZVR5cGUsIGxvbmcgbG9uZyBleHBl
Y3RlZENvbnRlbnRMZW5ndGgsIGNvbnN0IFFTdHJpbmcmIGVuY29kaW5nKTsKKyAgICB2b2lkIG9u
Q3JlYXRlZERlc3RpbmF0aW9uKGNvbnN0IFFTdHJpbmcmIHBhdGgpOworICAgIHZvaWQgb25SZWNl
aXZlZERhdGEocWludDY0IGxlbmd0aCk7CisgICAgdm9pZCBvbkZpbmlzaGVkKCk7CisgICAgdm9p
ZCBvbkVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBDb3JlSVBDOjpE
YXRhUmVmZXJlbmNlJik7CisKK3ByaXZhdGU6CisgICAgRG93bmxvYWQqIG1fZG93bmxvYWQ7Cisg
ICAgUXRGaWxlRG93bmxvYWRlciogbV9xdERvd25sb2FkZXI7CisgICAgZnJpZW5kIGNsYXNzIERv
d25sb2FkOworfTsKKworUXREb3dubG9hZERlbGVnYXRlOjpRdERvd25sb2FkRGVsZWdhdGUoRG93
bmxvYWQqIGRvd25sb2FkLCBRTmV0d29ya0FjY2Vzc01hbmFnZXIqIG1hbmFnZXIsIGNvbnN0IFFO
ZXR3b3JrUmVxdWVzdCYgcmVxdWVzdCkKKyAgICA6IG1fZG93bmxvYWQoZG93bmxvYWQpCisgICAg
LCBtX3F0RG93bmxvYWRlcigwKQoreworICAgIHNldERvd25sb2FkZXIobmV3IFF0RmlsZURvd25s
b2FkZXIobWFuYWdlciwgcmVxdWVzdCkpOworfQorCitRdERvd25sb2FkRGVsZWdhdGU6OlF0RG93
bmxvYWREZWxlZ2F0ZShEb3dubG9hZCogZG93bmxvYWQsIFFOZXR3b3JrUmVwbHkqIHJlcGx5KQor
ICAgIDogbV9kb3dubG9hZChkb3dubG9hZCkKKyAgICAsIG1fcXREb3dubG9hZGVyKDApCit7Cisg
ICAgc2V0RG93bmxvYWRlcihuZXcgUXRGaWxlRG93bmxvYWRlcihyZXBseSkpOworfQorCitRdERv
d25sb2FkRGVsZWdhdGU6On5RdERvd25sb2FkRGVsZWdhdGUoKQoreworICAgIG1fcXREb3dubG9h
ZGVyLT5kZWxldGVMYXRlcigpOworfQorCit2b2lkIFF0RG93bmxvYWREZWxlZ2F0ZTo6c2V0RG93
bmxvYWRlcihRdEZpbGVEb3dubG9hZGVyKiBxdERvd25sb2FkZXIpCit7CisgICAgbV9xdERvd25s
b2FkZXIgPSBxdERvd25sb2FkZXI7CisgICAgY29ubmVjdChtX3F0RG93bmxvYWRlciwgU0lHTkFM
KHJlY2VpdmVkUmVzcG9uc2UoUVVybCwgUVN0cmluZywgbG9uZyBsb25nLCBRU3RyaW5nKSksICBT
TE9UKG9uUmVjZWl2ZWRSZXNwb25zZShRVXJsLCBRU3RyaW5nLCBsb25nIGxvbmcsIFFTdHJpbmcp
KSk7CisgICAgY29ubmVjdChtX3F0RG93bmxvYWRlciwgU0lHTkFMKHJlY2VpdmVkRGVzdGluYXRp
b25TdWdnZXN0aW9uKFFTdHJpbmcpKSwgU0xPVChvblJlY2VpdmVkRGVzdGluYXRpb25TdWdnZXN0
aW9uKFFTdHJpbmcpKSk7CisgICAgY29ubmVjdChtX3F0RG93bmxvYWRlciwgU0lHTkFMKGNyZWF0
ZWREZXN0aW5hdGlvbihRU3RyaW5nKSksICBTTE9UKG9uQ3JlYXRlZERlc3RpbmF0aW9uKFFTdHJp
bmcpKSk7CisgICAgY29ubmVjdChtX3F0RG93bmxvYWRlciwgU0lHTkFMKHJlY2VpdmVkRGF0YShx
aW50NjQpKSwgU0xPVChvblJlY2VpdmVkRGF0YShxaW50NjQpKSk7CisgICAgY29ubmVjdChtX3F0
RG93bmxvYWRlciwgU0lHTkFMKGZpbmlzaGVkKCkpLCBTTE9UKG9uRmluaXNoZWQoKSkpOworICAg
IGNvbm5lY3QobV9xdERvd25sb2FkZXIsIFNJR05BTChlcnJvcihjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiwgY29uc3QgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSYpKSwgU0xPVChvbkVycm9y
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBDb3JlSVBDOjpEYXRhUmVmZXJl
bmNlJikpKTsKKyAgICBtX3F0RG93bmxvYWRlci0+c3RhcnQoKTsKK30KKwordm9pZCBRdERvd25s
b2FkRGVsZWdhdGU6Om9uUmVjZWl2ZWREZXN0aW5hdGlvblN1Z2dlc3Rpb24oY29uc3QgUVN0cmlu
ZyYgc3VnZ2VzdGVkRmlsZU5hbWUpCit7CisgICAgYm9vbCBhbGxvd092ZXJ3cml0ZTsKKyAgICBt
X2Rvd25sb2FkLT5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShzdWdnZXN0
ZWRGaWxlTmFtZSwgYWxsb3dPdmVyd3JpdGUpOworfQorCit2b2lkIFF0RG93bmxvYWREZWxlZ2F0
ZTo6b25SZWNlaXZlZFJlc3BvbnNlKGNvbnN0IFFVcmwmIHNvdXJjZVVybCwgY29uc3QgUVN0cmlu
ZyYgbWltZVR5cGUsIGxvbmcgbG9uZyBleHBlY3RlZExlbmd0aCwgY29uc3QgUVN0cmluZyYgdGV4
dEVuY29kaW5nTmFtZSkKK3sKKyAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKHNvdXJjZVVy
bCwgbWltZVR5cGUsIGV4cGVjdGVkTGVuZ3RoLCB0ZXh0RW5jb2RpbmdOYW1lLCBTdHJpbmcoKSk7
CisgICAgbV9kb3dubG9hZC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKK30KKwordm9p
ZCBRdERvd25sb2FkRGVsZWdhdGU6Om9uQ3JlYXRlZERlc3RpbmF0aW9uKGNvbnN0IFFTdHJpbmcm
IGZpbGVQYXRoKQoreworICAgIG1fZG93bmxvYWQtPmRpZENyZWF0ZURlc3RpbmF0aW9uKGZpbGVQ
YXRoKTsKK30KKwordm9pZCBRdERvd25sb2FkRGVsZWdhdGU6Om9uUmVjZWl2ZWREYXRhKHFpbnQ2
NCBsZW5ndGgpCit7CisgICAgbV9kb3dubG9hZC0+ZGlkUmVjZWl2ZURhdGEobGVuZ3RoKTsKK30K
Kwordm9pZCBRdERvd25sb2FkRGVsZWdhdGU6Om9uRmluaXNoZWQoKQoreworICAgIG1fZG93bmxv
YWQtPmRpZEZpbmlzaCgpOworfQorCit2b2lkIFF0RG93bmxvYWREZWxlZ2F0ZTo6b25FcnJvcihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3QgQ29yZUlQQzo6RGF0YVJl
ZmVyZW5jZSYgcmVzdW1lRGF0YSkKK3sKKyAgICBtX2Rvd25sb2FkLT5kaWRGYWlsKGVycm9yLCBy
ZXN1bWVEYXRhKTsKK30KKworCiB2b2lkIERvd25sb2FkOjpzdGFydChXZWJQYWdlKiBpbml0aWF0
aW5nV2ViUGFnZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIFFOZXR3b3JrQWNjZXNz
TWFuYWdlciogbWFuYWdlciA9IFdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtBY2Nlc3NNYW5h
Z2VyKCk7CisgICAgQVNTRVJUKG1hbmFnZXIpOworICAgIEFTU0VSVCghbV9kb3dubG9hZERlbGVn
YXRlKTsKKworICAgIG1fZG93bmxvYWREZWxlZ2F0ZSA9IG5ldyBRdERvd25sb2FkRGVsZWdhdGUo
dGhpcywgbWFuYWdlciwgbV9yZXF1ZXN0LnRvTmV0d29ya1JlcXVlc3QoMCkpOwogfQogCi12b2lk
IERvd25sb2FkOjpzdGFydFdpdGhIYW5kbGUoV2ViUGFnZSogaW5pdGlhdGluZ1BhZ2UsIFJlc291
cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBpbml0aWFsUmVxdWVzdCwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpCit2b2lkIERvd25sb2FkOjpzdGFydFdpdGhIYW5kbGUoV2ViUGFn
ZSogaW5pdGlhdGluZ1BhZ2UsIFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgaW5pdGlhbFJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3ApCiB7
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX2Rvd25sb2FkRGVsZWdhdGUgPSBuZXcgUXRE
b3dubG9hZERlbGVnYXRlKHRoaXMsIGhhbmRsZS0+Z2V0SW50ZXJuYWwoKS0+bV9qb2ItPnJlbGVh
c2UoKSk7CiB9CiAKIHZvaWQgRG93bmxvYWQ6OmNhbmNlbCgpCiB7Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICBRTWV0YU9iamVjdDo6aW52b2tlTWV0aG9kKG1fZG93bmxvYWREZWxlZ2F0ZS0+
bV9xdERvd25sb2FkZXIsICJvbkNhbmNlbCIsIFF0OjpRdWV1ZWRDb25uZWN0aW9uKTsKIH0KIAog
dm9pZCBEb3dubG9hZDo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKIHsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIFFfQVNTRVJUKG1fZG93bmxvYWREZWxlZ2F0ZSk7CisgICAgZGVsZXRlIG1fZG93
bmxvYWREZWxlZ2F0ZTsKKyAgICBtX2Rvd25sb2FkRGVsZWdhdGUgPSAwOwogfQogCiB2b2lkIERv
d25sb2FkOjpkaWREZWNpZGVEZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uLCBi
b29sIGFsbG93T3ZlcndyaXRlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgUU1ldGFP
YmplY3Q6Omludm9rZU1ldGhvZChtX2Rvd25sb2FkRGVsZWdhdGUtPm1fcXREb3dubG9hZGVyLCAi
b25EZWNpZGVkRGVzdGluYXRpb24iLCBRdDo6UXVldWVkQ29ubmVjdGlvbiwgUV9BUkcoUVN0cmlu
ZywgZGVzdGluYXRpb24pLCBRX0FSRyhib29sLCBhbGxvd092ZXJ3cml0ZSkpOwogfQogCiB2b2lk
IERvd25sb2FkOjpwbGF0Zm9ybURpZEZpbmlzaCgpCkBAIC03OCwzICsxNzcsNCBAQCB2b2lkIERv
d25sb2FkOjpyZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYgYXV0aGVudGljYXRpbwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKyNpbmNsdWRlICJE
b3dubG9hZFF0Lm1vYyIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93
bmxvYWRzL3F0L1F0RmlsZURvd25sb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9Eb3dubG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTBhMGFhZmVh
NTBlYmI3NDMzMjgzMWJmY2VmODM3OTBjOTc4ZWRiYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L1F0RmlsZURvd25sb2FkZXIuY3BwCkBA
IC0wLDAgKzEsMjU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0
aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJRdEZpbGVEb3dubG9hZGVyLmgiCisKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgi
CisjaW5jbHVkZSAiRG93bmxvYWQuaCIKKyNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgorI2luY2x1
ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKKyNpbmNsdWRlIDxRQ29yZUFwcGxpY2F0aW9uPgorI2lu
Y2x1ZGUgPFFGaWxlPgorI2luY2x1ZGUgPFFGaWxlSW5mbz4KKyNpbmNsdWRlIDxRTmV0d29ya0Fj
Y2Vzc01hbmFnZXI+CisjaW5jbHVkZSA8V2ViQ29yZS9RTmV0d29ya1JlcGx5SGFuZGxlci5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1F0RmlsZURvd25sb2FkZXI6OlF0RmlsZURv
d25sb2FkZXIoUU5ldHdvcmtBY2Nlc3NNYW5hZ2VyKiBtYW5hZ2VyLCBjb25zdCBRTmV0d29ya1Jl
cXVlc3QmIHJlcXVlc3QpCisgICAgOiBtX21hbmFnZXIobWFuYWdlcikKKyAgICAsIG1fcmVxdWVz
dChyZXF1ZXN0KQorICAgICwgbV9yZXBseSgwKQorICAgICwgbV9kZXN0aW5hdGlvbkZpbGUobmV3
IFFGaWxlKFFTdHJpbmc6OmZyb21Bc2NpaSgwKSkpCisgICAgLCBtX2Vycm9yKFFOZXR3b3JrUmVw
bHk6Ok5vRXJyb3IpCisgICAgLCBtX2hlYWRlcnNSZWFkKGZhbHNlKQoreworICAgIG1vdmVUb1Ro
cmVhZChtYW5hZ2VyLT50aHJlYWQoKSk7CisgICAgY29ubmVjdCh0aGlzLCBTSUdOQUwoc3RhcnRS
ZXF1ZXN0ZWQoKSksIFNMT1Qoc2VuZFJlcXVlc3QoKSkpOworfQorCitRdEZpbGVEb3dubG9hZGVy
OjpRdEZpbGVEb3dubG9hZGVyKFFOZXR3b3JrUmVwbHkqIHJlcGx5KQorICAgIDogbV9tYW5hZ2Vy
KHJlcGx5LT5tYW5hZ2VyKCkpCisgICAgLCBtX3JlcXVlc3QocmVwbHktPnJlcXVlc3QoKSkKKyAg
ICAsIG1fcmVwbHkocmVwbHkpCisgICAgLCBtX2Rlc3RpbmF0aW9uRmlsZShuZXcgUUZpbGUoUVN0
cmluZzo6ZnJvbUFzY2lpKDApKSkKKyAgICAsIG1fZXJyb3IoUU5ldHdvcmtSZXBseTo6Tm9FcnJv
cikKKyAgICAsIG1faGVhZGVyc1JlYWQoZmFsc2UpCit7CisgICAgbW92ZVRvVGhyZWFkKHJlcGx5
LT50aHJlYWQoKSk7CisKKyAgICBjb25uZWN0KHRoaXMsIFNJR05BTChzdGFydFJlcXVlc3RlZCgp
KSwgU0xPVChhZG9wdFJlcGx5KCkpKTsKKyAgICAvLyBDb25uZWN0IHN0YXJ0UmVxdWVzdGVkIHRv
IHJlYWR5UmVhZCBpbiBjYXNlIHNvbWUgZGF0YSB3b3VsZCBiZSB3YWl0aW5nLgorICAgIGNvbm5l
Y3QodGhpcywgU0lHTkFMKHN0YXJ0UmVxdWVzdGVkKCkpLCBTTE9UKG9uUmVhZHlSZWFkKCkpKTsK
K30KKworUXRGaWxlRG93bmxvYWRlcjo6flF0RmlsZURvd25sb2FkZXIoKQoreworICAgIGlmICht
X2Rlc3RpbmF0aW9uRmlsZSkKKyAgICAgICAgYWJvcnREb3dubG9hZFdyaXRpbmdBbmRFbWl0RXJy
b3IoUmVzb3VyY2VFcnJvcigiRG93bmxvYWQiLCAtNiwgbV9yZXBseS0+dXJsKCkudG9TdHJpbmco
KSwgIkRvd25sb2FkIGNhbmNlbGxlZCIpKTsKKyAgICBkZWxldGUgbV9yZXBseTsKK30KKwordm9p
ZCBRdEZpbGVEb3dubG9hZGVyOjpzdGFydCgpCit7CisgICAgZW1pdCBzdGFydFJlcXVlc3RlZCgp
OworfQorCit2b2lkIFF0RmlsZURvd25sb2FkZXI6OnNlbmRSZXF1ZXN0KCkKK3sKKyAgICBtX3Jl
cGx5ID0gbV9tYW5hZ2VyLT5nZXQobV9yZXF1ZXN0KTsKKyAgICBhZG9wdFJlcGx5KCk7Cit9CisK
K3ZvaWQgUXRGaWxlRG93bmxvYWRlcjo6YWRvcHRSZXBseSgpCit7CisgICAgbV9yZXBseS0+c2V0
UGFyZW50KDApOworCisgICAgY29ubmVjdChtX3JlcGx5LCBTSUdOQUwocmVhZHlSZWFkKCkpLCBT
TE9UKG9uUmVhZHlSZWFkKCkpKTsKKyAgICBjb25uZWN0KG1fcmVwbHksIFNJR05BTChmaW5pc2hl
ZCgpKSwgU0xPVChvbkZpbmlzaGVkKCkpKTsKKyAgICBjb25uZWN0KG1fcmVwbHksIFNJR05BTChl
cnJvcihRTmV0d29ya1JlcGx5OjpOZXR3b3JrRXJyb3IpKSwgU0xPVChvbkVycm9yKFFOZXR3b3Jr
UmVwbHk6Ok5ldHdvcmtFcnJvcikpKTsKK30KKwordm9pZCBRdEZpbGVEb3dubG9hZGVyOjpkZXRl
cm1pbmVGaWxlbmFtZSgpCit7CisgICAgUV9BU1NFUlQoIW1fZGVzdGluYXRpb25GaWxlKTsKKwor
ICAgIFFTdHJpbmcgZmlsZU5hbWU7CisgICAgUVN0cmluZyBmaWxlTmFtZUNhbmRpZGF0ZSA9IGZp
bGVuYW1lRnJvbUhUVFBDb250ZW50RGlzcG9zaXRpb24oUVN0cmluZzo6ZnJvbUFzY2lpKG1fcmVw
bHktPnJhd0hlYWRlcigiQ29udGVudC1EaXNwb3NpdGlvbiIpKSk7CisgICAgaWYgKGZpbGVOYW1l
Q2FuZGlkYXRlLmlzRW1wdHkoKSkgeworICAgICAgICBLVVJMIGt1cmwgPSBtX3JlcGx5LT51cmwo
KTsKKyAgICAgICAgZmlsZU5hbWVDYW5kaWRhdGUgPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMo
a3VybC5sYXN0UGF0aENvbXBvbmVudCgpKTsKKyAgICB9CisKKyAgICBpZiAoZmlsZU5hbWVDYW5k
aWRhdGUuaXNFbXB0eSgpKSB7CisgICAgICAgIG1fcmVwbHktPmFib3J0KCk7CisgICAgICAgIFJl
c291cmNlRXJyb3IgZG93bmxvYWRFcnJvcigiRG93bmxvYWQiLCBRdEZpbGVEb3dubG9hZGVyOjpE
b3dubG9hZEVycm9yRmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX3JlcGx5LT51cmwoKS50b1N0cmluZygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRdEZpbGVEb3dubG9hZGVyIiwg
IkNhbm5vdCBkZXRlcm1pbmUgc2F2ZWQgZmlsZW5hbWUiKSk7CisgICAgICAgIGVtaXQgZXJyb3Io
ZG93bmxvYWRFcnJvciwgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihtX3JlcGx5LT5yZWFkQWxsKCkuZGF0YSgpKSwgbV9yZXBseS0+c2l6ZSgp
ICsgMSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gTWFrZSBzdXJlIHRoYXQg
d2UgcmVtb3ZlIHBvc3NpYmxlICIuLi8uLiIgcGFydHMgaW4gdGhlIGdpdmVuIGZpbGUgbmFtZS4K
KyAgICBRRmlsZUluZm8gZmlsZU5hbWVGaWx0ZXIoZmlsZU5hbWVDYW5kaWRhdGUpOworICAgIGZp
bGVOYW1lID0gZmlsZU5hbWVGaWx0ZXIuZmlsZU5hbWUoKTsKKworICAgIGlmIChmaWxlTmFtZS5p
c0VtcHR5KCkpIHsKKyAgICAgICAgbV9yZXBseS0+YWJvcnQoKTsKKyAgICAgICAgUmVzb3VyY2VF
cnJvciBkb3dubG9hZEVycm9yKCJEb3dubG9hZCIsIFF0RmlsZURvd25sb2FkZXI6OkRvd25sb2Fk
RXJyb3JGaWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcmVw
bHktPnVybCgpLnRvU3RyaW5nKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlF0RmlsZURvd25sb2FkZXIiLCAiQ2Fubm90
IGRldGVybWluZSBzYXZlZCBmaWxlbmFtZSIpKTsKKyAgICAgICAgZW1pdCBlcnJvcihkb3dubG9h
ZEVycm9yLCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KG1fcmVwbHktPnJlYWRBbGwoKS5kYXRhKCkpLCBtX3JlcGx5LT5zaXplKCkgKyAxKSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBlbWl0IHJlY2VpdmVkRGVzdGluYXRpb25T
dWdnZXN0aW9uKGZpbGVOYW1lKTsKK30KKwordm9pZCBRdEZpbGVEb3dubG9hZGVyOjpvbkRlY2lk
ZWREZXN0aW5hdGlvbihjb25zdCBRU3RyaW5nJiBkZWNpZGVkRmlsZVBhdGgsIGJvb2wgYWxsb3dP
dmVyd3JpdGUpCit7CisgICAgUV9BU1NFUlQoIW1fZGVzdGluYXRpb25GaWxlKTsKKworICAgIC8v
IEVycm9yIG1pZ2h0IGhhdmUgb2NjdXJlZCBkdXJpbmcgZGVzdGluYXRpb24gcXVlcnkuCisgICAg
aWYgKG1fZXJyb3IgIT0gUU5ldHdvcmtSZXBseTo6Tm9FcnJvcikgeworICAgICAgICBtX3JlcGx5
LT5hYm9ydCgpOworICAgICAgICBlbWl0IGVycm9yKFFOZXR3b3JrUmVwbHlIYW5kbGVyOjplcnJv
ckZvclJlcGx5KG1fcmVwbHkpLCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KG1fcmVwbHktPnJlYWRBbGwoKS5kYXRhKCkpLCBtX3JlcGx5LT5z
aXplKCkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChkZWNpZGVkRmlsZVBh
dGguaXNFbXB0eSgpKSB7CisgICAgICAgIG1fcmVwbHktPmFib3J0KCk7CisgICAgICAgIFJlc291
cmNlRXJyb3IgZG93bmxvYWRFcnJvcigiRG93bmxvYWQiLCBRdEZpbGVEb3dubG9hZGVyOjpEb3du
bG9hZEVycm9yQ2FuY2VsbGVkQnlDYWxsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX3JlcGx5LT51cmwoKS50b1N0cmluZygpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRdEZpbGVEb3dubG9h
ZGVyIiwgIkRvd25sb2FkIGNhbmNlbGxlZCBieSBjYWxsZXIiKSk7CisgICAgICAgIGVtaXQgZXJy
b3IoZG93bmxvYWRFcnJvciwgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihtX3JlcGx5LT5yZWFkQWxsKCkuZGF0YSgpKSwgbV9yZXBseS0+c2l6
ZSgpICsgMSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUUZpbGUqIGRvd25sb2Fk
RmlsZSA9IG5ldyBRRmlsZShkZWNpZGVkRmlsZVBhdGgpOworCisgICAgaWYgKCFhbGxvd092ZXJ3
cml0ZSAmJiBkb3dubG9hZEZpbGUtPmV4aXN0cygpKSB7CisgICAgICAgIGRlbGV0ZSBkb3dubG9h
ZEZpbGU7CisgICAgICAgIG1fcmVwbHktPmFib3J0KCk7CisgICAgICAgIFJlc291cmNlRXJyb3Ig
ZG93bmxvYWRFcnJvcigiRG93bmxvYWQiLCBRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9y
RmlsZUFscmVhZHlFeGlzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X3JlcGx5LT51cmwoKS50b1N0cmluZygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRdEZpbGVEb3dubG9hZGVyIiwgIkZp
bGUgYWxyZWFkeSBleGlzdHMiKSk7CisgICAgICAgIGVtaXQgZXJyb3IoZG93bmxvYWRFcnJvciwg
Q29yZUlQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPiht
X3JlcGx5LT5yZWFkQWxsKCkuZGF0YSgpKSwgbV9yZXBseS0+c2l6ZSgpICsgMSkpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgLy8gRklYTUU6IGhlcmUncyBhIHJhY2UgY29uZGl0aW9u
IGR1ZSB0byBxdCBhcGkgbm90IGFsbG93aW5nCisgICAgLy8gZmlsZXMgdG8gYmUgY3JlYXRlZCBv
bmx5IGlmIHRoZXkgZG9uJ3QgZXhpc3QKKworICAgIGlmICghZG93bmxvYWRGaWxlLT5vcGVuKFFJ
T0RldmljZTo6V3JpdGVPbmx5IHwgUUlPRGV2aWNlOjpUcnVuY2F0ZSkpIHsKKyAgICAgICAgZGVs
ZXRlIGRvd25sb2FkRmlsZTsKKyAgICAgICAgbV9yZXBseS0+YWJvcnQoKTsKKyAgICAgICAgUmVz
b3VyY2VFcnJvciBkb3dubG9hZEVycm9yKCJEb3dubG9hZCIsIFF0RmlsZURvd25sb2FkZXI6OkRv
d25sb2FkRXJyb3JDYW5ub3RPcGVuRmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fcmVwbHktPnVybCgpLnRvU3RyaW5nKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlF0RmlsZURvd25sb2Fk
ZXIiLCAiQ2Fubm90IG9wZW4gZmlsZSBmb3Igd3JpdGluZyIpKTsKKyAgICAgICBlbWl0IGVycm9y
KGRvd25sb2FkRXJyb3IsIENvcmVJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4obV9yZXBseS0+cmVhZEFsbCgpLmRhdGEoKSksIG1fcmVwbHktPnNpemUo
KSArIDEpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEFzc2lnbmluZyB0byBt
X2Rlc3RpbmF0aW9uRmlsZSBmbGFncyB0aGF0IGVpdGhlciBlcnJvciBvcgorICAgIC8vIGZpbmlz
aGVkIHNoYWxsIGJlIGNhbGxlZCBpbiB0aGUgZW5kLgorICAgIG1fZGVzdGluYXRpb25GaWxlID0g
ZG93bmxvYWRGaWxlOworCisgICAgZW1pdCBjcmVhdGVkRGVzdGluYXRpb24obV9kZXN0aW5hdGlv
bkZpbGUtPmZpbGVOYW1lKCkpOworCisgICAgLy8gV2UgbWlnaHQgaGF2ZSBnb3R0ZW4gcmVhZHlS
ZWFkIGFscmVhZHkgZXZlbiBiZWZvcmUgdGhpcyBmdW5jdGlvbgorICAgIC8vIHdhcyBjYWxsZWQu
CisgICAgaWYgKG1fcmVwbHktPmJ5dGVzQXZhaWxhYmxlKCkpCisgICAgICAgIG9uUmVhZHlSZWFk
KCk7CisKKyAgICAvLyBXZSBtaWdodCBoYXZlIGdvdHRlbiBmaW5pc2hlZCBhbHJlYWR5IGV2ZW4g
YmVmb3JlIHRoaXMKKyAgICAvLyBmdW5jdGlvbiB3YXMgY2FsbGVkLgorICAgIGlmIChtX3JlcGx5
LT5pc0ZpbmlzaGVkKCkpCisgICAgICAgIG9uRmluaXNoZWQoKTsKKworfQorCit2b2lkIFF0Rmls
ZURvd25sb2FkZXI6OmFib3J0RG93bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yQ29kZSkKK3sKKyAgICBkZWxldGUgbV9kZXN0aW5hdGlvbkZpbGU7Cisg
ICAgbV9kZXN0aW5hdGlvbkZpbGUgPSAwOworICAgIG1fcmVwbHktPmFib3J0KCk7CisgICAgZW1p
dCBlcnJvcihlcnJvckNvZGUsIENvcmVJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4obV9yZXBseS0+cmVhZEFsbCgpLmRhdGEoKSksIG1fcmVwbHktPnNp
emUoKSArIDEpKTsKK30KKworCit2b2lkIFF0RmlsZURvd25sb2FkZXI6Om9uUmVhZHlSZWFkKCkK
K3sKKyAgICBpZiAobV9kZXN0aW5hdGlvbkZpbGUpIHsKKyAgICAgICAgUUJ5dGVBcnJheSBjb250
ZW50ID0gbV9yZXBseS0+cmVhZEFsbCgpOworICAgICAgICBpZiAoY29udGVudC5zaXplKCkgPD0g
MCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBxaW50NjQgYnl0ZXNXcml0dGVuID0g
bV9kZXN0aW5hdGlvbkZpbGUtPndyaXRlKGNvbnRlbnQpOworCisgICAgICAgIGlmIChieXRlc1dy
aXR0ZW4gPT0gLTEgfHwgYnl0ZXNXcml0dGVuICE9IGNvbnRlbnQuc2l6ZSgpKSB7CisgICAgICAg
ICAgICBhYm9ydERvd25sb2FkV3JpdGluZ0FuZEVtaXRFcnJvcihSZXNvdXJjZUVycm9yKCJEb3du
bG9hZCIsIC01LCBtX3JlcGx5LT51cmwoKS50b1N0cmluZygpLCAiVW5hYmxlIHRvIHdyaXRlIikp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZW1pdCByZWNlaXZl
ZERhdGEoYnl0ZXNXcml0dGVuKTsKKyAgICB9IGVsc2UgaWYgKCFtX2hlYWRlcnNSZWFkKSB7Cisg
ICAgICAgIC8vIEJ5IEFQSSBjb250cmFjdCwgUU5ldHdvcmtSZXBseTo6bWV0YURhdGFDaGFuZ2Vk
IGNhbm5vdCByZWFsbHkgYmUgdHJ1c3RlZC4KKyAgICAgICAgLy8gVGh1cyB3ZSBuZWVkIHRvIGNh
bGwgdGhpcyB1cG9uIHJlY2VpdmluZyBmaXJzdCBkYXRhLgorICAgICAgICBXVEY6OlN0cmluZyBj
b250ZW50VHlwZSA9IG1fcmVwbHktPmhlYWRlcihRTmV0d29ya1JlcXVlc3Q6OkNvbnRlbnRUeXBl
SGVhZGVyKS50b1N0cmluZygpOworICAgICAgICBXVEY6OlN0cmluZyBlbmNvZGluZyA9IGV4dHJh
Y3RDaGFyc2V0RnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSk7CisgICAgICAgIFdURjo6U3RyaW5n
IG1pbWVUeXBlID0gZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSk7CisK
KyAgICAgICAgLy8gTGV0J3MgdHJ5IHRvIGd1ZXNzIGZyb20gdGhlIGV4dGVuc2lvbi4KKyAgICAg
ICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIG1pbWVUeXBlID0gTUlNRVR5
cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JQYXRoKG1fcmVwbHktPnVybCgpLnBhdGgoKSk7CisK
KyAgICAgICAgZW1pdCByZWNlaXZlZFJlc3BvbnNlKG1fcmVwbHktPnVybCgpLCBtaW1lVHlwZSwg
bV9yZXBseS0+aGVhZGVyKFFOZXR3b3JrUmVxdWVzdDo6Q29udGVudExlbmd0aEhlYWRlcikudG9M
b25nTG9uZygpLCBlbmNvZGluZyk7CisKKyAgICAgICAgZGV0ZXJtaW5lRmlsZW5hbWUoKTsKKwor
ICAgICAgICBtX2hlYWRlcnNSZWFkID0gdHJ1ZTsKKyAgICB9Cit9CisKK3ZvaWQgUXRGaWxlRG93
bmxvYWRlcjo6b25GaW5pc2hlZCgpCit7CisgICAgaWYgKG1fZGVzdGluYXRpb25GaWxlKSB7Cisg
ICAgICAgIG1fZGVzdGluYXRpb25GaWxlLT5jbG9zZSgpOworICAgICAgICBkZWxldGUgbV9kZXN0
aW5hdGlvbkZpbGU7CisgICAgICAgIG1fZGVzdGluYXRpb25GaWxlID0gMDsKKworICAgICAgICBp
ZiAobV9lcnJvciA9PSBRTmV0d29ya1JlcGx5OjpOb0Vycm9yKQorICAgICAgICAgICAgZW1pdCBm
aW5pc2hlZCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBlbWl0IGVycm9yKFFOZXR3b3Jr
UmVwbHlIYW5kbGVyOjplcnJvckZvclJlcGx5KG1fcmVwbHkpLCBDb3JlSVBDOjpEYXRhUmVmZXJl
bmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fcmVwbHktPnJlYWRBbGwoKS5k
YXRhKCkpLCBtX3JlcGx5LT5zaXplKCkgKyAxKSk7CisgICAgfQorfQorCit2b2lkIFF0RmlsZURv
d25sb2FkZXI6Om9uRXJyb3IoUU5ldHdvcmtSZXBseTo6TmV0d29ya0Vycm9yIGNvZGUpCit7Cisg
ICAgbV9lcnJvciA9IGNvZGU7Cit9CisKK3ZvaWQgUXRGaWxlRG93bmxvYWRlcjo6b25DYW5jZWwo
KQoreworICAgIG1fcmVwbHktPmFib3J0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZp
bGVEb3dubG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9R
dEZpbGVEb3dubG9hZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2VlYjU5Mzk4YmE4ZWYxNmIxYjQ4MWI3YjNk
YzA1OWViMTgzZTA2ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvRG93bmxvYWRzL3F0L1F0RmlsZURvd25sb2FkZXIuaApAQCAtMCwwICsxLDkxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKQorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
YWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyAqCisgKi8KKworI2lmbmRlZiBRdEZpbGVEb3dubG9hZGVyX2gKKyNkZWZpbmUgUXRGaWxl
RG93bmxvYWRlcl9oCisKKyNpbmNsdWRlIDxRTmV0d29ya1JlcGx5PgorI2luY2x1ZGUgPFFOZXR3
b3JrUmVxdWVzdD4KKworY2xhc3MgUUZpbGU7CitjbGFzcyBRTmV0d29ya0FjY2Vzc01hbmFnZXI7
CitjbGFzcyBRTmV0d29ya1JlcXVlc3Q7CisKK25hbWVzcGFjZSBDb3JlSVBDIHsKK2NsYXNzIERh
dGFSZWZlcmVuY2U7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFJlc291cmNlRXJy
b3I7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBRdEZpbGVEb3dubG9hZGVyIGhhcyB0
byBiZSBhZmZpbmVkIHRvIHRoZSBzYW1lIHRocmVhZCBhcyB0aGUgUU5ldHdvcmtBY2Nlc3NNYW5h
Z2VyCitjbGFzcyBRdEZpbGVEb3dubG9hZGVyIDogcHVibGljIFFPYmplY3QgeworICAgIFFfT0JK
RUNUCitwdWJsaWM6CisgICAgUXRGaWxlRG93bmxvYWRlcihRTmV0d29ya0FjY2Vzc01hbmFnZXIq
LCBjb25zdCBRTmV0d29ya1JlcXVlc3QmKTsKKyAgICBRdEZpbGVEb3dubG9hZGVyKFFOZXR3b3Jr
UmVwbHkqKTsKKyAgICB2aXJ0dWFsIH5RdEZpbGVEb3dubG9hZGVyKCk7CisgICAgdm9pZCBzdGFy
dCgpOworCisgICAgZW51bSBEb3dubG9hZEVycm9yIHsKKyAgICAgICAgRG93bmxvYWRFcnJvckNh
bm5vdE9wZW5GaWxlID0gLTQsCisgICAgICAgIERvd25sb2FkRXJyb3JGaWxlQWxyZWFkeUV4aXN0
cyA9IC0zLAorICAgICAgICBEb3dubG9hZEVycm9yQ2FuY2VsbGVkQnlDYWxsZXIgPSAtMiwKKyAg
ICAgICAgRG93bmxvYWRFcnJvckZpbGVuYW1lID0gLTEKKyAgICB9OworCitzaWduYWxzOgorICAg
IHZvaWQgc3RhcnRSZXF1ZXN0ZWQoKTsKKyAgICB2b2lkIHJlY2VpdmVkUmVzcG9uc2UoY29uc3Qg
UVVybCYgc291cmNlVXJsLCBjb25zdCBRU3RyaW5nJiBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVj
dGVkTGVuZ3RoLCBjb25zdCBRU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lKTsKKyAgICB2b2lkIHJl
Y2VpdmVkRGVzdGluYXRpb25TdWdnZXN0aW9uKGNvbnN0IFFTdHJpbmcmIHN1Z2dlc3RlZEZpbGVO
YW1lKTsKKyAgICB2b2lkIGNyZWF0ZWREZXN0aW5hdGlvbihjb25zdCBRU3RyaW5nJiBmaWxlUGF0
aCk7CisgICAgdm9pZCByZWNlaXZlZERhdGEocWludDY0IGxlbmd0aCk7CisgICAgdm9pZCBmaW5p
c2hlZCgpOworICAgIHZvaWQgZXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJy
b3JDb2RlLCBjb25zdCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhKTsKKworcHJp
dmF0ZSBzbG90czoKKyAgICAvLyBjYWxsZWQgZnJvbSBtYWluIHRocmVhZAorICAgIHZvaWQgb25E
ZWNpZGVkRGVzdGluYXRpb24oY29uc3QgUVN0cmluZyYgZGVjaWRlZEZpbGVQYXRoLCBib29sIGFs
bG93T3ZlcndyaXRlKTsKKyAgICB2b2lkIG9uQ2FuY2VsKCk7CisgICAgLy8gY2FsbGVkIGJ5IHRo
aXMgaW1wbAorICAgIHZvaWQgc2VuZFJlcXVlc3QoKTsKKyAgICB2b2lkIGFkb3B0UmVwbHkoKTsK
KyAgICB2b2lkIG9uUmVhZHlSZWFkKCk7CisgICAgdm9pZCBvbkZpbmlzaGVkKCk7CisgICAgdm9p
ZCBvbkVycm9yKFFOZXR3b3JrUmVwbHk6Ok5ldHdvcmtFcnJvciBjb2RlKTsKKworcHJpdmF0ZToK
KyAgICB2b2lkIGFib3J0RG93bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImIGVycm9yQ29kZSk7CisgICAgdm9pZCBkZXRlcm1pbmVGaWxlbmFtZSgp
OworCisgICAgUU5ldHdvcmtBY2Nlc3NNYW5hZ2VyKiBtX21hbmFnZXI7CisgICAgUU5ldHdvcmtS
ZXF1ZXN0IG1fcmVxdWVzdDsKKyAgICBRTmV0d29ya1JlcGx5KiBtX3JlcGx5OworICAgIFFGaWxl
KiBtX2Rlc3RpbmF0aW9uRmlsZTsKKyAgICBRTmV0d29ya1JlcGx5OjpOZXR3b3JrRXJyb3IgbV9l
cnJvcjsKKyAgICBib29sIG1faGVhZGVyc1JlYWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107482</attachid>
            <date>2011-09-15 05:58:18 -0700</date>
            <delta_ts>2011-09-16 07:15:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68153-20110915095759.patch</filename>
            <type>text/plain</type>
            <size>29168</size>
            <attacher name="Jesus Sanchez-Palencia">jesus</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTUxMzMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2MDA0N2Q4MzA1NmY4ZGEx
Mzk4YmI0ZWM2OTA2NjBhZWVjMzIwNGE0Li44ZGM5YTk2ZTE2YmZkYjc2NzM5Njk2MGY1MzNjZmE0
NjI4NzIxM2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDktMTUgIEplc3Vz
IFNhbmNoZXotUGFsZW5jaWEgIDxqZXN1cy5wYWxlbmNpYUBvcGVuYm9zc2Eub3JnPgorCisgICAg
ICAgIFtRdF1bV0syXSBJbXBsZW1lbnQgRG93bmxvYWQgc3VwcG9ydCBpbiBXZWJQcm9jZXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODE1MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yZWQg
UU5ldHdvcmtSZXBseUhhbmRsZXI6OmZpbmlzaCgpIGluIG9yZGVyIHRvIGFkZAorICAgICAgICBh
bmQgdXNlIHRoZSBzdGF0aWMgZnVuY3Rpb24gUU5ldHdvcmtSZXBseUhhbmRsZXI6OmVycm9yRm9y
UmVwbHkoKS4KKyAgICAgICAgVGhpcyB3aWxsIGJlIHVzZWQgYnkgb3VyIERvd25sb2FkIGltcGxl
bWVudGF0aW9uIGluIFdlYktpdDIgKFdlYlByb2Nlc3MpCisgICAgICAgIHdoZW4gaGFuZGxpbmcg
UmVzb3VyY2VFcnJvci4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtS
ZXBseUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UU5ldHdvcmtSZXBseUhhbmRsZXI6
OmZpbmlzaCk6CisgICAgICAgIChXZWJDb3JlOjpRTmV0d29ya1JlcGx5SGFuZGxlcjo6ZXJyb3JG
b3JSZXBseSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFu
ZGxlci5oOgorCiAyMDExLTA5LTE0ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5j
b20+CiAKICAgICAgICAgR2V0IHJpZCBvZiBXZWJDb3JlVmlld0ZhY3RvcnkgYW5kIGl0cyBXZWJW
aWV3RmFjdG9yeSBzdWJjbGFzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNwcAppbmRleCA2YTAzY2NkMjcy
YjZlNDEyM2Q1NzE4MWFhOWIwYjdhZTJkM2Q1MzI0Li41YWYwMDQ5ZGE0OWMzMmRiZWVkN2MxZDI2
NWI3MDIzNzkzNzQ2NjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNwcApAQCAtNDU1LDE4ICs0NTUs
OCBAQCB2b2lkIFFOZXR3b3JrUmVwbHlIYW5kbGVyOjpmaW5pc2goKQogCiAgICAgaWYgKCFtX3Jl
cGx5V3JhcHBlci0+cmVwbHkoKS0+ZXJyb3IoKSB8fCBzaG91bGRJZ25vcmVIdHRwRXJyb3IobV9y
ZXBseVdyYXBwZXItPnJlcGx5KCksIG1fcmVwbHlXcmFwcGVyLT5yZXNwb25zZUNvbnRhaW5zRGF0
YSgpKSkKICAgICAgICAgY2xpZW50LT5kaWRGaW5pc2hMb2FkaW5nKG1fcmVzb3VyY2VIYW5kbGUs
IDApOwotICAgIGVsc2UgewotICAgICAgICBRVXJsIHVybCA9IG1fcmVwbHlXcmFwcGVyLT5yZXBs
eSgpLT51cmwoKTsKLSAgICAgICAgaW50IGh0dHBTdGF0dXNDb2RlID0gbV9yZXBseVdyYXBwZXIt
PnJlcGx5KCktPmF0dHJpYnV0ZShRTmV0d29ya1JlcXVlc3Q6Okh0dHBTdGF0dXNDb2RlQXR0cmli
dXRlKS50b0ludCgpOwotCi0gICAgICAgIGlmIChodHRwU3RhdHVzQ29kZSkgewotICAgICAgICAg
ICAgUmVzb3VyY2VFcnJvciBlcnJvcigiSFRUUCIsIGh0dHBTdGF0dXNDb2RlLCB1cmwudG9TdHJp
bmcoKSwgbV9yZXBseVdyYXBwZXItPnJlcGx5KCktPmF0dHJpYnV0ZShRTmV0d29ya1JlcXVlc3Q6
Okh0dHBSZWFzb25QaHJhc2VBdHRyaWJ1dGUpLnRvU3RyaW5nKCkpOwotICAgICAgICAgICAgY2xp
ZW50LT5kaWRGYWlsKG1fcmVzb3VyY2VIYW5kbGUsIGVycm9yKTsKLSAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3IoIlF0TmV0d29yayIsIG1fcmVwbHlXcmFw
cGVyLT5yZXBseSgpLT5lcnJvcigpLCB1cmwudG9TdHJpbmcoKSwgbV9yZXBseVdyYXBwZXItPnJl
cGx5KCktPmVycm9yU3RyaW5nKCkpOwotICAgICAgICAgICAgY2xpZW50LT5kaWRGYWlsKG1fcmVz
b3VyY2VIYW5kbGUsIGVycm9yKTsKLSAgICAgICAgfQotICAgIH0KKyAgICBlbHNlCisgICAgICAg
IGNsaWVudC0+ZGlkRmFpbChtX3Jlc291cmNlSGFuZGxlLCBlcnJvckZvclJlcGx5KG1fcmVwbHlX
cmFwcGVyLT5yZXBseSgpKSk7CiAKICAgICBtX3JlcGx5V3JhcHBlciA9IG51bGxwdHI7CiB9CkBA
IC02OTQsNiArNjg0LDE3IEBAIHZvaWQgUU5ldHdvcmtSZXBseUhhbmRsZXI6OnN0YXJ0KCkKICAg
ICAgICAgY29ubmVjdChtX3JlcGx5V3JhcHBlci0+cmVwbHkoKSwgU0lHTkFMKHVwbG9hZFByb2dy
ZXNzKHFpbnQ2NCwgcWludDY0KSksIHRoaXMsIFNMT1QodXBsb2FkUHJvZ3Jlc3MocWludDY0LCBx
aW50NjQpKSk7CiB9CiAKK1Jlc291cmNlRXJyb3IgUU5ldHdvcmtSZXBseUhhbmRsZXI6OmVycm9y
Rm9yUmVwbHkoUU5ldHdvcmtSZXBseSogcmVwbHkpCit7CisgICAgUVVybCB1cmwgPSByZXBseS0+
dXJsKCk7CisgICAgaW50IGh0dHBTdGF0dXNDb2RlID0gcmVwbHktPmF0dHJpYnV0ZShRTmV0d29y
a1JlcXVlc3Q6Okh0dHBTdGF0dXNDb2RlQXR0cmlidXRlKS50b0ludCgpOworCisgICAgaWYgKGh0
dHBTdGF0dXNDb2RlKQorICAgICAgICByZXR1cm4gUmVzb3VyY2VFcnJvcigiSFRUUCIsIGh0dHBT
dGF0dXNDb2RlLCB1cmwudG9TdHJpbmcoKSwgcmVwbHktPmF0dHJpYnV0ZShRTmV0d29ya1JlcXVl
c3Q6Okh0dHBSZWFzb25QaHJhc2VBdHRyaWJ1dGUpLnRvU3RyaW5nKCkpOworCisgICAgcmV0dXJu
IFJlc291cmNlRXJyb3IoIlF0TmV0d29yayIsIHJlcGx5LT5lcnJvcigpLCB1cmwudG9TdHJpbmco
KSwgcmVwbHktPmVycm9yU3RyaW5nKCkpOworfQorCiB9CiAKICNpbmNsdWRlICJtb2NfUU5ldHdv
cmtSZXBseUhhbmRsZXIuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5oCmluZGV4IDlkMzZkYTIyMWQ4NTJm
MTI1NzVlNTE3YzJlODNkMTE3YmI2NjA5NWQuLmY3YTQ0N2E1Y2E3MmY3NzkyNzIyOGEyOTNkY2Uy
NjBkOWU2MjlmMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
cXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmgKQEAgLTM2LDYgKzM2LDcgQEAgUVRfRU5E
X05BTUVTUEFDRQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb3JtRGF0YUlPRGV2aWNl
OworY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlSGFuZGxlOwogY2xhc3MgUmVz
b3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKQEAgLTEzMyw2ICsxMzQsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBmb3J3YXJkRGF0YSgpOwogICAgIHZvaWQgc2VuZFJlc3BvbnNl
SWZOZWVkZWQoKTsKIAorICAgIHN0YXRpYyBSZXNvdXJjZUVycm9yIGVycm9yRm9yUmVwbHkoUU5l
dHdvcmtSZXBseSopOworCiBwcml2YXRlIHNsb3RzOgogICAgIHZvaWQgdXBsb2FkUHJvZ3Jlc3Mo
cWludDY0IGJ5dGVzU2VudCwgcWludDY0IGJ5dGVzVG90YWwpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDU4
ZWRlNjNkM2Y4NTBkNGVkM2UwNGFmNTViZTI0MzhmYWFlN2UzOC4uMzY3Y2U2MGM0M2YxOTY5YTRl
ZTk2Mjg3ZjFkMDRmNTA5YTk4ZTM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDEx
LTA5LTE1ICBKZXN1cyBTYW5jaGV6LVBhbGVuY2lhICA8amVzdXMucGFsZW5jaWFAb3BlbmJvc3Nh
Lm9yZz4KKworICAgICAgICBbUXRdW1dLMl0gSW1wbGVtZW50IERvd25sb2FkIHN1cHBvcnQgaW4g
V2ViUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NjgxNTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBXZSBpbXBsZW1lbnQgdGhlIG5lY2Vzc2FyeSBmdW5jdGlvbnMgb2YgRG93bmxvYWQuaCwgYW5k
IG91ciBRdEZpbGVEb3dubG9hZGVyCisgICAgICAgIHRvIGhhbmRsZSBhbGwgbmV0d29yayBjb21t
dW5pY2F0aW9uLiBRdERvd25sb2FkRGVsZWdhdGUgd2FzIGltcGxlbWVudGVkIHRvIGRlYWwKKyAg
ICAgICAgd2l0aCB0aGUgbmVjZXNzYXJ5IGludGVyZmFjZSBiZXR3ZWVuIFF0RmlsZURvd25sb2Fk
ZXIgYW5kIERvd25sb2FkLgorICAgICAgICBRdEZpbGVEb3dubG9hZGVyIGhhcyB0byBiZSBhZmZp
bmVkIHRvIHRoZSBzYW1lIHRocmVhZCBhcyB0aGUgUU5ldHdvcmtBY2Nlc3NNYW5hZ2VyLgorCisg
ICAgICAgIFdlIHVzZSB0aGUgZG93bmxvYWQgcG9saWN5IGZvciBhbnkgTUlNRSB0eXBlIG5vdCBz
dXBwb3J0ZWQgYnkgV2ViS2l0LiBUaGlzCisgICAgICAgIGJlaGF2ZXMgbGlrZSBRdCBub24tV2Vi
S2l0MiBleGNlcHQgdGhhdCB3ZSBkb24ndCBmb3JjZSBkb3dubG9hZCB3aGVuCisgICAgICAgIHdl
IGVuY291bnRlciBDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50LiBXZSBzdGlsbCB1c2Ug
dGhlICJmaWxlbmFtZT0iCisgICAgICAgIGZpZWxkIGZvciBmaWxlIG5hbWUgc3VnZ2VzdGlvbiB0
aG91Z2guCisKKyAgICAgICAgT3JpZ2luYWwgcGF0Y2ggYnk6IEtpbW1vIEtpbm51bmVuIDxraW1t
by50Lmtpbm51bmVuQG5va2lhLmNvbT4sCisgICAgICAgIEpvY2VseW4gVHVyY290dGUgPGpvY2Vs
eW4udHVyY290dGVAbm9raWEuY29tPiwgU2ltb24gSGF1c21hbm4gPHNpbW9uLmhhdXNtYW5uQG5v
a2lhLmNvbT4KKyAgICAgICAgYW5kIFphbGFuIEJ1anRhcyA8emFsYW4uYnVqdGFzQG5va2lhLmNv
bT4uCisKKyAgICAgICAgKiBXZWJLaXQyLnBybzoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZC5jcHA6IEFkZGluZyBRdERvd25sb2FkRGVsZWdhdGUsIFF0IHBsYXRmb3Jt
IHNwZWNpZmljCisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpEb3dubG9hZCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaDogQWRkaW5nIFF0RG93bmxvYWREZWxl
Z2F0ZSwgUXQgcGxhdGZvcm0gc3BlY2lmaWMKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fk
cy9xdC9Eb3dubG9hZFF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UXREb3dubG9hZERlbGVnYXRl
OjpRdERvd25sb2FkRGVsZWdhdGUpOgorICAgICAgICAoV2ViS2l0OjpRdERvd25sb2FkRGVsZWdh
dGU6On5RdERvd25sb2FkRGVsZWdhdGUpOgorICAgICAgICAoV2ViS2l0OjpRdERvd25sb2FkRGVs
ZWdhdGU6OnNldERvd25sb2FkZXIpOgorICAgICAgICAoV2ViS2l0OjpRdERvd25sb2FkRGVsZWdh
dGU6Om9uUmVjZWl2ZWREZXN0aW5hdGlvblN1Z2dlc3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpR
dERvd25sb2FkRGVsZWdhdGU6Om9uUmVjZWl2ZWRSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6
OlF0RG93bmxvYWREZWxlZ2F0ZTo6b25DcmVhdGVkRGVzdGluYXRpb24pOgorICAgICAgICAoV2Vi
S2l0OjpRdERvd25sb2FkRGVsZWdhdGU6Om9uUmVjZWl2ZWREYXRhKToKKyAgICAgICAgKFdlYktp
dDo6UXREb3dubG9hZERlbGVnYXRlOjpvbkZpbmlzaGVkKToKKyAgICAgICAgKFdlYktpdDo6UXRE
b3dubG9hZERlbGVnYXRlOjpvbkVycm9yKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnN0
YXJ0KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnN0YXJ0V2l0aEhhbmRsZSk6CisgICAg
ICAgIChXZWJLaXQ6OkRvd25sb2FkOjpjYW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9h
ZDo6cGxhdGZvcm1JbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OmRpZERl
Y2lkZURlc3RpbmF0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZp
bGVEb3dubG9hZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlF0RmlsZURvd25sb2Fk
ZXI6OlF0RmlsZURvd25sb2FkZXIpOgorICAgICAgICAoV2ViS2l0OjpRdEZpbGVEb3dubG9hZGVy
Ojp+UXRGaWxlRG93bmxvYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlF0RmlsZURvd25sb2FkZXI6
OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6UXRGaWxlRG93bmxvYWRlcjo6c2VuZFJlcXVlc3Qp
OgorICAgICAgICAoV2ViS2l0OjpRdEZpbGVEb3dubG9hZGVyOjphZG9wdFJlcGx5KToKKyAgICAg
ICAgKFdlYktpdDo6UXRGaWxlRG93bmxvYWRlcjo6ZGV0ZXJtaW5lRmlsZW5hbWUpOgorICAgICAg
ICAoV2ViS2l0OjpRdEZpbGVEb3dubG9hZGVyOjpvbkRlY2lkZWREZXN0aW5hdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OlF0RmlsZURvd25sb2FkZXI6OmFib3J0RG93bmxvYWRXcml0aW5nQW5kRW1p
dEVycm9yKToKKyAgICAgICAgKFdlYktpdDo6UXRGaWxlRG93bmxvYWRlcjo6b25SZWFkeVJlYWQp
OgorICAgICAgICAoV2ViS2l0OjpRdEZpbGVEb3dubG9hZGVyOjpvbkZpbmlzaGVkKToKKyAgICAg
ICAgKFdlYktpdDo6UXRGaWxlRG93bmxvYWRlcjo6b25FcnJvcik6CisgICAgICAgIChXZWJLaXQ6
OlF0RmlsZURvd25sb2FkZXI6Om9uQ2FuY2VsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25s
b2Fkcy9xdC9RdEZpbGVEb3dubG9hZGVyLmg6IEFkZGVkLgorCiAyMDExLTA5LTE0ICBBZGEgQ2hh
biAgPGFkYWNoYW5AYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBXS0J1bmRsZUZyYW1l
Q29weVdlYkFyY2hpdmUoKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJv
IGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcm8KaW5kZXggMmQwZTZkZGM5NTczNjYyZTU5ZmU0
MzZkMmJjMGNlZDZkMDM3ZjhhMS4uYWE1NjRlODBmY2UxOGM3ZTQ4NzZjNjYzNWMyNDU3YmVlMDRh
OWFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcm8KKysrIGIvU291cmNl
L1dlYktpdDIvV2ViS2l0Mi5wcm8KQEAgLTI2Myw2ICsyNjMsNyBAQCBIRUFERVJTICs9IFwKICAg
ICBXZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oIFwKICAgICBXZWJQcm9jZXNz
L0Rvd25sb2Fkcy9Eb3dubG9hZC5oIFwKICAgICBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZE1hbmFnZXIuaCBcCisgICAgV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvUXRGaWxlRG93bmxvYWRl
ci5oIFwKICAgICBXZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIuaCBc
CiAgICAgV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlci5oIFwKICAgICBXZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFu
YWdlci5oIFwKQEAgLTQ5OSw2ICs1MDAsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBXZWJQcm9jZXNz
L0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAgXAogICAgIFdlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkTWFuYWdlci5jcHAgXAogICAgIFdlYlByb2Nlc3MvRG93bmxvYWRzL3F0L0Rvd25sb2FkUXQu
Y3BwIFwKKyAgICBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3dubG9hZGVyLmNwcCBc
CiAgICAgV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcCBcCiAg
ICAgV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlci5jcHAgXAogICAgIFdlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5h
Z2VyLmNwcCBcCkBAIC01MDksNyArNTExLDcgQEAgU09VUkNFUyArPSBcCiAgICAgV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHAgXAogICAg
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJ
dGVtLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUNs
aWVudC5jcHAgXAotICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVI
aXRUZXN0UmVzdWx0LmNwcCBcICAgIAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwIFwKICAgICBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcCBc
CiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JD
bGllbnQuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkLmNwcAppbmRleCBjOWZmNTkzOWMzZDllYjNmMWQyMzA3NjhkM2FkYTY2MzM4MmE3ZTc4
Li5lMzdiM2UwNjgyYThjM2QzYzMyZDBhOWRkZTM0MjE1NGJhODhkMzVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwCkBAIC01MSw2ICs1
MSw5IEBAIERvd25sb2FkOjpEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCiAjaWYgVVNFKENGTkVUV09SSykKICAgICAsIG1fYWxsb3dP
dmVyd3JpdGUoZmFsc2UpCiAjZW5kaWYKKyNpZiBQTEFURk9STShRVCkKKyAgICAsIG1fZG93bmxv
YWREZWxlZ2F0ZSgwKQorI2VuZGlmCiB7CiAgICAgQVNTRVJUKG1fZG93bmxvYWRJRCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCmluZGV4IGZl
OWE1NmQxZWUyM2EyOGZiMzY1OTcyNGUzYTYxYmNjMmVkNTIxNGMuLjE0MmJmODlhN2RlNmJmOTZm
YzU2NWVhNTRjYWE4NGFmMDJlYjE5MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWQuaApAQCAtNjAsNiArNjAsMTAgQEAgY2xhc3MgRG93bmxvYWRB
dXRoZW50aWNhdGlvbkNsaWVudDsKIGNsYXNzIFNhbmRib3hFeHRlbnNpb247CiBjbGFzcyBXZWJQ
YWdlOwogCisjaWYgUExBVEZPUk0oUVQpCitjbGFzcyBRdERvd25sb2FkRGVsZWdhdGU7CisjZW5k
aWYKKwogY2xhc3MgRG93bmxvYWQgOiBwdWJsaWMgQ29yZUlQQzo6TWVzc2FnZVNlbmRlcjxEb3du
bG9hZD4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERvd25sb2FkKTsKIHB1YmxpYzoKQEAg
LTEyNiw2ICsxMzAsOSBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxDRlVSTERvd25sb2FkUmVm
PiBtX2Rvd25sb2FkOwogICAgIFJlZlB0cjxEb3dubG9hZEF1dGhlbnRpY2F0aW9uQ2xpZW50PiBt
X2F1dGhlbnRpY2F0aW9uQ2xpZW50OwogI2VuZGlmCisjaWYgUExBVEZPUk0oUVQpCisgICAgUXRE
b3dubG9hZERlbGVnYXRlKiBtX2Rvd25sb2FkRGVsZWdhdGU7CisjZW5kaWYKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9E
b3dubG9hZHMvcXQvRG93bmxvYWRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rv
d25sb2Fkcy9xdC9Eb3dubG9hZFF0LmNwcAppbmRleCBhZDVlN2RlZTZlNGQ0MDEyYmZjOWRlNjcz
NmZjNDYwODRiNmIxZDk4Li41MDc0NGE3YzMzMjQ5ODY2ZTQxOWQ0NjM2MWZjNzIxYzc3ZGEwNDEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9Eb3du
bG9hZFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9E
b3dubG9hZFF0LmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAs
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwzNSArMjcsMTMzIEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiRG93bmxvYWQuaCIKIAorI2luY2x1ZGUgIlF0RmlsZURvd25s
b2FkZXIuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJ
bXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUU5ldHdvcmtSZXBseUhhbmRsZXIuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZUhhbmRsZUludGVybmFsLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3Bv
bnNlLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAorY2xhc3MgUXREb3dubG9hZERlbGVnYXRlIDogcHVibGljIFFPYmplY3QgeworICAgIFFfT0JK
RUNUCitwdWJsaWM6CisgICAgUXREb3dubG9hZERlbGVnYXRlKERvd25sb2FkKiwgUU5ldHdvcmtB
Y2Nlc3NNYW5hZ2VyKiwgY29uc3QgUU5ldHdvcmtSZXF1ZXN0Jik7CisgICAgUXREb3dubG9hZERl
bGVnYXRlKERvd25sb2FkKiwgUU5ldHdvcmtSZXBseSopOworICAgIHZpcnR1YWwgflF0RG93bmxv
YWREZWxlZ2F0ZSgpOworICAgIHZvaWQgc2V0RG93bmxvYWRlcihRdEZpbGVEb3dubG9hZGVyKiBx
dERvd25sb2FkZXIpOworCitwdWJsaWMgc2xvdHM6CisgICAgdm9pZCBvblJlY2VpdmVkRGVzdGlu
YXRpb25TdWdnZXN0aW9uKGNvbnN0IFFTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKTsKKyAgICB2
b2lkIG9uUmVjZWl2ZWRSZXNwb25zZShjb25zdCBRVXJsJiBzb3VyY2VVcmwsIGNvbnN0IFFTdHJp
bmcmIG1pbWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBjb25zdCBRU3Ry
aW5nJiBlbmNvZGluZyk7CisgICAgdm9pZCBvbkNyZWF0ZWREZXN0aW5hdGlvbihjb25zdCBRU3Ry
aW5nJiBwYXRoKTsKKyAgICB2b2lkIG9uUmVjZWl2ZWREYXRhKHFpbnQ2NCBsZW5ndGgpOworICAg
IHZvaWQgb25GaW5pc2hlZCgpOworICAgIHZvaWQgb25FcnJvcihjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiwgY29uc3QgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSYpOworCitwcml2YXRlOgor
ICAgIERvd25sb2FkKiBtX2Rvd25sb2FkOworICAgIFF0RmlsZURvd25sb2FkZXIqIG1fcXREb3du
bG9hZGVyOworICAgIGZyaWVuZCBjbGFzcyBEb3dubG9hZDsKK307CisKK1F0RG93bmxvYWREZWxl
Z2F0ZTo6UXREb3dubG9hZERlbGVnYXRlKERvd25sb2FkKiBkb3dubG9hZCwgUU5ldHdvcmtBY2Nl
c3NNYW5hZ2VyKiBtYW5hZ2VyLCBjb25zdCBRTmV0d29ya1JlcXVlc3QmIHJlcXVlc3QpCisgICAg
OiBtX2Rvd25sb2FkKGRvd25sb2FkKQorICAgICwgbV9xdERvd25sb2FkZXIoMCkKK3sKKyAgICBz
ZXREb3dubG9hZGVyKG5ldyBRdEZpbGVEb3dubG9hZGVyKG1hbmFnZXIsIHJlcXVlc3QpKTsKK30K
KworUXREb3dubG9hZERlbGVnYXRlOjpRdERvd25sb2FkRGVsZWdhdGUoRG93bmxvYWQqIGRvd25s
b2FkLCBRTmV0d29ya1JlcGx5KiByZXBseSkKKyAgICA6IG1fZG93bmxvYWQoZG93bmxvYWQpCisg
ICAgLCBtX3F0RG93bmxvYWRlcigwKQoreworICAgIHNldERvd25sb2FkZXIobmV3IFF0RmlsZURv
d25sb2FkZXIocmVwbHkpKTsKK30KKworUXREb3dubG9hZERlbGVnYXRlOjp+UXREb3dubG9hZERl
bGVnYXRlKCkKK3sKKyAgICBtX3F0RG93bmxvYWRlci0+ZGVsZXRlTGF0ZXIoKTsKK30KKwordm9p
ZCBRdERvd25sb2FkRGVsZWdhdGU6OnNldERvd25sb2FkZXIoUXRGaWxlRG93bmxvYWRlciogcXRE
b3dubG9hZGVyKQoreworICAgIG1fcXREb3dubG9hZGVyID0gcXREb3dubG9hZGVyOworICAgIGNv
bm5lY3QobV9xdERvd25sb2FkZXIsIFNJR05BTChyZWNlaXZlZFJlc3BvbnNlKFFVcmwsIFFTdHJp
bmcsIGxvbmcgbG9uZywgUVN0cmluZykpLCAgU0xPVChvblJlY2VpdmVkUmVzcG9uc2UoUVVybCwg
UVN0cmluZywgbG9uZyBsb25nLCBRU3RyaW5nKSkpOworICAgIGNvbm5lY3QobV9xdERvd25sb2Fk
ZXIsIFNJR05BTChyZWNlaXZlZERlc3RpbmF0aW9uU3VnZ2VzdGlvbihRU3RyaW5nKSksIFNMT1Qo
b25SZWNlaXZlZERlc3RpbmF0aW9uU3VnZ2VzdGlvbihRU3RyaW5nKSkpOworICAgIGNvbm5lY3Qo
bV9xdERvd25sb2FkZXIsIFNJR05BTChjcmVhdGVkRGVzdGluYXRpb24oUVN0cmluZykpLCAgU0xP
VChvbkNyZWF0ZWREZXN0aW5hdGlvbihRU3RyaW5nKSkpOworICAgIGNvbm5lY3QobV9xdERvd25s
b2FkZXIsIFNJR05BTChyZWNlaXZlZERhdGEocWludDY0KSksIFNMT1Qob25SZWNlaXZlZERhdGEo
cWludDY0KSkpOworICAgIGNvbm5lY3QobV9xdERvd25sb2FkZXIsIFNJR05BTChmaW5pc2hlZCgp
KSwgU0xPVChvbkZpbmlzaGVkKCkpKTsKKyAgICBjb25uZWN0KG1fcXREb3dubG9hZGVyLCBTSUdO
QUwoZXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IENvcmVJUEM6OkRh
dGFSZWZlcmVuY2UmKSksIFNMT1Qob25FcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JiwgY29uc3QgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSYpKSk7CisgICAgbV9xdERvd25sb2FkZXIt
PnN0YXJ0KCk7Cit9CisKK3ZvaWQgUXREb3dubG9hZERlbGVnYXRlOjpvblJlY2VpdmVkRGVzdGlu
YXRpb25TdWdnZXN0aW9uKGNvbnN0IFFTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKQoreworICAg
IGJvb2wgYWxsb3dPdmVyd3JpdGU7CisgICAgbV9kb3dubG9hZC0+ZGVjaWRlRGVzdGluYXRpb25X
aXRoU3VnZ2VzdGVkRmlsZW5hbWUoc3VnZ2VzdGVkRmlsZU5hbWUsIGFsbG93T3ZlcndyaXRlKTsK
K30KKwordm9pZCBRdERvd25sb2FkRGVsZWdhdGU6Om9uUmVjZWl2ZWRSZXNwb25zZShjb25zdCBR
VXJsJiBzb3VyY2VVcmwsIGNvbnN0IFFTdHJpbmcmIG1pbWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0
ZWRMZW5ndGgsIGNvbnN0IFFTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpCit7CisgICAgUmVzb3Vy
Y2VSZXNwb25zZSByZXNwb25zZShzb3VyY2VVcmwsIG1pbWVUeXBlLCBleHBlY3RlZExlbmd0aCwg
dGV4dEVuY29kaW5nTmFtZSwgU3RyaW5nKCkpOworICAgIG1fZG93bmxvYWQtPmRpZFJlY2VpdmVS
ZXNwb25zZShyZXNwb25zZSk7Cit9CisKK3ZvaWQgUXREb3dubG9hZERlbGVnYXRlOjpvbkNyZWF0
ZWREZXN0aW5hdGlvbihjb25zdCBRU3RyaW5nJiBmaWxlUGF0aCkKK3sKKyAgICBtX2Rvd25sb2Fk
LT5kaWRDcmVhdGVEZXN0aW5hdGlvbihmaWxlUGF0aCk7Cit9CisKK3ZvaWQgUXREb3dubG9hZERl
bGVnYXRlOjpvblJlY2VpdmVkRGF0YShxaW50NjQgbGVuZ3RoKQoreworICAgIG1fZG93bmxvYWQt
PmRpZFJlY2VpdmVEYXRhKGxlbmd0aCk7Cit9CisKK3ZvaWQgUXREb3dubG9hZERlbGVnYXRlOjpv
bkZpbmlzaGVkKCkKK3sKKyAgICBtX2Rvd25sb2FkLT5kaWRGaW5pc2goKTsKK30KKwordm9pZCBR
dERvd25sb2FkRGVsZWdhdGU6Om9uRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYg
ZXJyb3IsIGNvbnN0IENvcmVJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEpCit7CisgICAg
bV9kb3dubG9hZC0+ZGlkRmFpbChlcnJvciwgcmVzdW1lRGF0YSk7Cit9CisKKwogdm9pZCBEb3du
bG9hZDo6c3RhcnQoV2ViUGFnZSogaW5pdGlhdGluZ1dlYlBhZ2UpCiB7Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICBRTmV0d29ya0FjY2Vzc01hbmFnZXIqIG1hbmFnZXIgPSBXZWJQcm9jZXNz
OjpzaGFyZWQoKS5uZXR3b3JrQWNjZXNzTWFuYWdlcigpOworICAgIEFTU0VSVChtYW5hZ2VyKTsK
KyAgICBBU1NFUlQoIW1fZG93bmxvYWREZWxlZ2F0ZSk7CisKKyAgICBtX2Rvd25sb2FkRGVsZWdh
dGUgPSBuZXcgUXREb3dubG9hZERlbGVnYXRlKHRoaXMsIG1hbmFnZXIsIG1fcmVxdWVzdC50b05l
dHdvcmtSZXF1ZXN0KDApKTsKIH0KIAotdm9pZCBEb3dubG9hZDo6c3RhcnRXaXRoSGFuZGxlKFdl
YlBhZ2UqIGluaXRpYXRpbmdQYWdlLCBSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgaW5pdGlhbFJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQordm9pZCBEb3du
bG9hZDo6c3RhcnRXaXRoSGFuZGxlKFdlYlBhZ2UqIGluaXRpYXRpbmdQYWdlLCBSZXNvdXJjZUhh
bmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGluaXRpYWxSZXF1ZXN0LCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
bV9kb3dubG9hZERlbGVnYXRlID0gbmV3IFF0RG93bmxvYWREZWxlZ2F0ZSh0aGlzLCBoYW5kbGUt
PmdldEludGVybmFsKCktPm1fam9iLT5yZWxlYXNlKCkpOwogfQogCiB2b2lkIERvd25sb2FkOjpj
YW5jZWwoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgUU1ldGFPYmplY3Q6Omludm9r
ZU1ldGhvZChtX2Rvd25sb2FkRGVsZWdhdGUtPm1fcXREb3dubG9hZGVyLCAib25DYW5jZWwiLCBR
dDo6UXVldWVkQ29ubmVjdGlvbik7CiB9CiAKIHZvaWQgRG93bmxvYWQ6OnBsYXRmb3JtSW52YWxp
ZGF0ZSgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBRX0FTU0VSVChtX2Rvd25sb2Fk
RGVsZWdhdGUpOworICAgIGRlbGV0ZSBtX2Rvd25sb2FkRGVsZWdhdGU7CisgICAgbV9kb3dubG9h
ZERlbGVnYXRlID0gMDsKIH0KIAogdm9pZCBEb3dubG9hZDo6ZGlkRGVjaWRlRGVzdGluYXRpb24o
Y29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbiwgYm9vbCBhbGxvd092ZXJ3cml0ZSkKIHsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIFFNZXRhT2JqZWN0OjppbnZva2VNZXRob2QobV9kb3dubG9h
ZERlbGVnYXRlLT5tX3F0RG93bmxvYWRlciwgIm9uRGVjaWRlZERlc3RpbmF0aW9uIiwgUXQ6OlF1
ZXVlZENvbm5lY3Rpb24sIFFfQVJHKFFTdHJpbmcsIGRlc3RpbmF0aW9uKSwgUV9BUkcoYm9vbCwg
YWxsb3dPdmVyd3JpdGUpKTsKIH0KIAogdm9pZCBEb3dubG9hZDo6cGxhdGZvcm1EaWRGaW5pc2go
KQpAQCAtNzgsMyArMTc3LDQgQEAgdm9pZCBEb3dubG9hZDo6cmVjZWl2ZWRDYW5jZWxsYXRpb24o
Y29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW8KIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisjaW5jbHVkZSAiRG93bmxvYWRRdC5tb2MiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3dubG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L1F0RmlsZURvd25sb2Fk
ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjEwYTBhYWZlYTUwZWJiNzQzMzI4MzFiZmNlZjgzNzkwYzk3OGVk
YmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fk
cy9xdC9RdEZpbGVEb3dubG9hZGVyLmNwcApAQCAtMCwwICsxLDI1OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWll
cykKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBw
cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdp
dGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgor
ICovCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUXRGaWxlRG93bmxvYWRlci5oIgor
CisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIkRvd25sb2FkLmgiCisjaW5j
bHVkZSAiSFRUUFBhcnNlcnMuaCIKKyNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW5j
bHVkZSA8UUNvcmVBcHBsaWNhdGlvbj4KKyNpbmNsdWRlIDxRRmlsZT4KKyNpbmNsdWRlIDxRRmls
ZUluZm8+CisjaW5jbHVkZSA8UU5ldHdvcmtBY2Nlc3NNYW5hZ2VyPgorI2luY2x1ZGUgPFdlYkNv
cmUvUU5ldHdvcmtSZXBseUhhbmRsZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJy
b3IuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitRdEZpbGVEb3dubG9hZGVyOjpRdEZpbGVEb3dubG9hZGVyKFFOZXR3b3JrQWNjZXNzTWFuYWdl
ciogbWFuYWdlciwgY29uc3QgUU5ldHdvcmtSZXF1ZXN0JiByZXF1ZXN0KQorICAgIDogbV9tYW5h
Z2VyKG1hbmFnZXIpCisgICAgLCBtX3JlcXVlc3QocmVxdWVzdCkKKyAgICAsIG1fcmVwbHkoMCkK
KyAgICAsIG1fZGVzdGluYXRpb25GaWxlKG5ldyBRRmlsZShRU3RyaW5nOjpmcm9tQXNjaWkoMCkp
KQorICAgICwgbV9lcnJvcihRTmV0d29ya1JlcGx5OjpOb0Vycm9yKQorICAgICwgbV9oZWFkZXJz
UmVhZChmYWxzZSkKK3sKKyAgICBtb3ZlVG9UaHJlYWQobWFuYWdlci0+dGhyZWFkKCkpOworICAg
IGNvbm5lY3QodGhpcywgU0lHTkFMKHN0YXJ0UmVxdWVzdGVkKCkpLCBTTE9UKHNlbmRSZXF1ZXN0
KCkpKTsKK30KKworUXRGaWxlRG93bmxvYWRlcjo6UXRGaWxlRG93bmxvYWRlcihRTmV0d29ya1Jl
cGx5KiByZXBseSkKKyAgICA6IG1fbWFuYWdlcihyZXBseS0+bWFuYWdlcigpKQorICAgICwgbV9y
ZXF1ZXN0KHJlcGx5LT5yZXF1ZXN0KCkpCisgICAgLCBtX3JlcGx5KHJlcGx5KQorICAgICwgbV9k
ZXN0aW5hdGlvbkZpbGUobmV3IFFGaWxlKFFTdHJpbmc6OmZyb21Bc2NpaSgwKSkpCisgICAgLCBt
X2Vycm9yKFFOZXR3b3JrUmVwbHk6Ok5vRXJyb3IpCisgICAgLCBtX2hlYWRlcnNSZWFkKGZhbHNl
KQoreworICAgIG1vdmVUb1RocmVhZChyZXBseS0+dGhyZWFkKCkpOworCisgICAgY29ubmVjdCh0
aGlzLCBTSUdOQUwoc3RhcnRSZXF1ZXN0ZWQoKSksIFNMT1QoYWRvcHRSZXBseSgpKSk7CisgICAg
Ly8gQ29ubmVjdCBzdGFydFJlcXVlc3RlZCB0byByZWFkeVJlYWQgaW4gY2FzZSBzb21lIGRhdGEg
d291bGQgYmUgd2FpdGluZy4KKyAgICBjb25uZWN0KHRoaXMsIFNJR05BTChzdGFydFJlcXVlc3Rl
ZCgpKSwgU0xPVChvblJlYWR5UmVhZCgpKSk7Cit9CisKK1F0RmlsZURvd25sb2FkZXI6On5RdEZp
bGVEb3dubG9hZGVyKCkKK3sKKyAgICBpZiAobV9kZXN0aW5hdGlvbkZpbGUpCisgICAgICAgIGFi
b3J0RG93bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKFJlc291cmNlRXJyb3IoIkRvd25sb2FkIiwg
LTYsIG1fcmVwbHktPnVybCgpLnRvU3RyaW5nKCksICJEb3dubG9hZCBjYW5jZWxsZWQiKSk7Cisg
ICAgZGVsZXRlIG1fcmVwbHk7Cit9CisKK3ZvaWQgUXRGaWxlRG93bmxvYWRlcjo6c3RhcnQoKQor
eworICAgIGVtaXQgc3RhcnRSZXF1ZXN0ZWQoKTsKK30KKwordm9pZCBRdEZpbGVEb3dubG9hZGVy
OjpzZW5kUmVxdWVzdCgpCit7CisgICAgbV9yZXBseSA9IG1fbWFuYWdlci0+Z2V0KG1fcmVxdWVz
dCk7CisgICAgYWRvcHRSZXBseSgpOworfQorCit2b2lkIFF0RmlsZURvd25sb2FkZXI6OmFkb3B0
UmVwbHkoKQoreworICAgIG1fcmVwbHktPnNldFBhcmVudCgwKTsKKworICAgIGNvbm5lY3QobV9y
ZXBseSwgU0lHTkFMKHJlYWR5UmVhZCgpKSwgU0xPVChvblJlYWR5UmVhZCgpKSk7CisgICAgY29u
bmVjdChtX3JlcGx5LCBTSUdOQUwoZmluaXNoZWQoKSksIFNMT1Qob25GaW5pc2hlZCgpKSk7Cisg
ICAgY29ubmVjdChtX3JlcGx5LCBTSUdOQUwoZXJyb3IoUU5ldHdvcmtSZXBseTo6TmV0d29ya0Vy
cm9yKSksIFNMT1Qob25FcnJvcihRTmV0d29ya1JlcGx5OjpOZXR3b3JrRXJyb3IpKSk7Cit9CisK
K3ZvaWQgUXRGaWxlRG93bmxvYWRlcjo6ZGV0ZXJtaW5lRmlsZW5hbWUoKQoreworICAgIFFfQVNT
RVJUKCFtX2Rlc3RpbmF0aW9uRmlsZSk7CisKKyAgICBRU3RyaW5nIGZpbGVOYW1lOworICAgIFFT
dHJpbmcgZmlsZU5hbWVDYW5kaWRhdGUgPSBmaWxlbmFtZUZyb21IVFRQQ29udGVudERpc3Bvc2l0
aW9uKFFTdHJpbmc6OmZyb21Bc2NpaShtX3JlcGx5LT5yYXdIZWFkZXIoIkNvbnRlbnQtRGlzcG9z
aXRpb24iKSkpOworICAgIGlmIChmaWxlTmFtZUNhbmRpZGF0ZS5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgS1VSTCBrdXJsID0gbV9yZXBseS0+dXJsKCk7CisgICAgICAgIGZpbGVOYW1lQ2FuZGlkYXRl
ID0gZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKGt1cmwubGFzdFBhdGhDb21wb25lbnQoKSk7Cisg
ICAgfQorCisgICAgaWYgKGZpbGVOYW1lQ2FuZGlkYXRlLmlzRW1wdHkoKSkgeworICAgICAgICBt
X3JlcGx5LT5hYm9ydCgpOworICAgICAgICBSZXNvdXJjZUVycm9yIGRvd25sb2FkRXJyb3IoIkRv
d25sb2FkIiwgUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvckZpbGVuYW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9yZXBseS0+dXJsKCkudG9TdHJpbmcoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFDb3JlQXBwbGljYXRpb246OnRy
YW5zbGF0ZSgiUXRGaWxlRG93bmxvYWRlciIsICJDYW5ub3QgZGV0ZXJtaW5lIHNhdmVkIGZpbGVu
YW1lIikpOworICAgICAgICBlbWl0IGVycm9yKGRvd25sb2FkRXJyb3IsIENvcmVJUEM6OkRhdGFS
ZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obV9yZXBseS0+cmVhZEFs
bCgpLmRhdGEoKSksIG1fcmVwbHktPnNpemUoKSArIDEpKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHdlIHJlbW92ZSBwb3NzaWJsZSAiLi4vLi4iIHBh
cnRzIGluIHRoZSBnaXZlbiBmaWxlIG5hbWUuCisgICAgUUZpbGVJbmZvIGZpbGVOYW1lRmlsdGVy
KGZpbGVOYW1lQ2FuZGlkYXRlKTsKKyAgICBmaWxlTmFtZSA9IGZpbGVOYW1lRmlsdGVyLmZpbGVO
YW1lKCk7CisKKyAgICBpZiAoZmlsZU5hbWUuaXNFbXB0eSgpKSB7CisgICAgICAgIG1fcmVwbHkt
PmFib3J0KCk7CisgICAgICAgIFJlc291cmNlRXJyb3IgZG93bmxvYWRFcnJvcigiRG93bmxvYWQi
LCBRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9yRmlsZW5hbWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX3JlcGx5LT51cmwoKS50b1N0cmluZygpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRl
KCJRdEZpbGVEb3dubG9hZGVyIiwgIkNhbm5vdCBkZXRlcm1pbmUgc2F2ZWQgZmlsZW5hbWUiKSk7
CisgICAgICAgIGVtaXQgZXJyb3IoZG93bmxvYWRFcnJvciwgQ29yZUlQQzo6RGF0YVJlZmVyZW5j
ZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtX3JlcGx5LT5yZWFkQWxsKCkuZGF0
YSgpKSwgbV9yZXBseS0+c2l6ZSgpICsgMSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgZW1pdCByZWNlaXZlZERlc3RpbmF0aW9uU3VnZ2VzdGlvbihmaWxlTmFtZSk7Cit9CisKK3Zv
aWQgUXRGaWxlRG93bmxvYWRlcjo6b25EZWNpZGVkRGVzdGluYXRpb24oY29uc3QgUVN0cmluZyYg
ZGVjaWRlZEZpbGVQYXRoLCBib29sIGFsbG93T3ZlcndyaXRlKQoreworICAgIFFfQVNTRVJUKCFt
X2Rlc3RpbmF0aW9uRmlsZSk7CisKKyAgICAvLyBFcnJvciBtaWdodCBoYXZlIG9jY3VyZWQgZHVy
aW5nIGRlc3RpbmF0aW9uIHF1ZXJ5LgorICAgIGlmIChtX2Vycm9yICE9IFFOZXR3b3JrUmVwbHk6
Ok5vRXJyb3IpIHsKKyAgICAgICAgbV9yZXBseS0+YWJvcnQoKTsKKyAgICAgICAgZW1pdCBlcnJv
cihRTmV0d29ya1JlcGx5SGFuZGxlcjo6ZXJyb3JGb3JSZXBseShtX3JlcGx5KSwgQ29yZUlQQzo6
RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtX3JlcGx5LT5y
ZWFkQWxsKCkuZGF0YSgpKSwgbV9yZXBseS0+c2l6ZSgpKSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBpZiAoZGVjaWRlZEZpbGVQYXRoLmlzRW1wdHkoKSkgeworICAgICAgICBtX3Jl
cGx5LT5hYm9ydCgpOworICAgICAgICBSZXNvdXJjZUVycm9yIGRvd25sb2FkRXJyb3IoIkRvd25s
b2FkIiwgUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvckNhbmNlbGxlZEJ5Q2FsbGVyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9yZXBseS0+dXJsKCkudG9TdHJp
bmcoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFDb3JlQXBwbGljYXRp
b246OnRyYW5zbGF0ZSgiUXRGaWxlRG93bmxvYWRlciIsICJEb3dubG9hZCBjYW5jZWxsZWQgYnkg
Y2FsbGVyIikpOworICAgICAgICBlbWl0IGVycm9yKGRvd25sb2FkRXJyb3IsIENvcmVJUEM6OkRh
dGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obV9yZXBseS0+cmVh
ZEFsbCgpLmRhdGEoKSksIG1fcmVwbHktPnNpemUoKSArIDEpKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIFFGaWxlKiBkb3dubG9hZEZpbGUgPSBuZXcgUUZpbGUoZGVjaWRlZEZpbGVQ
YXRoKTsKKworICAgIGlmICghYWxsb3dPdmVyd3JpdGUgJiYgZG93bmxvYWRGaWxlLT5leGlzdHMo
KSkgeworICAgICAgICBkZWxldGUgZG93bmxvYWRGaWxlOworICAgICAgICBtX3JlcGx5LT5hYm9y
dCgpOworICAgICAgICBSZXNvdXJjZUVycm9yIGRvd25sb2FkRXJyb3IoIkRvd25sb2FkIiwgUXRG
aWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvckZpbGVBbHJlYWR5RXhpc3RzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9yZXBseS0+dXJsKCkudG9TdHJpbmcoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFDb3JlQXBwbGljYXRpb246OnRyYW5z
bGF0ZSgiUXRGaWxlRG93bmxvYWRlciIsICJGaWxlIGFscmVhZHkgZXhpc3RzIikpOworICAgICAg
ICBlbWl0IGVycm9yKGRvd25sb2FkRXJyb3IsIENvcmVJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obV9yZXBseS0+cmVhZEFsbCgpLmRhdGEoKSksIG1f
cmVwbHktPnNpemUoKSArIDEpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEZJ
WE1FOiBoZXJlJ3MgYSByYWNlIGNvbmRpdGlvbiBkdWUgdG8gcXQgYXBpIG5vdCBhbGxvd2luZwor
ICAgIC8vIGZpbGVzIHRvIGJlIGNyZWF0ZWQgb25seSBpZiB0aGV5IGRvbid0IGV4aXN0CisKKyAg
ICBpZiAoIWRvd25sb2FkRmlsZS0+b3BlbihRSU9EZXZpY2U6OldyaXRlT25seSB8IFFJT0Rldmlj
ZTo6VHJ1bmNhdGUpKSB7CisgICAgICAgIGRlbGV0ZSBkb3dubG9hZEZpbGU7CisgICAgICAgIG1f
cmVwbHktPmFib3J0KCk7CisgICAgICAgIFJlc291cmNlRXJyb3IgZG93bmxvYWRFcnJvcigiRG93
bmxvYWQiLCBRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9yQ2Fubm90T3BlbkZpbGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3JlcGx5LT51cmwoKS50b1N0cmlu
ZygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUNvcmVBcHBsaWNhdGlv
bjo6dHJhbnNsYXRlKCJRdEZpbGVEb3dubG9hZGVyIiwgIkNhbm5vdCBvcGVuIGZpbGUgZm9yIHdy
aXRpbmciKSk7CisgICAgICAgZW1pdCBlcnJvcihkb3dubG9hZEVycm9yLCBDb3JlSVBDOjpEYXRh
UmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fcmVwbHktPnJlYWRB
bGwoKS5kYXRhKCkpLCBtX3JlcGx5LT5zaXplKCkgKyAxKSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICAvLyBBc3NpZ25pbmcgdG8gbV9kZXN0aW5hdGlvbkZpbGUgZmxhZ3MgdGhhdCBl
aXRoZXIgZXJyb3Igb3IKKyAgICAvLyBmaW5pc2hlZCBzaGFsbCBiZSBjYWxsZWQgaW4gdGhlIGVu
ZC4KKyAgICBtX2Rlc3RpbmF0aW9uRmlsZSA9IGRvd25sb2FkRmlsZTsKKworICAgIGVtaXQgY3Jl
YXRlZERlc3RpbmF0aW9uKG1fZGVzdGluYXRpb25GaWxlLT5maWxlTmFtZSgpKTsKKworICAgIC8v
IFdlIG1pZ2h0IGhhdmUgZ290dGVuIHJlYWR5UmVhZCBhbHJlYWR5IGV2ZW4gYmVmb3JlIHRoaXMg
ZnVuY3Rpb24KKyAgICAvLyB3YXMgY2FsbGVkLgorICAgIGlmIChtX3JlcGx5LT5ieXRlc0F2YWls
YWJsZSgpKQorICAgICAgICBvblJlYWR5UmVhZCgpOworCisgICAgLy8gV2UgbWlnaHQgaGF2ZSBn
b3R0ZW4gZmluaXNoZWQgYWxyZWFkeSBldmVuIGJlZm9yZSB0aGlzCisgICAgLy8gZnVuY3Rpb24g
d2FzIGNhbGxlZC4KKyAgICBpZiAobV9yZXBseS0+aXNGaW5pc2hlZCgpKQorICAgICAgICBvbkZp
bmlzaGVkKCk7CisKK30KKwordm9pZCBRdEZpbGVEb3dubG9hZGVyOjphYm9ydERvd25sb2FkV3Jp
dGluZ0FuZEVtaXRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvckNvZGUpCit7CisgICAg
ZGVsZXRlIG1fZGVzdGluYXRpb25GaWxlOworICAgIG1fZGVzdGluYXRpb25GaWxlID0gMDsKKyAg
ICBtX3JlcGx5LT5hYm9ydCgpOworICAgIGVtaXQgZXJyb3IoZXJyb3JDb2RlLCBDb3JlSVBDOjpE
YXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fcmVwbHktPnJl
YWRBbGwoKS5kYXRhKCkpLCBtX3JlcGx5LT5zaXplKCkgKyAxKSk7Cit9CisKKwordm9pZCBRdEZp
bGVEb3dubG9hZGVyOjpvblJlYWR5UmVhZCgpCit7CisgICAgaWYgKG1fZGVzdGluYXRpb25GaWxl
KSB7CisgICAgICAgIFFCeXRlQXJyYXkgY29udGVudCA9IG1fcmVwbHktPnJlYWRBbGwoKTsKKyAg
ICAgICAgaWYgKGNvbnRlbnQuc2l6ZSgpIDw9IDApCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgcWludDY0IGJ5dGVzV3JpdHRlbiA9IG1fZGVzdGluYXRpb25GaWxlLT53cml0ZShjb250
ZW50KTsKKworICAgICAgICBpZiAoYnl0ZXNXcml0dGVuID09IC0xIHx8IGJ5dGVzV3JpdHRlbiAh
PSBjb250ZW50LnNpemUoKSkgeworICAgICAgICAgICAgYWJvcnREb3dubG9hZFdyaXRpbmdBbmRF
bWl0RXJyb3IoUmVzb3VyY2VFcnJvcigiRG93bmxvYWQiLCAtNSwgbV9yZXBseS0+dXJsKCkudG9T
dHJpbmcoKSwgIlVuYWJsZSB0byB3cml0ZSIpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIGVtaXQgcmVjZWl2ZWREYXRhKGJ5dGVzV3JpdHRlbik7CisgICAgfSBl
bHNlIGlmICghbV9oZWFkZXJzUmVhZCkgeworICAgICAgICAvLyBCeSBBUEkgY29udHJhY3QsIFFO
ZXR3b3JrUmVwbHk6Om1ldGFEYXRhQ2hhbmdlZCBjYW5ub3QgcmVhbGx5IGJlIHRydXN0ZWQuCisg
ICAgICAgIC8vIFRodXMgd2UgbmVlZCB0byBjYWxsIHRoaXMgdXBvbiByZWNlaXZpbmcgZmlyc3Qg
ZGF0YS4KKyAgICAgICAgV1RGOjpTdHJpbmcgY29udGVudFR5cGUgPSBtX3JlcGx5LT5oZWFkZXIo
UU5ldHdvcmtSZXF1ZXN0OjpDb250ZW50VHlwZUhlYWRlcikudG9TdHJpbmcoKTsKKyAgICAgICAg
V1RGOjpTdHJpbmcgZW5jb2RpbmcgPSBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVu
dFR5cGUpOworICAgICAgICBXVEY6OlN0cmluZyBtaW1lVHlwZSA9IGV4dHJhY3RNSU1FVHlwZUZy
b21NZWRpYVR5cGUoY29udGVudFR5cGUpOworCisgICAgICAgIC8vIExldCdzIHRyeSB0byBndWVz
cyBmcm9tIHRoZSBleHRlbnNpb24uCisgICAgICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5KCkpCisg
ICAgICAgICAgICBtaW1lVHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yUGF0
aChtX3JlcGx5LT51cmwoKS5wYXRoKCkpOworCisgICAgICAgIGVtaXQgcmVjZWl2ZWRSZXNwb25z
ZShtX3JlcGx5LT51cmwoKSwgbWltZVR5cGUsIG1fcmVwbHktPmhlYWRlcihRTmV0d29ya1JlcXVl
c3Q6OkNvbnRlbnRMZW5ndGhIZWFkZXIpLnRvTG9uZ0xvbmcoKSwgZW5jb2RpbmcpOworCisgICAg
ICAgIGRldGVybWluZUZpbGVuYW1lKCk7CisKKyAgICAgICAgbV9oZWFkZXJzUmVhZCA9IHRydWU7
CisgICAgfQorfQorCit2b2lkIFF0RmlsZURvd25sb2FkZXI6Om9uRmluaXNoZWQoKQoreworICAg
IGlmIChtX2Rlc3RpbmF0aW9uRmlsZSkgeworICAgICAgICBtX2Rlc3RpbmF0aW9uRmlsZS0+Y2xv
c2UoKTsKKyAgICAgICAgZGVsZXRlIG1fZGVzdGluYXRpb25GaWxlOworICAgICAgICBtX2Rlc3Rp
bmF0aW9uRmlsZSA9IDA7CisKKyAgICAgICAgaWYgKG1fZXJyb3IgPT0gUU5ldHdvcmtSZXBseTo6
Tm9FcnJvcikKKyAgICAgICAgICAgIGVtaXQgZmluaXNoZWQoKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgZW1pdCBlcnJvcihRTmV0d29ya1JlcGx5SGFuZGxlcjo6ZXJyb3JGb3JSZXBseSht
X3JlcGx5KSwgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihtX3JlcGx5LT5yZWFkQWxsKCkuZGF0YSgpKSwgbV9yZXBseS0+c2l6ZSgpICsgMSkp
OworICAgIH0KK30KKwordm9pZCBRdEZpbGVEb3dubG9hZGVyOjpvbkVycm9yKFFOZXR3b3JrUmVw
bHk6Ok5ldHdvcmtFcnJvciBjb2RlKQoreworICAgIG1fZXJyb3IgPSBjb2RlOworfQorCit2b2lk
IFF0RmlsZURvd25sb2FkZXI6Om9uQ2FuY2VsKCkKK3sKKyAgICBtX3JlcGx5LT5hYm9ydCgpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjNlZWI1OTM5OGJhOGVmMTZiMWI0ODFiN2IzZGMwNTllYjE4M2UwNmUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3dubG9h
ZGVyLmgKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIHByb2dy
YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
ICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgUXRGaWxl
RG93bmxvYWRlcl9oCisjZGVmaW5lIFF0RmlsZURvd25sb2FkZXJfaAorCisjaW5jbHVkZSA8UU5l
dHdvcmtSZXBseT4KKyNpbmNsdWRlIDxRTmV0d29ya1JlcXVlc3Q+CisKK2NsYXNzIFFGaWxlOwor
Y2xhc3MgUU5ldHdvcmtBY2Nlc3NNYW5hZ2VyOworY2xhc3MgUU5ldHdvcmtSZXF1ZXN0OworCitu
YW1lc3BhY2UgQ29yZUlQQyB7CitjbGFzcyBEYXRhUmVmZXJlbmNlOworfQorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CitjbGFzcyBSZXNvdXJjZUVycm9yOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworLy8gUXRGaWxlRG93bmxvYWRlciBoYXMgdG8gYmUgYWZmaW5lZCB0byB0aGUgc2FtZSB0aHJl
YWQgYXMgdGhlIFFOZXR3b3JrQWNjZXNzTWFuYWdlcgorY2xhc3MgUXRGaWxlRG93bmxvYWRlciA6
IHB1YmxpYyBRT2JqZWN0IHsKKyAgICBRX09CSkVDVAorcHVibGljOgorICAgIFF0RmlsZURvd25s
b2FkZXIoUU5ldHdvcmtBY2Nlc3NNYW5hZ2VyKiwgY29uc3QgUU5ldHdvcmtSZXF1ZXN0Jik7Cisg
ICAgUXRGaWxlRG93bmxvYWRlcihRTmV0d29ya1JlcGx5Kik7CisgICAgdmlydHVhbCB+UXRGaWxl
RG93bmxvYWRlcigpOworICAgIHZvaWQgc3RhcnQoKTsKKworICAgIGVudW0gRG93bmxvYWRFcnJv
ciB7CisgICAgICAgIERvd25sb2FkRXJyb3JDYW5ub3RPcGVuRmlsZSA9IC00LAorICAgICAgICBE
b3dubG9hZEVycm9yRmlsZUFscmVhZHlFeGlzdHMgPSAtMywKKyAgICAgICAgRG93bmxvYWRFcnJv
ckNhbmNlbGxlZEJ5Q2FsbGVyID0gLTIsCisgICAgICAgIERvd25sb2FkRXJyb3JGaWxlbmFtZSA9
IC0xCisgICAgfTsKKworc2lnbmFsczoKKyAgICB2b2lkIHN0YXJ0UmVxdWVzdGVkKCk7CisgICAg
dm9pZCByZWNlaXZlZFJlc3BvbnNlKGNvbnN0IFFVcmwmIHNvdXJjZVVybCwgY29uc3QgUVN0cmlu
ZyYgbWltZVR5cGUsIGxvbmcgbG9uZyBleHBlY3RlZExlbmd0aCwgY29uc3QgUVN0cmluZyYgdGV4
dEVuY29kaW5nTmFtZSk7CisgICAgdm9pZCByZWNlaXZlZERlc3RpbmF0aW9uU3VnZ2VzdGlvbihj
b25zdCBRU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSk7CisgICAgdm9pZCBjcmVhdGVkRGVzdGlu
YXRpb24oY29uc3QgUVN0cmluZyYgZmlsZVBhdGgpOworICAgIHZvaWQgcmVjZWl2ZWREYXRhKHFp
bnQ2NCBsZW5ndGgpOworICAgIHZvaWQgZmluaXNoZWQoKTsKKyAgICB2b2lkIGVycm9yKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yQ29kZSwgY29uc3QgQ29yZUlQQzo6RGF0YVJl
ZmVyZW5jZSYgcmVzdW1lRGF0YSk7CisKK3ByaXZhdGUgc2xvdHM6CisgICAgLy8gY2FsbGVkIGZy
b20gbWFpbiB0aHJlYWQKKyAgICB2b2lkIG9uRGVjaWRlZERlc3RpbmF0aW9uKGNvbnN0IFFTdHJp
bmcmIGRlY2lkZWRGaWxlUGF0aCwgYm9vbCBhbGxvd092ZXJ3cml0ZSk7CisgICAgdm9pZCBvbkNh
bmNlbCgpOworICAgIC8vIGNhbGxlZCBieSB0aGlzIGltcGwKKyAgICB2b2lkIHNlbmRSZXF1ZXN0
KCk7CisgICAgdm9pZCBhZG9wdFJlcGx5KCk7CisgICAgdm9pZCBvblJlYWR5UmVhZCgpOworICAg
IHZvaWQgb25GaW5pc2hlZCgpOworICAgIHZvaWQgb25FcnJvcihRTmV0d29ya1JlcGx5OjpOZXR3
b3JrRXJyb3IgY29kZSk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBhYm9ydERvd25sb2FkV3JpdGlu
Z0FuZEVtaXRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvckNvZGUpOwor
ICAgIHZvaWQgZGV0ZXJtaW5lRmlsZW5hbWUoKTsKKworICAgIFFOZXR3b3JrQWNjZXNzTWFuYWdl
ciogbV9tYW5hZ2VyOworICAgIFFOZXR3b3JrUmVxdWVzdCBtX3JlcXVlc3Q7CisgICAgUU5ldHdv
cmtSZXBseSogbV9yZXBseTsKKyAgICBRRmlsZSogbV9kZXN0aW5hdGlvbkZpbGU7CisgICAgUU5l
dHdvcmtSZXBseTo6TmV0d29ya0Vycm9yIG1fZXJyb3I7CisgICAgYm9vbCBtX2hlYWRlcnNSZWFk
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107646</attachid>
            <date>2011-09-16 07:15:43 -0700</date>
            <delta_ts>2011-09-16 15:33:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68153-20110916111525.patch</filename>
            <type>text/plain</type>
            <size>24675</size>
            <attacher name="Jesus Sanchez-Palencia">jesus</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTUxOTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkZmM1YWQ2MWIxODg0OThi
MzIwZWU3YTkzMjgxZWFiMTRiZmYzYjFkLi5iMDE2YzNjM2ZjNGM5YTFmN2YwMDZjYWUzYjNkOGQ2
MDZiNDI3NjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDktMTUgIEplc3Vz
IFNhbmNoZXotUGFsZW5jaWEgIDxqZXN1cy5wYWxlbmNpYUBvcGVuYm9zc2Eub3JnPgorCisgICAg
ICAgIFtRdF1bV0syXSBJbXBsZW1lbnQgRG93bmxvYWQgc3VwcG9ydCBpbiBXZWJQcm9jZXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODE1MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yZWQg
UU5ldHdvcmtSZXBseUhhbmRsZXI6OmZpbmlzaCgpIGluIG9yZGVyIHRvIGFkZAorICAgICAgICBh
bmQgdXNlIHRoZSBzdGF0aWMgZnVuY3Rpb24gUU5ldHdvcmtSZXBseUhhbmRsZXI6OmVycm9yRm9y
UmVwbHkoKS4KKyAgICAgICAgVGhpcyB3aWxsIGJlIHVzZWQgYnkgb3VyIERvd25sb2FkIGltcGxl
bWVudGF0aW9uIGluIFdlYktpdDIgKFdlYlByb2Nlc3MpCisgICAgICAgIHdoZW4gaGFuZGxpbmcg
UmVzb3VyY2VFcnJvci4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtS
ZXBseUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UU5ldHdvcmtSZXBseUhhbmRsZXI6
OmZpbmlzaCk6CisgICAgICAgIChXZWJDb3JlOjpRTmV0d29ya1JlcGx5SGFuZGxlcjo6ZXJyb3JG
b3JSZXBseSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFu
ZGxlci5oOgorCiAyMDExLTA5LTE1ICBQZXRlciBCZXZlcmxvbyAgPHBldGVyQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBbQ2hyb21pdW1dIE1ha2Ugc3VyZSB0aGF0IHRoZSBBUk0gTkVPTiBmaWxl
cyBidWlsZCB3aXRoIC1tYXJtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwCmluZGV4IDZhMDNjY2QyNzJi
NmU0MTIzZDU3MTgxYWE5YjBiN2FlMmQzZDUzMjQuLjVhZjAwNDlkYTQ5YzMyZGJlZWQ3YzFkMjY1
YjcwMjM3OTM3NDY2NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwCkBAIC00NTUsMTggKzQ1NSw4
IEBAIHZvaWQgUU5ldHdvcmtSZXBseUhhbmRsZXI6OmZpbmlzaCgpCiAKICAgICBpZiAoIW1fcmVw
bHlXcmFwcGVyLT5yZXBseSgpLT5lcnJvcigpIHx8IHNob3VsZElnbm9yZUh0dHBFcnJvcihtX3Jl
cGx5V3JhcHBlci0+cmVwbHkoKSwgbV9yZXBseVdyYXBwZXItPnJlc3BvbnNlQ29udGFpbnNEYXRh
KCkpKQogICAgICAgICBjbGllbnQtPmRpZEZpbmlzaExvYWRpbmcobV9yZXNvdXJjZUhhbmRsZSwg
MCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIFFVcmwgdXJsID0gbV9yZXBseVdyYXBwZXItPnJlcGx5
KCktPnVybCgpOwotICAgICAgICBpbnQgaHR0cFN0YXR1c0NvZGUgPSBtX3JlcGx5V3JhcHBlci0+
cmVwbHkoKS0+YXR0cmlidXRlKFFOZXR3b3JrUmVxdWVzdDo6SHR0cFN0YXR1c0NvZGVBdHRyaWJ1
dGUpLnRvSW50KCk7Ci0KLSAgICAgICAgaWYgKGh0dHBTdGF0dXNDb2RlKSB7Ci0gICAgICAgICAg
ICBSZXNvdXJjZUVycm9yIGVycm9yKCJIVFRQIiwgaHR0cFN0YXR1c0NvZGUsIHVybC50b1N0cmlu
ZygpLCBtX3JlcGx5V3JhcHBlci0+cmVwbHkoKS0+YXR0cmlidXRlKFFOZXR3b3JrUmVxdWVzdDo6
SHR0cFJlYXNvblBocmFzZUF0dHJpYnV0ZSkudG9TdHJpbmcoKSk7Ci0gICAgICAgICAgICBjbGll
bnQtPmRpZEZhaWwobV9yZXNvdXJjZUhhbmRsZSwgZXJyb3IpOwotICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcigiUXROZXR3b3JrIiwgbV9yZXBseVdyYXBw
ZXItPnJlcGx5KCktPmVycm9yKCksIHVybC50b1N0cmluZygpLCBtX3JlcGx5V3JhcHBlci0+cmVw
bHkoKS0+ZXJyb3JTdHJpbmcoKSk7Ci0gICAgICAgICAgICBjbGllbnQtPmRpZEZhaWwobV9yZXNv
dXJjZUhhbmRsZSwgZXJyb3IpOwotICAgICAgICB9Ci0gICAgfQorICAgIGVsc2UKKyAgICAgICAg
Y2xpZW50LT5kaWRGYWlsKG1fcmVzb3VyY2VIYW5kbGUsIGVycm9yRm9yUmVwbHkobV9yZXBseVdy
YXBwZXItPnJlcGx5KCkpKTsKIAogICAgIG1fcmVwbHlXcmFwcGVyID0gbnVsbHB0cjsKIH0KQEAg
LTY5NCw2ICs2ODQsMTcgQEAgdm9pZCBRTmV0d29ya1JlcGx5SGFuZGxlcjo6c3RhcnQoKQogICAg
ICAgICBjb25uZWN0KG1fcmVwbHlXcmFwcGVyLT5yZXBseSgpLCBTSUdOQUwodXBsb2FkUHJvZ3Jl
c3MocWludDY0LCBxaW50NjQpKSwgdGhpcywgU0xPVCh1cGxvYWRQcm9ncmVzcyhxaW50NjQsIHFp
bnQ2NCkpKTsKIH0KIAorUmVzb3VyY2VFcnJvciBRTmV0d29ya1JlcGx5SGFuZGxlcjo6ZXJyb3JG
b3JSZXBseShRTmV0d29ya1JlcGx5KiByZXBseSkKK3sKKyAgICBRVXJsIHVybCA9IHJlcGx5LT51
cmwoKTsKKyAgICBpbnQgaHR0cFN0YXR1c0NvZGUgPSByZXBseS0+YXR0cmlidXRlKFFOZXR3b3Jr
UmVxdWVzdDo6SHR0cFN0YXR1c0NvZGVBdHRyaWJ1dGUpLnRvSW50KCk7CisKKyAgICBpZiAoaHR0
cFN0YXR1c0NvZGUpCisgICAgICAgIHJldHVybiBSZXNvdXJjZUVycm9yKCJIVFRQIiwgaHR0cFN0
YXR1c0NvZGUsIHVybC50b1N0cmluZygpLCByZXBseS0+YXR0cmlidXRlKFFOZXR3b3JrUmVxdWVz
dDo6SHR0cFJlYXNvblBocmFzZUF0dHJpYnV0ZSkudG9TdHJpbmcoKSk7CisKKyAgICByZXR1cm4g
UmVzb3VyY2VFcnJvcigiUXROZXR3b3JrIiwgcmVwbHktPmVycm9yKCksIHVybC50b1N0cmluZygp
LCByZXBseS0+ZXJyb3JTdHJpbmcoKSk7Cit9CisKIH0KIAogI2luY2x1ZGUgIm1vY19RTmV0d29y
a1JlcGx5SGFuZGxlci5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmgKaW5kZXggOWQzNmRhMjIxZDg1MmYx
MjU3NWU1MTdjMmU4M2QxMTdiYjY2MDk1ZC4uZjdhNDQ3YTVjYTcyZjc3OTI3MjI4YTI5M2RjZTI2
MGQ5ZTYyOWYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9x
dC9RTmV0d29ya1JlcGx5SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuaApAQCAtMzYsNiArMzYsNyBAQCBRVF9FTkRf
TkFNRVNQQUNFCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvcm1EYXRhSU9EZXZpY2U7
CitjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiBjbGFzcyBSZXNv
dXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwpAQCAtMTMzLDYgKzEzNCw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIGZvcndhcmREYXRhKCk7CiAgICAgdm9pZCBzZW5kUmVzcG9uc2VJ
Zk5lZWRlZCgpOwogCisgICAgc3RhdGljIFJlc291cmNlRXJyb3IgZXJyb3JGb3JSZXBseShRTmV0
d29ya1JlcGx5Kik7CisKIHByaXZhdGUgc2xvdHM6CiAgICAgdm9pZCB1cGxvYWRQcm9ncmVzcyhx
aW50NjQgYnl0ZXNTZW50LCBxaW50NjQgYnl0ZXNUb3RhbCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBmOGVk
YzJkZWMyMDUzODY0ODViYmZjNTZjZTAxZjJiMTUwMzk2NjY1Li4wMDkwY2QxMzNjNjZlZDc0MTVk
MGM5ZTlmZjdiNjY4ZjYzMjgyZDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTEt
MDktMTUgIEplc3VzIFNhbmNoZXotUGFsZW5jaWEgIDxqZXN1cy5wYWxlbmNpYUBvcGVuYm9zc2Eu
b3JnPgorCisgICAgICAgIFtRdF1bV0syXSBJbXBsZW1lbnQgRG93bmxvYWQgc3VwcG9ydCBpbiBX
ZWJQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02ODE1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdlIGltcGxlbWVudCB0aGUgbmVjZXNzYXJ5IGZ1bmN0aW9ucyBvZiBEb3dubG9hZC5oLCBhbmQg
b3VyIFF0RmlsZURvd25sb2FkZXIKKyAgICAgICAgdG8gaGFuZGxlIGFsbCBuZXR3b3JrIGNvbW11
bmljYXRpb24gYW5kIGNhbGwgdGhlIG5lY2Vzc2FyeSBmdW5jdGlvbnMgb2YgRG93bmxvYWQuCisK
KyAgICAgICAgV2UgdXNlIHRoZSBkb3dubG9hZCBwb2xpY3kgZm9yIGFueSBNSU1FIHR5cGUgbm90
IHN1cHBvcnRlZCBieSBXZWJLaXQuIFRoaXMKKyAgICAgICAgYmVoYXZlcyBsaWtlIFF0IG5vbi1X
ZWJLaXQyIGV4Y2VwdCB0aGF0IHdlIGRvbid0IGZvcmNlIGRvd25sb2FkIHdoZW4KKyAgICAgICAg
d2UgZW5jb3VudGVyIENvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQuIFdlIHN0aWxsIHVz
ZSB0aGUgImZpbGVuYW1lPSIKKyAgICAgICAgZmllbGQgZm9yIGZpbGUgbmFtZSBzdWdnZXN0aW9u
IHRob3VnaC4KKworICAgICAgICBCYXNlZCBvbiBvcmlnaW5hbCBwYXRjaGVzIGJ5OiBLaW1tbyBL
aW5udW5lbiA8a2ltbW8udC5raW5udW5lbkBub2tpYS5jb20+LAorICAgICAgICBKb2NlbHluIFR1
cmNvdHRlIDxqb2NlbHluLnR1cmNvdHRlQG5va2lhLmNvbT4sIFNpbW9uIEhhdXNtYW5uIDxzaW1v
bi5oYXVzbWFubkBub2tpYS5jb20+CisgICAgICAgIGFuZCBaYWxhbiBCdWp0YXMgPHphbGFuLmJ1
anRhc0Bub2tpYS5jb20+LgorCisgICAgICAgICogV2ViS2l0Mi5wcm86CisgICAgICAgICogV2Vi
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwOiBBZGRpbmcgUXRGaWxlRG93bmxvYWRlciwg
UXQgcGxhdGZvcm0gc3BlY2lmaWMKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OkRvd25sb2Fk
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oOiBBZGRpbmcgUXRG
aWxlRG93bmxvYWRlciwgUXQgcGxhdGZvcm0gc3BlY2lmaWMKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0Rvd25sb2Fkcy9xdC9Eb3dubG9hZFF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6
OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnN0YXJ0V2l0aEhhbmRsZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpjYW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpEb3du
bG9hZDo6cGxhdGZvcm1JbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OmRp
ZERlY2lkZURlc3RpbmF0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9R
dEZpbGVEb3dubG9hZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlF0RmlsZURvd25s
b2FkZXI6OlF0RmlsZURvd25sb2FkZXIpOgorICAgICAgICAoV2ViS2l0OjpRdEZpbGVEb3dubG9h
ZGVyOjp+UXRGaWxlRG93bmxvYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlF0RmlsZURvd25sb2Fk
ZXI6OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6UXRGaWxlRG93bmxvYWRlcjo6ZGV0ZXJtaW5l
RmlsZW5hbWUpOgorICAgICAgICAoV2ViS2l0OjpRdEZpbGVEb3dubG9hZGVyOjpvbkRlY2lkZWRE
ZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlF0RmlsZURvd25sb2FkZXI6OmFib3J0RG93
bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKToKKyAgICAgICAgKFdlYktpdDo6UXRGaWxlRG93bmxv
YWRlcjo6b25SZWFkeVJlYWQpOgorICAgICAgICAoV2ViS2l0OjpRdEZpbGVEb3dubG9hZGVyOjpv
bkZpbmlzaGVkKToKKyAgICAgICAgKFdlYktpdDo6UXRGaWxlRG93bmxvYWRlcjo6b25FcnJvcik6
CisgICAgICAgIChXZWJLaXQ6OlF0RmlsZURvd25sb2FkZXI6Om9uQ2FuY2VsKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3dubG9hZGVyLmg6IEFkZGVkLgorCiAy
MDExLTA5LTE0ICBXYWphaGF0IFNpZGRpcXVpICA8bWR3YWphaGF0YWxpLnNpZGRpcXVpQG1vdG9y
b2xhLmNvbT4KIAogICAgICAgICBFbGltaW5hdGUgV2ViS2l0MiBjb21waWxhdGlvbiB3YXJuaW5n
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJvIGIvU291cmNlL1dlYktp
dDIvV2ViS2l0Mi5wcm8KaW5kZXggMmQwZTZkZGM5NTczNjYyZTU5ZmU0MzZkMmJjMGNlZDZkMDM3
ZjhhMS4uYWE1NjRlODBmY2UxOGM3ZTQ4NzZjNjYzNWMyNDU3YmVlMDRhOWFjMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcm8KKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0
Mi5wcm8KQEAgLTI2Myw2ICsyNjMsNyBAQCBIRUFERVJTICs9IFwKICAgICBXZWJQcm9jZXNzL0Nv
b2tpZXMvV2ViQ29va2llTWFuYWdlci5oIFwKICAgICBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZC5oIFwKICAgICBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaCBcCisg
ICAgV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5oIFwKICAgICBXZWJQ
cm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIuaCBcCiAgICAgV2ViUHJvY2Vz
cy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIFwKICAg
ICBXZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oIFwKQEAgLTQ5
OSw2ICs1MDAsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZC5jcHAgXAogICAgIFdlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAg
XAogICAgIFdlYlByb2Nlc3MvRG93bmxvYWRzL3F0L0Rvd25sb2FkUXQuY3BwIFwKKyAgICBXZWJQ
cm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3dubG9hZGVyLmNwcCBcCiAgICAgV2ViUHJvY2Vz
cy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9H
ZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAgXAogICAg
IFdlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcCBcCkBAIC01
MDksNyArNTExLDcgQEAgU09VUkNFUyArPSBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmNwcCBcCiAgICAg
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAgXAotICAg
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNw
cCBcICAgIAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRU
ZXN0UmVzdWx0LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcCBcCiAgICAgV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcAppbmRl
eCBjOWZmNTkzOWMzZDllYjNmMWQyMzA3NjhkM2FkYTY2MzM4MmE3ZTc4Li4xZDA1OTQxNWFmOGFj
NjY4MzA4MTcyZDQ1OTIzYjQ4MWMxNmM1YjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwCkBAIC01MSw2ICs1MSw5IEBAIERvd25sb2Fk
OjpEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QpCiAjaWYgVVNFKENGTkVUV09SSykKICAgICAsIG1fYWxsb3dPdmVyd3JpdGUoZmFsc2Up
CiAjZW5kaWYKKyNpZiBQTEFURk9STShRVCkKKyAgICAsIG1fcXREb3dubG9hZGVyKDApCisjZW5k
aWYKIHsKICAgICBBU1NFUlQobV9kb3dubG9hZElEKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKaW5kZXggZmU5YTU2ZDFlZTIzYTI4ZmIzNjU5
NzI0ZTNhNjFiY2MyZWQ1MjE0Yy4uYWNjY2QzZjg4ZTJhNjk5NTk3YTM5YjdiZjgyOGQ0MzYzN2I3
MGYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZC5oCkBAIC02MCw2ICs2MCwxMCBAQCBjbGFzcyBEb3dubG9hZEF1dGhlbnRpY2F0aW9uQ2xpZW50
OwogY2xhc3MgU2FuZGJveEV4dGVuc2lvbjsKIGNsYXNzIFdlYlBhZ2U7CiAKKyNpZiBQTEFURk9S
TShRVCkKK2NsYXNzIFF0RmlsZURvd25sb2FkZXI7CisjZW5kaWYKKwogY2xhc3MgRG93bmxvYWQg
OiBwdWJsaWMgQ29yZUlQQzo6TWVzc2FnZVNlbmRlcjxEb3dubG9hZD4gewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKERvd25sb2FkKTsKIHB1YmxpYzoKQEAgLTEyNiw2ICsxMzAsOSBAQCBwcml2
YXRlOgogICAgIFJldGFpblB0cjxDRlVSTERvd25sb2FkUmVmPiBtX2Rvd25sb2FkOwogICAgIFJl
ZlB0cjxEb3dubG9hZEF1dGhlbnRpY2F0aW9uQ2xpZW50PiBtX2F1dGhlbnRpY2F0aW9uQ2xpZW50
OwogI2VuZGlmCisjaWYgUExBVEZPUk0oUVQpCisgICAgUXRGaWxlRG93bmxvYWRlciogbV9xdERv
d25sb2FkZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvRG93bmxvYWRRdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9Eb3dubG9hZFF0LmNwcApp
bmRleCBhZDVlN2RlZTZlNGQ0MDEyYmZjOWRlNjczNmZjNDYwODRiNmIxZDk4Li44NTkyYzdhODEz
NzQ2YjMxZDk0YmI3MjBiZWE4MWI5MGQyMDg2N2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9Eb3dubG9hZFF0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9Eb3dubG9hZFF0LmNwcApAQCAtMSw1ICsxLDYg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9v
ciBpdHMgc3Vic2lkaWFyeSgtaWVzKQogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yNiw3ICsyNywxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRvd25sb2Fk
LmgiCiAKKyNpbmNsdWRlICJRdEZpbGVEb3dubG9hZGVyLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vz
cy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1FOZXR3b3JrUmVwbHlIYW5kbGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhh
bmRsZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIApAQCAtMzQsMjcgKzQxLDM2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIERv
d25sb2FkOjpzdGFydChXZWJQYWdlKiBpbml0aWF0aW5nV2ViUGFnZSkKIHsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIFFOZXR3b3JrQWNjZXNzTWFuYWdlciogbWFuYWdlciA9IFdlYlByb2Nl
c3M6OnNoYXJlZCgpLm5ldHdvcmtBY2Nlc3NNYW5hZ2VyKCk7CisgICAgQVNTRVJUKG1hbmFnZXIp
OworICAgIEFTU0VSVCghbV9xdERvd25sb2FkZXIpOworCisgICAgbV9xdERvd25sb2FkZXIgPSBu
ZXcgUXRGaWxlRG93bmxvYWRlcih0aGlzLCBtYW5hZ2VyLCBtX3JlcXVlc3QudG9OZXR3b3JrUmVx
dWVzdCgwKSk7CisgICAgbV9xdERvd25sb2FkZXItPnN0YXJ0KCk7CiB9CiAKLXZvaWQgRG93bmxv
YWQ6OnN0YXJ0V2l0aEhhbmRsZShXZWJQYWdlKiBpbml0aWF0aW5nUGFnZSwgUmVzb3VyY2VIYW5k
bGUqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGluaXRpYWxSZXF1ZXN0LCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJikKK3ZvaWQgRG93bmxvYWQ6OnN0YXJ0V2l0aEhhbmRsZShXZWJQYWdlKiBpbml0
aWF0aW5nUGFnZSwgUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiBpbml0aWFsUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcCkKIHsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIEFTU0VSVCghbV9xdERvd25sb2FkZXIpOworCisgICAgbV9x
dERvd25sb2FkZXIgPSBuZXcgUXRGaWxlRG93bmxvYWRlcih0aGlzLCBoYW5kbGUtPmdldEludGVy
bmFsKCktPm1fam9iLT5yZWxlYXNlKCkpOworICAgIG1fcXREb3dubG9hZGVyLT5zdGFydCgpOwog
fQogCiB2b2lkIERvd25sb2FkOjpjYW5jZWwoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgbV9xdERvd25sb2FkZXItPm9uQ2FuY2VsKCk7CiB9CiAKIHZvaWQgRG93bmxvYWQ6OnBsYXRm
b3JtSW52YWxpZGF0ZSgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBRX0FTU0VSVCht
X3F0RG93bmxvYWRlcik7CisgICAgbV9xdERvd25sb2FkZXItPmRlbGV0ZUxhdGVyKCk7CiB9CiAK
IHZvaWQgRG93bmxvYWQ6OmRpZERlY2lkZURlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgZGVzdGlu
YXRpb24sIGJvb2wgYWxsb3dPdmVyd3JpdGUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICBtX3F0RG93bmxvYWRlci0+b25EZWNpZGVkRGVzdGluYXRpb24oZGVzdGluYXRpb24sIGFsbG93
T3ZlcndyaXRlKTsKIH0KIAogdm9pZCBEb3dubG9hZDo6cGxhdGZvcm1EaWRGaW5pc2goKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvUXRGaWxlRG93
bmxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZp
bGVEb3dubG9hZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wY2YzNzNmYzFmZmNkYjI0NWIwZmQwMjM2Yjk1
MzJhODg4NDEyYmNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9Eb3dubG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5jcHAKQEAgLTAsMCArMSwyNTcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJz
aWRpYXJ5KC1pZXMpCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICoKKyAqLworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlF0RmlsZURvd25s
b2FkZXIuaCIKKworI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJEb3dubG9h
ZC5oIgorI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCisjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3Ry
eS5oIgorI2luY2x1ZGUgPFFDb3JlQXBwbGljYXRpb24+CisjaW5jbHVkZSA8UUZpbGU+CisjaW5j
bHVkZSA8UUZpbGVJbmZvPgorI2luY2x1ZGUgPFFOZXR3b3JrQWNjZXNzTWFuYWdlcj4KKyNpbmNs
dWRlIDxXZWJDb3JlL1FOZXR3b3JrUmVwbHlIYW5kbGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZUVycm9yLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUXRGaWxl
RG93bmxvYWRlcjo6UXRGaWxlRG93bmxvYWRlcihEb3dubG9hZCogZG93bmxvYWQsIFFOZXR3b3Jr
QWNjZXNzTWFuYWdlciogbWFuYWdlciwgY29uc3QgUU5ldHdvcmtSZXF1ZXN0JiByZXF1ZXN0KQor
ICAgIDogbV9kb3dubG9hZChkb3dubG9hZCkKKyAgICAsIG1fbWFuYWdlcihtYW5hZ2VyKQorICAg
ICwgbV9yZXF1ZXN0KHJlcXVlc3QpCisgICAgLCBtX3JlcGx5KDApCisgICAgLCBtX2Rlc3RpbmF0
aW9uRmlsZSgwKQorICAgICwgbV9lcnJvcihRTmV0d29ya1JlcGx5OjpOb0Vycm9yKQorICAgICwg
bV9oZWFkZXJzUmVhZChmYWxzZSkKK3sKK30KKworUXRGaWxlRG93bmxvYWRlcjo6UXRGaWxlRG93
bmxvYWRlcihEb3dubG9hZCogZG93bmxvYWQsIFFOZXR3b3JrUmVwbHkqIHJlcGx5KQorICAgIDog
bV9kb3dubG9hZChkb3dubG9hZCkKKyAgICAsIG1fbWFuYWdlcihyZXBseS0+bWFuYWdlcigpKQor
ICAgICwgbV9yZXF1ZXN0KHJlcGx5LT5yZXF1ZXN0KCkpCisgICAgLCBtX3JlcGx5KHJlcGx5KQor
ICAgICwgbV9kZXN0aW5hdGlvbkZpbGUoMCkKKyAgICAsIG1fZXJyb3IoUU5ldHdvcmtSZXBseTo6
Tm9FcnJvcikKKyAgICAsIG1faGVhZGVyc1JlYWQoZmFsc2UpCit7Cit9CisKK1F0RmlsZURvd25s
b2FkZXI6On5RdEZpbGVEb3dubG9hZGVyKCkKK3sKKyAgICBpZiAobV9kZXN0aW5hdGlvbkZpbGUp
IHsKKyAgICAgICAgUmVzb3VyY2VFcnJvciBkb3dubG9hZEVycm9yKCJEb3dubG9hZCIsIFF0Rmls
ZURvd25sb2FkZXI6OkRvd25sb2FkRXJyb3JDYW5jZWxsZWQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX3JlcGx5LT51cmwoKS50b1N0cmluZygpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRdEZp
bGVEb3dubG9hZGVyIiwgIkRvd25sb2FkIGNhbmNlbGxlZCIpKTsKKyAgICAgICAgYWJvcnREb3du
bG9hZFdyaXRpbmdBbmRFbWl0RXJyb3IoZG93bmxvYWRFcnJvcik7CisgICAgfQorICAgIGRlbGV0
ZSBtX3JlcGx5OworfQorCit2b2lkIFF0RmlsZURvd25sb2FkZXI6OnN0YXJ0KCkKK3sKKyAgICBp
ZiAoIW1fcmVwbHkpCisgICAgICAgIG1fcmVwbHkgPSBtX21hbmFnZXItPmdldChtX3JlcXVlc3Qp
OworCisgICAgY29ubmVjdChtX3JlcGx5LCBTSUdOQUwocmVhZHlSZWFkKCkpLCBTTE9UKG9uUmVh
ZHlSZWFkKCkpKTsKKyAgICBjb25uZWN0KG1fcmVwbHksIFNJR05BTChmaW5pc2hlZCgpKSwgU0xP
VChvbkZpbmlzaGVkKCkpKTsKKyAgICBjb25uZWN0KG1fcmVwbHksIFNJR05BTChlcnJvcihRTmV0
d29ya1JlcGx5OjpOZXR3b3JrRXJyb3IpKSwgU0xPVChvbkVycm9yKFFOZXR3b3JrUmVwbHk6Ok5l
dHdvcmtFcnJvcikpKTsKKworICAgIC8vIENhbGwgb25SZWFkeVJlYWQganVzdCBpbiBjYXNlIHNv
bWUgZGF0YSBpcyBhbHJlYWR5IHdhaXRpbmcuCisgICAgb25SZWFkeVJlYWQoKTsKK30KKwordm9p
ZCBRdEZpbGVEb3dubG9hZGVyOjpkZXRlcm1pbmVGaWxlbmFtZSgpCit7CisgICAgUV9BU1NFUlQo
IW1fZGVzdGluYXRpb25GaWxlKTsKKworICAgIFFTdHJpbmcgZmlsZU5hbWU7CisgICAgUVN0cmlu
ZyBmaWxlTmFtZUNhbmRpZGF0ZSA9IGZpbGVuYW1lRnJvbUhUVFBDb250ZW50RGlzcG9zaXRpb24o
UVN0cmluZzo6ZnJvbUFzY2lpKG1fcmVwbHktPnJhd0hlYWRlcigiQ29udGVudC1EaXNwb3NpdGlv
biIpKSk7CisgICAgaWYgKGZpbGVOYW1lQ2FuZGlkYXRlLmlzRW1wdHkoKSkgeworICAgICAgICBL
VVJMIGt1cmwgPSBtX3JlcGx5LT51cmwoKTsKKyAgICAgICAgZmlsZU5hbWVDYW5kaWRhdGUgPSBk
ZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoa3VybC5sYXN0UGF0aENvbXBvbmVudCgpKTsKKyAgICB9
CisKKyAgICBpZiAoZmlsZU5hbWVDYW5kaWRhdGUuaXNFbXB0eSgpKSB7CisgICAgICAgIG1fcmVw
bHktPmFib3J0KCk7CisgICAgICAgIFJlc291cmNlRXJyb3IgZG93bmxvYWRFcnJvcigiRG93bmxv
YWQiLCBRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9yRmlsZW5hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtX3JlcGx5LT51cmwoKS50b1N0cmluZygpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNs
YXRlKCJRdEZpbGVEb3dubG9hZGVyIiwgIkNhbm5vdCBkZXRlcm1pbmUgc2F2ZWQgZmlsZW5hbWUi
KSk7CisgICAgICAgIG1fZG93bmxvYWQtPmRpZEZhaWwoZG93bmxvYWRFcnJvciwgQ29yZUlQQzo6
RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtX3JlcGx5LT5y
ZWFkQWxsKCkuZGF0YSgpKSwgbV9yZXBseS0+c2l6ZSgpICsgMSkpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgLy8gTWFrZSBzdXJlIHRoYXQgd2UgcmVtb3ZlIHBvc3NpYmxlICIuLi8u
LiIgcGFydHMgaW4gdGhlIGdpdmVuIGZpbGUgbmFtZS4KKyAgICBRRmlsZUluZm8gZmlsZU5hbWVG
aWx0ZXIoZmlsZU5hbWVDYW5kaWRhdGUpOworICAgIGZpbGVOYW1lID0gZmlsZU5hbWVGaWx0ZXIu
ZmlsZU5hbWUoKTsKKworICAgIGlmIChmaWxlTmFtZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgbV9y
ZXBseS0+YWJvcnQoKTsKKyAgICAgICAgUmVzb3VyY2VFcnJvciBkb3dubG9hZEVycm9yKCJEb3du
bG9hZCIsIFF0RmlsZURvd25sb2FkZXI6OkRvd25sb2FkRXJyb3JGaWxlbmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcmVwbHktPnVybCgpLnRvU3RyaW5nKCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRQ29yZUFwcGxpY2F0aW9uOjp0cmFu
c2xhdGUoIlF0RmlsZURvd25sb2FkZXIiLCAiQ2Fubm90IGRldGVybWluZSBzYXZlZCBmaWxlbmFt
ZSIpKTsKKyAgICAgICAgbV9kb3dubG9hZC0+ZGlkRmFpbChkb3dubG9hZEVycm9yLCBDb3JlSVBD
OjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fcmVwbHkt
PnJlYWRBbGwoKS5kYXRhKCkpLCBtX3JlcGx5LT5zaXplKCkgKyAxKSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBib29sIGFsbG93T3ZlcndyaXRlOworICAgIG1fZG93bmxvYWQtPmRl
Y2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGZpbGVOYW1lLCBhbGxvd092ZXJ3
cml0ZSk7Cit9CisKK3ZvaWQgUXRGaWxlRG93bmxvYWRlcjo6b25EZWNpZGVkRGVzdGluYXRpb24o
Y29uc3QgUVN0cmluZyYgZGVjaWRlZEZpbGVQYXRoLCBib29sIGFsbG93T3ZlcndyaXRlKQorewor
ICAgIFFfQVNTRVJUKCFtX2Rlc3RpbmF0aW9uRmlsZSk7CisKKyAgICAvLyBFcnJvciBtaWdodCBo
YXZlIG9jY3VyZWQgZHVyaW5nIGRlc3RpbmF0aW9uIHF1ZXJ5LgorICAgIGlmIChtX2Vycm9yICE9
IFFOZXR3b3JrUmVwbHk6Ok5vRXJyb3IpIHsKKyAgICAgICAgbV9yZXBseS0+YWJvcnQoKTsKKyAg
ICAgICAgbV9kb3dubG9hZC0+ZGlkRmFpbChRTmV0d29ya1JlcGx5SGFuZGxlcjo6ZXJyb3JGb3JS
ZXBseShtX3JlcGx5KSwgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihtX3JlcGx5LT5yZWFkQWxsKCkuZGF0YSgpKSwgbV9yZXBseS0+c2l6ZSgp
KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoZGVjaWRlZEZpbGVQYXRoLmlz
RW1wdHkoKSkgeworICAgICAgICBtX3JlcGx5LT5hYm9ydCgpOworICAgICAgICBSZXNvdXJjZUVy
cm9yIGRvd25sb2FkRXJyb3IoIkRvd25sb2FkIiwgUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRF
cnJvckNhbmNlbGxlZEJ5Q2FsbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbV9yZXBseS0+dXJsKCkudG9TdHJpbmcoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUXRGaWxlRG93bmxvYWRlciIs
ICJEb3dubG9hZCBjYW5jZWxsZWQgYnkgY2FsbGVyIikpOworICAgICAgICBtX2Rvd25sb2FkLT5k
aWRGYWlsKGRvd25sb2FkRXJyb3IsIENvcmVJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4obV9yZXBseS0+cmVhZEFsbCgpLmRhdGEoKSksIG1fcmVwbHkt
PnNpemUoKSArIDEpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFFGaWxlKiBkb3du
bG9hZEZpbGUgPSBuZXcgUUZpbGUoZGVjaWRlZEZpbGVQYXRoKTsKKworICAgIGlmICghYWxsb3dP
dmVyd3JpdGUgJiYgZG93bmxvYWRGaWxlLT5leGlzdHMoKSkgeworICAgICAgICBkZWxldGUgZG93
bmxvYWRGaWxlOworICAgICAgICBtX3JlcGx5LT5hYm9ydCgpOworICAgICAgICBSZXNvdXJjZUVy
cm9yIGRvd25sb2FkRXJyb3IoIkRvd25sb2FkIiwgUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRF
cnJvckZpbGVBbHJlYWR5RXhpc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbV9yZXBseS0+dXJsKCkudG9TdHJpbmcoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUXRGaWxlRG93bmxvYWRlciIs
ICJGaWxlIGFscmVhZHkgZXhpc3RzIikpOworICAgICAgICBtX2Rvd25sb2FkLT5kaWRGYWlsKGRv
d25sb2FkRXJyb3IsIENvcmVJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4obV9yZXBseS0+cmVhZEFsbCgpLmRhdGEoKSksIG1fcmVwbHktPnNpemUoKSAr
IDEpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEZJWE1FOiBoZXJlJ3MgYSBy
YWNlIGNvbmRpdGlvbiBkdWUgdG8gcXQgYXBpIG5vdCBhbGxvd2luZworICAgIC8vIGZpbGVzIHRv
IGJlIGNyZWF0ZWQgb25seSBpZiB0aGV5IGRvbid0IGV4aXN0CisKKyAgICBpZiAoIWRvd25sb2Fk
RmlsZS0+b3BlbihRSU9EZXZpY2U6OldyaXRlT25seSB8IFFJT0RldmljZTo6VHJ1bmNhdGUpKSB7
CisgICAgICAgIGRlbGV0ZSBkb3dubG9hZEZpbGU7CisgICAgICAgIG1fcmVwbHktPmFib3J0KCk7
CisgICAgICAgIFJlc291cmNlRXJyb3IgZG93bmxvYWRFcnJvcigiRG93bmxvYWQiLCBRdEZpbGVE
b3dubG9hZGVyOjpEb3dubG9hZEVycm9yQ2Fubm90T3BlbkZpbGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX3JlcGx5LT51cmwoKS50b1N0cmluZygpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJR
dEZpbGVEb3dubG9hZGVyIiwgIkNhbm5vdCBvcGVuIGZpbGUgZm9yIHdyaXRpbmciKSk7CisgICAg
ICAgbV9kb3dubG9hZC0+ZGlkRmFpbChkb3dubG9hZEVycm9yLCBDb3JlSVBDOjpEYXRhUmVmZXJl
bmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fcmVwbHktPnJlYWRBbGwoKS5k
YXRhKCkpLCBtX3JlcGx5LT5zaXplKCkgKyAxKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICAvLyBBc3NpZ25pbmcgdG8gbV9kZXN0aW5hdGlvbkZpbGUgZmxhZ3MgdGhhdCBlaXRoZXIg
ZXJyb3Igb3IKKyAgICAvLyBmaW5pc2hlZCBzaGFsbCBiZSBjYWxsZWQgaW4gdGhlIGVuZC4KKyAg
ICBtX2Rlc3RpbmF0aW9uRmlsZSA9IGRvd25sb2FkRmlsZTsKKworICAgIG1fZG93bmxvYWQtPmRp
ZENyZWF0ZURlc3RpbmF0aW9uKG1fZGVzdGluYXRpb25GaWxlLT5maWxlTmFtZSgpKTsKKworICAg
IC8vIFdlIG1pZ2h0IGhhdmUgZ290dGVuIHJlYWR5UmVhZCBhbHJlYWR5IGV2ZW4gYmVmb3JlIHRo
aXMgZnVuY3Rpb24KKyAgICAvLyB3YXMgY2FsbGVkLgorICAgIGlmIChtX3JlcGx5LT5ieXRlc0F2
YWlsYWJsZSgpKQorICAgICAgICBvblJlYWR5UmVhZCgpOworCisgICAgLy8gV2UgbWlnaHQgaGF2
ZSBnb3R0ZW4gZmluaXNoZWQgYWxyZWFkeSBldmVuIGJlZm9yZSB0aGlzCisgICAgLy8gZnVuY3Rp
b24gd2FzIGNhbGxlZC4KKyAgICBpZiAobV9yZXBseS0+aXNGaW5pc2hlZCgpKQorICAgICAgICBv
bkZpbmlzaGVkKCk7CisKK30KKwordm9pZCBRdEZpbGVEb3dubG9hZGVyOjphYm9ydERvd25sb2Fk
V3JpdGluZ0FuZEVtaXRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvckNvZGUpCit7Cisg
ICAgZGVsZXRlIG1fZGVzdGluYXRpb25GaWxlOworICAgIG1fZGVzdGluYXRpb25GaWxlID0gMDsK
KyAgICBtX3JlcGx5LT5hYm9ydCgpOworICAgIG1fZG93bmxvYWQtPmRpZEZhaWwoZXJyb3JDb2Rl
LCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KG1fcmVwbHktPnJlYWRBbGwoKS5kYXRhKCkpLCBtX3JlcGx5LT5zaXplKCkgKyAxKSk7Cit9CisK
Kwordm9pZCBRdEZpbGVEb3dubG9hZGVyOjpvblJlYWR5UmVhZCgpCit7CisgICAgaWYgKG1fZGVz
dGluYXRpb25GaWxlKSB7CisgICAgICAgIFFCeXRlQXJyYXkgY29udGVudCA9IG1fcmVwbHktPnJl
YWRBbGwoKTsKKyAgICAgICAgaWYgKGNvbnRlbnQuc2l6ZSgpIDw9IDApCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgcWludDY0IGJ5dGVzV3JpdHRlbiA9IG1fZGVzdGluYXRpb25GaWxl
LT53cml0ZShjb250ZW50KTsKKworICAgICAgICBpZiAoYnl0ZXNXcml0dGVuID09IC0xIHx8IGJ5
dGVzV3JpdHRlbiAhPSBjb250ZW50LnNpemUoKSkgeworICAgICAgICAgICAgUmVzb3VyY2VFcnJv
ciBkb3dubG9hZEVycm9yKCJEb3dubG9hZCIsIFF0RmlsZURvd25sb2FkZXI6OkRvd25sb2FkRXJy
b3JVbmFibGVUb1dyaXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1fcmVwbHktPnVybCgpLnRvU3RyaW5nKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRdEZpbGVEb3dubG9hZGVy
IiwgIlVuYWJsZSB0byB3cml0ZSIpKTsKKyAgICAgICAgICAgIGFib3J0RG93bmxvYWRXcml0aW5n
QW5kRW1pdEVycm9yKGRvd25sb2FkRXJyb3IpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgbV9kb3dubG9hZC0+ZGlkUmVjZWl2ZURhdGEoYnl0ZXNXcml0dGVuKTsK
KyAgICB9IGVsc2UgaWYgKCFtX2hlYWRlcnNSZWFkKSB7CisgICAgICAgIC8vIEJ5IEFQSSBjb250
cmFjdCwgUU5ldHdvcmtSZXBseTo6bWV0YURhdGFDaGFuZ2VkIGNhbm5vdCByZWFsbHkgYmUgdHJ1
c3RlZC4KKyAgICAgICAgLy8gVGh1cyB3ZSBuZWVkIHRvIGNhbGwgdGhpcyB1cG9uIHJlY2Vpdmlu
ZyBmaXJzdCBkYXRhLgorICAgICAgICBXVEY6OlN0cmluZyBjb250ZW50VHlwZSA9IG1fcmVwbHkt
PmhlYWRlcihRTmV0d29ya1JlcXVlc3Q6OkNvbnRlbnRUeXBlSGVhZGVyKS50b1N0cmluZygpOwor
ICAgICAgICBXVEY6OlN0cmluZyBlbmNvZGluZyA9IGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlw
ZShjb250ZW50VHlwZSk7CisgICAgICAgIFdURjo6U3RyaW5nIG1pbWVUeXBlID0gZXh0cmFjdE1J
TUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSk7CisKKyAgICAgICAgLy8gTGV0J3MgdHJ5
IHRvIGd1ZXNzIGZyb20gdGhlIGV4dGVuc2lvbi4KKyAgICAgICAgaWYgKG1pbWVUeXBlLmlzRW1w
dHkoKSkKKyAgICAgICAgICAgIG1pbWVUeXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5
cGVGb3JQYXRoKG1fcmVwbHktPnVybCgpLnBhdGgoKSk7CisKKyAgICAgICAgUmVzb3VyY2VSZXNw
b25zZSByZXNwb25zZShtX3JlcGx5LT51cmwoKSwgbWltZVR5cGUsIG1fcmVwbHktPmhlYWRlcihR
TmV0d29ya1JlcXVlc3Q6OkNvbnRlbnRMZW5ndGhIZWFkZXIpLnRvTG9uZ0xvbmcoKSwgZW5jb2Rp
bmcsIFN0cmluZygpKTsKKyAgICAgICAgbV9kb3dubG9hZC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJl
c3BvbnNlKTsKKworICAgICAgICBkZXRlcm1pbmVGaWxlbmFtZSgpOworCisgICAgICAgIG1faGVh
ZGVyc1JlYWQgPSB0cnVlOworICAgIH0KK30KKwordm9pZCBRdEZpbGVEb3dubG9hZGVyOjpvbkZp
bmlzaGVkKCkKK3sKKyAgICBpZiAobV9kZXN0aW5hdGlvbkZpbGUpIHsKKyAgICAgICAgbV9kZXN0
aW5hdGlvbkZpbGUtPmNsb3NlKCk7CisgICAgICAgIGRlbGV0ZSBtX2Rlc3RpbmF0aW9uRmlsZTsK
KyAgICAgICAgbV9kZXN0aW5hdGlvbkZpbGUgPSAwOworCisgICAgICAgIGlmIChtX2Vycm9yID09
IFFOZXR3b3JrUmVwbHk6Ok5vRXJyb3IpCisgICAgICAgICAgICBtX2Rvd25sb2FkLT5kaWRGaW5p
c2goKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9kb3dubG9hZC0+ZGlkRmFpbChRTmV0
d29ya1JlcGx5SGFuZGxlcjo6ZXJyb3JGb3JSZXBseShtX3JlcGx5KSwgQ29yZUlQQzo6RGF0YVJl
ZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtX3JlcGx5LT5yZWFkQWxs
KCkuZGF0YSgpKSwgbV9yZXBseS0+c2l6ZSgpICsgMSkpOworICAgIH0KK30KKwordm9pZCBRdEZp
bGVEb3dubG9hZGVyOjpvbkVycm9yKFFOZXR3b3JrUmVwbHk6Ok5ldHdvcmtFcnJvciBjb2RlKQor
eworICAgIG1fZXJyb3IgPSBjb2RlOworfQorCit2b2lkIFF0RmlsZURvd25sb2FkZXI6Om9uQ2Fu
Y2VsKCkKK3sKKyAgICBtX3JlcGx5LT5hYm9ydCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQv
UXRGaWxlRG93bmxvYWRlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMv
cXQvUXRGaWxlRG93bmxvYWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4MjllNWM3N2M1NjQ3ZGNkNzYzYmY5
MmMwOWFiYzg1NzJjOTQzYzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3dubG9hZGVyLmgKQEAgLTAsMCArMSw3OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1
YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgUXRGaWxlRG93bmxvYWRlcl9oCisjZGVmaW5lIFF0
RmlsZURvd25sb2FkZXJfaAorCisjaW5jbHVkZSA8UU5ldHdvcmtSZXBseT4KKyNpbmNsdWRlIDxR
TmV0d29ya1JlcXVlc3Q+CisKK2NsYXNzIFFGaWxlOworY2xhc3MgUU5ldHdvcmtBY2Nlc3NNYW5h
Z2VyOworY2xhc3MgUU5ldHdvcmtSZXF1ZXN0OworCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFz
cyBSZXNvdXJjZUVycm9yOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIERvd25sb2Fk
OworCitjbGFzcyBRdEZpbGVEb3dubG9hZGVyIDogcHVibGljIFFPYmplY3QgeworICAgIFFfT0JK
RUNUCitwdWJsaWM6CisgICAgUXRGaWxlRG93bmxvYWRlcihEb3dubG9hZCosIFFOZXR3b3JrQWNj
ZXNzTWFuYWdlciosIGNvbnN0IFFOZXR3b3JrUmVxdWVzdCYpOworICAgIFF0RmlsZURvd25sb2Fk
ZXIoRG93bmxvYWQqLCBRTmV0d29ya1JlcGx5Kik7CisgICAgdmlydHVhbCB+UXRGaWxlRG93bmxv
YWRlcigpOworICAgIHZvaWQgc3RhcnQoKTsKKworICAgIGVudW0gRG93bmxvYWRFcnJvciB7Cisg
ICAgICAgIERvd25sb2FkRXJyb3JDYW5jZWxsZWQgPSAtNiwKKyAgICAgICAgRG93bmxvYWRFcnJv
clVuYWJsZVRvV3JpdGUgPSAtNSwKKyAgICAgICAgRG93bmxvYWRFcnJvckNhbm5vdE9wZW5GaWxl
ID0gLTQsCisgICAgICAgIERvd25sb2FkRXJyb3JGaWxlQWxyZWFkeUV4aXN0cyA9IC0zLAorICAg
ICAgICBEb3dubG9hZEVycm9yQ2FuY2VsbGVkQnlDYWxsZXIgPSAtMiwKKyAgICAgICAgRG93bmxv
YWRFcnJvckZpbGVuYW1lID0gLTEKKyAgICB9OworCitwcml2YXRlIHNsb3RzOgorICAgIHZvaWQg
b25EZWNpZGVkRGVzdGluYXRpb24oY29uc3QgUVN0cmluZyYgZGVjaWRlZEZpbGVQYXRoLCBib29s
IGFsbG93T3ZlcndyaXRlKTsKKyAgICB2b2lkIG9uQ2FuY2VsKCk7CisgICAgdm9pZCBvblJlYWR5
UmVhZCgpOworICAgIHZvaWQgb25GaW5pc2hlZCgpOworICAgIHZvaWQgb25FcnJvcihRTmV0d29y
a1JlcGx5OjpOZXR3b3JrRXJyb3IgY29kZSk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBhYm9ydERv
d25sb2FkV3JpdGluZ0FuZEVtaXRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBl
cnJvckNvZGUpOworICAgIHZvaWQgZGV0ZXJtaW5lRmlsZW5hbWUoKTsKKworICAgIERvd25sb2Fk
KiBtX2Rvd25sb2FkOworICAgIFFOZXR3b3JrQWNjZXNzTWFuYWdlciogbV9tYW5hZ2VyOworICAg
IFFOZXR3b3JrUmVxdWVzdCBtX3JlcXVlc3Q7CisgICAgUU5ldHdvcmtSZXBseSogbV9yZXBseTsK
KyAgICBRRmlsZSogbV9kZXN0aW5hdGlvbkZpbGU7CisgICAgUU5ldHdvcmtSZXBseTo6TmV0d29y
a0Vycm9yIG1fZXJyb3I7CisgICAgYm9vbCBtX2hlYWRlcnNSZWFkOworICAgIGZyaWVuZCBjbGFz
cyBEb3dubG9hZDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107731</attachid>
            <date>2011-09-16 15:34:02 -0700</date>
            <delta_ts>2011-09-19 08:57:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68153-20110916193344.patch</filename>
            <type>text/plain</type>
            <size>24803</size>
            <attacher name="Jesus Sanchez-Palencia">jesus</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTUzMjkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1OTAwMmE0YjgwZmMzNzUz
MGYxZjZmYmYwOTAzODRiNTcxYTRiNDg4Li4zZTZlNjA5Mjc3M2RiYWIzNTkyZDVkMDI5ZWZiNDUz
OGVlMDViMzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDktMTUgIEplc3Vz
IFNhbmNoZXotUGFsZW5jaWEgIDxqZXN1cy5wYWxlbmNpYUBvcGVuYm9zc2Eub3JnPgorCisgICAg
ICAgIFtRdF1bV0syXSBJbXBsZW1lbnQgRG93bmxvYWQgc3VwcG9ydCBpbiBXZWJQcm9jZXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODE1MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yZWQg
UU5ldHdvcmtSZXBseUhhbmRsZXI6OmZpbmlzaCgpIGluIG9yZGVyIHRvIGFkZAorICAgICAgICBh
bmQgdXNlIHRoZSBzdGF0aWMgZnVuY3Rpb24gUU5ldHdvcmtSZXBseUhhbmRsZXI6OmVycm9yRm9y
UmVwbHkoKS4KKyAgICAgICAgVGhpcyB3aWxsIGJlIHVzZWQgYnkgb3VyIERvd25sb2FkIGltcGxl
bWVudGF0aW9uIGluIFdlYktpdDIgKFdlYlByb2Nlc3MpCisgICAgICAgIHdoZW4gaGFuZGxpbmcg
UmVzb3VyY2VFcnJvci4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtS
ZXBseUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UU5ldHdvcmtSZXBseUhhbmRsZXI6
OmZpbmlzaCk6CisgICAgICAgIChXZWJDb3JlOjpRTmV0d29ya1JlcGx5SGFuZGxlcjo6ZXJyb3JG
b3JSZXBseSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFu
ZGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXF1ZXN0Lmg6
CisKIDIwMTEtMDktMTYgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBVcGRhdGUgSlNDIHJlc3VsdHMgdG8gYWNjb3VudCBmb3IgaW50cmluc2ljcyBjaGFuZ2UuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVw
bHlIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdv
cmtSZXBseUhhbmRsZXIuY3BwCmluZGV4IDZhMDNjY2QyNzJiNmU0MTIzZDU3MTgxYWE5YjBiN2Fl
MmQzZDUzMjQuLjVhZjAwNDlkYTQ5YzMyZGJlZWQ3YzFkMjY1YjcwMjM3OTM3NDY2NDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhh
bmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdv
cmtSZXBseUhhbmRsZXIuY3BwCkBAIC00NTUsMTggKzQ1NSw4IEBAIHZvaWQgUU5ldHdvcmtSZXBs
eUhhbmRsZXI6OmZpbmlzaCgpCiAKICAgICBpZiAoIW1fcmVwbHlXcmFwcGVyLT5yZXBseSgpLT5l
cnJvcigpIHx8IHNob3VsZElnbm9yZUh0dHBFcnJvcihtX3JlcGx5V3JhcHBlci0+cmVwbHkoKSwg
bV9yZXBseVdyYXBwZXItPnJlc3BvbnNlQ29udGFpbnNEYXRhKCkpKQogICAgICAgICBjbGllbnQt
PmRpZEZpbmlzaExvYWRpbmcobV9yZXNvdXJjZUhhbmRsZSwgMCk7Ci0gICAgZWxzZSB7Ci0gICAg
ICAgIFFVcmwgdXJsID0gbV9yZXBseVdyYXBwZXItPnJlcGx5KCktPnVybCgpOwotICAgICAgICBp
bnQgaHR0cFN0YXR1c0NvZGUgPSBtX3JlcGx5V3JhcHBlci0+cmVwbHkoKS0+YXR0cmlidXRlKFFO
ZXR3b3JrUmVxdWVzdDo6SHR0cFN0YXR1c0NvZGVBdHRyaWJ1dGUpLnRvSW50KCk7Ci0KLSAgICAg
ICAgaWYgKGh0dHBTdGF0dXNDb2RlKSB7Ci0gICAgICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9y
KCJIVFRQIiwgaHR0cFN0YXR1c0NvZGUsIHVybC50b1N0cmluZygpLCBtX3JlcGx5V3JhcHBlci0+
cmVwbHkoKS0+YXR0cmlidXRlKFFOZXR3b3JrUmVxdWVzdDo6SHR0cFJlYXNvblBocmFzZUF0dHJp
YnV0ZSkudG9TdHJpbmcoKSk7Ci0gICAgICAgICAgICBjbGllbnQtPmRpZEZhaWwobV9yZXNvdXJj
ZUhhbmRsZSwgZXJyb3IpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgUmVzb3VyY2VF
cnJvciBlcnJvcigiUXROZXR3b3JrIiwgbV9yZXBseVdyYXBwZXItPnJlcGx5KCktPmVycm9yKCks
IHVybC50b1N0cmluZygpLCBtX3JlcGx5V3JhcHBlci0+cmVwbHkoKS0+ZXJyb3JTdHJpbmcoKSk7
Ci0gICAgICAgICAgICBjbGllbnQtPmRpZEZhaWwobV9yZXNvdXJjZUhhbmRsZSwgZXJyb3IpOwot
ICAgICAgICB9Ci0gICAgfQorICAgIGVsc2UKKyAgICAgICAgY2xpZW50LT5kaWRGYWlsKG1fcmVz
b3VyY2VIYW5kbGUsIGVycm9yRm9yUmVwbHkobV9yZXBseVdyYXBwZXItPnJlcGx5KCkpKTsKIAog
ICAgIG1fcmVwbHlXcmFwcGVyID0gbnVsbHB0cjsKIH0KQEAgLTY5NCw2ICs2ODQsMTcgQEAgdm9p
ZCBRTmV0d29ya1JlcGx5SGFuZGxlcjo6c3RhcnQoKQogICAgICAgICBjb25uZWN0KG1fcmVwbHlX
cmFwcGVyLT5yZXBseSgpLCBTSUdOQUwodXBsb2FkUHJvZ3Jlc3MocWludDY0LCBxaW50NjQpKSwg
dGhpcywgU0xPVCh1cGxvYWRQcm9ncmVzcyhxaW50NjQsIHFpbnQ2NCkpKTsKIH0KIAorUmVzb3Vy
Y2VFcnJvciBRTmV0d29ya1JlcGx5SGFuZGxlcjo6ZXJyb3JGb3JSZXBseShRTmV0d29ya1JlcGx5
KiByZXBseSkKK3sKKyAgICBRVXJsIHVybCA9IHJlcGx5LT51cmwoKTsKKyAgICBpbnQgaHR0cFN0
YXR1c0NvZGUgPSByZXBseS0+YXR0cmlidXRlKFFOZXR3b3JrUmVxdWVzdDo6SHR0cFN0YXR1c0Nv
ZGVBdHRyaWJ1dGUpLnRvSW50KCk7CisKKyAgICBpZiAoaHR0cFN0YXR1c0NvZGUpCisgICAgICAg
IHJldHVybiBSZXNvdXJjZUVycm9yKCJIVFRQIiwgaHR0cFN0YXR1c0NvZGUsIHVybC50b1N0cmlu
ZygpLCByZXBseS0+YXR0cmlidXRlKFFOZXR3b3JrUmVxdWVzdDo6SHR0cFJlYXNvblBocmFzZUF0
dHJpYnV0ZSkudG9TdHJpbmcoKSk7CisKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcigiUXROZXR3
b3JrIiwgcmVwbHktPmVycm9yKCksIHVybC50b1N0cmluZygpLCByZXBseS0+ZXJyb3JTdHJpbmco
KSk7Cit9CisKIH0KIAogI2luY2x1ZGUgIm1vY19RTmV0d29ya1JlcGx5SGFuZGxlci5jcHAiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVw
bHlIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3Jr
UmVwbHlIYW5kbGVyLmgKaW5kZXggOWQzNmRhMjIxZDg1MmYxMjU3NWU1MTdjMmU4M2QxMTdiYjY2
MDk1ZC4uZjdhNDQ3YTVjYTcyZjc3OTI3MjI4YTI5M2RjZTI2MGQ5ZTYyOWYxNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBs
eUhhbmRsZXIuaApAQCAtMzYsNiArMzYsNyBAQCBRVF9FTkRfTkFNRVNQQUNFCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEZvcm1EYXRhSU9EZXZpY2U7CitjbGFzcyBSZXNvdXJjZUVycm9y
OwogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBS
ZXNvdXJjZVJlc3BvbnNlOwpAQCAtMTMzLDYgKzEzNCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGZv
cndhcmREYXRhKCk7CiAgICAgdm9pZCBzZW5kUmVzcG9uc2VJZk5lZWRlZCgpOwogCisgICAgc3Rh
dGljIFJlc291cmNlRXJyb3IgZXJyb3JGb3JSZXBseShRTmV0d29ya1JlcGx5Kik7CisKIHByaXZh
dGUgc2xvdHM6CiAgICAgdm9pZCB1cGxvYWRQcm9ncmVzcyhxaW50NjQgYnl0ZXNTZW50LCBxaW50
NjQgYnl0ZXNUb3RhbCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvcXQvUmVzb3VyY2VSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3F0L1Jlc291cmNlUmVxdWVzdC5oCmluZGV4IDBjN2I2MmI2ZmMzNjQ1ZWRkNjM4ZTg3ZWRi
NDkxNjg4MzNlOGRjNjYuLmNkNmY3NjAyNmQ5Njc2YTFiMWY0MTRlZDRjMzk1MGFlY2JhNDU4Y2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VS
ZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJj
ZVJlcXVlc3QuaApAQCAtNTksNyArNTksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHsKICAgICAgICAgfQogCi0gICAgICAgIFFOZXR3b3JrUmVxdWVzdCB0b05ldHdvcmtSZXF1ZXN0
KFFPYmplY3QqIG9yaWdpbmF0aW5nT2JqZWN0KSBjb25zdDsKKyAgICAgICAgUU5ldHdvcmtSZXF1
ZXN0IHRvTmV0d29ya1JlcXVlc3QoUU9iamVjdCogb3JpZ2luYXRpbmdPYmplY3QgPSAwKSBjb25z
dDsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBSZXNvdXJjZVJlcXVlc3RC
YXNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCmluZGV4IGEwMzBlZDVjYTIzN2UyYzMxNmMwM2M4MzA3ZGQ0ODUzNDQ2ZTQw
MWMuLmU1YmQ1NThhMTI1ZWMyNWE0NjgxZjljNmVlMTY0MGE2ZDA1ZWE1ZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw0NCBAQAorMjAxMS0wOS0xNSAgSmVzdXMgU2FuY2hlei1QYWxlbmNpYSAgPGpl
c3VzLnBhbGVuY2lhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1F0XVtXSzJdIEltcGxlbWVu
dCBEb3dubG9hZCBzdXBwb3J0IGluIFdlYlByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4MTUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgaW1wbGVtZW50IHRoZSBuZWNlc3NhcnkgZnVuY3Rp
b25zIG9mIERvd25sb2FkLmgsIGFuZCBvdXIgUXRGaWxlRG93bmxvYWRlcgorICAgICAgICB0byBo
YW5kbGUgYWxsIG5ldHdvcmsgY29tbXVuaWNhdGlvbiBhbmQgY2FsbCB0aGUgbmVjZXNzYXJ5IGZ1
bmN0aW9ucyBvZiBEb3dubG9hZC4KKworICAgICAgICBXZSB1c2UgdGhlIGRvd25sb2FkIHBvbGlj
eSBmb3IgYW55IE1JTUUgdHlwZSBub3Qgc3VwcG9ydGVkIGJ5IFdlYktpdC4gVGhpcworICAgICAg
ICBiZWhhdmVzIGxpa2UgUXQgbm9uLVdlYktpdDIgZXhjZXB0IHRoYXQgd2UgZG9uJ3QgZm9yY2Ug
ZG93bmxvYWQgd2hlbgorICAgICAgICB3ZSBlbmNvdW50ZXIgQ29udGVudC1EaXNwb3NpdGlvbjog
YXR0YWNobWVudC4gV2Ugc3RpbGwgdXNlIHRoZSAiZmlsZW5hbWU9IgorICAgICAgICBmaWVsZCBm
b3IgZmlsZSBuYW1lIHN1Z2dlc3Rpb24gdGhvdWdoLgorCisgICAgICAgIEJhc2VkIG9uIG9yaWdp
bmFsIHBhdGNoZXMgYnk6IEtpbW1vIEtpbm51bmVuIDxraW1tby50Lmtpbm51bmVuQG5va2lhLmNv
bT4sCisgICAgICAgIEpvY2VseW4gVHVyY290dGUgPGpvY2VseW4udHVyY290dGVAbm9raWEuY29t
PiwgU2ltb24gSGF1c21hbm4gPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KKyAgICAgICAgYW5k
IFphbGFuIEJ1anRhcyA8emFsYW4uYnVqdGFzQG5va2lhLmNvbT4uCisKKyAgICAgICAgKiBXZWJL
aXQyLnBybzoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHA6IEFk
ZGluZyBRdEZpbGVEb3dubG9hZGVyLCBRdCBwbGF0Zm9ybSBzcGVjaWZpYworICAgICAgICAoV2Vi
S2l0OjpEb3dubG9hZDo6RG93bmxvYWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkLmg6IEFkZGluZyBRdEZpbGVEb3dubG9hZGVyLCBRdCBwbGF0Zm9ybSBzcGVjaWZp
YworICAgICAgICAqIFdlYlByb2Nlc3MvRG93bmxvYWRzL3F0L0Rvd25sb2FkUXQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpEb3dubG9hZDo6c3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9h
ZDo6c3RhcnRXaXRoSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OmNhbmNlbCk6
CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpwbGF0Zm9ybUludmFsaWRhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpEb3dubG9hZDo6ZGlkRGVjaWRlRGVzdGluYXRpb24pOgorICAgICAgICAqIFdl
YlByb2Nlc3MvRG93bmxvYWRzL3F0L1F0RmlsZURvd25sb2FkZXIuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6UXRGaWxlRG93bmxvYWRlcjo6UXRGaWxlRG93bmxvYWRlcik6CisgICAgICAg
IChXZWJLaXQ6OlF0RmlsZURvd25sb2FkZXI6On5RdEZpbGVEb3dubG9hZGVyKToKKyAgICAgICAg
KFdlYktpdDo6UXRGaWxlRG93bmxvYWRlcjo6ZGV0ZXJtaW5lRmlsZW5hbWUpOgorICAgICAgICAo
V2ViS2l0OjpRdEZpbGVEb3dubG9hZGVyOjpkZWNpZGVkRGVzdGluYXRpb24pOgorICAgICAgICAo
V2ViS2l0OjpRdEZpbGVEb3dubG9hZGVyOjphYm9ydERvd25sb2FkV3JpdGluZ0FuZEVtaXRFcnJv
cik6CisgICAgICAgIChXZWJLaXQ6OlF0RmlsZURvd25sb2FkZXI6Om9uUmVhZHlSZWFkKToKKyAg
ICAgICAgKFdlYktpdDo6UXRGaWxlRG93bmxvYWRlcjo6b25GaW5pc2hlZCk6CisgICAgICAgIChX
ZWJLaXQ6OlF0RmlsZURvd25sb2FkZXI6Om9uRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpRdEZp
bGVEb3dubG9hZGVyOjpjYW5jZWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvRG93bmxvYWRzL3F0
L1F0RmlsZURvd25sb2FkZXIuaDogQWRkZWQuCisKIDIwMTEtMDktMTYgIEFuZGVycyBDYXJsc3Nv
biAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYmFjayB0aGUgV0tIaXRUZXN0
UmVzdWx0UmVmIHBhcmFtZXRlciB0byBtb3VzZURpZE1vdmVPdmVyRWxlbWVudCBpbiBhbiBBQkkg
cHJlc2VydmluZyB3YXkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJvIGIv
U291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcm8KaW5kZXggOTZiMjEwZDgwMmYwNWIzM2U2NGZmY2Q0
YTQ1MmE4OWQ1MGJhMmE4My4uODI0NmQ3OGQwZTJkNDIxYmE1ZTE0NGE5NjA5NWFhNDkwMTk1ZDFi
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcm8KKysrIGIvU291cmNlL1dl
YktpdDIvV2ViS2l0Mi5wcm8KQEAgLTI2NCw2ICsyNjQsNyBAQCBIRUFERVJTICs9IFwKICAgICBX
ZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oIFwKICAgICBXZWJQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZC5oIFwKICAgICBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1h
bmFnZXIuaCBcCisgICAgV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5o
IFwKICAgICBXZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIuaCBcCiAg
ICAgV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlci5oIFwKICAgICBXZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdl
ci5oIFwKQEAgLTUwMSw2ICs1MDIsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBXZWJQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZC5jcHAgXAogICAgIFdlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
TWFuYWdlci5jcHAgXAogICAgIFdlYlByb2Nlc3MvRG93bmxvYWRzL3F0L0Rvd25sb2FkUXQuY3Bw
IFwKKyAgICBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3dubG9hZGVyLmNwcCBcCiAg
ICAgV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcCBcCiAgICAg
V2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
ci5jcHAgXAogICAgIFdlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
LmNwcCBcCkBAIC01MTEsNyArNTEzLDcgQEAgU09VUkNFUyArPSBcCiAgICAgV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHAgXAogICAgIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVt
LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUNsaWVu
dC5jcHAgXAotICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRU
ZXN0UmVzdWx0LmNwcCBcICAgIAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwIFwKICAgICBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcCBcCiAg
ICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGll
bnQuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkLmNwcAppbmRleCBjOWZmNTkzOWMzZDllYjNmMWQyMzA3NjhkM2FkYTY2MzM4MmE3ZTc4Li4x
ZDA1OTQxNWFmOGFjNjY4MzA4MTcyZDQ1OTIzYjQ4MWMxNmM1YjdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwCkBAIC01MSw2ICs1MSw5
IEBAIERvd25sb2FkOjpEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCiAjaWYgVVNFKENGTkVUV09SSykKICAgICAsIG1fYWxsb3dPdmVy
d3JpdGUoZmFsc2UpCiAjZW5kaWYKKyNpZiBQTEFURk9STShRVCkKKyAgICAsIG1fcXREb3dubG9h
ZGVyKDApCisjZW5kaWYKIHsKICAgICBBU1NFUlQobV9kb3dubG9hZElEKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKaW5kZXggZmU5YTU2ZDFl
ZTIzYTI4ZmIzNjU5NzI0ZTNhNjFiY2MyZWQ1MjE0Yy4uYWNjY2QzZjg4ZTJhNjk5NTk3YTM5Yjdi
ZjgyOGQ0MzYzN2I3MGYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZC5oCkBAIC02MCw2ICs2MCwxMCBAQCBjbGFzcyBEb3dubG9hZEF1dGhlbnRp
Y2F0aW9uQ2xpZW50OwogY2xhc3MgU2FuZGJveEV4dGVuc2lvbjsKIGNsYXNzIFdlYlBhZ2U7CiAK
KyNpZiBQTEFURk9STShRVCkKK2NsYXNzIFF0RmlsZURvd25sb2FkZXI7CisjZW5kaWYKKwogY2xh
c3MgRG93bmxvYWQgOiBwdWJsaWMgQ29yZUlQQzo6TWVzc2FnZVNlbmRlcjxEb3dubG9hZD4gewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERvd25sb2FkKTsKIHB1YmxpYzoKQEAgLTEyNiw2ICsx
MzAsOSBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxDRlVSTERvd25sb2FkUmVmPiBtX2Rvd25s
b2FkOwogICAgIFJlZlB0cjxEb3dubG9hZEF1dGhlbnRpY2F0aW9uQ2xpZW50PiBtX2F1dGhlbnRp
Y2F0aW9uQ2xpZW50OwogI2VuZGlmCisjaWYgUExBVEZPUk0oUVQpCisgICAgUXRGaWxlRG93bmxv
YWRlciogbV9xdERvd25sb2FkZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvRG93
bmxvYWRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9Eb3du
bG9hZFF0LmNwcAppbmRleCBhZDVlN2RlZTZlNGQ0MDEyYmZjOWRlNjczNmZjNDYwODRiNmIxZDk4
Li4wODM2ZGU5YmYzNzA0ZjRlM2VkOGM2YmZiODFjNjZhNTEyODQ4YmJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9Eb3dubG9hZFF0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9Eb3dubG9hZFF0LmNwcApA
QCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBv
cmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yNiw3ICsyNywxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkRvd25sb2FkLmgiCiAKKyNpbmNsdWRlICJRdEZpbGVEb3dubG9hZGVyLmgiCisjaW5jbHVk
ZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1FOZXR3b3JrUmVwbHlIYW5kbGVyLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZUhhbmRsZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGVJbnRl
cm5hbC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMzQsMjcgKzQxLDM1IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiB2b2lkIERvd25sb2FkOjpzdGFydChXZWJQYWdlKiBpbml0aWF0aW5nV2ViUGFnZSkKIHsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIFFOZXR3b3JrQWNjZXNzTWFuYWdlciogbWFuYWdl
ciA9IFdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtBY2Nlc3NNYW5hZ2VyKCk7CisgICAgQVNT
RVJUKG1hbmFnZXIpOworICAgIEFTU0VSVCghbV9xdERvd25sb2FkZXIpOworCisgICAgbV9xdERv
d25sb2FkZXIgPSBuZXcgUXRGaWxlRG93bmxvYWRlcih0aGlzLCBhZG9wdFB0cihtYW5hZ2VyLT5n
ZXQobV9yZXF1ZXN0LnRvTmV0d29ya1JlcXVlc3QoKSkpKTsKIH0KIAotdm9pZCBEb3dubG9hZDo6
c3RhcnRXaXRoSGFuZGxlKFdlYlBhZ2UqIGluaXRpYXRpbmdQYWdlLCBSZXNvdXJjZUhhbmRsZSos
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgaW5pdGlhbFJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKQordm9pZCBEb3dubG9hZDo6c3RhcnRXaXRoSGFuZGxlKFdlYlBhZ2UqIGluaXRpYXRp
bmdQYWdlLCBSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGlu
aXRpYWxSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwKQogewotICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgQVNTRVJUKCFtX3F0RG93bmxvYWRlcik7CisKKyAgICBtX3F0RG93
bmxvYWRlciA9IG5ldyBRdEZpbGVEb3dubG9hZGVyKHRoaXMsIGFkb3B0UHRyKGhhbmRsZS0+Z2V0
SW50ZXJuYWwoKS0+bV9qb2ItPnJlbGVhc2UoKSkpOwogfQogCiB2b2lkIERvd25sb2FkOjpjYW5j
ZWwoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV9xdERvd25sb2FkZXItPmNhbmNl
bCgpOwogfQogCiB2b2lkIERvd25sb2FkOjpwbGF0Zm9ybUludmFsaWRhdGUoKQogewotICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgUV9BU1NFUlQobV9xdERvd25sb2FkZXIpOworICAgIG1fcXRE
b3dubG9hZGVyLT5kZWxldGVMYXRlcigpOworICAgIG1fcXREb3dubG9hZGVyID0gMDsKIH0KIAog
dm9pZCBEb3dubG9hZDo6ZGlkRGVjaWRlRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBkZXN0aW5h
dGlvbiwgYm9vbCBhbGxvd092ZXJ3cml0ZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IG1fcXREb3dubG9hZGVyLT5kZWNpZGVkRGVzdGluYXRpb24oZGVzdGluYXRpb24sIGFsbG93T3Zl
cndyaXRlKTsKIH0KIAogdm9pZCBEb3dubG9hZDo6cGxhdGZvcm1EaWRGaW5pc2goKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvUXRGaWxlRG93bmxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVE
b3dubG9hZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMWRhM2I5YjQyOWU2MGYzNmI1YjljMmY3OTZjMGNh
OTkwM2Q4YzUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9E
b3dubG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5jcHAKQEAgLTAsMCArMSwyMzggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRp
YXJ5KC1pZXMpCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBh
bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorICoKKyAqLworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlF0RmlsZURvd25sb2Fk
ZXIuaCIKKworI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJEb3dubG9hZC5o
IgorI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCisjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5o
IgorI2luY2x1ZGUgPFFDb3JlQXBwbGljYXRpb24+CisjaW5jbHVkZSA8UUZpbGU+CisjaW5jbHVk
ZSA8UUZpbGVJbmZvPgorI2luY2x1ZGUgPFFOZXR3b3JrQWNjZXNzTWFuYWdlcj4KKyNpbmNsdWRl
IDxXZWJDb3JlL1FOZXR3b3JrUmVwbHlIYW5kbGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZUVycm9yLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUXRGaWxlRG93
bmxvYWRlcjo6UXRGaWxlRG93bmxvYWRlcihEb3dubG9hZCogZG93bmxvYWQsIFBhc3NPd25QdHI8
UU5ldHdvcmtSZXBseT4gcmVwbHkpCisgICAgOiBtX2Rvd25sb2FkKGRvd25sb2FkKQorICAgICwg
bV9yZXBseShyZXBseSkKKyAgICAsIG1fZXJyb3IoUU5ldHdvcmtSZXBseTo6Tm9FcnJvcikKKyAg
ICAsIG1faGVhZGVyc1JlYWQoZmFsc2UpCit7CisgICAgY29ubmVjdChtX3JlcGx5LmdldCgpLCBT
SUdOQUwocmVhZHlSZWFkKCkpLCBTTE9UKG9uUmVhZHlSZWFkKCkpKTsKKyAgICBjb25uZWN0KG1f
cmVwbHkuZ2V0KCksIFNJR05BTChmaW5pc2hlZCgpKSwgU0xPVChvbkZpbmlzaGVkKCkpKTsKKyAg
ICBjb25uZWN0KG1fcmVwbHkuZ2V0KCksIFNJR05BTChlcnJvcihRTmV0d29ya1JlcGx5OjpOZXR3
b3JrRXJyb3IpKSwgU0xPVChvbkVycm9yKFFOZXR3b3JrUmVwbHk6Ok5ldHdvcmtFcnJvcikpKTsK
KworICAgIC8vIExldCdzIGVuc3VyZSB3ZSBzdGFydCB3aXRoIGNsZWFuIHBvaW50ZXJzLgorICAg
IG1fZGVzdGluYXRpb25GaWxlLmNsZWFyKCk7CisKKyAgICAvLyBDYWxsIG9uUmVhZHlSZWFkIGp1
c3QgaW4gY2FzZSBzb21lIGRhdGEgaXMgYWxyZWFkeSB3YWl0aW5nLgorICAgIG9uUmVhZHlSZWFk
KCk7Cit9CisKK1F0RmlsZURvd25sb2FkZXI6On5RdEZpbGVEb3dubG9hZGVyKCkKK3sKKyAgICBp
ZiAobV9kZXN0aW5hdGlvbkZpbGUpIHsKKyAgICAgICAgUmVzb3VyY2VFcnJvciBkb3dubG9hZEVy
cm9yKCJEb3dubG9hZCIsIFF0RmlsZURvd25sb2FkZXI6OkRvd25sb2FkRXJyb3JDYW5jZWxsZWQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3JlcGx5LT51cmwoKS50b1N0
cmluZygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUNvcmVBcHBsaWNh
dGlvbjo6dHJhbnNsYXRlKCJRdEZpbGVEb3dubG9hZGVyIiwgIkRvd25sb2FkIGNhbmNlbGxlZCIp
KTsKKyAgICAgICAgYWJvcnREb3dubG9hZFdyaXRpbmdBbmRFbWl0RXJyb3IoZG93bmxvYWRFcnJv
cik7CisKKyAgICAgICAgbV9kZXN0aW5hdGlvbkZpbGUtPmNsb3NlKCk7CisgICAgICAgIG1fZGVz
dGluYXRpb25GaWxlLmNsZWFyKCk7CisgICAgfQorfQorCit2b2lkIFF0RmlsZURvd25sb2FkZXI6
OmRldGVybWluZUZpbGVuYW1lKCkKK3sKKyAgICBRX0FTU0VSVCghbV9kZXN0aW5hdGlvbkZpbGUp
OworCisgICAgUVN0cmluZyBmaWxlTmFtZTsKKyAgICBRU3RyaW5nIGZpbGVOYW1lQ2FuZGlkYXRl
ID0gZmlsZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlvbihRU3RyaW5nOjpmcm9tQXNjaWko
bV9yZXBseS0+cmF3SGVhZGVyKCJDb250ZW50LURpc3Bvc2l0aW9uIikpKTsKKyAgICBpZiAoZmls
ZU5hbWVDYW5kaWRhdGUuaXNFbXB0eSgpKSB7CisgICAgICAgIEtVUkwga3VybCA9IG1fcmVwbHkt
PnVybCgpOworICAgICAgICBmaWxlTmFtZUNhbmRpZGF0ZSA9IGRlY29kZVVSTEVzY2FwZVNlcXVl
bmNlcyhrdXJsLmxhc3RQYXRoQ29tcG9uZW50KCkpOworICAgIH0KKworICAgIGlmIChmaWxlTmFt
ZUNhbmRpZGF0ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgbV9yZXBseS0+YWJvcnQoKTsKKyAgICAg
ICAgUmVzb3VyY2VFcnJvciBkb3dubG9hZEVycm9yKCJEb3dubG9hZCIsIFF0RmlsZURvd25sb2Fk
ZXI6OkRvd25sb2FkRXJyb3JGaWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fcmVwbHktPnVybCgpLnRvU3RyaW5nKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlF0RmlsZURvd25sb2Fk
ZXIiLCAiQ2Fubm90IGRldGVybWluZSBzYXZlZCBmaWxlbmFtZSIpKTsKKworICAgICAgICAvLyBE
b24ndCB1c2Ugc2l6ZSArIDEgc28gdGhlIGVuZGluZyAnXDAnIGJ5dGUgZnJvbSBRQnl0ZUFycmF5
OjpkYXRhKCkgaXMgZGlzY2FyZGVkCisgICAgICAgIG1fZG93bmxvYWQtPmRpZEZhaWwoZG93bmxv
YWRFcnJvciwgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihtX3JlcGx5LT5yZWFkQWxsKCkuZGF0YSgpKSwgbV9yZXBseS0+c2l6ZSgpKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBNYWtlIHN1cmUgdGhhdCB3ZSByZW1vdmUg
cG9zc2libGUgIi4uLy4uIiBwYXJ0cyBpbiB0aGUgZ2l2ZW4gZmlsZSBuYW1lLgorICAgIFFGaWxl
SW5mbyBmaWxlTmFtZUZpbHRlcihmaWxlTmFtZUNhbmRpZGF0ZSk7CisgICAgZmlsZU5hbWUgPSBm
aWxlTmFtZUZpbHRlci5maWxlTmFtZSgpOworCisgICAgaWYgKGZpbGVOYW1lLmlzRW1wdHkoKSkg
eworICAgICAgICBtX3JlcGx5LT5hYm9ydCgpOworICAgICAgICBSZXNvdXJjZUVycm9yIGRvd25s
b2FkRXJyb3IoIkRvd25sb2FkIiwgUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvckZpbGVu
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9yZXBseS0+dXJsKCku
dG9TdHJpbmcoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFDb3JlQXBw
bGljYXRpb246OnRyYW5zbGF0ZSgiUXRGaWxlRG93bmxvYWRlciIsICJDYW5ub3QgZGV0ZXJtaW5l
IHNhdmVkIGZpbGVuYW1lIikpOworICAgICAgICBtX2Rvd25sb2FkLT5kaWRGYWlsKGRvd25sb2Fk
RXJyb3IsIENvcmVJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4obV9yZXBseS0+cmVhZEFsbCgpLmRhdGEoKSksIG1fcmVwbHktPnNpemUoKSkpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgYm9vbCBhbGxvd092ZXJ3cml0ZTsKKyAgICBtX2Rv
d25sb2FkLT5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShmaWxlTmFtZSwg
YWxsb3dPdmVyd3JpdGUpOworfQorCit2b2lkIFF0RmlsZURvd25sb2FkZXI6OmRlY2lkZWREZXN0
aW5hdGlvbihjb25zdCBRU3RyaW5nJiBkZWNpZGVkRmlsZVBhdGgsIGJvb2wgYWxsb3dPdmVyd3Jp
dGUpCit7CisgICAgUV9BU1NFUlQoIW1fZGVzdGluYXRpb25GaWxlKTsKKworICAgIC8vIEVycm9y
IG1pZ2h0IGhhdmUgb2NjdXJlZCBkdXJpbmcgZGVzdGluYXRpb24gcXVlcnkuCisgICAgaWYgKG1f
ZXJyb3IgIT0gUU5ldHdvcmtSZXBseTo6Tm9FcnJvcikgeworICAgICAgICBtX3JlcGx5LT5hYm9y
dCgpOworICAgICAgICBtX2Rvd25sb2FkLT5kaWRGYWlsKFFOZXR3b3JrUmVwbHlIYW5kbGVyOjpl
cnJvckZvclJlcGx5KG1fcmVwbHkuZ2V0KCkpLCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fcmVwbHktPnJlYWRBbGwoKS5kYXRhKCkpLCBt
X3JlcGx5LT5zaXplKCkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChkZWNp
ZGVkRmlsZVBhdGguaXNFbXB0eSgpKSB7CisgICAgICAgIG1fcmVwbHktPmFib3J0KCk7CisgICAg
ICAgIFJlc291cmNlRXJyb3IgZG93bmxvYWRFcnJvcigiRG93bmxvYWQiLCBRdEZpbGVEb3dubG9h
ZGVyOjpEb3dubG9hZEVycm9yQ2FuY2VsbGVkQnlDYWxsZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX3JlcGx5LT51cmwoKS50b1N0cmluZygpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRdEZp
bGVEb3dubG9hZGVyIiwgIkRvd25sb2FkIGNhbmNlbGxlZCBieSBjYWxsZXIiKSk7CisgICAgICAg
IG1fZG93bmxvYWQtPmRpZEZhaWwoZG93bmxvYWRFcnJvciwgQ29yZUlQQzo6RGF0YVJlZmVyZW5j
ZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtX3JlcGx5LT5yZWFkQWxsKCkuZGF0
YSgpKSwgbV9yZXBseS0+c2l6ZSgpKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBP
d25QdHI8UUZpbGU+IGRvd25sb2FkRmlsZSA9IGFkb3B0UHRyKG5ldyBRRmlsZShkZWNpZGVkRmls
ZVBhdGgpKTsKKworICAgIGlmICghYWxsb3dPdmVyd3JpdGUgJiYgZG93bmxvYWRGaWxlLT5leGlz
dHMoKSkgeworICAgICAgICBtX3JlcGx5LT5hYm9ydCgpOworICAgICAgICBSZXNvdXJjZUVycm9y
IGRvd25sb2FkRXJyb3IoIkRvd25sb2FkIiwgUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJv
ckZpbGVBbHJlYWR5RXhpc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9yZXBseS0+dXJsKCkudG9TdHJpbmcoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUXRGaWxlRG93bmxvYWRlciIsICJG
aWxlIGFscmVhZHkgZXhpc3RzIikpOworICAgICAgICBtX2Rvd25sb2FkLT5kaWRGYWlsKGRvd25s
b2FkRXJyb3IsIENvcmVJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4obV9yZXBseS0+cmVhZEFsbCgpLmRhdGEoKSksIG1fcmVwbHktPnNpemUoKSkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gRklYTUU6IGhlcmUncyBhIHJhY2UgY29u
ZGl0aW9uIGR1ZSB0byBxdCBhcGkgbm90IGFsbG93aW5nCisgICAgLy8gZmlsZXMgdG8gYmUgY3Jl
YXRlZCBvbmx5IGlmIHRoZXkgZG9uJ3QgZXhpc3QKKworICAgIGlmICghZG93bmxvYWRGaWxlLT5v
cGVuKFFJT0RldmljZTo6V3JpdGVPbmx5IHwgUUlPRGV2aWNlOjpUcnVuY2F0ZSkpIHsKKyAgICAg
ICAgbV9yZXBseS0+YWJvcnQoKTsKKyAgICAgICAgUmVzb3VyY2VFcnJvciBkb3dubG9hZEVycm9y
KCJEb3dubG9hZCIsIFF0RmlsZURvd25sb2FkZXI6OkRvd25sb2FkRXJyb3JDYW5ub3RPcGVuRmls
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcmVwbHktPnVybCgpLnRv
U3RyaW5nKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRQ29yZUFwcGxp
Y2F0aW9uOjp0cmFuc2xhdGUoIlF0RmlsZURvd25sb2FkZXIiLCAiQ2Fubm90IG9wZW4gZmlsZSBm
b3Igd3JpdGluZyIpKTsKKyAgICAgICAgbV9kb3dubG9hZC0+ZGlkRmFpbChkb3dubG9hZEVycm9y
LCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KG1fcmVwbHktPnJlYWRBbGwoKS5kYXRhKCkpLCBtX3JlcGx5LT5zaXplKCkpKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIC8vIEFzc2lnbmluZyB0byBtX2Rlc3RpbmF0aW9uRmlsZSBm
bGFncyB0aGF0IGVpdGhlciBlcnJvciBvcgorICAgIC8vIGZpbmlzaGVkIHNoYWxsIGJlIGNhbGxl
ZCBpbiB0aGUgZW5kLgorICAgIG1fZGVzdGluYXRpb25GaWxlID0gZG93bmxvYWRGaWxlLnJlbGVh
c2UoKTsKKworICAgIG1fZG93bmxvYWQtPmRpZENyZWF0ZURlc3RpbmF0aW9uKG1fZGVzdGluYXRp
b25GaWxlLT5maWxlTmFtZSgpKTsKKworICAgIC8vIFdlIG1pZ2h0IGhhdmUgZ290dGVuIHJlYWR5
UmVhZCBhbHJlYWR5IGV2ZW4gYmVmb3JlIHRoaXMgZnVuY3Rpb24KKyAgICAvLyB3YXMgY2FsbGVk
LgorICAgIGlmIChtX3JlcGx5LT5ieXRlc0F2YWlsYWJsZSgpKQorICAgICAgICBvblJlYWR5UmVh
ZCgpOworCisgICAgLy8gV2UgbWlnaHQgaGF2ZSBnb3R0ZW4gZmluaXNoZWQgYWxyZWFkeSBldmVu
IGJlZm9yZSB0aGlzCisgICAgLy8gZnVuY3Rpb24gd2FzIGNhbGxlZC4KKyAgICBpZiAobV9yZXBs
eS0+aXNGaW5pc2hlZCgpKQorICAgICAgICBvbkZpbmlzaGVkKCk7CisKK30KKwordm9pZCBRdEZp
bGVEb3dubG9hZGVyOjphYm9ydERvd25sb2FkV3JpdGluZ0FuZEVtaXRFcnJvcihjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvckNvZGUpCit7CisgICAgbV9yZXBseS0+YWJvcnQoKTsKKyAgICBtX2Rv
d25sb2FkLT5kaWRGYWlsKGVycm9yQ29kZSwgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZShyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtX3JlcGx5LT5yZWFkQWxsKCkuZGF0YSgpKSwgbV9y
ZXBseS0+c2l6ZSgpKSk7Cit9CisKKwordm9pZCBRdEZpbGVEb3dubG9hZGVyOjpvblJlYWR5UmVh
ZCgpCit7CisgICAgaWYgKG1fZGVzdGluYXRpb25GaWxlKSB7CisgICAgICAgIFFCeXRlQXJyYXkg
Y29udGVudCA9IG1fcmVwbHktPnJlYWRBbGwoKTsKKyAgICAgICAgaWYgKGNvbnRlbnQuc2l6ZSgp
IDw9IDApCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgcWludDY0IGJ5dGVzV3JpdHRl
biA9IG1fZGVzdGluYXRpb25GaWxlLT53cml0ZShjb250ZW50KTsKKworICAgICAgICBpZiAoYnl0
ZXNXcml0dGVuID09IC0xIHx8IGJ5dGVzV3JpdHRlbiAhPSBjb250ZW50LnNpemUoKSkgeworICAg
ICAgICAgICAgUmVzb3VyY2VFcnJvciBkb3dubG9hZEVycm9yKCJEb3dubG9hZCIsIFF0RmlsZURv
d25sb2FkZXI6OkRvd25sb2FkRXJyb3JVbmFibGVUb1dyaXRlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1fcmVwbHktPnVybCgpLnRvU3RyaW5nKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNs
YXRlKCJRdEZpbGVEb3dubG9hZGVyIiwgIlVuYWJsZSB0byB3cml0ZSIpKTsKKyAgICAgICAgICAg
IGFib3J0RG93bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKGRvd25sb2FkRXJyb3IpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgbV9kb3dubG9hZC0+ZGlkUmVjZWl2
ZURhdGEoYnl0ZXNXcml0dGVuKTsKKyAgICB9IGVsc2UgaWYgKCFtX2hlYWRlcnNSZWFkKSB7Cisg
ICAgICAgIC8vIEJ5IEFQSSBjb250cmFjdCwgUU5ldHdvcmtSZXBseTo6bWV0YURhdGFDaGFuZ2Vk
IGNhbm5vdCByZWFsbHkgYmUgdHJ1c3RlZC4KKyAgICAgICAgLy8gVGh1cyB3ZSBuZWVkIHRvIGNh
bGwgdGhpcyB1cG9uIHJlY2VpdmluZyBmaXJzdCBkYXRhLgorICAgICAgICBXVEY6OlN0cmluZyBj
b250ZW50VHlwZSA9IG1fcmVwbHktPmhlYWRlcihRTmV0d29ya1JlcXVlc3Q6OkNvbnRlbnRUeXBl
SGVhZGVyKS50b1N0cmluZygpOworICAgICAgICBXVEY6OlN0cmluZyBlbmNvZGluZyA9IGV4dHJh
Y3RDaGFyc2V0RnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSk7CisgICAgICAgIFdURjo6U3RyaW5n
IG1pbWVUeXBlID0gZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSk7CisK
KyAgICAgICAgLy8gTGV0J3MgdHJ5IHRvIGd1ZXNzIGZyb20gdGhlIGV4dGVuc2lvbi4KKyAgICAg
ICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIG1pbWVUeXBlID0gTUlNRVR5
cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JQYXRoKG1fcmVwbHktPnVybCgpLnBhdGgoKSk7CisK
KyAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShtX3JlcGx5LT51cmwoKSwgbWltZVR5
cGUsIG1fcmVwbHktPmhlYWRlcihRTmV0d29ya1JlcXVlc3Q6OkNvbnRlbnRMZW5ndGhIZWFkZXIp
LnRvTG9uZ0xvbmcoKSwgZW5jb2RpbmcsIFN0cmluZygpKTsKKyAgICAgICAgbV9kb3dubG9hZC0+
ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKKworICAgICAgICBkZXRlcm1pbmVGaWxlbmFt
ZSgpOworCisgICAgICAgIG1faGVhZGVyc1JlYWQgPSB0cnVlOworICAgIH0KK30KKwordm9pZCBR
dEZpbGVEb3dubG9hZGVyOjpvbkZpbmlzaGVkKCkKK3sKKyAgICBpZiAobV9kZXN0aW5hdGlvbkZp
bGUpIHsKKyAgICAgICAgbV9kZXN0aW5hdGlvbkZpbGUtPmNsb3NlKCk7CisgICAgICAgIG1fZGVz
dGluYXRpb25GaWxlLmNsZWFyKCk7CisKKyAgICAgICAgaWYgKG1fZXJyb3IgPT0gUU5ldHdvcmtS
ZXBseTo6Tm9FcnJvcikKKyAgICAgICAgICAgIG1fZG93bmxvYWQtPmRpZEZpbmlzaCgpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBtX2Rvd25sb2FkLT5kaWRGYWlsKFFOZXR3b3JrUmVwbHlI
YW5kbGVyOjplcnJvckZvclJlcGx5KG1fcmVwbHkuZ2V0KCkpLCBDb3JlSVBDOjpEYXRhUmVmZXJl
bmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fcmVwbHktPnJlYWRBbGwoKS5k
YXRhKCkpLCBtX3JlcGx5LT5zaXplKCkpKTsKKyAgICB9Cit9CisKK3ZvaWQgUXRGaWxlRG93bmxv
YWRlcjo6b25FcnJvcihRTmV0d29ya1JlcGx5OjpOZXR3b3JrRXJyb3IgY29kZSkKK3sKKyAgICBt
X2Vycm9yID0gY29kZTsKK30KKwordm9pZCBRdEZpbGVEb3dubG9hZGVyOjpjYW5jZWwoKQorewor
ICAgIG1fcmVwbHktPmFib3J0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorI2luY2x1
ZGUgIm1vY19RdEZpbGVEb3dubG9hZGVyLmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L1F0RmlsZURvd25sb2FkZXIuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L1F0RmlsZURvd25sb2FkZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44ZGY5Y2MwZDQxOTUxZjA0ZmIyNjQ0Y2IxMTMzZmUzZWY5NzU0OTQxCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvUXRGaWxlRG93bmxv
YWRlci5oCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEg
Q29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogVGhpcyBwcm9n
cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIFF0Rmls
ZURvd25sb2FkZXJfaAorI2RlZmluZSBRdEZpbGVEb3dubG9hZGVyX2gKKworI2luY2x1ZGUgPFFO
ZXR3b3JrUmVwbHk+CisjaW5jbHVkZSA8UU5ldHdvcmtSZXF1ZXN0PgorI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCitjbGFzcyBRRmlsZTsKK2Ns
YXNzIFFOZXR3b3JrQWNjZXNzTWFuYWdlcjsKK2NsYXNzIFFOZXR3b3JrUmVxdWVzdDsKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUmVzb3VyY2VFcnJvcjsKK30KKworbmFtZXNwYWNlIFdl
YktpdCB7CitjbGFzcyBEb3dubG9hZDsKKworY2xhc3MgUXRGaWxlRG93bmxvYWRlciA6IHB1Ymxp
YyBRT2JqZWN0IHsKKyAgICBRX09CSkVDVAorcHVibGljOgorICAgIFF0RmlsZURvd25sb2FkZXIo
RG93bmxvYWQqLCBQYXNzT3duUHRyPFFOZXR3b3JrUmVwbHk+KTsKKyAgICB2aXJ0dWFsIH5RdEZp
bGVEb3dubG9hZGVyKCk7CisgICAgdm9pZCBkZWNpZGVkRGVzdGluYXRpb24oY29uc3QgUVN0cmlu
ZyYgZGVjaWRlZEZpbGVQYXRoLCBib29sIGFsbG93T3ZlcndyaXRlKTsKKyAgICB2b2lkIGNhbmNl
bCgpOworCisgICAgZW51bSBEb3dubG9hZEVycm9yIHsKKyAgICAgICAgRG93bmxvYWRFcnJvckNh
bmNlbGxlZCA9IC02LAorICAgICAgICBEb3dubG9hZEVycm9yVW5hYmxlVG9Xcml0ZSA9IC01LAor
ICAgICAgICBEb3dubG9hZEVycm9yQ2Fubm90T3BlbkZpbGUgPSAtNCwKKyAgICAgICAgRG93bmxv
YWRFcnJvckZpbGVBbHJlYWR5RXhpc3RzID0gLTMsCisgICAgICAgIERvd25sb2FkRXJyb3JDYW5j
ZWxsZWRCeUNhbGxlciA9IC0yLAorICAgICAgICBEb3dubG9hZEVycm9yRmlsZW5hbWUgPSAtMQor
ICAgIH07CisKK3ByaXZhdGUgc2xvdHM6CisgICAgdm9pZCBvblJlYWR5UmVhZCgpOworICAgIHZv
aWQgb25GaW5pc2hlZCgpOworICAgIHZvaWQgb25FcnJvcihRTmV0d29ya1JlcGx5OjpOZXR3b3Jr
RXJyb3IgY29kZSk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBhYm9ydERvd25sb2FkV3JpdGluZ0Fu
ZEVtaXRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvckNvZGUpOworICAg
IHZvaWQgZGV0ZXJtaW5lRmlsZW5hbWUoKTsKKworICAgIERvd25sb2FkKiBtX2Rvd25sb2FkOwor
ICAgIE93blB0cjxRTmV0d29ya1JlcGx5PiBtX3JlcGx5OworICAgIE93blB0cjxRRmlsZT4gbV9k
ZXN0aW5hdGlvbkZpbGU7CisgICAgUU5ldHdvcmtSZXBseTo6TmV0d29ya0Vycm9yIG1fZXJyb3I7
CisgICAgYm9vbCBtX2hlYWRlcnNSZWFkOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107865</attachid>
            <date>2011-09-19 08:57:17 -0700</date>
            <delta_ts>2011-09-20 05:52:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68153-20110919125701.patch</filename>
            <type>text/plain</type>
            <size>24791</size>
            <attacher name="Jesus Sanchez-Palencia">jesus</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU0MTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5ZmZhMDM2ZTRjOGQ1M2Ni
NDkzODgxMWRmNzBlZDk1OTRiNGJjNmZiLi4xOTdkMjM4NzZhMzMyNzMwYzBkMzAwOTg4MGQwNmIy
OGVmMWYxOWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDktMTUgIEplc3Vz
IFNhbmNoZXotUGFsZW5jaWEgIDxqZXN1cy5wYWxlbmNpYUBvcGVuYm9zc2Eub3JnPgorCisgICAg
ICAgIFtRdF1bV0syXSBJbXBsZW1lbnQgRG93bmxvYWQgc3VwcG9ydCBpbiBXZWJQcm9jZXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODE1MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yZWQg
UU5ldHdvcmtSZXBseUhhbmRsZXI6OmZpbmlzaCgpIGluIG9yZGVyIHRvIGFkZAorICAgICAgICBh
bmQgdXNlIHRoZSBzdGF0aWMgZnVuY3Rpb24gUU5ldHdvcmtSZXBseUhhbmRsZXI6OmVycm9yRm9y
UmVwbHkoKS4KKyAgICAgICAgVGhpcyB3aWxsIGJlIHVzZWQgYnkgb3VyIERvd25sb2FkIGltcGxl
bWVudGF0aW9uIGluIFdlYktpdDIgKFdlYlByb2Nlc3MpCisgICAgICAgIHdoZW4gaGFuZGxpbmcg
UmVzb3VyY2VFcnJvci4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtS
ZXBseUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UU5ldHdvcmtSZXBseUhhbmRsZXI6
OmZpbmlzaCk6CisgICAgICAgIChXZWJDb3JlOjpRTmV0d29ya1JlcGx5SGFuZGxlcjo6ZXJyb3JG
b3JSZXBseSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFu
ZGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXF1ZXN0Lmg6
CisKIDIwMTEtMDktMTkgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGRpZE1hcmtET01Db250ZW50RXZlbnQoKSBzaG91bGQg
c2VuZCBldmVudCBvZiBNYXJrRE9NQ29udGVudCB0eXBlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNwcApp
bmRleCA2YTAzY2NkMjcyYjZlNDEyM2Q1NzE4MWFhOWIwYjdhZTJkM2Q1MzI0Li41YWYwMDQ5ZGE0
OWMzMmRiZWVkN2MxZDI2NWI3MDIzNzkzNzQ2NjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNwcApA
QCAtNDU1LDE4ICs0NTUsOCBAQCB2b2lkIFFOZXR3b3JrUmVwbHlIYW5kbGVyOjpmaW5pc2goKQog
CiAgICAgaWYgKCFtX3JlcGx5V3JhcHBlci0+cmVwbHkoKS0+ZXJyb3IoKSB8fCBzaG91bGRJZ25v
cmVIdHRwRXJyb3IobV9yZXBseVdyYXBwZXItPnJlcGx5KCksIG1fcmVwbHlXcmFwcGVyLT5yZXNw
b25zZUNvbnRhaW5zRGF0YSgpKSkKICAgICAgICAgY2xpZW50LT5kaWRGaW5pc2hMb2FkaW5nKG1f
cmVzb3VyY2VIYW5kbGUsIDApOwotICAgIGVsc2UgewotICAgICAgICBRVXJsIHVybCA9IG1fcmVw
bHlXcmFwcGVyLT5yZXBseSgpLT51cmwoKTsKLSAgICAgICAgaW50IGh0dHBTdGF0dXNDb2RlID0g
bV9yZXBseVdyYXBwZXItPnJlcGx5KCktPmF0dHJpYnV0ZShRTmV0d29ya1JlcXVlc3Q6Okh0dHBT
dGF0dXNDb2RlQXR0cmlidXRlKS50b0ludCgpOwotCi0gICAgICAgIGlmIChodHRwU3RhdHVzQ29k
ZSkgewotICAgICAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcigiSFRUUCIsIGh0dHBTdGF0dXND
b2RlLCB1cmwudG9TdHJpbmcoKSwgbV9yZXBseVdyYXBwZXItPnJlcGx5KCktPmF0dHJpYnV0ZShR
TmV0d29ya1JlcXVlc3Q6Okh0dHBSZWFzb25QaHJhc2VBdHRyaWJ1dGUpLnRvU3RyaW5nKCkpOwot
ICAgICAgICAgICAgY2xpZW50LT5kaWRGYWlsKG1fcmVzb3VyY2VIYW5kbGUsIGVycm9yKTsKLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3IoIlF0TmV0d29y
ayIsIG1fcmVwbHlXcmFwcGVyLT5yZXBseSgpLT5lcnJvcigpLCB1cmwudG9TdHJpbmcoKSwgbV9y
ZXBseVdyYXBwZXItPnJlcGx5KCktPmVycm9yU3RyaW5nKCkpOwotICAgICAgICAgICAgY2xpZW50
LT5kaWRGYWlsKG1fcmVzb3VyY2VIYW5kbGUsIGVycm9yKTsKLSAgICAgICAgfQotICAgIH0KKyAg
ICBlbHNlCisgICAgICAgIGNsaWVudC0+ZGlkRmFpbChtX3Jlc291cmNlSGFuZGxlLCBlcnJvckZv
clJlcGx5KG1fcmVwbHlXcmFwcGVyLT5yZXBseSgpKSk7CiAKICAgICBtX3JlcGx5V3JhcHBlciA9
IG51bGxwdHI7CiB9CkBAIC02OTQsNiArNjg0LDE3IEBAIHZvaWQgUU5ldHdvcmtSZXBseUhhbmRs
ZXI6OnN0YXJ0KCkKICAgICAgICAgY29ubmVjdChtX3JlcGx5V3JhcHBlci0+cmVwbHkoKSwgU0lH
TkFMKHVwbG9hZFByb2dyZXNzKHFpbnQ2NCwgcWludDY0KSksIHRoaXMsIFNMT1QodXBsb2FkUHJv
Z3Jlc3MocWludDY0LCBxaW50NjQpKSk7CiB9CiAKK1Jlc291cmNlRXJyb3IgUU5ldHdvcmtSZXBs
eUhhbmRsZXI6OmVycm9yRm9yUmVwbHkoUU5ldHdvcmtSZXBseSogcmVwbHkpCit7CisgICAgUVVy
bCB1cmwgPSByZXBseS0+dXJsKCk7CisgICAgaW50IGh0dHBTdGF0dXNDb2RlID0gcmVwbHktPmF0
dHJpYnV0ZShRTmV0d29ya1JlcXVlc3Q6Okh0dHBTdGF0dXNDb2RlQXR0cmlidXRlKS50b0ludCgp
OworCisgICAgaWYgKGh0dHBTdGF0dXNDb2RlKQorICAgICAgICByZXR1cm4gUmVzb3VyY2VFcnJv
cigiSFRUUCIsIGh0dHBTdGF0dXNDb2RlLCB1cmwudG9TdHJpbmcoKSwgcmVwbHktPmF0dHJpYnV0
ZShRTmV0d29ya1JlcXVlc3Q6Okh0dHBSZWFzb25QaHJhc2VBdHRyaWJ1dGUpLnRvU3RyaW5nKCkp
OworCisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoIlF0TmV0d29yayIsIHJlcGx5LT5lcnJvcigp
LCB1cmwudG9TdHJpbmcoKSwgcmVwbHktPmVycm9yU3RyaW5nKCkpOworfQorCiB9CiAKICNpbmNs
dWRlICJtb2NfUU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5oCmluZGV4
IDlkMzZkYTIyMWQ4NTJmMTI1NzVlNTE3YzJlODNkMTE3YmI2NjA5NWQuLmY3YTQ0N2E1Y2E3MmY3
NzkyNzIyOGEyOTNkY2UyNjBkOWU2MjlmMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmgKQEAgLTM2LDYg
KzM2LDcgQEAgUVRfRU5EX05BTUVTUEFDRQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBG
b3JtRGF0YUlPRGV2aWNlOworY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlSGFu
ZGxlOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKQEAg
LTEzMyw2ICsxMzQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBmb3J3YXJkRGF0YSgpOwogICAgIHZv
aWQgc2VuZFJlc3BvbnNlSWZOZWVkZWQoKTsKIAorICAgIHN0YXRpYyBSZXNvdXJjZUVycm9yIGVy
cm9yRm9yUmVwbHkoUU5ldHdvcmtSZXBseSopOworCiBwcml2YXRlIHNsb3RzOgogICAgIHZvaWQg
dXBsb2FkUHJvZ3Jlc3MocWludDY0IGJ5dGVzU2VudCwgcWludDY0IGJ5dGVzVG90YWwpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlUmVx
dWVzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZVJlcXVl
c3QuaAppbmRleCAwYzdiNjJiNmZjMzY0NWVkZDYzOGU4N2VkYjQ5MTY4ODMzZThkYzY2Li5jZDZm
NzYwMjZkOTY3NmExYjFmNDE0ZWQ0YzM5NTBhZWNiYTQ1OGNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlUmVxdWVzdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXF1ZXN0LmgKQEAgLTU5LDcg
KzU5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB7CiAgICAgICAgIH0KIAotICAg
ICAgICBRTmV0d29ya1JlcXVlc3QgdG9OZXR3b3JrUmVxdWVzdChRT2JqZWN0KiBvcmlnaW5hdGlu
Z09iamVjdCkgY29uc3Q7CisgICAgICAgIFFOZXR3b3JrUmVxdWVzdCB0b05ldHdvcmtSZXF1ZXN0
KFFPYmplY3QqIG9yaWdpbmF0aW5nT2JqZWN0ID0gMCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgog
ICAgICAgICBmcmllbmQgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0QmFzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAx
NDIyOWE4ZjkyOGFkY2U1Njc1Mjk1YjJlZTc4ZGEzZjg5Y2ViNzExLi43MTA1ZjNmMWVlYTQ2YzU3
MWZkNjBhZTBiYzU1YTNmM2VlZjUxZDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIw
MTEtMDktMTUgIEplc3VzIFNhbmNoZXotUGFsZW5jaWEgIDxqZXN1cy5wYWxlbmNpYUBvcGVuYm9z
c2Eub3JnPgorCisgICAgICAgIFtRdF1bV0syXSBJbXBsZW1lbnQgRG93bmxvYWQgc3VwcG9ydCBp
biBXZWJQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02ODE1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdlIGltcGxlbWVudCB0aGUgbmVjZXNzYXJ5IGZ1bmN0aW9ucyBvZiBEb3dubG9hZC5oLCBh
bmQgb3VyIFF0RmlsZURvd25sb2FkZXIKKyAgICAgICAgdG8gaGFuZGxlIGFsbCBuZXR3b3JrIGNv
bW11bmljYXRpb24gYW5kIGNhbGwgdGhlIG5lY2Vzc2FyeSBmdW5jdGlvbnMgb2YgRG93bmxvYWQu
CisKKyAgICAgICAgV2UgdXNlIHRoZSBkb3dubG9hZCBwb2xpY3kgZm9yIGFueSBNSU1FIHR5cGUg
bm90IHN1cHBvcnRlZCBieSBXZWJLaXQuIFRoaXMKKyAgICAgICAgYmVoYXZlcyBsaWtlIFF0IG5v
bi1XZWJLaXQyIGV4Y2VwdCB0aGF0IHdlIGRvbid0IGZvcmNlIGRvd25sb2FkIHdoZW4KKyAgICAg
ICAgd2UgZW5jb3VudGVyIENvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQuIFdlIHN0aWxs
IHVzZSB0aGUgImZpbGVuYW1lPSIKKyAgICAgICAgZmllbGQgZm9yIGZpbGUgbmFtZSBzdWdnZXN0
aW9uIHRob3VnaC4KKworICAgICAgICBCYXNlZCBvbiBvcmlnaW5hbCBwYXRjaGVzIGJ5OiBLaW1t
byBLaW5udW5lbiA8a2ltbW8udC5raW5udW5lbkBub2tpYS5jb20+LAorICAgICAgICBKb2NlbHlu
IFR1cmNvdHRlIDxqb2NlbHluLnR1cmNvdHRlQG5va2lhLmNvbT4sIFNpbW9uIEhhdXNtYW5uIDxz
aW1vbi5oYXVzbWFubkBub2tpYS5jb20+CisgICAgICAgIGFuZCBaYWxhbiBCdWp0YXMgPHphbGFu
LmJ1anRhc0Bub2tpYS5jb20+LgorCisgICAgICAgICogV2ViS2l0Mi5wcm86CisgICAgICAgICog
V2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwOiBBZGRpbmcgUXRGaWxlRG93bmxvYWRl
ciwgUXQgcGxhdGZvcm0gc3BlY2lmaWMKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OkRvd25s
b2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oOiBBZGRpbmcg
UXRGaWxlRG93bmxvYWRlciwgUXQgcGxhdGZvcm0gc3BlY2lmaWMKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0Rvd25sb2Fkcy9xdC9Eb3dubG9hZFF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxv
YWQ6OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnN0YXJ0V2l0aEhhbmRsZSk6
CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpjYW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpE
b3dubG9hZDo6cGxhdGZvcm1JbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6
OmRpZERlY2lkZURlc3RpbmF0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9x
dC9RdEZpbGVEb3dubG9hZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlF0RmlsZURv
d25sb2FkZXI6OlF0RmlsZURvd25sb2FkZXIpOgorICAgICAgICAoV2ViS2l0OjpRdEZpbGVEb3du
bG9hZGVyOjp+UXRGaWxlRG93bmxvYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlF0RmlsZURvd25s
b2FkZXI6OmRldGVybWluZUZpbGVuYW1lKToKKyAgICAgICAgKFdlYktpdDo6UXRGaWxlRG93bmxv
YWRlcjo6ZGVjaWRlZERlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UXRGaWxlRG93bmxv
YWRlcjo6YWJvcnREb3dubG9hZFdyaXRpbmdBbmRFbWl0RXJyb3IpOgorICAgICAgICAoV2ViS2l0
OjpRdEZpbGVEb3dubG9hZGVyOjpvblJlYWR5UmVhZCk6CisgICAgICAgIChXZWJLaXQ6OlF0Rmls
ZURvd25sb2FkZXI6Om9uRmluaXNoZWQpOgorICAgICAgICAoV2ViS2l0OjpRdEZpbGVEb3dubG9h
ZGVyOjpvbkVycm9yKToKKyAgICAgICAgKFdlYktpdDo6UXRGaWxlRG93bmxvYWRlcjo6Y2FuY2Vs
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3dubG9hZGVyLmg6
IEFkZGVkLgorCiAyMDExLTA5LTE5ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBGaXggZGlzdGNoZWNrIGJ1aWxkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBybyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJv
CmluZGV4IDk2YjIxMGQ4MDJmMDViMzNlNjRmZmNkNGE0NTJhODlkNTBiYTJhODMuLjgyNDZkNzhk
MGUyZDQyMWJhNWUxNDRhOTYwOTVhYTQ5MDE5NWQxYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYktpdDIucHJvCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJvCkBAIC0yNjQs
NiArMjY0LDcgQEAgSEVBREVSUyArPSBcCiAgICAgV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tp
ZU1hbmFnZXIuaCBcCiAgICAgV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaCBcCiAgICAg
V2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmggXAorICAgIFdlYlByb2Nlc3Mv
RG93bmxvYWRzL3F0L1F0RmlsZURvd25sb2FkZXIuaCBcCiAgICAgV2ViUHJvY2Vzcy9GdWxsU2Ny
ZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmggXAogICAgIFdlYlByb2Nlc3MvR2VvbG9jYXRpb24v
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCBcCiAgICAgV2ViUHJvY2Vzcy9H
ZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaCBcCkBAIC01MDEsNiArNTAyLDcgQEAg
U09VUkNFUyArPSBcCiAgICAgV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwIFwKICAg
ICBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwIFwKICAgICBXZWJQcm9j
ZXNzL0Rvd25sb2Fkcy9xdC9Eb3dubG9hZFF0LmNwcCBcCisgICAgV2ViUHJvY2Vzcy9Eb3dubG9h
ZHMvcXQvUXRGaWxlRG93bmxvYWRlci5jcHAgXAogICAgIFdlYlByb2Nlc3MvRnVsbFNjcmVlbi9X
ZWJGdWxsU2NyZWVuTWFuYWdlci5jcHAgXAogICAgIFdlYlByb2Nlc3MvR2VvbG9jYXRpb24vR2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwIFwKICAgICBXZWJQcm9jZXNzL0dl
b2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHAgXApAQCAtNTExLDcgKzUxMyw3IEBA
IFNPVVJDRVMgKz0gXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVCYWNrRm9yd2FyZExpc3QuY3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwIFwKLSAgICBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAgXCAgICAKKyAgICBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAg
XAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9u
QWN0aW9uLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAKaW5kZXggYzlmZjU5MzljM2Q5
ZWIzZjFkMjMwNzY4ZDNhZGE2NjMzODJhN2U3OC4uMWQwNTk0MTVhZjhhYzY2ODMwODE3MmQ0NTky
M2I0ODFjMTZjNWI3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkLmNwcApAQCAtNTEsNiArNTEsOSBAQCBEb3dubG9hZDo6RG93bmxvYWQodWlu
dDY0X3QgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogI2lmIFVT
RShDRk5FVFdPUkspCiAgICAgLCBtX2FsbG93T3ZlcndyaXRlKGZhbHNlKQogI2VuZGlmCisjaWYg
UExBVEZPUk0oUVQpCisgICAgLCBtX3F0RG93bmxvYWRlcigwKQorI2VuZGlmCiB7CiAgICAgQVNT
RVJUKG1fZG93bmxvYWRJRCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZC5oCmluZGV4IGZlOWE1NmQxZWUyM2EyOGZiMzY1OTcyNGUzYTYxYmNjMmVk
NTIxNGMuLmFjY2NkM2Y4OGUyYTY5OTU5N2EzOWI3YmY4MjhkNDM2MzdiNzBmMzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaApAQCAtNjAsNiAr
NjAsMTAgQEAgY2xhc3MgRG93bmxvYWRBdXRoZW50aWNhdGlvbkNsaWVudDsKIGNsYXNzIFNhbmRi
b3hFeHRlbnNpb247CiBjbGFzcyBXZWJQYWdlOwogCisjaWYgUExBVEZPUk0oUVQpCitjbGFzcyBR
dEZpbGVEb3dubG9hZGVyOworI2VuZGlmCisKIGNsYXNzIERvd25sb2FkIDogcHVibGljIENvcmVJ
UEM6Ok1lc3NhZ2VTZW5kZXI8RG93bmxvYWQ+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShE
b3dubG9hZCk7CiBwdWJsaWM6CkBAIC0xMjYsNiArMTMwLDkgQEAgcHJpdmF0ZToKICAgICBSZXRh
aW5QdHI8Q0ZVUkxEb3dubG9hZFJlZj4gbV9kb3dubG9hZDsKICAgICBSZWZQdHI8RG93bmxvYWRB
dXRoZW50aWNhdGlvbkNsaWVudD4gbV9hdXRoZW50aWNhdGlvbkNsaWVudDsKICNlbmRpZgorI2lm
IFBMQVRGT1JNKFFUKQorICAgIFF0RmlsZURvd25sb2FkZXIqIG1fcXREb3dubG9hZGVyOworI2Vu
ZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L0Rvd25sb2FkUXQuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvRG93bmxvYWRRdC5jcHAKaW5kZXggYWQ1ZTdkZWU2
ZTRkNDAxMmJmYzlkZTY3MzZmYzQ2MDg0YjZiMWQ5OC4uNWI4ZmYyOWI2OGJjYTMxZWY2Mjk0MGI4
M2I1MjhmOTg3MDI4ZDA1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9E
b3dubG9hZHMvcXQvRG93bmxvYWRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9Eb3dubG9hZHMvcXQvRG93bmxvYWRRdC5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlh
cnkoLWllcykKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNyArMjcsMTMg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEb3dubG9hZC5oIgogCisjaW5jbHVk
ZSAiUXRGaWxlRG93bmxvYWRlci5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9RTmV0d29ya1Jl
cGx5SGFuZGxlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlUmVzcG9uc2UuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTM0
LDI3ICs0MSwzNSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBEb3dubG9hZDo6c3RhcnQo
V2ViUGFnZSogaW5pdGlhdGluZ1dlYlBhZ2UpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICBRTmV0d29ya0FjY2Vzc01hbmFnZXIqIG1hbmFnZXIgPSBXZWJQcm9jZXNzOjpzaGFyZWQoKS5u
ZXR3b3JrQWNjZXNzTWFuYWdlcigpOworICAgIEFTU0VSVChtYW5hZ2VyKTsKKyAgICBBU1NFUlQo
IW1fcXREb3dubG9hZGVyKTsKKworICAgIG1fcXREb3dubG9hZGVyID0gbmV3IFF0RmlsZURvd25s
b2FkZXIodGhpcywgYWRvcHRQdHIobWFuYWdlci0+Z2V0KG1fcmVxdWVzdC50b05ldHdvcmtSZXF1
ZXN0KCkpKSk7CiB9CiAKLXZvaWQgRG93bmxvYWQ6OnN0YXJ0V2l0aEhhbmRsZShXZWJQYWdlKiBp
bml0aWF0aW5nUGFnZSwgUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGlu
aXRpYWxSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikKK3ZvaWQgRG93bmxvYWQ6OnN0
YXJ0V2l0aEhhbmRsZShXZWJQYWdlKiBpbml0aWF0aW5nUGFnZSwgUmVzb3VyY2VIYW5kbGUqIGhh
bmRsZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBpbml0aWFsUmVxdWVzdCwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIEFTU0VSVCgh
bV9xdERvd25sb2FkZXIpOworICAgIG1fcXREb3dubG9hZGVyID0gbmV3IFF0RmlsZURvd25sb2Fk
ZXIodGhpcywgYWRvcHRQdHIoaGFuZGxlLT5nZXRJbnRlcm5hbCgpLT5tX2pvYi0+cmVsZWFzZSgp
KSk7CiB9CiAKIHZvaWQgRG93bmxvYWQ6OmNhbmNlbCgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICBBU1NFUlQobV9xdERvd25sb2FkZXIpOworICAgIG1fcXREb3dubG9hZGVyLT5jYW5j
ZWwoKTsKIH0KIAogdm9pZCBEb3dubG9hZDo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKIHsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIEFTU0VSVChtX3F0RG93bmxvYWRlcik7CisgICAgbV9xdERv
d25sb2FkZXItPmRlbGV0ZUxhdGVyKCk7CisgICAgbV9xdERvd25sb2FkZXIgPSAwOwogfQogCiB2
b2lkIERvd25sb2FkOjpkaWREZWNpZGVEZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIGRlc3RpbmF0
aW9uLCBib29sIGFsbG93T3ZlcndyaXRlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
bV9xdERvd25sb2FkZXItPmRlY2lkZWREZXN0aW5hdGlvbihkZXN0aW5hdGlvbiwgYWxsb3dPdmVy
d3JpdGUpOwogfQogCiB2b2lkIERvd25sb2FkOjpwbGF0Zm9ybURpZEZpbmlzaCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3dubG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L1F0RmlsZURv
d25sb2FkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjExMDE2ODI3ZWNlZGRkMDNhMDUwNGY0NTJiNDgzOGYw
OWZjNzZkYzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rv
d25sb2Fkcy9xdC9RdEZpbGVEb3dubG9hZGVyLmNwcApAQCAtMCwwICsxLDIzNyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlh
cnkoLWllcykKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFs
b25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisgKgorICovCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUXRGaWxlRG93bmxvYWRl
ci5oIgorCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIkRvd25sb2FkLmgi
CisjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKKyNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5Lmgi
CisjaW5jbHVkZSA8UUNvcmVBcHBsaWNhdGlvbj4KKyNpbmNsdWRlIDxRRmlsZT4KKyNpbmNsdWRl
IDxRRmlsZUluZm8+CisjaW5jbHVkZSA8UU5ldHdvcmtBY2Nlc3NNYW5hZ2VyPgorI2luY2x1ZGUg
PFdlYkNvcmUvUU5ldHdvcmtSZXBseUhhbmRsZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlRXJyb3IuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KKwordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgV1RGOworCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworUXRGaWxlRG93bmxvYWRlcjo6UXRGaWxlRG93bmxvYWRlcihEb3dubG9hZCog
ZG93bmxvYWQsIFBhc3NPd25QdHI8UU5ldHdvcmtSZXBseT4gcmVwbHkpCisgICAgOiBtX2Rvd25s
b2FkKGRvd25sb2FkKQorICAgICwgbV9yZXBseShyZXBseSkKKyAgICAsIG1fZXJyb3IoUU5ldHdv
cmtSZXBseTo6Tm9FcnJvcikKKyAgICAsIG1faGVhZGVyc1JlYWQoZmFsc2UpCit7CisgICAgLy8g
TGV0J3MgZW5zdXJlIHdlIHN0YXJ0IHdpdGggY2xlYW4gcG9pbnRlcnMuCisgICAgbV9kZXN0aW5h
dGlvbkZpbGUuY2xlYXIoKTsKKworICAgIGNvbm5lY3QobV9yZXBseS5nZXQoKSwgU0lHTkFMKHJl
YWR5UmVhZCgpKSwgU0xPVChvblJlYWR5UmVhZCgpKSk7CisgICAgY29ubmVjdChtX3JlcGx5Lmdl
dCgpLCBTSUdOQUwoZmluaXNoZWQoKSksIFNMT1Qob25GaW5pc2hlZCgpKSk7CisgICAgY29ubmVj
dChtX3JlcGx5LmdldCgpLCBTSUdOQUwoZXJyb3IoUU5ldHdvcmtSZXBseTo6TmV0d29ya0Vycm9y
KSksIFNMT1Qob25FcnJvcihRTmV0d29ya1JlcGx5OjpOZXR3b3JrRXJyb3IpKSk7CisKKyAgICAv
LyBDYWxsIG9uUmVhZHlSZWFkIGp1c3QgaW4gY2FzZSBzb21lIGRhdGEgaXMgYWxyZWFkeSB3YWl0
aW5nLgorICAgIG9uUmVhZHlSZWFkKCk7Cit9CisKK1F0RmlsZURvd25sb2FkZXI6On5RdEZpbGVE
b3dubG9hZGVyKCkKK3sKKyAgICBpZiAoIW1fZGVzdGluYXRpb25GaWxlKQorICAgICAgICByZXR1
cm47CisKKyAgICBSZXNvdXJjZUVycm9yIGRvd25sb2FkRXJyb3IoIkRvd25sb2FkIiwgUXRGaWxl
RG93bmxvYWRlcjo6RG93bmxvYWRFcnJvckNhbmNlbGxlZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV9yZXBseS0+dXJsKCkudG9TdHJpbmcoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRdEZpbGVEb3dubG9h
ZGVyIiwgIkRvd25sb2FkIGNhbmNlbGxlZCIpKTsKKyAgICBhYm9ydERvd25sb2FkV3JpdGluZ0Fu
ZEVtaXRFcnJvcihkb3dubG9hZEVycm9yKTsKK30KKwordm9pZCBRdEZpbGVEb3dubG9hZGVyOjpk
ZXRlcm1pbmVGaWxlbmFtZSgpCit7CisgICAgQVNTRVJUKCFtX2Rlc3RpbmF0aW9uRmlsZSk7CisK
KyAgICBRU3RyaW5nIGZpbGVOYW1lQ2FuZGlkYXRlID0gZmlsZW5hbWVGcm9tSFRUUENvbnRlbnRE
aXNwb3NpdGlvbihRU3RyaW5nOjpmcm9tTGF0aW4xKG1fcmVwbHktPnJhd0hlYWRlcigiQ29udGVu
dC1EaXNwb3NpdGlvbiIpKSk7CisgICAgaWYgKGZpbGVOYW1lQ2FuZGlkYXRlLmlzRW1wdHkoKSkg
eworICAgICAgICBLVVJMIGt1cmwgPSBtX3JlcGx5LT51cmwoKTsKKyAgICAgICAgZmlsZU5hbWVD
YW5kaWRhdGUgPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoa3VybC5sYXN0UGF0aENvbXBvbmVu
dCgpKTsKKyAgICB9CisKKyAgICBpZiAoZmlsZU5hbWVDYW5kaWRhdGUuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIG1fcmVwbHktPmFib3J0KCk7CisgICAgICAgIFJlc291cmNlRXJyb3IgZG93bmxvYWRF
cnJvcigiRG93bmxvYWQiLCBRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9yQ2Fubm90RGV0
ZXJtaW5lRmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3Jl
cGx5LT51cmwoKS50b1N0cmluZygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRdEZpbGVEb3dubG9hZGVyIiwgIkNhbm5v
dCBkZXRlcm1pbmUgZmlsZW5hbWUiKSk7CisKKyAgICAgICAgLy8gRG9uJ3QgdXNlIHNpemUgKyAx
IHNvIHRoZSBlbmRpbmcgJ1wwJyBieXRlIGZyb20gUUJ5dGVBcnJheTo6ZGF0YSgpIGlzIGRpc2Nh
cmRlZC4KKyAgICAgICAgbV9kb3dubG9hZC0+ZGlkRmFpbChkb3dubG9hZEVycm9yLCBDb3JlSVBD
OjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fcmVwbHkt
PnJlYWRBbGwoKS5kYXRhKCkpLCBtX3JlcGx5LT5zaXplKCkpKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHdlIHJlbW92ZSBwb3NzaWJsZSAiLi4vLi4i
IHBhcnRzIGluIHRoZSBnaXZlbiBmaWxlIG5hbWUuCisgICAgUUZpbGVJbmZvIGZpbGVOYW1lRmls
dGVyKGZpbGVOYW1lQ2FuZGlkYXRlKTsKKyAgICBRU3RyaW5nIGZpbGVOYW1lID0gZmlsZU5hbWVG
aWx0ZXIuZmlsZU5hbWUoKTsKKworICAgIGlmIChmaWxlTmFtZS5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgbV9yZXBseS0+YWJvcnQoKTsKKyAgICAgICAgUmVzb3VyY2VFcnJvciBkb3dubG9hZEVycm9y
KCJEb3dubG9hZCIsIFF0RmlsZURvd25sb2FkZXI6OkRvd25sb2FkRXJyb3JDYW5ub3REZXRlcm1p
bmVGaWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcmVwbHkt
PnVybCgpLnRvU3RyaW5nKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBR
Q29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlF0RmlsZURvd25sb2FkZXIiLCAiQ2Fubm90IGRl
dGVybWluZSBmaWxlbmFtZSIpKTsKKyAgICAgICAgbV9kb3dubG9hZC0+ZGlkRmFpbChkb3dubG9h
ZEVycm9yLCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KG1fcmVwbHktPnJlYWRBbGwoKS5kYXRhKCkpLCBtX3JlcGx5LT5zaXplKCkpKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGJvb2wgYWxsb3dPdmVyd3JpdGU7CisgICAgbV9k
b3dubG9hZC0+ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoZmlsZU5hbWUs
IGFsbG93T3ZlcndyaXRlKTsKK30KKwordm9pZCBRdEZpbGVEb3dubG9hZGVyOjpkZWNpZGVkRGVz
dGluYXRpb24oY29uc3QgUVN0cmluZyYgZGVjaWRlZEZpbGVQYXRoLCBib29sIGFsbG93T3Zlcndy
aXRlKQoreworICAgIEFTU0VSVCghbV9kZXN0aW5hdGlvbkZpbGUpOworCisgICAgLy8gRXJyb3Ig
bWlnaHQgaGF2ZSBvY2N1cmVkIGR1cmluZyBkZXN0aW5hdGlvbiBxdWVyeS4KKyAgICBpZiAobV9l
cnJvciAhPSBRTmV0d29ya1JlcGx5OjpOb0Vycm9yKSB7CisgICAgICAgIG1fcmVwbHktPmFib3J0
KCk7CisgICAgICAgIG1fZG93bmxvYWQtPmRpZEZhaWwoUU5ldHdvcmtSZXBseUhhbmRsZXI6OmVy
cm9yRm9yUmVwbHkobV9yZXBseS5nZXQoKSksIENvcmVJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obV9yZXBseS0+cmVhZEFsbCgpLmRhdGEoKSksIG1f
cmVwbHktPnNpemUoKSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGRlY2lk
ZWRGaWxlUGF0aC5pc0VtcHR5KCkpIHsKKyAgICAgICAgbV9yZXBseS0+YWJvcnQoKTsKKyAgICAg
ICAgUmVzb3VyY2VFcnJvciBkb3dubG9hZEVycm9yKCJEb3dubG9hZCIsIFF0RmlsZURvd25sb2Fk
ZXI6OkRvd25sb2FkRXJyb3JDYW5jZWxsZWRCeUNhbGxlciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fcmVwbHktPnVybCgpLnRvU3RyaW5nKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlF0Rmls
ZURvd25sb2FkZXIiLCAiRG93bmxvYWQgY2FuY2VsbGVkIGJ5IGNhbGxlciIpKTsKKyAgICAgICAg
bV9kb3dubG9hZC0+ZGlkRmFpbChkb3dubG9hZEVycm9yLCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNl
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fcmVwbHktPnJlYWRBbGwoKS5kYXRh
KCkpLCBtX3JlcGx5LT5zaXplKCkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE93
blB0cjxRRmlsZT4gZG93bmxvYWRGaWxlID0gYWRvcHRQdHIobmV3IFFGaWxlKGRlY2lkZWRGaWxl
UGF0aCkpOworCisgICAgaWYgKCFhbGxvd092ZXJ3cml0ZSAmJiBkb3dubG9hZEZpbGUtPmV4aXN0
cygpKSB7CisgICAgICAgIG1fcmVwbHktPmFib3J0KCk7CisgICAgICAgIFJlc291cmNlRXJyb3Ig
ZG93bmxvYWRFcnJvcigiRG93bmxvYWQiLCBRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9y
RmlsZUFscmVhZHlFeGlzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X3JlcGx5LT51cmwoKS50b1N0cmluZygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRdEZpbGVEb3dubG9hZGVyIiwgIkZp
bGUgYWxyZWFkeSBleGlzdHMiKSk7CisgICAgICAgIG1fZG93bmxvYWQtPmRpZEZhaWwoZG93bmxv
YWRFcnJvciwgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihtX3JlcGx5LT5yZWFkQWxsKCkuZGF0YSgpKSwgbV9yZXBseS0+c2l6ZSgpKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIWRvd25sb2FkRmlsZS0+b3BlbihRSU9E
ZXZpY2U6OldyaXRlT25seSB8IFFJT0RldmljZTo6VHJ1bmNhdGUpKSB7CisgICAgICAgIG1fcmVw
bHktPmFib3J0KCk7CisgICAgICAgIFJlc291cmNlRXJyb3IgZG93bmxvYWRFcnJvcigiRG93bmxv
YWQiLCBRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9yQ2Fubm90T3BlbkZpbGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3JlcGx5LT51cmwoKS50b1N0cmluZygp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUNvcmVBcHBsaWNhdGlvbjo6
dHJhbnNsYXRlKCJRdEZpbGVEb3dubG9hZGVyIiwgIkNhbm5vdCBvcGVuIGZpbGUgZm9yIHdyaXRp
bmciKSk7CisgICAgICAgIG1fZG93bmxvYWQtPmRpZEZhaWwoZG93bmxvYWRFcnJvciwgQ29yZUlQ
Qzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtX3JlcGx5
LT5yZWFkQWxsKCkuZGF0YSgpKSwgbV9yZXBseS0+c2l6ZSgpKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICAvLyBBc3NpZ25pbmcgdG8gbV9kZXN0aW5hdGlvbkZpbGUgZmxhZ3MgdGhh
dCBlaXRoZXIgZXJyb3Igb3IKKyAgICAvLyBmaW5pc2hlZCBzaGFsbCBiZSBjYWxsZWQgaW4gdGhl
IGVuZC4KKyAgICBtX2Rlc3RpbmF0aW9uRmlsZSA9IGRvd25sb2FkRmlsZS5yZWxlYXNlKCk7CisK
KyAgICBtX2Rvd25sb2FkLT5kaWRDcmVhdGVEZXN0aW5hdGlvbihtX2Rlc3RpbmF0aW9uRmlsZS0+
ZmlsZU5hbWUoKSk7CisKKyAgICAvLyBXZSBtaWdodCBoYXZlIGdvdHRlbiByZWFkeVJlYWQgYWxy
ZWFkeSBldmVuIGJlZm9yZSB0aGlzIGZ1bmN0aW9uCisgICAgLy8gd2FzIGNhbGxlZC4KKyAgICBp
ZiAobV9yZXBseS0+Ynl0ZXNBdmFpbGFibGUoKSkKKyAgICAgICAgb25SZWFkeVJlYWQoKTsKKwor
ICAgIC8vIFdlIG1pZ2h0IGhhdmUgZ290dGVuIGZpbmlzaGVkIGFscmVhZHkgZXZlbiBiZWZvcmUg
dGhpcworICAgIC8vIGZ1bmN0aW9uIHdhcyBjYWxsZWQuCisgICAgaWYgKG1fcmVwbHktPmlzRmlu
aXNoZWQoKSkKKyAgICAgICAgb25GaW5pc2hlZCgpOworCit9CisKK3ZvaWQgUXRGaWxlRG93bmxv
YWRlcjo6YWJvcnREb3dubG9hZFdyaXRpbmdBbmRFbWl0RXJyb3IoY29uc3QgUmVzb3VyY2VFcnJv
ciYgZXJyb3JDb2RlKQoreworICAgIG1fcmVwbHktPmFib3J0KCk7CisgICAgbV9kb3dubG9hZC0+
ZGlkRmFpbChlcnJvckNvZGUsIENvcmVJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4obV9yZXBseS0+cmVhZEFsbCgpLmRhdGEoKSksIG1fcmVwbHktPnNp
emUoKSkpOworfQorCisKK3ZvaWQgUXRGaWxlRG93bmxvYWRlcjo6b25SZWFkeVJlYWQoKQorewor
ICAgIGlmIChtX2Rlc3RpbmF0aW9uRmlsZSkgeworICAgICAgICBRQnl0ZUFycmF5IGNvbnRlbnQg
PSBtX3JlcGx5LT5yZWFkQWxsKCk7CisgICAgICAgIGlmIChjb250ZW50LnNpemUoKSA8PSAwKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHFpbnQ2NCBieXRlc1dyaXR0ZW4gPSBtX2Rl
c3RpbmF0aW9uRmlsZS0+d3JpdGUoY29udGVudCk7CisKKyAgICAgICAgLy8gVGhlcmUgbWlnaHQg
YSBjb3JuZXIgY2FzZSB0byBiZSBmaXhlZCBoZXJlIGlmIGJ5dGVzV3JpdHRlbiAhPSBjb250ZW50
LnNpemUoKQorICAgICAgICAvLyBkb2VzIG5vdCBhY3R1YWxseSByZXByZXNlbnQgYW4gZXJyb3Iu
CisgICAgICAgIEFTU0VSVChieXRlc1dyaXR0ZW4gPT0gY29udGVudC5zaXplKCkpOworCisgICAg
ICAgIGlmIChieXRlc1dyaXR0ZW4gPT0gLTEgfHwgYnl0ZXNXcml0dGVuICE9IGNvbnRlbnQuc2l6
ZSgpKSB7CisgICAgICAgICAgICBSZXNvdXJjZUVycm9yIGRvd25sb2FkRXJyb3IoIkRvd25sb2Fk
IiwgUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvclVuYWJsZVRvV3JpdGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9yZXBseS0+dXJsKCkudG9TdHJpbmco
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRQ29yZUFwcGxpY2F0
aW9uOjp0cmFuc2xhdGUoIlF0RmlsZURvd25sb2FkZXIiLCAiVW5hYmxlIHRvIHdyaXRlIikpOwor
ICAgICAgICAgICAgYWJvcnREb3dubG9hZFdyaXRpbmdBbmRFbWl0RXJyb3IoZG93bmxvYWRFcnJv
cik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBtX2Rvd25sb2Fk
LT5kaWRSZWNlaXZlRGF0YShieXRlc1dyaXR0ZW4pOworICAgIH0gZWxzZSBpZiAoIW1faGVhZGVy
c1JlYWQpIHsKKyAgICAgICAgLy8gQnkgQVBJIGNvbnRyYWN0LCBRTmV0d29ya1JlcGx5OjptZXRh
RGF0YUNoYW5nZWQgY2Fubm90IHJlYWxseSBiZSB0cnVzdGVkLgorICAgICAgICAvLyBUaHVzIHdl
IG5lZWQgdG8gY2FsbCB0aGlzIHVwb24gcmVjZWl2aW5nIGZpcnN0IGRhdGEuCisgICAgICAgIFN0
cmluZyBjb250ZW50VHlwZSA9IG1fcmVwbHktPmhlYWRlcihRTmV0d29ya1JlcXVlc3Q6OkNvbnRl
bnRUeXBlSGVhZGVyKS50b1N0cmluZygpOworICAgICAgICBTdHJpbmcgZW5jb2RpbmcgPSBleHRy
YWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVudFR5cGUpOworICAgICAgICBTdHJpbmcgbWlt
ZVR5cGUgPSBleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlKTsKKworICAg
ICAgICAvLyBMZXQncyB0cnkgdG8gZ3Vlc3MgZnJvbSB0aGUgZXh0ZW5zaW9uLgorICAgICAgICBp
ZiAobWltZVR5cGUuaXNFbXB0eSgpKQorICAgICAgICAgICAgbWltZVR5cGUgPSBNSU1FVHlwZVJl
Z2lzdHJ5OjpnZXRNSU1FVHlwZUZvclBhdGgobV9yZXBseS0+dXJsKCkucGF0aCgpKTsKKworICAg
ICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKG1fcmVwbHktPnVybCgpLCBtaW1lVHlwZSwg
bV9yZXBseS0+aGVhZGVyKFFOZXR3b3JrUmVxdWVzdDo6Q29udGVudExlbmd0aEhlYWRlcikudG9M
b25nTG9uZygpLCBlbmNvZGluZywgU3RyaW5nKCkpOworICAgICAgICBtX2Rvd25sb2FkLT5kaWRS
ZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UpOworCisgICAgICAgIGRldGVybWluZUZpbGVuYW1lKCk7
CisKKyAgICAgICAgbV9oZWFkZXJzUmVhZCA9IHRydWU7CisgICAgfQorfQorCit2b2lkIFF0Rmls
ZURvd25sb2FkZXI6Om9uRmluaXNoZWQoKQoreworICAgIGlmICghbV9kZXN0aW5hdGlvbkZpbGUp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fZGVzdGluYXRpb25GaWxlLmNsZWFyKCk7CisKKyAg
ICBpZiAobV9lcnJvciA9PSBRTmV0d29ya1JlcGx5OjpOb0Vycm9yKQorICAgICAgICBtX2Rvd25s
b2FkLT5kaWRGaW5pc2goKTsKKyAgICBlbHNlCisgICAgICAgIG1fZG93bmxvYWQtPmRpZEZhaWwo
UU5ldHdvcmtSZXBseUhhbmRsZXI6OmVycm9yRm9yUmVwbHkobV9yZXBseS5nZXQoKSksIENvcmVJ
UEM6OkRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obV9yZXBs
eS0+cmVhZEFsbCgpLmRhdGEoKSksIG1fcmVwbHktPnNpemUoKSkpOworfQorCit2b2lkIFF0Rmls
ZURvd25sb2FkZXI6Om9uRXJyb3IoUU5ldHdvcmtSZXBseTo6TmV0d29ya0Vycm9yIGNvZGUpCit7
CisgICAgbV9lcnJvciA9IGNvZGU7Cit9CisKK3ZvaWQgUXRGaWxlRG93bmxvYWRlcjo6Y2FuY2Vs
KCkKK3sKKyAgICBtX3JlcGx5LT5hYm9ydCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KyNpbmNsdWRlICJtb2NfUXRGaWxlRG93bmxvYWRlci5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3dubG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3dubG9hZGVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNTY5YWE0ZmI0NzZkNTRhZTEwMmI3YTIwN2ZkN2U4YmNmZDA5Njg3YwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L1F0Rmls
ZURvd25sb2FkZXIuaApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFRo
aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dy
YW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRl
ZiBRdEZpbGVEb3dubG9hZGVyX2gKKyNkZWZpbmUgUXRGaWxlRG93bmxvYWRlcl9oCisKKyNpbmNs
dWRlIDxRTmV0d29ya1JlcGx5PgorI2luY2x1ZGUgPFFOZXR3b3JrUmVxdWVzdD4KKyNpbmNsdWRl
IDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworUVRfQkVHSU5f
TkFNRVNQQUNFCitjbGFzcyBRRmlsZTsKK2NsYXNzIFFOZXR3b3JrQWNjZXNzTWFuYWdlcjsKK2Ns
YXNzIFFOZXR3b3JrUmVxdWVzdDsKK1FUX0VORF9OQU1FU1BBQ0UKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworY2xhc3MgUmVzb3VyY2VFcnJvcjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFz
cyBEb3dubG9hZDsKKworY2xhc3MgUXRGaWxlRG93bmxvYWRlciA6IHB1YmxpYyBRT2JqZWN0IHsK
KyAgICBRX09CSkVDVAorcHVibGljOgorICAgIFF0RmlsZURvd25sb2FkZXIoRG93bmxvYWQqLCBQ
YXNzT3duUHRyPFFOZXR3b3JrUmVwbHk+KTsKKyAgICB2aXJ0dWFsIH5RdEZpbGVEb3dubG9hZGVy
KCk7CisgICAgdm9pZCBkZWNpZGVkRGVzdGluYXRpb24oY29uc3QgUVN0cmluZyYgZGVjaWRlZEZp
bGVQYXRoLCBib29sIGFsbG93T3ZlcndyaXRlKTsKKyAgICB2b2lkIGNhbmNlbCgpOworCisgICAg
ZW51bSBEb3dubG9hZEVycm9yIHsKKyAgICAgICAgRG93bmxvYWRFcnJvckNhbmNlbGxlZCA9IC02
LAorICAgICAgICBEb3dubG9hZEVycm9yVW5hYmxlVG9Xcml0ZSA9IC01LAorICAgICAgICBEb3du
bG9hZEVycm9yQ2Fubm90T3BlbkZpbGUgPSAtNCwKKyAgICAgICAgRG93bmxvYWRFcnJvckZpbGVB
bHJlYWR5RXhpc3RzID0gLTMsCisgICAgICAgIERvd25sb2FkRXJyb3JDYW5jZWxsZWRCeUNhbGxl
ciA9IC0yLAorICAgICAgICBEb3dubG9hZEVycm9yQ2Fubm90RGV0ZXJtaW5lRmlsZW5hbWUgPSAt
MQorICAgIH07CisKK3ByaXZhdGUgc2xvdHM6CisgICAgdm9pZCBvblJlYWR5UmVhZCgpOworICAg
IHZvaWQgb25GaW5pc2hlZCgpOworICAgIHZvaWQgb25FcnJvcihRTmV0d29ya1JlcGx5OjpOZXR3
b3JrRXJyb3IpOworCitwcml2YXRlOgorICAgIHZvaWQgYWJvcnREb3dubG9hZFdyaXRpbmdBbmRF
bWl0RXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOworICAgIHZvaWQgZGV0ZXJt
aW5lRmlsZW5hbWUoKTsKKworICAgIERvd25sb2FkKiBtX2Rvd25sb2FkOworICAgIE93blB0cjxR
TmV0d29ya1JlcGx5PiBtX3JlcGx5OworICAgIE93blB0cjxRRmlsZT4gbV9kZXN0aW5hdGlvbkZp
bGU7CisgICAgUU5ldHdvcmtSZXBseTo6TmV0d29ya0Vycm9yIG1fZXJyb3I7CisgICAgYm9vbCBt
X2hlYWRlcnNSZWFkOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107989</attachid>
            <date>2011-09-20 05:52:14 -0700</date>
            <delta_ts>2011-09-20 06:48:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68153-20110920095157.patch</filename>
            <type>text/plain</type>
            <size>24138</size>
            <attacher name="Jesus Sanchez-Palencia">jesus</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU1MzEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzZTJiYjY2OTdiMzAwNDcw
MmFlNjUwY2JiOTlmNGU2NmUzOGY3N2RmLi41MjQ3MWE2OTY0NzY0YmM4NDhhYThjOGYzNWMzNDE2
NmY1ZTdhYjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDktMTUgIEplc3Vz
IFNhbmNoZXotUGFsZW5jaWEgIDxqZXN1cy5wYWxlbmNpYUBvcGVuYm9zc2Eub3JnPgorCisgICAg
ICAgIFtRdF1bV0syXSBJbXBsZW1lbnQgRG93bmxvYWQgc3VwcG9ydCBpbiBXZWJQcm9jZXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODE1MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yZWQg
UU5ldHdvcmtSZXBseUhhbmRsZXI6OmZpbmlzaCgpIGluIG9yZGVyIHRvIGFkZAorICAgICAgICBh
bmQgdXNlIHRoZSBzdGF0aWMgZnVuY3Rpb24gUU5ldHdvcmtSZXBseUhhbmRsZXI6OmVycm9yRm9y
UmVwbHkoKS4KKyAgICAgICAgVGhpcyB3aWxsIGJlIHVzZWQgYnkgb3VyIERvd25sb2FkIGltcGxl
bWVudGF0aW9uIGluIFdlYktpdDIgKFdlYlByb2Nlc3MpCisgICAgICAgIHdoZW4gaGFuZGxpbmcg
UmVzb3VyY2VFcnJvci4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtS
ZXBseUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UU5ldHdvcmtSZXBseUhhbmRsZXI6
OmZpbmlzaCk6CisgICAgICAgIChXZWJDb3JlOjpRTmV0d29ya1JlcGx5SGFuZGxlcjo6ZXJyb3JG
b3JSZXBseSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFu
ZGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXF1ZXN0Lmg6
CisKIDIwMTEtMDktMjAgIEFkZW5pbHNvbiBDYXZhbGNhbnRpICA8YWRlbmlsc29uLnNpbHZhQG9w
ZW5ib3NzYS5vcmc+CiAKICAgICAgICAgW1F0XSByZXNpemVUb0NvbnRlbnQgc2VlbXMgdG8gdHJp
Z2dlciBpbmZpbml0ZSByZXNpemUgb24gc29tZSBwYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNwcApp
bmRleCA2YTAzY2NkMjcyYjZlNDEyM2Q1NzE4MWFhOWIwYjdhZTJkM2Q1MzI0Li41YWYwMDQ5ZGE0
OWMzMmRiZWVkN2MxZDI2NWI3MDIzNzkzNzQ2NjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNwcApA
QCAtNDU1LDE4ICs0NTUsOCBAQCB2b2lkIFFOZXR3b3JrUmVwbHlIYW5kbGVyOjpmaW5pc2goKQog
CiAgICAgaWYgKCFtX3JlcGx5V3JhcHBlci0+cmVwbHkoKS0+ZXJyb3IoKSB8fCBzaG91bGRJZ25v
cmVIdHRwRXJyb3IobV9yZXBseVdyYXBwZXItPnJlcGx5KCksIG1fcmVwbHlXcmFwcGVyLT5yZXNw
b25zZUNvbnRhaW5zRGF0YSgpKSkKICAgICAgICAgY2xpZW50LT5kaWRGaW5pc2hMb2FkaW5nKG1f
cmVzb3VyY2VIYW5kbGUsIDApOwotICAgIGVsc2UgewotICAgICAgICBRVXJsIHVybCA9IG1fcmVw
bHlXcmFwcGVyLT5yZXBseSgpLT51cmwoKTsKLSAgICAgICAgaW50IGh0dHBTdGF0dXNDb2RlID0g
bV9yZXBseVdyYXBwZXItPnJlcGx5KCktPmF0dHJpYnV0ZShRTmV0d29ya1JlcXVlc3Q6Okh0dHBT
dGF0dXNDb2RlQXR0cmlidXRlKS50b0ludCgpOwotCi0gICAgICAgIGlmIChodHRwU3RhdHVzQ29k
ZSkgewotICAgICAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcigiSFRUUCIsIGh0dHBTdGF0dXND
b2RlLCB1cmwudG9TdHJpbmcoKSwgbV9yZXBseVdyYXBwZXItPnJlcGx5KCktPmF0dHJpYnV0ZShR
TmV0d29ya1JlcXVlc3Q6Okh0dHBSZWFzb25QaHJhc2VBdHRyaWJ1dGUpLnRvU3RyaW5nKCkpOwot
ICAgICAgICAgICAgY2xpZW50LT5kaWRGYWlsKG1fcmVzb3VyY2VIYW5kbGUsIGVycm9yKTsKLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3IoIlF0TmV0d29y
ayIsIG1fcmVwbHlXcmFwcGVyLT5yZXBseSgpLT5lcnJvcigpLCB1cmwudG9TdHJpbmcoKSwgbV9y
ZXBseVdyYXBwZXItPnJlcGx5KCktPmVycm9yU3RyaW5nKCkpOwotICAgICAgICAgICAgY2xpZW50
LT5kaWRGYWlsKG1fcmVzb3VyY2VIYW5kbGUsIGVycm9yKTsKLSAgICAgICAgfQotICAgIH0KKyAg
ICBlbHNlCisgICAgICAgIGNsaWVudC0+ZGlkRmFpbChtX3Jlc291cmNlSGFuZGxlLCBlcnJvckZv
clJlcGx5KG1fcmVwbHlXcmFwcGVyLT5yZXBseSgpKSk7CiAKICAgICBtX3JlcGx5V3JhcHBlciA9
IG51bGxwdHI7CiB9CkBAIC02OTQsNiArNjg0LDE3IEBAIHZvaWQgUU5ldHdvcmtSZXBseUhhbmRs
ZXI6OnN0YXJ0KCkKICAgICAgICAgY29ubmVjdChtX3JlcGx5V3JhcHBlci0+cmVwbHkoKSwgU0lH
TkFMKHVwbG9hZFByb2dyZXNzKHFpbnQ2NCwgcWludDY0KSksIHRoaXMsIFNMT1QodXBsb2FkUHJv
Z3Jlc3MocWludDY0LCBxaW50NjQpKSk7CiB9CiAKK1Jlc291cmNlRXJyb3IgUU5ldHdvcmtSZXBs
eUhhbmRsZXI6OmVycm9yRm9yUmVwbHkoUU5ldHdvcmtSZXBseSogcmVwbHkpCit7CisgICAgUVVy
bCB1cmwgPSByZXBseS0+dXJsKCk7CisgICAgaW50IGh0dHBTdGF0dXNDb2RlID0gcmVwbHktPmF0
dHJpYnV0ZShRTmV0d29ya1JlcXVlc3Q6Okh0dHBTdGF0dXNDb2RlQXR0cmlidXRlKS50b0ludCgp
OworCisgICAgaWYgKGh0dHBTdGF0dXNDb2RlKQorICAgICAgICByZXR1cm4gUmVzb3VyY2VFcnJv
cigiSFRUUCIsIGh0dHBTdGF0dXNDb2RlLCB1cmwudG9TdHJpbmcoKSwgcmVwbHktPmF0dHJpYnV0
ZShRTmV0d29ya1JlcXVlc3Q6Okh0dHBSZWFzb25QaHJhc2VBdHRyaWJ1dGUpLnRvU3RyaW5nKCkp
OworCisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoIlF0TmV0d29yayIsIHJlcGx5LT5lcnJvcigp
LCB1cmwudG9TdHJpbmcoKSwgcmVwbHktPmVycm9yU3RyaW5nKCkpOworfQorCiB9CiAKICNpbmNs
dWRlICJtb2NfUU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5oCmluZGV4
IDlkMzZkYTIyMWQ4NTJmMTI1NzVlNTE3YzJlODNkMTE3YmI2NjA5NWQuLmY3YTQ0N2E1Y2E3MmY3
NzkyNzIyOGEyOTNkY2UyNjBkOWU2MjlmMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmgKQEAgLTM2LDYg
KzM2LDcgQEAgUVRfRU5EX05BTUVTUEFDRQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBG
b3JtRGF0YUlPRGV2aWNlOworY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlSGFu
ZGxlOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKQEAg
LTEzMyw2ICsxMzQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBmb3J3YXJkRGF0YSgpOwogICAgIHZv
aWQgc2VuZFJlc3BvbnNlSWZOZWVkZWQoKTsKIAorICAgIHN0YXRpYyBSZXNvdXJjZUVycm9yIGVy
cm9yRm9yUmVwbHkoUU5ldHdvcmtSZXBseSopOworCiBwcml2YXRlIHNsb3RzOgogICAgIHZvaWQg
dXBsb2FkUHJvZ3Jlc3MocWludDY0IGJ5dGVzU2VudCwgcWludDY0IGJ5dGVzVG90YWwpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlUmVx
dWVzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZVJlcXVl
c3QuaAppbmRleCAwYzdiNjJiNmZjMzY0NWVkZDYzOGU4N2VkYjQ5MTY4ODMzZThkYzY2Li5jZDZm
NzYwMjZkOTY3NmExYjFmNDE0ZWQ0YzM5NTBhZWNiYTQ1OGNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlUmVxdWVzdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXF1ZXN0LmgKQEAgLTU5LDcg
KzU5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB7CiAgICAgICAgIH0KIAotICAg
ICAgICBRTmV0d29ya1JlcXVlc3QgdG9OZXR3b3JrUmVxdWVzdChRT2JqZWN0KiBvcmlnaW5hdGlu
Z09iamVjdCkgY29uc3Q7CisgICAgICAgIFFOZXR3b3JrUmVxdWVzdCB0b05ldHdvcmtSZXF1ZXN0
KFFPYmplY3QqIG9yaWdpbmF0aW5nT2JqZWN0ID0gMCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgog
ICAgICAgICBmcmllbmQgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0QmFzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA0
ZTgwZTVmN2QxMGMzZGI3N2E5MDk1ZDYzYTRkNmY3YmU0ZjBlMWQzLi5iNjcyYWU5ZTAyMTM0ZTNi
OWNhNDBmNGYyZmVhYzU5ZjZlMmM1MzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIw
MTEtMDktMTUgIEplc3VzIFNhbmNoZXotUGFsZW5jaWEgIDxqZXN1cy5wYWxlbmNpYUBvcGVuYm9z
c2Eub3JnPgorCisgICAgICAgIFtRdF1bV0syXSBJbXBsZW1lbnQgRG93bmxvYWQgc3VwcG9ydCBp
biBXZWJQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02ODE1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdlIGltcGxlbWVudCB0aGUgbmVjZXNzYXJ5IGZ1bmN0aW9ucyBvZiBEb3dubG9hZC5oLCBh
bmQgb3VyIFF0RmlsZURvd25sb2FkZXIKKyAgICAgICAgdG8gaGFuZGxlIGFsbCBuZXR3b3JrIGNv
bW11bmljYXRpb24gYW5kIGNhbGwgdGhlIG5lY2Vzc2FyeSBmdW5jdGlvbnMgb2YgRG93bmxvYWQu
CisKKyAgICAgICAgV2UgdXNlIHRoZSBkb3dubG9hZCBwb2xpY3kgZm9yIGFueSBNSU1FIHR5cGUg
bm90IHN1cHBvcnRlZCBieSBXZWJLaXQuIFRoaXMKKyAgICAgICAgYmVoYXZlcyBsaWtlIFF0IG5v
bi1XZWJLaXQyIGV4Y2VwdCB0aGF0IHdlIGRvbid0IGZvcmNlIGRvd25sb2FkIHdoZW4KKyAgICAg
ICAgd2UgZW5jb3VudGVyIENvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQuIFdlIHN0aWxs
IHVzZSB0aGUgImZpbGVuYW1lPSIKKyAgICAgICAgZmllbGQgZm9yIGZpbGUgbmFtZSBzdWdnZXN0
aW9uIHRob3VnaC4KKworICAgICAgICBCYXNlZCBvbiBvcmlnaW5hbCBwYXRjaGVzIGJ5OiBLaW1t
byBLaW5udW5lbiA8a2ltbW8udC5raW5udW5lbkBub2tpYS5jb20+LAorICAgICAgICBKb2NlbHlu
IFR1cmNvdHRlIDxqb2NlbHluLnR1cmNvdHRlQG5va2lhLmNvbT4sIFNpbW9uIEhhdXNtYW5uIDxz
aW1vbi5oYXVzbWFubkBub2tpYS5jb20+CisgICAgICAgIGFuZCBaYWxhbiBCdWp0YXMgPHphbGFu
LmJ1anRhc0Bub2tpYS5jb20+LgorCisgICAgICAgICogV2ViS2l0Mi5wcm86CisgICAgICAgICog
V2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwOiBBZGRpbmcgUXRGaWxlRG93bmxvYWRl
ciwgUXQgcGxhdGZvcm0gc3BlY2lmaWMKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OkRvd25s
b2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oOiBBZGRpbmcg
UXRGaWxlRG93bmxvYWRlciwgUXQgcGxhdGZvcm0gc3BlY2lmaWMKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0Rvd25sb2Fkcy9xdC9Eb3dubG9hZFF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxv
YWQ6OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnN0YXJ0V2l0aEhhbmRsZSk6
CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpjYW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpE
b3dubG9hZDo6cGxhdGZvcm1JbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6
OmRpZERlY2lkZURlc3RpbmF0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9x
dC9RdEZpbGVEb3dubG9hZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlF0RmlsZURv
d25sb2FkZXI6OlF0RmlsZURvd25sb2FkZXIpOgorICAgICAgICAoV2ViS2l0OjpRdEZpbGVEb3du
bG9hZGVyOjp+UXRGaWxlRG93bmxvYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlF0RmlsZURvd25s
b2FkZXI6OmRldGVybWluZUZpbGVuYW1lKToKKyAgICAgICAgKFdlYktpdDo6UXRGaWxlRG93bmxv
YWRlcjo6ZGVjaWRlZERlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UXRGaWxlRG93bmxv
YWRlcjo6YWJvcnREb3dubG9hZFdyaXRpbmdBbmRFbWl0RXJyb3IpOgorICAgICAgICAoV2ViS2l0
OjpRdEZpbGVEb3dubG9hZGVyOjpvblJlYWR5UmVhZCk6CisgICAgICAgIChXZWJLaXQ6OlF0Rmls
ZURvd25sb2FkZXI6Om9uRmluaXNoZWQpOgorICAgICAgICAoV2ViS2l0OjpRdEZpbGVEb3dubG9h
ZGVyOjpvbkVycm9yKToKKyAgICAgICAgKFdlYktpdDo6UXRGaWxlRG93bmxvYWRlcjo6Y2FuY2Vs
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3dubG9hZGVyLmg6
IEFkZGVkLgorCiAyMDExLTA5LTIwICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBXZWJQcm9jZXNzIHNob3VsZG4ndCB1c2UgdGhlIEdU
SysgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBybyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDIucHJvCmluZGV4IDA4ZmZiNGJkMWU5NGI2NjMwY2M3ZjYxNWVjMzUwYThj
NjdlNWNhNTYuLjRlZjY5OWVjYjE2MGE0NDVhZWU1YzJhZDJhNzUzMjM5MzQxMjYwN2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJvCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YktpdDIucHJvCkBAIC0yNzEsNiArMjcxLDcgQEAgSEVBREVSUyArPSBcCiAgICAgV2ViUHJvY2Vz
cy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaCBcCiAgICAgV2ViUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWQuaCBcCiAgICAgV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgg
XAorICAgIFdlYlByb2Nlc3MvRG93bmxvYWRzL3F0L1F0RmlsZURvd25sb2FkZXIuaCBcCiAgICAg
V2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmggXAogICAgIFdlYlBy
b2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCBc
CiAgICAgV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaCBcCkBA
IC01MTAsNiArNTExLDcgQEAgU09VUkNFUyArPSBcCiAgICAgV2ViUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWQuY3BwIFwKICAgICBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIu
Y3BwIFwKICAgICBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9Eb3dubG9hZFF0LmNwcCBcCisgICAg
V2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5jcHAgXAogICAgIFdlYlBy
b2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5jcHAgXAogICAgIFdlYlByb2Nl
c3MvR2VvbG9jYXRpb24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwIFwK
ICAgICBXZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHAgXApA
QCAtNTIwLDcgKzUyMiw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3QuY3BwIFwKICAgICBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgXAog
ICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwIFwK
LSAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3Vs
dC5jcHAgXCAgICAKKyAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
SGl0VGVzdFJlc3VsdC5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAgXAogICAgIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAK
aW5kZXggYzlmZjU5MzljM2Q5ZWIzZjFkMjMwNzY4ZDNhZGE2NjMzODJhN2U3OC4uMWQwNTk0MTVh
ZjhhYzY2ODMwODE3MmQ0NTkyM2I0ODFjMTZjNWI3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcApAQCAtNTEsNiArNTEsOSBAQCBEb3du
bG9hZDo6RG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQogI2lmIFVTRShDRk5FVFdPUkspCiAgICAgLCBtX2FsbG93T3ZlcndyaXRlKGZh
bHNlKQogI2VuZGlmCisjaWYgUExBVEZPUk0oUVQpCisgICAgLCBtX3F0RG93bmxvYWRlcigwKQor
I2VuZGlmCiB7CiAgICAgQVNTRVJUKG1fZG93bmxvYWRJRCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCmluZGV4IGZlOWE1NmQxZWUyM2EyOGZi
MzY1OTcyNGUzYTYxYmNjMmVkNTIxNGMuLmFjY2NkM2Y4OGUyYTY5OTU5N2EzOWI3YmY4MjhkNDM2
MzdiNzBmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWQuaApAQCAtNjAsNiArNjAsMTAgQEAgY2xhc3MgRG93bmxvYWRBdXRoZW50aWNhdGlvbkNs
aWVudDsKIGNsYXNzIFNhbmRib3hFeHRlbnNpb247CiBjbGFzcyBXZWJQYWdlOwogCisjaWYgUExB
VEZPUk0oUVQpCitjbGFzcyBRdEZpbGVEb3dubG9hZGVyOworI2VuZGlmCisKIGNsYXNzIERvd25s
b2FkIDogcHVibGljIENvcmVJUEM6Ok1lc3NhZ2VTZW5kZXI8RG93bmxvYWQ+IHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShEb3dubG9hZCk7CiBwdWJsaWM6CkBAIC0xMjYsNiArMTMwLDkgQEAg
cHJpdmF0ZToKICAgICBSZXRhaW5QdHI8Q0ZVUkxEb3dubG9hZFJlZj4gbV9kb3dubG9hZDsKICAg
ICBSZWZQdHI8RG93bmxvYWRBdXRoZW50aWNhdGlvbkNsaWVudD4gbV9hdXRoZW50aWNhdGlvbkNs
aWVudDsKICNlbmRpZgorI2lmIFBMQVRGT1JNKFFUKQorICAgIFF0RmlsZURvd25sb2FkZXIqIG1f
cXREb3dubG9hZGVyOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L0Rvd25sb2FkUXQu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvRG93bmxvYWRRdC5j
cHAKaW5kZXggYWQ1ZTdkZWU2ZTRkNDAxMmJmYzlkZTY3MzZmYzQ2MDg0YjZiMWQ5OC4uNWI4ZmYy
OWI2OGJjYTMxZWY2Mjk0MGI4M2I1MjhmOTg3MDI4ZDA1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvRG93bmxvYWRRdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvRG93bmxvYWRRdC5jcHAKQEAgLTEsNSAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBh
bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjYsNyArMjcsMTMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEb3du
bG9hZC5oIgogCisjaW5jbHVkZSAiUXRGaWxlRG93bmxvYWRlci5oIgorI2luY2x1ZGUgIldlYlBy
b2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9RTmV0d29ya1JlcGx5SGFuZGxlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3Vy
Y2VIYW5kbGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKQEAgLTM0LDI3ICs0MSwzNSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9p
ZCBEb3dubG9hZDo6c3RhcnQoV2ViUGFnZSogaW5pdGlhdGluZ1dlYlBhZ2UpCiB7Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICBRTmV0d29ya0FjY2Vzc01hbmFnZXIqIG1hbmFnZXIgPSBXZWJQ
cm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQWNjZXNzTWFuYWdlcigpOworICAgIEFTU0VSVChtYW5h
Z2VyKTsKKyAgICBBU1NFUlQoIW1fcXREb3dubG9hZGVyKTsKKworICAgIG1fcXREb3dubG9hZGVy
ID0gbmV3IFF0RmlsZURvd25sb2FkZXIodGhpcywgYWRvcHRQdHIobWFuYWdlci0+Z2V0KG1fcmVx
dWVzdC50b05ldHdvcmtSZXF1ZXN0KCkpKSk7CiB9CiAKLXZvaWQgRG93bmxvYWQ6OnN0YXJ0V2l0
aEhhbmRsZShXZWJQYWdlKiBpbml0aWF0aW5nUGFnZSwgUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIGluaXRpYWxSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikK
K3ZvaWQgRG93bmxvYWQ6OnN0YXJ0V2l0aEhhbmRsZShXZWJQYWdlKiBpbml0aWF0aW5nUGFnZSwg
UmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBpbml0aWFsUmVx
dWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcCkKIHsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIEFTU0VSVCghbV9xdERvd25sb2FkZXIpOworICAgIG1fcXREb3dubG9hZGVyID0g
bmV3IFF0RmlsZURvd25sb2FkZXIodGhpcywgYWRvcHRQdHIoaGFuZGxlLT5nZXRJbnRlcm5hbCgp
LT5tX2pvYi0+cmVsZWFzZSgpKSk7CiB9CiAKIHZvaWQgRG93bmxvYWQ6OmNhbmNlbCgpCiB7Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBBU1NFUlQobV9xdERvd25sb2FkZXIpOworICAgIG1f
cXREb3dubG9hZGVyLT5jYW5jZWwoKTsKIH0KIAogdm9pZCBEb3dubG9hZDo6cGxhdGZvcm1JbnZh
bGlkYXRlKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIEFTU0VSVChtX3F0RG93bmxv
YWRlcik7CisgICAgbV9xdERvd25sb2FkZXItPmRlbGV0ZUxhdGVyKCk7CisgICAgbV9xdERvd25s
b2FkZXIgPSAwOwogfQogCiB2b2lkIERvd25sb2FkOjpkaWREZWNpZGVEZXN0aW5hdGlvbihjb25z
dCBTdHJpbmcmIGRlc3RpbmF0aW9uLCBib29sIGFsbG93T3ZlcndyaXRlKQogewotICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgbV9xdERvd25sb2FkZXItPmRlY2lkZWREZXN0aW5hdGlvbihkZXN0
aW5hdGlvbiwgYWxsb3dPdmVyd3JpdGUpOwogfQogCiB2b2lkIERvd25sb2FkOjpwbGF0Zm9ybURp
ZEZpbmlzaCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fk
cy9xdC9RdEZpbGVEb3dubG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93
bmxvYWRzL3F0L1F0RmlsZURvd25sb2FkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU0MTQ1ZmRiZTc1YmUy
MjYxNGNhODdiZjIwNTJmYTJjMGJkYTE4NGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3dubG9hZGVyLmNwcApAQCAtMCww
ICsxLDI0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBh
bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiUXRGaWxlRG93bmxvYWRlci5oIgorCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2lu
Y2x1ZGUgIkRvd25sb2FkLmgiCisjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKKyNpbmNsdWRlICJN
SU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW5jbHVkZSA8UUNvcmVBcHBsaWNhdGlvbj4KKyNpbmNsdWRl
IDxRRmlsZT4KKyNpbmNsdWRlIDxRRmlsZUluZm8+CisjaW5jbHVkZSA8UU5ldHdvcmtBY2Nlc3NN
YW5hZ2VyPgorI2luY2x1ZGUgPFdlYkNvcmUvUU5ldHdvcmtSZXBseUhhbmRsZXIuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
UmVzcG9uc2UuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2Ug
V1RGOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUXRGaWxlRG93bmxvYWRlcjo6UXRGaWxlRG93
bmxvYWRlcihEb3dubG9hZCogZG93bmxvYWQsIFBhc3NPd25QdHI8UU5ldHdvcmtSZXBseT4gcmVw
bHkpCisgICAgOiBtX2Rvd25sb2FkKGRvd25sb2FkKQorICAgICwgbV9yZXBseShyZXBseSkKKyAg
ICAsIG1fZXJyb3IoUU5ldHdvcmtSZXBseTo6Tm9FcnJvcikKKyAgICAsIG1faGVhZGVyc1JlYWQo
ZmFsc2UpCit7CisgICAgY29ubmVjdChtX3JlcGx5LmdldCgpLCBTSUdOQUwocmVhZHlSZWFkKCkp
LCBTTE9UKG9uUmVhZHlSZWFkKCkpKTsKKyAgICBjb25uZWN0KG1fcmVwbHkuZ2V0KCksIFNJR05B
TChmaW5pc2hlZCgpKSwgU0xPVChvbkZpbmlzaGVkKCkpKTsKKyAgICBjb25uZWN0KG1fcmVwbHku
Z2V0KCksIFNJR05BTChlcnJvcihRTmV0d29ya1JlcGx5OjpOZXR3b3JrRXJyb3IpKSwgU0xPVChv
bkVycm9yKFFOZXR3b3JrUmVwbHk6Ok5ldHdvcmtFcnJvcikpKTsKKworICAgIC8vIENhbGwgb25S
ZWFkeVJlYWQganVzdCBpbiBjYXNlIHNvbWUgZGF0YSBpcyBhbHJlYWR5IHdhaXRpbmcuCisgICAg
b25SZWFkeVJlYWQoKTsKK30KKworUXRGaWxlRG93bmxvYWRlcjo6flF0RmlsZURvd25sb2FkZXIo
KQoreworICAgIGlmICghbV9kZXN0aW5hdGlvbkZpbGUpCisgICAgICAgIHJldHVybjsKKworICAg
IGFib3J0RG93bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKFF0RmlsZURvd25sb2FkZXI6OkRvd25s
b2FkRXJyb3JDYW5jZWxsZWQpOworfQorCit2b2lkIFF0RmlsZURvd25sb2FkZXI6OmRldGVybWlu
ZUZpbGVuYW1lKCkKK3sKKyAgICBBU1NFUlQoIW1fZGVzdGluYXRpb25GaWxlKTsKKworICAgIFFT
dHJpbmcgZmlsZU5hbWVDYW5kaWRhdGUgPSBmaWxlbmFtZUZyb21IVFRQQ29udGVudERpc3Bvc2l0
aW9uKFFTdHJpbmc6OmZyb21MYXRpbjEobV9yZXBseS0+cmF3SGVhZGVyKCJDb250ZW50LURpc3Bv
c2l0aW9uIikpKTsKKyAgICBpZiAoZmlsZU5hbWVDYW5kaWRhdGUuaXNFbXB0eSgpKSB7CisgICAg
ICAgIEtVUkwga3VybCA9IG1fcmVwbHktPnVybCgpOworICAgICAgICBmaWxlTmFtZUNhbmRpZGF0
ZSA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhrdXJsLmxhc3RQYXRoQ29tcG9uZW50KCkpOwor
ICAgIH0KKworICAgIGlmIChmaWxlTmFtZUNhbmRpZGF0ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAg
YWJvcnREb3dubG9hZFdyaXRpbmdBbmRFbWl0RXJyb3IoUXRGaWxlRG93bmxvYWRlcjo6RG93bmxv
YWRFcnJvckNhbm5vdERldGVybWluZUZpbGVuYW1lKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHdlIHJlbW92ZSBwb3NzaWJsZSAiLi4vLi4iIHBhcnRz
IGluIHRoZSBnaXZlbiBmaWxlIG5hbWUuCisgICAgUUZpbGVJbmZvIGZpbGVOYW1lRmlsdGVyKGZp
bGVOYW1lQ2FuZGlkYXRlKTsKKyAgICBRU3RyaW5nIGZpbGVOYW1lID0gZmlsZU5hbWVGaWx0ZXIu
ZmlsZU5hbWUoKTsKKworICAgIGlmIChmaWxlTmFtZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgYWJv
cnREb3dubG9hZFdyaXRpbmdBbmRFbWl0RXJyb3IoUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRF
cnJvckNhbm5vdERldGVybWluZUZpbGVuYW1lKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGJvb2wgYWxsb3dPdmVyd3JpdGU7CisgICAgbV9kb3dubG9hZC0+ZGVjaWRlRGVzdGluYXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoZmlsZU5hbWUsIGFsbG93T3ZlcndyaXRlKTsKK30KKwor
dm9pZCBRdEZpbGVEb3dubG9hZGVyOjpkZWNpZGVkRGVzdGluYXRpb24oY29uc3QgUVN0cmluZyYg
ZGVjaWRlZEZpbGVQYXRoLCBib29sIGFsbG93T3ZlcndyaXRlKQoreworICAgIEFTU0VSVCghbV9k
ZXN0aW5hdGlvbkZpbGUpOworCisgICAgLy8gRXJyb3IgbWlnaHQgaGF2ZSBvY2N1cmVkIGR1cmlu
ZyBkZXN0aW5hdGlvbiBxdWVyeS4KKyAgICBpZiAobV9lcnJvciAhPSBRTmV0d29ya1JlcGx5OjpO
b0Vycm9yKSB7CisgICAgICAgIGFib3J0RG93bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKFF0Rmls
ZURvd25sb2FkZXI6OkRvd25sb2FkRXJyb3JOZXR3b3JrRmFpbHVyZSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpZiAoZGVjaWRlZEZpbGVQYXRoLmlzRW1wdHkoKSkgeworICAgICAg
ICBhYm9ydERvd25sb2FkV3JpdGluZ0FuZEVtaXRFcnJvcihRdEZpbGVEb3dubG9hZGVyOjpEb3du
bG9hZEVycm9yQ2FuY2VsbGVkQnlDYWxsZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgT3duUHRyPFFGaWxlPiBkb3dubG9hZEZpbGUgPSBhZG9wdFB0cihuZXcgUUZpbGUoZGVjaWRl
ZEZpbGVQYXRoKSk7CisKKyAgICBpZiAoIWFsbG93T3ZlcndyaXRlICYmIGRvd25sb2FkRmlsZS0+
ZXhpc3RzKCkpIHsKKyAgICAgICAgYWJvcnREb3dubG9hZFdyaXRpbmdBbmRFbWl0RXJyb3IoUXRG
aWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvckZpbGVBbHJlYWR5RXhpc3RzKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGlmICghZG93bmxvYWRGaWxlLT5vcGVuKFFJT0RldmljZTo6
V3JpdGVPbmx5IHwgUUlPRGV2aWNlOjpUcnVuY2F0ZSkpIHsKKyAgICAgICAgYWJvcnREb3dubG9h
ZFdyaXRpbmdBbmRFbWl0RXJyb3IoUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvckNhbm5v
dE9wZW5GaWxlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEFzc2lnbmluZyB0
byBtX2Rlc3RpbmF0aW9uRmlsZSBmbGFncyB0aGF0IGVpdGhlciBlcnJvciBvcgorICAgIC8vIGZp
bmlzaGVkIHNoYWxsIGJlIGNhbGxlZCBpbiB0aGUgZW5kLgorICAgIG1fZGVzdGluYXRpb25GaWxl
ID0gZG93bmxvYWRGaWxlLnJlbGVhc2UoKTsKKworICAgIG1fZG93bmxvYWQtPmRpZENyZWF0ZURl
c3RpbmF0aW9uKG1fZGVzdGluYXRpb25GaWxlLT5maWxlTmFtZSgpKTsKKworICAgIC8vIFdlIG1p
Z2h0IGhhdmUgZ290dGVuIHJlYWR5UmVhZCBhbHJlYWR5IGV2ZW4gYmVmb3JlIHRoaXMgZnVuY3Rp
b24KKyAgICAvLyB3YXMgY2FsbGVkLgorICAgIGlmIChtX3JlcGx5LT5ieXRlc0F2YWlsYWJsZSgp
KQorICAgICAgICBvblJlYWR5UmVhZCgpOworCisgICAgLy8gV2UgbWlnaHQgaGF2ZSBnb3R0ZW4g
ZmluaXNoZWQgYWxyZWFkeSBldmVuIGJlZm9yZSB0aGlzCisgICAgLy8gZnVuY3Rpb24gd2FzIGNh
bGxlZC4KKyAgICBpZiAobV9yZXBseS0+aXNGaW5pc2hlZCgpKQorICAgICAgICBvbkZpbmlzaGVk
KCk7CisKK30KKwordm9pZCBRdEZpbGVEb3dubG9hZGVyOjphYm9ydERvd25sb2FkV3JpdGluZ0Fu
ZEVtaXRFcnJvcihRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9yIGVycm9yQ29kZSkKK3sK
KyAgICBtX3JlcGx5LT5hYm9ydCgpOworCisgICAgcWludDY0IGRhdGFTaXplID0gbV9yZXBseS0+
c2l6ZSgpOworICAgIG1fcmVzdW1lRGF0YSA9IG1fcmVwbHktPnJlYWRBbGwoKTsKKworICAgIC8v
IE9uIG5ldHdvcmsgZmFpbHVyZXMgaXQncyBRTmV0d29ya1JlcGx5SGFuZGxlcjo6ZXJyb3JGb3JS
ZXBseSB3aG8gd2lsbCBoYW5kbGUgZXJyb3JzLgorICAgIGlmIChlcnJvckNvZGUgPT0gUXRGaWxl
RG93bmxvYWRlcjo6RG93bmxvYWRFcnJvck5ldHdvcmtGYWlsdXJlKSB7CisgICAgICAgIC8vIERv
bid0IHVzZSBzaXplICsgMSBzbyB0aGUgZW5kaW5nICdcMCcgYnl0ZSBmcm9tIFFCeXRlQXJyYXk6
OmRhdGEoKSBpcyBkaXNjYXJkZWQuCisgICAgICAgIG1fZG93bmxvYWQtPmRpZEZhaWwoUU5ldHdv
cmtSZXBseUhhbmRsZXI6OmVycm9yRm9yUmVwbHkobV9yZXBseS5nZXQoKSksIENvcmVJUEM6OkRh
dGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obV9yZXN1bWVEYXRh
LmRhdGEoKSksIGRhdGFTaXplKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBRU3Ry
aW5nIHRyYW5zbGF0ZWRFcnJvck1lc3NhZ2U7CisgICAgc3dpdGNoIChlcnJvckNvZGUpIHsKKyAg
ICBjYXNlIFF0RmlsZURvd25sb2FkZXI6OkRvd25sb2FkRXJyb3JDYW5jZWxsZWQ6CisgICAgICAg
IHRyYW5zbGF0ZWRFcnJvck1lc3NhZ2UgPSBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlF0
RmlsZURvd25sb2FkZXIiLCAiRG93bmxvYWRDYW5jZWxsZWQiKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9yVW5hYmxlVG9Xcml0ZToKKyAg
ICAgICAgdHJhbnNsYXRlZEVycm9yTWVzc2FnZSA9IFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0
ZSgiUXRGaWxlRG93bmxvYWRlciIsICJVbmFibGUgdG8gd3JpdGUiKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9yQ2Fubm90T3BlbkZpbGU6
CisgICAgICAgIHRyYW5zbGF0ZWRFcnJvck1lc3NhZ2UgPSBRQ29yZUFwcGxpY2F0aW9uOjp0cmFu
c2xhdGUoIlF0RmlsZURvd25sb2FkZXIiLCAiQ2Fubm90IG9wZW4gZmlsZSBmb3Igd3JpdGluZyIp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFF0RmlsZURvd25sb2FkZXI6OkRvd25sb2FkRXJy
b3JGaWxlQWxyZWFkeUV4aXN0czoKKyAgICAgICAgdHJhbnNsYXRlZEVycm9yTWVzc2FnZSA9IFFD
b3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUXRGaWxlRG93bmxvYWRlciIsICJGaWxlIGFscmVh
ZHkgZXhpc3RzIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUXRGaWxlRG93bmxvYWRlcjo6
RG93bmxvYWRFcnJvckNhbmNlbGxlZEJ5Q2FsbGVyOgorICAgICAgICB0cmFuc2xhdGVkRXJyb3JN
ZXNzYWdlID0gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRdEZpbGVEb3dubG9hZGVyIiwg
IkRvd25sb2FkIGNhbmNlbGxlZCBieSBjYWxsZXIiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9yQ2Fubm90RGV0ZXJtaW5lRmlsZW5hbWU6
CisgICAgICAgIHRyYW5zbGF0ZWRFcnJvck1lc3NhZ2UgPSBRQ29yZUFwcGxpY2F0aW9uOjp0cmFu
c2xhdGUoIlF0RmlsZURvd25sb2FkZXIiLCAiQ2Fubm90IGRldGVybWluZSBmaWxlbmFtZSIpOwor
ICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICB9CisKKyAgICBSZXNvdXJjZUVycm9yIGRvd25sb2FkRXJyb3IoIkRvd25sb2FkIiwg
ZXJyb3JDb2RlLCBtX3JlcGx5LT51cmwoKS50b1N0cmluZygpLCB0cmFuc2xhdGVkRXJyb3JNZXNz
YWdlKTsKKworICAgIC8vIERvbid0IHVzZSBzaXplICsgMSBzbyB0aGUgZW5kaW5nICdcMCcgYnl0
ZSBmcm9tIFFCeXRlQXJyYXk6OmRhdGEoKSBpcyBkaXNjYXJkZWQuCisgICAgbV9kb3dubG9hZC0+
ZGlkRmFpbChkb3dubG9hZEVycm9yLCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fcmVzdW1lRGF0YS5kYXRhKCkpLCBkYXRhU2l6ZSkpOwor
fQorCit2b2lkIFF0RmlsZURvd25sb2FkZXI6Om9uUmVhZHlSZWFkKCkKK3sKKyAgICBpZiAobV9k
ZXN0aW5hdGlvbkZpbGUpIHsKKyAgICAgICAgUUJ5dGVBcnJheSBjb250ZW50ID0gbV9yZXBseS0+
cmVhZEFsbCgpOworICAgICAgICBpZiAoY29udGVudC5zaXplKCkgPD0gMCkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBxaW50NjQgYnl0ZXNXcml0dGVuID0gbV9kZXN0aW5hdGlvbkZp
bGUtPndyaXRlKGNvbnRlbnQpOworCisgICAgICAgIGlmIChieXRlc1dyaXR0ZW4gPT0gLTEpIHsK
KyAgICAgICAgICAgIGFib3J0RG93bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKFF0RmlsZURvd25s
b2FkZXI6OkRvd25sb2FkRXJyb3JVbmFibGVUb1dyaXRlKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIC8vIFRoZXJlIG1pZ2h0IGEgY29ybmVyIGNhc2UgdG8gYmUg
Zml4ZWQgaGVyZSBpZiBieXRlc1dyaXR0ZW4gIT0gY29udGVudC5zaXplKCkKKyAgICAgICAgLy8g
ZG9lcyBub3QgYWN0dWFsbHkgcmVwcmVzZW50IGFuIGVycm9yLgorICAgICAgICBBU1NFUlQoYnl0
ZXNXcml0dGVuID09IGNvbnRlbnQuc2l6ZSgpKTsKKworICAgICAgICBtX2Rvd25sb2FkLT5kaWRS
ZWNlaXZlRGF0YShieXRlc1dyaXR0ZW4pOworICAgIH0gZWxzZSBpZiAoIW1faGVhZGVyc1JlYWQp
IHsKKyAgICAgICAgLy8gQnkgQVBJIGNvbnRyYWN0LCBRTmV0d29ya1JlcGx5OjptZXRhRGF0YUNo
YW5nZWQgY2Fubm90IHJlYWxseSBiZSB0cnVzdGVkLgorICAgICAgICAvLyBUaHVzIHdlIG5lZWQg
dG8gY2FsbCB0aGlzIHVwb24gcmVjZWl2aW5nIGZpcnN0IGRhdGEuCisgICAgICAgIFN0cmluZyBj
b250ZW50VHlwZSA9IG1fcmVwbHktPmhlYWRlcihRTmV0d29ya1JlcXVlc3Q6OkNvbnRlbnRUeXBl
SGVhZGVyKS50b1N0cmluZygpOworICAgICAgICBTdHJpbmcgZW5jb2RpbmcgPSBleHRyYWN0Q2hh
cnNldEZyb21NZWRpYVR5cGUoY29udGVudFR5cGUpOworICAgICAgICBTdHJpbmcgbWltZVR5cGUg
PSBleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlKTsKKworICAgICAgICAv
LyBMZXQncyB0cnkgdG8gZ3Vlc3MgZnJvbSB0aGUgZXh0ZW5zaW9uLgorICAgICAgICBpZiAobWlt
ZVR5cGUuaXNFbXB0eSgpKQorICAgICAgICAgICAgbWltZVR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5
OjpnZXRNSU1FVHlwZUZvclBhdGgobV9yZXBseS0+dXJsKCkucGF0aCgpKTsKKworICAgICAgICBS
ZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKG1fcmVwbHktPnVybCgpLCBtaW1lVHlwZSwgbV9yZXBs
eS0+aGVhZGVyKFFOZXR3b3JrUmVxdWVzdDo6Q29udGVudExlbmd0aEhlYWRlcikudG9Mb25nTG9u
ZygpLCBlbmNvZGluZywgU3RyaW5nKCkpOworICAgICAgICBtX2Rvd25sb2FkLT5kaWRSZWNlaXZl
UmVzcG9uc2UocmVzcG9uc2UpOworCisgICAgICAgIGRldGVybWluZUZpbGVuYW1lKCk7CisKKyAg
ICAgICAgbV9oZWFkZXJzUmVhZCA9IHRydWU7CisgICAgfQorfQorCit2b2lkIFF0RmlsZURvd25s
b2FkZXI6Om9uRmluaXNoZWQoKQoreworICAgIGlmICghbV9kZXN0aW5hdGlvbkZpbGUpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fZGVzdGluYXRpb25GaWxlLmNsZWFyKCk7CisKKyAgICBpZiAo
bV9lcnJvciA9PSBRTmV0d29ya1JlcGx5OjpOb0Vycm9yKQorICAgICAgICBtX2Rvd25sb2FkLT5k
aWRGaW5pc2goKTsKKyAgICBlbHNlCisgICAgICAgIGFib3J0RG93bmxvYWRXcml0aW5nQW5kRW1p
dEVycm9yKFF0RmlsZURvd25sb2FkZXI6OkRvd25sb2FkRXJyb3JOZXR3b3JrRmFpbHVyZSk7Cit9
CisKK3ZvaWQgUXRGaWxlRG93bmxvYWRlcjo6b25FcnJvcihRTmV0d29ya1JlcGx5OjpOZXR3b3Jr
RXJyb3IgY29kZSkKK3sKKyAgICBtX2Vycm9yID0gY29kZTsKK30KKwordm9pZCBRdEZpbGVEb3du
bG9hZGVyOjpjYW5jZWwoKQoreworICAgIG1fcmVwbHktPmFib3J0KCk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorI2luY2x1ZGUgIm1vY19RdEZpbGVEb3dubG9hZGVyLmNwcCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L1F0RmlsZURvd25s
b2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L1F0RmlsZURv
d25sb2FkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MzkxNzAwYzIxNDk0YzRkN2U3NWM0NjU0MjFjOTRiZWFh
NmEzZDg2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3du
bG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5oCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoK
KyAqLworCisjaWZuZGVmIFF0RmlsZURvd25sb2FkZXJfaAorI2RlZmluZSBRdEZpbGVEb3dubG9h
ZGVyX2gKKworI2luY2x1ZGUgPFFOZXR3b3JrUmVwbHk+CisjaW5jbHVkZSA8UU5ldHdvcmtSZXF1
ZXN0PgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5o
PgorCitRVF9CRUdJTl9OQU1FU1BBQ0UKK2NsYXNzIFFGaWxlOworY2xhc3MgUU5ldHdvcmtBY2Nl
c3NNYW5hZ2VyOworY2xhc3MgUU5ldHdvcmtSZXF1ZXN0OworUVRfRU5EX05BTUVTUEFDRQorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSZXNvdXJjZUVycm9yOworfQorCituYW1lc3BhY2Ug
V2ViS2l0IHsKK2NsYXNzIERvd25sb2FkOworCitjbGFzcyBRdEZpbGVEb3dubG9hZGVyIDogcHVi
bGljIFFPYmplY3QgeworICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgUXRGaWxlRG93bmxvYWRl
cihEb3dubG9hZCosIFBhc3NPd25QdHI8UU5ldHdvcmtSZXBseT4pOworICAgIHZpcnR1YWwgflF0
RmlsZURvd25sb2FkZXIoKTsKKyAgICB2b2lkIGRlY2lkZWREZXN0aW5hdGlvbihjb25zdCBRU3Ry
aW5nJiBkZWNpZGVkRmlsZVBhdGgsIGJvb2wgYWxsb3dPdmVyd3JpdGUpOworICAgIHZvaWQgY2Fu
Y2VsKCk7CisKKyAgICBlbnVtIERvd25sb2FkRXJyb3IgeworICAgICAgICBEb3dubG9hZEVycm9y
Q2FuY2VsbGVkID0gLTYsCisgICAgICAgIERvd25sb2FkRXJyb3JVbmFibGVUb1dyaXRlID0gLTUs
CisgICAgICAgIERvd25sb2FkRXJyb3JDYW5ub3RPcGVuRmlsZSA9IC00LAorICAgICAgICBEb3du
bG9hZEVycm9yRmlsZUFscmVhZHlFeGlzdHMgPSAtMywKKyAgICAgICAgRG93bmxvYWRFcnJvckNh
bmNlbGxlZEJ5Q2FsbGVyID0gLTIsCisgICAgICAgIERvd25sb2FkRXJyb3JDYW5ub3REZXRlcm1p
bmVGaWxlbmFtZSA9IC0xLAorICAgICAgICBEb3dubG9hZEVycm9yTmV0d29ya0ZhaWx1cmUgPSAw
CisgICAgfTsKKworcHJpdmF0ZSBzbG90czoKKyAgICB2b2lkIG9uUmVhZHlSZWFkKCk7CisgICAg
dm9pZCBvbkZpbmlzaGVkKCk7CisgICAgdm9pZCBvbkVycm9yKFFOZXR3b3JrUmVwbHk6Ok5ldHdv
cmtFcnJvcik7CisKK3ByaXZhdGU6CisgICAgdm9pZCBhYm9ydERvd25sb2FkV3JpdGluZ0FuZEVt
aXRFcnJvcihRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9yKTsKKyAgICB2b2lkIGRldGVy
bWluZUZpbGVuYW1lKCk7CisKKyAgICBEb3dubG9hZCogbV9kb3dubG9hZDsKKyAgICBRQnl0ZUFy
cmF5IG1fcmVzdW1lRGF0YTsKKyAgICBPd25QdHI8UU5ldHdvcmtSZXBseT4gbV9yZXBseTsKKyAg
ICBPd25QdHI8UUZpbGU+IG1fZGVzdGluYXRpb25GaWxlOworICAgIFFOZXR3b3JrUmVwbHk6Ok5l
dHdvcmtFcnJvciBtX2Vycm9yOworICAgIGJvb2wgbV9oZWFkZXJzUmVhZDsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107996</attachid>
            <date>2011-09-20 06:48:34 -0700</date>
            <delta_ts>2011-09-21 07:49:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68153-20110920104818.patch</filename>
            <type>text/plain</type>
            <size>23908</size>
            <attacher name="Jesus Sanchez-Palencia">jesus</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU1MzEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzZTJiYjY2OTdiMzAwNDcw
MmFlNjUwY2JiOTlmNGU2NmUzOGY3N2RmLi41MjQ3MWE2OTY0NzY0YmM4NDhhYThjOGYzNWMzNDE2
NmY1ZTdhYjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDktMTUgIEplc3Vz
IFNhbmNoZXotUGFsZW5jaWEgIDxqZXN1cy5wYWxlbmNpYUBvcGVuYm9zc2Eub3JnPgorCisgICAg
ICAgIFtRdF1bV0syXSBJbXBsZW1lbnQgRG93bmxvYWQgc3VwcG9ydCBpbiBXZWJQcm9jZXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODE1MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yZWQg
UU5ldHdvcmtSZXBseUhhbmRsZXI6OmZpbmlzaCgpIGluIG9yZGVyIHRvIGFkZAorICAgICAgICBh
bmQgdXNlIHRoZSBzdGF0aWMgZnVuY3Rpb24gUU5ldHdvcmtSZXBseUhhbmRsZXI6OmVycm9yRm9y
UmVwbHkoKS4KKyAgICAgICAgVGhpcyB3aWxsIGJlIHVzZWQgYnkgb3VyIERvd25sb2FkIGltcGxl
bWVudGF0aW9uIGluIFdlYktpdDIgKFdlYlByb2Nlc3MpCisgICAgICAgIHdoZW4gaGFuZGxpbmcg
UmVzb3VyY2VFcnJvci4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtS
ZXBseUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UU5ldHdvcmtSZXBseUhhbmRsZXI6
OmZpbmlzaCk6CisgICAgICAgIChXZWJDb3JlOjpRTmV0d29ya1JlcGx5SGFuZGxlcjo6ZXJyb3JG
b3JSZXBseSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFu
ZGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXF1ZXN0Lmg6
CisKIDIwMTEtMDktMjAgIEFkZW5pbHNvbiBDYXZhbGNhbnRpICA8YWRlbmlsc29uLnNpbHZhQG9w
ZW5ib3NzYS5vcmc+CiAKICAgICAgICAgW1F0XSByZXNpemVUb0NvbnRlbnQgc2VlbXMgdG8gdHJp
Z2dlciBpbmZpbml0ZSByZXNpemUgb24gc29tZSBwYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNwcApp
bmRleCA2YTAzY2NkMjcyYjZlNDEyM2Q1NzE4MWFhOWIwYjdhZTJkM2Q1MzI0Li41YWYwMDQ5ZGE0
OWMzMmRiZWVkN2MxZDI2NWI3MDIzNzkzNzQ2NjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNwcApA
QCAtNDU1LDE4ICs0NTUsOCBAQCB2b2lkIFFOZXR3b3JrUmVwbHlIYW5kbGVyOjpmaW5pc2goKQog
CiAgICAgaWYgKCFtX3JlcGx5V3JhcHBlci0+cmVwbHkoKS0+ZXJyb3IoKSB8fCBzaG91bGRJZ25v
cmVIdHRwRXJyb3IobV9yZXBseVdyYXBwZXItPnJlcGx5KCksIG1fcmVwbHlXcmFwcGVyLT5yZXNw
b25zZUNvbnRhaW5zRGF0YSgpKSkKICAgICAgICAgY2xpZW50LT5kaWRGaW5pc2hMb2FkaW5nKG1f
cmVzb3VyY2VIYW5kbGUsIDApOwotICAgIGVsc2UgewotICAgICAgICBRVXJsIHVybCA9IG1fcmVw
bHlXcmFwcGVyLT5yZXBseSgpLT51cmwoKTsKLSAgICAgICAgaW50IGh0dHBTdGF0dXNDb2RlID0g
bV9yZXBseVdyYXBwZXItPnJlcGx5KCktPmF0dHJpYnV0ZShRTmV0d29ya1JlcXVlc3Q6Okh0dHBT
dGF0dXNDb2RlQXR0cmlidXRlKS50b0ludCgpOwotCi0gICAgICAgIGlmIChodHRwU3RhdHVzQ29k
ZSkgewotICAgICAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcigiSFRUUCIsIGh0dHBTdGF0dXND
b2RlLCB1cmwudG9TdHJpbmcoKSwgbV9yZXBseVdyYXBwZXItPnJlcGx5KCktPmF0dHJpYnV0ZShR
TmV0d29ya1JlcXVlc3Q6Okh0dHBSZWFzb25QaHJhc2VBdHRyaWJ1dGUpLnRvU3RyaW5nKCkpOwot
ICAgICAgICAgICAgY2xpZW50LT5kaWRGYWlsKG1fcmVzb3VyY2VIYW5kbGUsIGVycm9yKTsKLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3IoIlF0TmV0d29y
ayIsIG1fcmVwbHlXcmFwcGVyLT5yZXBseSgpLT5lcnJvcigpLCB1cmwudG9TdHJpbmcoKSwgbV9y
ZXBseVdyYXBwZXItPnJlcGx5KCktPmVycm9yU3RyaW5nKCkpOwotICAgICAgICAgICAgY2xpZW50
LT5kaWRGYWlsKG1fcmVzb3VyY2VIYW5kbGUsIGVycm9yKTsKLSAgICAgICAgfQotICAgIH0KKyAg
ICBlbHNlCisgICAgICAgIGNsaWVudC0+ZGlkRmFpbChtX3Jlc291cmNlSGFuZGxlLCBlcnJvckZv
clJlcGx5KG1fcmVwbHlXcmFwcGVyLT5yZXBseSgpKSk7CiAKICAgICBtX3JlcGx5V3JhcHBlciA9
IG51bGxwdHI7CiB9CkBAIC02OTQsNiArNjg0LDE3IEBAIHZvaWQgUU5ldHdvcmtSZXBseUhhbmRs
ZXI6OnN0YXJ0KCkKICAgICAgICAgY29ubmVjdChtX3JlcGx5V3JhcHBlci0+cmVwbHkoKSwgU0lH
TkFMKHVwbG9hZFByb2dyZXNzKHFpbnQ2NCwgcWludDY0KSksIHRoaXMsIFNMT1QodXBsb2FkUHJv
Z3Jlc3MocWludDY0LCBxaW50NjQpKSk7CiB9CiAKK1Jlc291cmNlRXJyb3IgUU5ldHdvcmtSZXBs
eUhhbmRsZXI6OmVycm9yRm9yUmVwbHkoUU5ldHdvcmtSZXBseSogcmVwbHkpCit7CisgICAgUVVy
bCB1cmwgPSByZXBseS0+dXJsKCk7CisgICAgaW50IGh0dHBTdGF0dXNDb2RlID0gcmVwbHktPmF0
dHJpYnV0ZShRTmV0d29ya1JlcXVlc3Q6Okh0dHBTdGF0dXNDb2RlQXR0cmlidXRlKS50b0ludCgp
OworCisgICAgaWYgKGh0dHBTdGF0dXNDb2RlKQorICAgICAgICByZXR1cm4gUmVzb3VyY2VFcnJv
cigiSFRUUCIsIGh0dHBTdGF0dXNDb2RlLCB1cmwudG9TdHJpbmcoKSwgcmVwbHktPmF0dHJpYnV0
ZShRTmV0d29ya1JlcXVlc3Q6Okh0dHBSZWFzb25QaHJhc2VBdHRyaWJ1dGUpLnRvU3RyaW5nKCkp
OworCisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoIlF0TmV0d29yayIsIHJlcGx5LT5lcnJvcigp
LCB1cmwudG9TdHJpbmcoKSwgcmVwbHktPmVycm9yU3RyaW5nKCkpOworfQorCiB9CiAKICNpbmNs
dWRlICJtb2NfUU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5oCmluZGV4
IDlkMzZkYTIyMWQ4NTJmMTI1NzVlNTE3YzJlODNkMTE3YmI2NjA5NWQuLmY3YTQ0N2E1Y2E3MmY3
NzkyNzIyOGEyOTNkY2UyNjBkOWU2MjlmMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmgKQEAgLTM2LDYg
KzM2LDcgQEAgUVRfRU5EX05BTUVTUEFDRQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBG
b3JtRGF0YUlPRGV2aWNlOworY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlSGFu
ZGxlOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKQEAg
LTEzMyw2ICsxMzQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBmb3J3YXJkRGF0YSgpOwogICAgIHZv
aWQgc2VuZFJlc3BvbnNlSWZOZWVkZWQoKTsKIAorICAgIHN0YXRpYyBSZXNvdXJjZUVycm9yIGVy
cm9yRm9yUmVwbHkoUU5ldHdvcmtSZXBseSopOworCiBwcml2YXRlIHNsb3RzOgogICAgIHZvaWQg
dXBsb2FkUHJvZ3Jlc3MocWludDY0IGJ5dGVzU2VudCwgcWludDY0IGJ5dGVzVG90YWwpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlUmVx
dWVzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZVJlcXVl
c3QuaAppbmRleCAwYzdiNjJiNmZjMzY0NWVkZDYzOGU4N2VkYjQ5MTY4ODMzZThkYzY2Li5jZDZm
NzYwMjZkOTY3NmExYjFmNDE0ZWQ0YzM5NTBhZWNiYTQ1OGNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlUmVxdWVzdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXF1ZXN0LmgKQEAgLTU5LDcg
KzU5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB7CiAgICAgICAgIH0KIAotICAg
ICAgICBRTmV0d29ya1JlcXVlc3QgdG9OZXR3b3JrUmVxdWVzdChRT2JqZWN0KiBvcmlnaW5hdGlu
Z09iamVjdCkgY29uc3Q7CisgICAgICAgIFFOZXR3b3JrUmVxdWVzdCB0b05ldHdvcmtSZXF1ZXN0
KFFPYmplY3QqIG9yaWdpbmF0aW5nT2JqZWN0ID0gMCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgog
ICAgICAgICBmcmllbmQgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0QmFzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA0
ZTgwZTVmN2QxMGMzZGI3N2E5MDk1ZDYzYTRkNmY3YmU0ZjBlMWQzLi5iNjcyYWU5ZTAyMTM0ZTNi
OWNhNDBmNGYyZmVhYzU5ZjZlMmM1MzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIw
MTEtMDktMTUgIEplc3VzIFNhbmNoZXotUGFsZW5jaWEgIDxqZXN1cy5wYWxlbmNpYUBvcGVuYm9z
c2Eub3JnPgorCisgICAgICAgIFtRdF1bV0syXSBJbXBsZW1lbnQgRG93bmxvYWQgc3VwcG9ydCBp
biBXZWJQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02ODE1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdlIGltcGxlbWVudCB0aGUgbmVjZXNzYXJ5IGZ1bmN0aW9ucyBvZiBEb3dubG9hZC5oLCBh
bmQgb3VyIFF0RmlsZURvd25sb2FkZXIKKyAgICAgICAgdG8gaGFuZGxlIGFsbCBuZXR3b3JrIGNv
bW11bmljYXRpb24gYW5kIGNhbGwgdGhlIG5lY2Vzc2FyeSBmdW5jdGlvbnMgb2YgRG93bmxvYWQu
CisKKyAgICAgICAgV2UgdXNlIHRoZSBkb3dubG9hZCBwb2xpY3kgZm9yIGFueSBNSU1FIHR5cGUg
bm90IHN1cHBvcnRlZCBieSBXZWJLaXQuIFRoaXMKKyAgICAgICAgYmVoYXZlcyBsaWtlIFF0IG5v
bi1XZWJLaXQyIGV4Y2VwdCB0aGF0IHdlIGRvbid0IGZvcmNlIGRvd25sb2FkIHdoZW4KKyAgICAg
ICAgd2UgZW5jb3VudGVyIENvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQuIFdlIHN0aWxs
IHVzZSB0aGUgImZpbGVuYW1lPSIKKyAgICAgICAgZmllbGQgZm9yIGZpbGUgbmFtZSBzdWdnZXN0
aW9uIHRob3VnaC4KKworICAgICAgICBCYXNlZCBvbiBvcmlnaW5hbCBwYXRjaGVzIGJ5OiBLaW1t
byBLaW5udW5lbiA8a2ltbW8udC5raW5udW5lbkBub2tpYS5jb20+LAorICAgICAgICBKb2NlbHlu
IFR1cmNvdHRlIDxqb2NlbHluLnR1cmNvdHRlQG5va2lhLmNvbT4sIFNpbW9uIEhhdXNtYW5uIDxz
aW1vbi5oYXVzbWFubkBub2tpYS5jb20+CisgICAgICAgIGFuZCBaYWxhbiBCdWp0YXMgPHphbGFu
LmJ1anRhc0Bub2tpYS5jb20+LgorCisgICAgICAgICogV2ViS2l0Mi5wcm86CisgICAgICAgICog
V2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwOiBBZGRpbmcgUXRGaWxlRG93bmxvYWRl
ciwgUXQgcGxhdGZvcm0gc3BlY2lmaWMKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OkRvd25s
b2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oOiBBZGRpbmcg
UXRGaWxlRG93bmxvYWRlciwgUXQgcGxhdGZvcm0gc3BlY2lmaWMKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0Rvd25sb2Fkcy9xdC9Eb3dubG9hZFF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxv
YWQ6OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnN0YXJ0V2l0aEhhbmRsZSk6
CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpjYW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpE
b3dubG9hZDo6cGxhdGZvcm1JbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6
OmRpZERlY2lkZURlc3RpbmF0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9x
dC9RdEZpbGVEb3dubG9hZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlF0RmlsZURv
d25sb2FkZXI6OlF0RmlsZURvd25sb2FkZXIpOgorICAgICAgICAoV2ViS2l0OjpRdEZpbGVEb3du
bG9hZGVyOjp+UXRGaWxlRG93bmxvYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlF0RmlsZURvd25s
b2FkZXI6OmRldGVybWluZUZpbGVuYW1lKToKKyAgICAgICAgKFdlYktpdDo6UXRGaWxlRG93bmxv
YWRlcjo6ZGVjaWRlZERlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UXRGaWxlRG93bmxv
YWRlcjo6YWJvcnREb3dubG9hZFdyaXRpbmdBbmRFbWl0RXJyb3IpOgorICAgICAgICAoV2ViS2l0
OjpRdEZpbGVEb3dubG9hZGVyOjpvblJlYWR5UmVhZCk6CisgICAgICAgIChXZWJLaXQ6OlF0Rmls
ZURvd25sb2FkZXI6Om9uRmluaXNoZWQpOgorICAgICAgICAoV2ViS2l0OjpRdEZpbGVEb3dubG9h
ZGVyOjpvbkVycm9yKToKKyAgICAgICAgKFdlYktpdDo6UXRGaWxlRG93bmxvYWRlcjo6Y2FuY2Vs
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3dubG9hZGVyLmg6
IEFkZGVkLgorCiAyMDExLTA5LTIwICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBXZWJQcm9jZXNzIHNob3VsZG4ndCB1c2UgdGhlIEdU
SysgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBybyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDIucHJvCmluZGV4IDA4ZmZiNGJkMWU5NGI2NjMwY2M3ZjYxNWVjMzUwYThj
NjdlNWNhNTYuLjRlZjY5OWVjYjE2MGE0NDVhZWU1YzJhZDJhNzUzMjM5MzQxMjYwN2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJvCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YktpdDIucHJvCkBAIC0yNzEsNiArMjcxLDcgQEAgSEVBREVSUyArPSBcCiAgICAgV2ViUHJvY2Vz
cy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaCBcCiAgICAgV2ViUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWQuaCBcCiAgICAgV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgg
XAorICAgIFdlYlByb2Nlc3MvRG93bmxvYWRzL3F0L1F0RmlsZURvd25sb2FkZXIuaCBcCiAgICAg
V2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmggXAogICAgIFdlYlBy
b2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCBc
CiAgICAgV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaCBcCkBA
IC01MTAsNiArNTExLDcgQEAgU09VUkNFUyArPSBcCiAgICAgV2ViUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWQuY3BwIFwKICAgICBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIu
Y3BwIFwKICAgICBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9Eb3dubG9hZFF0LmNwcCBcCisgICAg
V2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5jcHAgXAogICAgIFdlYlBy
b2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5jcHAgXAogICAgIFdlYlByb2Nl
c3MvR2VvbG9jYXRpb24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwIFwK
ICAgICBXZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHAgXApA
QCAtNTIwLDcgKzUyMiw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3QuY3BwIFwKICAgICBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgXAog
ICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwIFwK
LSAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3Vs
dC5jcHAgXCAgICAKKyAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
SGl0VGVzdFJlc3VsdC5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAgXAogICAgIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAK
aW5kZXggYzlmZjU5MzljM2Q5ZWIzZjFkMjMwNzY4ZDNhZGE2NjMzODJhN2U3OC4uMWQwNTk0MTVh
ZjhhYzY2ODMwODE3MmQ0NTkyM2I0ODFjMTZjNWI3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcApAQCAtNTEsNiArNTEsOSBAQCBEb3du
bG9hZDo6RG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQogI2lmIFVTRShDRk5FVFdPUkspCiAgICAgLCBtX2FsbG93T3ZlcndyaXRlKGZh
bHNlKQogI2VuZGlmCisjaWYgUExBVEZPUk0oUVQpCisgICAgLCBtX3F0RG93bmxvYWRlcigwKQor
I2VuZGlmCiB7CiAgICAgQVNTRVJUKG1fZG93bmxvYWRJRCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCmluZGV4IGZlOWE1NmQxZWUyM2EyOGZi
MzY1OTcyNGUzYTYxYmNjMmVkNTIxNGMuLmFjY2NkM2Y4OGUyYTY5OTU5N2EzOWI3YmY4MjhkNDM2
MzdiNzBmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWQuaApAQCAtNjAsNiArNjAsMTAgQEAgY2xhc3MgRG93bmxvYWRBdXRoZW50aWNhdGlvbkNs
aWVudDsKIGNsYXNzIFNhbmRib3hFeHRlbnNpb247CiBjbGFzcyBXZWJQYWdlOwogCisjaWYgUExB
VEZPUk0oUVQpCitjbGFzcyBRdEZpbGVEb3dubG9hZGVyOworI2VuZGlmCisKIGNsYXNzIERvd25s
b2FkIDogcHVibGljIENvcmVJUEM6Ok1lc3NhZ2VTZW5kZXI8RG93bmxvYWQ+IHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShEb3dubG9hZCk7CiBwdWJsaWM6CkBAIC0xMjYsNiArMTMwLDkgQEAg
cHJpdmF0ZToKICAgICBSZXRhaW5QdHI8Q0ZVUkxEb3dubG9hZFJlZj4gbV9kb3dubG9hZDsKICAg
ICBSZWZQdHI8RG93bmxvYWRBdXRoZW50aWNhdGlvbkNsaWVudD4gbV9hdXRoZW50aWNhdGlvbkNs
aWVudDsKICNlbmRpZgorI2lmIFBMQVRGT1JNKFFUKQorICAgIFF0RmlsZURvd25sb2FkZXIqIG1f
cXREb3dubG9hZGVyOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L0Rvd25sb2FkUXQu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvRG93bmxvYWRRdC5j
cHAKaW5kZXggYWQ1ZTdkZWU2ZTRkNDAxMmJmYzlkZTY3MzZmYzQ2MDg0YjZiMWQ5OC4uNWI4ZmYy
OWI2OGJjYTMxZWY2Mjk0MGI4M2I1MjhmOTg3MDI4ZDA1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvRG93bmxvYWRRdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvRG93bmxvYWRRdC5jcHAKQEAgLTEsNSAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBh
bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjYsNyArMjcsMTMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEb3du
bG9hZC5oIgogCisjaW5jbHVkZSAiUXRGaWxlRG93bmxvYWRlci5oIgorI2luY2x1ZGUgIldlYlBy
b2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9RTmV0d29ya1JlcGx5SGFuZGxlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3Vy
Y2VIYW5kbGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKQEAgLTM0LDI3ICs0MSwzNSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9p
ZCBEb3dubG9hZDo6c3RhcnQoV2ViUGFnZSogaW5pdGlhdGluZ1dlYlBhZ2UpCiB7Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICBRTmV0d29ya0FjY2Vzc01hbmFnZXIqIG1hbmFnZXIgPSBXZWJQ
cm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQWNjZXNzTWFuYWdlcigpOworICAgIEFTU0VSVChtYW5h
Z2VyKTsKKyAgICBBU1NFUlQoIW1fcXREb3dubG9hZGVyKTsKKworICAgIG1fcXREb3dubG9hZGVy
ID0gbmV3IFF0RmlsZURvd25sb2FkZXIodGhpcywgYWRvcHRQdHIobWFuYWdlci0+Z2V0KG1fcmVx
dWVzdC50b05ldHdvcmtSZXF1ZXN0KCkpKSk7CiB9CiAKLXZvaWQgRG93bmxvYWQ6OnN0YXJ0V2l0
aEhhbmRsZShXZWJQYWdlKiBpbml0aWF0aW5nUGFnZSwgUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIGluaXRpYWxSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikK
K3ZvaWQgRG93bmxvYWQ6OnN0YXJ0V2l0aEhhbmRsZShXZWJQYWdlKiBpbml0aWF0aW5nUGFnZSwg
UmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBpbml0aWFsUmVx
dWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcCkKIHsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIEFTU0VSVCghbV9xdERvd25sb2FkZXIpOworICAgIG1fcXREb3dubG9hZGVyID0g
bmV3IFF0RmlsZURvd25sb2FkZXIodGhpcywgYWRvcHRQdHIoaGFuZGxlLT5nZXRJbnRlcm5hbCgp
LT5tX2pvYi0+cmVsZWFzZSgpKSk7CiB9CiAKIHZvaWQgRG93bmxvYWQ6OmNhbmNlbCgpCiB7Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBBU1NFUlQobV9xdERvd25sb2FkZXIpOworICAgIG1f
cXREb3dubG9hZGVyLT5jYW5jZWwoKTsKIH0KIAogdm9pZCBEb3dubG9hZDo6cGxhdGZvcm1JbnZh
bGlkYXRlKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIEFTU0VSVChtX3F0RG93bmxv
YWRlcik7CisgICAgbV9xdERvd25sb2FkZXItPmRlbGV0ZUxhdGVyKCk7CisgICAgbV9xdERvd25s
b2FkZXIgPSAwOwogfQogCiB2b2lkIERvd25sb2FkOjpkaWREZWNpZGVEZXN0aW5hdGlvbihjb25z
dCBTdHJpbmcmIGRlc3RpbmF0aW9uLCBib29sIGFsbG93T3ZlcndyaXRlKQogewotICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgbV9xdERvd25sb2FkZXItPmRlY2lkZWREZXN0aW5hdGlvbihkZXN0
aW5hdGlvbiwgYWxsb3dPdmVyd3JpdGUpOwogfQogCiB2b2lkIERvd25sb2FkOjpwbGF0Zm9ybURp
ZEZpbmlzaCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fk
cy9xdC9RdEZpbGVEb3dubG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93
bmxvYWRzL3F0L1F0RmlsZURvd25sb2FkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5Yzg5NDFlNTI0NTM4
M2RkMjk3ODI5OGI2YWI1M2QzZTZiYTJmMDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3dubG9hZGVyLmNwcApAQCAtMCww
ICsxLDIzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBh
bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiUXRGaWxlRG93bmxvYWRlci5oIgorCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2lu
Y2x1ZGUgIkRvd25sb2FkLmgiCisjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKKyNpbmNsdWRlICJN
SU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW5jbHVkZSA8UUNvcmVBcHBsaWNhdGlvbj4KKyNpbmNsdWRl
IDxRRmlsZT4KKyNpbmNsdWRlIDxRRmlsZUluZm8+CisjaW5jbHVkZSA8UU5ldHdvcmtBY2Nlc3NN
YW5hZ2VyPgorI2luY2x1ZGUgPFdlYkNvcmUvUU5ldHdvcmtSZXBseUhhbmRsZXIuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
UmVzcG9uc2UuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2Ug
V1RGOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUXRGaWxlRG93bmxvYWRlcjo6UXRGaWxlRG93
bmxvYWRlcihEb3dubG9hZCogZG93bmxvYWQsIFBhc3NPd25QdHI8UU5ldHdvcmtSZXBseT4gcmVw
bHkpCisgICAgOiBtX2Rvd25sb2FkKGRvd25sb2FkKQorICAgICwgbV9yZXBseShyZXBseSkKKyAg
ICAsIG1fZXJyb3IoUU5ldHdvcmtSZXBseTo6Tm9FcnJvcikKKyAgICAsIG1faGVhZGVyc1JlYWQo
ZmFsc2UpCit7CisgICAgY29ubmVjdChtX3JlcGx5LmdldCgpLCBTSUdOQUwocmVhZHlSZWFkKCkp
LCBTTE9UKG9uUmVhZHlSZWFkKCkpKTsKKyAgICBjb25uZWN0KG1fcmVwbHkuZ2V0KCksIFNJR05B
TChmaW5pc2hlZCgpKSwgU0xPVChvbkZpbmlzaGVkKCkpKTsKKyAgICBjb25uZWN0KG1fcmVwbHku
Z2V0KCksIFNJR05BTChlcnJvcihRTmV0d29ya1JlcGx5OjpOZXR3b3JrRXJyb3IpKSwgU0xPVChv
bkVycm9yKFFOZXR3b3JrUmVwbHk6Ok5ldHdvcmtFcnJvcikpKTsKKworICAgIC8vIENhbGwgb25S
ZWFkeVJlYWQganVzdCBpbiBjYXNlIHNvbWUgZGF0YSBpcyBhbHJlYWR5IHdhaXRpbmcuCisgICAg
b25SZWFkeVJlYWQoKTsKK30KKworUXRGaWxlRG93bmxvYWRlcjo6flF0RmlsZURvd25sb2FkZXIo
KQoreworICAgIGlmICghbV9kZXN0aW5hdGlvbkZpbGUpCisgICAgICAgIHJldHVybjsKKworICAg
IGFib3J0RG93bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKFF0RmlsZURvd25sb2FkZXI6OkRvd25s
b2FkRXJyb3JDYW5jZWxsZWQpOworfQorCit2b2lkIFF0RmlsZURvd25sb2FkZXI6OmRldGVybWlu
ZUZpbGVuYW1lKCkKK3sKKyAgICBBU1NFUlQoIW1fZGVzdGluYXRpb25GaWxlKTsKKworICAgIFFT
dHJpbmcgZmlsZU5hbWVDYW5kaWRhdGUgPSBmaWxlbmFtZUZyb21IVFRQQ29udGVudERpc3Bvc2l0
aW9uKFFTdHJpbmc6OmZyb21MYXRpbjEobV9yZXBseS0+cmF3SGVhZGVyKCJDb250ZW50LURpc3Bv
c2l0aW9uIikpKTsKKyAgICBpZiAoZmlsZU5hbWVDYW5kaWRhdGUuaXNFbXB0eSgpKSB7CisgICAg
ICAgIEtVUkwga3VybCA9IG1fcmVwbHktPnVybCgpOworICAgICAgICBmaWxlTmFtZUNhbmRpZGF0
ZSA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhrdXJsLmxhc3RQYXRoQ29tcG9uZW50KCkpOwor
ICAgIH0KKworICAgIGlmIChmaWxlTmFtZUNhbmRpZGF0ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAg
YWJvcnREb3dubG9hZFdyaXRpbmdBbmRFbWl0RXJyb3IoUXRGaWxlRG93bmxvYWRlcjo6RG93bmxv
YWRFcnJvckNhbm5vdERldGVybWluZUZpbGVuYW1lKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHdlIHJlbW92ZSBwb3NzaWJsZSAiLi4vLi4iIHBhcnRz
IGluIHRoZSBnaXZlbiBmaWxlIG5hbWUuCisgICAgUUZpbGVJbmZvIGZpbGVOYW1lRmlsdGVyKGZp
bGVOYW1lQ2FuZGlkYXRlKTsKKyAgICBRU3RyaW5nIGZpbGVOYW1lID0gZmlsZU5hbWVGaWx0ZXIu
ZmlsZU5hbWUoKTsKKworICAgIGlmIChmaWxlTmFtZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgYWJv
cnREb3dubG9hZFdyaXRpbmdBbmRFbWl0RXJyb3IoUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRF
cnJvckNhbm5vdERldGVybWluZUZpbGVuYW1lKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGJvb2wgYWxsb3dPdmVyd3JpdGU7CisgICAgbV9kb3dubG9hZC0+ZGVjaWRlRGVzdGluYXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoZmlsZU5hbWUsIGFsbG93T3ZlcndyaXRlKTsKK30KKwor
dm9pZCBRdEZpbGVEb3dubG9hZGVyOjpkZWNpZGVkRGVzdGluYXRpb24oY29uc3QgUVN0cmluZyYg
ZGVjaWRlZEZpbGVQYXRoLCBib29sIGFsbG93T3ZlcndyaXRlKQoreworICAgIEFTU0VSVCghbV9k
ZXN0aW5hdGlvbkZpbGUpOworCisgICAgLy8gRXJyb3IgbWlnaHQgaGF2ZSBvY2N1cmVkIGR1cmlu
ZyBkZXN0aW5hdGlvbiBxdWVyeS4KKyAgICBpZiAobV9lcnJvciAhPSBRTmV0d29ya1JlcGx5OjpO
b0Vycm9yKSB7CisgICAgICAgIGFib3J0RG93bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKFF0Rmls
ZURvd25sb2FkZXI6OkRvd25sb2FkRXJyb3JOZXR3b3JrRmFpbHVyZSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpZiAoZGVjaWRlZEZpbGVQYXRoLmlzRW1wdHkoKSkgeworICAgICAg
ICBhYm9ydERvd25sb2FkV3JpdGluZ0FuZEVtaXRFcnJvcihRdEZpbGVEb3dubG9hZGVyOjpEb3du
bG9hZEVycm9yQ2FuY2VsbGVkQnlDYWxsZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgT3duUHRyPFFGaWxlPiBkb3dubG9hZEZpbGUgPSBhZG9wdFB0cihuZXcgUUZpbGUoZGVjaWRl
ZEZpbGVQYXRoKSk7CisKKyAgICBpZiAoIWFsbG93T3ZlcndyaXRlICYmIGRvd25sb2FkRmlsZS0+
ZXhpc3RzKCkpIHsKKyAgICAgICAgYWJvcnREb3dubG9hZFdyaXRpbmdBbmRFbWl0RXJyb3IoUXRG
aWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvckZpbGVBbHJlYWR5RXhpc3RzKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGlmICghZG93bmxvYWRGaWxlLT5vcGVuKFFJT0RldmljZTo6
V3JpdGVPbmx5IHwgUUlPRGV2aWNlOjpUcnVuY2F0ZSkpIHsKKyAgICAgICAgYWJvcnREb3dubG9h
ZFdyaXRpbmdBbmRFbWl0RXJyb3IoUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvckNhbm5v
dE9wZW5GaWxlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEFzc2lnbmluZyB0
byBtX2Rlc3RpbmF0aW9uRmlsZSBmbGFncyB0aGF0IGVpdGhlciBlcnJvciBvcgorICAgIC8vIGZp
bmlzaGVkIHNoYWxsIGJlIGNhbGxlZCBpbiB0aGUgZW5kLgorICAgIG1fZGVzdGluYXRpb25GaWxl
ID0gZG93bmxvYWRGaWxlLnJlbGVhc2UoKTsKKworICAgIG1fZG93bmxvYWQtPmRpZENyZWF0ZURl
c3RpbmF0aW9uKG1fZGVzdGluYXRpb25GaWxlLT5maWxlTmFtZSgpKTsKKworICAgIC8vIFdlIG1p
Z2h0IGhhdmUgZ290dGVuIHJlYWR5UmVhZCBhbHJlYWR5IGV2ZW4gYmVmb3JlIHRoaXMgZnVuY3Rp
b24KKyAgICAvLyB3YXMgY2FsbGVkLgorICAgIGlmIChtX3JlcGx5LT5ieXRlc0F2YWlsYWJsZSgp
KQorICAgICAgICBvblJlYWR5UmVhZCgpOworCisgICAgLy8gV2UgbWlnaHQgaGF2ZSBnb3R0ZW4g
ZmluaXNoZWQgYWxyZWFkeSBldmVuIGJlZm9yZSB0aGlzCisgICAgLy8gZnVuY3Rpb24gd2FzIGNh
bGxlZC4KKyAgICBpZiAobV9yZXBseS0+aXNGaW5pc2hlZCgpKQorICAgICAgICBvbkZpbmlzaGVk
KCk7CisKK30KKwordm9pZCBRdEZpbGVEb3dubG9hZGVyOjphYm9ydERvd25sb2FkV3JpdGluZ0Fu
ZEVtaXRFcnJvcihRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9yIGVycm9yQ29kZSkKK3sK
KyAgICBtX3JlcGx5LT5hYm9ydCgpOworCisgICAgLy8gT24gbmV0d29yayBmYWlsdXJlcyBpdCdz
IFFOZXR3b3JrUmVwbHlIYW5kbGVyOjplcnJvckZvclJlcGx5IHdobyB3aWxsIGhhbmRsZSBlcnJv
cnMuCisgICAgaWYgKGVycm9yQ29kZSA9PSBRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9y
TmV0d29ya0ZhaWx1cmUpIHsKKyAgICAgICAgLy8gRG9uJ3QgdXNlIHNpemUgKyAxIHNvIHRoZSBl
bmRpbmcgJ1wwJyBieXRlIGZyb20gUUJ5dGVBcnJheTo6ZGF0YSgpIGlzIGRpc2NhcmRlZC4KKyAg
ICAgICAgbV9kb3dubG9hZC0+ZGlkRmFpbChRTmV0d29ya1JlcGx5SGFuZGxlcjo6ZXJyb3JGb3JS
ZXBseShtX3JlcGx5LmdldCgpKSwgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSgwLCAwKSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBRU3RyaW5nIHRyYW5zbGF0ZWRFcnJvck1lc3NhZ2U7
CisgICAgc3dpdGNoIChlcnJvckNvZGUpIHsKKyAgICBjYXNlIFF0RmlsZURvd25sb2FkZXI6OkRv
d25sb2FkRXJyb3JDYW5jZWxsZWQ6CisgICAgICAgIHRyYW5zbGF0ZWRFcnJvck1lc3NhZ2UgPSBR
Q29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlF0RmlsZURvd25sb2FkZXIiLCAiRG93bmxvYWRD
YW5jZWxsZWQiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBRdEZpbGVEb3dubG9hZGVyOjpE
b3dubG9hZEVycm9yVW5hYmxlVG9Xcml0ZToKKyAgICAgICAgdHJhbnNsYXRlZEVycm9yTWVzc2Fn
ZSA9IFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUXRGaWxlRG93bmxvYWRlciIsICJVbmFi
bGUgdG8gd3JpdGUiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBRdEZpbGVEb3dubG9hZGVy
OjpEb3dubG9hZEVycm9yQ2Fubm90T3BlbkZpbGU6CisgICAgICAgIHRyYW5zbGF0ZWRFcnJvck1l
c3NhZ2UgPSBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlF0RmlsZURvd25sb2FkZXIiLCAi
Q2Fubm90IG9wZW4gZmlsZSBmb3Igd3JpdGluZyIpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFF0RmlsZURvd25sb2FkZXI6OkRvd25sb2FkRXJyb3JGaWxlQWxyZWFkeUV4aXN0czoKKyAgICAg
ICAgdHJhbnNsYXRlZEVycm9yTWVzc2FnZSA9IFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgi
UXRGaWxlRG93bmxvYWRlciIsICJGaWxlIGFscmVhZHkgZXhpc3RzIik7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvckNhbmNlbGxlZEJ5Q2Fs
bGVyOgorICAgICAgICB0cmFuc2xhdGVkRXJyb3JNZXNzYWdlID0gUUNvcmVBcHBsaWNhdGlvbjo6
dHJhbnNsYXRlKCJRdEZpbGVEb3dubG9hZGVyIiwgIkRvd25sb2FkIGNhbmNlbGxlZCBieSBjYWxs
ZXIiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9h
ZEVycm9yQ2Fubm90RGV0ZXJtaW5lRmlsZW5hbWU6CisgICAgICAgIHRyYW5zbGF0ZWRFcnJvck1l
c3NhZ2UgPSBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlF0RmlsZURvd25sb2FkZXIiLCAi
Q2Fubm90IGRldGVybWluZSBmaWxlbmFtZSIpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICBSZXNvdXJjZUVy
cm9yIGRvd25sb2FkRXJyb3IoIkRvd25sb2FkIiwgZXJyb3JDb2RlLCBtX3JlcGx5LT51cmwoKS50
b1N0cmluZygpLCB0cmFuc2xhdGVkRXJyb3JNZXNzYWdlKTsKKworICAgIC8vIERvbid0IHVzZSBz
aXplICsgMSBzbyB0aGUgZW5kaW5nICdcMCcgYnl0ZSBmcm9tIFFCeXRlQXJyYXk6OmRhdGEoKSBp
cyBkaXNjYXJkZWQuCisgICAgbV9kb3dubG9hZC0+ZGlkRmFpbChkb3dubG9hZEVycm9yLCBDb3Jl
SVBDOjpEYXRhUmVmZXJlbmNlKDAsIDApKTsKK30KKwordm9pZCBRdEZpbGVEb3dubG9hZGVyOjpv
blJlYWR5UmVhZCgpCit7CisgICAgaWYgKG1fZGVzdGluYXRpb25GaWxlKSB7CisgICAgICAgIFFC
eXRlQXJyYXkgY29udGVudCA9IG1fcmVwbHktPnJlYWRBbGwoKTsKKyAgICAgICAgaWYgKGNvbnRl
bnQuc2l6ZSgpIDw9IDApCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgcWludDY0IGJ5
dGVzV3JpdHRlbiA9IG1fZGVzdGluYXRpb25GaWxlLT53cml0ZShjb250ZW50KTsKKworICAgICAg
ICBpZiAoYnl0ZXNXcml0dGVuID09IC0xKSB7CisgICAgICAgICAgICBhYm9ydERvd25sb2FkV3Jp
dGluZ0FuZEVtaXRFcnJvcihRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9yVW5hYmxlVG9X
cml0ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBUaGVy
ZSBtaWdodCBhIGNvcm5lciBjYXNlIHRvIGJlIGZpeGVkIGhlcmUgaWYgYnl0ZXNXcml0dGVuICE9
IGNvbnRlbnQuc2l6ZSgpCisgICAgICAgIC8vIGRvZXMgbm90IGFjdHVhbGx5IHJlcHJlc2VudCBh
biBlcnJvci4KKyAgICAgICAgQVNTRVJUKGJ5dGVzV3JpdHRlbiA9PSBjb250ZW50LnNpemUoKSk7
CisKKyAgICAgICAgbV9kb3dubG9hZC0+ZGlkUmVjZWl2ZURhdGEoYnl0ZXNXcml0dGVuKTsKKyAg
ICB9IGVsc2UgaWYgKCFtX2hlYWRlcnNSZWFkKSB7CisgICAgICAgIC8vIEJ5IEFQSSBjb250cmFj
dCwgUU5ldHdvcmtSZXBseTo6bWV0YURhdGFDaGFuZ2VkIGNhbm5vdCByZWFsbHkgYmUgdHJ1c3Rl
ZC4KKyAgICAgICAgLy8gVGh1cyB3ZSBuZWVkIHRvIGNhbGwgdGhpcyB1cG9uIHJlY2VpdmluZyBm
aXJzdCBkYXRhLgorICAgICAgICBTdHJpbmcgY29udGVudFR5cGUgPSBtX3JlcGx5LT5oZWFkZXIo
UU5ldHdvcmtSZXF1ZXN0OjpDb250ZW50VHlwZUhlYWRlcikudG9TdHJpbmcoKTsKKyAgICAgICAg
U3RyaW5nIGVuY29kaW5nID0gZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBl
KTsKKyAgICAgICAgU3RyaW5nIG1pbWVUeXBlID0gZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlw
ZShjb250ZW50VHlwZSk7CisKKyAgICAgICAgLy8gTGV0J3MgdHJ5IHRvIGd1ZXNzIGZyb20gdGhl
IGV4dGVuc2lvbi4KKyAgICAgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKKyAgICAgICAgICAg
IG1pbWVUeXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JQYXRoKG1fcmVwbHkt
PnVybCgpLnBhdGgoKSk7CisKKyAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShtX3Jl
cGx5LT51cmwoKSwgbWltZVR5cGUsIG1fcmVwbHktPmhlYWRlcihRTmV0d29ya1JlcXVlc3Q6OkNv
bnRlbnRMZW5ndGhIZWFkZXIpLnRvTG9uZ0xvbmcoKSwgZW5jb2RpbmcsIFN0cmluZygpKTsKKyAg
ICAgICAgbV9kb3dubG9hZC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKKworICAgICAg
ICBkZXRlcm1pbmVGaWxlbmFtZSgpOworCisgICAgICAgIG1faGVhZGVyc1JlYWQgPSB0cnVlOwor
ICAgIH0KK30KKwordm9pZCBRdEZpbGVEb3dubG9hZGVyOjpvbkZpbmlzaGVkKCkKK3sKKyAgICBp
ZiAoIW1fZGVzdGluYXRpb25GaWxlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Rlc3RpbmF0
aW9uRmlsZS5jbGVhcigpOworCisgICAgaWYgKG1fZXJyb3IgPT0gUU5ldHdvcmtSZXBseTo6Tm9F
cnJvcikKKyAgICAgICAgbV9kb3dubG9hZC0+ZGlkRmluaXNoKCk7CisgICAgZWxzZQorICAgICAg
ICBhYm9ydERvd25sb2FkV3JpdGluZ0FuZEVtaXRFcnJvcihRdEZpbGVEb3dubG9hZGVyOjpEb3du
bG9hZEVycm9yTmV0d29ya0ZhaWx1cmUpOworfQorCit2b2lkIFF0RmlsZURvd25sb2FkZXI6Om9u
RXJyb3IoUU5ldHdvcmtSZXBseTo6TmV0d29ya0Vycm9yIGNvZGUpCit7CisgICAgbV9lcnJvciA9
IGNvZGU7Cit9CisKK3ZvaWQgUXRGaWxlRG93bmxvYWRlcjo6Y2FuY2VsKCkKK3sKKyAgICBtX3Jl
cGx5LT5hYm9ydCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKyNpbmNsdWRlICJtb2Nf
UXRGaWxlRG93bmxvYWRlci5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3dubG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3dubG9hZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWViMjk5
MzJkYTY4ZjRjNDM3MjUzYTQ5ZmZjZTUzYjhmNzVkYTJkYQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L1F0RmlsZURvd25sb2FkZXIuaApA
QCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0
aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBRdEZpbGVEb3dubG9h
ZGVyX2gKKyNkZWZpbmUgUXRGaWxlRG93bmxvYWRlcl9oCisKKyNpbmNsdWRlIDxRTmV0d29ya1Jl
cGx5PgorI2luY2x1ZGUgPFFOZXR3b3JrUmVxdWVzdD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworUVRfQkVHSU5fTkFNRVNQQUNFCitjbGFz
cyBRRmlsZTsKK2NsYXNzIFFOZXR3b3JrQWNjZXNzTWFuYWdlcjsKK2NsYXNzIFFOZXR3b3JrUmVx
dWVzdDsKK1FUX0VORF9OQU1FU1BBQ0UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUmVz
b3VyY2VFcnJvcjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBEb3dubG9hZDsKKwor
Y2xhc3MgUXRGaWxlRG93bmxvYWRlciA6IHB1YmxpYyBRT2JqZWN0IHsKKyAgICBRX09CSkVDVAor
cHVibGljOgorICAgIFF0RmlsZURvd25sb2FkZXIoRG93bmxvYWQqLCBQYXNzT3duUHRyPFFOZXR3
b3JrUmVwbHk+KTsKKyAgICB2aXJ0dWFsIH5RdEZpbGVEb3dubG9hZGVyKCk7CisgICAgdm9pZCBk
ZWNpZGVkRGVzdGluYXRpb24oY29uc3QgUVN0cmluZyYgZGVjaWRlZEZpbGVQYXRoLCBib29sIGFs
bG93T3ZlcndyaXRlKTsKKyAgICB2b2lkIGNhbmNlbCgpOworCisgICAgZW51bSBEb3dubG9hZEVy
cm9yIHsKKyAgICAgICAgRG93bmxvYWRFcnJvckNhbmNlbGxlZCA9IC02LAorICAgICAgICBEb3du
bG9hZEVycm9yVW5hYmxlVG9Xcml0ZSA9IC01LAorICAgICAgICBEb3dubG9hZEVycm9yQ2Fubm90
T3BlbkZpbGUgPSAtNCwKKyAgICAgICAgRG93bmxvYWRFcnJvckZpbGVBbHJlYWR5RXhpc3RzID0g
LTMsCisgICAgICAgIERvd25sb2FkRXJyb3JDYW5jZWxsZWRCeUNhbGxlciA9IC0yLAorICAgICAg
ICBEb3dubG9hZEVycm9yQ2Fubm90RGV0ZXJtaW5lRmlsZW5hbWUgPSAtMSwKKyAgICAgICAgRG93
bmxvYWRFcnJvck5ldHdvcmtGYWlsdXJlID0gMAorICAgIH07CisKK3ByaXZhdGUgc2xvdHM6Cisg
ICAgdm9pZCBvblJlYWR5UmVhZCgpOworICAgIHZvaWQgb25GaW5pc2hlZCgpOworICAgIHZvaWQg
b25FcnJvcihRTmV0d29ya1JlcGx5OjpOZXR3b3JrRXJyb3IpOworCitwcml2YXRlOgorICAgIHZv
aWQgYWJvcnREb3dubG9hZFdyaXRpbmdBbmRFbWl0RXJyb3IoUXRGaWxlRG93bmxvYWRlcjo6RG93
bmxvYWRFcnJvcik7CisgICAgdm9pZCBkZXRlcm1pbmVGaWxlbmFtZSgpOworCisgICAgRG93bmxv
YWQqIG1fZG93bmxvYWQ7CisgICAgT3duUHRyPFFOZXR3b3JrUmVwbHk+IG1fcmVwbHk7CisgICAg
T3duUHRyPFFGaWxlPiBtX2Rlc3RpbmF0aW9uRmlsZTsKKyAgICBRTmV0d29ya1JlcGx5OjpOZXR3
b3JrRXJyb3IgbV9lcnJvcjsKKyAgICBib29sIG1faGVhZGVyc1JlYWQ7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108157</attachid>
            <date>2011-09-21 07:49:47 -0700</date>
            <delta_ts>2011-09-21 08:09:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68153-20110921114931.patch</filename>
            <type>text/plain</type>
            <size>25188</size>
            <attacher name="Jesus Sanchez-Palencia">jesus</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU2MjIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxZjNjYzc4YThkNTZhMzk5
ZDdkNWY3YWI5ZWNhNWExMWYzNjJjYTg0Li40NzJhNTU5Y2JjZDY2NmU5ODk1NTJhY2E4NWFhZjhm
ZWU5MGM1MDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDktMTUgIEplc3Vz
IFNhbmNoZXotUGFsZW5jaWEgIDxqZXN1cy5wYWxlbmNpYUBvcGVuYm9zc2Eub3JnPgorCisgICAg
ICAgIFtRdF1bV0syXSBJbXBsZW1lbnQgRG93bmxvYWQgc3VwcG9ydCBpbiBXZWJQcm9jZXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODE1MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yZWQg
UU5ldHdvcmtSZXBseUhhbmRsZXI6OmZpbmlzaCgpIGluIG9yZGVyIHRvIGFkZAorICAgICAgICBh
bmQgdXNlIHRoZSBzdGF0aWMgZnVuY3Rpb24gUU5ldHdvcmtSZXBseUhhbmRsZXI6OmVycm9yRm9y
UmVwbHkoKS4KKyAgICAgICAgVGhpcyB3aWxsIGJlIHVzZWQgYnkgb3VyIERvd25sb2FkIGltcGxl
bWVudGF0aW9uIGluIFdlYktpdDIgKFdlYlByb2Nlc3MpCisgICAgICAgIHdoZW4gaGFuZGxpbmcg
UmVzb3VyY2VFcnJvci4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtS
ZXBseUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UU5ldHdvcmtSZXBseUhhbmRsZXI6
OmZpbmlzaCk6CisgICAgICAgIChXZWJDb3JlOjpRTmV0d29ya1JlcGx5SGFuZGxlcjo6ZXJyb3JG
b3JSZXBseSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFu
ZGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXF1ZXN0Lmg6
CisKIDIwMTEtMDktMjEgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgogCiAg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IHBhaW50IGJveCBtb2RlbCBjb2xvcnMgaW4gTWV0cmljcyBz
aWRlYmFyIGF0IGFsbCB0aW1lcywgZG8gbm90IGRyYXcgYm94IG91dGxpbmVzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlI
YW5kbGVyLmNwcAppbmRleCA2YTAzY2NkMjcyYjZlNDEyM2Q1NzE4MWFhOWIwYjdhZTJkM2Q1MzI0
Li41YWYwMDQ5ZGE0OWMzMmRiZWVkN2MxZDI2NWI3MDIzNzkzNzQ2NjQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlI
YW5kbGVyLmNwcApAQCAtNDU1LDE4ICs0NTUsOCBAQCB2b2lkIFFOZXR3b3JrUmVwbHlIYW5kbGVy
OjpmaW5pc2goKQogCiAgICAgaWYgKCFtX3JlcGx5V3JhcHBlci0+cmVwbHkoKS0+ZXJyb3IoKSB8
fCBzaG91bGRJZ25vcmVIdHRwRXJyb3IobV9yZXBseVdyYXBwZXItPnJlcGx5KCksIG1fcmVwbHlX
cmFwcGVyLT5yZXNwb25zZUNvbnRhaW5zRGF0YSgpKSkKICAgICAgICAgY2xpZW50LT5kaWRGaW5p
c2hMb2FkaW5nKG1fcmVzb3VyY2VIYW5kbGUsIDApOwotICAgIGVsc2UgewotICAgICAgICBRVXJs
IHVybCA9IG1fcmVwbHlXcmFwcGVyLT5yZXBseSgpLT51cmwoKTsKLSAgICAgICAgaW50IGh0dHBT
dGF0dXNDb2RlID0gbV9yZXBseVdyYXBwZXItPnJlcGx5KCktPmF0dHJpYnV0ZShRTmV0d29ya1Jl
cXVlc3Q6Okh0dHBTdGF0dXNDb2RlQXR0cmlidXRlKS50b0ludCgpOwotCi0gICAgICAgIGlmICho
dHRwU3RhdHVzQ29kZSkgewotICAgICAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcigiSFRUUCIs
IGh0dHBTdGF0dXNDb2RlLCB1cmwudG9TdHJpbmcoKSwgbV9yZXBseVdyYXBwZXItPnJlcGx5KCkt
PmF0dHJpYnV0ZShRTmV0d29ya1JlcXVlc3Q6Okh0dHBSZWFzb25QaHJhc2VBdHRyaWJ1dGUpLnRv
U3RyaW5nKCkpOwotICAgICAgICAgICAgY2xpZW50LT5kaWRGYWlsKG1fcmVzb3VyY2VIYW5kbGUs
IGVycm9yKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFJlc291cmNlRXJyb3IgZXJy
b3IoIlF0TmV0d29yayIsIG1fcmVwbHlXcmFwcGVyLT5yZXBseSgpLT5lcnJvcigpLCB1cmwudG9T
dHJpbmcoKSwgbV9yZXBseVdyYXBwZXItPnJlcGx5KCktPmVycm9yU3RyaW5nKCkpOwotICAgICAg
ICAgICAgY2xpZW50LT5kaWRGYWlsKG1fcmVzb3VyY2VIYW5kbGUsIGVycm9yKTsKLSAgICAgICAg
fQotICAgIH0KKyAgICBlbHNlCisgICAgICAgIGNsaWVudC0+ZGlkRmFpbChtX3Jlc291cmNlSGFu
ZGxlLCBlcnJvckZvclJlcGx5KG1fcmVwbHlXcmFwcGVyLT5yZXBseSgpKSk7CiAKICAgICBtX3Jl
cGx5V3JhcHBlciA9IG51bGxwdHI7CiB9CkBAIC02OTQsNiArNjg0LDE3IEBAIHZvaWQgUU5ldHdv
cmtSZXBseUhhbmRsZXI6OnN0YXJ0KCkKICAgICAgICAgY29ubmVjdChtX3JlcGx5V3JhcHBlci0+
cmVwbHkoKSwgU0lHTkFMKHVwbG9hZFByb2dyZXNzKHFpbnQ2NCwgcWludDY0KSksIHRoaXMsIFNM
T1QodXBsb2FkUHJvZ3Jlc3MocWludDY0LCBxaW50NjQpKSk7CiB9CiAKK1Jlc291cmNlRXJyb3Ig
UU5ldHdvcmtSZXBseUhhbmRsZXI6OmVycm9yRm9yUmVwbHkoUU5ldHdvcmtSZXBseSogcmVwbHkp
Cit7CisgICAgUVVybCB1cmwgPSByZXBseS0+dXJsKCk7CisgICAgaW50IGh0dHBTdGF0dXNDb2Rl
ID0gcmVwbHktPmF0dHJpYnV0ZShRTmV0d29ya1JlcXVlc3Q6Okh0dHBTdGF0dXNDb2RlQXR0cmli
dXRlKS50b0ludCgpOworCisgICAgaWYgKGh0dHBTdGF0dXNDb2RlKQorICAgICAgICByZXR1cm4g
UmVzb3VyY2VFcnJvcigiSFRUUCIsIGh0dHBTdGF0dXNDb2RlLCB1cmwudG9TdHJpbmcoKSwgcmVw
bHktPmF0dHJpYnV0ZShRTmV0d29ya1JlcXVlc3Q6Okh0dHBSZWFzb25QaHJhc2VBdHRyaWJ1dGUp
LnRvU3RyaW5nKCkpOworCisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoIlF0TmV0d29yayIsIHJl
cGx5LT5lcnJvcigpLCB1cmwudG9TdHJpbmcoKSwgcmVwbHktPmVycm9yU3RyaW5nKCkpOworfQor
CiB9CiAKICNpbmNsdWRlICJtb2NfUU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFu
ZGxlci5oCmluZGV4IDlkMzZkYTIyMWQ4NTJmMTI1NzVlNTE3YzJlODNkMTE3YmI2NjA5NWQuLmY3
YTQ0N2E1Y2E3MmY3NzkyNzIyOGEyOTNkY2UyNjBkOWU2MjlmMTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVy
LmgKQEAgLTM2LDYgKzM2LDcgQEAgUVRfRU5EX05BTUVTUEFDRQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBGb3JtRGF0YUlPRGV2aWNlOworY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNz
IFJlc291cmNlSGFuZGxlOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZTsKQEAgLTEzMyw2ICsxMzQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBmb3J3YXJkRGF0
YSgpOwogICAgIHZvaWQgc2VuZFJlc3BvbnNlSWZOZWVkZWQoKTsKIAorICAgIHN0YXRpYyBSZXNv
dXJjZUVycm9yIGVycm9yRm9yUmVwbHkoUU5ldHdvcmtSZXBseSopOworCiBwcml2YXRlIHNsb3Rz
OgogICAgIHZvaWQgdXBsb2FkUHJvZ3Jlc3MocWludDY0IGJ5dGVzU2VudCwgcWludDY0IGJ5dGVz
VG90YWwpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0
L1Jlc291cmNlUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9S
ZXNvdXJjZVJlcXVlc3QuaAppbmRleCAwYzdiNjJiNmZjMzY0NWVkZDYzOGU4N2VkYjQ5MTY4ODMz
ZThkYzY2Li5jZDZmNzYwMjZkOTY3NmExYjFmNDE0ZWQ0YzM5NTBhZWNiYTQ1OGNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlUmVxdWVzdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXF1ZXN0
LmgKQEAgLTU5LDcgKzU5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB7CiAgICAg
ICAgIH0KIAotICAgICAgICBRTmV0d29ya1JlcXVlc3QgdG9OZXR3b3JrUmVxdWVzdChRT2JqZWN0
KiBvcmlnaW5hdGluZ09iamVjdCkgY29uc3Q7CisgICAgICAgIFFOZXR3b3JrUmVxdWVzdCB0b05l
dHdvcmtSZXF1ZXN0KFFPYmplY3QqIG9yaWdpbmF0aW5nT2JqZWN0ID0gMCkgY29uc3Q7CiAKICAg
ICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0QmFzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwppbmRleCBjZDI5YWJhYjZjMzk5MjU1MTY1YTQ0ZWQ5ODA1ZjBkZWIwZmI0MTQxLi5mZmRl
NDU2NjA5MTg2YjI5MjYwYzI3YjZmMWE0NGU4YjkxNmE1NGI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNDcgQEAKKzIwMTEtMDktMTUgIEplc3VzIFNhbmNoZXotUGFsZW5jaWEgIDxqZXN1cy5wYWxl
bmNpYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFtRdF1bV0syXSBJbXBsZW1lbnQgRG93bmxv
YWQgc3VwcG9ydCBpbiBXZWJQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02ODE1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFdlIGltcGxlbWVudCB0aGUgbmVjZXNzYXJ5IGZ1bmN0aW9ucyBvZiBE
b3dubG9hZC5oLCBhbmQgb3VyIFF0RmlsZURvd25sb2FkZXIKKyAgICAgICAgdG8gaGFuZGxlIGFs
bCBuZXR3b3JrIGNvbW11bmljYXRpb24gYW5kIGNhbGwgdGhlIG5lY2Vzc2FyeSBmdW5jdGlvbnMg
b2YgRG93bmxvYWQuCisKKyAgICAgICAgV2UgdXNlIHRoZSBkb3dubG9hZCBwb2xpY3kgZm9yIGFu
eSBNSU1FIHR5cGUgbm90IHN1cHBvcnRlZCBieSBXZWJLaXQuIFRoaXMKKyAgICAgICAgYmVoYXZl
cyBsaWtlIFF0IG5vbi1XZWJLaXQyIGV4Y2VwdCB0aGF0IHdlIGRvbid0IGZvcmNlIGRvd25sb2Fk
IHdoZW4KKyAgICAgICAgd2UgZW5jb3VudGVyIENvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1l
bnQuIFdlIHN0aWxsIHVzZSB0aGUgImZpbGVuYW1lPSIKKyAgICAgICAgZmllbGQgZm9yIGZpbGUg
bmFtZSBzdWdnZXN0aW9uIHRob3VnaC4KKworICAgICAgICBCYXNlZCBvbiBvcmlnaW5hbCBwYXRj
aGVzIGJ5OiBLaW1tbyBLaW5udW5lbiA8a2ltbW8udC5raW5udW5lbkBub2tpYS5jb20+LAorICAg
ICAgICBKb2NlbHluIFR1cmNvdHRlIDxqb2NlbHluLnR1cmNvdHRlQG5va2lhLmNvbT4sIFNpbW9u
IEhhdXNtYW5uIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CisgICAgICAgIGFuZCBaYWxhbiBC
dWp0YXMgPHphbGFuLmJ1anRhc0Bub2tpYS5jb20+LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9xdC9xd2ViZXJyb3IuY3BwOiBBZGRpbmcgRG93bmxvYWRFcnJvcgorICAgICAgICAoUVdlYkVy
cm9yOjp0eXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F3ZWJlcnJvci5oOiBBZGRp
bmcgRG93bmxvYWRFcnJvcgorICAgICAgICAqIFdlYktpdDIucHJvOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcDogQWRkaW5nIFF0RmlsZURvd25sb2FkZXIsIFF0
IHBsYXRmb3JtIHNwZWNpZmljCisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpEb3dubG9hZCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaDogQWRkaW5nIFF0Rmls
ZURvd25sb2FkZXIsIFF0IHBsYXRmb3JtIHNwZWNpZmljCisgICAgICAgICogV2ViUHJvY2Vzcy9E
b3dubG9hZHMvcXQvRG93bmxvYWRRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpz
dGFydCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpzdGFydFdpdGhIYW5kbGUpOgorICAg
ICAgICAoV2ViS2l0OjpEb3dubG9hZDo6Y2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxv
YWQ6OnBsYXRmb3JtSW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpkaWRE
ZWNpZGVEZXN0aW5hdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvUXRG
aWxlRG93bmxvYWRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpRdEZpbGVEb3dubG9h
ZGVyOjpRdEZpbGVEb3dubG9hZGVyKToKKyAgICAgICAgKFdlYktpdDo6UXRGaWxlRG93bmxvYWRl
cjo6flF0RmlsZURvd25sb2FkZXIpOgorICAgICAgICAoV2ViS2l0OjpRdEZpbGVEb3dubG9hZGVy
OjpkZXRlcm1pbmVGaWxlbmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlF0RmlsZURvd25sb2FkZXI6
OmRlY2lkZWREZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlF0RmlsZURvd25sb2FkZXI6
OmFib3J0RG93bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKToKKyAgICAgICAgKFdlYktpdDo6UXRG
aWxlRG93bmxvYWRlcjo6b25SZWFkeVJlYWQpOgorICAgICAgICAoV2ViS2l0OjpRdEZpbGVEb3du
bG9hZGVyOjpvbkZpbmlzaGVkKToKKyAgICAgICAgKFdlYktpdDo6UXRGaWxlRG93bmxvYWRlcjo6
b25FcnJvcik6CisgICAgICAgIChXZWJLaXQ6OlF0RmlsZURvd25sb2FkZXI6OmNhbmNlbCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5oOiBBZGRl
ZC4KKwogMjAxMS0wOS0yMSAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgogCiAgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS85ODkwOTMyPiAiT3BlbiBQREYgaW4gUHJldmlldyIgb24gdHdvIFBE
RnMgb2YgdGhlIHNhbWUgbmFtZSBkb2VzIG5vdGhpbmcgdGhlIHNlY29uZCB0aW1lCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJlcnJvci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJlcnJvci5jcHAKaW5kZXggZmJhYjI1YWU4
ZmQ3MDE0NjI0ZDA1ZmMyMzRiYTMyMTI5ZDM2OWQ3Yi4uZmQ5MDhhNjRmMTczZjk3NWFlZjEyZmRk
NDk5OTAwOTc4ZDIwMTU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xd2ViZXJyb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cXdlYmVycm9yLmNwcApAQCAtNjUsNiArNjUsOCBAQCBRV2ViRXJyb3I6OlR5cGUgUVdlYkVycm9y
Ojp0eXBlKCkgY29uc3QKICAgICAgICAgcmV0dXJuIFFXZWJFcnJvcjo6TmV0d29ya0Vycm9yOwog
ICAgIGlmIChlcnJvckRvbWFpbiA9PSAiSFRUUCIpCiAgICAgICAgIHJldHVybiBRV2ViRXJyb3I6
Okh0dHBFcnJvcjsKKyAgICBpZiAoZXJyb3JEb21haW4gPT0gIkRvd25sb2FkIikKKyAgICAgICAg
cmV0dXJuIFFXZWJFcnJvcjo6RG93bmxvYWRFcnJvcjsKICAgICAvLyBGSVhNRTogUmVkaXJlY3Rp
b24gb3ZlcmZsb3cgY3VycmVudGx5IHB1dHMgdGhlIFVSTCBob3N0bmFtZSBpbiB0aGUgZXJyb3JE
b21haW4gZmllbGQuCiAgICAgLy8gICAgICAgIFdlIHNob3VsZCBleHBvc2UgdGhhdCBlcnJvciBz
b21laG93LiBTb3VyY2UgaXMgUU5ldHdvcmtSZXBseUhhbmRsZXI6OnJlZGlyZWN0KCkuCiAgICAg
cmV0dXJuIFFXZWJFcnJvcjo6RW5naW5lRXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJlcnJvci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9xd2ViZXJyb3IuaAppbmRleCAwZDI3OWJlNTU1YjVmODRkYjk0YzM5MDZjOTVkNWU0
ZTY3YmRjOTMyLi5iOTc4MGFlM2I1YTI2YTk1ODI1ZTg1YWJkMWY2NmM1MjRkYzg0OTYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJlcnJvci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYmVycm9yLmgKQEAgLTM2LDcgKzM2
LDggQEAgcHVibGljOgogICAgIGVudW0gVHlwZSB7CiAgICAgICAgIEVuZ2luZUVycm9yLAogICAg
ICAgICBOZXR3b3JrRXJyb3IsCi0gICAgICAgIEh0dHBFcnJvcgorICAgICAgICBIdHRwRXJyb3Is
CisgICAgICAgIERvd25sb2FkRXJyb3IKICAgICB9OwogCiAgICAgVHlwZSB0eXBlKCkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBybyBiL1NvdXJjZS9XZWJLaXQy
L1dlYktpdDIucHJvCmluZGV4IDViYTJlNzEzMzE0OTQ1MDdiNDljOTY4MTFlZmY0MWRjMzM3YWY1
MzQuLmZmMmZiNmRkY2Q0ZTMzZjMzOTFkYzM1ZDY2M2MwZmNhZjAwM2I3M2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJvCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIu
cHJvCkBAIC0yNzEsNiArMjcxLDcgQEAgSEVBREVSUyArPSBcCiAgICAgV2ViUHJvY2Vzcy9Db29r
aWVzL1dlYkNvb2tpZU1hbmFnZXIuaCBcCiAgICAgV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWQuaCBcCiAgICAgV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmggXAorICAg
IFdlYlByb2Nlc3MvRG93bmxvYWRzL3F0L1F0RmlsZURvd25sb2FkZXIuaCBcCiAgICAgV2ViUHJv
Y2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmggXAogICAgIFdlYlByb2Nlc3Mv
RnVsbFNjcmVlbi9xdC9XZWJGdWxsU2NyZWVuTWFuYWdlclF0LmggXAogICAgIFdlYlByb2Nlc3Mv
R2VvbG9jYXRpb24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCBcCkBAIC01
MTMsNiArNTE0LDcgQEAgU09VUkNFUyArPSBcCiAgICAgV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWQuY3BwIFwKICAgICBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3Bw
IFwKICAgICBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9Eb3dubG9hZFF0LmNwcCBcCisgICAgV2Vi
UHJvY2Vzcy9Eb3dubG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5jcHAgXAogICAgIFdlYlByb2Nl
c3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5jcHAgXAogICAgIFdlYlByb2Nlc3Mv
RnVsbFNjcmVlbi9xdC9XZWJGdWxsU2NyZWVuTWFuYWdlclF0LmNwcCBcCiAgICAgV2ViUHJvY2Vz
cy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAgXApA
QCAtNTI0LDcgKzUyNiw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3QuY3BwIFwKICAgICBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgXAog
ICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwIFwK
LSAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3Vs
dC5jcHAgXCAgICAKKyAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
SGl0VGVzdFJlc3VsdC5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAgXAogICAgIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAK
aW5kZXggYzlmZjU5MzljM2Q5ZWIzZjFkMjMwNzY4ZDNhZGE2NjMzODJhN2U3OC4uMWQwNTk0MTVh
ZjhhYzY2ODMwODE3MmQ0NTkyM2I0ODFjMTZjNWI3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcApAQCAtNTEsNiArNTEsOSBAQCBEb3du
bG9hZDo6RG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQogI2lmIFVTRShDRk5FVFdPUkspCiAgICAgLCBtX2FsbG93T3ZlcndyaXRlKGZh
bHNlKQogI2VuZGlmCisjaWYgUExBVEZPUk0oUVQpCisgICAgLCBtX3F0RG93bmxvYWRlcigwKQor
I2VuZGlmCiB7CiAgICAgQVNTRVJUKG1fZG93bmxvYWRJRCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCmluZGV4IGZlOWE1NmQxZWUyM2EyOGZi
MzY1OTcyNGUzYTYxYmNjMmVkNTIxNGMuLmFjY2NkM2Y4OGUyYTY5OTU5N2EzOWI3YmY4MjhkNDM2
MzdiNzBmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWQuaApAQCAtNjAsNiArNjAsMTAgQEAgY2xhc3MgRG93bmxvYWRBdXRoZW50aWNhdGlvbkNs
aWVudDsKIGNsYXNzIFNhbmRib3hFeHRlbnNpb247CiBjbGFzcyBXZWJQYWdlOwogCisjaWYgUExB
VEZPUk0oUVQpCitjbGFzcyBRdEZpbGVEb3dubG9hZGVyOworI2VuZGlmCisKIGNsYXNzIERvd25s
b2FkIDogcHVibGljIENvcmVJUEM6Ok1lc3NhZ2VTZW5kZXI8RG93bmxvYWQ+IHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShEb3dubG9hZCk7CiBwdWJsaWM6CkBAIC0xMjYsNiArMTMwLDkgQEAg
cHJpdmF0ZToKICAgICBSZXRhaW5QdHI8Q0ZVUkxEb3dubG9hZFJlZj4gbV9kb3dubG9hZDsKICAg
ICBSZWZQdHI8RG93bmxvYWRBdXRoZW50aWNhdGlvbkNsaWVudD4gbV9hdXRoZW50aWNhdGlvbkNs
aWVudDsKICNlbmRpZgorI2lmIFBMQVRGT1JNKFFUKQorICAgIFF0RmlsZURvd25sb2FkZXIqIG1f
cXREb3dubG9hZGVyOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L0Rvd25sb2FkUXQu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvRG93bmxvYWRRdC5j
cHAKaW5kZXggYWQ1ZTdkZWU2ZTRkNDAxMmJmYzlkZTY3MzZmYzQ2MDg0YjZiMWQ5OC4uNWI4ZmYy
OWI2OGJjYTMxZWY2Mjk0MGI4M2I1MjhmOTg3MDI4ZDA1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvRG93bmxvYWRRdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvRG93bmxvYWRRdC5jcHAKQEAgLTEsNSAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBh
bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjYsNyArMjcsMTMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEb3du
bG9hZC5oIgogCisjaW5jbHVkZSAiUXRGaWxlRG93bmxvYWRlci5oIgorI2luY2x1ZGUgIldlYlBy
b2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9RTmV0d29ya1JlcGx5SGFuZGxlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3Vy
Y2VIYW5kbGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKQEAgLTM0LDI3ICs0MSwzNSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9p
ZCBEb3dubG9hZDo6c3RhcnQoV2ViUGFnZSogaW5pdGlhdGluZ1dlYlBhZ2UpCiB7Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICBRTmV0d29ya0FjY2Vzc01hbmFnZXIqIG1hbmFnZXIgPSBXZWJQ
cm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQWNjZXNzTWFuYWdlcigpOworICAgIEFTU0VSVChtYW5h
Z2VyKTsKKyAgICBBU1NFUlQoIW1fcXREb3dubG9hZGVyKTsKKworICAgIG1fcXREb3dubG9hZGVy
ID0gbmV3IFF0RmlsZURvd25sb2FkZXIodGhpcywgYWRvcHRQdHIobWFuYWdlci0+Z2V0KG1fcmVx
dWVzdC50b05ldHdvcmtSZXF1ZXN0KCkpKSk7CiB9CiAKLXZvaWQgRG93bmxvYWQ6OnN0YXJ0V2l0
aEhhbmRsZShXZWJQYWdlKiBpbml0aWF0aW5nUGFnZSwgUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIGluaXRpYWxSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikK
K3ZvaWQgRG93bmxvYWQ6OnN0YXJ0V2l0aEhhbmRsZShXZWJQYWdlKiBpbml0aWF0aW5nUGFnZSwg
UmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBpbml0aWFsUmVx
dWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcCkKIHsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIEFTU0VSVCghbV9xdERvd25sb2FkZXIpOworICAgIG1fcXREb3dubG9hZGVyID0g
bmV3IFF0RmlsZURvd25sb2FkZXIodGhpcywgYWRvcHRQdHIoaGFuZGxlLT5nZXRJbnRlcm5hbCgp
LT5tX2pvYi0+cmVsZWFzZSgpKSk7CiB9CiAKIHZvaWQgRG93bmxvYWQ6OmNhbmNlbCgpCiB7Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBBU1NFUlQobV9xdERvd25sb2FkZXIpOworICAgIG1f
cXREb3dubG9hZGVyLT5jYW5jZWwoKTsKIH0KIAogdm9pZCBEb3dubG9hZDo6cGxhdGZvcm1JbnZh
bGlkYXRlKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIEFTU0VSVChtX3F0RG93bmxv
YWRlcik7CisgICAgbV9xdERvd25sb2FkZXItPmRlbGV0ZUxhdGVyKCk7CisgICAgbV9xdERvd25s
b2FkZXIgPSAwOwogfQogCiB2b2lkIERvd25sb2FkOjpkaWREZWNpZGVEZXN0aW5hdGlvbihjb25z
dCBTdHJpbmcmIGRlc3RpbmF0aW9uLCBib29sIGFsbG93T3ZlcndyaXRlKQogewotICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgbV9xdERvd25sb2FkZXItPmRlY2lkZWREZXN0aW5hdGlvbihkZXN0
aW5hdGlvbiwgYWxsb3dPdmVyd3JpdGUpOwogfQogCiB2b2lkIERvd25sb2FkOjpwbGF0Zm9ybURp
ZEZpbmlzaCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fk
cy9xdC9RdEZpbGVEb3dubG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93
bmxvYWRzL3F0L1F0RmlsZURvd25sb2FkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwNGRiMDU1ZDUxYWI2
MTEyMmY1OTRmZDE3NmU3ZWY0NDJmNTk1NGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3dubG9hZGVyLmNwcApAQCAtMCww
ICsxLDIzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBh
bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiUXRGaWxlRG93bmxvYWRlci5oIgorCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2lu
Y2x1ZGUgIkRvd25sb2FkLmgiCisjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKKyNpbmNsdWRlICJN
SU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW5jbHVkZSA8UUNvcmVBcHBsaWNhdGlvbj4KKyNpbmNsdWRl
IDxRRmlsZT4KKyNpbmNsdWRlIDxRRmlsZUluZm8+CisjaW5jbHVkZSA8UU5ldHdvcmtBY2Nlc3NN
YW5hZ2VyPgorI2luY2x1ZGUgPFdlYkNvcmUvUU5ldHdvcmtSZXBseUhhbmRsZXIuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
UmVzcG9uc2UuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2Ug
V1RGOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUXRGaWxlRG93bmxvYWRlcjo6UXRGaWxlRG93
bmxvYWRlcihEb3dubG9hZCogZG93bmxvYWQsIFBhc3NPd25QdHI8UU5ldHdvcmtSZXBseT4gcmVw
bHkpCisgICAgOiBtX2Rvd25sb2FkKGRvd25sb2FkKQorICAgICwgbV9yZXBseShyZXBseSkKKyAg
ICAsIG1fZXJyb3IoUU5ldHdvcmtSZXBseTo6Tm9FcnJvcikKKyAgICAsIG1faGVhZGVyc1JlYWQo
ZmFsc2UpCit7CisgICAgY29ubmVjdChtX3JlcGx5LmdldCgpLCBTSUdOQUwocmVhZHlSZWFkKCkp
LCBTTE9UKG9uUmVhZHlSZWFkKCkpKTsKKyAgICBjb25uZWN0KG1fcmVwbHkuZ2V0KCksIFNJR05B
TChmaW5pc2hlZCgpKSwgU0xPVChvbkZpbmlzaGVkKCkpKTsKKyAgICBjb25uZWN0KG1fcmVwbHku
Z2V0KCksIFNJR05BTChlcnJvcihRTmV0d29ya1JlcGx5OjpOZXR3b3JrRXJyb3IpKSwgU0xPVChv
bkVycm9yKFFOZXR3b3JrUmVwbHk6Ok5ldHdvcmtFcnJvcikpKTsKKworICAgIC8vIENhbGwgb25S
ZWFkeVJlYWQganVzdCBpbiBjYXNlIHNvbWUgZGF0YSBpcyBhbHJlYWR5IHdhaXRpbmcuCisgICAg
b25SZWFkeVJlYWQoKTsKK30KKworUXRGaWxlRG93bmxvYWRlcjo6flF0RmlsZURvd25sb2FkZXIo
KQoreworICAgIGlmICghbV9kZXN0aW5hdGlvbkZpbGUpCisgICAgICAgIHJldHVybjsKKworICAg
IGFib3J0RG93bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKFF0RmlsZURvd25sb2FkZXI6OkRvd25s
b2FkRXJyb3JBYm9ydGVkKTsKK30KKwordm9pZCBRdEZpbGVEb3dubG9hZGVyOjpkZXRlcm1pbmVG
aWxlbmFtZSgpCit7CisgICAgQVNTRVJUKCFtX2Rlc3RpbmF0aW9uRmlsZSk7CisKKyAgICBRU3Ry
aW5nIGZpbGVOYW1lQ2FuZGlkYXRlID0gZmlsZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlv
bihRU3RyaW5nOjpmcm9tTGF0aW4xKG1fcmVwbHktPnJhd0hlYWRlcigiQ29udGVudC1EaXNwb3Np
dGlvbiIpKSk7CisgICAgaWYgKGZpbGVOYW1lQ2FuZGlkYXRlLmlzRW1wdHkoKSkgeworICAgICAg
ICBLVVJMIGt1cmwgPSBtX3JlcGx5LT51cmwoKTsKKyAgICAgICAgZmlsZU5hbWVDYW5kaWRhdGUg
PSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoa3VybC5sYXN0UGF0aENvbXBvbmVudCgpKTsKKyAg
ICB9CisKKyAgICBpZiAoZmlsZU5hbWVDYW5kaWRhdGUuaXNFbXB0eSgpKSB7CisgICAgICAgIGFi
b3J0RG93bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKFF0RmlsZURvd25sb2FkZXI6OkRvd25sb2Fk
RXJyb3JDYW5ub3REZXRlcm1pbmVGaWxlbmFtZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICAvLyBNYWtlIHN1cmUgdGhhdCB3ZSByZW1vdmUgcG9zc2libGUgIi4uLy4uIiBwYXJ0cyBp
biB0aGUgZ2l2ZW4gZmlsZSBuYW1lLgorICAgIFFGaWxlSW5mbyBmaWxlTmFtZUZpbHRlcihmaWxl
TmFtZUNhbmRpZGF0ZSk7CisgICAgUVN0cmluZyBmaWxlTmFtZSA9IGZpbGVOYW1lRmlsdGVyLmZp
bGVOYW1lKCk7CisKKyAgICBpZiAoZmlsZU5hbWUuaXNFbXB0eSgpKSB7CisgICAgICAgIGFib3J0
RG93bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKFF0RmlsZURvd25sb2FkZXI6OkRvd25sb2FkRXJy
b3JDYW5ub3REZXRlcm1pbmVGaWxlbmFtZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBib29sIGFsbG93T3ZlcndyaXRlOworICAgIG1fZG93bmxvYWQtPmRlY2lkZURlc3RpbmF0aW9u
V2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGZpbGVOYW1lLCBhbGxvd092ZXJ3cml0ZSk7Cit9CisKK3Zv
aWQgUXRGaWxlRG93bmxvYWRlcjo6ZGVjaWRlZERlc3RpbmF0aW9uKGNvbnN0IFFTdHJpbmcmIGRl
Y2lkZWRGaWxlUGF0aCwgYm9vbCBhbGxvd092ZXJ3cml0ZSkKK3sKKyAgICBBU1NFUlQoIW1fZGVz
dGluYXRpb25GaWxlKTsKKworICAgIC8vIEVycm9yIG1pZ2h0IGhhdmUgb2NjdXJlZCBkdXJpbmcg
ZGVzdGluYXRpb24gcXVlcnkuCisgICAgaWYgKG1fZXJyb3IgIT0gUU5ldHdvcmtSZXBseTo6Tm9F
cnJvcikgeworICAgICAgICBhYm9ydERvd25sb2FkV3JpdGluZ0FuZEVtaXRFcnJvcihRdEZpbGVE
b3dubG9hZGVyOjpEb3dubG9hZEVycm9yTmV0d29ya0ZhaWx1cmUpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaWYgKGRlY2lkZWRGaWxlUGF0aC5pc0VtcHR5KCkpIHsKKyAgICAgICAg
YWJvcnREb3dubG9hZFdyaXRpbmdBbmRFbWl0RXJyb3IoUXRGaWxlRG93bmxvYWRlcjo6RG93bmxv
YWRFcnJvckNhbmNlbGxlZEJ5Q2FsbGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IE93blB0cjxRRmlsZT4gZG93bmxvYWRGaWxlID0gYWRvcHRQdHIobmV3IFFGaWxlKGRlY2lkZWRG
aWxlUGF0aCkpOworCisgICAgaWYgKCFhbGxvd092ZXJ3cml0ZSAmJiBkb3dubG9hZEZpbGUtPmV4
aXN0cygpKSB7CisgICAgICAgIGFib3J0RG93bmxvYWRXcml0aW5nQW5kRW1pdEVycm9yKFF0Rmls
ZURvd25sb2FkZXI6OkRvd25sb2FkRXJyb3JGaWxlQWxyZWFkeUV4aXN0cyk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpZiAoIWRvd25sb2FkRmlsZS0+b3BlbihRSU9EZXZpY2U6Oldy
aXRlT25seSB8IFFJT0RldmljZTo6VHJ1bmNhdGUpKSB7CisgICAgICAgIGFib3J0RG93bmxvYWRX
cml0aW5nQW5kRW1pdEVycm9yKFF0RmlsZURvd25sb2FkZXI6OkRvd25sb2FkRXJyb3JDYW5ub3RP
cGVuRmlsZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBBc3NpZ25pbmcgdG8g
bV9kZXN0aW5hdGlvbkZpbGUgZmxhZ3MgdGhhdCBlaXRoZXIgZXJyb3Igb3IKKyAgICAvLyBmaW5p
c2hlZCBzaGFsbCBiZSBjYWxsZWQgaW4gdGhlIGVuZC4KKyAgICBtX2Rlc3RpbmF0aW9uRmlsZSA9
IGRvd25sb2FkRmlsZS5yZWxlYXNlKCk7CisKKyAgICBtX2Rvd25sb2FkLT5kaWRDcmVhdGVEZXN0
aW5hdGlvbihtX2Rlc3RpbmF0aW9uRmlsZS0+ZmlsZU5hbWUoKSk7CisKKyAgICAvLyBXZSBtaWdo
dCBoYXZlIGdvdHRlbiByZWFkeVJlYWQgYWxyZWFkeSBldmVuIGJlZm9yZSB0aGlzIGZ1bmN0aW9u
CisgICAgLy8gd2FzIGNhbGxlZC4KKyAgICBpZiAobV9yZXBseS0+Ynl0ZXNBdmFpbGFibGUoKSkK
KyAgICAgICAgb25SZWFkeVJlYWQoKTsKKworICAgIC8vIFdlIG1pZ2h0IGhhdmUgZ290dGVuIGZp
bmlzaGVkIGFscmVhZHkgZXZlbiBiZWZvcmUgdGhpcworICAgIC8vIGZ1bmN0aW9uIHdhcyBjYWxs
ZWQuCisgICAgaWYgKG1fcmVwbHktPmlzRmluaXNoZWQoKSkKKyAgICAgICAgb25GaW5pc2hlZCgp
OworCit9CisKK3ZvaWQgUXRGaWxlRG93bmxvYWRlcjo6YWJvcnREb3dubG9hZFdyaXRpbmdBbmRF
bWl0RXJyb3IoUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvciBlcnJvckNvZGUpCit7Cisg
ICAgbV9yZXBseS0+YWJvcnQoKTsKKworICAgIC8vIE9uIG5ldHdvcmsgZmFpbHVyZXMgaXQncyBR
TmV0d29ya1JlcGx5SGFuZGxlcjo6ZXJyb3JGb3JSZXBseSB3aG8gd2lsbCBoYW5kbGUgZXJyb3Jz
LgorICAgIGlmIChlcnJvckNvZGUgPT0gUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvck5l
dHdvcmtGYWlsdXJlKSB7CisgICAgICAgIG1fZG93bmxvYWQtPmRpZEZhaWwoUU5ldHdvcmtSZXBs
eUhhbmRsZXI6OmVycm9yRm9yUmVwbHkobV9yZXBseS5nZXQoKSksIENvcmVJUEM6OkRhdGFSZWZl
cmVuY2UoMCwgMCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUVN0cmluZyB0cmFu
c2xhdGVkRXJyb3JNZXNzYWdlOworICAgIHN3aXRjaCAoZXJyb3JDb2RlKSB7CisgICAgY2FzZSBR
dEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9yQWJvcnRlZDoKKyAgICAgICAgdHJhbnNsYXRl
ZEVycm9yTWVzc2FnZSA9IFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUXRGaWxlRG93bmxv
YWRlciIsICJEb3dubG9hZCBhYm9ydGVkIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUXRG
aWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvckNhbm5vdFdyaXRlVG9GaWxlOgorICAgICAgICB0
cmFuc2xhdGVkRXJyb3JNZXNzYWdlID0gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRdEZp
bGVEb3dubG9hZGVyIiwgIkNhbm5vdCB3cml0ZSB0byBmaWxlIik7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgUXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvckNhbm5vdE9wZW5GaWxlOgor
ICAgICAgICB0cmFuc2xhdGVkRXJyb3JNZXNzYWdlID0gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNs
YXRlKCJRdEZpbGVEb3dubG9hZGVyIiwgIkNhbm5vdCBvcGVuIGZpbGUgZm9yIHdyaXRpbmciKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9y
RmlsZUFscmVhZHlFeGlzdHM6CisgICAgICAgIHRyYW5zbGF0ZWRFcnJvck1lc3NhZ2UgPSBRQ29y
ZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlF0RmlsZURvd25sb2FkZXIiLCAiRmlsZSBhbHJlYWR5
IGV4aXN0cyIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFF0RmlsZURvd25sb2FkZXI6OkRv
d25sb2FkRXJyb3JDYW5jZWxsZWRCeUNhbGxlcjoKKyAgICAgICAgdHJhbnNsYXRlZEVycm9yTWVz
c2FnZSA9IFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUXRGaWxlRG93bmxvYWRlciIsICJE
b3dubG9hZCBjYW5jZWxsZWQgYnkgY2FsbGVyIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
UXRGaWxlRG93bmxvYWRlcjo6RG93bmxvYWRFcnJvckNhbm5vdERldGVybWluZUZpbGVuYW1lOgor
ICAgICAgICB0cmFuc2xhdGVkRXJyb3JNZXNzYWdlID0gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNs
YXRlKCJRdEZpbGVEb3dubG9hZGVyIiwgIkNhbm5vdCBkZXRlcm1pbmUgZmlsZW5hbWUiKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgfQorCisgICAgUmVzb3VyY2VFcnJvciBkb3dubG9hZEVycm9yKCJEb3dubG9hZCIsIGVy
cm9yQ29kZSwgbV9yZXBseS0+dXJsKCkudG9TdHJpbmcoKSwgdHJhbnNsYXRlZEVycm9yTWVzc2Fn
ZSk7CisKKyAgICBtX2Rvd25sb2FkLT5kaWRGYWlsKGRvd25sb2FkRXJyb3IsIENvcmVJUEM6OkRh
dGFSZWZlcmVuY2UoMCwgMCkpOworfQorCit2b2lkIFF0RmlsZURvd25sb2FkZXI6Om9uUmVhZHlS
ZWFkKCkKK3sKKyAgICBpZiAobV9kZXN0aW5hdGlvbkZpbGUpIHsKKyAgICAgICAgUUJ5dGVBcnJh
eSBjb250ZW50ID0gbV9yZXBseS0+cmVhZEFsbCgpOworICAgICAgICBpZiAoY29udGVudC5zaXpl
KCkgPD0gMCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBxaW50NjQgYnl0ZXNXcml0
dGVuID0gbV9kZXN0aW5hdGlvbkZpbGUtPndyaXRlKGNvbnRlbnQpOworCisgICAgICAgIGlmIChi
eXRlc1dyaXR0ZW4gPT0gLTEpIHsKKyAgICAgICAgICAgIGFib3J0RG93bmxvYWRXcml0aW5nQW5k
RW1pdEVycm9yKFF0RmlsZURvd25sb2FkZXI6OkRvd25sb2FkRXJyb3JDYW5ub3RXcml0ZVRvRmls
ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBUaGVyZSBt
aWdodCBhIGNvcm5lciBjYXNlIHRvIGJlIGZpeGVkIGhlcmUgaWYgYnl0ZXNXcml0dGVuICE9IGNv
bnRlbnQuc2l6ZSgpCisgICAgICAgIC8vIGRvZXMgbm90IGFjdHVhbGx5IHJlcHJlc2VudCBhbiBl
cnJvci4KKyAgICAgICAgQVNTRVJUKGJ5dGVzV3JpdHRlbiA9PSBjb250ZW50LnNpemUoKSk7CisK
KyAgICAgICAgbV9kb3dubG9hZC0+ZGlkUmVjZWl2ZURhdGEoYnl0ZXNXcml0dGVuKTsKKyAgICB9
IGVsc2UgaWYgKCFtX2hlYWRlcnNSZWFkKSB7CisgICAgICAgIC8vIEJ5IEFQSSBjb250cmFjdCwg
UU5ldHdvcmtSZXBseTo6bWV0YURhdGFDaGFuZ2VkIGNhbm5vdCByZWFsbHkgYmUgdHJ1c3RlZC4K
KyAgICAgICAgLy8gVGh1cyB3ZSBuZWVkIHRvIGNhbGwgdGhpcyB1cG9uIHJlY2VpdmluZyBmaXJz
dCBkYXRhLgorICAgICAgICBTdHJpbmcgY29udGVudFR5cGUgPSBtX3JlcGx5LT5oZWFkZXIoUU5l
dHdvcmtSZXF1ZXN0OjpDb250ZW50VHlwZUhlYWRlcikudG9TdHJpbmcoKTsKKyAgICAgICAgU3Ry
aW5nIGVuY29kaW5nID0gZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlKTsK
KyAgICAgICAgU3RyaW5nIG1pbWVUeXBlID0gZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShj
b250ZW50VHlwZSk7CisKKyAgICAgICAgLy8gTGV0J3MgdHJ5IHRvIGd1ZXNzIGZyb20gdGhlIGV4
dGVuc2lvbi4KKyAgICAgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIG1p
bWVUeXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JQYXRoKG1fcmVwbHktPnVy
bCgpLnBhdGgoKSk7CisKKyAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShtX3JlcGx5
LT51cmwoKSwgbWltZVR5cGUsIG1fcmVwbHktPmhlYWRlcihRTmV0d29ya1JlcXVlc3Q6OkNvbnRl
bnRMZW5ndGhIZWFkZXIpLnRvTG9uZ0xvbmcoKSwgZW5jb2RpbmcsIFN0cmluZygpKTsKKyAgICAg
ICAgbV9kb3dubG9hZC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKKworICAgICAgICBk
ZXRlcm1pbmVGaWxlbmFtZSgpOworCisgICAgICAgIG1faGVhZGVyc1JlYWQgPSB0cnVlOworICAg
IH0KK30KKwordm9pZCBRdEZpbGVEb3dubG9hZGVyOjpvbkZpbmlzaGVkKCkKK3sKKyAgICBpZiAo
IW1fZGVzdGluYXRpb25GaWxlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Rlc3RpbmF0aW9u
RmlsZS5jbGVhcigpOworCisgICAgaWYgKG1fZXJyb3IgPT0gUU5ldHdvcmtSZXBseTo6Tm9FcnJv
cikKKyAgICAgICAgbV9kb3dubG9hZC0+ZGlkRmluaXNoKCk7CisgICAgZWxzZQorICAgICAgICBh
Ym9ydERvd25sb2FkV3JpdGluZ0FuZEVtaXRFcnJvcihRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9h
ZEVycm9yTmV0d29ya0ZhaWx1cmUpOworfQorCit2b2lkIFF0RmlsZURvd25sb2FkZXI6Om9uRXJy
b3IoUU5ldHdvcmtSZXBseTo6TmV0d29ya0Vycm9yIGNvZGUpCit7CisgICAgbV9lcnJvciA9IGNv
ZGU7Cit9CisKK3ZvaWQgUXRGaWxlRG93bmxvYWRlcjo6Y2FuY2VsKCkKK3sKKyAgICBtX3JlcGx5
LT5hYm9ydCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKyNpbmNsdWRlICJtb2NfUXRG
aWxlRG93bmxvYWRlci5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3dubG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3dubG9hZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzkzOGMxZWQw
ZGI5ZTgzM2I0ZWMxMWE2ZGYxYWM1NjQyODhmNTNjMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L1F0RmlsZURvd25sb2FkZXIuaApAQCAt
MCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9u
IGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBRdEZpbGVEb3dubG9hZGVy
X2gKKyNkZWZpbmUgUXRGaWxlRG93bmxvYWRlcl9oCisKKyNpbmNsdWRlIDxRTmV0d29ya1JlcGx5
PgorI2luY2x1ZGUgPFFOZXR3b3JrUmVxdWVzdD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworUVRfQkVHSU5fTkFNRVNQQUNFCitjbGFzcyBR
RmlsZTsKK2NsYXNzIFFOZXR3b3JrQWNjZXNzTWFuYWdlcjsKK2NsYXNzIFFOZXR3b3JrUmVxdWVz
dDsKK1FUX0VORF9OQU1FU1BBQ0UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUmVzb3Vy
Y2VFcnJvcjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBEb3dubG9hZDsKKworY2xh
c3MgUXRGaWxlRG93bmxvYWRlciA6IHB1YmxpYyBRT2JqZWN0IHsKKyAgICBRX09CSkVDVAorcHVi
bGljOgorICAgIFF0RmlsZURvd25sb2FkZXIoRG93bmxvYWQqLCBQYXNzT3duUHRyPFFOZXR3b3Jr
UmVwbHk+KTsKKyAgICB2aXJ0dWFsIH5RdEZpbGVEb3dubG9hZGVyKCk7CisgICAgdm9pZCBkZWNp
ZGVkRGVzdGluYXRpb24oY29uc3QgUVN0cmluZyYgZGVjaWRlZEZpbGVQYXRoLCBib29sIGFsbG93
T3ZlcndyaXRlKTsKKyAgICB2b2lkIGNhbmNlbCgpOworCisgICAgZW51bSBEb3dubG9hZEVycm9y
IHsKKyAgICAgICAgRG93bmxvYWRFcnJvckFib3J0ZWQgPSAwLAorICAgICAgICBEb3dubG9hZEVy
cm9yQ2Fubm90V3JpdGVUb0ZpbGUsCisgICAgICAgIERvd25sb2FkRXJyb3JDYW5ub3RPcGVuRmls
ZSwKKyAgICAgICAgRG93bmxvYWRFcnJvckZpbGVBbHJlYWR5RXhpc3RzLAorICAgICAgICBEb3du
bG9hZEVycm9yQ2FuY2VsbGVkQnlDYWxsZXIsCisgICAgICAgIERvd25sb2FkRXJyb3JDYW5ub3RE
ZXRlcm1pbmVGaWxlbmFtZSwKKyAgICAgICAgRG93bmxvYWRFcnJvck5ldHdvcmtGYWlsdXJlCisg
ICAgfTsKKworcHJpdmF0ZSBzbG90czoKKyAgICB2b2lkIG9uUmVhZHlSZWFkKCk7CisgICAgdm9p
ZCBvbkZpbmlzaGVkKCk7CisgICAgdm9pZCBvbkVycm9yKFFOZXR3b3JrUmVwbHk6Ok5ldHdvcmtF
cnJvcik7CisKK3ByaXZhdGU6CisgICAgdm9pZCBhYm9ydERvd25sb2FkV3JpdGluZ0FuZEVtaXRF
cnJvcihRdEZpbGVEb3dubG9hZGVyOjpEb3dubG9hZEVycm9yKTsKKyAgICB2b2lkIGRldGVybWlu
ZUZpbGVuYW1lKCk7CisKKyAgICBEb3dubG9hZCogbV9kb3dubG9hZDsKKyAgICBPd25QdHI8UU5l
dHdvcmtSZXBseT4gbV9yZXBseTsKKyAgICBPd25QdHI8UUZpbGU+IG1fZGVzdGluYXRpb25GaWxl
OworICAgIFFOZXR3b3JrUmVwbHk6Ok5ldHdvcmtFcnJvciBtX2Vycm9yOworICAgIGJvb2wgbV9o
ZWFkZXJzUmVhZDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>