<?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>93054</bug_id>
          
          <creation_ts>2012-08-02 18:15:51 -0700</creation_ts>
          <short_desc>IndexedDB: Fire error rather than raising on request creation if transaction aborts asynchronously.</short_desc>
          <delta_ts>2012-10-01 16:14:09 -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>WebCore Misc.</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joshua Bell">jsbell</reporter>
          <assigned_to name="Joshua Bell">jsbell</assigned_to>
          <cc>alecflett</cc>
    
    <cc>dgrogan</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>686078</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-08-02 18:15:51 -0700</bug_when>
    <thetext>In the IDB methods that create IDBRequests follow this pattern:

PassRefPtr&lt;IDBRequest&gt; IDBFoo::frobWidget()
{
    if (!m_transaction-&gt;isActive()) {
        ec = IDBDatabaseException::TRANSACTION_INACTIVE_ERR;
        return 0;
    }
    RefPtr&lt;IDBRequest&gt; request = IDBRequest::create(context, IDBAny::create(this), m_transaction.get());
    m_backend-&gt;frobWidget(request, m_transaction-&gt;backend(), ec);
    if (ec) {
        request-&gt;markEarlyDeath();
        return 0;
    }
    return request.release();
}

IDBFooBackendImpl::frobWidget(PassRefPtr&lt;IDBCallbacks&gt; callbacks, IDBTransactionBackendInterface* transaction, ExceptionCode&amp; ec)
{
    if (!IDBTransactionBackendImpl::from(transaction)-&gt;scheduleTask(
            createCallbackTask(&amp;IDBFooBackendImpl::frobWidgetInternal, this, callbacks)))
        ec = IDBDatabaseException::TRANSACTION_INACTIVE_ERR;
}

Note the two places where inactive transactions are tested for - this is because the backend may abort at the same time (different thread/process) as the script is issuing the request. This has the side effect that this user code could fail:

var request1 = foo.frobWidget(); // no exception - but will get abort event
// transaction backend aborts asynchronously here
var request2 = foo.frobWidget(); // throws exception

Ideally, TransactionInactiveError would not be issued until the script was at least plausibly aware.

To simplify the implementation and make for a more consistent developer experience, maybe we can:
* Remove the markEarlyDeath() logic and state, which simplifies IDBRequest.
* If the have either the front end or back end fire an AbortError event at the request if the transaction aborted asynchronously</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702546</commentid>
    <comment_count>1</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-08-22 17:25:42 -0700</bug_when>
    <thetext>Josh and I were talking about this and one thing I pointed out is that the frontend can&apos;t really get notified until after the current script task is done running - even though the backend calls asynchronously into the frontend, the frontend can&apos;t process that call until the current script finishes executing. So theoretically m_transaction-&gt;isActive() can&apos;t change state during script execution, at least due to anything happening in the backend.

So that may mean this is simpler than we thought. checking for it is tricky though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729008</commentid>
    <comment_count>2</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-26 15:02:38 -0700</bug_when>
    <thetext>*** Bug 97732 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729014</commentid>
    <comment_count>3</comment_count>
      <attachid>165884</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-26 15:20:12 -0700</bug_when>
    <thetext>Created attachment 165884
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729015</commentid>
    <comment_count>4</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-26 15:20:48 -0700</bug_when>
    <thetext>dgrogan@, alecflett@ - please take a look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729046</commentid>
    <comment_count>5</comment_count>
      <attachid>165884</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-09-26 16:11:31 -0700</bug_when>
    <thetext>Comment on attachment 165884
Patch

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

&gt; Source/WebCore/Modules/indexeddb/IDBCursor.cpp:235
&gt; +    if (!m_gotValue || isKeyCursor()) {

is this just an edge case that got pushed to the frontend?

&gt; Source/WebCore/Modules/indexeddb/IDBCursorBackendImpl.cpp:66
&gt; +void IDBCursorBackendImpl::continueFunction(PassRefPtr&lt;IDBKey&gt; prpKey, PassRefPtr&lt;IDBCallbacks&gt; prpCallbacks, ExceptionCode&amp;)

Is it worth stubbing on non-ec versions of these methods now, so that at some point we can remove them after the chromium code is removed?

&gt; Source/WebCore/Modules/indexeddb/IDBIndexBackendImpl.cpp:127
&gt; +        callbacks-&gt;onError(IDBDatabaseError::create(IDBDatabaseException::IDB_ABORT_ERR, &quot;&quot;));

Seems unfortunately not to have an error message, even if it&apos;s a cryptic one (so that we could at least trace it back to the individual failure) like &quot;InternalError: openKeyCursor failed to run.&quot;

&gt; Source/WebCore/Modules/indexeddb/IDBRequest.cpp:255
&gt; +    if (m_readyState == DONE &amp;&amp; error-&gt;code() == IDBDatabaseException::IDB_ABORT_ERR)

oh I see now.. so no error event should fire from the request?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729067</commentid>
    <comment_count>6</comment_count>
      <attachid>165884</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-26 16:41:32 -0700</bug_when>
    <thetext>Comment on attachment 165884
Patch

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

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBCursor.cpp:235
&gt;&gt; +    if (!m_gotValue || isKeyCursor()) {
&gt; 
&gt; is this just an edge case that got pushed to the frontend?

Yes. The back-end had this test, the front end was missing it. It was caught by storage/indexeddb/exceptions.html (w00t!)

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBCursorBackendImpl.cpp:66
&gt;&gt; +void IDBCursorBackendImpl::continueFunction(PassRefPtr&lt;IDBKey&gt; prpKey, PassRefPtr&lt;IDBCallbacks&gt; prpCallbacks, ExceptionCode&amp;)
&gt; 
&gt; Is it worth stubbing on non-ec versions of these methods now, so that at some point we can remove them after the chromium code is removed?

Since that will touch the chromium webkit API I wanted to do that separately as a pure cleanup patch. (It&apos;ll be multi-part too.)

&gt; Source/WebCore/Modules/indexeddb/IDBCursorBackendImpl.cpp:-115
&gt; -    if (!m_cursor || m_cursorType == IndexKeyCursor) {

Here&apos;s where the removed test came from. The new code (front and back end) looks just like update() now.

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBIndexBackendImpl.cpp:127
&gt;&gt; +        callbacks-&gt;onError(IDBDatabaseError::create(IDBDatabaseException::IDB_ABORT_ERR, &quot;&quot;));
&gt; 
&gt; Seems unfortunately not to have an error message, even if it&apos;s a cryptic one (so that we could at least trace it back to the individual failure) like &quot;InternalError: openKeyCursor failed to run.&quot;

Good idea - I&apos;ll add it.

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBRequest.cpp:255
&gt;&gt; +    if (m_readyState == DONE &amp;&amp; error-&gt;code() == IDBDatabaseException::IDB_ABORT_ERR)
&gt; 
&gt; oh I see now.. so no error event should fire from the request?

Correct - this is just for cleanup in Chromium IPC. 

* front-end issues request, back end receives request, then aborts: front end is sent abort event, transaction aborts the requests
* front-end issues request, back end aborts, then receives request: front end is sent abort event, front end is sent error event, transaction aborts the requests, error event ignored
* back end aborts, first: front-end never issues request

(We may already &quot;leak&quot; requests in the Chromium IPC layer if a transaction aborts since the callbacks are never fired. I&apos;ll investigate.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729077</commentid>
    <comment_count>7</comment_count>
      <attachid>165899</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-26 16:55:54 -0700</bug_when>
    <thetext>Created attachment 165899
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729159</commentid>
    <comment_count>8</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-09-26 19:55:16 -0700</bug_when>
    <thetext>I&apos;m confused how this doesn&apos;t show up in our layout tests. It seems that we have tests that test for the presence of exceptions in these exceptional situations. Now that we&apos;re not throwing them anymore shouldn&apos;t our tests fail?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729666</commentid>
    <comment_count>9</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-27 10:21:43 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; I&apos;m confused how this doesn&apos;t show up in our layout tests. It seems that we have tests that test for the presence of exceptions in these exceptional situations. Now that we&apos;re not throwing them anymore shouldn&apos;t our tests fail?

We were generating TransactionInactiveError in two places:

(1) Front end - if the front end has already received the &quot;transaction finished&quot; notification from the back end, the front end can throw the exception directly and skip creating the request.

(2) Back end - if the &quot;transaction finished&quot; notification had not yet reached the front end, the back end would return an exception code, and the front end will &quot;mark early death&quot; the request it created and throw the exception.

#2 would only occur in multiprocess ports where the async &quot;transaction finished&quot; notification from the back end could be sent while script was executing, and therefore the front end is too busy to have seen it yet.

This patch just eliminates special handling for #2; if the front end is unaware that the transaction has finished then simply let the request be created and returned to script, and when the &quot;transaction finished&quot; notification is processed on the front end the request will be aborted.

Existing layout tests necessarily only verify #1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729821</commentid>
    <comment_count>10</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-09-27 13:35:21 -0700</bug_when>
    <thetext>(In reply to comment #0)

I just saw this explanation up top.  Thanks for bearing with me as I get my head around this.

&gt; var request1 = foo.frobWidget(); // no exception - but will get abort event
&gt; // transaction backend aborts asynchronously here
&gt; var request2 = foo.frobWidget(); // throws exception

It does seem that writing even a flaky layout test for that situation would be hard, let alone a solid one. Can a unit test be constructed?

&gt; Ideally, TransactionInactiveError would not be issued until the script was at least plausibly aware.

I don&apos;t understand this sentence. Aware of what?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729878</commentid>
    <comment_count>11</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-27 14:41:21 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; It does seem that writing even a flaky layout test for that situation would be hard, let alone a solid one. 

Yeah - it won&apos;t happen in single-process e.g. DumpRenderTree.

&gt; Can a unit test be constructed?

I&apos;ll look into how difficult. (We need to get to the point where we can have the entire back end mocked to drive the front end through a series of states. And vice versa.)

&gt; &gt; Ideally, TransactionInactiveError would not be issued until the script was at least plausibly aware.
&gt; 
&gt; I don&apos;t understand this sentence. Aware of what?

Erm, yeah, not sure I finished that sentence - I tossed this bug in as it occurred to me as I was rushing out the door. What I meant was: scripts can detect that the transaction is inactive by doing a dummy get, e.g.

function blah() {
  var transactionInactive = false;
  try { store.get(0); } catch (e) { transactionInactive = true; }
  ...
  if (!transactionInactive) { ... should be able to do something here... }
}

Once the transaction is active, then unless abort() is called by the script itself then IMHO the active state of the transaction shouldn&apos;t change until control returns to the event loop. It would only change due to asynchronous processing of tasks, which seems like something we should conceal from script.

... which is basically me justifying the change in behavior I was suggesting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731815</commentid>
    <comment_count>12</comment_count>
      <attachid>166507</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-10-01 11:11:06 -0700</bug_when>
    <thetext>Created attachment 166507
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731816</commentid>
    <comment_count>13</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-10-01 11:11:46 -0700</bug_when>
    <thetext>tony@ - r?

(the ChangeLog may be too verbose at this point)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731890</commentid>
    <comment_count>14</comment_count>
      <attachid>166507</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-10-01 12:18:53 -0700</bug_when>
    <thetext>Comment on attachment 166507
Patch

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

&gt; Source/WebCore/Modules/indexeddb/IDBObjectStoreBackendImpl.cpp:90
&gt; +        callbacks-&gt;onError(IDBDatabaseError::create(IDBDatabaseException::IDB_ABORT_ERR, &quot;The transaction was aborted, so the request cannot be fulfilled.&quot;));

Should we share this string?  Maybe a static const char[] IDBObjectStoreBackendImpl::abortedTransactionErrorMessage?

&gt; Source/WebKit/chromium/tests/IDBRequestTest.cpp:72
&gt; +    // Now simulate the back end having fired an abort error at the request to clear up any intermediaries.
&gt; +    request-&gt;onError(IDBDatabaseError::create(IDBDatabaseException::IDB_ABORT_ERR, &quot;Description goes here.&quot;));

You&apos;re just checking that an ASSERT isn&apos;t triggered?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732031</commentid>
    <comment_count>15</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-10-01 15:02:07 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 166507 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=166507&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/IDBObjectStoreBackendImpl.cpp:90
&gt; &gt; +        callbacks-&gt;onError(IDBDatabaseError::create(IDBDatabaseException::IDB_ABORT_ERR, &quot;The transaction was aborted, so the request cannot be fulfilled.&quot;));
&gt; 
&gt; Should we share this string?  Maybe a static const char[] IDBObjectStoreBackendImpl::abortedTransactionErrorMessage?

Will do.

&gt; &gt; Source/WebKit/chromium/tests/IDBRequestTest.cpp:72
&gt; &gt; +    // Now simulate the back end having fired an abort error at the request to clear up any intermediaries.
&gt; &gt; +    request-&gt;onError(IDBDatabaseError::create(IDBDatabaseException::IDB_ABORT_ERR, &quot;Description goes here.&quot;));
&gt; 
&gt; You&apos;re just checking that an ASSERT isn&apos;t triggered?

Yes. I&apos;ll comment at least, see if there&apos;s a pattern for indicating this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732048</commentid>
    <comment_count>16</comment_count>
      <attachid>166557</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-10-01 15:28:05 -0700</bug_when>
    <thetext>Created attachment 166557
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732093</commentid>
    <comment_count>17</comment_count>
      <attachid>166557</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-01 16:14:05 -0700</bug_when>
    <thetext>Comment on attachment 166557
Patch for landing

Clearing flags on attachment: 166557

Committed r130095: &lt;http://trac.webkit.org/changeset/130095&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732094</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-01 16:14:09 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165884</attachid>
            <date>2012-09-26 15:20:12 -0700</date>
            <delta_ts>2012-09-26 16:55:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93054-20120926151931.patch</filename>
            <type>text/plain</type>
            <size>30218</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5NTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGE0MGJmM2VjOWI4MDMw
NzZmZTcyMzA5YTcwZjFkNWRkYTUwMjliZC4uNzU1ZWE5NWEzOWZlNzBkZDBkMmNkMzA3MzgxNGIw
MmRmODBhZDg2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDEyLTA5LTI2ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBGaXJl
IGVycm9yIHJhdGhlciB0aGFuIHJhaXNpbmcgb24gcmVxdWVzdCBjcmVhdGlvbiBpZiB0cmFuc2Fj
dGlvbiBhYm9ydHMgYXN5bmNocm9ub3VzbHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05MzA1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFsbCBJREIgZGF0YSBvcGVyYXRpb25zIGFyZSBhc3luY2hyb25v
dXMsIHByb2R1Y2luZyBJREJSZXF1ZXN0IG9iamVjdHMuCisgICAgICAgIFRoaXMgd2FzIGltcGxl
bWVudGVkIGJ5IHBhc3NpbmcgYWxsIGRhdGEgZnJvbSB0aGUgZnJvbnQtZW5kIHRvIHRoZSBiYWNr
LWVuZAorICAgICAgICBzeW5jaHJvbm91c2x5LCBhbmQgc3luY2hyb25vdXNseSByZXR1cm5pbmcg
YW4gZXhjZXB0aW9uIGNvZGUgYmFjayBpZiB0aGUKKyAgICAgICAgcmVxdWVzdCB3YXMgaW52YWxp
ZC4gUHJldmlvdXMgY2hhbmdlcyBoYXZlIG1vdmVkIHRoaXMgdGVzdGluZyB0byB0aGUgZnJvbnQt
ZW5kCisgICAgICAgIGV4Y2VwdCBmb3IgdGhlIGNhc2Ugb2YgdGhlIGJhY2stZW5kIHRyYW5zYWN0
aW9uIGhhdmluZyBhc3luY2hyb25vdXNseSBhYm9ydGVkCisgICAgICAgIGluIHRoZSBtZWFuIHRp
bWUuCisKKyAgICAgICAgVG8gZWxpbWluYXRlIHRoYXQgY2FzZSwgd2hpY2ggd291bGQgYWxsb3cg
ZnJvbnQtZW5kIHRvIGJhY2stZW5kIGNvbW11bmljYXRpb24KKyAgICAgICAgdG8gYmUgYXN5bmNo
cm9ub3VzIChpbiBtdWx0aS1wcm9jZXNzIHBvcnRzKSwgY2hhbmdlIGZyb20gcmV0dXJuaW5nIGFu
IGV4Y2VwdGlvbgorICAgICAgICBjb2RlIHRvIHJlbHlpbmcgb24gdGhlIGZyb250LWVuZCB0byBh
Ym9ydCB0aGUgcmVxdWVzdCB3aGVuIHRoZSBhYm9ydCBldmVudAorICAgICAgICBmaW5hbGx5IGFy
cml2ZXMuCisKKyAgICAgICAgVGhlIGJhY2stZW5kIGV4cGxpY2l0bHkgZmlyZXMgYW4gZXJyb3Ig
Y2FsbGJhY2sgYXMgd2VsbCwgYXMgaW50ZXJtZWRpYXRlIGxheWVycworICAgICAgICBtYXkgcmVs
eSBvbiB0aGlzIHRvIHN0b3AgdHJhY2tpbmcgdGhlIHBlbmRpbmcgY2FsbGJhY2suCisKKyAgICAg
ICAgTm8gbmV3IFdlYktpdCB0ZXN0cyAtIGNoYW5nZSBpcyBub3Qgb2JzZXJ2YWJsZSBpbiBzaW5n
bGUtcHJvY2VzcyBwb3J0cy4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OmFkdmFuY2UpOiBCYWNrIGVuZCBz
aG91bGQgbmV2ZXIgZmFpbCBhIHJlcXVlc3QuCisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6
OmNvbnRpbnVlRnVuY3Rpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6
ZGVsZXRlRnVuY3Rpb24pOiBEaXR0bywgYW5kIGFsc28gbW92ZSAiaXMga2V5IGN1cnNvciIgdGVz
dAorICAgICAgICBoZXJlIGZyb20gYmFjay1lbmQuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29y
QmFja2VuZEltcGw6OmNvbnRpbnVlRnVuY3Rpb24pOiBDaGFuZ2UgZnJvbSBFQyB0byBmaXJpbmcg
ZXJyb3IuCisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6YWR2YW5jZSk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OmRlbGV0ZUZ1
bmN0aW9uKTogRGl0dG8sIGFuZCByZW1vdmUgdGVzdCBtb3ZlZCB0byBGRS4KKyAgICAgICAgKFdl
YkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRjaENvbnRpbnVlKTogRGl0dG8uCisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCSW5kZXg6Om9wZW5DdXJzb3IpOiBCYWNrIGVuZCBzaG91bGQgbmV2ZXIgZmFpbCBhIHJl
cXVlc3QuCisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6Y291bnQpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OklEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpJREJJbmRleDo6Z2V0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJREJJbmRl
eDo6Z2V0S2V5KTogRGl0dG8uCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhC
YWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJbXBsOjpv
cGVuQ3Vyc29yKTogQ2hhbmdlIGZyb20gRUMgdG8gZmlyaW5nIGVycm9yLgorICAgICAgICAoV2Vi
Q29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6b3BlbktleUN1cnNvcik6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6Y291bnQpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6OmdldCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6Z2V0S2V5KTogRGl0dG8uCisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
T2JqZWN0U3RvcmU6OmdldCk6IEJhY2sgZW5kIHNob3VsZCBuZXZlciBmYWlsIGEgcmVxdWVzdC4K
KyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpwdXQpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbik6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmNsZWFyKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNv
cik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmNvdW50KTogRGl0
dG8uCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpnZXQp
OiBDaGFuZ2UgZnJvbSBFQyB0byBmaXJpbmcgZXJyb3IuCisgICAgICAgIChXZWJDb3JlOjpJREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsOjpwdXRXaXRoSW5kZXhLZXlzKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6
OmRlbGV0ZUZ1bmN0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsOjpjbGVhcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbDo6b3BlbkN1cnNvcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y291bnQpOiBEaXR0by4KKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVl
c3Q6Om9uRXJyb3IpOiBJZ25vcmUgYWJvcnQgc2VudCBieSBiYWNrLWVuZCBpZiBhYm9ydGVkIGFs
cmVhZHkuCisKIDIwMTItMDktMjQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5j
b20+CiAKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyMzUxOTA2PiBIYXZlIER1bXBSZW5kZXJU
cmVlIGFuZCBXZWJLaXRUZXN0UnVubmVyIGNyYXNoIGxvZ3Mgc2hvdyB3aGljaCB0ZXN0IGNyYXNo
ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCmlu
ZGV4IDM0ZmIwZmYyOGZlMDVkNDg1Zjc2YzhjZjBiOWE5OGM3ZGY1YWVmMjAuLjQxYzM4ODdmY2Y1
NGRiYTQ4OGQ0N2QwODdlNTVmZDFiOTAxZmM1ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcApAQCAtMTc2LDggKzE3Niw3IEBAIHZvaWQgSURC
Q3Vyc29yOjphZHZhbmNlKHVuc2lnbmVkIGxvbmcgY291bnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ICAgIG1fcmVxdWVzdC0+c2V0UGVuZGluZ0N1cnNvcih0aGlzKTsKICAgICBtX2dvdFZhbHVlID0g
ZmFsc2U7CiAgICAgbV9iYWNrZW5kLT5hZHZhbmNlKGNvdW50LCBtX3JlcXVlc3QsIGVjKTsKLSAg
ICBpZiAoZWMpCi0gICAgICAgIG1fcmVxdWVzdC0+bWFya0Vhcmx5RGVhdGgoKTsKKyAgICBBU1NF
UlQoIWVjKTsKIH0KIAogdm9pZCBJREJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0
cjxJREJLZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0yMTgsOCArMjE3LDcgQEAgdm9p
ZCBJREJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiAgICAgbV9yZXF1ZXN0LT5zZXRQZW5kaW5nQ3Vyc29yKHRoaXMpOwog
ICAgIG1fZ290VmFsdWUgPSBmYWxzZTsKICAgICBtX2JhY2tlbmQtPmNvbnRpbnVlRnVuY3Rpb24o
a2V5LCBtX3JlcXVlc3QsIGVjKTsKLSAgICBpZiAoZWMpCi0gICAgICAgIG1fcmVxdWVzdC0+bWFy
a0Vhcmx5RGVhdGgoKTsKKyAgICBBU1NFUlQoIWVjKTsKIH0KIAogUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBJREJDdXJzb3I6OmRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMjM0LDE2ICsyMzIsMTMgQEAgUGFzc1JlZlB0
cjxJREJSZXF1ZXN0PiBJREJDdXJzb3I6OmRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgaWYgKCFtX2dv
dFZhbHVlKSB7CisgICAgaWYgKCFtX2dvdFZhbHVlIHx8IGlzS2V5Q3Vyc29yKCkpIHsKICAgICAg
ICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOwogICAg
ICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJ
REJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNh
Y3Rpb24uZ2V0KCkpOwogICAgIG1fYmFja2VuZC0+ZGVsZXRlRnVuY3Rpb24ocmVxdWVzdCwgZWMp
OwotICAgIGlmIChlYykgewotICAgICAgICByZXF1ZXN0LT5tYXJrRWFybHlEZWF0aCgpOwotICAg
ICAgICByZXR1cm4gMDsKLSAgICB9CisgICAgQVNTRVJUKCFlYyk7CiAgICAgcmV0dXJuIHJlcXVl
c3QucmVsZWFzZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAKaW5kZXggODMwMGMwNTQyMTBiODVm
ZWJjYmViY2E5YmI1MDBkMTJkZmQyYzQ5MS4uNTgyMjAwYzIxZWI3NzhkMTg2MzQ2N2QwZGU5OGNj
OWRkOTNlYjJmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCQ3Vyc29yQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcApAQCAtNjMsMjAgKzYzLDIyIEBAIElEQkN1
cnNvckJhY2tlbmRJbXBsOjp+SURCQ3Vyc29yQmFja2VuZEltcGwoKQogICAgIG1fb2JqZWN0U3Rv
cmUuY2xlYXIoKTsKIH0KIAotdm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y29udGludWVGdW5j
dGlvbihQYXNzUmVmUHRyPElEQktleT4gcHJwS2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4g
cHJwQ2FsbGJhY2tzLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgSURCQ3Vyc29yQmFja2VuZElt
cGw6OmNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+IHBycEtleSwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgSURC
X1RSQUNFKCJJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y29udGludWUiKTsKKyAgICBSZWZQdHI8SURC
Q2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7CiAKLSAgICBpZiAoIW1fdHJhbnNh
Y3Rpb24tPnNjaGVkdWxlVGFzayhtX3Rhc2tUeXBlLCBjcmVhdGVDYWxsYmFja1Rhc2soJklEQkN1
cnNvckJhY2tlbmRJbXBsOjpjb250aW51ZUZ1bmN0aW9uSW50ZXJuYWwsIHRoaXMsIHBycEtleSwg
cHJwQ2FsbGJhY2tzKSkpCi0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5T
QUNUSU9OX0lOQUNUSVZFX0VSUjsKKyAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFz
ayhtX3Rhc2tUeXBlLCBjcmVhdGVDYWxsYmFja1Rhc2soJklEQkN1cnNvckJhY2tlbmRJbXBsOjpj
b250aW51ZUZ1bmN0aW9uSW50ZXJuYWwsIHRoaXMsIHBycEtleSwgY2FsbGJhY2tzKSkpCisgICAg
ICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJh
c2VFeGNlcHRpb246OklEQl9BQk9SVF9FUlIsICIiKSk7CiB9CiAKLXZvaWQgSURCQ3Vyc29yQmFj
a2VuZEltcGw6OmFkdmFuY2UodW5zaWduZWQgbG9uZyBjb3VudCwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+IHBycENhbGxiYWNrcywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIElEQkN1cnNvckJh
Y2tlbmRJbXBsOjphZHZhbmNlKHVuc2lnbmVkIGxvbmcgY291bnQsIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPiBwcnBDYWxsYmFja3MsIEV4Y2VwdGlvbkNvZGUmKQogewogICAgIElEQl9UUkFDRSgi
SURCQ3Vyc29yQmFja2VuZEltcGw6OmFkdmFuY2UiKTsKKyAgICBSZWZQdHI8SURCQ2FsbGJhY2tz
PiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7CiAKLSAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPnNj
aGVkdWxlVGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJklEQkN1cnNvckJhY2tlbmRJbXBsOjphZHZh
bmNlSW50ZXJuYWwsIHRoaXMsIGNvdW50LCBwcnBDYWxsYmFja3MpKSkKLSAgICAgICAgZWMgPSBJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSOworICAgIGlmICgh
bV90cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCQ3Vyc29y
QmFja2VuZEltcGw6OmFkdmFuY2VJbnRlcm5hbCwgdGhpcywgY291bnQsIGNhbGxiYWNrcykpKQor
ICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpJREJfQUJPUlRfRVJSLCAiIikpOwogfQogCiB2b2lkIElEQkN1cnNv
ckJhY2tlbmRJbXBsOjphZHZhbmNlSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBh
c3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IHBycEN1cnNvciwgdW5zaWduZWQgbG9uZyBj
b3VudCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKQEAgLTEwNywyNyArMTA5
LDI1IEBAIHZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OmNvbnRpbnVlRnVuY3Rpb25JbnRlcm5h
bChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzCiAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3Mo
Y3Vyc29yLT5rZXkoKSwgY3Vyc29yLT5wcmltYXJ5S2V5KCksIGN1cnNvci0+dmFsdWUoKSk7CiB9
CiAKLXZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OmRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBJREJD
dXJzb3JCYWNrZW5kSW1wbDo6ZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
IHBycENhbGxiYWNrcywgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgSURCX1RSQUNFKCJJREJDdXJz
b3JCYWNrZW5kSW1wbDo6ZGVsZXRlIik7CiAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb24tPm1vZGUo
KSAhPSBJREJUcmFuc2FjdGlvbjo6UkVBRF9PTkxZKTsKIAotICAgIGlmICghbV9jdXJzb3IgfHwg
bV9jdXJzb3JUeXBlID09IEluZGV4S2V5Q3Vyc29yKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJh
c2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQorICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFJlZlB0cjxJREJLZXlSYW5nZT4g
a2V5UmFuZ2UgPSBJREJLZXlSYW5nZTo6b25seShtX2N1cnNvci0+cHJpbWFyeUtleSgpLCBlYyk7
CiAgICAgQVNTRVJUKCFlYyk7CiAKICAgICBtX29iamVjdFN0b3JlLT5kZWxldGVGdW5jdGlvbihr
ZXlSYW5nZS5yZWxlYXNlKCksIHBycENhbGxiYWNrcywgbV90cmFuc2FjdGlvbi5nZXQoKSwgZWMp
OworICAgIEFTU0VSVCghZWMpOwogfQogCi12b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVm
ZXRjaENvbnRpbnVlKGludCBudW1iZXJUb0ZldGNoLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4g
cHJwQ2FsbGJhY2tzLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgSURCQ3Vyc29yQmFja2VuZElt
cGw6OnByZWZldGNoQ29udGludWUoaW50IG51bWJlclRvRmV0Y2gsIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPiBwcnBDYWxsYmFja3MsIEV4Y2VwdGlvbkNvZGUmKQogewogICAgIElEQl9UUkFDRSgi
SURCQ3Vyc29yQmFja2VuZEltcGw6OnByZWZldGNoQ29udGludWUiKTsKLSAgICBpZiAoIW1fdHJh
bnNhY3Rpb24tPnNjaGVkdWxlVGFzayhtX3Rhc2tUeXBlLCBjcmVhdGVDYWxsYmFja1Rhc2soJklE
QkN1cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRjaENvbnRpbnVlSW50ZXJuYWwsIHRoaXMsIG51bWJl
clRvRmV0Y2gsIHBycENhbGxiYWNrcykpKQotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7CisgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4g
Y2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOworICAgIGlmICghbV90cmFuc2FjdGlvbi0+c2NoZWR1
bGVUYXNrKG1fdGFza1R5cGUsIGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCQ3Vyc29yQmFja2VuZElt
cGw6OnByZWZldGNoQ29udGludWVJbnRlcm5hbCwgdGhpcywgbnVtYmVyVG9GZXRjaCwgY2FsbGJh
Y2tzKSkpCisgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVh
dGUoSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9BQk9SVF9FUlIsICIiKSk7CiB9CiAKIHZvaWQg
SURCQ3Vyc29yQmFja2VuZEltcGw6OnByZWZldGNoQ29udGludWVJbnRlcm5hbChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW1wbD4gcHJwQ3Vyc29y
LCBpbnQgbnVtYmVyVG9GZXRjaCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcAppbmRleCBl
MzdlZjBiOGZmZmIyYTNkNTUxNTY5ODhiYmVkYzQzYTYzYmY2NTg5Li4wN2Y4ZTQ5NWY0ODJlNjFk
N2IwNzZmNWViMjAzOWEwYmQ2YTQ3NTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCSW5kZXguY3BwCkBAIC03NywxMCArNzcsNyBAQCBQYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IElEQkluZGV4OjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIFBhcwogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3Jl
YXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsK
ICAgICByZXF1ZXN0LT5zZXRDdXJzb3JEZXRhaWxzKElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6
OkluZGV4Q3Vyc29yLCBkaXJlY3Rpb24pOwogICAgIG1fYmFja2VuZC0+b3BlbkN1cnNvcihrZXlS
YW5nZSwgZGlyZWN0aW9uLCByZXF1ZXN0LCBtX3RyYW5zYWN0aW9uLT5iYWNrZW5kKCksIGVjKTsK
LSAgICBpZiAoZWMpIHsKLSAgICAgICAgcmVxdWVzdC0+bWFya0Vhcmx5RGVhdGgoKTsKLSAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgfQorICAgIEFTU0VSVCghZWMpOwogICAgIHJldHVybiByZXF1ZXN0
OwogfQogCkBAIC0xMjcsMTAgKzEyNCw3IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5k
ZXg6OmNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQCiAgICAg
fQogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNv
bnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKICAgICBt
X2JhY2tlbmQtPmNvdW50KGtleVJhbmdlLCByZXF1ZXN0LCBtX3RyYW5zYWN0aW9uLT5iYWNrZW5k
KCksIGVjKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgcmVxdWVzdC0+bWFya0Vhcmx5RGVhdGgo
KTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQorICAgIEFTU0VSVCghZWMpOwogICAgIHJldHVy
biByZXF1ZXN0OwogfQogCkBAIC0xNjEsMTAgKzE1NSw3IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVz
dD4gSURCSW5kZXg6Om9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwKICAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShj
b250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAg
cmVxdWVzdC0+c2V0Q3Vyc29yRGV0YWlscyhJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpJbmRl
eEtleUN1cnNvciwgZGlyZWN0aW9uKTsKICAgICBtX2JhY2tlbmQtPm9wZW5LZXlDdXJzb3Ioa2V5
UmFuZ2UsIGRpcmVjdGlvbiwgcmVxdWVzdCwgbV90cmFuc2FjdGlvbi0+YmFja2VuZCgpLCBlYyk7
Ci0gICAgaWYgKGVjKSB7Ci0gICAgICAgIHJlcXVlc3QtPm1hcmtFYXJseURlYXRoKCk7Ci0gICAg
ICAgIHJldHVybiAwOwotICAgIH0KKyAgICBBU1NFUlQoIWVjKTsKICAgICByZXR1cm4gcmVxdWVz
dDsKIH0KIApAQCAtMjI1LDEwICsyMTYsNyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQklu
ZGV4OjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cgogCiAg
ICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4
dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgIG1fYmFj
a2VuZC0+Z2V0KGtleVJhbmdlLCByZXF1ZXN0LCBtX3RyYW5zYWN0aW9uLT5iYWNrZW5kKCksIGVj
KTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgcmVxdWVzdC0+bWFya0Vhcmx5RGVhdGgoKTsKLSAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgfQorICAgIEFTU0VSVCghZWMpOwogICAgIHJldHVybiByZXF1
ZXN0OwogfQogCkBAIC0yNjAsMTAgKzI0OCw3IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURC
SW5kZXg6OmdldEtleShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmCiAK
ICAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250
ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgbV9i
YWNrZW5kLT5nZXRLZXkoa2V5UmFuZ2UsIHJlcXVlc3QsIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQo
KSwgZWMpOwotICAgIGlmIChlYykgewotICAgICAgICByZXF1ZXN0LT5tYXJrRWFybHlEZWF0aCgp
OwotICAgICAgICByZXR1cm4gMDsKLSAgICB9CisgICAgQVNTRVJUKCFlYyk7CiAgICAgcmV0dXJu
IHJlcXVlc3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkluZGV4QmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKaW5kZXggYTJiODViNWU1YzQ3MTcxNGFmZDIw
YjI5MTY4M2Y4NTAyZTViZGJkYy4uMmNjOTA2ZDk1ZmM0MDJiZDgxYmNiZmQxNzk0OWM4ZDI3MGZk
ODgxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5k
ZXhCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIElEQkluZGV4
QmFja2VuZEltcGw6Om9wZW5DdXJzb3JJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
UGFzc1JlZlB0cgogICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKGN1cnNvciwgY3Vyc29yLT5rZXko
KSwgY3Vyc29yLT5wcmltYXJ5S2V5KCksIGN1cnNvci0+dmFsdWUoKSk7CiB9CiAKLXZvaWQgSURC
SW5kZXhCYWNrZW5kSW1wbDo6b3BlbkN1cnNvcihQYXNzUmVmUHRyPElEQktleVJhbmdlPiBwcnBL
ZXlSYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0
aW9uUHRyLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6b3Bl
bkN1cnNvcihQYXNzUmVmUHRyPElEQktleVJhbmdlPiBwcnBLZXlSYW5nZSwgdW5zaWduZWQgc2hv
cnQgZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2Rl
JikKIHsKICAgICBJREJfVFJBQ0UoIklEQkluZGV4QmFja2VuZEltcGw6Om9wZW5DdXJzb3IiKTsK
ICAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gaW5kZXggPSB0aGlzOwpAQCAtMTEyLDEw
ICsxMTIsMTAgQEAgdm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29yKFBhc3NSZWZQ
dHI8SURCS2V5UmFuZ2U+IHBycEtleVJhbmdlLCB1bnNpZ24KICAgICBSZWZQdHI8SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
Ojpmcm9tKHRyYW5zYWN0aW9uUHRyKTsKICAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRh
c2soCiAgICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJm9wZW5DdXJzb3JJbnRlcm5hbCwg
aW5kZXgsIGtleVJhbmdlLCBkaXJlY3Rpb24sIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6Oklu
ZGV4Q3Vyc29yLCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uKSkpCi0gICAgICAgIGVjID0gSURCRGF0
YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKKyAgICAgICAgY2FsbGJh
Y2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6SURCX0FCT1JUX0VSUiwgIiIpKTsKIH0KIAotdm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpv
cGVuS2V5Q3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHBycEtleVJhbmdlLCB1bnNpZ25l
ZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3Ms
IElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlv
bkNvZGUmIGVjKQordm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpvcGVuS2V5Q3Vyc29yKFBhc3NS
ZWZQdHI8SURCS2V5UmFuZ2U+IHBycEtleVJhbmdlLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24s
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmKQogewogICAgIElE
Ql9UUkFDRSgiSURCSW5kZXhCYWNrZW5kSW1wbDo6b3BlbktleUN1cnNvciIpOwogICAgIFJlZlB0
cjxJREJJbmRleEJhY2tlbmRJbXBsPiBpbmRleCA9IHRoaXM7CkBAIC0xMjQsNyArMTI0LDcgQEAg
dm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpvcGVuS2V5Q3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5
UmFuZ2U+IHBycEtleVJhbmdlLCB1bnMKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9tKHRyYW5z
YWN0aW9uUHRyKTsKICAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soCiAgICAgICAg
ICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJm9wZW5DdXJzb3JJbnRlcm5hbCwgaW5kZXgsIGtleVJh
bmdlLCBkaXJlY3Rpb24sIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkluZGV4S2V5Q3Vyc29y
LCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uKSkpCi0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNl
cHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVy
cm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0FC
T1JUX0VSUiwgIiIpKTsKIH0KIAogdm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpjb3VudEludGVy
bmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZElt
cGw+IGluZGV4LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
PiB0cmFuc2FjdGlvbikKQEAgLTE0NSwxMyArMTQ1LDEzIEBAIHZvaWQgSURCSW5kZXhCYWNrZW5k
SW1wbDo6Y291bnRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJ
REJJCiAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpudW1i
ZXJWYWx1ZShjb3VudCkpOwogfQogCi12b2lkIElEQkluZGV4QmFja2VuZEltcGw6OmNvdW50KFBh
c3NSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2Fs
bGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBF
eGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6Y291bnQoUGFzc1Jl
ZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFj
a3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2Vw
dGlvbkNvZGUmKQogewogICAgIElEQl9UUkFDRSgiSURCSW5kZXhCYWNrZW5kSW1wbDo6Y291bnQi
KTsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uUHRyKTsKICAgICBpZiAo
IXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soCiAgICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rh
c2soJmNvdW50SW50ZXJuYWwsIHRoaXMsIHJhbmdlLCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uKSkp
Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZF
X0VSUjsKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0
ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0FCT1JUX0VSUiwgIiIpKTsKIH0KIAogdm9pZCBJ
REJJbmRleEJhY2tlbmRJbXBsOjpnZXRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
UGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiBpbmRleCwgUGFzc1JlZlB0cjxJREJLZXlS
YW5nZT4ga2V5UmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NS
ZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24pCkBAIC0yMTIsNyAr
MjEyLDcgQEAgdm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpnZXRLZXlJbnRlcm5hbChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmUKIH0KIAogCi12b2lkIElEQkluZGV4QmFj
a2VuZEltcGw6OmdldChQYXNzUmVmUHRyPElEQktleVJhbmdlPiBwcnBLZXlSYW5nZSwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIElEQkluZGV4
QmFja2VuZEltcGw6OmdldChQYXNzUmVmUHRyPElEQktleVJhbmdlPiBwcnBLZXlSYW5nZSwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgSURCX1RS
QUNFKCJJREJJbmRleEJhY2tlbmRJbXBsOjpnZXQiKTsKICAgICBSZWZQdHI8SURCSW5kZXhCYWNr
ZW5kSW1wbD4gaW5kZXggPSB0aGlzOwpAQCAtMjIwLDEwICsyMjAsMTAgQEAgdm9pZCBJREJJbmRl
eEJhY2tlbmRJbXBsOjpnZXQoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcHJwS2V5UmFuZ2UsIFBh
c3NSZWZQdHI8SUQKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxs
YmFja3M7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9u
ID0gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6ZnJvbSh0cmFuc2FjdGlvblB0cik7CiAgICAg
aWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmZ2V0SW50
ZXJuYWwsIGluZGV4LCBrZXlSYW5nZSwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbikpKQotICAgICAg
ICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7Cisg
ICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0
YWJhc2VFeGNlcHRpb246OklEQl9BQk9SVF9FUlIsICIiKSk7CiB9CiAKLXZvaWQgSURCSW5kZXhC
YWNrZW5kSW1wbDo6Z2V0S2V5KFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHBycEtleVJhbmdlLCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgSURC
SW5kZXhCYWNrZW5kSW1wbDo6Z2V0S2V5KFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHBycEtleVJh
bmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2RlJikKIHsKICAg
ICBJREJfVFJBQ0UoIklEQkluZGV4QmFja2VuZEltcGw6OmdldEtleSIpOwogICAgIFJlZlB0cjxJ
REJJbmRleEJhY2tlbmRJbXBsPiBpbmRleCA9IHRoaXM7CkBAIC0yMzIsNyArMjMyLDcgQEAgdm9p
ZCBJREJJbmRleEJhY2tlbmRJbXBsOjpnZXRLZXkoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcHJw
S2V5UmFuZ2UsIFBhc3NSZWZQdHIKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0
aW9uUHRyKTsKICAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soCiAgICAgICAgICAg
ICBjcmVhdGVDYWxsYmFja1Rhc2soJmdldEtleUludGVybmFsLCBpbmRleCwga2V5UmFuZ2UsIGNh
bGxiYWNrcywgdHJhbnNhY3Rpb24pKSkKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSOworICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3Io
SURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfQUJPUlRf
RVJSLCAiIikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKaW5kZXggY2M2YzI4
ZWYyODRlZmQ3M2ZhNjUzMWNmMGQ1YTk5MGNlM2E5N2MyMi4uNGNiZTYzZDExNWUwYWEwNDRiNjBm
OTRlNTRiZmVlYWRjOTRlN2JkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcApAQCAtODgsMTAgKzg4LDcgQEAgUGFzc1JlZlB0
cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Z2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIFBhc3MKICAgICB9CiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJ
REJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNh
Y3Rpb24uZ2V0KCkpOwogICAgIG1fYmFja2VuZC0+Z2V0KGtleVJhbmdlLCByZXF1ZXN0LCBtX3Ry
YW5zYWN0aW9uLT5iYWNrZW5kKCksIGVjKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgcmVxdWVz
dC0+bWFya0Vhcmx5RGVhdGgoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQorICAgIEFTU0VS
VCghZWMpOwogICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKIH0KIApAQCAtMjE5LDEwICsy
MTYsNyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwdXQoSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlOjpQdXRNbwogCiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+
IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgc291cmNlLCBtX3RyYW5zYWN0
aW9uLmdldCgpKTsKICAgICBtX2JhY2tlbmQtPnB1dFdpdGhJbmRleEtleXMoc2VyaWFsaXplZFZh
bHVlLnJlbGVhc2UoKSwga2V5LnJlbGVhc2UoKSwgcHV0TW9kZSwgcmVxdWVzdCwgbV90cmFuc2Fj
dGlvbi0+YmFja2VuZCgpLCBpbmRleE5hbWVzLCBpbmRleEtleXMsIGVjKTsKLSAgICBpZiAoZWMp
IHsKLSAgICAgICAgcmVxdWVzdC0+bWFya0Vhcmx5RGVhdGgoKTsKLSAgICAgICAgcmV0dXJuIDA7
Ci0gICAgfQorICAgIEFTU0VSVCghZWMpOwogICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsK
IH0KIApAQCAtMjQ4LDEwICsyNDIsNyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVj
dFN0b3JlOjpkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjbwogCiAgICAg
UmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwg
SURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgIG1fYmFja2Vu
ZC0+ZGVsZXRlRnVuY3Rpb24oa2V5UmFuZ2UsIHJlcXVlc3QsIG1fdHJhbnNhY3Rpb24tPmJhY2tl
bmQoKSwgZWMpOwotICAgIGlmIChlYykgewotICAgICAgICByZXF1ZXN0LT5tYXJrRWFybHlEZWF0
aCgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9CisgICAgQVNTRVJUKCFlYyk7CiAgICAgcmV0
dXJuIHJlcXVlc3QucmVsZWFzZSgpOwogfQogCkBAIC0yODIsMTAgKzI3Myw3IEBAIFBhc3NSZWZQ
dHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmNsZWFyKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIEV4CiAKICAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJl
cXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlv
bi5nZXQoKSk7CiAgICAgbV9iYWNrZW5kLT5jbGVhcihyZXF1ZXN0LCBtX3RyYW5zYWN0aW9uLT5i
YWNrZW5kKCksIGVjKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgcmVxdWVzdC0+bWFya0Vhcmx5
RGVhdGgoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQorICAgIEFTU0VSVCghZWMpOwogICAg
IHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKIH0KIApAQCAtNTE0LDEwICs1MDIsNyBAQCBQYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleAogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURC
UmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0
aW9uLmdldCgpKTsKICAgICByZXF1ZXN0LT5zZXRDdXJzb3JEZXRhaWxzKElEQkN1cnNvckJhY2tl
bmRJbnRlcmZhY2U6Ok9iamVjdFN0b3JlQ3Vyc29yLCBkaXJlY3Rpb24pOwogICAgIG1fYmFja2Vu
ZC0+b3BlbkN1cnNvcihyYW5nZSwgZGlyZWN0aW9uLCByZXF1ZXN0LCB0YXNrVHlwZSwgbV90cmFu
c2FjdGlvbi0+YmFja2VuZCgpLCBlYyk7Ci0gICAgaWYgKGVjKSB7Ci0gICAgICAgIHJlcXVlc3Qt
Pm1hcmtFYXJseURlYXRoKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KKyAgICBBU1NFUlQo
IWVjKTsKICAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CiB9CiAKQEAgLTU2NCwxMCArNTQ5
LDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Y291bnQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGEKICAgICB9CiAgICAgUmVmUHRyPElEQlJlcXVl
c3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUo
dGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgIG1fYmFja2VuZC0+Y291bnQocmFuZ2Us
IHJlcXVlc3QsIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMpOwotICAgIGlmIChlYykgewot
ICAgICAgICByZXF1ZXN0LT5tYXJrRWFybHlEZWF0aCgpOwotICAgICAgICByZXR1cm4gMDsKLSAg
ICB9CisgICAgQVNTRVJUKCFlYyk7CiAgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCmluZGV4IDgwNWI3MTUyNDA2MDE5YWZmODBjMGUw
YTliODA4MjVkMGVmMDVhY2QuLmU3MjBkOWJmYTA0YjhhYzIxZTlkODdlZDNiZTQyYjVhYmE4Mzg0
OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVj
dFN0b3JlQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCkBAIC03OCw3ICs3OCw3IEBAIElEQk9i
amVjdFN0b3JlTWV0YWRhdGEgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6bWV0YWRhdGEoKSBj
b25zdAogICAgIHJldHVybiBtZXRhZGF0YTsKIH0KIAotdm9pZCBJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsOjpnZXQoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcHJwS2V5UmFuZ2UsIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsOjpnZXQoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcHJwS2V5UmFuZ2Us
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmKQogewogICAgIElE
Ql9UUkFDRSgiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Z2V0Iik7CiAgICAgUmVmUHRyPElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlID0gdGhpczsKQEAgLTg3LDcgKzg3
LDcgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpnZXQoUGFzc1JlZlB0cjxJREJL
ZXlSYW5nZT4gcHJwS2V5UmFuZ2UsIFBhc3NSZWYKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9t
KHRyYW5zYWN0aW9uUHRyKTsKICAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soCiAg
ICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6
OmdldEludGVybmFsLCBvYmplY3RTdG9yZSwga2V5UmFuZ2UsIGNhbGxiYWNrcywgdHJhbnNhY3Rp
b24pKSkKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05fSU5B
Q1RJVkVfRVJSOworICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6
Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfQUJPUlRfRVJSLCAiIikpOwogfQogCiB2
b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmdldEludGVybmFsKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0
b3JlLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0
cmFuc2FjdGlvbikKQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGw6OmdldEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPAog
ICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlRnJv
bVdpcmUod2lyZURhdGEpKTsKIH0KIAotdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpw
dXRXaXRoSW5kZXhLZXlzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBwcnBWYWx1
ZSwgUGFzc1JlZlB0cjxJREJLZXk+IHBycEtleSwgUHV0TW9kZSBwdXRNb2RlLCBQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2UqIHRyYW5zYWN0aW9uUHRyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgaW5kZXhOYW1lcywgY29u
c3QgVmVjdG9yPEluZGV4S2V5cz4mIGluZGV4S2V5cywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lk
IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dFdpdGhJbmRleEtleXMoUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IHBycFZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4gcHJwS2V5
LCBQdXRNb2RlIHB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3Ms
IElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBpbmRleE5hbWVzLCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzPiYgaW5kZXhL
ZXlzLCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGw6OnB1dFdpdGhJbmRleEtleXMiKTsKIApAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQg
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0V2l0aEluZGV4S2V5cyhQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1CiAKICAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2so
CiAgICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJklEQk9iamVjdFN0b3JlQmFja2VuZElt
cGw6OnB1dEludGVybmFsLCBvYmplY3RTdG9yZSwgdmFsdWUsIGtleSwgcHV0TW9kZSwgY2FsbGJh
Y2tzLCB0cmFuc2FjdGlvbiwgbmV3SW5kZXhOYW1lcy5yZWxlYXNlKCksIG5ld0luZGV4S2V5cy5y
ZWxlYXNlKCkpKSkKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJ
T05fSU5BQ1RJVkVfRVJSOworICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VF
cnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfQUJPUlRfRVJSLCAiIikpOwog
fQogCiBuYW1lc3BhY2UgewpAQCAtMzY4LDcgKzM2OCw3IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbDo6cHV0SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQ
dHI8CiAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3Moa2V5LnJlbGVhc2UoKSk7CiB9CiAKLXZvaWQg
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJL
ZXlSYW5nZT4gcHJwS2V5UmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFj
a3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQordm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVGdW5j
dGlvbihQYXNzUmVmUHRyPElEQktleVJhbmdlPiBwcnBLZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0
cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGUiKTsKIApAQCAtMzgxLDcgKzM4MSw3IEBAIHZvaWQg
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJL
ZXlSYW5nZT4gcHJwS2V5UmFuCiAKICAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2so
CiAgICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJklEQk9iamVjdFN0b3JlQmFja2VuZElt
cGw6OmRlbGV0ZUludGVybmFsLCBvYmplY3RTdG9yZSwga2V5UmFuZ2UsIGNhbGxiYWNrcywgdHJh
bnNhY3Rpb24pKSkKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJ
T05fSU5BQ1RJVkVfRVJSOworICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VF
cnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfQUJPUlRfRVJSLCAiIikpOwog
fQogCiB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUludGVybmFsKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+
IG9iamVjdFN0b3JlLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsPiB0cmFuc2FjdGlvbikKQEAgLTQxMyw3ICs0MTMsNyBAQCB2b2lkIElEQk9iamVjdFN0
b3JlQmFja2VuZEltcGw6OmRlbGV0ZUludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQ
YXNzUmVmUAogICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
dW5kZWZpbmVkVmFsdWUoKSk7CiB9CiAKLXZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6
Y2xlYXIoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYgZWMpCit2
b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNsZWFyKFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiBwcnBDYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNh
Y3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmKQogewogICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbDo6Y2xlYXIiKTsKIApAQCAtNDI1LDcgKzQyNSw3IEBAIHZvaWQgSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y2xlYXIoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENh
bGxiYWNrcywgSURCCiAKICAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soCiAgICAg
ICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNs
ZWFySW50ZXJuYWwsIG9iamVjdFN0b3JlLCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uKSkpCi0gICAg
ICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsK
KyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6SURCX0FCT1JUX0VSUiwgIiIpKTsKIH0KIAogdm9pZCBJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsOjpjbGVhckludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGw+IHRyYW5zYWN0aW9uKQpAQCAtNTAzLDcgKzUwMyw3IEBAIHZvaWQgSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlSW5kZXhJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgUGFzCiAgICAgdHJhbnNhY3Rpb24tPmRpZENvbXBsZXRlVGFza0V2ZW50cygpOwog
fQogCi12b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Om9wZW5DdXJzb3IoUGFzc1JlZlB0
cjxJREJLZXlSYW5nZT4gcHJwUmFuZ2UsIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbiwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSB0YXNrVHlwZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIElEQk9iamVj
dFN0b3JlQmFja2VuZEltcGw6Om9wZW5DdXJzb3IoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcHJw
UmFuZ2UsIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlOjpUYXNr
VHlwZSB0YXNrVHlwZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlv
blB0ciwgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsOjpvcGVuQ3Vyc29yIik7CiAgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGw+IG9iamVjdFN0b3JlID0gdGhpczsKQEAgLTUxMiw3ICs1MTIsNyBAQCB2b2lkIElEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw6Om9wZW5DdXJzb3IoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4g
cHJwUmFuZ2UsIElEQgogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFu
c2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmZyb20odHJhbnNhY3Rpb25QdHIp
OwogICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzaygKICAgICAgICAgICAgIGNyZWF0
ZUNhbGxiYWNrVGFzaygmSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6b3BlbkN1cnNvckludGVy
bmFsLCBvYmplY3RTdG9yZSwgcmFuZ2UsIGRpcmVjdGlvbiwgY2FsbGJhY2tzLCB0YXNrVHlwZSwg
dHJhbnNhY3Rpb24pKSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFO
U0FDVElPTl9JTkFDVElWRV9FUlI7CisgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRh
YmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9BQk9SVF9FUlIsICIi
KSk7CiAgICAgfQogfQogCkBAIC01MzYsMTMgKzUzNiwxMyBAQCB2b2lkIElEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGw6Om9wZW5DdXJzb3JJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
UGFzcwogICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKGN1cnNvciwgY3Vyc29yLT5rZXkoKSwgY3Vy
c29yLT5wcmltYXJ5S2V5KCksIGN1cnNvci0+dmFsdWUoKSk7CiB9CiAKLXZvaWQgSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbDo6Y291bnQoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsOjpjb3VudChQYXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgSURCX1RS
QUNFKCJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjb3VudCIpOwogICAgIFJlZlB0cjxJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEltcGw6OmZyb20odHJhbnNhY3Rpb25QdHIpOwogICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVk
dWxlVGFzaygKICAgICAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbDo6Y291bnRJbnRlcm5hbCwgdGhpcywgcmFuZ2UsIGNhbGxiYWNrcywgdHJhbnNh
Y3Rpb24pKSkKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05f
SU5BQ1RJVkVfRVJSOworICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJv
cjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfQUJPUlRfRVJSLCAiIikpOwogfQog
CiB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNvdW50SW50ZXJuYWwoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2Jq
ZWN0U3RvcmUsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdlLCBQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+
IHRyYW5zYWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJS
ZXF1ZXN0LmNwcAppbmRleCA1NGJjYmRlY2NlYjY1MWJjN2FjNWUxYjE1NTFlNDcyNDQ1NThkM2Fj
Li4wZjQ1ZmQ4NzY3MjUxNjk3YWQ4NWE0NTMzMGZiMTU3ZDEyNzJlMDYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcApAQCAtMjUxLDYgKzI1
MSwxMCBAQCBib29sIElEQlJlcXVlc3Q6OnNob3VsZEVucXVldWVFdmVudCgpIGNvbnN0CiB2b2lk
IElEQlJlcXVlc3Q6Om9uRXJyb3IoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPiBlcnJvcikK
IHsKICAgICBJREJfVFJBQ0UoIklEQlJlcXVlc3Q6Om9uRXJyb3IoKSIpOworICAgIC8vIEVycm9y
cyBzaWduYWxpbmcgY2xlYW51cCBmcm9tIGFib3J0ZWQgdHJhbnNhY3Rpb25zIG1heSBjb21lIHRo
cm91Z2ggYXN5bmNocm9ub3VzbHkuCisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBET05FICYmIGVy
cm9yLT5jb2RlKCkgPT0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9BQk9SVF9FUlIpCisgICAg
ICAgIHJldHVybjsKKwogICAgIGlmICghc2hvdWxkRW5xdWV1ZUV2ZW50KCkpCiAgICAgICAgIHJl
dHVybjsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165899</attachid>
            <date>2012-09-26 16:55:54 -0700</date>
            <delta_ts>2012-10-01 11:11:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93054-20120926165512.patch</filename>
            <type>text/plain</type>
            <size>31114</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5NTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGE0MGJmM2VjOWI4MDMw
NzZmZTcyMzA5YTcwZjFkNWRkYTUwMjliZC4uNzU1ZWE5NWEzOWZlNzBkZDBkMmNkMzA3MzgxNGIw
MmRmODBhZDg2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDEyLTA5LTI2ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBGaXJl
IGVycm9yIHJhdGhlciB0aGFuIHJhaXNpbmcgb24gcmVxdWVzdCBjcmVhdGlvbiBpZiB0cmFuc2Fj
dGlvbiBhYm9ydHMgYXN5bmNocm9ub3VzbHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05MzA1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFsbCBJREIgZGF0YSBvcGVyYXRpb25zIGFyZSBhc3luY2hyb25v
dXMsIHByb2R1Y2luZyBJREJSZXF1ZXN0IG9iamVjdHMuCisgICAgICAgIFRoaXMgd2FzIGltcGxl
bWVudGVkIGJ5IHBhc3NpbmcgYWxsIGRhdGEgZnJvbSB0aGUgZnJvbnQtZW5kIHRvIHRoZSBiYWNr
LWVuZAorICAgICAgICBzeW5jaHJvbm91c2x5LCBhbmQgc3luY2hyb25vdXNseSByZXR1cm5pbmcg
YW4gZXhjZXB0aW9uIGNvZGUgYmFjayBpZiB0aGUKKyAgICAgICAgcmVxdWVzdCB3YXMgaW52YWxp
ZC4gUHJldmlvdXMgY2hhbmdlcyBoYXZlIG1vdmVkIHRoaXMgdGVzdGluZyB0byB0aGUgZnJvbnQt
ZW5kCisgICAgICAgIGV4Y2VwdCBmb3IgdGhlIGNhc2Ugb2YgdGhlIGJhY2stZW5kIHRyYW5zYWN0
aW9uIGhhdmluZyBhc3luY2hyb25vdXNseSBhYm9ydGVkCisgICAgICAgIGluIHRoZSBtZWFuIHRp
bWUuCisKKyAgICAgICAgVG8gZWxpbWluYXRlIHRoYXQgY2FzZSwgd2hpY2ggd291bGQgYWxsb3cg
ZnJvbnQtZW5kIHRvIGJhY2stZW5kIGNvbW11bmljYXRpb24KKyAgICAgICAgdG8gYmUgYXN5bmNo
cm9ub3VzIChpbiBtdWx0aS1wcm9jZXNzIHBvcnRzKSwgY2hhbmdlIGZyb20gcmV0dXJuaW5nIGFu
IGV4Y2VwdGlvbgorICAgICAgICBjb2RlIHRvIHJlbHlpbmcgb24gdGhlIGZyb250LWVuZCB0byBh
Ym9ydCB0aGUgcmVxdWVzdCB3aGVuIHRoZSBhYm9ydCBldmVudAorICAgICAgICBmaW5hbGx5IGFy
cml2ZXMuCisKKyAgICAgICAgVGhlIGJhY2stZW5kIGV4cGxpY2l0bHkgZmlyZXMgYW4gZXJyb3Ig
Y2FsbGJhY2sgYXMgd2VsbCwgYXMgaW50ZXJtZWRpYXRlIGxheWVycworICAgICAgICBtYXkgcmVs
eSBvbiB0aGlzIHRvIHN0b3AgdHJhY2tpbmcgdGhlIHBlbmRpbmcgY2FsbGJhY2suCisKKyAgICAg
ICAgTm8gbmV3IFdlYktpdCB0ZXN0cyAtIGNoYW5nZSBpcyBub3Qgb2JzZXJ2YWJsZSBpbiBzaW5n
bGUtcHJvY2VzcyBwb3J0cy4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OmFkdmFuY2UpOiBCYWNrIGVuZCBz
aG91bGQgbmV2ZXIgZmFpbCBhIHJlcXVlc3QuCisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6
OmNvbnRpbnVlRnVuY3Rpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6
ZGVsZXRlRnVuY3Rpb24pOiBEaXR0bywgYW5kIGFsc28gbW92ZSAiaXMga2V5IGN1cnNvciIgdGVz
dAorICAgICAgICBoZXJlIGZyb20gYmFjay1lbmQuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29y
QmFja2VuZEltcGw6OmNvbnRpbnVlRnVuY3Rpb24pOiBDaGFuZ2UgZnJvbSBFQyB0byBmaXJpbmcg
ZXJyb3IuCisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6YWR2YW5jZSk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OmRlbGV0ZUZ1
bmN0aW9uKTogRGl0dG8sIGFuZCByZW1vdmUgdGVzdCBtb3ZlZCB0byBGRS4KKyAgICAgICAgKFdl
YkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRjaENvbnRpbnVlKTogRGl0dG8uCisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCSW5kZXg6Om9wZW5DdXJzb3IpOiBCYWNrIGVuZCBzaG91bGQgbmV2ZXIgZmFpbCBhIHJl
cXVlc3QuCisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6Y291bnQpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OklEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpJREJJbmRleDo6Z2V0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJREJJbmRl
eDo6Z2V0S2V5KTogRGl0dG8uCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhC
YWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJbXBsOjpv
cGVuQ3Vyc29yKTogQ2hhbmdlIGZyb20gRUMgdG8gZmlyaW5nIGVycm9yLgorICAgICAgICAoV2Vi
Q29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6b3BlbktleUN1cnNvcik6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6Y291bnQpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6OmdldCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6Z2V0S2V5KTogRGl0dG8uCisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
T2JqZWN0U3RvcmU6OmdldCk6IEJhY2sgZW5kIHNob3VsZCBuZXZlciBmYWlsIGEgcmVxdWVzdC4K
KyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpwdXQpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbik6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmNsZWFyKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNv
cik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmNvdW50KTogRGl0
dG8uCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpnZXQp
OiBDaGFuZ2UgZnJvbSBFQyB0byBmaXJpbmcgZXJyb3IuCisgICAgICAgIChXZWJDb3JlOjpJREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsOjpwdXRXaXRoSW5kZXhLZXlzKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6
OmRlbGV0ZUZ1bmN0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsOjpjbGVhcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbDo6b3BlbkN1cnNvcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y291bnQpOiBEaXR0by4KKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVl
c3Q6Om9uRXJyb3IpOiBJZ25vcmUgYWJvcnQgc2VudCBieSBiYWNrLWVuZCBpZiBhYm9ydGVkIGFs
cmVhZHkuCisKIDIwMTItMDktMjQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5j
b20+CiAKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyMzUxOTA2PiBIYXZlIER1bXBSZW5kZXJU
cmVlIGFuZCBXZWJLaXRUZXN0UnVubmVyIGNyYXNoIGxvZ3Mgc2hvdyB3aGljaCB0ZXN0IGNyYXNo
ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCmlu
ZGV4IDM0ZmIwZmYyOGZlMDVkNDg1Zjc2YzhjZjBiOWE5OGM3ZGY1YWVmMjAuLjQxYzM4ODdmY2Y1
NGRiYTQ4OGQ0N2QwODdlNTVmZDFiOTAxZmM1ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcApAQCAtMTc2LDggKzE3Niw3IEBAIHZvaWQgSURC
Q3Vyc29yOjphZHZhbmNlKHVuc2lnbmVkIGxvbmcgY291bnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ICAgIG1fcmVxdWVzdC0+c2V0UGVuZGluZ0N1cnNvcih0aGlzKTsKICAgICBtX2dvdFZhbHVlID0g
ZmFsc2U7CiAgICAgbV9iYWNrZW5kLT5hZHZhbmNlKGNvdW50LCBtX3JlcXVlc3QsIGVjKTsKLSAg
ICBpZiAoZWMpCi0gICAgICAgIG1fcmVxdWVzdC0+bWFya0Vhcmx5RGVhdGgoKTsKKyAgICBBU1NF
UlQoIWVjKTsKIH0KIAogdm9pZCBJREJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0
cjxJREJLZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0yMTgsOCArMjE3LDcgQEAgdm9p
ZCBJREJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiAgICAgbV9yZXF1ZXN0LT5zZXRQZW5kaW5nQ3Vyc29yKHRoaXMpOwog
ICAgIG1fZ290VmFsdWUgPSBmYWxzZTsKICAgICBtX2JhY2tlbmQtPmNvbnRpbnVlRnVuY3Rpb24o
a2V5LCBtX3JlcXVlc3QsIGVjKTsKLSAgICBpZiAoZWMpCi0gICAgICAgIG1fcmVxdWVzdC0+bWFy
a0Vhcmx5RGVhdGgoKTsKKyAgICBBU1NFUlQoIWVjKTsKIH0KIAogUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBJREJDdXJzb3I6OmRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMjM0LDE2ICsyMzIsMTMgQEAgUGFzc1JlZlB0
cjxJREJSZXF1ZXN0PiBJREJDdXJzb3I6OmRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgaWYgKCFtX2dv
dFZhbHVlKSB7CisgICAgaWYgKCFtX2dvdFZhbHVlIHx8IGlzS2V5Q3Vyc29yKCkpIHsKICAgICAg
ICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOwogICAg
ICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJ
REJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNh
Y3Rpb24uZ2V0KCkpOwogICAgIG1fYmFja2VuZC0+ZGVsZXRlRnVuY3Rpb24ocmVxdWVzdCwgZWMp
OwotICAgIGlmIChlYykgewotICAgICAgICByZXF1ZXN0LT5tYXJrRWFybHlEZWF0aCgpOwotICAg
ICAgICByZXR1cm4gMDsKLSAgICB9CisgICAgQVNTRVJUKCFlYyk7CiAgICAgcmV0dXJuIHJlcXVl
c3QucmVsZWFzZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAKaW5kZXggODMwMGMwNTQyMTBiODVm
ZWJjYmViY2E5YmI1MDBkMTJkZmQyYzQ5MS4uZjFiZGNiZjQ1YTk4YTk3NmFjMDQ4NDE0M2YzNTc2
NDFmZGY0NTc1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCQ3Vyc29yQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcApAQCAtNjMsMjAgKzYzLDIyIEBAIElEQkN1
cnNvckJhY2tlbmRJbXBsOjp+SURCQ3Vyc29yQmFja2VuZEltcGwoKQogICAgIG1fb2JqZWN0U3Rv
cmUuY2xlYXIoKTsKIH0KIAotdm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y29udGludWVGdW5j
dGlvbihQYXNzUmVmUHRyPElEQktleT4gcHJwS2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4g
cHJwQ2FsbGJhY2tzLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgSURCQ3Vyc29yQmFja2VuZElt
cGw6OmNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+IHBycEtleSwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgSURC
X1RSQUNFKCJJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y29udGludWUiKTsKKyAgICBSZWZQdHI8SURC
Q2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7CiAKLSAgICBpZiAoIW1fdHJhbnNh
Y3Rpb24tPnNjaGVkdWxlVGFzayhtX3Rhc2tUeXBlLCBjcmVhdGVDYWxsYmFja1Rhc2soJklEQkN1
cnNvckJhY2tlbmRJbXBsOjpjb250aW51ZUZ1bmN0aW9uSW50ZXJuYWwsIHRoaXMsIHBycEtleSwg
cHJwQ2FsbGJhY2tzKSkpCi0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5T
QUNUSU9OX0lOQUNUSVZFX0VSUjsKKyAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFz
ayhtX3Rhc2tUeXBlLCBjcmVhdGVDYWxsYmFja1Rhc2soJklEQkN1cnNvckJhY2tlbmRJbXBsOjpj
b250aW51ZUZ1bmN0aW9uSW50ZXJuYWwsIHRoaXMsIHBycEtleSwgY2FsbGJhY2tzKSkpCisgICAg
ICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJh
c2VFeGNlcHRpb246OklEQl9BQk9SVF9FUlIsICJUaGUgdHJhbnNhY3Rpb24gd2FzIGFib3J0ZWQs
IHNvIHRoZSByZXF1ZXN0IGNhbm5vdCBiZSBmdWxmaWxsZWQuIikpOwogfQogCi12b2lkIElEQkN1
cnNvckJhY2tlbmRJbXBsOjphZHZhbmNlKHVuc2lnbmVkIGxvbmcgY291bnQsIFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBJREJD
dXJzb3JCYWNrZW5kSW1wbDo6YWR2YW5jZSh1bnNpZ25lZCBsb25nIGNvdW50LCBQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBJREJf
VFJBQ0UoIklEQkN1cnNvckJhY2tlbmRJbXBsOjphZHZhbmNlIik7CisgICAgUmVmUHRyPElEQkNh
bGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOwogCi0gICAgaWYgKCFtX3RyYW5zYWN0
aW9uLT5zY2hlZHVsZVRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJDdXJzb3JCYWNrZW5kSW1w
bDo6YWR2YW5jZUludGVybmFsLCB0aGlzLCBjb3VudCwgcHJwQ2FsbGJhY2tzKSkpCi0gICAgICAg
IGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKKyAg
ICBpZiAoIW1fdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJklE
QkN1cnNvckJhY2tlbmRJbXBsOjphZHZhbmNlSW50ZXJuYWwsIHRoaXMsIGNvdW50LCBjYWxsYmFj
a3MpKSkKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0
ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0FCT1JUX0VSUiwgIlRoZSB0cmFuc2FjdGlvbiB3
YXMgYWJvcnRlZCwgc28gdGhlIHJlcXVlc3QgY2Fubm90IGJlIGZ1bGZpbGxlZC4iKSk7CiB9CiAK
IHZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OmFkdmFuY2VJbnRlcm5hbChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW1wbD4gcHJwQ3Vyc29yLCB1
bnNpZ25lZCBsb25nIGNvdW50LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQpA
QCAtMTA3LDI3ICsxMDksMjUgQEAgdm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y29udGludWVG
dW5jdGlvbkludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXMKICAgICBjYWxsYmFj
a3MtPm9uU3VjY2VzcyhjdXJzb3ItPmtleSgpLCBjdXJzb3ItPnByaW1hcnlLZXkoKSwgY3Vyc29y
LT52YWx1ZSgpKTsKIH0KIAotdm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6ZGVsZXRlRnVuY3Rp
b24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgRXhjZXB0aW9uQ29kZSYg
ZWMpCit2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBJREJf
VFJBQ0UoIklEQkN1cnNvckJhY2tlbmRJbXBsOjpkZWxldGUiKTsKICAgICBBU1NFUlQobV90cmFu
c2FjdGlvbi0+bW9kZSgpICE9IElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFkpOwogCi0gICAgaWYg
KCFtX2N1cnNvciB8fCBtX2N1cnNvclR5cGUgPT0gSW5kZXhLZXlDdXJzb3IpIHsKLSAgICAgICAg
ZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgUmVmUHRy
PElEQktleVJhbmdlPiBrZXlSYW5nZSA9IElEQktleVJhbmdlOjpvbmx5KG1fY3Vyc29yLT5wcmlt
YXJ5S2V5KCksIGVjKTsKICAgICBBU1NFUlQoIWVjKTsKIAogICAgIG1fb2JqZWN0U3RvcmUtPmRl
bGV0ZUZ1bmN0aW9uKGtleVJhbmdlLnJlbGVhc2UoKSwgcHJwQ2FsbGJhY2tzLCBtX3RyYW5zYWN0
aW9uLmdldCgpLCBlYyk7CisgICAgQVNTRVJUKCFlYyk7CiB9CiAKLXZvaWQgSURCQ3Vyc29yQmFj
a2VuZEltcGw6OnByZWZldGNoQ29udGludWUoaW50IG51bWJlclRvRmV0Y2gsIFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBJREJD
dXJzb3JCYWNrZW5kSW1wbDo6cHJlZmV0Y2hDb250aW51ZShpbnQgbnVtYmVyVG9GZXRjaCwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgRXhjZXB0aW9uQ29kZSYpCiB7CiAg
ICAgSURCX1RSQUNFKCJJREJDdXJzb3JCYWNrZW5kSW1wbDo6cHJlZmV0Y2hDb250aW51ZSIpOwot
ICAgIGlmICghbV90cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKG1fdGFza1R5cGUsIGNyZWF0ZUNh
bGxiYWNrVGFzaygmSURCQ3Vyc29yQmFja2VuZEltcGw6OnByZWZldGNoQ29udGludWVJbnRlcm5h
bCwgdGhpcywgbnVtYmVyVG9GZXRjaCwgcHJwQ2FsbGJhY2tzKSkpCi0gICAgICAgIGVjID0gSURC
RGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKKyAgICBSZWZQdHI8
SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7CisgICAgaWYgKCFtX3RyYW5z
YWN0aW9uLT5zY2hlZHVsZVRhc2sobV90YXNrVHlwZSwgY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJD
dXJzb3JCYWNrZW5kSW1wbDo6cHJlZmV0Y2hDb250aW51ZUludGVybmFsLCB0aGlzLCBudW1iZXJU
b0ZldGNoLCBjYWxsYmFja3MpKSkKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFi
YXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0FCT1JUX0VSUiwgIlRo
ZSB0cmFuc2FjdGlvbiB3YXMgYWJvcnRlZCwgc28gdGhlIHJlcXVlc3QgY2Fubm90IGJlIGZ1bGZp
bGxlZC4iKSk7CiB9CiAKIHZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OnByZWZldGNoQ29udGlu
dWVJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJDdXJzb3JC
YWNrZW5kSW1wbD4gcHJwQ3Vyc29yLCBpbnQgbnVtYmVyVG9GZXRjaCwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+IGNhbGxiYWNrcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkluZGV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkluZGV4LmNwcAppbmRleCBlMzdlZjBiOGZmZmIyYTNkNTUxNTY5ODhiYmVkYzQzYTYzYmY2
NTg5Li4wN2Y4ZTQ5NWY0ODJlNjFkN2IwNzZmNWViMjAzOWEwYmQ2YTQ3NTdjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwCkBAIC03NywxMCArNzcs
NyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuQ3Vyc29yKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhcwogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1
ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBt
X3RyYW5zYWN0aW9uLmdldCgpKTsKICAgICByZXF1ZXN0LT5zZXRDdXJzb3JEZXRhaWxzKElEQkN1
cnNvckJhY2tlbmRJbnRlcmZhY2U6OkluZGV4Q3Vyc29yLCBkaXJlY3Rpb24pOwogICAgIG1fYmFj
a2VuZC0+b3BlbkN1cnNvcihrZXlSYW5nZSwgZGlyZWN0aW9uLCByZXF1ZXN0LCBtX3RyYW5zYWN0
aW9uLT5iYWNrZW5kKCksIGVjKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgcmVxdWVzdC0+bWFy
a0Vhcmx5RGVhdGgoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQorICAgIEFTU0VSVCghZWMp
OwogICAgIHJldHVybiByZXF1ZXN0OwogfQogCkBAIC0xMjcsMTAgKzEyNCw3IEBAIFBhc3NSZWZQ
dHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIFBhc3NSZWZQCiAgICAgfQogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0g
SURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5z
YWN0aW9uLmdldCgpKTsKICAgICBtX2JhY2tlbmQtPmNvdW50KGtleVJhbmdlLCByZXF1ZXN0LCBt
X3RyYW5zYWN0aW9uLT5iYWNrZW5kKCksIGVjKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgcmVx
dWVzdC0+bWFya0Vhcmx5RGVhdGgoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQorICAgIEFT
U0VSVCghZWMpOwogICAgIHJldHVybiByZXF1ZXN0OwogfQogCkBAIC0xNjEsMTAgKzE1NSw3IEBA
IFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5LZXlDdXJzb3IoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwKICAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9
IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFu
c2FjdGlvbi5nZXQoKSk7CiAgICAgcmVxdWVzdC0+c2V0Q3Vyc29yRGV0YWlscyhJREJDdXJzb3JC
YWNrZW5kSW50ZXJmYWNlOjpJbmRleEtleUN1cnNvciwgZGlyZWN0aW9uKTsKICAgICBtX2JhY2tl
bmQtPm9wZW5LZXlDdXJzb3Ioa2V5UmFuZ2UsIGRpcmVjdGlvbiwgcmVxdWVzdCwgbV90cmFuc2Fj
dGlvbi0+YmFja2VuZCgpLCBlYyk7Ci0gICAgaWYgKGVjKSB7Ci0gICAgICAgIHJlcXVlc3QtPm1h
cmtFYXJseURlYXRoKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KKyAgICBBU1NFUlQoIWVj
KTsKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KIApAQCAtMjI1LDEwICsyMTYsNyBAQCBQYXNzUmVm
UHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgUGFzc1JlZlB0cgogCiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJS
ZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rp
b24uZ2V0KCkpOwogICAgIG1fYmFja2VuZC0+Z2V0KGtleVJhbmdlLCByZXF1ZXN0LCBtX3RyYW5z
YWN0aW9uLT5iYWNrZW5kKCksIGVjKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgcmVxdWVzdC0+
bWFya0Vhcmx5RGVhdGgoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQorICAgIEFTU0VSVCgh
ZWMpOwogICAgIHJldHVybiByZXF1ZXN0OwogfQogCkBAIC0yNjAsMTAgKzI0OCw3IEBAIFBhc3NS
ZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmdldEtleShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBQYXNzUmVmCiAKICAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElE
QlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2Fj
dGlvbi5nZXQoKSk7CiAgICAgbV9iYWNrZW5kLT5nZXRLZXkoa2V5UmFuZ2UsIHJlcXVlc3QsIG1f
dHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMpOwotICAgIGlmIChlYykgewotICAgICAgICByZXF1
ZXN0LT5tYXJrRWFybHlEZWF0aCgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9CisgICAgQVNT
RVJUKCFlYyk7CiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKaW5kZXgg
YTJiODViNWU1YzQ3MTcxNGFmZDIwYjI5MTY4M2Y4NTAyZTViZGJkYy4uOTg1MTE2N2QzNTQ0Zjky
M2FmMzNmNTIyOGY3YzM1NzdmYmNiZTA2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKQEAgLTEwMyw3ICsx
MDMsNyBAQCB2b2lkIElEQkluZGV4QmFja2VuZEltcGw6Om9wZW5DdXJzb3JJbnRlcm5hbChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cgogICAgIGNhbGxiYWNrcy0+b25TdWNjZXNz
KGN1cnNvciwgY3Vyc29yLT5rZXkoKSwgY3Vyc29yLT5wcmltYXJ5S2V5KCksIGN1cnNvci0+dmFs
dWUoKSk7CiB9CiAKLXZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6b3BlbkN1cnNvcihQYXNzUmVm
UHRyPElEQktleVJhbmdlPiBwcnBLZXlSYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgSURC
SW5kZXhCYWNrZW5kSW1wbDo6b3BlbkN1cnNvcihQYXNzUmVmUHRyPElEQktleVJhbmdlPiBwcnBL
ZXlSYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0
aW9uUHRyLCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBJREJfVFJBQ0UoIklEQkluZGV4QmFja2Vu
ZEltcGw6Om9wZW5DdXJzb3IiKTsKICAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gaW5k
ZXggPSB0aGlzOwpAQCAtMTEyLDEwICsxMTIsMTAgQEAgdm9pZCBJREJJbmRleEJhY2tlbmRJbXBs
OjpvcGVuQ3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHBycEtleVJhbmdlLCB1bnNpZ24K
ICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uUHRyKTsKICAgICBpZiAoIXRy
YW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soCiAgICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2so
Jm9wZW5DdXJzb3JJbnRlcm5hbCwgaW5kZXgsIGtleVJhbmdlLCBkaXJlY3Rpb24sIElEQkN1cnNv
ckJhY2tlbmRJbnRlcmZhY2U6OkluZGV4Q3Vyc29yLCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uKSkp
Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZF
X0VSUjsKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0
ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0FCT1JUX0VSUiwgIlRoZSB0cmFuc2FjdGlvbiB3
YXMgYWJvcnRlZCwgc28gdGhlIHJlcXVlc3QgY2Fubm90IGJlIGZ1bGZpbGxlZC4iKSk7CiB9CiAK
LXZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6b3BlbktleUN1cnNvcihQYXNzUmVmUHRyPElEQktl
eVJhbmdlPiBwcnBLZXlSYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgSURCSW5kZXhCYWNr
ZW5kSW1wbDo6b3BlbktleUN1cnNvcihQYXNzUmVmUHRyPElEQktleVJhbmdlPiBwcnBLZXlSYW5n
ZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJw
Q2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRy
LCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBJREJfVFJBQ0UoIklEQkluZGV4QmFja2VuZEltcGw6
Om9wZW5LZXlDdXJzb3IiKTsKICAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gaW5kZXgg
PSB0aGlzOwpAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6b3Bl
bktleUN1cnNvcihQYXNzUmVmUHRyPElEQktleVJhbmdlPiBwcnBLZXlSYW5nZSwgdW5zCiAgICAg
UmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uID0gSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbDo6ZnJvbSh0cmFuc2FjdGlvblB0cik7CiAgICAgaWYgKCF0cmFuc2Fj
dGlvbi0+c2NoZWR1bGVUYXNrKAogICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZvcGVu
Q3Vyc29ySW50ZXJuYWwsIGluZGV4LCBrZXlSYW5nZSwgZGlyZWN0aW9uLCBJREJDdXJzb3JCYWNr
ZW5kSW50ZXJmYWNlOjpJbmRleEtleUN1cnNvciwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbikpKQot
ICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9F
UlI7CisgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUo
SURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9BQk9SVF9FUlIsICJUaGUgdHJhbnNhY3Rpb24gd2Fz
IGFib3J0ZWQsIHNvIHRoZSByZXF1ZXN0IGNhbm5vdCBiZSBmdWxmaWxsZWQuIikpOwogfQogCiB2
b2lkIElEQkluZGV4QmFja2VuZEltcGw6OmNvdW50SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gaW5kZXgsIFBhc3NSZWZQdHI8
SURCS2V5UmFuZ2U+IHJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQ
YXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uKQpAQCAtMTQ1
LDEzICsxNDUsMTMgQEAgdm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpjb3VudEludGVybmFsKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkkKICAgICBjYWxsYmFja3MtPm9u
U3VjY2VzcyhTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om51bWJlclZhbHVlKGNvdW50KSk7CiB9CiAK
LXZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6Y291bnQoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4g
cmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9p
ZCBJREJJbmRleEJhY2tlbmRJbXBsOjpjb3VudChQYXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5n
ZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgSURC
X1RSQUNFKCJJREJJbmRleEJhY2tlbmRJbXBsOjpjb3VudCIpOwogICAgIFJlZlB0cjxJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGw6OmZyb20odHJhbnNhY3Rpb25QdHIpOwogICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxl
VGFzaygKICAgICAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmY291bnRJbnRlcm5hbCwgdGhp
cywgcmFuZ2UsIGNhbGxiYWNrcywgdHJhbnNhY3Rpb24pKSkKLSAgICAgICAgZWMgPSBJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSOworICAgICAgICBjYWxsYmFj
a3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpJREJfQUJPUlRfRVJSLCAiVGhlIHRyYW5zYWN0aW9uIHdhcyBhYm9ydGVkLCBzbyB0aGUgcmVx
dWVzdCBjYW5ub3QgYmUgZnVsZmlsbGVkLiIpKTsKIH0KIAogdm9pZCBJREJJbmRleEJhY2tlbmRJ
bXBsOjpnZXRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJJ
bmRleEJhY2tlbmRJbXBsPiBpbmRleCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2Us
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24pCkBAIC0yMTIsNyArMjEyLDcgQEAgdm9pZCBJ
REJJbmRleEJhY2tlbmRJbXBsOjpnZXRLZXlJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBQYXNzUmUKIH0KIAogCi12b2lkIElEQkluZGV4QmFja2VuZEltcGw6OmdldChQ
YXNzUmVmUHRyPElEQktleVJhbmdlPiBwcnBLZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2Fj
dGlvblB0ciwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIElEQkluZGV4QmFja2VuZEltcGw6Omdl
dChQYXNzUmVmUHRyPElEQktleVJhbmdlPiBwcnBLZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFu
c2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgSURCX1RSQUNFKCJJREJJbmRleEJh
Y2tlbmRJbXBsOjpnZXQiKTsKICAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gaW5kZXgg
PSB0aGlzOwpAQCAtMjIwLDEwICsyMjAsMTAgQEAgdm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpn
ZXQoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcHJwS2V5UmFuZ2UsIFBhc3NSZWZQdHI8SUQKICAg
ICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7CiAgICAgUmVm
UHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uID0gSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbDo6ZnJvbSh0cmFuc2FjdGlvblB0cik7CiAgICAgaWYgKCF0cmFuc2FjdGlv
bi0+c2NoZWR1bGVUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmZ2V0SW50ZXJuYWwsIGluZGV4LCBr
ZXlSYW5nZSwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbikpKQotICAgICAgICBlYyA9IElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7CisgICAgICAgIGNhbGxiYWNr
cy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246
OklEQl9BQk9SVF9FUlIsICJUaGUgdHJhbnNhY3Rpb24gd2FzIGFib3J0ZWQsIHNvIHRoZSByZXF1
ZXN0IGNhbm5vdCBiZSBmdWxmaWxsZWQuIikpOwogfQogCi12b2lkIElEQkluZGV4QmFja2VuZElt
cGw6OmdldEtleShQYXNzUmVmUHRyPElEQktleVJhbmdlPiBwcnBLZXlSYW5nZSwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIElEQkluZGV4QmFj
a2VuZEltcGw6OmdldEtleShQYXNzUmVmUHRyPElEQktleVJhbmdlPiBwcnBLZXlSYW5nZSwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgSURCX1RS
QUNFKCJJREJJbmRleEJhY2tlbmRJbXBsOjpnZXRLZXkiKTsKICAgICBSZWZQdHI8SURCSW5kZXhC
YWNrZW5kSW1wbD4gaW5kZXggPSB0aGlzOwpAQCAtMjMyLDcgKzIzMiw3IEBAIHZvaWQgSURCSW5k
ZXhCYWNrZW5kSW1wbDo6Z2V0S2V5KFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHBycEtleVJhbmdl
LCBQYXNzUmVmUHRyCiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5z
YWN0aW9uID0gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6ZnJvbSh0cmFuc2FjdGlvblB0cik7
CiAgICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKAogICAgICAgICAgICAgY3JlYXRl
Q2FsbGJhY2tUYXNrKCZnZXRLZXlJbnRlcm5hbCwgaW5kZXgsIGtleVJhbmdlLCBjYWxsYmFja3Ms
IHRyYW5zYWN0aW9uKSkpCi0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5T
QUNUSU9OX0lOQUNUSVZFX0VSUjsKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFi
YXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0FCT1JUX0VSUiwgIlRo
ZSB0cmFuc2FjdGlvbiB3YXMgYWJvcnRlZCwgc28gdGhlIHJlcXVlc3QgY2Fubm90IGJlIGZ1bGZp
bGxlZC4iKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAppbmRleCBjYzZjMjhl
ZjI4NGVmZDczZmE2NTMxY2YwZDVhOTkwY2UzYTk3YzIyLi40Y2JlNjNkMTE1ZTBhYTA0NGI2MGY5
NGU1NGJmZWVhZGM5NGU3YmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCkBAIC04OCwxMCArODgsNyBAQCBQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgUGFzcwogICAgIH0KICAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElE
QlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2Fj
dGlvbi5nZXQoKSk7CiAgICAgbV9iYWNrZW5kLT5nZXQoa2V5UmFuZ2UsIHJlcXVlc3QsIG1fdHJh
bnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMpOwotICAgIGlmIChlYykgewotICAgICAgICByZXF1ZXN0
LT5tYXJrRWFybHlEZWF0aCgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9CisgICAgQVNTRVJU
KCFlYyk7CiAgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOwogfQogCkBAIC0yMTksMTAgKzIx
Niw3IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OnB1dChJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U6OlB1dE1vCiAKICAgICBSZWZQdHI8SURCUmVxdWVzdD4g
cmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBzb3VyY2UsIG1fdHJhbnNhY3Rp
b24uZ2V0KCkpOwogICAgIG1fYmFja2VuZC0+cHV0V2l0aEluZGV4S2V5cyhzZXJpYWxpemVkVmFs
dWUucmVsZWFzZSgpLCBrZXkucmVsZWFzZSgpLCBwdXRNb2RlLCByZXF1ZXN0LCBtX3RyYW5zYWN0
aW9uLT5iYWNrZW5kKCksIGluZGV4TmFtZXMsIGluZGV4S2V5cywgZWMpOwotICAgIGlmIChlYykg
ewotICAgICAgICByZXF1ZXN0LT5tYXJrRWFybHlEZWF0aCgpOwotICAgICAgICByZXR1cm4gMDsK
LSAgICB9CisgICAgQVNTRVJUKCFlYyk7CiAgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOwog
fQogCkBAIC0yNDgsMTAgKzI0Miw3IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0
U3RvcmU6OmRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvCiAKICAgICBS
ZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJ
REJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgbV9iYWNrZW5k
LT5kZWxldGVGdW5jdGlvbihrZXlSYW5nZSwgcmVxdWVzdCwgbV90cmFuc2FjdGlvbi0+YmFja2Vu
ZCgpLCBlYyk7Ci0gICAgaWYgKGVjKSB7Ci0gICAgICAgIHJlcXVlc3QtPm1hcmtFYXJseURlYXRo
KCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KKyAgICBBU1NFUlQoIWVjKTsKICAgICByZXR1
cm4gcmVxdWVzdC5yZWxlYXNlKCk7CiB9CiAKQEAgLTI4MiwxMCArMjczLDcgQEAgUGFzc1JlZlB0
cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Y2xlYXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgRXgKIAogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVx
dWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0aW9u
LmdldCgpKTsKICAgICBtX2JhY2tlbmQtPmNsZWFyKHJlcXVlc3QsIG1fdHJhbnNhY3Rpb24tPmJh
Y2tlbmQoKSwgZWMpOwotICAgIGlmIChlYykgewotICAgICAgICByZXF1ZXN0LT5tYXJrRWFybHlE
ZWF0aCgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9CisgICAgQVNTRVJUKCFlYyk7CiAgICAg
cmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOwogfQogCkBAIC01MTQsMTAgKzUwMiw3IEBAIFBhc3NS
ZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4CiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJS
ZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rp
b24uZ2V0KCkpOwogICAgIHJlcXVlc3QtPnNldEN1cnNvckRldGFpbHMoSURCQ3Vyc29yQmFja2Vu
ZEludGVyZmFjZTo6T2JqZWN0U3RvcmVDdXJzb3IsIGRpcmVjdGlvbik7CiAgICAgbV9iYWNrZW5k
LT5vcGVuQ3Vyc29yKHJhbmdlLCBkaXJlY3Rpb24sIHJlcXVlc3QsIHRhc2tUeXBlLCBtX3RyYW5z
YWN0aW9uLT5iYWNrZW5kKCksIGVjKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgcmVxdWVzdC0+
bWFya0Vhcmx5RGVhdGgoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQorICAgIEFTU0VSVCgh
ZWMpOwogICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKIH0KIApAQCAtNTY0LDEwICs1NDks
NyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpjb3VudChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYQogICAgIH0KICAgICBSZWZQdHI8SURCUmVxdWVz
dD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0
aGlzKSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgbV9iYWNrZW5kLT5jb3VudChyYW5nZSwg
cmVxdWVzdCwgbV90cmFuc2FjdGlvbi0+YmFja2VuZCgpLCBlYyk7Ci0gICAgaWYgKGVjKSB7Ci0g
ICAgICAgIHJlcXVlc3QtPm1hcmtFYXJseURlYXRoKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAg
IH0KKyAgICBBU1NFUlQoIWVjKTsKICAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKaW5kZXggODA1YjcxNTI0MDYwMTlhZmY4MGMwZTBh
OWI4MDgyNWQwZWYwNWFjZC4uYmZlNzU2ZWI0OWFiMWYyYTVkNThmZjc3ZjJhYWQxMTIzMzRjOGVk
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgSURCT2Jq
ZWN0U3RvcmVNZXRhZGF0YSBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjptZXRhZGF0YSgpIGNv
bnN0CiAgICAgcmV0dXJuIG1ldGFkYXRhOwogfQogCi12b2lkIElEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGw6OmdldChQYXNzUmVmUHRyPElEQktleVJhbmdlPiBwcnBLZXlSYW5nZSwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIElEQk9iamVjdFN0
b3JlQmFja2VuZEltcGw6OmdldChQYXNzUmVmUHRyPElEQktleVJhbmdlPiBwcnBLZXlSYW5nZSwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgSURC
X1RSQUNFKCJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpnZXQiKTsKICAgICBSZWZQdHI8SURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUgPSB0aGlzOwpAQCAtODcsNyArODcs
NyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmdldChQYXNzUmVmUHRyPElEQktl
eVJhbmdlPiBwcnBLZXlSYW5nZSwgUGFzc1JlZgogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmZyb20o
dHJhbnNhY3Rpb25QdHIpOwogICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzaygKICAg
ICAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6
Z2V0SW50ZXJuYWwsIG9iamVjdFN0b3JlLCBrZXlSYW5nZSwgY2FsbGJhY2tzLCB0cmFuc2FjdGlv
bikpKQotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFD
VElWRV9FUlI7CisgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpj
cmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9BQk9SVF9FUlIsICJUaGUgdHJhbnNhY3Rp
b24gd2FzIGFib3J0ZWQsIHNvIHRoZSByZXF1ZXN0IGNhbm5vdCBiZSBmdWxmaWxsZWQuIikpOwog
fQogCiB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmdldEludGVybmFsKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9i
amVjdFN0b3JlLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsPiB0cmFuc2FjdGlvbikKQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIElEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGw6OmdldEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVm
UHRyPAogICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3Jl
YXRlRnJvbVdpcmUod2lyZURhdGEpKTsKIH0KIAotdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsOjpwdXRXaXRoSW5kZXhLZXlzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBw
cnBWYWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+IHBycEtleSwgUHV0TW9kZSBwdXRNb2RlLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgaW5kZXhOYW1l
cywgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mIGluZGV4S2V5cywgRXhjZXB0aW9uQ29kZSYgZWMp
Cit2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dFdpdGhJbmRleEtleXMoUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHBycFZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4g
cHJwS2V5LCBQdXRNb2RlIHB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxs
YmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBpbmRleE5hbWVzLCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzPiYg
aW5kZXhLZXlzLCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0
b3JlQmFja2VuZEltcGw6OnB1dFdpdGhJbmRleEtleXMiKTsKIApAQCAtMTM4LDcgKzEzOCw3IEBA
IHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0V2l0aEluZGV4S2V5cyhQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1CiAKICAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVs
ZVRhc2soCiAgICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJklEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGw6OnB1dEludGVybmFsLCBvYmplY3RTdG9yZSwgdmFsdWUsIGtleSwgcHV0TW9kZSwg
Y2FsbGJhY2tzLCB0cmFuc2FjdGlvbiwgbmV3SW5kZXhOYW1lcy5yZWxlYXNlKCksIG5ld0luZGV4
S2V5cy5yZWxlYXNlKCkpKSkKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VFJB
TlNBQ1RJT05fSU5BQ1RJVkVfRVJSOworICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0
YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfQUJPUlRfRVJSLCAi
VGhlIHRyYW5zYWN0aW9uIHdhcyBhYm9ydGVkLCBzbyB0aGUgcmVxdWVzdCBjYW5ub3QgYmUgZnVs
ZmlsbGVkLiIpKTsKIH0KIAogbmFtZXNwYWNlIHsKQEAgLTM2OCw3ICszNjgsNyBAQCB2b2lkIElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBQYXNzUmVmUHRyPAogICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKGtleS5yZWxlYXNlKCkp
OwogfQogCi12b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUZ1bmN0aW9uKFBh
c3NSZWZQdHI8SURCS2V5UmFuZ2U+IHBycEtleVJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0
aW9uUHRyLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bDo6ZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcHJwS2V5UmFuZ2UsIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmKQogewogICAgIElEQl9U
UkFDRSgiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlIik7CiAKQEAgLTM4MSw3ICsz
ODEsNyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUZ1bmN0aW9uKFBh
c3NSZWZQdHI8SURCS2V5UmFuZ2U+IHBycEtleVJhbgogCiAgICAgaWYgKCF0cmFuc2FjdGlvbi0+
c2NoZWR1bGVUYXNrKAogICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsOjpkZWxldGVJbnRlcm5hbCwgb2JqZWN0U3RvcmUsIGtleVJhbmdlLCBj
YWxsYmFja3MsIHRyYW5zYWN0aW9uKSkpCi0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRp
b246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9y
KElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0FCT1JU
X0VSUiwgIlRoZSB0cmFuc2FjdGlvbiB3YXMgYWJvcnRlZCwgc28gdGhlIHJlcXVlc3QgY2Fubm90
IGJlIGZ1bGZpbGxlZC4iKSk7CiB9CiAKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6
ZGVsZXRlSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+
IGtleVJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRy
PElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uKQpAQCAtNDEzLDcgKzQxMyw3
IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlSW50ZXJuYWwoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQCiAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjp1bmRlZmluZWRWYWx1ZSgpKTsKIH0KIAotdm9pZCBJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsOjpjbGVhcihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2Fs
bGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBF
eGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y2xlYXIo
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgSURC
X1RSQUNFKCJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjbGVhciIpOwogCkBAIC00MjUsNyAr
NDI1LDcgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjbGVhcihQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREIKIAogICAgIGlmICghdHJhbnNhY3Rpb24t
PnNjaGVkdWxlVGFzaygKICAgICAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbDo6Y2xlYXJJbnRlcm5hbCwgb2JqZWN0U3RvcmUsIGNhbGxiYWNrcywg
dHJhbnNhY3Rpb24pKSkKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VFJBTlNB
Q1RJT05fSU5BQ1RJVkVfRVJSOworICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJh
c2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfQUJPUlRfRVJSLCAiVGhl
IHRyYW5zYWN0aW9uIHdhcyBhYm9ydGVkLCBzbyB0aGUgcmVxdWVzdCBjYW5ub3QgYmUgZnVsZmls
bGVkLiIpKTsKIH0KIAogdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjbGVhckludGVy
bmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGw+IG9iamVjdFN0b3JlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tz
LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uKQpAQCAt
NTAzLDcgKzUwMyw3IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlSW5k
ZXhJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzCiAgICAgdHJhbnNhY3Rpb24t
PmRpZENvbXBsZXRlVGFza0V2ZW50cygpOwogfQogCi12b2lkIElEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGw6Om9wZW5DdXJzb3IoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcHJwUmFuZ2UsIElEQkN1
cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENh
bGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSB0YXNrVHlw
ZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0
aW9uQ29kZSYgZWMpCit2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Om9wZW5DdXJzb3Io
UGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcHJwUmFuZ2UsIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRp
cmVjdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSB0YXNrVHlwZSwgSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAg
SURCX1RSQUNFKCJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29yIik7CiAgICAg
UmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlID0gdGhpczsKQEAg
LTUxMiw3ICs1MTIsNyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Om9wZW5DdXJz
b3IoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcHJwUmFuZ2UsIElEQgogICAgIFJlZlB0cjxJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEltcGw6OmZyb20odHJhbnNhY3Rpb25QdHIpOwogICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVk
dWxlVGFzaygKICAgICAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbDo6b3BlbkN1cnNvckludGVybmFsLCBvYmplY3RTdG9yZSwgcmFuZ2UsIGRpcmVj
dGlvbiwgY2FsbGJhY2tzLCB0YXNrVHlwZSwgdHJhbnNhY3Rpb24pKSkgewotICAgICAgICBlYyA9
IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7CisgICAgICAg
IGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VF
eGNlcHRpb246OklEQl9BQk9SVF9FUlIsICJUaGUgdHJhbnNhY3Rpb24gd2FzIGFib3J0ZWQsIHNv
IHRoZSByZXF1ZXN0IGNhbm5vdCBiZSBmdWxmaWxsZWQuIikpOwogICAgIH0KIH0KIApAQCAtNTM2
LDEzICs1MzYsMTMgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29y
SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3MKICAgICBjYWxsYmFja3MtPm9u
U3VjY2VzcyhjdXJzb3IsIGN1cnNvci0+a2V5KCksIGN1cnNvci0+cHJpbWFyeUtleSgpLCBjdXJz
b3ItPnZhbHVlKCkpOwogfQogCi12b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNvdW50
KFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4g
Y2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRy
LCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y291
bnQoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiBjYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb25Q
dHIsIEV4Y2VwdGlvbkNvZGUmKQogewogICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbDo6Y291bnQiKTsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4g
dHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9u
UHRyKTsKICAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soCiAgICAgICAgICAgICBj
cmVhdGVDYWxsYmFja1Rhc2soJklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNvdW50SW50ZXJu
YWwsIHRoaXMsIHJhbmdlLCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uKSkpCi0gICAgICAgIGVjID0g
SURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKKyAgICAgICAg
Y2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4
Y2VwdGlvbjo6SURCX0FCT1JUX0VSUiwgIlRoZSB0cmFuc2FjdGlvbiB3YXMgYWJvcnRlZCwgc28g
dGhlIHJlcXVlc3QgY2Fubm90IGJlIGZ1bGZpbGxlZC4iKSk7CiB9CiAKIHZvaWQgSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbDo6Y291bnRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
UGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSwgUGFzc1Jl
ZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFj
a3MsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCmluZGV4
IDU0YmNiZGVjY2ViNjUxYmM3YWM1ZTFiMTU1MWU0NzI0NDU1OGQzYWMuLjBmNDVmZDg3NjcyNTE2
OTdhZDg1YTQ1MzMwZmIxNTdkMTI3MmUwNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCkBAIC0yNTEsNiArMjUxLDEwIEBAIGJvb2wgSURC
UmVxdWVzdDo6c2hvdWxkRW5xdWV1ZUV2ZW50KCkgY29uc3QKIHZvaWQgSURCUmVxdWVzdDo6b25F
cnJvcihQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+IGVycm9yKQogewogICAgIElEQl9UUkFD
RSgiSURCUmVxdWVzdDo6b25FcnJvcigpIik7CisgICAgLy8gRXJyb3JzIHNpZ25hbGluZyBjbGVh
bnVwIGZyb20gYWJvcnRlZCB0cmFuc2FjdGlvbnMgbWF5IGNvbWUgdGhyb3VnaCBhc3luY2hyb25v
dXNseS4KKyAgICBpZiAobV9yZWFkeVN0YXRlID09IERPTkUgJiYgZXJyb3ItPmNvZGUoKSA9PSBJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0FCT1JUX0VSUikKKyAgICAgICAgcmV0dXJuOworCiAg
ICAgaWYgKCFzaG91bGRFbnF1ZXVlRXZlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166507</attachid>
            <date>2012-10-01 11:11:06 -0700</date>
            <delta_ts>2012-10-01 15:28:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93054-20121001111020.patch</filename>
            <type>text/plain</type>
            <size>32851</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMDQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWE4ZWI5NTJhMjllNWQ1
NjMwOWUyYmM0MGIxYWYyMzJlNjJhMmE5Mi4uNmFhY2YwYTkwNjIyNDkzMmI4OWUxNTU4ZTM5NmE4
NTM4ZTNkMGY4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDEyLTA5LTI2ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBGaXJl
IGVycm9yIHJhdGhlciB0aGFuIHJhaXNpbmcgb24gcmVxdWVzdCBjcmVhdGlvbiBpZiB0cmFuc2Fj
dGlvbiBhYm9ydHMgYXN5bmNocm9ub3VzbHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05MzA1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFsbCBJREIgZGF0YSBvcGVyYXRpb25zIGFyZSBhc3luY2hyb25v
dXMsIHByb2R1Y2luZyBJREJSZXF1ZXN0IG9iamVjdHMuIFRoaXMgd2FzIGltcGxlbWVudGVkCisg
ICAgICAgIGJ5IHBhc3NpbmcgYWxsIGRhdGEgZnJvbSB0aGUgZnJvbnQtZW5kIHRvIHRoZSBiYWNr
LWVuZCBzeW5jaHJvbm91c2x5LCBhbmQgc3luY2hyb25vdXNseQorICAgICAgICByZXR1cm5pbmcg
YW4gZXhjZXB0aW9uIGNvZGUgYmFjayBpZiB0aGUgcmVxdWVzdCB3YXMgaW52YWxpZC4gUHJldmlv
dXMgY2hhbmdlcyBoYXZlIG1vdmVkCisgICAgICAgIHJlcXVlc3QgdmFsaWRhdGlvbiB0byB0aGUg
ZnJvbnQtZW5kIGV4Y2VwdCBmb3IgdGhlIGNhc2Ugb2YgdGhlIGJhY2stZW5kIHRyYW5zYWN0aW9u
IGhhdmluZworICAgICAgICBhc3luY2hyb25vdXNseSBhYm9ydGVkIGluIHRoZSBtZWFuIHRpbWUu
CisKKyAgICAgICAgVG8gZWxpbWluYXRlIHRoYXQgY2FzZSAod2hpY2ggd291bGQgYWxsb3cgZnJv
bnQtZW5kIHRvIGJhY2stZW5kIGNvbW11bmljYXRpb24gdG8gYmUKKyAgICAgICAgYXN5bmNocm9u
b3VzIGluIG11bHRpLXByb2Nlc3MgcG9ydHMpLCBjaGFuZ2UgZnJvbSByZXR1cm5pbmcgYW4gZXhj
ZXB0aW9uIGNvZGUgdG8gcmVseWluZyBvbgorICAgICAgICB0aGUgZnJvbnQtZW5kIHRvIGFib3J0
IHRoZSByZXF1ZXN0IHdoZW4gdGhlIGFib3J0IGV2ZW50IGZpbmFsbHkgYXJyaXZlcy4KKworICAg
ICAgICBUaGUgZGlmZmVyZW5jZSB3b3VsZCBiZSBub3RpY2VhYmxlIGluIHNjcmlwdHMgLSBpbiBh
IG11bHRpLXByb2Nlc3MgZW52aXJvbm1lbnQ6CisKKyAgICAgICAgdmFyIHJlcXVlc3QxID0gc3Rv
cmUuZ2V0KDApOworICAgICAgICByZXF1ZXN0MS5vbmVycm9yID0gZXJyb3JIYW5kbGVyOyAvLyAo
QSkKKyAgICAgICAgLy8gKEIpCisgICAgICAgIHZhciByZXF1ZXN0MiA9IHN0b3JlLmdldCgwKTsg
Ly8gKEMpCisgICAgICAgIHJlcXVlc3QyLm9uZXJyb3IgPSBlcnJvckhhbmRsZXI7IC8vIChEKQor
CisgICAgICAgIElmIHRoZSB0cmFuc2FjdGlvbiBiYWNrLWVuZCB3ZXJlIHRvIGFzeW5jaHJvbm91
c2x5IGFib3J0IGF0IGV4YWN0bHkgcG9pbnQgKEIpLCB0aGVuIHByaW9yIHRvCisgICAgICAgIHRo
aXMgcGF0Y2ggYW4gZXhjZXB0aW9uIHdvdWxkIGJlIHRocm93biBhdCAoQykuIFdpdGggdGhpcyBw
YXRjaCwgbm8gZXhjZXB0aW9uIGJ1dCAoRCkgd291bGQKKyAgICAgICAgZmlyZSwgc2FtZSBhcyAo
QSkuCisKKyAgICAgICAgVGhlIGJhY2stZW5kIGV4cGxpY2l0bHkgZmlyZXMgYW4gZXJyb3IgY2Fs
bGJhY2sgYXMgd2VsbCwgYXMgaW50ZXJtZWRpYXRlIGxheWVycyBtYXkgcmVseSBvbgorICAgICAg
ICB0aGlzIHRvIHN0b3AgdHJhY2tpbmcgdGhlIHBlbmRpbmcgY2FsbGJhY2suCisKKyAgICAgICAg
Tm8gbmV3IGxheW91dCB0ZXN0cyAtIGNoYW5nZSBpcyBub3Qgb2JzZXJ2YWJsZSBpbiBzaW5nbGUt
cHJvY2VzcyBwb3J0cy4KKyAgICAgICAgQWRkZWQgd2Via2l0X3VuaXRfdGVzdCBJREJSZXF1ZXN0
VGVzdC5BYm9ydEVycm9yQWZ0ZXJBYm9ydCB0byB2ZXJpZnkgdGhhdCBJREJSZXF1ZXN0CisgICAg
ICAgIGlzIHJlc2lsaWVudCB0byB0aGlzIHBhdHRlcm4sIGJ1dCBpdCB3YXMgcHJldmlvdXMuCisK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCQ3Vyc29yOjphZHZhbmNlKTogQmFjayBlbmQgc2hvdWxkIG5ldmVyIGZhaWwgYSBy
ZXF1ZXN0LgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpjb250aW51ZUZ1bmN0aW9uKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OmRlbGV0ZUZ1bmN0aW9uKTogRGl0
dG8sIGFuZCBhbHNvIG1vdmUgImlzIGtleSBjdXJzb3IiIHRlc3QKKyAgICAgICAgaGVyZSBmcm9t
IGJhY2stZW5kLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbXBsOjpjb250aW51
ZUZ1bmN0aW9uKTogQ2hhbmdlIGZyb20gRUMgdG8gZmlyaW5nIGVycm9yLgorICAgICAgICAoV2Vi
Q29yZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OmFkdmFuY2UpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbXBsOjpkZWxldGVGdW5jdGlvbik6IERpdHRvLCBhbmQg
cmVtb3ZlIHRlc3QgbW92ZWQgdG8gRkUuCisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JCYWNr
ZW5kSW1wbDo6cHJlZmV0Y2hDb250aW51ZSk6IERpdHRvLgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQkluZGV4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpvcGVuQ3Vy
c29yKTogQmFjayBlbmQgc2hvdWxkIG5ldmVyIGZhaWwgYSByZXF1ZXN0LgorICAgICAgICAoV2Vi
Q29yZTo6SURCSW5kZXg6OmNvdW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJREJJbmRl
eDo6b3BlbktleUN1cnNvcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6Omdl
dCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6OmdldEtleSk6IERpdHRvLgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6b3BlbkN1cnNvcik6IENoYW5nZSBm
cm9tIEVDIHRvIGZpcmluZyBlcnJvci4KKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2Vu
ZEltcGw6Om9wZW5LZXlDdXJzb3IpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4
QmFja2VuZEltcGw6OmNvdW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleEJh
Y2tlbmRJbXBsOjpnZXQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2Vu
ZEltcGw6OmdldEtleSk6IERpdHRvLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9i
amVjdFN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpnZXQpOiBC
YWNrIGVuZCBzaG91bGQgbmV2ZXIgZmFpbCBhIHJlcXVlc3QuCisgICAgICAgIChXZWJDb3JlOjpJ
REJPYmplY3RTdG9yZTo6cHV0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RT
dG9yZTo6ZGVsZXRlRnVuY3Rpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVj
dFN0b3JlOjpjbGVhcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZSk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpjb3VudCk6IERpdHRvLgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Z2V0KTogQ2hhbmdlIGZyb20gRUMgdG8g
ZmlyaW5nIGVycm9yLgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bDo6cHV0V2l0aEluZGV4S2V5cyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVGdW5jdGlvbik6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y2xlYXIp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Om9w
ZW5DdXJzb3IpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGw6OmNvdW50KTogRGl0dG8uCisKIDIwMTItMTAtMDEgIEFuZHJlaSBCdWN1ciAgPGFidWN1
ckBhZG9iZS5jb20+CiAKICAgICAgICAgW0NTUyBSZWdpb25zXSBSZW1vdmUgdGhlIGRlcHJlY2F0
ZWQgQVBJIERvY3VtZW50LndlYmtpdEdldEZsb3dCeU5hbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKaW5kZXggNjU0YTFlYWNlYTI5ZTlkMzc4ZDRlNDMyNWUyZjc3M2NmMWVmNmQwMS4uZDczODdi
YTM0Zjk5OWMzMzQyNTYzMGQ3MWU4NjcwZTU0MGQ5OTcxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wOS0yNiAgSm9zaHVhIEJlbGwgIDxqc2JlbGxA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogTW92ZSBvblN1Y2Nlc3MoSURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlKSB0byBJREJPcGVuREJSZXF1ZXN0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDc1NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvSURCUmVxdWVzdFRlc3Qu
Y3BwOiBFbnN1cmUgSURCUmVxdWVzdCBjYW4gaGFuZGxlIEVycm9yIGFmdGVyIGFib3J0LgorICAg
ICAgICAoV2ViQ29yZTo6VEVTVCk6IEFkZGVkIEFib3J0QWZ0ZXIKKwogMjAxMi0xMC0wMSAgQWxl
eGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IFtEZXZpY2UgTWV0cmljc10gUmVtb3ZlIHRoZSBndXR0ZXIgb3ZlcmxheSBtb3Zpbmcg
aXRzIGZ1bmN0aW9uYWxpdHkgaW50byB0aGUgSW5zcGVjdG9yT3ZlcmxheQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKaW5kZXggMzRmYjBmZjI4ZmUw
NWQ0ODVmNzZjOGNmMGI5YTk4YzdkZjVhZWYyMC4uNDFjMzg4N2ZjZjU0ZGJhNDg4ZDQ3ZDA4N2U1
NWZkMWI5MDFmYzU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJDdXJzb3IuY3BwCkBAIC0xNzYsOCArMTc2LDcgQEAgdm9pZCBJREJDdXJzb3I6OmFkdmFuY2Uo
dW5zaWduZWQgbG9uZyBjb3VudCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgbV9yZXF1ZXN0LT5z
ZXRQZW5kaW5nQ3Vyc29yKHRoaXMpOwogICAgIG1fZ290VmFsdWUgPSBmYWxzZTsKICAgICBtX2Jh
Y2tlbmQtPmFkdmFuY2UoY291bnQsIG1fcmVxdWVzdCwgZWMpOwotICAgIGlmIChlYykKLSAgICAg
ICAgbV9yZXF1ZXN0LT5tYXJrRWFybHlEZWF0aCgpOworICAgIEFTU0VSVCghZWMpOwogfQogCiB2
b2lkIElEQkN1cnNvcjo6Y29udGludWVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleT4ga2V5LCBF
eGNlcHRpb25Db2RlJiBlYykKQEAgLTIxOCw4ICsyMTcsNyBAQCB2b2lkIElEQkN1cnNvcjo6Y29u
dGludWVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25Db2RlJiBlYykK
ICAgICBtX3JlcXVlc3QtPnNldFBlbmRpbmdDdXJzb3IodGhpcyk7CiAgICAgbV9nb3RWYWx1ZSA9
IGZhbHNlOwogICAgIG1fYmFja2VuZC0+Y29udGludWVGdW5jdGlvbihrZXksIG1fcmVxdWVzdCwg
ZWMpOwotICAgIGlmIChlYykKLSAgICAgICAgbV9yZXF1ZXN0LT5tYXJrRWFybHlEZWF0aCgpOwor
ICAgIEFTU0VSVCghZWMpOwogfQogCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkN1cnNvcjo6
ZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9u
Q29kZSYgZWMpCkBAIC0yMzQsMTYgKzIzMiwxMyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElE
QkN1cnNvcjo6ZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dAog
ICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBpZiAoIW1fZ290VmFsdWUpIHsKKyAgICBp
ZiAoIW1fZ290VmFsdWUgfHwgaXNLZXlDdXJzb3IoKSkgewogICAgICAgICBlYyA9IElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybiAwOwog
ICAgIH0KICAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0
ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7CiAg
ICAgbV9iYWNrZW5kLT5kZWxldGVGdW5jdGlvbihyZXF1ZXN0LCBlYyk7Ci0gICAgaWYgKGVjKSB7
Ci0gICAgICAgIHJlcXVlc3QtPm1hcmtFYXJseURlYXRoKCk7Ci0gICAgICAgIHJldHVybiAwOwot
ICAgIH0KKyAgICBBU1NFUlQoIWVjKTsKICAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNv
ckJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1
cnNvckJhY2tlbmRJbXBsLmNwcAppbmRleCA4MzAwYzA1NDIxMGI4NWZlYmNiZWJjYTliYjUwMGQx
MmRmZDJjNDkxLi5mMWJkY2JmNDVhOThhOTc2YWMwNDg0MTQzZjM1NzY0MWZkZjQ1NzUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5k
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29y
QmFja2VuZEltcGwuY3BwCkBAIC02MywyMCArNjMsMjIgQEAgSURCQ3Vyc29yQmFja2VuZEltcGw6
On5JREJDdXJzb3JCYWNrZW5kSW1wbCgpCiAgICAgbV9vYmplY3RTdG9yZS5jbGVhcigpOwogfQog
Ci12b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpjb250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8
SURCS2V5PiBwcnBLZXksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIEV4
Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y29udGludWVGdW5j
dGlvbihQYXNzUmVmUHRyPElEQktleT4gcHJwS2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4g
cHJwQ2FsbGJhY2tzLCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBJREJfVFJBQ0UoIklEQkN1cnNv
ckJhY2tlbmRJbXBsOjpjb250aW51ZSIpOworICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxi
YWNrcyA9IHBycENhbGxiYWNrczsKIAotICAgIGlmICghbV90cmFuc2FjdGlvbi0+c2NoZWR1bGVU
YXNrKG1fdGFza1R5cGUsIGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCQ3Vyc29yQmFja2VuZEltcGw6
OmNvbnRpbnVlRnVuY3Rpb25JbnRlcm5hbCwgdGhpcywgcHJwS2V5LCBwcnBDYWxsYmFja3MpKSkK
LSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVf
RVJSOworICAgIGlmICghbV90cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKG1fdGFza1R5cGUsIGNy
ZWF0ZUNhbGxiYWNrVGFzaygmSURCQ3Vyc29yQmFja2VuZEltcGw6OmNvbnRpbnVlRnVuY3Rpb25J
bnRlcm5hbCwgdGhpcywgcHJwS2V5LCBjYWxsYmFja3MpKSkKKyAgICAgICAgY2FsbGJhY2tzLT5v
bkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURC
X0FCT1JUX0VSUiwgIlRoZSB0cmFuc2FjdGlvbiB3YXMgYWJvcnRlZCwgc28gdGhlIHJlcXVlc3Qg
Y2Fubm90IGJlIGZ1bGZpbGxlZC4iKSk7CiB9CiAKLXZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6
OmFkdmFuY2UodW5zaWduZWQgbG9uZyBjb3VudCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBy
cENhbGxiYWNrcywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBs
OjphZHZhbmNlKHVuc2lnbmVkIGxvbmcgY291bnQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBw
cnBDYWxsYmFja3MsIEV4Y2VwdGlvbkNvZGUmKQogewogICAgIElEQl9UUkFDRSgiSURCQ3Vyc29y
QmFja2VuZEltcGw6OmFkdmFuY2UiKTsKKyAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFj
a3MgPSBwcnBDYWxsYmFja3M7CiAKLSAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFz
ayhjcmVhdGVDYWxsYmFja1Rhc2soJklEQkN1cnNvckJhY2tlbmRJbXBsOjphZHZhbmNlSW50ZXJu
YWwsIHRoaXMsIGNvdW50LCBwcnBDYWxsYmFja3MpKSkKLSAgICAgICAgZWMgPSBJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSOworICAgIGlmICghbV90cmFuc2Fj
dGlvbi0+c2NoZWR1bGVUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCQ3Vyc29yQmFja2VuZElt
cGw6OmFkdmFuY2VJbnRlcm5hbCwgdGhpcywgY291bnQsIGNhbGxiYWNrcykpKQorICAgICAgICBj
YWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpJREJfQUJPUlRfRVJSLCAiVGhlIHRyYW5zYWN0aW9uIHdhcyBhYm9ydGVkLCBzbyB0
aGUgcmVxdWVzdCBjYW5ub3QgYmUgZnVsZmlsbGVkLiIpKTsKIH0KIAogdm9pZCBJREJDdXJzb3JC
YWNrZW5kSW1wbDo6YWR2YW5jZUludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNz
UmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiBwcnBDdXJzb3IsIHVuc2lnbmVkIGxvbmcgY291
bnQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCkBAIC0xMDcsMjcgKzEwOSwy
NSBAQCB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpjb250aW51ZUZ1bmN0aW9uSW50ZXJuYWwo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhcwogICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKGN1
cnNvci0+a2V5KCksIGN1cnNvci0+cHJpbWFyeUtleSgpLCBjdXJzb3ItPnZhbHVlKCkpOwogfQog
Ci12b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgSURCQ3Vy
c29yQmFja2VuZEltcGw6OmRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBw
cnBDYWxsYmFja3MsIEV4Y2VwdGlvbkNvZGUmKQogewogICAgIElEQl9UUkFDRSgiSURCQ3Vyc29y
QmFja2VuZEltcGw6OmRlbGV0ZSIpOwogICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uLT5tb2RlKCkg
IT0gSURCVHJhbnNhY3Rpb246OlJFQURfT05MWSk7CiAKLSAgICBpZiAoIW1fY3Vyc29yIHx8IG1f
Y3Vyc29yVHlwZSA9PSBJbmRleEtleUN1cnNvcikgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBSZWZQdHI8SURCS2V5UmFuZ2U+IGtl
eVJhbmdlID0gSURCS2V5UmFuZ2U6Om9ubHkobV9jdXJzb3ItPnByaW1hcnlLZXkoKSwgZWMpOwog
ICAgIEFTU0VSVCghZWMpOwogCiAgICAgbV9vYmplY3RTdG9yZS0+ZGVsZXRlRnVuY3Rpb24oa2V5
UmFuZ2UucmVsZWFzZSgpLCBwcnBDYWxsYmFja3MsIG1fdHJhbnNhY3Rpb24uZ2V0KCksIGVjKTsK
KyAgICBBU1NFUlQoIWVjKTsKIH0KIAotdm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6cHJlZmV0
Y2hDb250aW51ZShpbnQgbnVtYmVyVG9GZXRjaCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBy
cENhbGxiYWNrcywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBs
OjpwcmVmZXRjaENvbnRpbnVlKGludCBudW1iZXJUb0ZldGNoLCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4gcHJwQ2FsbGJhY2tzLCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBJREJfVFJBQ0UoIklE
QkN1cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRjaENvbnRpbnVlIik7Ci0gICAgaWYgKCFtX3RyYW5z
YWN0aW9uLT5zY2hlZHVsZVRhc2sobV90YXNrVHlwZSwgY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJD
dXJzb3JCYWNrZW5kSW1wbDo6cHJlZmV0Y2hDb250aW51ZUludGVybmFsLCB0aGlzLCBudW1iZXJU
b0ZldGNoLCBwcnBDYWxsYmFja3MpKSkKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSOworICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNh
bGxiYWNrcyA9IHBycENhbGxiYWNrczsKKyAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPnNjaGVkdWxl
VGFzayhtX3Rhc2tUeXBlLCBjcmVhdGVDYWxsYmFja1Rhc2soJklEQkN1cnNvckJhY2tlbmRJbXBs
OjpwcmVmZXRjaENvbnRpbnVlSW50ZXJuYWwsIHRoaXMsIG51bWJlclRvRmV0Y2gsIGNhbGxiYWNr
cykpKQorICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRl
KElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfQUJPUlRfRVJSLCAiVGhlIHRyYW5zYWN0aW9uIHdh
cyBhYm9ydGVkLCBzbyB0aGUgcmVxdWVzdCBjYW5ub3QgYmUgZnVsZmlsbGVkLiIpKTsKIH0KIAog
dm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6cHJlZmV0Y2hDb250aW51ZUludGVybmFsKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiBwcnBD
dXJzb3IsIGludCBudW1iZXJUb0ZldGNoLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJh
Y2tzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5k
ZXguY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwCmlu
ZGV4IGUzN2VmMGI4ZmZmYjJhM2Q1NTE1Njk4OGJiZWRjNDNhNjNiZjY1ODkuLjA3ZjhlNDk1ZjQ4
MmU2MWQ3YjA3NmY1ZWIyMDM5YTBiZDZhNDc1N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAKQEAgLTc3LDEwICs3Nyw3IEBAIFBhc3NSZWZQdHI8
SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgUGFzCiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0
OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0
KCkpOwogICAgIHJlcXVlc3QtPnNldEN1cnNvckRldGFpbHMoSURCQ3Vyc29yQmFja2VuZEludGVy
ZmFjZTo6SW5kZXhDdXJzb3IsIGRpcmVjdGlvbik7CiAgICAgbV9iYWNrZW5kLT5vcGVuQ3Vyc29y
KGtleVJhbmdlLCBkaXJlY3Rpb24sIHJlcXVlc3QsIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwg
ZWMpOwotICAgIGlmIChlYykgewotICAgICAgICByZXF1ZXN0LT5tYXJrRWFybHlEZWF0aCgpOwot
ICAgICAgICByZXR1cm4gMDsKLSAgICB9CisgICAgQVNTRVJUKCFlYyk7CiAgICAgcmV0dXJuIHJl
cXVlc3Q7CiB9CiAKQEAgLTEyNywxMCArMTI0LDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJ
REJJbmRleDo6Y291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlAK
ICAgICB9CiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVh
dGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwog
ICAgIG1fYmFja2VuZC0+Y291bnQoa2V5UmFuZ2UsIHJlcXVlc3QsIG1fdHJhbnNhY3Rpb24tPmJh
Y2tlbmQoKSwgZWMpOwotICAgIGlmIChlYykgewotICAgICAgICByZXF1ZXN0LT5tYXJrRWFybHlE
ZWF0aCgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9CisgICAgQVNTRVJUKCFlYyk7CiAgICAg
cmV0dXJuIHJlcXVlc3Q7CiB9CiAKQEAgLTE2MSwxMCArMTU1LDcgQEAgUGFzc1JlZlB0cjxJREJS
ZXF1ZXN0PiBJREJJbmRleDo6b3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LAogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3Jl
YXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsK
ICAgICByZXF1ZXN0LT5zZXRDdXJzb3JEZXRhaWxzKElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6
OkluZGV4S2V5Q3Vyc29yLCBkaXJlY3Rpb24pOwogICAgIG1fYmFja2VuZC0+b3BlbktleUN1cnNv
cihrZXlSYW5nZSwgZGlyZWN0aW9uLCByZXF1ZXN0LCBtX3RyYW5zYWN0aW9uLT5iYWNrZW5kKCks
IGVjKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgcmVxdWVzdC0+bWFya0Vhcmx5RGVhdGgoKTsK
LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQorICAgIEFTU0VSVCghZWMpOwogICAgIHJldHVybiBy
ZXF1ZXN0OwogfQogCkBAIC0yMjUsMTAgKzIxNiw3IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4g
SURCSW5kZXg6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRy
CiAKICAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShj
b250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAg
bV9iYWNrZW5kLT5nZXQoa2V5UmFuZ2UsIHJlcXVlc3QsIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQo
KSwgZWMpOwotICAgIGlmIChlYykgewotICAgICAgICByZXF1ZXN0LT5tYXJrRWFybHlEZWF0aCgp
OwotICAgICAgICByZXR1cm4gMDsKLSAgICB9CisgICAgQVNTRVJUKCFlYyk7CiAgICAgcmV0dXJu
IHJlcXVlc3Q7CiB9CiAKQEAgLTI2MCwxMCArMjQ4LDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0
PiBJREJJbmRleDo6Z2V0S2V5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NS
ZWYKIAogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRl
KGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKICAg
ICBtX2JhY2tlbmQtPmdldEtleShrZXlSYW5nZSwgcmVxdWVzdCwgbV90cmFuc2FjdGlvbi0+YmFj
a2VuZCgpLCBlYyk7Ci0gICAgaWYgKGVjKSB7Ci0gICAgICAgIHJlcXVlc3QtPm1hcmtFYXJseURl
YXRoKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KKyAgICBBU1NFUlQoIWVjKTsKICAgICBy
ZXR1cm4gcmVxdWVzdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcAppbmRleCBhMmI4NWI1ZTVjNDcxNzE0
YWZkMjBiMjkxNjgzZjg1MDJlNWJkYmRjLi45ODUxMTY3ZDM1NDRmOTIzYWYzM2Y1MjI4ZjdjMzU3
N2ZiY2JlMDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJJbmRleEJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgSURC
SW5kZXhCYWNrZW5kSW1wbDo6b3BlbkN1cnNvckludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBQYXNzUmVmUHRyCiAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoY3Vyc29yLCBjdXJzb3It
PmtleSgpLCBjdXJzb3ItPnByaW1hcnlLZXkoKSwgY3Vyc29yLT52YWx1ZSgpKTsKIH0KIAotdm9p
ZCBJREJJbmRleEJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+
IHBycEtleVJhbmdlLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPiBwcnBDYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJh
bnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBJREJJbmRleEJhY2tlbmRJbXBs
OjpvcGVuQ3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHBycEtleVJhbmdlLCB1bnNpZ25l
ZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3Ms
IElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlv
bkNvZGUmKQogewogICAgIElEQl9UUkFDRSgiSURCSW5kZXhCYWNrZW5kSW1wbDo6b3BlbkN1cnNv
ciIpOwogICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiBpbmRleCA9IHRoaXM7CkBAIC0x
MTIsMTAgKzExMiwxMCBAQCB2b2lkIElEQkluZGV4QmFja2VuZEltcGw6Om9wZW5DdXJzb3IoUGFz
c1JlZlB0cjxJREJLZXlSYW5nZT4gcHJwS2V5UmFuZ2UsIHVuc2lnbgogICAgIFJlZlB0cjxJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEltcGw6OmZyb20odHJhbnNhY3Rpb25QdHIpOwogICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVk
dWxlVGFzaygKICAgICAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmb3BlbkN1cnNvckludGVy
bmFsLCBpbmRleCwga2V5UmFuZ2UsIGRpcmVjdGlvbiwgSURCQ3Vyc29yQmFja2VuZEludGVyZmFj
ZTo6SW5kZXhDdXJzb3IsIGNhbGxiYWNrcywgdHJhbnNhY3Rpb24pKSkKLSAgICAgICAgZWMgPSBJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSOworICAgICAgICBj
YWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpJREJfQUJPUlRfRVJSLCAiVGhlIHRyYW5zYWN0aW9uIHdhcyBhYm9ydGVkLCBzbyB0
aGUgcmVxdWVzdCBjYW5ub3QgYmUgZnVsZmlsbGVkLiIpKTsKIH0KIAotdm9pZCBJREJJbmRleEJh
Y2tlbmRJbXBsOjpvcGVuS2V5Q3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHBycEtleVJh
bmdlLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBw
cnBDYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb25Q
dHIsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpvcGVuS2V5
Q3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHBycEtleVJhbmdlLCB1bnNpZ25lZCBzaG9y
dCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUm
KQogewogICAgIElEQl9UUkFDRSgiSURCSW5kZXhCYWNrZW5kSW1wbDo6b3BlbktleUN1cnNvciIp
OwogICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiBpbmRleCA9IHRoaXM7CkBAIC0xMjQs
NyArMTI0LDcgQEAgdm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpvcGVuS2V5Q3Vyc29yKFBhc3NS
ZWZQdHI8SURCS2V5UmFuZ2U+IHBycEtleVJhbmdlLCB1bnMKICAgICBSZWZQdHI8SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
Ojpmcm9tKHRyYW5zYWN0aW9uUHRyKTsKICAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRh
c2soCiAgICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJm9wZW5DdXJzb3JJbnRlcm5hbCwg
aW5kZXgsIGtleVJhbmdlLCBkaXJlY3Rpb24sIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6Oklu
ZGV4S2V5Q3Vyc29yLCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uKSkpCi0gICAgICAgIGVjID0gSURC
RGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKKyAgICAgICAgY2Fs
bGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6SURCX0FCT1JUX0VSUiwgIlRoZSB0cmFuc2FjdGlvbiB3YXMgYWJvcnRlZCwgc28gdGhl
IHJlcXVlc3QgY2Fubm90IGJlIGZ1bGZpbGxlZC4iKSk7CiB9CiAKIHZvaWQgSURCSW5kZXhCYWNr
ZW5kSW1wbDo6Y291bnRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0
cjxJREJJbmRleEJhY2tlbmRJbXBsPiBpbmRleCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcmFu
Z2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24pCkBAIC0xNDUsMTMgKzE0NSwxMyBAQCB2
b2lkIElEQkluZGV4QmFja2VuZEltcGw6OmNvdW50SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFBhc3NSZWZQdHI8SURCSQogICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6bnVtYmVyVmFsdWUoY291bnQpKTsKIH0KIAotdm9pZCBJREJJbmRleEJh
Y2tlbmRJbXBsOjpjb3VudChQYXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
KiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIElEQkluZGV4QmFja2Vu
ZEltcGw6OmNvdW50KFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdlLCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRy
YW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBJREJfVFJBQ0UoIklEQkluZGV4
QmFja2VuZEltcGw6OmNvdW50Iik7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGw+IHRyYW5zYWN0aW9uID0gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6ZnJvbSh0cmFuc2Fj
dGlvblB0cik7CiAgICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKAogICAgICAgICAg
ICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZjb3VudEludGVybmFsLCB0aGlzLCByYW5nZSwgY2FsbGJh
Y2tzLCB0cmFuc2FjdGlvbikpKQotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpU
UkFOU0FDVElPTl9JTkFDVElWRV9FUlI7CisgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJE
YXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9BQk9SVF9FUlIs
ICJUaGUgdHJhbnNhY3Rpb24gd2FzIGFib3J0ZWQsIHNvIHRoZSByZXF1ZXN0IGNhbm5vdCBiZSBm
dWxmaWxsZWQuIikpOwogfQogCiB2b2lkIElEQkluZGV4QmFja2VuZEltcGw6OmdldEludGVybmFs
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+
IGluZGV4LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
PiB0cmFuc2FjdGlvbikKQEAgLTIxMiw3ICsyMTIsNyBAQCB2b2lkIElEQkluZGV4QmFja2VuZElt
cGw6OmdldEtleUludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NS
ZQogfQogCiAKLXZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6Z2V0KFBhc3NSZWZQdHI8SURCS2V5
UmFuZ2U+IHBycEtleVJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tz
LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRp
b25Db2RlJiBlYykKK3ZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6Z2V0KFBhc3NSZWZQdHI8SURC
S2V5UmFuZ2U+IHBycEtleVJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJh
Y2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNl
cHRpb25Db2RlJikKIHsKICAgICBJREJfVFJBQ0UoIklEQkluZGV4QmFja2VuZEltcGw6OmdldCIp
OwogICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiBpbmRleCA9IHRoaXM7CkBAIC0yMjAs
MTAgKzIyMCwxMCBAQCB2b2lkIElEQkluZGV4QmFja2VuZEltcGw6OmdldChQYXNzUmVmUHRyPElE
QktleVJhbmdlPiBwcnBLZXlSYW5nZSwgUGFzc1JlZlB0cjxJRAogICAgIFJlZlB0cjxJREJDYWxs
YmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpm
cm9tKHRyYW5zYWN0aW9uUHRyKTsKICAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2so
Y3JlYXRlQ2FsbGJhY2tUYXNrKCZnZXRJbnRlcm5hbCwgaW5kZXgsIGtleVJhbmdlLCBjYWxsYmFj
a3MsIHRyYW5zYWN0aW9uKSkpCi0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRS
QU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRh
dGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0FCT1JUX0VSUiwg
IlRoZSB0cmFuc2FjdGlvbiB3YXMgYWJvcnRlZCwgc28gdGhlIHJlcXVlc3QgY2Fubm90IGJlIGZ1
bGZpbGxlZC4iKSk7CiB9CiAKLXZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6Z2V0S2V5KFBhc3NS
ZWZQdHI8SURCS2V5UmFuZ2U+IHBycEtleVJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4g
cHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9u
UHRyLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6Z2V0S2V5
KFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHBycEtleVJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5z
YWN0aW9uUHRyLCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBJREJfVFJBQ0UoIklEQkluZGV4QmFj
a2VuZEltcGw6OmdldEtleSIpOwogICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiBpbmRl
eCA9IHRoaXM7CkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpn
ZXRLZXkoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcHJwS2V5UmFuZ2UsIFBhc3NSZWZQdHIKICAg
ICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uUHRyKTsKICAgICBpZiAoIXRyYW5z
YWN0aW9uLT5zY2hlZHVsZVRhc2soCiAgICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJmdl
dEtleUludGVybmFsLCBpbmRleCwga2V5UmFuZ2UsIGNhbGxiYWNrcywgdHJhbnNhY3Rpb24pKSkK
LSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVf
RVJSOworICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRl
KElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfQUJPUlRfRVJSLCAiVGhlIHRyYW5zYWN0aW9uIHdh
cyBhYm9ydGVkLCBzbyB0aGUgcmVxdWVzdCBjYW5ub3QgYmUgZnVsZmlsbGVkLiIpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCmluZGV4IGNjNmMyOGVmMjg0ZWZkNzNmYTY1MzFj
ZjBkNWE5OTBjZTNhOTdjMjIuLjRjYmU2M2QxMTVlMGFhMDQ0YjYwZjk0ZTU0YmZlZWFkYzk0ZTdi
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVj
dFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZS5jcHAKQEAgLTg4LDEwICs4OCw3IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURC
T2JqZWN0U3RvcmU6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzCiAg
ICAgfQogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRl
KGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKICAg
ICBtX2JhY2tlbmQtPmdldChrZXlSYW5nZSwgcmVxdWVzdCwgbV90cmFuc2FjdGlvbi0+YmFja2Vu
ZCgpLCBlYyk7Ci0gICAgaWYgKGVjKSB7Ci0gICAgICAgIHJlcXVlc3QtPm1hcmtFYXJseURlYXRo
KCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KKyAgICBBU1NFUlQoIWVjKTsKICAgICByZXR1
cm4gcmVxdWVzdC5yZWxlYXNlKCk7CiB9CiAKQEAgLTIxOSwxMCArMjE2LDcgQEAgUGFzc1JlZlB0
cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6cHV0KElEQk9iamVjdFN0b3JlQmFja2VuZElu
dGVyZmFjZTo6UHV0TW8KIAogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVx
dWVzdDo6Y3JlYXRlKGNvbnRleHQsIHNvdXJjZSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAg
bV9iYWNrZW5kLT5wdXRXaXRoSW5kZXhLZXlzKHNlcmlhbGl6ZWRWYWx1ZS5yZWxlYXNlKCksIGtl
eS5yZWxlYXNlKCksIHB1dE1vZGUsIHJlcXVlc3QsIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwg
aW5kZXhOYW1lcywgaW5kZXhLZXlzLCBlYyk7Ci0gICAgaWYgKGVjKSB7Ci0gICAgICAgIHJlcXVl
c3QtPm1hcmtFYXJseURlYXRoKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KKyAgICBBU1NF
UlQoIWVjKTsKICAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CiB9CiAKQEAgLTI0OCwxMCAr
MjQyLDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6ZGVsZXRlRnVu
Y3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY28KIAogICAgIFJlZlB0cjxJREJSZXF1ZXN0
PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRo
aXMpLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKICAgICBtX2JhY2tlbmQtPmRlbGV0ZUZ1bmN0aW9u
KGtleVJhbmdlLCByZXF1ZXN0LCBtX3RyYW5zYWN0aW9uLT5iYWNrZW5kKCksIGVjKTsKLSAgICBp
ZiAoZWMpIHsKLSAgICAgICAgcmVxdWVzdC0+bWFya0Vhcmx5RGVhdGgoKTsKLSAgICAgICAgcmV0
dXJuIDA7Ci0gICAgfQorICAgIEFTU0VSVCghZWMpOwogICAgIHJldHVybiByZXF1ZXN0LnJlbGVh
c2UoKTsKIH0KIApAQCAtMjgyLDEwICsyNzMsNyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElE
Qk9iamVjdFN0b3JlOjpjbGVhcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeAog
CiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29u
dGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgIG1f
YmFja2VuZC0+Y2xlYXIocmVxdWVzdCwgbV90cmFuc2FjdGlvbi0+YmFja2VuZCgpLCBlYyk7Ci0g
ICAgaWYgKGVjKSB7Ci0gICAgICAgIHJlcXVlc3QtPm1hcmtFYXJseURlYXRoKCk7Ci0gICAgICAg
IHJldHVybiAwOwotICAgIH0KKyAgICBBU1NFUlQoIWVjKTsKICAgICByZXR1cm4gcmVxdWVzdC5y
ZWxlYXNlKCk7CiB9CiAKQEAgLTUxNCwxMCArNTAyLDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0
PiBJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXgKICAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShj
b250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAg
cmVxdWVzdC0+c2V0Q3Vyc29yRGV0YWlscyhJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpPYmpl
Y3RTdG9yZUN1cnNvciwgZGlyZWN0aW9uKTsKICAgICBtX2JhY2tlbmQtPm9wZW5DdXJzb3IocmFu
Z2UsIGRpcmVjdGlvbiwgcmVxdWVzdCwgdGFza1R5cGUsIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQo
KSwgZWMpOwotICAgIGlmIChlYykgewotICAgICAgICByZXF1ZXN0LT5tYXJrRWFybHlEZWF0aCgp
OwotICAgICAgICByZXR1cm4gMDsKLSAgICB9CisgICAgQVNTRVJUKCFlYyk7CiAgICAgcmV0dXJu
IHJlcXVlc3QucmVsZWFzZSgpOwogfQogCkBAIC01NjQsMTAgKzU0OSw3IEBAIFBhc3NSZWZQdHI8
SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIFBhCiAgICAgfQogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURC
UmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0
aW9uLmdldCgpKTsKICAgICBtX2JhY2tlbmQtPmNvdW50KHJhbmdlLCByZXF1ZXN0LCBtX3RyYW5z
YWN0aW9uLT5iYWNrZW5kKCksIGVjKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgcmVxdWVzdC0+
bWFya0Vhcmx5RGVhdGgoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQorICAgIEFTU0VSVCgh
ZWMpOwogICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsLmNwcAppbmRleCA4MDViNzE1MjQwNjAxOWFmZjgwYzBlMGE5YjgwODI1ZDBlZjA1YWNk
Li5iZmU3NTZlYjQ5YWIxZjJhNWQ1OGZmNzdmMmFhZDExMjMzNGM4ZWRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsLmNwcApAQCAtNzgsNyArNzgsNyBAQCBJREJPYmplY3RTdG9yZU1ldGFkYXRh
IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Om1ldGFkYXRhKCkgY29uc3QKICAgICByZXR1cm4g
bWV0YWRhdGE7CiB9CiAKLXZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Z2V0KFBhc3NS
ZWZQdHI8SURCS2V5UmFuZ2U+IHBycEtleVJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4g
cHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9u
UHRyLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6
Z2V0KFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHBycEtleVJhbmdlLCBQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRy
YW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBJREJfVFJBQ0UoIklEQk9iamVj
dFN0b3JlQmFja2VuZEltcGw6OmdldCIpOwogICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsPiBvYmplY3RTdG9yZSA9IHRoaXM7CkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbDo6Z2V0KFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHBycEtleVJh
bmdlLCBQYXNzUmVmCiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5z
YWN0aW9uID0gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6ZnJvbSh0cmFuc2FjdGlvblB0cik7
CiAgICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKAogICAgICAgICAgICAgY3JlYXRl
Q2FsbGJhY2tUYXNrKCZJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpnZXRJbnRlcm5hbCwgb2Jq
ZWN0U3RvcmUsIGtleVJhbmdlLCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uKSkpCi0gICAgICAgIGVj
ID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKKyAgICAg
ICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6SURCX0FCT1JUX0VSUiwgIlRoZSB0cmFuc2FjdGlvbiB3YXMgYWJvcnRlZCwg
c28gdGhlIHJlcXVlc3QgY2Fubm90IGJlIGZ1bGZpbGxlZC4iKSk7CiB9CiAKIHZvaWQgSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbDo6Z2V0SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUsIFBhc3NS
ZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2Fs
bGJhY2tzLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9u
KQpAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Z2V0
SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8CiAgICAgY2FsbGJh
Y2tzLT5vblN1Y2Nlc3MoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZSh3aXJl
RGF0YSkpOwogfQogCi12b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dFdpdGhJbmRl
eEtleXMoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHBycFZhbHVlLCBQYXNzUmVm
UHRyPElEQktleT4gcHJwS2V5LCBQdXRNb2RlIHB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiBwcnBDYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNh
Y3Rpb25QdHIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpbmRleE5hbWVzLCBjb25zdCBWZWN0b3I8
SW5kZXhLZXlzPiYgaW5kZXhLZXlzLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbDo6cHV0V2l0aEluZGV4S2V5cyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gcHJwVmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5PiBwcnBLZXksIFB1dE1vZGUg
cHV0TW9kZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGluZGV4TmFtZXMsIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+JiBpbmRleEtleXMsIEV4Y2Vw
dGlvbkNvZGUmKQogewogICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6
cHV0V2l0aEluZGV4S2V5cyIpOwogCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsOjpwdXRXaXRoSW5kZXhLZXlzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHUKIAogICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzaygKICAgICAgICAg
ICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0SW50
ZXJuYWwsIG9iamVjdFN0b3JlLCB2YWx1ZSwga2V5LCBwdXRNb2RlLCBjYWxsYmFja3MsIHRyYW5z
YWN0aW9uLCBuZXdJbmRleE5hbWVzLnJlbGVhc2UoKSwgbmV3SW5kZXhLZXlzLnJlbGVhc2UoKSkp
KQotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElW
RV9FUlI7CisgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVh
dGUoSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9BQk9SVF9FUlIsICJUaGUgdHJhbnNhY3Rpb24g
d2FzIGFib3J0ZWQsIHNvIHRoZSByZXF1ZXN0IGNhbm5vdCBiZSBmdWxmaWxsZWQuIikpOwogfQog
CiBuYW1lc3BhY2UgewpAQCAtMzY4LDcgKzM2OCw3IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbDo6cHV0SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8
CiAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3Moa2V5LnJlbGVhc2UoKSk7CiB9CiAKLXZvaWQgSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXlS
YW5nZT4gcHJwS2V5UmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3Ms
IElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlv
bkNvZGUmIGVjKQordm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVGdW5jdGlv
bihQYXNzUmVmUHRyPElEQktleVJhbmdlPiBwcnBLZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFu
c2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsOjpkZWxldGUiKTsKIApAQCAtMzgxLDcgKzM4MSw3IEBAIHZvaWQgSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXlS
YW5nZT4gcHJwS2V5UmFuCiAKICAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soCiAg
ICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6
OmRlbGV0ZUludGVybmFsLCBvYmplY3RTdG9yZSwga2V5UmFuZ2UsIGNhbGxiYWNrcywgdHJhbnNh
Y3Rpb24pKSkKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05f
SU5BQ1RJVkVfRVJSOworICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJv
cjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfQUJPUlRfRVJSLCAiVGhlIHRyYW5z
YWN0aW9uIHdhcyBhYm9ydGVkLCBzbyB0aGUgcmVxdWVzdCBjYW5ub3QgYmUgZnVsZmlsbGVkLiIp
KTsKIH0KIAogdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVJbnRlcm5hbChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsPiBvYmplY3RTdG9yZSwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24pCkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgUGFzc1JlZlAKICAgICBjYWxsYmFja3MtPm9uU3VjY2VzcyhTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OnVuZGVmaW5lZFZhbHVlKCkpOwogfQogCi12b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZElt
cGw6OmNsZWFyKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmIGVj
KQordm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjbGVhcihQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRy
YW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBJREJfVFJBQ0UoIklEQk9iamVj
dFN0b3JlQmFja2VuZEltcGw6OmNsZWFyIik7CiAKQEAgLTQyNSw3ICs0MjUsNyBAQCB2b2lkIElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNsZWFyKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBw
cnBDYWxsYmFja3MsIElEQgogCiAgICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKAog
ICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
OjpjbGVhckludGVybmFsLCBvYmplY3RTdG9yZSwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbikpKQot
ICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9F
UlI7CisgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUo
SURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9BQk9SVF9FUlIsICJUaGUgdHJhbnNhY3Rpb24gd2Fz
IGFib3J0ZWQsIHNvIHRoZSByZXF1ZXN0IGNhbm5vdCBiZSBmdWxmaWxsZWQuIikpOwogfQogCiB2
b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNsZWFySW50ZXJuYWwoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0
U3RvcmUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24pCkBAIC01MDMsNyArNTAzLDcgQEAg
dm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVJbmRleEludGVybmFsKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBQYXMKICAgICB0cmFuc2FjdGlvbi0+ZGlkQ29tcGxldGVUYXNr
RXZlbnRzKCk7CiB9CiAKLXZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6b3BlbkN1cnNv
cihQYXNzUmVmUHRyPElEQktleVJhbmdlPiBwcnBSYW5nZSwgSURCQ3Vyc29yOjpEaXJlY3Rpb24g
ZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlIHRhc2tUeXBlLCBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2RlJiBlYykKK3Zv
aWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6b3BlbkN1cnNvcihQYXNzUmVmUHRyPElEQktl
eVJhbmdlPiBwcnBSYW5nZSwgSURCQ3Vyc29yOjpEaXJlY3Rpb24gZGlyZWN0aW9uLCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2U6OlRhc2tUeXBlIHRhc2tUeXBlLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uq
IHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBJREJfVFJBQ0UoIklEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw6Om9wZW5DdXJzb3IiKTsKICAgICBSZWZQdHI8SURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUgPSB0aGlzOwpAQCAtNTEyLDcgKzUxMiw3IEBA
IHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6b3BlbkN1cnNvcihQYXNzUmVmUHRyPElE
QktleVJhbmdlPiBwcnBSYW5nZSwgSURCCiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEltcGw+IHRyYW5zYWN0aW9uID0gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6ZnJvbSh0cmFu
c2FjdGlvblB0cik7CiAgICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKAogICAgICAg
ICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpvcGVu
Q3Vyc29ySW50ZXJuYWwsIG9iamVjdFN0b3JlLCByYW5nZSwgZGlyZWN0aW9uLCBjYWxsYmFja3Ms
IHRhc2tUeXBlLCB0cmFuc2FjdGlvbikpKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNl
cHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVy
cm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0FC
T1JUX0VSUiwgIlRoZSB0cmFuc2FjdGlvbiB3YXMgYWJvcnRlZCwgc28gdGhlIHJlcXVlc3QgY2Fu
bm90IGJlIGZ1bGZpbGxlZC4iKSk7CiAgICAgfQogfQogCkBAIC01MzYsMTMgKzUzNiwxMyBAQCB2
b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Om9wZW5DdXJzb3JJbnRlcm5hbChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgUGFzcwogICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKGN1cnNvciwg
Y3Vyc29yLT5rZXkoKSwgY3Vyc29yLT5wcmltYXJ5S2V5KCksIGN1cnNvci0+dmFsdWUoKSk7CiB9
CiAKLXZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y291bnQoUGFzc1JlZlB0cjxJREJL
ZXlSYW5nZT4gcmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUm
IGVjKQordm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjb3VudChQYXNzUmVmUHRyPElE
QktleVJhbmdlPiByYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29k
ZSYpCiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjb3VudCIp
OwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IElE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmZyb20odHJhbnNhY3Rpb25QdHIpOwogICAgIGlmICgh
dHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzaygKICAgICAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFz
aygmSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y291bnRJbnRlcm5hbCwgdGhpcywgcmFuZ2Us
IGNhbGxiYWNrcywgdHJhbnNhY3Rpb24pKSkKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSOworICAgICAgICBjYWxsYmFja3MtPm9uRXJy
b3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfQUJP
UlRfRVJSLCAiVGhlIHRyYW5zYWN0aW9uIHdhcyBhYm9ydGVkLCBzbyB0aGUgcmVxdWVzdCBjYW5u
b3QgYmUgZnVsZmlsbGVkLiIpKTsKIH0KIAogdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
Ojpjb3VudEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlLCBQYXNzUmVmUHRyPElEQktleVJhbmdl
PiByYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCUmVxdWVzdFRlc3QuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9JREJSZXF1ZXN0VGVzdC5jcHAKaW5kZXggOWUyNDU5ZDM5OGMzYThh
MTczNjgxNWU5Y2VhZGM4MmE2YmQwMDMyYy4uZWIwYjczNjY3MGYwNWI1YzU5MDI1N2JiM2RlNTFm
M2E5YTQ0Y2I3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJS
ZXF1ZXN0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJSZXF1
ZXN0VGVzdC5jcHAKQEAgLTU4LDYgKzU4LDIwIEBAIFRFU1QoSURCUmVxdWVzdFRlc3QsIEV2ZW50
c0FmdGVyU3RvcHBpbmcpCiAgICAgcmVxdWVzdC0+b25TdWNjZXNzKElEQktleTo6Y3JlYXRlSW52
YWxpZCgpLCBJREJLZXk6OmNyZWF0ZUludmFsaWQoKSwgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpu
dWxsVmFsdWUoKSk7CiB9CiAKK1RFU1QoSURCUmVxdWVzdFRlc3QsIEFib3J0RXJyb3JBZnRlckFi
b3J0KQoreworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSAwOworICAgIElE
QlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiA9IDA7CisgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJl
cXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGVJbnZhbGlk
KCksIHRyYW5zYWN0aW9uKTsKKyAgICBFWFBFQ1RfRVEocmVxdWVzdC0+cmVhZHlTdGF0ZSgpLCAi
cGVuZGluZyIpOworCisgICAgLy8gU2ltdWxhdGUgdGhlIElEQlRyYW5zYWN0aW9uIGhhdmluZyBy
ZWNlaXZlZCBvbkFib3J0IGZyb20gYmFjayBlbmQgYW5kIGFib3J0aW5nIHRoZSByZXF1ZXN0Ogor
ICAgIHJlcXVlc3QtPmFib3J0KCk7CisKKyAgICAvLyBOb3cgc2ltdWxhdGUgdGhlIGJhY2sgZW5k
IGhhdmluZyBmaXJlZCBhbiBhYm9ydCBlcnJvciBhdCB0aGUgcmVxdWVzdCB0byBjbGVhciB1cCBh
bnkgaW50ZXJtZWRpYXJpZXMuCisgICAgcmVxdWVzdC0+b25FcnJvcihJREJEYXRhYmFzZUVycm9y
OjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9BQk9SVF9FUlIsICJEZXNjcmlwdGlv
biBnb2VzIGhlcmUuIikpOworfQorCiB9IC8vIG5hbWVzcGFjZQogCiAjZW5kaWYgLy8gRU5BQkxF
KElOREVYRURfREFUQUJBU0UpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166557</attachid>
            <date>2012-10-01 15:28:05 -0700</date>
            <delta_ts>2012-10-01 16:14:05 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-93054-20121001152719.patch</filename>
            <type>text/plain</type>
            <size>35934</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMDQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWE4ZWI5NTJhMjllNWQ1
NjMwOWUyYmM0MGIxYWYyMzJlNjJhMmE5Mi4uYmFiZDcyZWYxZTQyYTY3MzQ3MDc2OGVjYTVkNjlj
YjRlZTA3N2U4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDEyLTA5LTI2ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBGaXJl
IGVycm9yIHJhdGhlciB0aGFuIHJhaXNpbmcgb24gcmVxdWVzdCBjcmVhdGlvbiBpZiB0cmFuc2Fj
dGlvbiBhYm9ydHMgYXN5bmNocm9ub3VzbHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05MzA1NAorCisgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hh
bmcuCisKKyAgICAgICAgQWxsIElEQiBkYXRhIG9wZXJhdGlvbnMgYXJlIGFzeW5jaHJvbm91cywg
cHJvZHVjaW5nIElEQlJlcXVlc3Qgb2JqZWN0cy4gVGhpcyB3YXMgaW1wbGVtZW50ZWQKKyAgICAg
ICAgYnkgcGFzc2luZyBhbGwgZGF0YSBmcm9tIHRoZSBmcm9udC1lbmQgdG8gdGhlIGJhY2stZW5k
IHN5bmNocm9ub3VzbHksIGFuZCBzeW5jaHJvbm91c2x5CisgICAgICAgIHJldHVybmluZyBhbiBl
eGNlcHRpb24gY29kZSBiYWNrIGlmIHRoZSByZXF1ZXN0IHdhcyBpbnZhbGlkLiBQcmV2aW91cyBj
aGFuZ2VzIGhhdmUgbW92ZWQKKyAgICAgICAgcmVxdWVzdCB2YWxpZGF0aW9uIHRvIHRoZSBmcm9u
dC1lbmQgZXhjZXB0IGZvciB0aGUgY2FzZSBvZiB0aGUgYmFjay1lbmQgdHJhbnNhY3Rpb24gaGF2
aW5nCisgICAgICAgIGFzeW5jaHJvbm91c2x5IGFib3J0ZWQgaW4gdGhlIG1lYW4gdGltZS4KKwor
ICAgICAgICBUbyBlbGltaW5hdGUgdGhhdCBjYXNlICh3aGljaCB3b3VsZCBhbGxvdyBmcm9udC1l
bmQgdG8gYmFjay1lbmQgY29tbXVuaWNhdGlvbiB0byBiZQorICAgICAgICBhc3luY2hyb25vdXMg
aW4gbXVsdGktcHJvY2VzcyBwb3J0cyksIGNoYW5nZSBmcm9tIHJldHVybmluZyBhbiBleGNlcHRp
b24gY29kZSB0byByZWx5aW5nIG9uCisgICAgICAgIHRoZSBmcm9udC1lbmQgdG8gYWJvcnQgdGhl
IHJlcXVlc3Qgd2hlbiB0aGUgYWJvcnQgZXZlbnQgZmluYWxseSBhcnJpdmVzLgorCisgICAgICAg
IFRoZSBkaWZmZXJlbmNlIHdvdWxkIGJlIG5vdGljZWFibGUgaW4gc2NyaXB0cyAtIGluIGEgbXVs
dGktcHJvY2VzcyBlbnZpcm9ubWVudDoKKworICAgICAgICB2YXIgcmVxdWVzdDEgPSBzdG9yZS5n
ZXQoMCk7CisgICAgICAgIHJlcXVlc3QxLm9uZXJyb3IgPSBlcnJvckhhbmRsZXI7IC8vIChBKQor
ICAgICAgICAvLyAoQikKKyAgICAgICAgdmFyIHJlcXVlc3QyID0gc3RvcmUuZ2V0KDApOyAvLyAo
QykKKyAgICAgICAgcmVxdWVzdDIub25lcnJvciA9IGVycm9ySGFuZGxlcjsgLy8gKEQpCisKKyAg
ICAgICAgSWYgdGhlIHRyYW5zYWN0aW9uIGJhY2stZW5kIHdlcmUgdG8gYXN5bmNocm9ub3VzbHkg
YWJvcnQgYXQgZXhhY3RseSBwb2ludCAoQiksIHRoZW4gcHJpb3IgdG8KKyAgICAgICAgdGhpcyBw
YXRjaCBhbiBleGNlcHRpb24gd291bGQgYmUgdGhyb3duIGF0IChDKS4gV2l0aCB0aGlzIHBhdGNo
LCBubyBleGNlcHRpb24gYnV0IChEKSB3b3VsZAorICAgICAgICBmaXJlLCBzYW1lIGFzIChBKS4K
KworICAgICAgICBUaGUgYmFjay1lbmQgZXhwbGljaXRseSBmaXJlcyBhbiBlcnJvciBjYWxsYmFj
ayBhcyB3ZWxsLCBhcyBpbnRlcm1lZGlhdGUgbGF5ZXJzIG1heSByZWx5IG9uCisgICAgICAgIHRo
aXMgdG8gc3RvcCB0cmFja2luZyB0aGUgcGVuZGluZyBjYWxsYmFjay4KKworICAgICAgICBObyBu
ZXcgbGF5b3V0IHRlc3RzIC0gY2hhbmdlIGlzIG5vdCBvYnNlcnZhYmxlIGluIHNpbmdsZS1wcm9j
ZXNzIHBvcnRzLgorICAgICAgICBBZGRlZCB3ZWJraXRfdW5pdF90ZXN0IElEQlJlcXVlc3RUZXN0
LkFib3J0RXJyb3JBZnRlckFib3J0IHRvIHZlcmlmeSB0aGF0IElEQlJlcXVlc3QKKyAgICAgICAg
aXMgcmVzaWxpZW50IHRvIHRoaXMgcGF0dGVybiwgYnV0IGl0IHdhcyBwcmV2aW91cy4KKworICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJDdXJzb3I6OmFkdmFuY2UpOiBCYWNrIGVuZCBzaG91bGQgbmV2ZXIgZmFpbCBhIHJlcXVl
c3QuCisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24pOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6ZGVsZXRlRnVuY3Rpb24pOiBEaXR0bywg
YW5kIGFsc28gbW92ZSAiaXMga2V5IGN1cnNvciIgdGVzdAorICAgICAgICBoZXJlIGZyb20gYmFj
ay1lbmQuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OmNvbnRpbnVlRnVu
Y3Rpb24pOiBDaGFuZ2UgZnJvbSBFQyB0byBmaXJpbmcgZXJyb3IuCisgICAgICAgIChXZWJDb3Jl
OjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6YWR2YW5jZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OmRlbGV0ZUZ1bmN0aW9uKTogRGl0dG8sIGFuZCByZW1v
dmUgdGVzdCBtb3ZlZCB0byBGRS4KKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvckJhY2tlbmRJ
bXBsOjpwcmVmZXRjaENvbnRpbnVlKTogRGl0dG8uCisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VFcnJvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUVy
cm9yOjpjcmVhdGUpOiBBZGQgb3ZlcmxvYWQgdGhhdCBsb29rcyB1cCBtZXNzYWdlIHZpYSBjb2Rl
LgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VFcnJvcjo6SURCRGF0YWJhc2VFcnJvcik6
IExvb2sgdXAgbWVzc2FnZSB2aWEgZXhjZXB0aW9uIHRhYmxlLgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlRXhjZXB0aW9uLmg6IEFkZCBnZXRFcnJvckRlc2NyaXB0aW9u
LgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlRXhjZXB0aW9uLmNwcDog
SW1wbGVtZW50YXRpb24gb2YgZ2V0RXJyb3JEZXNjcmlwdGlvbi4KKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJJbmRleC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6b3Bl
bkN1cnNvcik6IEJhY2sgZW5kIHNob3VsZCBuZXZlciBmYWlsIGEgcmVxdWVzdC4KKyAgICAgICAg
KFdlYkNvcmU6OklEQkluZGV4Ojpjb3VudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SURC
SW5kZXg6Om9wZW5LZXlDdXJzb3IpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4
OjpnZXQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpnZXRLZXkpOiBEaXR0
by4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6Om9wZW5DdXJzb3IpOiBDaGFu
Z2UgZnJvbSBFQyB0byBmaXJpbmcgZXJyb3IuCisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleEJh
Y2tlbmRJbXBsOjpvcGVuS2V5Q3Vyc29yKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJREJJ
bmRleEJhY2tlbmRJbXBsOjpjb3VudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SURCSW5k
ZXhCYWNrZW5kSW1wbDo6Z2V0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleEJh
Y2tlbmRJbXBsOjpnZXRLZXkpOiBEaXR0by4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJPYmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6Z2V0
KTogQmFjayBlbmQgc2hvdWxkIG5ldmVyIGZhaWwgYSByZXF1ZXN0LgorICAgICAgICAoV2ViQ29y
ZTo6SURCT2JqZWN0U3RvcmU6OnB1dCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SURCT2Jq
ZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJREJP
YmplY3RTdG9yZTo6Y2xlYXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmUpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6Y291bnQpOiBEaXR0by4KKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmdldCk6IENoYW5nZSBmcm9tIEVD
IHRvIGZpcmluZyBlcnJvci4KKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGw6OnB1dFdpdGhJbmRleEtleXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlRnVuY3Rpb24p
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNs
ZWFyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
OjpvcGVuQ3Vyc29yKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsOjpjb3VudCk6IERpdHRvLgorCiAyMDEyLTEwLTAxICBBbmRyZWkgQnVjdXIgIDxh
YnVjdXJAYWRvYmUuY29tPgogCiAgICAgICAgIFtDU1MgUmVnaW9uc10gUmVtb3ZlIHRoZSBkZXBy
ZWNhdGVkIEFQSSBEb2N1bWVudC53ZWJraXRHZXRGbG93QnlOYW1lCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCmluZGV4IDY1NGExZWFjZWEyOWU5ZDM3OGQ0ZTQzMjVlMmY3NzNjZjFlZjZkMDEuLjU2
NThmM2YwOTYxNTExODJhOTJmNWU2N2JmNDAyMjU3NzFmZGYyYmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDktMjYgIEpvc2h1YSBCZWxsICA8anNi
ZWxsQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IE1vdmUgb25TdWNjZXNzKElE
QkRhdGFiYXNlQmFja2VuZEludGVyZmFjZSkgdG8gSURCT3BlbkRCUmVxdWVzdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ3NTcKKworICAgICAgICBS
ZXZpZXdlZCBieSBUb255IENoYW5nLgorCisgICAgICAgICogdGVzdHMvSURCUmVxdWVzdFRlc3Qu
Y3BwOiBFbnN1cmUgSURCUmVxdWVzdCBjYW4gaGFuZGxlIEVycm9yIGFmdGVyIGFib3J0LgorICAg
ICAgICAoV2ViQ29yZTo6VEVTVCk6IEFkZGVkIEFib3J0QWZ0ZXIKKwogMjAxMi0xMC0wMSAgQWxl
eGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IFtEZXZpY2UgTWV0cmljc10gUmVtb3ZlIHRoZSBndXR0ZXIgb3ZlcmxheSBtb3Zpbmcg
aXRzIGZ1bmN0aW9uYWxpdHkgaW50byB0aGUgSW5zcGVjdG9yT3ZlcmxheQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKaW5kZXggMzRmYjBmZjI4ZmUw
NWQ0ODVmNzZjOGNmMGI5YTk4YzdkZjVhZWYyMC4uNDFjMzg4N2ZjZjU0ZGJhNDg4ZDQ3ZDA4N2U1
NWZkMWI5MDFmYzU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJDdXJzb3IuY3BwCkBAIC0xNzYsOCArMTc2LDcgQEAgdm9pZCBJREJDdXJzb3I6OmFkdmFuY2Uo
dW5zaWduZWQgbG9uZyBjb3VudCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgbV9yZXF1ZXN0LT5z
ZXRQZW5kaW5nQ3Vyc29yKHRoaXMpOwogICAgIG1fZ290VmFsdWUgPSBmYWxzZTsKICAgICBtX2Jh
Y2tlbmQtPmFkdmFuY2UoY291bnQsIG1fcmVxdWVzdCwgZWMpOwotICAgIGlmIChlYykKLSAgICAg
ICAgbV9yZXF1ZXN0LT5tYXJrRWFybHlEZWF0aCgpOworICAgIEFTU0VSVCghZWMpOwogfQogCiB2
b2lkIElEQkN1cnNvcjo6Y29udGludWVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleT4ga2V5LCBF
eGNlcHRpb25Db2RlJiBlYykKQEAgLTIxOCw4ICsyMTcsNyBAQCB2b2lkIElEQkN1cnNvcjo6Y29u
dGludWVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25Db2RlJiBlYykK
ICAgICBtX3JlcXVlc3QtPnNldFBlbmRpbmdDdXJzb3IodGhpcyk7CiAgICAgbV9nb3RWYWx1ZSA9
IGZhbHNlOwogICAgIG1fYmFja2VuZC0+Y29udGludWVGdW5jdGlvbihrZXksIG1fcmVxdWVzdCwg
ZWMpOwotICAgIGlmIChlYykKLSAgICAgICAgbV9yZXF1ZXN0LT5tYXJrRWFybHlEZWF0aCgpOwor
ICAgIEFTU0VSVCghZWMpOwogfQogCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkN1cnNvcjo6
ZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9u
Q29kZSYgZWMpCkBAIC0yMzQsMTYgKzIzMiwxMyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElE
QkN1cnNvcjo6ZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dAog
ICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBpZiAoIW1fZ290VmFsdWUpIHsKKyAgICBp
ZiAoIW1fZ290VmFsdWUgfHwgaXNLZXlDdXJzb3IoKSkgewogICAgICAgICBlYyA9IElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybiAwOwog
ICAgIH0KICAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0
ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7CiAg
ICAgbV9iYWNrZW5kLT5kZWxldGVGdW5jdGlvbihyZXF1ZXN0LCBlYyk7Ci0gICAgaWYgKGVjKSB7
Ci0gICAgICAgIHJlcXVlc3QtPm1hcmtFYXJseURlYXRoKCk7Ci0gICAgICAgIHJldHVybiAwOwot
ICAgIH0KKyAgICBBU1NFUlQoIWVjKTsKICAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNv
ckJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1
cnNvckJhY2tlbmRJbXBsLmNwcAppbmRleCA4MzAwYzA1NDIxMGI4NWZlYmNiZWJjYTliYjUwMGQx
MmRmZDJjNDkxLi42Njg0NjZiMGZjNDU5NTcxNjU0MzhkMDNjMzA4ZjY5NWNkMjNhNzAyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5k
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29y
QmFja2VuZEltcGwuY3BwCkBAIC02MywyMCArNjMsMjIgQEAgSURCQ3Vyc29yQmFja2VuZEltcGw6
On5JREJDdXJzb3JCYWNrZW5kSW1wbCgpCiAgICAgbV9vYmplY3RTdG9yZS5jbGVhcigpOwogfQog
Ci12b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpjb250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8
SURCS2V5PiBwcnBLZXksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIEV4
Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y29udGludWVGdW5j
dGlvbihQYXNzUmVmUHRyPElEQktleT4gcHJwS2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4g
cHJwQ2FsbGJhY2tzLCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBJREJfVFJBQ0UoIklEQkN1cnNv
ckJhY2tlbmRJbXBsOjpjb250aW51ZSIpOworICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxi
YWNrcyA9IHBycENhbGxiYWNrczsKIAotICAgIGlmICghbV90cmFuc2FjdGlvbi0+c2NoZWR1bGVU
YXNrKG1fdGFza1R5cGUsIGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCQ3Vyc29yQmFja2VuZEltcGw6
OmNvbnRpbnVlRnVuY3Rpb25JbnRlcm5hbCwgdGhpcywgcHJwS2V5LCBwcnBDYWxsYmFja3MpKSkK
LSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVf
RVJSOworICAgIGlmICghbV90cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKG1fdGFza1R5cGUsIGNy
ZWF0ZUNhbGxiYWNrVGFzaygmSURCQ3Vyc29yQmFja2VuZEltcGw6OmNvbnRpbnVlRnVuY3Rpb25J
bnRlcm5hbCwgdGhpcywgcHJwS2V5LCBjYWxsYmFja3MpKSkKKyAgICAgICAgY2FsbGJhY2tzLT5v
bkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURC
X0FCT1JUX0VSUikpOwogfQogCi12b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjphZHZhbmNlKHVu
c2lnbmVkIGxvbmcgY291bnQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3Ms
IEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6YWR2YW5jZSh1
bnNpZ25lZCBsb25nIGNvdW50LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tz
LCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBJREJfVFJBQ0UoIklEQkN1cnNvckJhY2tlbmRJbXBs
OjphZHZhbmNlIik7CisgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2Fs
bGJhY2tzOwogCi0gICAgaWYgKCFtX3RyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soY3JlYXRlQ2Fs
bGJhY2tUYXNrKCZJREJDdXJzb3JCYWNrZW5kSW1wbDo6YWR2YW5jZUludGVybmFsLCB0aGlzLCBj
b3VudCwgcHJwQ2FsbGJhY2tzKSkpCi0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246
OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKKyAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPnNjaGVk
dWxlVGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJklEQkN1cnNvckJhY2tlbmRJbXBsOjphZHZhbmNl
SW50ZXJuYWwsIHRoaXMsIGNvdW50LCBjYWxsYmFja3MpKSkKKyAgICAgICAgY2FsbGJhY2tzLT5v
bkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURC
X0FCT1JUX0VSUikpOwogfQogCiB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjphZHZhbmNlSW50
ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2Vu
ZEltcGw+IHBycEN1cnNvciwgdW5zaWduZWQgbG9uZyBjb3VudCwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+IGNhbGxiYWNrcykKQEAgLTEwNywyNyArMTA5LDI1IEBAIHZvaWQgSURCQ3Vyc29yQmFj
a2VuZEltcGw6OmNvbnRpbnVlRnVuY3Rpb25JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgUGFzCiAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoY3Vyc29yLT5rZXkoKSwgY3Vyc29yLT5w
cmltYXJ5S2V5KCksIGN1cnNvci0+dmFsdWUoKSk7CiB9CiAKLXZvaWQgSURCQ3Vyc29yQmFja2Vu
ZEltcGw6OmRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFj
a3MsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6ZGVsZXRl
RnVuY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgRXhjZXB0aW9u
Q29kZSYpCiB7CiAgICAgSURCX1RSQUNFKCJJREJDdXJzb3JCYWNrZW5kSW1wbDo6ZGVsZXRlIik7
CiAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb24tPm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbjo6UkVB
RF9PTkxZKTsKIAotICAgIGlmICghbV9jdXJzb3IgfHwgbV9jdXJzb3JUeXBlID09IEluZGV4S2V5
Q3Vyc29yKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElE
X1NUQVRFX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQorICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwogICAgIFJlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UgPSBJREJLZXlSYW5nZTo6
b25seShtX2N1cnNvci0+cHJpbWFyeUtleSgpLCBlYyk7CiAgICAgQVNTRVJUKCFlYyk7CiAKICAg
ICBtX29iamVjdFN0b3JlLT5kZWxldGVGdW5jdGlvbihrZXlSYW5nZS5yZWxlYXNlKCksIHBycENh
bGxiYWNrcywgbV90cmFuc2FjdGlvbi5nZXQoKSwgZWMpOworICAgIEFTU0VSVCghZWMpOwogfQog
Ci12b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRjaENvbnRpbnVlKGludCBudW1iZXJU
b0ZldGNoLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBFeGNlcHRpb25D
b2RlJiBlYykKK3ZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OnByZWZldGNoQ29udGludWUoaW50
IG51bWJlclRvRmV0Y2gsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIEV4
Y2VwdGlvbkNvZGUmKQogewogICAgIElEQl9UUkFDRSgiSURCQ3Vyc29yQmFja2VuZEltcGw6OnBy
ZWZldGNoQ29udGludWUiKTsKLSAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayht
X3Rhc2tUeXBlLCBjcmVhdGVDYWxsYmFja1Rhc2soJklEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVm
ZXRjaENvbnRpbnVlSW50ZXJuYWwsIHRoaXMsIG51bWJlclRvRmV0Y2gsIHBycENhbGxiYWNrcykp
KQotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElW
RV9FUlI7CisgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tz
OworICAgIGlmICghbV90cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKG1fdGFza1R5cGUsIGNyZWF0
ZUNhbGxiYWNrVGFzaygmSURCQ3Vyc29yQmFja2VuZEltcGw6OnByZWZldGNoQ29udGludWVJbnRl
cm5hbCwgdGhpcywgbnVtYmVyVG9GZXRjaCwgY2FsbGJhY2tzKSkpCisgICAgICAgIGNhbGxiYWNr
cy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246
OklEQl9BQk9SVF9FUlIpKTsKIH0KIAogdm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6cHJlZmV0
Y2hDb250aW51ZUludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElE
QkN1cnNvckJhY2tlbmRJbXBsPiBwcnBDdXJzb3IsIGludCBudW1iZXJUb0ZldGNoLCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VFcnJvci5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VFcnJvci5oCmluZGV4IGQ2Zjg2ODVhZmJhZGE5ZDhi
ZjM0NGQ4MGU3YjM0OTE0ZmIzZDI0YjYuLjI0OWI0ZGU3MjcwNDk1Y2FkZGYwYzQ0YWY1NzZmNjg3
Y2EyZDMxMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlRXJyb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUVycm9yLmgKQEAgLTM3LDYgKzM3LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgSURCRGF0YWJhc2VFcnJvciA6IHB1YmxpYyBSZWZDb3VudGVkPElEQkRhdGFiYXNl
RXJyb3I+IHsKIHB1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9y
PiBjcmVhdGUodW5zaWduZWQgc2hvcnQgY29kZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChjb2Rl
ID49IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJEYXRhYmFzZUV4Y2VwdGlvbk9mZnNldCk7Cisg
ICAgICAgIEFTU0VSVChjb2RlIDwgSURCRGF0YWJhc2VFeGNlcHRpb246OklEQkRhdGFiYXNlRXhj
ZXB0aW9uTWF4KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJEYXRhYmFzZUVycm9y
KGNvZGUpKTsKKyAgICB9CisKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9y
PiBjcmVhdGUodW5zaWduZWQgc2hvcnQgY29kZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAg
IHsKICAgICAgICAgQVNTRVJUKGNvZGUgPj0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQkRhdGFi
YXNlRXhjZXB0aW9uT2Zmc2V0KTsKQEAgLTUyLDggKzU5LDEwIEBAIHB1YmxpYzoKICAgICBjb25z
dCBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIElEQkRhdGFiYXNlRXhjZXB0aW9uOjpnZXRF
cnJvck5hbWUobV9jb2RlKTsgfTsKIAogcHJpdmF0ZToKKyAgICBJREJEYXRhYmFzZUVycm9yKHVu
c2lnbmVkIHNob3J0IGNvZGUpCisgICAgICAgIDogbV9jb2RlKGNvZGUpLCBtX21lc3NhZ2UoSURC
RGF0YWJhc2VFeGNlcHRpb246OmdldEVycm9yRGVzY3JpcHRpb24oY29kZSkpIHsgfQogICAgIElE
QkRhdGFiYXNlRXJyb3IodW5zaWduZWQgc2hvcnQgY29kZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
KQotICAgICAgICAgICAgOiBtX2NvZGUoY29kZSksIG1fbWVzc2FnZShtZXNzYWdlKSB7IH0KKyAg
ICAgICAgOiBtX2NvZGUoY29kZSksIG1fbWVzc2FnZShtZXNzYWdlKSB7IH0KIAogICAgIGNvbnN0
IHVuc2lnbmVkIHNob3J0IG1fY29kZTsKICAgICBjb25zdCBTdHJpbmcgbV9tZXNzYWdlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VFeGNl
cHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VF
eGNlcHRpb24uY3BwCmluZGV4IGZlODUwYmIxOTk4YTk4ZTFkZWIwNTY1OWY0NDgxN2M5Mzc0NzEw
MmYuLjNmOWNlYjUzN2NjOTM5OWI5YTQ2MTZjNDZiMzM4ZjZmYmVmOWRjZjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlRXhjZXB0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUV4Y2Vw
dGlvbi5jcHAKQEAgLTEwMyw2ICsxMDMsMTYgQEAgU3RyaW5nIElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpnZXRFcnJvck5hbWUoRXhjZXB0aW9uQ29kZSBlYykKICAgICByZXR1cm4gZW50cnktPm5hbWU7
CiB9CiAKK1N0cmluZyBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Z2V0RXJyb3JEZXNjcmlwdGlvbihF
eGNlcHRpb25Db2RlIGVjKQoreworICAgIGNvbnN0IElEQkRhdGFiYXNlRXhjZXB0aW9uTmFtZURl
c2NyaXB0aW9uKiBlbnRyeSA9IGdldEVycm9yRW50cnkoZWMpOworICAgIEFTU0VSVChlbnRyeSk7
CisgICAgaWYgKCFlbnRyeSkKKyAgICAgICAgcmV0dXJuICJVbmtub3duIGVycm9yLiI7CisKKyAg
ICByZXR1cm4gZW50cnktPmRlc2NyaXB0aW9uOworfQorCiBFeGNlcHRpb25Db2RlIElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpnZXRMZWdhY3lFcnJvckNvZGUoRXhjZXB0aW9uQ29kZSBlYykKIHsKICAg
ICBjb25zdCBJREJEYXRhYmFzZUV4Y2VwdGlvbk5hbWVEZXNjcmlwdGlvbiogZW50cnkgPSBnZXRF
cnJvckVudHJ5KGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlRXhjZXB0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUV4Y2VwdGlvbi5oCmluZGV4IDNlNDRhNjhjZThiNDFjNjlhNzE3NTI5
Y2M0ZDQ1MzM1MDI1NDEyYmEuLmQ3NjZkMGM4NDQyYzA4MTkyZTU2NjgyMjJmMTUzZDEzZmRhODM4
NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlRXhjZXB0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VFeGNlcHRpb24uaApAQCAtNzgsNiArNzgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0
aWMgYm9vbCBpbml0aWFsaXplRGVzY3JpcHRpb24oRXhjZXB0aW9uQ29kZSwgRXhjZXB0aW9uQ29k
ZURlc2NyaXB0aW9uKik7CiAgICAgc3RhdGljIFN0cmluZyBnZXRFcnJvck5hbWUoRXhjZXB0aW9u
Q29kZSk7CisgICAgc3RhdGljIFN0cmluZyBnZXRFcnJvckRlc2NyaXB0aW9uKEV4Y2VwdGlvbkNv
ZGUpOwogICAgIHN0YXRpYyBFeGNlcHRpb25Db2RlIGdldExlZ2FjeUVycm9yQ29kZShFeGNlcHRp
b25Db2RlKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkluZGV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkluZGV4LmNwcAppbmRleCBlMzdlZjBiOGZmZmIyYTNkNTUxNTY5ODhiYmVkYzQzYTYzYmY2
NTg5Li4wN2Y4ZTQ5NWY0ODJlNjFkN2IwNzZmNWViMjAzOWEwYmQ2YTQ3NTdjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwCkBAIC03NywxMCArNzcs
NyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuQ3Vyc29yKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhcwogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1
ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBt
X3RyYW5zYWN0aW9uLmdldCgpKTsKICAgICByZXF1ZXN0LT5zZXRDdXJzb3JEZXRhaWxzKElEQkN1
cnNvckJhY2tlbmRJbnRlcmZhY2U6OkluZGV4Q3Vyc29yLCBkaXJlY3Rpb24pOwogICAgIG1fYmFj
a2VuZC0+b3BlbkN1cnNvcihrZXlSYW5nZSwgZGlyZWN0aW9uLCByZXF1ZXN0LCBtX3RyYW5zYWN0
aW9uLT5iYWNrZW5kKCksIGVjKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgcmVxdWVzdC0+bWFy
a0Vhcmx5RGVhdGgoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQorICAgIEFTU0VSVCghZWMp
OwogICAgIHJldHVybiByZXF1ZXN0OwogfQogCkBAIC0xMjcsMTAgKzEyNCw3IEBAIFBhc3NSZWZQ
dHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIFBhc3NSZWZQCiAgICAgfQogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0g
SURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5z
YWN0aW9uLmdldCgpKTsKICAgICBtX2JhY2tlbmQtPmNvdW50KGtleVJhbmdlLCByZXF1ZXN0LCBt
X3RyYW5zYWN0aW9uLT5iYWNrZW5kKCksIGVjKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgcmVx
dWVzdC0+bWFya0Vhcmx5RGVhdGgoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQorICAgIEFT
U0VSVCghZWMpOwogICAgIHJldHVybiByZXF1ZXN0OwogfQogCkBAIC0xNjEsMTAgKzE1NSw3IEBA
IFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5LZXlDdXJzb3IoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwKICAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9
IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFu
c2FjdGlvbi5nZXQoKSk7CiAgICAgcmVxdWVzdC0+c2V0Q3Vyc29yRGV0YWlscyhJREJDdXJzb3JC
YWNrZW5kSW50ZXJmYWNlOjpJbmRleEtleUN1cnNvciwgZGlyZWN0aW9uKTsKICAgICBtX2JhY2tl
bmQtPm9wZW5LZXlDdXJzb3Ioa2V5UmFuZ2UsIGRpcmVjdGlvbiwgcmVxdWVzdCwgbV90cmFuc2Fj
dGlvbi0+YmFja2VuZCgpLCBlYyk7Ci0gICAgaWYgKGVjKSB7Ci0gICAgICAgIHJlcXVlc3QtPm1h
cmtFYXJseURlYXRoKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KKyAgICBBU1NFUlQoIWVj
KTsKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KIApAQCAtMjI1LDEwICsyMTYsNyBAQCBQYXNzUmVm
UHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgUGFzc1JlZlB0cgogCiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJS
ZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rp
b24uZ2V0KCkpOwogICAgIG1fYmFja2VuZC0+Z2V0KGtleVJhbmdlLCByZXF1ZXN0LCBtX3RyYW5z
YWN0aW9uLT5iYWNrZW5kKCksIGVjKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgcmVxdWVzdC0+
bWFya0Vhcmx5RGVhdGgoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQorICAgIEFTU0VSVCgh
ZWMpOwogICAgIHJldHVybiByZXF1ZXN0OwogfQogCkBAIC0yNjAsMTAgKzI0OCw3IEBAIFBhc3NS
ZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmdldEtleShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBQYXNzUmVmCiAKICAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElE
QlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2Fj
dGlvbi5nZXQoKSk7CiAgICAgbV9iYWNrZW5kLT5nZXRLZXkoa2V5UmFuZ2UsIHJlcXVlc3QsIG1f
dHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMpOwotICAgIGlmIChlYykgewotICAgICAgICByZXF1
ZXN0LT5tYXJrRWFybHlEZWF0aCgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9CisgICAgQVNT
RVJUKCFlYyk7CiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKaW5kZXgg
YTJiODViNWU1YzQ3MTcxNGFmZDIwYjI5MTY4M2Y4NTAyZTViZGJkYy4uZTNkM2UwNDNkMjQ5MDdh
YjMyNDA4ZTUzODU0Y2Y3NTZmYWUzMDJkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKQEAgLTEwMyw3ICsx
MDMsNyBAQCB2b2lkIElEQkluZGV4QmFja2VuZEltcGw6Om9wZW5DdXJzb3JJbnRlcm5hbChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cgogICAgIGNhbGxiYWNrcy0+b25TdWNjZXNz
KGN1cnNvciwgY3Vyc29yLT5rZXkoKSwgY3Vyc29yLT5wcmltYXJ5S2V5KCksIGN1cnNvci0+dmFs
dWUoKSk7CiB9CiAKLXZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6b3BlbkN1cnNvcihQYXNzUmVm
UHRyPElEQktleVJhbmdlPiBwcnBLZXlSYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgSURC
SW5kZXhCYWNrZW5kSW1wbDo6b3BlbkN1cnNvcihQYXNzUmVmUHRyPElEQktleVJhbmdlPiBwcnBL
ZXlSYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0
aW9uUHRyLCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBJREJfVFJBQ0UoIklEQkluZGV4QmFja2Vu
ZEltcGw6Om9wZW5DdXJzb3IiKTsKICAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gaW5k
ZXggPSB0aGlzOwpAQCAtMTEyLDEwICsxMTIsMTAgQEAgdm9pZCBJREJJbmRleEJhY2tlbmRJbXBs
OjpvcGVuQ3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHBycEtleVJhbmdlLCB1bnNpZ24K
ICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uUHRyKTsKICAgICBpZiAoIXRy
YW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soCiAgICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2so
Jm9wZW5DdXJzb3JJbnRlcm5hbCwgaW5kZXgsIGtleVJhbmdlLCBkaXJlY3Rpb24sIElEQkN1cnNv
ckJhY2tlbmRJbnRlcmZhY2U6OkluZGV4Q3Vyc29yLCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uKSkp
Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZF
X0VSUjsKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0
ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0FCT1JUX0VSUikpOwogfQogCi12b2lkIElEQklu
ZGV4QmFja2VuZEltcGw6Om9wZW5LZXlDdXJzb3IoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcHJw
S2V5UmFuZ2UsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2Fj
dGlvblB0ciwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIElEQkluZGV4QmFja2VuZEltcGw6Om9w
ZW5LZXlDdXJzb3IoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcHJwS2V5UmFuZ2UsIHVuc2lnbmVk
IHNob3J0IGRpcmVjdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywg
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9u
Q29kZSYpCiB7CiAgICAgSURCX1RSQUNFKCJJREJJbmRleEJhY2tlbmRJbXBsOjpvcGVuS2V5Q3Vy
c29yIik7CiAgICAgUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+IGluZGV4ID0gdGhpczsKQEAg
LTEyNCw3ICsxMjQsNyBAQCB2b2lkIElEQkluZGV4QmFja2VuZEltcGw6Om9wZW5LZXlDdXJzb3Io
UGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcHJwS2V5UmFuZ2UsIHVucwogICAgIFJlZlB0cjxJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEltcGw6OmZyb20odHJhbnNhY3Rpb25QdHIpOwogICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVk
dWxlVGFzaygKICAgICAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmb3BlbkN1cnNvckludGVy
bmFsLCBpbmRleCwga2V5UmFuZ2UsIGRpcmVjdGlvbiwgSURCQ3Vyc29yQmFja2VuZEludGVyZmFj
ZTo6SW5kZXhLZXlDdXJzb3IsIGNhbGxiYWNrcywgdHJhbnNhY3Rpb24pKSkKLSAgICAgICAgZWMg
PSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSOworICAgICAg
ICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpJREJfQUJPUlRfRVJSKSk7CiB9CiAKIHZvaWQgSURCSW5kZXhCYWNrZW5kSW1w
bDo6Y291bnRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJJ
bmRleEJhY2tlbmRJbXBsPiBpbmRleCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24pCkBAIC0xNDUsMTMgKzE0NSwxMyBAQCB2b2lkIElE
QkluZGV4QmFja2VuZEltcGw6OmNvdW50SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFBhc3NSZWZQdHI8SURCSQogICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6bnVtYmVyVmFsdWUoY291bnQpKTsKIH0KIAotdm9pZCBJREJJbmRleEJhY2tlbmRJ
bXBsOjpjb3VudChQYXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+IGNhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFu
c2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIElEQkluZGV4QmFja2VuZEltcGw6
OmNvdW50KFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4gY2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0
aW9uUHRyLCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBJREJfVFJBQ0UoIklEQkluZGV4QmFja2Vu
ZEltcGw6OmNvdW50Iik7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRy
YW5zYWN0aW9uID0gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6ZnJvbSh0cmFuc2FjdGlvblB0
cik7CiAgICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKAogICAgICAgICAgICAgY3Jl
YXRlQ2FsbGJhY2tUYXNrKCZjb3VudEludGVybmFsLCB0aGlzLCByYW5nZSwgY2FsbGJhY2tzLCB0
cmFuc2FjdGlvbikpKQotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FD
VElPTl9JTkFDVElWRV9FUlI7CisgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFz
ZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9BQk9SVF9FUlIpKTsKIH0K
IAogdm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpnZXRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiBpbmRleCwgUGFzc1JlZlB0
cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFj
a3MsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24pCkBA
IC0yMTIsNyArMjEyLDcgQEAgdm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpnZXRLZXlJbnRlcm5h
bChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmUKIH0KIAogCi12b2lkIElE
QkluZGV4QmFja2VuZEltcGw6OmdldChQYXNzUmVmUHRyPElEQktleVJhbmdlPiBwcnBLZXlSYW5n
ZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lk
IElEQkluZGV4QmFja2VuZEltcGw6OmdldChQYXNzUmVmUHRyPElEQktleVJhbmdlPiBwcnBLZXlS
YW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYpCiB7CiAg
ICAgSURCX1RSQUNFKCJJREJJbmRleEJhY2tlbmRJbXBsOjpnZXQiKTsKICAgICBSZWZQdHI8SURC
SW5kZXhCYWNrZW5kSW1wbD4gaW5kZXggPSB0aGlzOwpAQCAtMjIwLDEwICsyMjAsMTAgQEAgdm9p
ZCBJREJJbmRleEJhY2tlbmRJbXBsOjpnZXQoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcHJwS2V5
UmFuZ2UsIFBhc3NSZWZQdHI8SUQKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3Mg
PSBwcnBDYWxsYmFja3M7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRy
YW5zYWN0aW9uID0gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6ZnJvbSh0cmFuc2FjdGlvblB0
cik7CiAgICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKGNyZWF0ZUNhbGxiYWNrVGFz
aygmZ2V0SW50ZXJuYWwsIGluZGV4LCBrZXlSYW5nZSwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbikp
KQotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElW
RV9FUlI7CisgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVh
dGUoSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9BQk9SVF9FUlIpKTsKIH0KIAotdm9pZCBJREJJ
bmRleEJhY2tlbmRJbXBsOjpnZXRLZXkoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcHJwS2V5UmFu
Z2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9p
ZCBJREJJbmRleEJhY2tlbmRJbXBsOjpnZXRLZXkoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcHJw
S2V5UmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmKQog
ewogICAgIElEQl9UUkFDRSgiSURCSW5kZXhCYWNrZW5kSW1wbDo6Z2V0S2V5Iik7CiAgICAgUmVm
UHRyPElEQkluZGV4QmFja2VuZEltcGw+IGluZGV4ID0gdGhpczsKQEAgLTIzMiw3ICsyMzIsNyBA
QCB2b2lkIElEQkluZGV4QmFja2VuZEltcGw6OmdldEtleShQYXNzUmVmUHRyPElEQktleVJhbmdl
PiBwcnBLZXlSYW5nZSwgUGFzc1JlZlB0cgogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsPiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmZyb20odHJh
bnNhY3Rpb25QdHIpOwogICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzaygKICAgICAg
ICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmZ2V0S2V5SW50ZXJuYWwsIGluZGV4LCBrZXlSYW5n
ZSwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbikpKQotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7CisgICAgICAgIGNhbGxiYWNrcy0+b25F
cnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9B
Qk9SVF9FUlIpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCmluZGV4IGNjNmMy
OGVmMjg0ZWZkNzNmYTY1MzFjZjBkNWE5OTBjZTNhOTdjMjIuLjRjYmU2M2QxMTVlMGFhMDQ0YjYw
Zjk0ZTU0YmZlZWFkYzk0ZTdiZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKQEAgLTg4LDEwICs4OCw3IEBAIFBhc3NSZWZQ
dHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBQYXNzCiAgICAgfQogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0g
SURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5z
YWN0aW9uLmdldCgpKTsKICAgICBtX2JhY2tlbmQtPmdldChrZXlSYW5nZSwgcmVxdWVzdCwgbV90
cmFuc2FjdGlvbi0+YmFja2VuZCgpLCBlYyk7Ci0gICAgaWYgKGVjKSB7Ci0gICAgICAgIHJlcXVl
c3QtPm1hcmtFYXJseURlYXRoKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KKyAgICBBU1NF
UlQoIWVjKTsKICAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CiB9CiAKQEAgLTIxOSwxMCAr
MjE2LDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6cHV0KElEQk9i
amVjdFN0b3JlQmFja2VuZEludGVyZmFjZTo6UHV0TW8KIAogICAgIFJlZlB0cjxJREJSZXF1ZXN0
PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIHNvdXJjZSwgbV90cmFuc2Fj
dGlvbi5nZXQoKSk7CiAgICAgbV9iYWNrZW5kLT5wdXRXaXRoSW5kZXhLZXlzKHNlcmlhbGl6ZWRW
YWx1ZS5yZWxlYXNlKCksIGtleS5yZWxlYXNlKCksIHB1dE1vZGUsIHJlcXVlc3QsIG1fdHJhbnNh
Y3Rpb24tPmJhY2tlbmQoKSwgaW5kZXhOYW1lcywgaW5kZXhLZXlzLCBlYyk7Ci0gICAgaWYgKGVj
KSB7Ci0gICAgICAgIHJlcXVlc3QtPm1hcmtFYXJseURlYXRoKCk7Ci0gICAgICAgIHJldHVybiAw
OwotICAgIH0KKyAgICBBU1NFUlQoIWVjKTsKICAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7
CiB9CiAKQEAgLTI0OCwxMCArMjQyLDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmpl
Y3RTdG9yZTo6ZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY28KIAogICAg
IFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQs
IElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKICAgICBtX2JhY2tl
bmQtPmRlbGV0ZUZ1bmN0aW9uKGtleVJhbmdlLCByZXF1ZXN0LCBtX3RyYW5zYWN0aW9uLT5iYWNr
ZW5kKCksIGVjKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgcmVxdWVzdC0+bWFya0Vhcmx5RGVh
dGgoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQorICAgIEFTU0VSVCghZWMpOwogICAgIHJl
dHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKIH0KIApAQCAtMjgyLDEwICsyNzMsNyBAQCBQYXNzUmVm
UHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpjbGVhcihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBFeAogCiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJS
ZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rp
b24uZ2V0KCkpOwogICAgIG1fYmFja2VuZC0+Y2xlYXIocmVxdWVzdCwgbV90cmFuc2FjdGlvbi0+
YmFja2VuZCgpLCBlYyk7Ci0gICAgaWYgKGVjKSB7Ci0gICAgICAgIHJlcXVlc3QtPm1hcmtFYXJs
eURlYXRoKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KKyAgICBBU1NFUlQoIWVjKTsKICAg
ICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CiB9CiAKQEAgLTUxNCwxMCArNTAyLDcgQEAgUGFz
c1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXgKICAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElE
QlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2Fj
dGlvbi5nZXQoKSk7CiAgICAgcmVxdWVzdC0+c2V0Q3Vyc29yRGV0YWlscyhJREJDdXJzb3JCYWNr
ZW5kSW50ZXJmYWNlOjpPYmplY3RTdG9yZUN1cnNvciwgZGlyZWN0aW9uKTsKICAgICBtX2JhY2tl
bmQtPm9wZW5DdXJzb3IocmFuZ2UsIGRpcmVjdGlvbiwgcmVxdWVzdCwgdGFza1R5cGUsIG1fdHJh
bnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMpOwotICAgIGlmIChlYykgewotICAgICAgICByZXF1ZXN0
LT5tYXJrRWFybHlEZWF0aCgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9CisgICAgQVNTRVJU
KCFlYyk7CiAgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOwogfQogCkBAIC01NjQsMTAgKzU0
OSw3IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmNvdW50KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhCiAgICAgfQogICAgIFJlZlB0cjxJREJSZXF1
ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRl
KHRoaXMpLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKICAgICBtX2JhY2tlbmQtPmNvdW50KHJhbmdl
LCByZXF1ZXN0LCBtX3RyYW5zYWN0aW9uLT5iYWNrZW5kKCksIGVjKTsKLSAgICBpZiAoZWMpIHsK
LSAgICAgICAgcmVxdWVzdC0+bWFya0Vhcmx5RGVhdGgoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgfQorICAgIEFTU0VSVCghZWMpOwogICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAppbmRleCA4MDViNzE1MjQwNjAxOWFmZjgwYzBl
MGE5YjgwODI1ZDBlZjA1YWNkLi43ODk5OTJhYjZlNWMzNGRmNDVjYjI5YTY1NWQ2YzlhNjc1NTUy
MWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcApAQCAtNzgsNyArNzgsNyBAQCBJREJP
YmplY3RTdG9yZU1ldGFkYXRhIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Om1ldGFkYXRhKCkg
Y29uc3QKICAgICByZXR1cm4gbWV0YWRhdGE7CiB9CiAKLXZvaWQgSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbDo6Z2V0KFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHBycEtleVJhbmdlLCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbDo6Z2V0KFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHBycEtleVJhbmdl
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBJ
REJfVFJBQ0UoIklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmdldCIpOwogICAgIFJlZlB0cjxJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSA9IHRoaXM7CkBAIC04Nyw3ICs4
Nyw3IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Z2V0KFBhc3NSZWZQdHI8SURC
S2V5UmFuZ2U+IHBycEtleVJhbmdlLCBQYXNzUmVmCiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGw+IHRyYW5zYWN0aW9uID0gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6ZnJv
bSh0cmFuc2FjdGlvblB0cik7CiAgICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKAog
ICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
OjpnZXRJbnRlcm5hbCwgb2JqZWN0U3RvcmUsIGtleVJhbmdlLCBjYWxsYmFja3MsIHRyYW5zYWN0
aW9uKSkpCi0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lO
QUNUSVZFX0VSUjsKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6
OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0FCT1JUX0VSUikpOwogfQogCiB2b2lk
IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmdldEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3Jl
LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFu
c2FjdGlvbikKQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZElt
cGw6OmdldEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPAogICAg
IGNhbGxiYWNrcy0+b25TdWNjZXNzKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbVdp
cmUod2lyZURhdGEpKTsKIH0KIAotdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpwdXRX
aXRoSW5kZXhLZXlzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBwcnBWYWx1ZSwg
UGFzc1JlZlB0cjxJREJLZXk+IHBycEtleSwgUHV0TW9kZSBwdXRNb2RlLCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uq
IHRyYW5zYWN0aW9uUHRyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgaW5kZXhOYW1lcywgY29uc3Qg
VmVjdG9yPEluZGV4S2V5cz4mIGluZGV4S2V5cywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dFdpdGhJbmRleEtleXMoUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IHBycFZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4gcHJwS2V5LCBQ
dXRNb2RlIHB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBpbmRleE5hbWVzLCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzPiYgaW5kZXhLZXlz
LCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGw6OnB1dFdpdGhJbmRleEtleXMiKTsKIApAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0V2l0aEluZGV4S2V5cyhQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1CiAKICAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soCiAg
ICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6
OnB1dEludGVybmFsLCBvYmplY3RTdG9yZSwgdmFsdWUsIGtleSwgcHV0TW9kZSwgY2FsbGJhY2tz
LCB0cmFuc2FjdGlvbiwgbmV3SW5kZXhOYW1lcy5yZWxlYXNlKCksIG5ld0luZGV4S2V5cy5yZWxl
YXNlKCkpKSkKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05f
SU5BQ1RJVkVfRVJSOworICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJv
cjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfQUJPUlRfRVJSKSk7CiB9CiAKIG5h
bWVzcGFjZSB7CkBAIC0zNjgsNyArMzY4LDcgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsOjpwdXRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjwKICAg
ICBjYWxsYmFja3MtPm9uU3VjY2VzcyhrZXkucmVsZWFzZSgpKTsKIH0KIAotdm9pZCBJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleVJhbmdl
PiBwcnBLZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29k
ZSYgZWMpCit2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUZ1bmN0aW9uKFBh
c3NSZWZQdHI8SURCS2V5UmFuZ2U+IHBycEtleVJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0
aW9uUHRyLCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGw6OmRlbGV0ZSIpOwogCkBAIC0zODEsNyArMzgxLDcgQEAgdm9pZCBJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleVJhbmdl
PiBwcnBLZXlSYW4KIAogICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzaygKICAgICAg
ICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVs
ZXRlSW50ZXJuYWwsIG9iamVjdFN0b3JlLCBrZXlSYW5nZSwgY2FsbGJhY2tzLCB0cmFuc2FjdGlv
bikpKQotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFD
VElWRV9FUlI7CisgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpj
cmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9BQk9SVF9FUlIpKTsKIH0KIAogdm9pZCBJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9y
ZSwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJh
bnNhY3Rpb24pCkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsOjpkZWxldGVJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlAKICAg
ICBjYWxsYmFja3MtPm9uU3VjY2VzcyhTZXJpYWxpemVkU2NyaXB0VmFsdWU6OnVuZGVmaW5lZFZh
bHVlKCkpOwogfQogCi12b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNsZWFyKFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsOjpjbGVhcihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2Fs
bGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBF
eGNlcHRpb25Db2RlJikKIHsKICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlQmFja2VuZElt
cGw6OmNsZWFyIik7CiAKQEAgLTQyNSw3ICs0MjUsNyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGw6OmNsZWFyKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIElE
QgogCiAgICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKAogICAgICAgICAgICAgY3Jl
YXRlQ2FsbGJhY2tUYXNrKCZJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjbGVhckludGVybmFs
LCBvYmplY3RTdG9yZSwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbikpKQotICAgICAgICBlYyA9IElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7CisgICAgICAgIGNh
bGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNl
cHRpb246OklEQl9BQk9SVF9FUlIpKTsKIH0KIAogdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsOjpjbGVhckludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlLCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRy
YW5zYWN0aW9uKQpAQCAtNTAzLDcgKzUwMyw3IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbDo6ZGVsZXRlSW5kZXhJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzCiAg
ICAgdHJhbnNhY3Rpb24tPmRpZENvbXBsZXRlVGFza0V2ZW50cygpOwogfQogCi12b2lkIElEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw6Om9wZW5DdXJzb3IoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4g
cHJwUmFuZ2UsIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbiwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlOjpU
YXNrVHlwZSB0YXNrVHlwZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2Fj
dGlvblB0ciwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZElt
cGw6Om9wZW5DdXJzb3IoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcHJwUmFuZ2UsIElEQkN1cnNv
cjo6RGlyZWN0aW9uIGRpcmVjdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxi
YWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSB0YXNrVHlwZSwg
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9u
Q29kZSYpCiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpvcGVu
Q3Vyc29yIik7CiAgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0
b3JlID0gdGhpczsKQEAgLTUxMiw3ICs1MTIsNyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGw6Om9wZW5DdXJzb3IoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcHJwUmFuZ2UsIElEQgog
ICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IElEQlRy
YW5zYWN0aW9uQmFja2VuZEltcGw6OmZyb20odHJhbnNhY3Rpb25QdHIpOwogICAgIGlmICghdHJh
bnNhY3Rpb24tPnNjaGVkdWxlVGFzaygKICAgICAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygm
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6b3BlbkN1cnNvckludGVybmFsLCBvYmplY3RTdG9y
ZSwgcmFuZ2UsIGRpcmVjdGlvbiwgY2FsbGJhY2tzLCB0YXNrVHlwZSwgdHJhbnNhY3Rpb24pKSkg
ewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElW
RV9FUlI7CisgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVh
dGUoSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9BQk9SVF9FUlIpKTsKICAgICB9CiB9CiAKQEAg
LTUzNiwxMyArNTM2LDEzIEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6b3BlbkN1
cnNvckludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzCiAgICAgY2FsbGJhY2tz
LT5vblN1Y2Nlc3MoY3Vyc29yLCBjdXJzb3ItPmtleSgpLCBjdXJzb3ItPnByaW1hcnlLZXkoKSwg
Y3Vyc29yLT52YWx1ZSgpKTsKIH0KIAotdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpj
b3VudChQYXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+IGNhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlv
blB0ciwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6
OmNvdW50KFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4gY2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0
aW9uUHRyLCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGw6OmNvdW50Iik7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGw+IHRyYW5zYWN0aW9uID0gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6ZnJvbSh0cmFuc2Fj
dGlvblB0cik7CiAgICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKAogICAgICAgICAg
ICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjb3VudElu
dGVybmFsLCB0aGlzLCByYW5nZSwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbikpKQotICAgICAgICBl
YyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7CisgICAg
ICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJh
c2VFeGNlcHRpb246OklEQl9BQk9SVF9FUlIpKTsKIH0KIAogdm9pZCBJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsOjpjb3VudEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVm
UHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlLCBQYXNzUmVmUHRyPElE
QktleVJhbmdlPiByYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFz
c1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKaW5kZXggNTRiY2Jk
ZWNjZWI2NTFiYzdhYzVlMWIxNTUxZTQ3MjQ0NTU4ZDNhYy4uMDZhZTllMjM1OTU3ZTAxMGMwY2Jk
NTFkNWY0OTk3OTMyMzgzYzMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCUmVxdWVzdC5jcHAKQEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIElEQlJlcXVlc3Q6
OmFib3J0KCkKICAgICBtX2Vycm9yLmNsZWFyKCk7CiAgICAgbV9lcnJvck1lc3NhZ2UgPSBTdHJp
bmcoKTsKICAgICBtX3Jlc3VsdC5jbGVhcigpOwotICAgIG9uRXJyb3IoSURCRGF0YWJhc2VFcnJv
cjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfQUJPUlRfRVJSLCAiVGhlIHRyYW5z
YWN0aW9uIHdhcyBhYm9ydGVkLCBzbyB0aGUgcmVxdWVzdCBjYW5ub3QgYmUgZnVsZmlsbGVkLiIp
KTsKKyAgICBvbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6SURCX0FCT1JUX0VSUikpOwogICAgIG1fcmVxdWVzdEFib3J0ZWQgPSB0cnVlOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQlJlcXVlc3RUZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCUmVxdWVzdFRlc3QuY3BwCmlu
ZGV4IDllMjQ1OWQzOThjM2E4YTE3MzY4MTVlOWNlYWRjODJhNmJkMDAzMmMuLjUyYTAzOGQ1YmY1
NzQ0Y2ZiNjJmZGFmMDkxNGMwYzEwN2IxZTEyNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvSURCUmVxdWVzdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvSURCUmVxdWVzdFRlc3QuY3BwCkBAIC01OCw2ICs1OCwyMSBAQCBURVNUKElE
QlJlcXVlc3RUZXN0LCBFdmVudHNBZnRlclN0b3BwaW5nKQogICAgIHJlcXVlc3QtPm9uU3VjY2Vz
cyhJREJLZXk6OmNyZWF0ZUludmFsaWQoKSwgSURCS2V5OjpjcmVhdGVJbnZhbGlkKCksIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6bnVsbFZhbHVlKCkpOwogfQogCitURVNUKElEQlJlcXVlc3RUZXN0
LCBBYm9ydEVycm9yQWZ0ZXJBYm9ydCkKK3sKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0ID0gMDsKKyAgICBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24gPSAwOworICAgIFJl
ZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElE
QkFueTo6Y3JlYXRlSW52YWxpZCgpLCB0cmFuc2FjdGlvbik7CisgICAgRVhQRUNUX0VRKHJlcXVl
c3QtPnJlYWR5U3RhdGUoKSwgInBlbmRpbmciKTsKKworICAgIC8vIFNpbXVsYXRlIHRoZSBJREJU
cmFuc2FjdGlvbiBoYXZpbmcgcmVjZWl2ZWQgb25BYm9ydCBmcm9tIGJhY2sgZW5kIGFuZCBhYm9y
dGluZyB0aGUgcmVxdWVzdDoKKyAgICByZXF1ZXN0LT5hYm9ydCgpOworCisgICAgLy8gTm93IHNp
bXVsYXRlIHRoZSBiYWNrIGVuZCBoYXZpbmcgZmlyZWQgYW4gYWJvcnQgZXJyb3IgYXQgdGhlIHJl
cXVlc3QgdG8gY2xlYXIgdXAgYW55IGludGVybWVkaWFyaWVzLgorICAgIC8vIEVuc3VyZSBhbiBh
c3NlcnRpb24gaXMgbm90IHJhaXNlZC4KKyAgICByZXF1ZXN0LT5vbkVycm9yKElEQkRhdGFiYXNl
RXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0FCT1JUX0VSUiwgIkRlc2Ny
aXB0aW9uIGdvZXMgaGVyZS4iKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlCiAKICNlbmRpZiAvLyBF
TkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>