<?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>211929</bug_id>
          
          <creation_ts>2020-05-14 15:57:41 -0700</creation_ts>
          <short_desc>ITP database should finalize all prepared statements before closing</short_desc>
          <delta_ts>2020-05-26 12:40: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>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=211958</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>211958</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kate Cheney">katherine_cheney</reporter>
          <assigned_to name="Kate Cheney">katherine_cheney</assigned_to>
          <cc>beidson</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>sihui_liu</cc>
    
    <cc>tsavell</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1652843</commentid>
    <comment_count>0</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-05-14 15:57:41 -0700</bug_when>
    <thetext>If the database connection is associated with unfinalized prepared statements or unfinished sqlite3_backup objects then sqlite3_close() will leave the database connection open and return SQLITE_BUSY (https://www.sqlite.org/c3ref/close.html).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652846</commentid>
    <comment_count>1</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-05-14 15:59:51 -0700</bug_when>
    <thetext>&lt;rdar://problem/63246945&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652881</commentid>
    <comment_count>2</comment_count>
      <attachid>399430</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-05-14 17:13:18 -0700</bug_when>
    <thetext>Created attachment 399430
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653119</commentid>
    <comment_count>3</comment_count>
      <attachid>399430</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-05-15 11:27:10 -0700</bug_when>
    <thetext>Comment on attachment 399430
Patch

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

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:345
&gt; +        ASSERT_NOT_REACHED();

According to https://www.sqlite.org/c3ref/finalize.html, sqlite3_finalize() can return error when the last execution of the statement fails, so maybe it&apos;s fine to ignore the error of finalize.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:656
&gt; +bool ResourceLoadStatisticsDatabaseStore::finalizeStatements()

I am not familiar with this code; why not use unique pointer for the statements and initialize them only when a statement is used? 
In that case, you can null out those statements before closing database. ~SQLiteStatement() will do finalize(). It should be easier to manage the lifetime of the objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653627</commentid>
    <comment_count>4</comment_count>
      <attachid>399649</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-05-18 09:10:02 -0700</bug_when>
    <thetext>Created attachment 399649
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653628</commentid>
    <comment_count>5</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-05-18 09:10:49 -0700</bug_when>
    <thetext>(In reply to Sihui Liu from comment #3)
&gt; Comment on attachment 399430 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=399430&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:345
&gt; &gt; +        ASSERT_NOT_REACHED();
&gt; 
&gt; According to https://www.sqlite.org/c3ref/finalize.html, sqlite3_finalize()
&gt; can return error when the last execution of the statement fails, so maybe
&gt; it&apos;s fine to ignore the error of finalize.
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:656
&gt; &gt; +bool ResourceLoadStatisticsDatabaseStore::finalizeStatements()
&gt; 
&gt; I am not familiar with this code; why not use unique pointer for the
&gt; statements and initialize them only when a statement is used? 
&gt; In that case, you can null out those statements before closing database.
&gt; ~SQLiteStatement() will do finalize(). It should be easier to manage the
&gt; lifetime of the objects.

Good idea! The most recent patch makes this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653784</commentid>
    <comment_count>6</comment_count>
      <attachid>399649</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-05-18 15:40:08 -0700</bug_when>
    <thetext>Comment on attachment 399649
Patch

Could the init code be in a function on this form:

if (!statementParam) {
  statementParam = makeUnique&lt;WebCore::SQLiteStatement&gt;(m_database, queryParam);
  if (statementParam-&gt;prepare() != SQLITE_OK) {
    RELEASE_LOG_ERROR(Network, &quot;%p - %s failed to prepare statement, error message: %{private}s&quot;, this, logStringParam, m_database.lastErrorMsg());
    ASSERT_NOT_REACHED();
    return;
  }
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653820</commentid>
    <comment_count>7</comment_count>
      <attachid>399685</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-05-18 17:11:04 -0700</bug_when>
    <thetext>Created attachment 399685
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653821</commentid>
    <comment_count>8</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-05-18 17:11:49 -0700</bug_when>
    <thetext>(In reply to John Wilander from comment #6)
&gt; Comment on attachment 399649 [details]
&gt; Patch
&gt; 
&gt; Could the init code be in a function on this form:
&gt; 
&gt; if (!statementParam) {
&gt;   statementParam = makeUnique&lt;WebCore::SQLiteStatement&gt;(m_database,
&gt; queryParam);
&gt;   if (statementParam-&gt;prepare() != SQLITE_OK) {
&gt;     RELEASE_LOG_ERROR(Network, &quot;%p - %s failed to prepare statement, error
&gt; message: %{private}s&quot;, this, logStringParam, m_database.lastErrorMsg());
&gt;     ASSERT_NOT_REACHED();
&gt;     return;
&gt;   }
&gt; }

Yes, this makes this patch much cleaner. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654025</commentid>
    <comment_count>9</comment_count>
      <attachid>399685</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-05-19 09:18:47 -0700</bug_when>
    <thetext>Comment on attachment 399685
Patch

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

Generally looks good.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:510
&gt; +        statement = makeUnique&lt;WebCore::SQLiteStatement&gt;(m_database, query);

ASSERT(m_database-&gt;isOpen());

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:529
&gt;      ASSERT_UNUSED(resetResult, resetResult == SQLITE_OK);

I see there are a lot of reset()s after each execution of statement. You can try use SQLiteStatementAutoResetScope. Make initializeStatement(rename it something like getScopedStatement) to return Optional&lt;SQLiteStatementAutoResetScope&gt;.

&gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:257
&gt; +        if (m_statisticsStore &amp;&amp; !isEphemeral() &amp;&amp; is&lt;ResourceLoadStatisticsDatabaseStore&gt;(*m_statisticsStore))
&gt; +            downcast&lt;ResourceLoadStatisticsDatabaseStore&gt;(*m_statisticsStore).close();
&gt; +

Seems like you can do the close() in ~ResourceLoadStatisticsDatabaseStore. Then you don&apos;t need the explicit close().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654029</commentid>
    <comment_count>10</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-05-19 09:28:09 -0700</bug_when>
    <thetext>(In reply to Sihui Liu from comment #9)
&gt; Comment on attachment 399685 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=399685&amp;action=review
&gt; 
&gt; Generally looks good.
&gt; 

Thanks for the feedback, this is super helpful.

&gt; &gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:510
&gt; &gt; +        statement = makeUnique&lt;WebCore::SQLiteStatement&gt;(m_database, query);
&gt; 
&gt; ASSERT(m_database-&gt;isOpen());
&gt; 

Good catch.

&gt; &gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:529
&gt; &gt;      ASSERT_UNUSED(resetResult, resetResult == SQLITE_OK);
&gt; 
&gt; I see there are a lot of reset()s after each execution of statement. You can
&gt; try use SQLiteStatementAutoResetScope. Make initializeStatement(rename it
&gt; something like getScopedStatement) to return
&gt; Optional&lt;SQLiteStatementAutoResetScope&gt;.
&gt; 

I didn&apos;t know that existed, great! I assume this means no need to call statement-&gt;reset()?

&gt; &gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:257
&gt; &gt; +        if (m_statisticsStore &amp;&amp; !isEphemeral() &amp;&amp; is&lt;ResourceLoadStatisticsDatabaseStore&gt;(*m_statisticsStore))
&gt; &gt; +            downcast&lt;ResourceLoadStatisticsDatabaseStore&gt;(*m_statisticsStore).close();
&gt; &gt; +
&gt; 
&gt; Seems like you can do the close() in ~ResourceLoadStatisticsDatabaseStore.
&gt; Then you don&apos;t need the explicit close().

Yes, good point. I will change this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654077</commentid>
    <comment_count>11</comment_count>
      <attachid>399751</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-05-19 11:13:44 -0700</bug_when>
    <thetext>Created attachment 399751
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654137</commentid>
    <comment_count>12</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-05-19 12:51:48 -0700</bug_when>
    <thetext>wincairo does not seem to like SQLiteStatementAutoResetScope</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654146</commentid>
    <comment_count>13</comment_count>
      <attachid>399762</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-05-19 13:09:29 -0700</bug_when>
    <thetext>Created attachment 399762
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654199</commentid>
    <comment_count>14</comment_count>
      <attachid>399762</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-05-19 14:58:36 -0700</bug_when>
    <thetext>Comment on attachment 399762
Patch

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

Given that Sihui has looked this over, I&apos;m OK with it too. See comments though.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:504
&gt; +SQLiteStatementAutoResetScope ResourceLoadStatisticsDatabaseStore::getScopedStatement(std::unique_ptr&lt;WebCore::SQLiteStatement&gt;&amp; statement, const String query, const String&amp; logString) const

Our style guide says no get prefix. If you get a name conflict with a local variable, you can call it with this-&gt;scopedStatement(). Can the query parameters be ref?

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:510
&gt; +            RELEASE_LOG_ERROR(Network, &quot;%p - ResourceLoadStatisticsDatabaseStore::%s failed to prepare statement, error message: %{private}s&quot;, this, logString.ascii().data(), m_database.lastErrorMsg());

I don&apos;t remember the reason for keeping these error messages private. Can they leak something about the user&apos;s browsing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654204</commentid>
    <comment_count>15</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-05-19 15:18:21 -0700</bug_when>
    <thetext>(In reply to John Wilander from comment #14)
&gt; Comment on attachment 399762 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=399762&amp;action=review
&gt; 
&gt; Given that Sihui has looked this over, I&apos;m OK with it too. See comments
&gt; though.
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:504
&gt; &gt; +SQLiteStatementAutoResetScope ResourceLoadStatisticsDatabaseStore::getScopedStatement(std::unique_ptr&lt;WebCore::SQLiteStatement&gt;&amp; statement, const String query, const String&amp; logString) const
&gt; 
&gt; Our style guide says no get prefix. If you get a name conflict with a local
&gt; variable, you can call it with this-&gt;scopedStatement(). Can the query
&gt; parameters be ref?
&gt; 
Yes to ref, I will change. And I&apos;ll update the function name.

&gt; &gt; 
Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:510
&gt; &gt; +            RELEASE_LOG_ERROR(Network, &quot;%p - ResourceLoadStatisticsDatabaseStore::%s failed to prepare statement, error message: %{private}s&quot;, this, logString.ascii().data(), m_database.lastErrorMsg());
&gt; 
&gt; I don&apos;t remember the reason for keeping these error messages private. Can
&gt; they leak something about the user&apos;s browsing?

Good point, this can probably be public.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654205</commentid>
    <comment_count>16</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-05-19 15:20:07 -0700</bug_when>
    <thetext>(In reply to katherine_cheney from comment #15)
&gt; (In reply to John Wilander from comment #14)
&gt; &gt; Comment on attachment 399762 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=399762&amp;action=review
&gt; &gt; 
&gt; &gt; Given that Sihui has looked this over, I&apos;m OK with it too. See comments
&gt; &gt; though.
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:504
&gt; &gt; &gt; +SQLiteStatementAutoResetScope ResourceLoadStatisticsDatabaseStore::getScopedStatement(std::unique_ptr&lt;WebCore::SQLiteStatement&gt;&amp; statement, const String query, const String&amp; logString) const
&gt; &gt; 
&gt; &gt; Our style guide says no get prefix. If you get a name conflict with a local
&gt; &gt; variable, you can call it with this-&gt;scopedStatement(). Can the query
&gt; &gt; parameters be ref?
&gt; &gt; 
&gt; Yes to ref, I will change. And I&apos;ll update the function name.
&gt; 
&gt; &gt; &gt; 
&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.
&gt; cpp:510
&gt; &gt; &gt; +            RELEASE_LOG_ERROR(Network, &quot;%p - ResourceLoadStatisticsDatabaseStore::%s failed to prepare statement, error message: %{private}s&quot;, this, logString.ascii().data(), m_database.lastErrorMsg());
&gt; &gt; 
&gt; &gt; I don&apos;t remember the reason for keeping these error messages private. Can
&gt; &gt; they leak something about the user&apos;s browsing?
&gt; 
&gt; Good point, this can probably be public.

Some need to be private because they could potentially leak information about bound values, like domains. But just preparing statements is not leaking anything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654207</commentid>
    <comment_count>17</comment_count>
      <attachid>399774</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-05-19 15:35:36 -0700</bug_when>
    <thetext>Created attachment 399774
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654213</commentid>
    <comment_count>18</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-19 15:55:53 -0700</bug_when>
    <thetext>Committed r261892: &lt;https://trac.webkit.org/changeset/261892&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 399774.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654499</commentid>
    <comment_count>19</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2020-05-20 10:12:18 -0700</bug_when>
    <thetext>It looks like the changes here

broke multiple API tests. tracking here: https://bugs.webkit.org/show_bug.cgi?id=212153</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654502</commentid>
    <comment_count>20</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-05-20 10:17:58 -0700</bug_when>
    <thetext>(In reply to Truitt Savell from comment #19)
&gt; It looks like the changes here
&gt; 
&gt; broke multiple API tests. tracking here:
&gt; https://bugs.webkit.org/show_bug.cgi?id=212153

Weird EWS didn&apos;t catch this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654509</commentid>
    <comment_count>21</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-05-20 10:34:29 -0700</bug_when>
    <thetext>(In reply to katherine_cheney from comment #20)
&gt; (In reply to Truitt Savell from comment #19)
&gt; &gt; It looks like the changes here
&gt; &gt; 
&gt; &gt; broke multiple API tests. tracking here:
&gt; &gt; https://bugs.webkit.org/show_bug.cgi?id=212153
&gt; 
&gt; Weird EWS didn&apos;t catch this.

WK2 EWS runs release, not debug :/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654510</commentid>
    <comment_count>22</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-05-20 10:35:16 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #21)
&gt; (In reply to katherine_cheney from comment #20)
&gt; &gt; (In reply to Truitt Savell from comment #19)
&gt; &gt; &gt; It looks like the changes here
&gt; &gt; &gt; 
&gt; &gt; &gt; broke multiple API tests. tracking here:
&gt; &gt; &gt; https://bugs.webkit.org/show_bug.cgi?id=212153
&gt; &gt; 
&gt; &gt; Weird EWS didn&apos;t catch this.
&gt; 
&gt; WK2 EWS runs release, not debug :/

:(</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399430</attachid>
            <date>2020-05-14 17:13:18 -0700</date>
            <delta_ts>2020-05-18 09:10:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211929-20200514171318.patch</filename>
            <type>text/plain</type>
            <size>9494</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDE1YTFmYTlhYjRiNTg5OGY0
MWM3OTY5NmY3N2IxNGY2MDMwODU5YmIuLmI5NGQ1MzliYjBhNzA4MjU4ZGI2MDhhZjk3MDFiMDAw
ODQwOWEyZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjAtMDUtMTQgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgSVRQIGRhdGFiYXNl
IHNob3VsZCBmaW5hbGl6ZSBhbGwgcHJlcGFyZWQgc3RhdGVtZW50cyBiZWZvcmUgY2xvc2luZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExOTI5Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MzI0Njk0NT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgY2xvc2UoKSBmdW5jdGlvbiB3aGljaCBmaW5h
bGl6ZXMgYWxsIHByZXBhcmVkIHN0YXRlbWVudHMgYmVmb3JlCisgICAgICAgIGNsb3NpbmcgdGhl
IGRhdGFiYXNlLiBBbnkgY2FsbHMgdG8gbV9kYXRhYmFzZS5jbG9zZSgpIHNob3VsZCBiZQorICAg
ICAgICByZXBsYWNlZCB3aXRoIHRoaXMgY2FsbC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xvc2Up
OgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
aXNNaWdyYXRpb25OZWNlc3NhcnkpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6b3BlbkFuZFVwZGF0ZVNjaGVtYUlmTmVjZXNzYXJ5KToKKyAg
ICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmZpbmFs
aXplU3RhdGVtZW50cyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpmbHVzaEFuZERlc3Ry
b3lQZXJzaXN0ZW50U3RvcmUpOgorCiAyMDIwLTA1LTEyICBDYXJsb3MgR2FyY2lhIENhbXBvcyAg
PGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBSZXdvcmsgZHJhZyBhbmQgZHJv
cCBoYW5kbGluZyBpbiBwcmVwYXJhdGlvbiBmb3IgR1RLNApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKaW5kZXggMzFlOTE5OTg2NTg2
MDAyMzFkNjRjYmMwNDkzMDFjYzVjM2FmNWI0OC4uN2FlYjliODg0N2EzODkxOGZiYzNlZGY1OTRh
MzkwNGQ1OWY1MGM4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmUuY3BwCkBAIC0zMzgsNiArMzM4LDE3IEBAIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZShXZWJSZXNvCiAgICAgfSk7CiB9CiAKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OmNsb3NlKCkKK3sKKyAgICBpZiAoIWZpbmFsaXplU3RhdGVtZW50cygpKSB7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpjbG9zZSgpIGZhaWxlZCB0byBmaW5hbGl6ZSBzdGF0ZW1lbnRz
LCBlcnJvciBtZXNzYWdlOiAlIiBQVUJMSUNfTE9HX1NUUklORyAiLCBkYXRhYmFzZSBwYXRoOiAl
IiBQVUJMSUNfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSwgbV9z
dG9yYWdlRGlyZWN0b3J5UGF0aC51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgfQorCisgICAgaWYgKG1fZGF0YWJhc2UuaXNPcGVuKCkpCisgICAgICAg
IG1fZGF0YWJhc2UuY2xvc2UoKTsKK30KKwogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6b3BlbklUUERhdGFiYXNlKCkKIHsKICAgICBpZiAoIUZpbGVTeXN0ZW06OmZp
bGVFeGlzdHMobV9zdG9yYWdlRGlyZWN0b3J5UGF0aCkpCkBAIC00MjEsNyArNDMyLDcgQEAgYm9v
bCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aXNNaWdyYXRpb25OZWNlc3Nh
cnkoKQogICAgIC8vIElmIHRoZXJlIGlzIG5vIHRhYmxlIGF0IGFsbCwgb3IgdGhlcmUgaXMgYW4g
ZXJyb3IgZXhlY3V0aW5nIHRoZSBmZXRjaCwgZGVsZXRlIGFuZCByZW9wZW4gdGhlIGZpbGUuCiAg
ICAgaWYgKHN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX1JPVykgewogICAgICAgICBMT0dfRVJS
T1IoIkVycm9yIGV4ZWN1dGluZyBzdGF0ZW1lbnQgdG8gZmV0Y2ggc2NoZW1hLiIpOwotICAgICAg
ICBtX2RhdGFiYXNlLmNsb3NlKCk7CisgICAgICAgIGNsb3NlKCk7CiAgICAgICAgIEZpbGVTeXN0
ZW06OmRlbGV0ZUZpbGUobV9zdG9yYWdlRGlyZWN0b3J5UGF0aCk7CiAgICAgICAgIG9wZW5JVFBE
YXRhYmFzZSgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01MTksNyArNTMwLDcgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6b3BlbkFuZFVwZGF0ZVNjaGVt
YUlmTmVjZXNzYXJ5KCkKICAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gT2JzZXJ2ZWREb21haW5z
IHRhYmxlIGF0IGFsbCwgb3IgdGhlcmUgaXMgYW4gZXJyb3IgZXhlY3V0aW5nIHRoZSBmZXRjaCwg
ZGVsZXRlIHRoZSBmaWxlLgogICAgICAgICBpZiAoc3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVf
Uk9XKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIkVycm9yIGV4ZWN1dGluZyBzdGF0ZW1lbnQg
dG8gZmV0Y2ggc2NoZW1hIGZvciB0aGUgT2JzZXJ2ZWQgRG9tYWlucyB0YWJsZS4iKTsKLSAgICAg
ICAgICAgIG1fZGF0YWJhc2UuY2xvc2UoKTsKKyAgICAgICAgICAgIGNsb3NlKCk7CiAgICAgICAg
ICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fc3RvcmFnZURpcmVjdG9yeVBhdGgpOwogICAg
ICAgICAgICAgb3BlbklUUERhdGFiYXNlKCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC01MzMs
NyArNTQ0LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6b3Bl
bkFuZFVwZGF0ZVNjaGVtYUlmTmVjZXNzYXJ5KCkKICAgICAvLyBJZiB0aGUgT2JzZXJ2ZWREb21h
aW5zIHNjaGVtYSBpbiB0aGUgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyBkaXJlY3RvcnkgaXMgbm90
IHRoZSBjdXJyZW50IHNjaGVtYSwgZGVsZXRlIHRoZSBkYXRhYmFzZSBmaWxlLgogICAgIC8vIEZJ
WE1FOiBNaWdyYXRlIG9sZCBPYnNlcnZlZERvbWFpbnMgZGF0YSB0byBuZXcgdGFibGUgc2NoZW1h
LgogICAgIGlmIChjdXJyZW50U2NoZW1hICE9IE9ic2VydmVkRG9tYWluc1RhYmxlU2NoZW1hVjEo
KSAmJiBjdXJyZW50U2NoZW1hICE9IE9ic2VydmVkRG9tYWluc1RhYmxlU2NoZW1hVjFBbHRlcm5h
dGUoKSkgewotICAgICAgICBtX2RhdGFiYXNlLmNsb3NlKCk7CisgICAgICAgIGNsb3NlKCk7CiAg
ICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9zdG9yYWdlRGlyZWN0b3J5UGF0aCk7CiAg
ICAgICAgIG9wZW5JVFBEYXRhYmFzZSgpOwogICAgIH0gZWxzZQpAQCAtNjQyLDYgKzY1Myw1NyBA
QCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjcmVhdGVTY2hlbWEo
KQogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpmaW5hbGl6ZVN0YXRlbWVudHMoKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOworCisgICAgaWYgKG1fb2JzZXJ2ZWREb21haW5Db3VudC5maW5hbGl6ZSgpICE9
IFNRTElURV9PSworICAgICAgICB8fCBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50LmZp
bmFsaXplKCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1faW5zZXJ0VG9wTGV2ZWxEb21haW5T
dGF0ZW1lbnQuZmluYWxpemUoKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9kb21haW5JREZy
b21TdHJpbmdTdGF0ZW1lbnQuZmluYWxpemUoKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9z
dWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5FeGlzdHMuZmluYWxpemUoKSAhPSBTUUxJVEVfT0sK
KyAgICAgICAgfHwgbV9zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5FeGlzdHMuZmluYWxp
emUoKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0
c1RvRXhpc3RzLmZpbmFsaXplKCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1fdXBkYXRlTGFz
dFNlZW5TdGF0ZW1lbnQuZmluYWxpemUoKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV91cGRh
dGVEYXRhUmVjb3Jkc1JlbW92ZWRTdGF0ZW1lbnQuZmluYWxpemUoKSAhPSBTUUxJVEVfT0sKKyAg
ICAgICAgfHwgbV9tb3N0UmVjZW50VXNlckludGVyYWN0aW9uU3RhdGVtZW50LmZpbmFsaXplKCkg
IT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1fdXBkYXRlUHJldmFsZW50UmVzb3VyY2VTdGF0ZW1l
bnQuZmluYWxpemUoKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9pc1ByZXZhbGVudFJlc291
cmNlU3RhdGVtZW50LmZpbmFsaXplKCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1fdXBkYXRl
VmVyeVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50LmZpbmFsaXplKCkgIT0gU1FMSVRFX09LCisg
ICAgICAgIHx8IG1faXNWZXJ5UHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQuZmluYWxpemUoKSAh
PSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9jbGVhclByZXZhbGVudFJlc291cmNlU3RhdGVtZW50
LmZpbmFsaXplKCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1faGFkVXNlckludGVyYWN0aW9u
U3RhdGVtZW50LmZpbmFsaXplKCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1fdXBkYXRlR3Jh
bmRmYXRoZXJlZFN0YXRlbWVudC5maW5hbGl6ZSgpICE9IFNRTElURV9PSworICAgICAgICB8fCBt
X3VwZGF0ZUlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWxTdGF0ZW1lbnQuZmlu
YWxpemUoKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9pc0dyYW5kZmF0aGVyZWRTdGF0ZW1l
bnQuZmluYWxpemUoKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9maW5kRXhwaXJlZFVzZXJJ
bnRlcmFjdGlvblN0YXRlbWVudC5maW5hbGl6ZSgpICE9IFNRTElURV9PSworICAgICAgICB8fCBt
X3RvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbUV4aXN0cy5maW5hbGl6ZSgpICE9IFNRTElURV9P
SworICAgICAgICB8fCBtX3RvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHNFeGlzdHMuZmlu
YWxpemUoKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9jb3VudFByZXZhbGVudFJlc291cmNl
c1N0YXRlbWVudC5maW5hbGl6ZSgpICE9IFNRTElURV9PSworICAgICAgICB8fCBtX2NvdW50UHJl
dmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudC5maW5hbGl6ZSgpICE9
IFNRTElURV9PSworICAgICAgICB8fCBtX2NvdW50UHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVz
ZXJJbnRlcmFjdGlvblN0YXRlbWVudC5maW5hbGl6ZSgpICE9IFNRTElURV9PSworICAgICAgICB8
fCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC5maW5hbGl6ZSgpICE9IFNR
TElURV9PSworICAgICAgICB8fCBtX2dldEFsbERvbWFpbnNTdGF0ZW1lbnQuZmluYWxpemUoKSAh
PSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9kb21haW5TdHJpbmdGcm9tRG9tYWluSURTdGF0ZW1l
bnQuZmluYWxpemUoKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9nZXRBbGxTdWJTdGF0aXN0
aWNzU3RhdGVtZW50LmZpbmFsaXplKCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1fc3RvcmFn
ZUFjY2Vzc0V4aXN0c1N0YXRlbWVudC5maW5hbGl6ZSgpICE9IFNRTElURV9PSworICAgICAgICB8
fCBtX2dldE1vc3RSZWNlbnRseVVwZGF0ZWRUaW1lc3RhbXBTdGF0ZW1lbnQuZmluYWxpemUoKSAh
PSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9saW5rRGVjb3JhdGlvbkV4aXN0c1N0YXRlbWVudC5m
aW5hbGl6ZSgpICE9IFNRTElURV9PSworICAgICAgICB8fCBtX3NjcmlwdExvYWRFeGlzdHNTdGF0
ZW1lbnQuZmluYWxpemUoKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9zdWJGcmFtZUV4aXN0
c1N0YXRlbWVudC5maW5hbGl6ZSgpICE9IFNRTElURV9PSworICAgICAgICB8fCBtX3N1YlJlc291
cmNlRXhpc3RzU3RhdGVtZW50LmZpbmFsaXplKCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1f
dW5pcXVlUmVkaXJlY3RFeGlzdHNTdGF0ZW1lbnQuZmluYWxpemUoKSAhPSBTUUxJVEVfT0sKKyAg
ICAgICAgfHwgbV9vYnNlcnZlZERvbWFpbnNFeGlzdHNTdGF0ZW1lbnQuZmluYWxpemUoKSAhPSBT
UUxJVEVfT0sKKyAgICAgICAgfHwgbV9yZW1vdmVBbGxEYXRhU3RhdGVtZW50LmZpbmFsaXplKCkg
IT0gU1FMSVRFX09LCisgICAgICAgICkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3
b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZmluYWxpemVT
dGF0ZW1lbnRzIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJSIgUFVCTElDX0xPR19TVFJJTkcsIHRo
aXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOwor
fQorCiBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcmVwYXJlU3Rh
dGVtZW50cygpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCmluZGV4IGI0N2Q1
MmRmMmI0YTVlOGRlODcxNjQxMmUxYWFkNTM5MDdhZDNkOWIuLmY5NDE2NGU1ZjRlZmM2Y2M2YWI2
ODk5ODA3ZGY3NGU3ZjAzODM2NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCkBAIC04NCw2ICs4NCw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIG1lcmdlU3RhdGlzdGljcyhWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBjbGVhcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJy
aWRlOwogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgY2xvc2Uo
KTsKIAogICAgIFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFy
dHlEYXRhPiBhZ2dyZWdhdGVkVGhpcmRQYXJ0eURhdGEoKSBjb25zdCBvdmVycmlkZTsKICAgICB2
b2lkIHVwZGF0ZUNvb2tpZUJsb2NraW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3Zl
cnJpZGU7CkBAIC0yMzAsNiArMjMxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGNyZWF0ZVVuaXF1
ZUluZGljZXMoKTsKICAgICBib29sIGNyZWF0ZVNjaGVtYSgpOwogICAgIGJvb2wgcHJlcGFyZVN0
YXRlbWVudHMoKTsKKyAgICBib29sIGZpbmFsaXplU3RhdGVtZW50cygpOwogICAgIFN0cmluZyBl
bnN1cmVBbmRNYWtlRG9tYWluTGlzdChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYp
OwogCiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
Y3BwCmluZGV4IDUzODdiNzY5MjRhN2I0MDdhMzYxMjFhYjg4YzlkZWVjODIyMWY4MWEuLjk1NTM2
ZDg3ZDEzY2NhNDIwODVkNjAxZmUyNmNiOGUwZGUwNTc1Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC0yNTIsNiArMjUyLDkgQEAgdm9p
ZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmZsdXNoQW5kRGVzdHJveVBlcnNpc3Rl
bnRTdG9yZShDb21wbGV0aW9uSGEKICAgICAvLyBpcyBkZXN0cm95ZWQgYmVjYXVzZSBpdCBoYXMg
YSBDKysgcmVmZXJlbmNlIHRvIHVzLgogICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgbV9wZXJz
aXN0ZW50U3RvcmFnZSA9IG51bGxwdHI7CisgICAgICAgIGlmICghaXNFcGhlbWVyYWwoKSAmJiBp
czxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZT4oKm1fc3RhdGlzdGljc1N0b3Jl
KSkKKyAgICAgICAgICAgIGRvd25jYXN0PFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlPigqbV9zdGF0aXN0aWNzU3RvcmUpLmNsb3NlKCk7CisKICAgICAgICAgbV9zdGF0aXN0aWNz
U3RvcmUgPSBudWxscHRyOwogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIH0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399649</attachid>
            <date>2020-05-18 09:10:02 -0700</date>
            <delta_ts>2020-05-18 17:11:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211929-20200518091002.patch</filename>
            <type>text/plain</type>
            <size>96456</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNzY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDcxNmExZDI0Nzg1ZTE5NWRm
MmNiMGMxYjM2MTFjMTNhNjhjYzU0YzYuLjY5OGY2ZmVkZTJhNzQ5YTkzMmUxMGQxNDgxM2E5ZGMx
MTgwZGM1OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMjAtMDUtMTggIGthdGUgY2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgSVRQIGRhdGFiYXNl
IHNob3VsZCBmaW5hbGl6ZSBhbGwgcHJlcGFyZWQgc3RhdGVtZW50cyBiZWZvcmUgY2xvc2luZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExOTI5Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MzI0Njk0NT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGJlaGF2aW9yIGNvbmZpcm1l
ZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICBDb252ZXJ0IGFsbCBTUUxpdGUgc3RhdGVt
ZW50IG9iamVjdHMgdG8gYmUgdW5pcXVlIHBvaW50ZXJzIHRvIGJldHRlcgorICAgICAgICBtYW5h
Z2UgdGhlIGxpZmV0aW1lIG9mIGVhY2ggc3RhdGVtZW50IG9iamVjdC4gT25seSBpbml0aWFsaXpl
IGFuZAorICAgICAgICBwcmVwYXJlIGFuIG9iamVjdCB3aGVuIGl0IGlzIG5lZWRlZCBpbnN0ZWFk
IG9mIHByZXBhcmluZyBhbGwgb2JqZWN0cworICAgICAgICBhdCBvbmNlLiBTZXQgZWFjaCBzdGF0
ZW1lbnQgdG8gbnVsbCBiZWZvcmUgY2xvc2luZyB0aGUgZGF0YWJhc2UKKyAgICAgICAgYmVjYXVz
ZSB+U1FMaXRlU3RhdGVtZW50KCkgd2lsbCBmaW5hbGl6ZSB0aGUgc3RhdGVtZW50LgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbG9zZSk6
CisgICAgICAgIChXZWJLaXQ6OnJlc2V0U3RhdGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNoZWNrRm9yTWlzc2luZ1RhYmxlc0lu
U2NoZW1hKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OmlzTWlncmF0aW9uTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om9wZW5BbmRVcGRhdGVTY2hlbWFJZk5lY2Vzc2Fy
eSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
Ojppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OmRlc3Ryb3lTdGF0ZW1lbnRzKToKKyAgICAgICAgKFdlYktpdDo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydE9ic2VydmVkRG9tYWluKToK
KyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJl
bGF0aW9uc2hpcEV4aXN0cyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkb21haW5JRCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptZXJnZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptZXJnZVN0YXRpc3Rp
Yyk6CisgICAgICAgIChXZWJLaXQ6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQpOgorICAgICAgICAo
V2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJlcGFyZVN0YXRl
bWVudHMpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaDoKKyAgICAgICAgVXBkYXRlZCBhbGwg
c3RhdGVtZW50IHZhcmlhYmxlcyB0byBlbmQgd2l0aCAiU3RhdGVtZW50IiB0byBmb2xsb3cgdGhl
CisgICAgICAgIGVzdGFibGlzaGVkIHBhdHRlcm4uCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Zmx1c2hBbmREZXN0cm95
UGVyc2lzdGVudFN0b3JlKToKKwogMjAyMC0wNS0xNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFtpT1MgU2ltdWxhdG9yXSBUZXN0V2ViS2l0
QVBJLl9XS0Rvd25sb2FkLlJlc3VtZSBpcyBhIGZsYWt5IGNyYXNoCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAppbmRleCAzMWU5MTk5
ODY1ODYwMDIzMWQ2NGNiYzA0OTMwMWNjNWMzYWY1YjQ4Li40ZGY1MDNlMmJjYWFhNWI3MzZkODEw
N2MwYmRlNDYwZWVhMWY5M2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTI3NSw0NCArMjc1LDYgQEAgc3RhdGljIGNv
bnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBjcmVhdGVUYWJsZVF1ZXJpZXMoKQogUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlKFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYgc3RvcmUsIFdvcmtRdWV1
ZSYgd29ya1F1ZXVlLCBTaG91bGRJbmNsdWRlTG9jYWxob3N0IHNob3VsZEluY2x1ZGVMb2NhbGhv
c3QsIGNvbnN0IFN0cmluZyYgc3RvcmFnZURpcmVjdG9yeVBhdGgsIFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCkKICAgICA6IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShzdG9yZSwgd29ya1F1
ZXVlLCBzaG91bGRJbmNsdWRlTG9jYWxob3N0KQogICAgICwgbV9zdG9yYWdlRGlyZWN0b3J5UGF0
aChzdG9yYWdlRGlyZWN0b3J5UGF0aCArICIvb2JzZXJ2YXRpb25zLmRiIikKLSAgICAsIG1fb2Jz
ZXJ2ZWREb21haW5Db3VudChtX2RhdGFiYXNlLCBvYnNlcnZlZERvbWFpbkNvdW50UXVlcnkpCi0g
ICAgLCBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50KG1fZGF0YWJhc2UsIGluc2VydE9i
c2VydmVkRG9tYWluUXVlcnkpCi0gICAgLCBtX2luc2VydFRvcExldmVsRG9tYWluU3RhdGVtZW50
KG1fZGF0YWJhc2UsIGluc2VydFRvcExldmVsRG9tYWluUXVlcnkpCi0gICAgLCBtX2RvbWFpbklE
RnJvbVN0cmluZ1N0YXRlbWVudChtX2RhdGFiYXNlLCBkb21haW5JREZyb21TdHJpbmdRdWVyeSkK
LSAgICAsIG1fdG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tRXhpc3RzKG1fZGF0YWJhc2UsIHRv
cEZyYW1lTGlua0RlY29yYXRpb25zRnJvbUV4aXN0c1F1ZXJ5KQotICAgICwgbV90b3BGcmFtZUxv
YWRlZFRoaXJkUGFydHlTY3JpcHRzRXhpc3RzKG1fZGF0YWJhc2UsIHRvcEZyYW1lTG9hZGVkVGhp
cmRQYXJ0eVNjcmlwdHNFeGlzdHNRdWVyeSkKLSAgICAsIG1fc3ViZnJhbWVVbmRlclRvcEZyYW1l
RG9tYWluRXhpc3RzKG1fZGF0YWJhc2UsIHN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbkV4aXN0
c1F1ZXJ5KQotICAgICwgbV9zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5FeGlzdHMobV9k
YXRhYmFzZSwgc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluRXhpc3RzUXVlcnkpCi0gICAg
LCBtX3N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG9FeGlzdHMobV9kYXRhYmFzZSwgc3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdHNUb0V4aXN0c1F1ZXJ5KQotICAgICwgbV9tb3N0UmVjZW50VXNl
ckludGVyYWN0aW9uU3RhdGVtZW50KG1fZGF0YWJhc2UsIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rp
b25RdWVyeSkKLSAgICAsIG1fdXBkYXRlTGFzdFNlZW5TdGF0ZW1lbnQobV9kYXRhYmFzZSwgdXBk
YXRlTGFzdFNlZW5RdWVyeSkKLSAgICAsIG1fdXBkYXRlRGF0YVJlY29yZHNSZW1vdmVkU3RhdGVt
ZW50KG1fZGF0YWJhc2UsIHVwZGF0ZURhdGFSZWNvcmRzUmVtb3ZlZFF1ZXJ5KQotICAgICwgbV91
cGRhdGVQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudChtX2RhdGFiYXNlLCB1cGRhdGVQcmV2YWxl
bnRSZXNvdXJjZVF1ZXJ5KQotICAgICwgbV9pc1ByZXZhbGVudFJlc291cmNlU3RhdGVtZW50KG1f
ZGF0YWJhc2UsIGlzUHJldmFsZW50UmVzb3VyY2VRdWVyeSkKLSAgICAsIG1fdXBkYXRlVmVyeVBy
ZXZhbGVudFJlc291cmNlU3RhdGVtZW50KG1fZGF0YWJhc2UsIHVwZGF0ZVZlcnlQcmV2YWxlbnRS
ZXNvdXJjZVF1ZXJ5KQotICAgICwgbV9pc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudCht
X2RhdGFiYXNlLCBpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZVF1ZXJ5KQotICAgICwgbV9jbGVhclBy
ZXZhbGVudFJlc291cmNlU3RhdGVtZW50KG1fZGF0YWJhc2UsIGNsZWFyUHJldmFsZW50UmVzb3Vy
Y2VRdWVyeSkKLSAgICAsIG1faGFkVXNlckludGVyYWN0aW9uU3RhdGVtZW50KG1fZGF0YWJhc2Us
IGhhZFVzZXJJbnRlcmFjdGlvblF1ZXJ5KQotICAgICwgbV91cGRhdGVHcmFuZGZhdGhlcmVkU3Rh
dGVtZW50KG1fZGF0YWJhc2UsIHVwZGF0ZUdyYW5kZmF0aGVyZWRRdWVyeSkKLSAgICAsIG1fdXBk
YXRlSXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbFN0YXRlbWVudChtX2RhdGFi
YXNlLCB1cGRhdGVJc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsUXVlcnkpCi0g
ICAgLCBtX2lzR3JhbmRmYXRoZXJlZFN0YXRlbWVudChtX2RhdGFiYXNlLCBpc0dyYW5kZmF0aGVy
ZWRRdWVyeSkKLSAgICAsIG1fZmluZEV4cGlyZWRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQobV9k
YXRhYmFzZSwgZmluZEV4cGlyZWRVc2VySW50ZXJhY3Rpb25RdWVyeSkKLSAgICAsIG1fY291bnRQ
cmV2YWxlbnRSZXNvdXJjZXNTdGF0ZW1lbnQobV9kYXRhYmFzZSwgY291bnRQcmV2YWxlbnRSZXNv
dXJjZXNRdWVyeSkKLSAgICAsIG1fY291bnRQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVy
YWN0aW9uU3RhdGVtZW50KG1fZGF0YWJhc2UsIGNvdW50UHJldmFsZW50UmVzb3VyY2VzV2l0aFVz
ZXJJbnRlcmFjdGlvblF1ZXJ5KQotICAgICwgbV9jb3VudFByZXZhbGVudFJlc291cmNlc1dpdGhv
dXRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQobV9kYXRhYmFzZSwgY291bnRQcmV2YWxlbnRSZXNv
dXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uUXVlcnkpCi0gICAgLCBtX2dldFJlc291cmNlRGF0
YUJ5RG9tYWluTmFtZVN0YXRlbWVudChtX2RhdGFiYXNlLCBnZXRSZXNvdXJjZURhdGFCeURvbWFp
bk5hbWVRdWVyeSkKLSAgICAsIG1fZ2V0QWxsRG9tYWluc1N0YXRlbWVudChtX2RhdGFiYXNlLCBn
ZXRBbGxEb21haW5zUXVlcnkpCi0gICAgLCBtX2RvbWFpblN0cmluZ0Zyb21Eb21haW5JRFN0YXRl
bWVudChtX2RhdGFiYXNlLCBkb21haW5TdHJpbmdGcm9tRG9tYWluSURRdWVyeSkKLSAgICAsIG1f
Z2V0QWxsU3ViU3RhdGlzdGljc1N0YXRlbWVudChtX2RhdGFiYXNlLCBnZXRBbGxTdWJTdGF0aXN0
aWNzVW5kZXJEb21haW5RdWVyeSkKLSAgICAsIG1fc3RvcmFnZUFjY2Vzc0V4aXN0c1N0YXRlbWVu
dChtX2RhdGFiYXNlLCBzdG9yYWdlQWNjZXNzRXhpc3RzUXVlcnkpCi0gICAgLCBtX2dldE1vc3RS
ZWNlbnRseVVwZGF0ZWRUaW1lc3RhbXBTdGF0ZW1lbnQobV9kYXRhYmFzZSwgZ2V0TW9zdFJlY2Vu
dGx5VXBkYXRlZFRpbWVzdGFtcFF1ZXJ5KQotICAgICwgbV9saW5rRGVjb3JhdGlvbkV4aXN0c1N0
YXRlbWVudChtX2RhdGFiYXNlLCBsaW5rRGVjb3JhdGlvbkV4aXN0c1F1ZXJ5KQotICAgICwgbV9z
Y3JpcHRMb2FkRXhpc3RzU3RhdGVtZW50KG1fZGF0YWJhc2UsIHNjcmlwdExvYWRFeGlzdHNRdWVy
eSkKLSAgICAsIG1fc3ViRnJhbWVFeGlzdHNTdGF0ZW1lbnQobV9kYXRhYmFzZSwgc3ViRnJhbWVF
eGlzdHNRdWVyeSkKLSAgICAsIG1fc3ViUmVzb3VyY2VFeGlzdHNTdGF0ZW1lbnQobV9kYXRhYmFz
ZSwgc3ViUmVzb3VyY2VFeGlzdHNRdWVyeSkKLSAgICAsIG1fdW5pcXVlUmVkaXJlY3RFeGlzdHNT
dGF0ZW1lbnQobV9kYXRhYmFzZSwgdW5pcXVlUmVkaXJlY3RFeGlzdHNRdWVyeSkKLSAgICAsIG1f
b2JzZXJ2ZWREb21haW5zRXhpc3RzU3RhdGVtZW50KG1fZGF0YWJhc2UsIG9ic2VydmVkRG9tYWlu
c0V4aXN0c1F1ZXJ5KQotICAgICwgbV9yZW1vdmVBbGxEYXRhU3RhdGVtZW50KG1fZGF0YWJhc2Us
IHJlbW92ZUFsbERhdGFRdWVyeSkKICAgICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKIHsKICAg
ICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTMyNiwxOCArMjg4LDE5IEBAIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZShXZWJSZXNvCiAgICAgaWYgKCFtX2RhdGFiYXNlLnR1cm5PbkluY3JlbWVudGFs
QXV0b1ZhY3V1bSgpKQogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6dHVybk9uSW5jcmVtZW50YWxBdXRv
VmFjdXVtIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJSIgUFVCTElDX0xPR19TVFJJTkcsIHRoaXMs
IG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogCi0gICAgaWYgKCFwcmVwYXJlU3RhdGVtZW50
cygpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcmVwYXJlU3RhdGVtZW50cyBmYWlsZWQsIGVy
cm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0dfU1RSSU5HICIsIGRhdGFiYXNlIHBhdGg6ICUiIFBV
QkxJQ19MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpLCBtX3N0b3Jh
Z2VEaXJlY3RvcnlQYXRoLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIHdvcmtRdWV1ZS5kaXNwYXRjaEFm
dGVyKDVfcywgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSB7CiAgICAgICAgIGlmICh3
ZWFrVGhpcykKICAgICAgICAgICAgIHdlYWtUaGlzLT5jYWxjdWxhdGVBbmRTdWJtaXRUZWxlbWV0
cnkoKTsKICAgICB9KTsKIH0KIAordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6Y2xvc2UoKQoreworICAgIGRlc3Ryb3lTdGF0ZW1lbnRzKCk7CisgICAgaWYgKG1fZGF0
YWJhc2UuaXNPcGVuKCkpCisgICAgICAgIG1fZGF0YWJhc2UuY2xvc2UoKTsKK30KKwogdm9pZCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6b3BlbklUUERhdGFiYXNlKCkKIHsK
ICAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobV9zdG9yYWdlRGlyZWN0b3J5UGF0aCkp
CkBAIC0zNjYsOSArMzI5LDkgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6b3BlbklUUERhdGFiYXNlKCkKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIHJlc2V0U3Rh
dGVtZW50KFNRTGl0ZVN0YXRlbWVudCYgc3RhdGVtZW50KQorc3RhdGljIHZvaWQgcmVzZXRTdGF0
ZW1lbnQoU1FMaXRlU3RhdGVtZW50KiBzdGF0ZW1lbnQpCiB7Ci0gICAgaW50IHJlc2V0UmVzdWx0
ID0gc3RhdGVtZW50LnJlc2V0KCk7CisgICAgaW50IHJlc2V0UmVzdWx0ID0gc3RhdGVtZW50LT5y
ZXNldCgpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzZXRSZXN1bHQsIHJlc2V0UmVzdWx0ID09IFNR
TElURV9PSyk7CiB9CiAKQEAgLTM5MCw3ICszNTMsOCBAQCBPcHRpb25hbDxWZWN0b3I8U3RyaW5n
Pj4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNoZWNrRm9yTWlzc2luZ1Rh
YgogICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNoZWNrRm9yTWlzc2luZ1RhYmxlc0luU2NoZW1h
IHNjaGVtYSBpcyBtaXNzaW5nIHRhYmxlOiAlcyIsIHRoaXMsIHRhYmxlLmFzY2lpKCkuZGF0YSgp
KTsKICAgICAgICAgICAgIG1pc3NpbmdUYWJsZXMuYXBwZW5kKFN0cmluZyh0YWJsZSkpOwogICAg
ICAgICB9Ci0gICAgICAgIHJlc2V0U3RhdGVtZW50KHN0YXRlbWVudCk7CisgICAgICAgIGludCBy
ZXNldFJlc3VsdCA9IHN0YXRlbWVudC5yZXNldCgpOworICAgICAgICBBU1NFUlRfVU5VU0VEKHJl
c2V0UmVzdWx0LCByZXNldFJlc3VsdCA9PSBTUUxJVEVfT0spOwogICAgIH0KICAgICBpZiAobWlz
c2luZ1RhYmxlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC00
MjEsNyArMzg1LDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
aXNNaWdyYXRpb25OZWNlc3NhcnkoKQogICAgIC8vIElmIHRoZXJlIGlzIG5vIHRhYmxlIGF0IGFs
bCwgb3IgdGhlcmUgaXMgYW4gZXJyb3IgZXhlY3V0aW5nIHRoZSBmZXRjaCwgZGVsZXRlIGFuZCBy
ZW9wZW4gdGhlIGZpbGUuCiAgICAgaWYgKHN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX1JPVykg
ewogICAgICAgICBMT0dfRVJST1IoIkVycm9yIGV4ZWN1dGluZyBzdGF0ZW1lbnQgdG8gZmV0Y2gg
c2NoZW1hLiIpOwotICAgICAgICBtX2RhdGFiYXNlLmNsb3NlKCk7CisgICAgICAgIGNsb3NlKCk7
CiAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9zdG9yYWdlRGlyZWN0b3J5UGF0aCk7
CiAgICAgICAgIG9wZW5JVFBEYXRhYmFzZSgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01
MTksNyArNDgzLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
b3BlbkFuZFVwZGF0ZVNjaGVtYUlmTmVjZXNzYXJ5KCkKICAgICAgICAgLy8gSWYgdGhlcmUgaXMg
bm8gT2JzZXJ2ZWREb21haW5zIHRhYmxlIGF0IGFsbCwgb3IgdGhlcmUgaXMgYW4gZXJyb3IgZXhl
Y3V0aW5nIHRoZSBmZXRjaCwgZGVsZXRlIHRoZSBmaWxlLgogICAgICAgICBpZiAoc3RhdGVtZW50
LnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIkVycm9yIGV4
ZWN1dGluZyBzdGF0ZW1lbnQgdG8gZmV0Y2ggc2NoZW1hIGZvciB0aGUgT2JzZXJ2ZWQgRG9tYWlu
cyB0YWJsZS4iKTsKLSAgICAgICAgICAgIG1fZGF0YWJhc2UuY2xvc2UoKTsKKyAgICAgICAgICAg
IGNsb3NlKCk7CiAgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fc3RvcmFnZURp
cmVjdG9yeVBhdGgpOwogICAgICAgICAgICAgb3BlbklUUERhdGFiYXNlKCk7CiAgICAgICAgICAg
ICByZXR1cm47CkBAIC01MzMsNyArNDk3LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6b3BlbkFuZFVwZGF0ZVNjaGVtYUlmTmVjZXNzYXJ5KCkKICAgICAvLyBJ
ZiB0aGUgT2JzZXJ2ZWREb21haW5zIHNjaGVtYSBpbiB0aGUgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyBkaXJlY3RvcnkgaXMgbm90IHRoZSBjdXJyZW50IHNjaGVtYSwgZGVsZXRlIHRoZSBkYXRhYmFz
ZSBmaWxlLgogICAgIC8vIEZJWE1FOiBNaWdyYXRlIG9sZCBPYnNlcnZlZERvbWFpbnMgZGF0YSB0
byBuZXcgdGFibGUgc2NoZW1hLgogICAgIGlmIChjdXJyZW50U2NoZW1hICE9IE9ic2VydmVkRG9t
YWluc1RhYmxlU2NoZW1hVjEoKSAmJiBjdXJyZW50U2NoZW1hICE9IE9ic2VydmVkRG9tYWluc1Rh
YmxlU2NoZW1hVjFBbHRlcm5hdGUoKSkgewotICAgICAgICBtX2RhdGFiYXNlLmNsb3NlKCk7Cisg
ICAgICAgIGNsb3NlKCk7CiAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9zdG9yYWdl
RGlyZWN0b3J5UGF0aCk7CiAgICAgICAgIG9wZW5JVFBEYXRhYmFzZSgpOwogICAgIH0gZWxzZQpA
QCAtNTQ0LDExICs1MDgsMjAgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6aXNFbXB0eSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7
CiAgICAgCisgICAgaWYgKCFtX29ic2VydmVkRG9tYWluQ291bnRTdGF0ZW1lbnQpIHsKKyAgICAg
ICAgbV9vYnNlcnZlZERvbWFpbkNvdW50U3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpT
UUxpdGVTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIG9ic2VydmVkRG9tYWluQ291bnRRdWVyeSk7Cisg
ICAgICAgIGlmIChtX29ic2VydmVkRG9tYWluQ291bnRTdGF0ZW1lbnQtPnByZXBhcmUoKSAhPSBT
UUxJVEVfT0spIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAt
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppc0VtcHR5IGZhaWxlZCB0byBw
cmVwYXJlIHN0YXRlbWVudCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2Rh
dGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIAogICAg
IGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgaWYgKG1fb2JzZXJ2ZWREb21haW5Db3VudC5zdGVw
KCkgPT0gU1FMSVRFX1JPVykKLSAgICAgICAgcmVzdWx0ID0gIW1fb2JzZXJ2ZWREb21haW5Db3Vu
dC5nZXRDb2x1bW5JbnQoMCk7CisgICAgaWYgKG1fb2JzZXJ2ZWREb21haW5Db3VudFN0YXRlbWVu
dC0+c3RlcCgpID09IFNRTElURV9ST1cpCisgICAgICAgIHJlc3VsdCA9ICFtX29ic2VydmVkRG9t
YWluQ291bnRTdGF0ZW1lbnQtPmdldENvbHVtbkludCgwKTsKICAgICAKLSAgICBpbnQgcmVzZXRS
ZXN1bHQgPSBtX29ic2VydmVkRG9tYWluQ291bnQucmVzZXQoKTsKKyAgICBpbnQgcmVzZXRSZXN1
bHQgPSBtX29ic2VydmVkRG9tYWluQ291bnRTdGF0ZW1lbnQtPnJlc2V0KCk7CiAgICAgQVNTRVJU
X1VOVVNFRChyZXNldFJlc3VsdCwgcmVzZXRSZXN1bHQgPT0gU1FMSVRFX09LKTsKICAgICAKICAg
ICByZXR1cm4gcmVzdWx0OwpAQCAtNjQyLDU1ICs2MTUsNDggQEAgYm9vbCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y3JlYXRlU2NoZW1hKCkKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJlcGFyZVN0
YXRlbWVudHMoKQotewotICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgICAgICAK
LSAgICBpZiAobV9vYnNlcnZlZERvbWFpbkNvdW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKLSAg
ICAgICAgfHwgbV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FM
SVRFX09LCi0gICAgICAgIHx8IG1faW5zZXJ0VG9wTGV2ZWxEb21haW5TdGF0ZW1lbnQucHJlcGFy
ZSgpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX2RvbWFpbklERnJvbVN0cmluZ1N0YXRlbWVu
dC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fc3ViZnJhbWVVbmRlclRvcEZy
YW1lRG9tYWluRXhpc3RzLnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9zdWJy
ZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5FeGlzdHMucHJlcGFyZSgpICE9IFNRTElURV9PSwot
ICAgICAgICB8fCBtX3N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG9FeGlzdHMucHJlcGFyZSgp
ICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX3VwZGF0ZUxhc3RTZWVuU3RhdGVtZW50LnByZXBh
cmUoKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV91cGRhdGVEYXRhUmVjb3Jkc1JlbW92ZWRT
dGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX21vc3RSZWNlbnRV
c2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwotICAgICAgICB8
fCBtX3VwZGF0ZVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVf
T0sKLSAgICAgICAgfHwgbV9pc1ByZXZhbGVudFJlc291cmNlU3RhdGVtZW50LnByZXBhcmUoKSAh
PSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV91cGRhdGVWZXJ5UHJldmFsZW50UmVzb3VyY2VTdGF0
ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX2lzVmVyeVByZXZhbGVu
dFJlc291cmNlU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9j
bGVhclByZXZhbGVudFJlc291cmNlU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKLSAg
ICAgICAgfHwgbV9oYWRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElU
RV9PSwotICAgICAgICB8fCBtX3VwZGF0ZUdyYW5kZmF0aGVyZWRTdGF0ZW1lbnQucHJlcGFyZSgp
ICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX3VwZGF0ZUlzU2NoZWR1bGVkRm9yQWxsQnV0Q29v
a2llRGF0YVJlbW92YWxTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwotICAgICAgICB8
fCBtX2lzR3JhbmRmYXRoZXJlZFN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCi0gICAg
ICAgIHx8IG1fZmluZEV4cGlyZWRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQucHJlcGFyZSgpICE9
IFNRTElURV9PSwotICAgICAgICB8fCBtX3RvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbUV4aXN0
cy5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fdG9wRnJhbWVMb2FkZWRUaGly
ZFBhcnR5U2NyaXB0c0V4aXN0cy5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1f
Y291bnRQcmV2YWxlbnRSZXNvdXJjZXNTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwot
ICAgICAgICB8fCBtX2NvdW50UHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvblN0
YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fY291bnRQcmV2YWxl
bnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uU3RhdGVtZW50LnByZXBhcmUoKSAhPSBT
UUxJVEVfT0sKLSAgICAgICAgfHwgbV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1l
bnQucHJlcGFyZSgpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX2dldEFsbERvbWFpbnNTdGF0
ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX2RvbWFpblN0cmluZ0Zy
b21Eb21haW5JRFN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1f
Z2V0QWxsU3ViU3RhdGlzdGljc1N0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCi0gICAg
ICAgIHx8IG1fc3RvcmFnZUFjY2Vzc0V4aXN0c1N0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRF
X09LCi0gICAgICAgIHx8IG1fZ2V0TW9zdFJlY2VudGx5VXBkYXRlZFRpbWVzdGFtcFN0YXRlbWVu
dC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fbGlua0RlY29yYXRpb25FeGlz
dHNTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX3NjcmlwdExv
YWRFeGlzdHNTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX3N1
YkZyYW1lRXhpc3RzU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwg
bV9zdWJSZXNvdXJjZUV4aXN0c1N0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCi0gICAg
ICAgIHx8IG1fdW5pcXVlUmVkaXJlY3RFeGlzdHNTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElU
RV9PSwotICAgICAgICB8fCBtX29ic2VydmVkRG9tYWluc0V4aXN0c1N0YXRlbWVudC5wcmVwYXJl
KCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fcmVtb3ZlQWxsRGF0YVN0YXRlbWVudC5wcmVw
YXJlKCkgIT0gU1FMSVRFX09LCi0gICAgICAgICkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJl
cGFyZVN0YXRlbWVudHMgZmFpbGVkIHRvIHByZXBhcmUsIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJ
Q19MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAg
ICByZXR1cm4gdHJ1ZTsKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmRlc3Ryb3lTdGF0ZW1lbnRzKCkKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
KworICAgIG1fb2JzZXJ2ZWREb21haW5Db3VudFN0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV9p
bnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV9pbnNlcnRUb3BM
ZXZlbERvbWFpblN0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV9kb21haW5JREZyb21TdHJpbmdT
dGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1fc3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluRXhp
c3RzU3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX3N1YnJlc291cmNlVW5kZXJUb3BGcmFtZURv
bWFpbkV4aXN0c1N0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV9zdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0c1RvRXhpc3RzU3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX3VwZGF0ZUxhc3RTZWVu
U3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX3VwZGF0ZURhdGFSZWNvcmRzUmVtb3ZlZFN0YXRl
bWVudCA9IG51bGxwdHI7CisgICAgbV9tb3N0UmVjZW50VXNlckludGVyYWN0aW9uU3RhdGVtZW50
ID0gbnVsbHB0cjsKKyAgICBtX3VwZGF0ZVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50ID0gbnVs
bHB0cjsKKyAgICBtX2lzUHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQgPSBudWxscHRyOworICAg
IG1fdXBkYXRlVmVyeVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBt
X2lzVmVyeVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX2NsZWFy
UHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1faGFkVXNlckludGVy
YWN0aW9uU3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX3VwZGF0ZUdyYW5kZmF0aGVyZWRTdGF0
ZW1lbnQgPSBudWxscHRyOworICAgIG1fdXBkYXRlSXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVE
YXRhUmVtb3ZhbFN0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV9pc0dyYW5kZmF0aGVyZWRTdGF0
ZW1lbnQgPSBudWxscHRyOworICAgIG1fZmluZEV4cGlyZWRVc2VySW50ZXJhY3Rpb25TdGF0ZW1l
bnQgPSBudWxscHRyOworICAgIG1fdG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tRXhpc3RzU3Rh
dGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX3RvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHNF
eGlzdHNTdGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1fY291bnRQcmV2YWxlbnRSZXNvdXJjZXNT
dGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1fY291bnRQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNl
ckludGVyYWN0aW9uU3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX2NvdW50UHJldmFsZW50UmVz
b3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV9n
ZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1fZ2V0
QWxsRG9tYWluc1N0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV9kb21haW5TdHJpbmdGcm9tRG9t
YWluSURTdGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1fZ2V0QWxsU3ViU3RhdGlzdGljc1N0YXRl
bWVudCA9IG51bGxwdHI7CisgICAgbV9zdG9yYWdlQWNjZXNzRXhpc3RzU3RhdGVtZW50ID0gbnVs
bHB0cjsKKyAgICBtX2dldE1vc3RSZWNlbnRseVVwZGF0ZWRUaW1lc3RhbXBTdGF0ZW1lbnQgPSBu
dWxscHRyOworICAgIG1fbGlua0RlY29yYXRpb25FeGlzdHNTdGF0ZW1lbnQgPSBudWxscHRyOwor
ICAgIG1fc2NyaXB0TG9hZEV4aXN0c1N0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV9zdWJGcmFt
ZUV4aXN0c1N0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV9zdWJSZXNvdXJjZUV4aXN0c1N0YXRl
bWVudCA9IG51bGxwdHI7CisgICAgbV91bmlxdWVSZWRpcmVjdEV4aXN0c1N0YXRlbWVudCA9IG51
bGxwdHI7CisgICAgbV9vYnNlcnZlZERvbWFpbnNFeGlzdHNTdGF0ZW1lbnQgPSBudWxscHRyOwor
ICAgIG1fcmVtb3ZlQWxsRGF0YVN0YXRlbWVudCA9IG51bGxwdHI7CiB9CiAKIGJvb2wgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydE9ic2VydmVkRG9tYWluKGNvbnN0
IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIGxvYWRTdGF0aXN0aWNzKQpAQCAtNzAyLDUyICs2Njgs
NjEgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5zZXJ0T2Jz
ZXJ2ZWREb21haW4oY29uc3QgUmVzb3VyY2VMb2EKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CisgICAgCisgICAgaWYgKCFtX2luc2Vy
dE9ic2VydmVkRG9tYWluU3RhdGVtZW50KSB7CisgICAgICAgIG1faW5zZXJ0T2JzZXJ2ZWREb21h
aW5TdGF0ZW1lbnQgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4obV9kYXRh
YmFzZSwgaW5zZXJ0T2JzZXJ2ZWREb21haW5RdWVyeSk7CisgICAgICAgIGlmIChtX2luc2VydE9i
c2VydmVkRG9tYWluU3RhdGVtZW50LT5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKSB7CisgICAgICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6aW5zZXJ0T2JzZXJ2ZWREb21haW4gZmFpbGVkIHRvIHByZXBhcmUg
c3RhdGVtZW50LCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2Uu
bGFzdEVycm9yTXNnKCkpOworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CiAKLSAgICBpZiAobV9pbnNl
cnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC5iaW5kVGV4dChSZWdpc3RyYWJsZURvbWFpbkluZGV4
LCBsb2FkU3RhdGlzdGljcy5yZWdpc3RyYWJsZURvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09L
Ci0gICAgICAgIHx8IG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQuYmluZERvdWJsZShM
YXN0U2VlbkluZGV4LCBsb2FkU3RhdGlzdGljcy5sYXN0U2Vlbi5zZWNvbmRzU2luY2VFcG9jaCgp
LnZhbHVlKCkpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX2luc2VydE9ic2VydmVkRG9tYWlu
U3RhdGVtZW50LmJpbmRJbnQoSGFkVXNlckludGVyYWN0aW9uSW5kZXgsIGxvYWRTdGF0aXN0aWNz
LmhhZFVzZXJJbnRlcmFjdGlvbikgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1faW5zZXJ0T2Jz
ZXJ2ZWREb21haW5TdGF0ZW1lbnQuYmluZERvdWJsZShNb3N0UmVjZW50VXNlckludGVyYWN0aW9u
VGltZUluZGV4LCBsb2FkU3RhdGlzdGljcy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZS5z
ZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX2lu
c2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50LmJpbmRJbnQoR3JhbmRmYXRoZXJlZEluZGV4LCBs
b2FkU3RhdGlzdGljcy5ncmFuZGZhdGhlcmVkKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9p
bnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC5iaW5kSW50KElzUHJldmFsZW50SW5kZXgsIGxv
YWRTdGF0aXN0aWNzLmlzUHJldmFsZW50UmVzb3VyY2UpICE9IFNRTElURV9PSwotICAgICAgICB8
fCBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50LmJpbmRJbnQoSXNWZXJ5UHJldmFsZW50
SW5kZXgsIGxvYWRTdGF0aXN0aWNzLmlzVmVyeVByZXZhbGVudFJlc291cmNlKSAhPSBTUUxJVEVf
T0sKLSAgICAgICAgfHwgbV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC5iaW5kSW50KERh
dGFSZWNvcmRzUmVtb3ZlZEluZGV4LCBsb2FkU3RhdGlzdGljcy5kYXRhUmVjb3Jkc1JlbW92ZWQp
ICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50
LmJpbmRJbnQoVGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uSW5k
ZXgsIGxvYWRTdGF0aXN0aWNzLnRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRl
cmFjdGlvbikgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1faW5zZXJ0T2JzZXJ2ZWREb21haW5T
dGF0ZW1lbnQuYmluZEludChUaW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNj
ZXNzQVBJSW5kZXgsIGxvYWRTdGF0aXN0aWNzLnRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVU
b1N0b3JhZ2VBY2Nlc3NBUEkpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX2luc2VydE9ic2Vy
dmVkRG9tYWluU3RhdGVtZW50LmJpbmRJbnQoSXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRh
UmVtb3ZhbEluZGV4LCBsb2FkU3RhdGlzdGljcy5nb3RMaW5rRGVjb3JhdGlvbkZyb21QcmV2YWxl
bnRSZXNvdXJjZSkgIT0gU1FMSVRFX09LKSB7CisgICAgaWYgKG1faW5zZXJ0T2JzZXJ2ZWREb21h
aW5TdGF0ZW1lbnQtPmJpbmRUZXh0KFJlZ2lzdHJhYmxlRG9tYWluSW5kZXgsIGxvYWRTdGF0aXN0
aWNzLnJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwg
bV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC0+YmluZERvdWJsZShMYXN0U2VlbkluZGV4
LCBsb2FkU3RhdGlzdGljcy5sYXN0U2Vlbi5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpICE9
IFNRTElURV9PSworICAgICAgICB8fCBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50LT5i
aW5kSW50KEhhZFVzZXJJbnRlcmFjdGlvbkluZGV4LCBsb2FkU3RhdGlzdGljcy5oYWRVc2VySW50
ZXJhY3Rpb24pICE9IFNRTElURV9PSworICAgICAgICB8fCBtX2luc2VydE9ic2VydmVkRG9tYWlu
U3RhdGVtZW50LT5iaW5kRG91YmxlKE1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lSW5kZXgs
IGxvYWRTdGF0aXN0aWNzLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lLnNlY29uZHNTaW5j
ZUVwb2NoKCkudmFsdWUoKSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1faW5zZXJ0T2JzZXJ2
ZWREb21haW5TdGF0ZW1lbnQtPmJpbmRJbnQoR3JhbmRmYXRoZXJlZEluZGV4LCBsb2FkU3RhdGlz
dGljcy5ncmFuZGZhdGhlcmVkKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9pbnNlcnRPYnNl
cnZlZERvbWFpblN0YXRlbWVudC0+YmluZEludChJc1ByZXZhbGVudEluZGV4LCBsb2FkU3RhdGlz
dGljcy5pc1ByZXZhbGVudFJlc291cmNlKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9pbnNl
cnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC0+YmluZEludChJc1ZlcnlQcmV2YWxlbnRJbmRleCwg
bG9hZFN0YXRpc3RpY3MuaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UpICE9IFNRTElURV9PSworICAg
ICAgICB8fCBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50LT5iaW5kSW50KERhdGFSZWNv
cmRzUmVtb3ZlZEluZGV4LCBsb2FkU3RhdGlzdGljcy5kYXRhUmVjb3Jkc1JlbW92ZWQpICE9IFNR
TElURV9PSworICAgICAgICB8fCBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50LT5iaW5k
SW50KFRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlvbkluZGV4LCBs
b2FkU3RhdGlzdGljcy50aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9Vc2VySW50ZXJhY3Rp
b24pICE9IFNRTElURV9PSworICAgICAgICB8fCBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVt
ZW50LT5iaW5kSW50KFRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NB
UElJbmRleCwgbG9hZFN0YXRpc3RpY3MudGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvU3Rv
cmFnZUFjY2Vzc0FQSSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1faW5zZXJ0T2JzZXJ2ZWRE
b21haW5TdGF0ZW1lbnQtPmJpbmRJbnQoSXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVt
b3ZhbEluZGV4LCBsb2FkU3RhdGlzdGljcy5nb3RMaW5rRGVjb3JhdGlvbkZyb21QcmV2YWxlbnRS
ZXNvdXJjZSkgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FM
TE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjppbnNlcnRPYnNlcnZlZERvbWFpbiBmYWlsZWQgdG8gYmluZCwgZXJyb3IgbWVzc2FnZTog
JXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAg
ICBpZiAobV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX0RP
TkUpIHsKKyAgICBpZiAobV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC0+c3RlcCgpICE9
IFNRTElURV9ET05FKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAt
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnRPYnNlcnZlZERvbWFp
biBmYWlsZWQgdG8gY29tbWl0LCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1f
ZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGludCByZXNldFJlc3VsdCA9IG1f
aW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQucmVzZXQoKTsKKyAgICBpbnQgcmVzZXRSZXN1
bHQgPSBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50LT5yZXNldCgpOwogICAgIEFTU0VS
VF9VTlVTRUQocmVzZXRSZXN1bHQsIHJlc2V0UmVzdWx0ID09IFNRTElURV9PSyk7CiAKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6cmVsYXRpb25zaGlwRXhpc3RzKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCYgc3RhdGVtZW50
LCBPcHRpb25hbDx1bnNpZ25lZD4gZmlyc3REb21haW5JRCwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHNlY29uZERvbWFpbikgY29uc3QKK2Jvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OnJlbGF0aW9uc2hpcEV4aXN0cyhXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQqIHN0
YXRlbWVudCwgT3B0aW9uYWw8dW5zaWduZWQ+IGZpcnN0RG9tYWluSUQsIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBzZWNvbmREb21haW4pIGNvbnN0CiB7CiAgICAgaWYgKCFmaXJzdERvbWFpbklE
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7CiAKLSAgICBpZiAoc3RhdGVtZW50LmJpbmRJbnQoMSwgKmZpcnN0RG9tYWluSUQpICE9
IFNRTElURV9PSwotICAgICAgICB8fCBzdGF0ZW1lbnQuYmluZFRleHQoMiwgc2Vjb25kRG9tYWlu
LnN0cmluZygpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgc3RhdGVtZW50LnN0ZXAoKSAhPSBT
UUxJVEVfUk9XKSB7CisgICAgaWYgKHN0YXRlbWVudC0+YmluZEludCgxLCAqZmlyc3REb21haW5J
RCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZFRleHQoMiwgc2Vjb25k
RG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc3RhdGVtZW50LT5zdGVw
KCkgIT0gU1FMSVRFX1JPVykgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VE
KG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
cmVsYXRpb25zaGlwRXhpc3RzIGZhaWxlZCB0byBiaW5kLCBlcnJvciBtZXNzYWdlOiAle3ByaXZh
dGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBib29sIHJl
bGF0aW9uc2hpcEV4aXN0cyA9ICEhc3RhdGVtZW50LmdldENvbHVtbkludCgwKTsKKyAgICBib29s
IHJlbGF0aW9uc2hpcEV4aXN0cyA9ICEhc3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMCk7CiAKLSAg
ICBpbnQgcmVzZXRSZXN1bHQgPSBzdGF0ZW1lbnQucmVzZXQoKTsKKyAgICBpbnQgcmVzZXRSZXN1
bHQgPSBzdGF0ZW1lbnQtPnJlc2V0KCk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNldFJlc3VsdCwg
cmVzZXRSZXN1bHQgPT0gU1FMSVRFX09LKTsKICAgICAKICAgICByZXR1cm4gcmVsYXRpb25zaGlw
RXhpc3RzOwpAQCAtNzc2LDIxICs3NTEsMzAgQEAgT3B0aW9uYWw8dW5zaWduZWQ+IFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkb21haW5JRChjb25zdCBSZWdpc3RyYWIKICAg
ICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIHVuc2lnbmVkIGRvbWFpbklEID0g
MDsKKyAgICAKKyAgICBpZiAoIW1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50KSB7CisgICAg
ICAgIG1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpT
UUxpdGVTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIGRvbWFpbklERnJvbVN0cmluZ1F1ZXJ5KTsKKyAg
ICAgICAgaWYgKG1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50LT5wcmVwYXJlKCkgIT0gU1FM
SVRFX09LKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWluSUQgZmFpbGVkIHRvIHBy
ZXBhcmUgc3RhdGVtZW50LCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0
YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICB9CisgICAgfQogCi0g
ICAgaWYgKG1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50LmJpbmRUZXh0KDEsIGRvbWFpbi5z
dHJpbmcoKSkgIT0gU1FMSVRFX09LKSB7CisgICAgaWYgKG1fZG9tYWluSURGcm9tU3RyaW5nU3Rh
dGVtZW50LT5iaW5kVGV4dCgxLCBkb21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSykgewogICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWluSURGcm9tU3RyaW5nIGZhaWxl
ZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJv
ck1zZygpKTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9CiAgICAgCi0gICAg
aWYgKG1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7
Ci0gICAgICAgIGludCByZXNldFJlc3VsdCA9IG1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50
LnJlc2V0KCk7CisgICAgaWYgKG1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50LT5zdGVwKCkg
IT0gU1FMSVRFX1JPVykgeworICAgICAgICBpbnQgcmVzZXRSZXN1bHQgPSBtX2RvbWFpbklERnJv
bVN0cmluZ1N0YXRlbWVudC0+cmVzZXQoKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXNldFJl
c3VsdCwgcmVzZXRSZXN1bHQgPT0gU1FMSVRFX09LKTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKICAgICB9CiAKLSAgICBkb21haW5JRCA9IG1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVt
ZW50LmdldENvbHVtbkludCgwKTsKKyAgICBkb21haW5JRCA9IG1fZG9tYWluSURGcm9tU3RyaW5n
U3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMCk7CiAKLSAgICBpbnQgcmVzZXRSZXN1bHQgPSBtX2Rv
bWFpbklERnJvbVN0cmluZ1N0YXRlbWVudC5yZXNldCgpOworICAgIGludCByZXNldFJlc3VsdCA9
IG1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50LT5yZXNldCgpOwogICAgIEFTU0VSVF9VTlVT
RUQocmVzZXRSZXN1bHQsIHJlc2V0UmVzdWx0ID09IFNRTElURV9PSyk7CiAgICAgCiAgICAgcmV0
dXJuIGRvbWFpbklEOwpAQCAtODg0LDE4ICs4NjgsMTggQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6cG9wdWxhdGVGcm9tTWVtb3J5U3RvcmUoY29uc3QgUmVzb3Vy
Y2UKICAgICAgICAgaW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwcyhzdGF0aXN0aWMudmFsdWUpOwog
fQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptZXJnZShXZWJD
b3JlOjpTUUxpdGVTdGF0ZW1lbnQmIGN1cnJlbnQsIGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MmIG90aGVyKQordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWVy
Z2UoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50KiBjdXJyZW50LCBjb25zdCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzJiBvdGhlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAot
ICAgIGF1dG8gY3VycmVudFJlZ2lzdHJhYmxlRG9tYWluID0gY3VycmVudC5nZXRDb2x1bW5UZXh0
KFJlZ2lzdHJhYmxlRG9tYWluSW5kZXgpOwotICAgIGF1dG8gY3VycmVudExhc3RTZWVuID0gY3Vy
cmVudC5nZXRDb2x1bW5Eb3VibGUoTGFzdFNlZW5JbmRleCk7Ci0gICAgYXV0byBjdXJyZW50TW9z
dFJlY2VudFVzZXJJbnRlcmFjdGlvbiA9IGN1cnJlbnQuZ2V0Q29sdW1uRG91YmxlKE1vc3RSZWNl
bnRVc2VySW50ZXJhY3Rpb25UaW1lSW5kZXgpOwotICAgIGJvb2wgY3VycmVudEdyYW5kZmF0aGVy
ZWQgPSBjdXJyZW50LmdldENvbHVtbkludChHcmFuZGZhdGhlcmVkSW5kZXgpOwotICAgIGJvb2wg
Y3VycmVudElzUHJldmFsZW50ID0gY3VycmVudC5nZXRDb2x1bW5JbnQoSXNQcmV2YWxlbnRJbmRl
eCk7Ci0gICAgYm9vbCBjdXJyZW50SXNWZXJ5UHJldmFsZW50ID0gY3VycmVudC5nZXRDb2x1bW5J
bnQoSXNWZXJ5UHJldmFsZW50SW5kZXgpOwotICAgIHVuc2lnbmVkIGN1cnJlbnREYXRhUmVjb3Jk
c1JlbW92ZWQgPSBjdXJyZW50LmdldENvbHVtbkludChEYXRhUmVjb3Jkc1JlbW92ZWRJbmRleCk7
Ci0gICAgYm9vbCBjdXJyZW50SXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCA9
IGN1cnJlbnQuZ2V0Q29sdW1uSW50KElzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92
YWxJbmRleCk7CisgICAgYXV0byBjdXJyZW50UmVnaXN0cmFibGVEb21haW4gPSBjdXJyZW50LT5n
ZXRDb2x1bW5UZXh0KFJlZ2lzdHJhYmxlRG9tYWluSW5kZXgpOworICAgIGF1dG8gY3VycmVudExh
c3RTZWVuID0gY3VycmVudC0+Z2V0Q29sdW1uRG91YmxlKExhc3RTZWVuSW5kZXgpOworICAgIGF1
dG8gY3VycmVudE1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24gPSBjdXJyZW50LT5nZXRDb2x1bW5E
b3VibGUoTW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWVJbmRleCk7CisgICAgYm9vbCBjdXJy
ZW50R3JhbmRmYXRoZXJlZCA9IGN1cnJlbnQtPmdldENvbHVtbkludChHcmFuZGZhdGhlcmVkSW5k
ZXgpOworICAgIGJvb2wgY3VycmVudElzUHJldmFsZW50ID0gY3VycmVudC0+Z2V0Q29sdW1uSW50
KElzUHJldmFsZW50SW5kZXgpOworICAgIGJvb2wgY3VycmVudElzVmVyeVByZXZhbGVudCA9IGN1
cnJlbnQtPmdldENvbHVtbkludChJc1ZlcnlQcmV2YWxlbnRJbmRleCk7CisgICAgdW5zaWduZWQg
Y3VycmVudERhdGFSZWNvcmRzUmVtb3ZlZCA9IGN1cnJlbnQtPmdldENvbHVtbkludChEYXRhUmVj
b3Jkc1JlbW92ZWRJbmRleCk7CisgICAgYm9vbCBjdXJyZW50SXNTY2hlZHVsZWRGb3JBbGxCdXRD
b29raWVEYXRhUmVtb3ZhbCA9IGN1cnJlbnQtPmdldENvbHVtbkludChJc1NjaGVkdWxlZEZvckFs
bEJ1dENvb2tpZURhdGFSZW1vdmFsSW5kZXgpOwogCiAgICAgQVNTRVJUKGN1cnJlbnRSZWdpc3Ry
YWJsZURvbWFpbiA9PSBvdGhlci5yZWdpc3RyYWJsZURvbWFpbi5zdHJpbmcoKSk7CiAKQEAgLTky
NCwxNiArOTA4LDI1IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
Om1lcmdlKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCYgY3VycmVuCiB2b2lkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptZXJnZVN0YXRpc3RpYyhjb25zdCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzJiBzdGF0aXN0aWMpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7CisgICAgCisgICAgaWYgKCFtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVu
dCkgeworICAgICAgICBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudCA9IG1h
a2VVbmlxdWU8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PihtX2RhdGFiYXNlLCBnZXRSZXNvdXJj
ZURhdGFCeURvbWFpbk5hbWVRdWVyeSk7CisgICAgICAgIGlmIChtX2dldFJlc291cmNlRGF0YUJ5
RG9tYWluTmFtZVN0YXRlbWVudC0+cHJlcGFyZSgpICE9IFNRTElURV9PSykgeworICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6Om1lcmdlU3RhdGlzdGljIGZhaWxlZCB0byBwcmVwYXJlIHN0YXRlbWVu
dCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJv
ck1zZygpKTsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgfQogCi0gICAgaWYgKG1fZ2V0UmVzb3VyY2VEYXRhQnlE
b21haW5OYW1lU3RhdGVtZW50LmJpbmRUZXh0KDEsIHN0YXRpc3RpYy5yZWdpc3RyYWJsZURvbWFp
bi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fZ2V0UmVzb3VyY2VEYXRhQnlE
b21haW5OYW1lU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7CisgICAgaWYgKG1fZ2V0
UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LT5iaW5kVGV4dCgxLCBzdGF0aXN0aWMu
cmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSworICAgICAgICB8fCBtX2dl
dFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ST1cp
IHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVw
IC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1lcmdlU3RhdGlzdGljLiBT
dGF0ZW1lbnQgZmFpbGVkIHRvIGJpbmQgb3IgZG9tYWluIHdhcyBub3QgZm91bmQsIGVycm9yIG1l
c3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgbWVyZ2UobV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQsIHN0YXRpc3Rp
Yyk7Ci0gICAgcmVzZXRTdGF0ZW1lbnQobV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0
ZW1lbnQpOworICAgIG1lcmdlKG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50
LmdldCgpLCBzdGF0aXN0aWMpOworICAgIHJlc2V0U3RhdGVtZW50KG1fZ2V0UmVzb3VyY2VEYXRh
QnlEb21haW5OYW1lU3RhdGVtZW50LmdldCgpKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWVyZ2VTdGF0aXN0aWNzKFZlY3RvcjxSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzPiYmIHN0YXRpc3RpY3MpCkBAIC05ODcsMTggKzk4MCwyNyBAQCBzdGF0aWMgU1FM
aXRlU3RhdGVtZW50IG1ha2VNZWRpYW5XaXRoVUlRdWVyeShTUUxpdGVEYXRhYmFzZSYgZGF0YWJh
c2UpCiAKIFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlE
YXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5PiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6Z2V0VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5zKHVuc2ln
bmVkIHRoaXJkUGFydHlEb21haW5JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRoaXJkUGFy
dHlEb21haW4pIGNvbnN0CiB7Ci0gICAgaWYgKG1fZ2V0QWxsU3ViU3RhdGlzdGljc1N0YXRlbWVu
dC5iaW5kSW50KDEsIHRoaXJkUGFydHlEb21haW5JRCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8
IG1fZ2V0QWxsU3ViU3RhdGlzdGljc1N0YXRlbWVudC5iaW5kSW50KDIsIHRoaXJkUGFydHlEb21h
aW5JRCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fZ2V0QWxsU3ViU3RhdGlzdGljc1N0YXRl
bWVudC5iaW5kSW50KDMsIHRoaXJkUGFydHlEb21haW5JRCkgIT0gU1FMSVRFX09LKSB7CisgICAg
aWYgKCFtX2dldEFsbFN1YlN0YXRpc3RpY3NTdGF0ZW1lbnQpIHsKKyAgICAgICAgbV9nZXRBbGxT
dWJTdGF0aXN0aWNzU3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1l
bnQ+KG1fZGF0YWJhc2UsIGdldEFsbFN1YlN0YXRpc3RpY3NVbmRlckRvbWFpblF1ZXJ5KTsKKyAg
ICAgICAgaWYgKG1fZ2V0QWxsU3ViU3RhdGlzdGljc1N0YXRlbWVudC0+cHJlcGFyZSgpICE9IFNR
TElURV9PSykgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0g
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldFRoaXJkUGFydHlEYXRhRm9y
U3BlY2lmaWNGaXJzdFBhcnR5RG9tYWlucyBmYWlsZWQgdG8gcHJlcGFyZSBzdGF0ZW1lbnQsIGVy
cm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2co
KSk7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVy
biB7IH07CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgaWYgKG1fZ2V0QWxsU3ViU3RhdGlz
dGljc1N0YXRlbWVudC0+YmluZEludCgxLCB0aGlyZFBhcnR5RG9tYWluSUQpICE9IFNRTElURV9P
SworICAgICAgICB8fCBtX2dldEFsbFN1YlN0YXRpc3RpY3NTdGF0ZW1lbnQtPmJpbmRJbnQoMiwg
dGhpcmRQYXJ0eURvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9nZXRBbGxTdWJT
dGF0aXN0aWNzU3RhdGVtZW50LT5iaW5kSW50KDMsIHRoaXJkUGFydHlEb21haW5JRCkgIT0gU1FM
SVRFX09LKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0Zp
cnN0UGFydHlEb21haW4sIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCBtX2Rh
dGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgfQogICAgIFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFy
dHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5PiB0aGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmly
c3RQYXJ0eURvbWFpbnM7Ci0gICAgd2hpbGUgKG1fZ2V0QWxsU3ViU3RhdGlzdGljc1N0YXRlbWVu
dC5zdGVwKCkgPT0gU1FMSVRFX1JPVykgewotICAgICAgICBSZWdpc3RyYWJsZURvbWFpbiBmaXJz
dFBhcnR5RG9tYWluID0gUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdp
c3RyYWJsZURvbWFpblN0cmluZyhnZXREb21haW5TdHJpbmdGcm9tRG9tYWluSUQobV9nZXRBbGxT
dWJTdGF0aXN0aWNzU3RhdGVtZW50LmdldENvbHVtbkludCgwKSkpOworICAgIHdoaWxlIChtX2dl
dEFsbFN1YlN0YXRpc3RpY3NTdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKSB7CisgICAg
ICAgIFJlZ2lzdHJhYmxlRG9tYWluIGZpcnN0UGFydHlEb21haW4gPSBSZWdpc3RyYWJsZURvbWFp
bjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKGdldERvbWFpblN0
cmluZ0Zyb21Eb21haW5JRChtX2dldEFsbFN1YlN0YXRpc3RpY3NTdGF0ZW1lbnQtPmdldENvbHVt
bkludCgwKSkpOwogICAgICAgICB0aGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURv
bWFpbnMuYXBwZW5kSWZOb3RDb250YWlucyhXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OlRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5IHsgZmlyc3RQYXJ0eURvbWFpbiwg
aGFzU3RvcmFnZUFjY2VzcyhmaXJzdFBhcnR5RG9tYWluLCB0aGlyZFBhcnR5RG9tYWluKSwgZ2V0
TW9zdFJlY2VudGx5VXBkYXRlZFRpbWVzdGFtcCh0aGlyZFBhcnR5RG9tYWluLCBmaXJzdFBhcnR5
RG9tYWluKSB9KTsKICAgICB9Ci0gICAgcmVzZXRTdGF0ZW1lbnQobV9nZXRBbGxTdWJTdGF0aXN0
aWNzU3RhdGVtZW50KTsKKyAgICByZXNldFN0YXRlbWVudChtX2dldEFsbFN1YlN0YXRpc3RpY3NT
dGF0ZW1lbnQuZ2V0KCkpOwogICAgIHJldHVybiB0aGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmly
c3RQYXJ0eURvbWFpbnM7CiB9CiAKQEAgLTExMjAsMzEgKzExMjIsNDkgQEAgc3RhdGljIHVuc2ln
bmVkIGdldE1lZGlhbk9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbihTUUxp
dGVEYXRhYmFzZSYKIAogdW5zaWduZWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OmdldE51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzKCkgY29uc3QKIHsKLSAgICBhdXRvIHN0
ZXBWYWx1ZSA9IG1fY291bnRQcmV2YWxlbnRSZXNvdXJjZXNTdGF0ZW1lbnQuc3RlcCgpOworICAg
IGlmICghbV9jb3VudFByZXZhbGVudFJlc291cmNlc1N0YXRlbWVudCkgeworICAgICAgICBtX2Nv
dW50UHJldmFsZW50UmVzb3VyY2VzU3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpTUUxp
dGVTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIGNvdW50UHJldmFsZW50UmVzb3VyY2VzUXVlcnkpOwor
ICAgICAgICBpZiAobV9jb3VudFByZXZhbGVudFJlc291cmNlc1N0YXRlbWVudC0+cHJlcGFyZSgp
ICE9IFNRTElURV9PSykgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywg
IiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldE51bWJlck9mUHJl
dmFsZW50UmVzb3VyY2VzIGZhaWxlZCB0byBwcmVwYXJlIHN0YXRlbWVudCwgZXJyb3IgbWVzc2Fn
ZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIH0KKyAgICB9CisgICAgCisgICAgYXV0byBzdGVwVmFsdWUgPSBtX2NvdW50UHJldmFsZW50
UmVzb3VyY2VzU3RhdGVtZW50LT5zdGVwKCk7CiAgICAgaWYgKHN0ZXBWYWx1ZSAhPSBTUUxJVEVf
Uk9XICYmIHN0ZXBWYWx1ZSAhPSBTUUxJVEVfRE9ORSkgewogICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUihOZXR3b3JrLCAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldE51
bWJlck9mUHJldmFsZW50UmVzb3VyY2VzIGZhaWxlZCB0byBzdGVwLCBlcnJvciBtZXNzYWdlOiAl
IiBQVUJMSUNfTE9HX1NUUklORywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgaWYg
KHN0ZXBWYWx1ZSA9PSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIHVuc2lnbmVkIHByZXZhbGVudFJl
c291cmNlQ291bnQgPSBtX2NvdW50UHJldmFsZW50UmVzb3VyY2VzU3RhdGVtZW50LmdldENvbHVt
bkludCgwKTsKKyAgICAgICAgdW5zaWduZWQgcHJldmFsZW50UmVzb3VyY2VDb3VudCA9IG1fY291
bnRQcmV2YWxlbnRSZXNvdXJjZXNTdGF0ZW1lbnQtPmdldENvbHVtbkludCgwKTsKICAgICAgICAg
aWYgKHByZXZhbGVudFJlc291cmNlQ291bnQgPj0gbWluaW11bVByZXZhbGVudFJlc291cmNlc0Zv
clRlbGVtZXRyeSkgewotICAgICAgICAgICAgcmVzZXRTdGF0ZW1lbnQobV9jb3VudFByZXZhbGVu
dFJlc291cmNlc1N0YXRlbWVudCk7CisgICAgICAgICAgICByZXNldFN0YXRlbWVudChtX2NvdW50
UHJldmFsZW50UmVzb3VyY2VzU3RhdGVtZW50LmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiBw
cmV2YWxlbnRSZXNvdXJjZUNvdW50OwogICAgICAgICB9CiAgICAgfQotICAgIHJlc2V0U3RhdGVt
ZW50KG1fY291bnRQcmV2YWxlbnRSZXNvdXJjZXNTdGF0ZW1lbnQpOworICAgIHJlc2V0U3RhdGVt
ZW50KG1fY291bnRQcmV2YWxlbnRSZXNvdXJjZXNTdGF0ZW1lbnQuZ2V0KCkpOwogICAgIHJldHVy
biAwOwogfQogCiB1bnNpZ25lZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
Z2V0TnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVUkoKSBjb25zdAogewotICAgIGlmICht
X2NvdW50UHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudC5zdGVw
KCkgPT0gU1FMSVRFX1JPVykgewotICAgICAgICBpbnQgY291bnQgPSBtX2NvdW50UHJldmFsZW50
UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudC5nZXRDb2x1bW5JbnQoMCk7Ci0g
ICAgICAgIHJlc2V0U3RhdGVtZW50KG1fY291bnRQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlcklu
dGVyYWN0aW9uU3RhdGVtZW50KTsKKyAgICBpZiAoIW1fY291bnRQcmV2YWxlbnRSZXNvdXJjZXNX
aXRoVXNlckludGVyYWN0aW9uU3RhdGVtZW50KSB7CisgICAgICAgIG1fY291bnRQcmV2YWxlbnRS
ZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uU3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxXZWJDb3Jl
OjpTUUxpdGVTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIGNvdW50UHJldmFsZW50UmVzb3VyY2VzV2l0
aFVzZXJJbnRlcmFjdGlvblF1ZXJ5KTsKKyAgICAgICAgaWYgKG1fY291bnRQcmV2YWxlbnRSZXNv
dXJjZXNXaXRoVXNlckludGVyYWN0aW9uU3RhdGVtZW50LT5wcmVwYXJlKCkgIT0gU1FMSVRFX09L
KSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0TnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJj
ZXNXaXRoVUkgZmFpbGVkIHRvIHByZXBhcmUgc3RhdGVtZW50LCBlcnJvciBtZXNzYWdlOiAle3By
aXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGlmIChtX2NvdW50UHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFj
dGlvblN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpIHsKKyAgICAgICAgaW50IGNvdW50
ID0gbV9jb3VudFByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQt
PmdldENvbHVtbkludCgwKTsKKyAgICAgICAgcmVzZXRTdGF0ZW1lbnQobV9jb3VudFByZXZhbGVu
dFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQuZ2V0KCkpOwogICAgICAgICBy
ZXR1cm4gY291bnQ7CiAgICAgfQotICAgIHJlc2V0U3RhdGVtZW50KG1fY291bnRQcmV2YWxlbnRS
ZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uU3RhdGVtZW50KTsKKyAgICByZXNldFN0YXRlbWVu
dChtX2NvdW50UHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudC5n
ZXQoKSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTEyNTgsMTIgKzEyNzgsMjEgQEAgc3RhdGlj
IHVuc2lnbmVkIG1ha2VTdGF0aXN0aWNRdWVyeShTUUxpdGVEYXRhYmFzZSYgZGF0YWJhc2UsIFBy
ZXZhbGVudFJlc291cmNlRGEKIAogdW5zaWduZWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OmdldE51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVJKCkgY29uc3QK
IHsKLSAgICBpZiAobV9jb3VudFByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rp
b25TdGF0ZW1lbnQuc3RlcCgpID09IFNRTElURV9ST1cpIHsKLSAgICAgICAgaW50IGNvdW50ID0g
bV9jb3VudFByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQu
Z2V0Q29sdW1uSW50KDApOwotICAgICAgICByZXNldFN0YXRlbWVudChtX2NvdW50UHJldmFsZW50
UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudCk7CisgICAgaWYgKCFtX2Nv
dW50UHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudCkgewor
ICAgICAgICBtX2NvdW50UHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvblN0
YXRlbWVudCA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PihtX2RhdGFiYXNl
LCBjb3VudFByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb25RdWVyeSk7Cisg
ICAgICAgIGlmIChtX2NvdW50UHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlv
blN0YXRlbWVudC0+cHJlcGFyZSgpICE9IFNRTElURV9PSykgeworICAgICAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OmdldE51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVJIGZhaWxlZCB0byBw
cmVwYXJlIHN0YXRlbWVudCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2Rh
dGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobV9j
b3VudFByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQtPnN0
ZXAoKSA9PSBTUUxJVEVfUk9XKSB7CisgICAgICAgIGludCBjb3VudCA9IG1fY291bnRQcmV2YWxl
bnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uU3RhdGVtZW50LT5nZXRDb2x1bW5JbnQo
MCk7CisgICAgICAgIHJlc2V0U3RhdGVtZW50KG1fY291bnRQcmV2YWxlbnRSZXNvdXJjZXNXaXRo
b3V0VXNlckludGVyYWN0aW9uU3RhdGVtZW50LmdldCgpKTsKICAgICAgICAgcmV0dXJuIGNvdW50
OwogICAgIH0KLSAgICByZXNldFN0YXRlbWVudChtX2NvdW50UHJldmFsZW50UmVzb3VyY2VzV2l0
aG91dFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudCk7CisgICAgcmVzZXRTdGF0ZW1lbnQobV9jb3Vu
dFByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQuZ2V0KCkp
OwogICAgIHJldHVybiAwOwogfQogCkBAIC0xNTE5LDcgKzE1NDgsMTYgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c3luY1N0b3JhZ2VJbW1lZGlhdGVseSgpCiAK
IGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc1N0b3JhZ2VBY2Nl
c3MoY29uc3QgVG9wRnJhbWVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBjb25zdCBTdWJGcmFtZURv
bWFpbiYgc3ViRnJhbWVEb21haW4pIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHJlbGF0aW9uc2hpcEV4
aXN0cyhtX3N0b3JhZ2VBY2Nlc3NFeGlzdHNTdGF0ZW1lbnQsIGRvbWFpbklEKHN1YkZyYW1lRG9t
YWluKSwgdG9wRnJhbWVEb21haW4pOworICAgIGlmICghbV9zdG9yYWdlQWNjZXNzRXhpc3RzU3Rh
dGVtZW50KSB7CisgICAgICAgIG1fc3RvcmFnZUFjY2Vzc0V4aXN0c1N0YXRlbWVudCA9IG1ha2VV
bmlxdWU8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PihtX2RhdGFiYXNlLCBzdG9yYWdlQWNjZXNz
RXhpc3RzUXVlcnkpOworICAgICAgICBpZiAobV9zdG9yYWdlQWNjZXNzRXhpc3RzU3RhdGVtZW50
LT5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFz
U3RvcmFnZUFjY2VzcyBmYWlsZWQgdG8gcHJlcGFyZSBzdGF0ZW1lbnQsIGVycm9yIG1lc3NhZ2U6
ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1cm4gcmVsYXRpb25zaGlwRXhpc3RzKG1fc3Rv
cmFnZUFjY2Vzc0V4aXN0c1N0YXRlbWVudC5nZXQoKSwgZG9tYWluSUQoc3ViRnJhbWVEb21haW4p
LCB0b3BGcmFtZURvbWFpbik7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mIHN1YkZyYW1l
RG9tYWluLCBjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZy
YW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTg0MSwxNyArMTg3
OSwyNiBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhclRv
cEZyYW1lVW5pcXVlUmVkaXJlY3RzVG9TaW5jZVNhbQogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6c2V0VXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBkb21haW4sIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBXYWxsVGltZSBtb3N0UmVjZW50
SW50ZXJhY3Rpb24pCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgCisg
ICAgaWYgKCFtX21vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQpIHsKKyAgICAgICAg
bV9tb3N0UmVjZW50VXNlckludGVyYWN0aW9uU3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxXZWJDb3Jl
OjpTUUxpdGVTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25R
dWVyeSk7CisgICAgICAgIGlmIChtX21vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQt
PnByZXBhcmUoKSAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRV
c2VySW50ZXJhY3Rpb24gZmFpbGVkIHRvIHByZXBhcmUgc3RhdGVtZW50LCBlcnJvciBtZXNzYWdl
OiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICB9CiAKLSAgICBpZiAobV9tb3N0UmVjZW50VXNlckludGVyYWN0aW9uU3RhdGVtZW50
LmJpbmRJbnQoMSwgaGFkVXNlckludGVyYWN0aW9uKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwg
bV9tb3N0UmVjZW50VXNlckludGVyYWN0aW9uU3RhdGVtZW50LmJpbmREb3VibGUoMiwgbW9zdFJl
Y2VudEludGVyYWN0aW9uLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSkgIT0gU1FMSVRFX09L
Ci0gICAgICAgIHx8IG1fbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudC5iaW5kVGV4
dCgzLCBkb21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX21vc3RSZWNl
bnRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ET05FKSB7CisgICAg
aWYgKG1fbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudC0+YmluZEludCgxLCBoYWRV
c2VySW50ZXJhY3Rpb24pICE9IFNRTElURV9PSworICAgICAgICB8fCBtX21vc3RSZWNlbnRVc2Vy
SW50ZXJhY3Rpb25TdGF0ZW1lbnQtPmJpbmREb3VibGUoMiwgbW9zdFJlY2VudEludGVyYWN0aW9u
LnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1f
bW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudC0+YmluZFRleHQoMywgZG9tYWluLnN0
cmluZygpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9tb3N0UmVjZW50VXNlckludGVyYWN0
aW9uU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKICAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OnNldFVzZXJJbnRlcmFjdGlvbiwgZXJyb3IgbWVzc2FnZTogJXtw
cml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpbnQgcmVz
ZXRSZXN1bHQgPSBtX21vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQucmVzZXQoKTsK
KyAgICBpbnQgcmVzZXRSZXN1bHQgPSBtX21vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25TdGF0ZW1l
bnQtPnJlc2V0KCk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNldFJlc3VsdCwgcmVzZXRSZXN1bHQg
PT0gU1FMSVRFX09LKTsKIH0KIApAQCAtMTkwMSwyNCArMTk0OCwzMyBAQCB2b2lkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhclVzZXJJbnRlcmFjdGlvbihjb25zdCBS
ZWdpc3RyYWJsZQogYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFz
SGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIE9wZXJh
dGluZ0RhdGVzV2luZG93IG9wZXJhdGluZ0RhdGVzV2luZG93KQogewogICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOworICAgIAorICAgIGlmICghbV9oYWRVc2VySW50ZXJhY3Rpb25TdGF0
ZW1lbnQpIHsKKyAgICAgICAgbV9oYWRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQgPSBtYWtlVW5p
cXVlPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4obV9kYXRhYmFzZSwgaGFkVXNlckludGVyYWN0
aW9uUXVlcnkpOworICAgICAgICBpZiAobV9oYWRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQtPnBy
ZXBhcmUoKSAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5l
dHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpoYXNIYWRV
c2VySW50ZXJhY3Rpb24gZmFpbGVkIHRvIHByZXBhcmUgc3RhdGVtZW50LCBlcnJvciBtZXNzYWdl
OiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIH0KKyAgICB9CiAKLSAgICBpZiAobV9oYWRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQu
YmluZFRleHQoMSwgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9o
YWRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ST1cpIHsKKyAgICBp
ZiAobV9oYWRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQtPmJpbmRUZXh0KDEsIGRvbWFpbi5zdHJp
bmcoKSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1faGFkVXNlckludGVyYWN0aW9uU3RhdGVt
ZW50LT5zdGVwKCkgIT0gU1FMSVRFX1JPVykgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9J
Rl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6bV9oYWRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQgZmFpbGVkLCBlcnJvciBtZXNz
YWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogCi0g
ICAgICAgIGludCByZXNldFJlc3VsdCA9IG1faGFkVXNlckludGVyYWN0aW9uU3RhdGVtZW50LnJl
c2V0KCk7CisgICAgICAgIGludCByZXNldFJlc3VsdCA9IG1faGFkVXNlckludGVyYWN0aW9uU3Rh
dGVtZW50LT5yZXNldCgpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc2V0UmVzdWx0LCByZXNl
dFJlc3VsdCA9PSBTUUxJVEVfT0spOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0g
ICAgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24gPSAhIW1faGFkVXNlckludGVyYWN0aW9uU3RhdGVt
ZW50LmdldENvbHVtbkludCgwKTsKKyAgICBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiA9ICEhbV9o
YWRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQtPmdldENvbHVtbkludCgwKTsKICAgICBpZiAoIWhh
ZFVzZXJJbnRlcmFjdGlvbikgewotICAgICAgICBpbnQgcmVzZXRSZXN1bHQgPSBtX2hhZFVzZXJJ
bnRlcmFjdGlvblN0YXRlbWVudC5yZXNldCgpOworICAgICAgICBpbnQgcmVzZXRSZXN1bHQgPSBt
X2hhZFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudC0+cmVzZXQoKTsKICAgICAgICAgQVNTRVJUX1VO
VVNFRChyZXNldFJlc3VsdCwgcmVzZXRSZXN1bHQgPT0gU1FMSVRFX09LKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KICAgICAKLSAgICBXYWxsVGltZSBtb3N0UmVjZW50VXNlckludGVy
YWN0aW9uVGltZSA9IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhtX2hhZFVzZXJJbnRlcmFjdGlv
blN0YXRlbWVudC5nZXRDb2x1bW5Eb3VibGUoMSkpOworICAgIFdhbGxUaW1lIG1vc3RSZWNlbnRV
c2VySW50ZXJhY3Rpb25UaW1lID0gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKG1faGFkVXNlcklu
dGVyYWN0aW9uU3RhdGVtZW50LT5nZXRDb2x1bW5Eb3VibGUoMSkpOwogCiAgICAgaWYgKGhhc1N0
YXRpc3RpY3NFeHBpcmVkKG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lLCBvcGVyYXRpbmdE
YXRlc1dpbmRvdykpIHsKICAgICAgICAgLy8gRHJvcCBwcml2YWN5IHNlbnNpdGl2ZSBkYXRhIGJl
Y2F1c2Ugd2Ugbm8gbG9uZ2VyIG5lZWQgaXQuCkBAIC0xOTI4LDcgKzE5ODQsNyBAQCBib29sIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpoYXNIYWRVc2VySW50ZXJhY3Rpb24o
Y29uc3QgUmVnaXN0cmFibAogICAgICAgICBoYWRVc2VySW50ZXJhY3Rpb24gPSBmYWxzZTsKICAg
ICB9CiAgICAgCi0gICAgaW50IHJlc2V0UmVzdWx0ID0gbV9oYWRVc2VySW50ZXJhY3Rpb25TdGF0
ZW1lbnQucmVzZXQoKTsKKyAgICBpbnQgcmVzZXRSZXN1bHQgPSBtX2hhZFVzZXJJbnRlcmFjdGlv
blN0YXRlbWVudC0+cmVzZXQoKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc2V0UmVzdWx0LCByZXNl
dFJlc3VsdCA9PSBTUUxJVEVfT0spOwogCiAgICAgcmV0dXJuIGhhZFVzZXJJbnRlcmFjdGlvbjsK
QEAgLTE5MzksMjggKzE5OTUsNDYgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6c2V0UHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFibGUKICAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBpZiAoc2hvdWxkU2tpcChkb21haW4pKQogICAg
ICAgICByZXR1cm47CisgICAgCisgICAgaWYgKCFtX3VwZGF0ZVByZXZhbGVudFJlc291cmNlU3Rh
dGVtZW50KSB7CisgICAgICAgIG1fdXBkYXRlUHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQgPSBt
YWtlVW5pcXVlPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4obV9kYXRhYmFzZSwgdXBkYXRlUHJl
dmFsZW50UmVzb3VyY2VRdWVyeSk7CisgICAgICAgIGlmIChtX3VwZGF0ZVByZXZhbGVudFJlc291
cmNlU3RhdGVtZW50LT5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKSB7CisgICAgICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6c2V0UHJldmFsZW50UmVzb3VyY2UgZmFpbGVkIHRvIHByZXBhcmUgc3RhdGVtZW50
LCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9y
TXNnKCkpOworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICB9CiAKLSAgICBpZiAobV91cGRhdGVQcmV2YWxlbnRSZXNv
dXJjZVN0YXRlbWVudC5iaW5kSW50KDEsIDEpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX3Vw
ZGF0ZVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50LmJpbmRUZXh0KDIsIGRvbWFpbi5zdHJpbmco
KSkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fdXBkYXRlUHJldmFsZW50UmVzb3VyY2VTdGF0
ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ET05FKSB7CisgICAgaWYgKG1fdXBkYXRlUHJldmFsZW50
UmVzb3VyY2VTdGF0ZW1lbnQtPmJpbmRJbnQoMSwgMSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8
IG1fdXBkYXRlUHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQtPmJpbmRUZXh0KDIsIGRvbWFpbi5z
dHJpbmcoKSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1fdXBkYXRlUHJldmFsZW50UmVzb3Vy
Y2VTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewogICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6bV91cGRhdGVQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudCBmYWls
ZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJy
b3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIAotICAgIGludCByZXNldFJlc3VsdCA9IG1fdXBkYXRlUHJldmFsZW50UmVz
b3VyY2VTdGF0ZW1lbnQucmVzZXQoKTsKKyAgICBpbnQgcmVzZXRSZXN1bHQgPSBtX3VwZGF0ZVBy
ZXZhbGVudFJlc291cmNlU3RhdGVtZW50LT5yZXNldCgpOwogICAgIEFTU0VSVF9VTlVTRUQocmVz
ZXRSZXN1bHQsIHJlc2V0UmVzdWx0ID09IFNRTElURV9PSyk7CiAKKyAgICBpZiAoIW1fdXBkYXRl
VmVyeVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50KSB7CisgICAgICAgIG1fdXBkYXRlVmVyeVBy
ZXZhbGVudFJlc291cmNlU3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpTUUxpdGVTdGF0
ZW1lbnQ+KG1fZGF0YWJhc2UsIHVwZGF0ZVZlcnlQcmV2YWxlbnRSZXNvdXJjZVF1ZXJ5KTsKKyAg
ICAgICAgaWYgKG1fdXBkYXRlVmVyeVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50LT5wcmVwYXJl
KCkgIT0gU1FMSVRFX09LKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3Jr
LCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0UHJldmFsZW50
UmVzb3VyY2UgZmFpbGVkIHRvIHByZXBhcmUgdXBkYXRlVmVyeVByZXZhbGVudFJlc291cmNlU3Rh
dGVtZW50LCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFz
dEVycm9yTXNnKCkpOworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgCiAgICAgaWYgKG5ld1ByZXZhbGVu
Y2UgPT0gUmVzb3VyY2VMb2FkUHJldmFsZW5jZTo6VmVyeUhpZ2gpIHsKLSAgICAgICAgaWYgKG1f
dXBkYXRlVmVyeVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50LmJpbmRJbnQoMSwgMSkgIT0gU1FM
SVRFX09LCi0gICAgICAgICAgICB8fCBtX3VwZGF0ZVZlcnlQcmV2YWxlbnRSZXNvdXJjZVN0YXRl
bWVudC5iaW5kVGV4dCgyLCBkb21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSwotICAgICAgICAg
ICAgfHwgbV91cGRhdGVWZXJ5UHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQuc3RlcCgpICE9IFNR
TElURV9ET05FKSB7CisgICAgICAgIGlmIChtX3VwZGF0ZVZlcnlQcmV2YWxlbnRSZXNvdXJjZVN0
YXRlbWVudC0+YmluZEludCgxLCAxKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IG1fdXBk
YXRlVmVyeVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50LT5iaW5kVGV4dCgyLCBkb21haW4uc3Ry
aW5nKCkpICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgbV91cGRhdGVWZXJ5UHJldmFsZW50
UmVzb3VyY2VTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewogICAgICAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1fdXBkYXRlVmVyeVByZXZhbGVudFJlc291cmNl
U3RhdGVtZW50IGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2Rh
dGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaW50IHJlc2V0UmVz
dWx0ID0gbV91cGRhdGVWZXJ5UHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQucmVzZXQoKTsKKyAg
ICAgICAgaW50IHJlc2V0UmVzdWx0ID0gbV91cGRhdGVWZXJ5UHJldmFsZW50UmVzb3VyY2VTdGF0
ZW1lbnQtPnJlc2V0KCk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzZXRSZXN1bHQsIHJlc2V0
UmVzdWx0ID09IFNRTElURV9PSyk7CiAgICAgfQogCkBAIC0xOTkyLDkgKzIwNjYsMTggQEAgdm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZHVtcFJlc291cmNlTG9hZFN0
YXRpc3RpY3MoQ29tcGxldGlvbkgKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmICgh
bV9nZXRBbGxEb21haW5zU3RhdGVtZW50KSB7CisgICAgICAgIG1fZ2V0QWxsRG9tYWluc1N0YXRl
bWVudCA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PihtX2RhdGFiYXNlLCBn
ZXRBbGxEb21haW5zUXVlcnkpOworICAgICAgICBpZiAobV9nZXRBbGxEb21haW5zU3RhdGVtZW50
LT5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZHVt
cFJlc291cmNlTG9hZFN0YXRpc3RpY3MgZmFpbGVkIHRvIHByZXBhcmUgc3RhdGVtZW50LCBlcnJv
ciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkp
OworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICB9CisgICAgCiAgICAgVmVjdG9yPFN0cmluZz4gZG9tYWluczsKLSAg
ICB3aGlsZSAobV9nZXRBbGxEb21haW5zU3RhdGVtZW50LnN0ZXAoKSA9PSBTUUxJVEVfUk9XKQot
ICAgICAgICBkb21haW5zLmFwcGVuZChtX2dldEFsbERvbWFpbnNTdGF0ZW1lbnQuZ2V0Q29sdW1u
VGV4dCgwKSk7CisgICAgd2hpbGUgKG1fZ2V0QWxsRG9tYWluc1N0YXRlbWVudC0+c3RlcCgpID09
IFNRTElURV9ST1cpCisgICAgICAgIGRvbWFpbnMuYXBwZW5kKG1fZ2V0QWxsRG9tYWluc1N0YXRl
bWVudC0+Z2V0Q29sdW1uVGV4dCgwKSk7CiAgICAgc3RkOjpzb3J0KGRvbWFpbnMuYmVnaW4oKSwg
ZG9tYWlucy5lbmQoKSwgV1RGOjpjb2RlUG9pbnRDb21wYXJlTGVzc1RoYW4pOwogCiAgICAgU3Ry
aW5nQnVpbGRlciByZXN1bHQ7CkBAIC0yMDEwLDI2ICsyMDkzLDI2IEBAIHZvaWQgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKENv
bXBsZXRpb25ICiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCdcbicpOwogICAgICAgICB9CiAg
ICAgfQotICAgIHJlc2V0U3RhdGVtZW50KG1fZ2V0QWxsRG9tYWluc1N0YXRlbWVudCk7CisgICAg
cmVzZXRTdGF0ZW1lbnQobV9nZXRBbGxEb21haW5zU3RhdGVtZW50LmdldCgpKTsKICAgICBjb21w
bGV0aW9uSGFuZGxlcihyZXN1bHQudG9TdHJpbmcoKSk7CiB9CiAKLWJvb2wgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnByZWRpY2F0ZVZhbHVlRm9yRG9tYWluKFdlYkNvcmU6
OlNRTGl0ZVN0YXRlbWVudCYgcHJlZGljYXRlU3RhdGVtZW50LCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgZG9tYWluKSBjb25zdAorYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6cHJlZGljYXRlVmFsdWVGb3JEb21haW4oV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50KiBw
cmVkaWNhdGVTdGF0ZW1lbnQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pIGNvbnN0
CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgCi0gICAgaWYgKHByZWRp
Y2F0ZVN0YXRlbWVudC5iaW5kVGV4dCgxLCBkb21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSwot
ICAgICAgICB8fCBwcmVkaWNhdGVTdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ST1cpIHsKKyAg
ICBpZiAocHJlZGljYXRlU3RhdGVtZW50LT5iaW5kVGV4dCgxLCBkb21haW4uc3RyaW5nKCkpICE9
IFNRTElURV9PSworICAgICAgICB8fCBwcmVkaWNhdGVTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJ
VEVfUk9XKSB7CiAKLSAgICAgICAgaW50IHJlc2V0UmVzdWx0ID0gcHJlZGljYXRlU3RhdGVtZW50
LnJlc2V0KCk7CisgICAgICAgIGludCByZXNldFJlc3VsdCA9IHByZWRpY2F0ZVN0YXRlbWVudC0+
cmVzZXQoKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXNldFJlc3VsdCwgcmVzZXRSZXN1bHQg
PT0gU1FMSVRFX09LKTsKIAogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1f
c2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJl
ZGljYXRlVmFsdWVGb3JEb21haW4gZmFpbGVkIHRvIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICV7cHJp
dmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKLSAgICBib29sIHJlc3VsdCA9ICEhcHJlZGljYXRlU3RhdGVtZW50
LmdldENvbHVtbkludCgwKTsKLSAgICBpbnQgcmVzZXRSZXN1bHQgPSBwcmVkaWNhdGVTdGF0ZW1l
bnQucmVzZXQoKTsKKyAgICBib29sIHJlc3VsdCA9ICEhcHJlZGljYXRlU3RhdGVtZW50LT5nZXRD
b2x1bW5JbnQoMCk7CisgICAgaW50IHJlc2V0UmVzdWx0ID0gcHJlZGljYXRlU3RhdGVtZW50LT5y
ZXNldCgpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzZXRSZXN1bHQsIHJlc2V0UmVzdWx0ID09IFNR
TElURV9PSyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTIwNDAsOCArMjEyMywxNyBAQCBi
b29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppc1ByZXZhbGVudFJlc291
cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRAogCiAgICAgaWYgKHNob3VsZFNraXAoZG9tYWluKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHByZWRpY2F0ZVZhbHVlRm9yRG9tYWlu
KG1faXNQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudCwgZG9tYWluKTsKKyAgICAKKyAgICBpZiAo
IW1faXNQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudCkgeworICAgICAgICBtX2lzUHJldmFsZW50
UmVzb3VyY2VTdGF0ZW1lbnQgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4o
bV9kYXRhYmFzZSwgaXNQcmV2YWxlbnRSZXNvdXJjZVF1ZXJ5KTsKKyAgICAgICAgaWYgKG1faXNQ
cmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudC0+cHJlcGFyZSgpICE9IFNRTElURV9PSykgeworICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OmlzUHJldmFsZW50UmVzb3VyY2UgZmFpbGVkIHRvIHByZXBh
cmUgc3RhdGVtZW50LCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJh
c2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcmV0
dXJuIHByZWRpY2F0ZVZhbHVlRm9yRG9tYWluKG1faXNQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVu
dC5nZXQoKSwgZG9tYWluKTsKIH0KIAogYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6aXNWZXJ5UHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IGRvbWFpbikgY29uc3QKQEAgLTIwNTEsMjggKzIxNDMsNjQgQEAgYm9vbCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aXNWZXJ5UHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVn
aXN0cmEKICAgICBpZiAoc2hvdWxkU2tpcChkb21haW4pKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICByZXR1cm4gcHJlZGljYXRlVmFsdWVGb3JEb21haW4obV9pc1ZlcnlQcmV2YWxlbnRS
ZXNvdXJjZVN0YXRlbWVudCwgZG9tYWluKTsKKyAgICBpZiAoIW1faXNWZXJ5UHJldmFsZW50UmVz
b3VyY2VTdGF0ZW1lbnQpIHsKKyAgICAgICAgbV9pc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZVN0YXRl
bWVudCA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PihtX2RhdGFiYXNlLCBp
c1ZlcnlQcmV2YWxlbnRSZXNvdXJjZVF1ZXJ5KTsKKyAgICAgICAgaWYgKG1faXNWZXJ5UHJldmFs
ZW50UmVzb3VyY2VTdGF0ZW1lbnQtPnByZXBhcmUoKSAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjppc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSBmYWlsZWQgdG8gcHJlcGFy
ZSBzdGF0ZW1lbnQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFz
ZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1
cm4gcHJlZGljYXRlVmFsdWVGb3JEb21haW4obV9pc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZVN0YXRl
bWVudC5nZXQoKSwgZG9tYWluKTsKIH0KIAogYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6aXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKGNvbnN0IFN1YlJlc291
cmNlRG9tYWluJiBzdWJyZXNvdXJjZURvbWFpbiwgY29uc3QgVG9wRnJhbWVEb21haW4mIHRvcEZy
YW1lRG9tYWluKSBjb25zdAogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0g
ICAgcmV0dXJuIHJlbGF0aW9uc2hpcEV4aXN0cyhtX3N1YnJlc291cmNlVW5kZXJUb3BGcmFtZURv
bWFpbkV4aXN0cywgZG9tYWluSUQoc3VicmVzb3VyY2VEb21haW4pLCB0b3BGcmFtZURvbWFpbik7
CisgICAgaWYgKCFtX3N1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbkV4aXN0c1N0YXRlbWVu
dCkgeworICAgICAgICBtX3N1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbkV4aXN0c1N0YXRl
bWVudCA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PihtX2RhdGFiYXNlLCBz
dWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5FeGlzdHNRdWVyeSk7CisgICAgICAgIGlmICht
X3N1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbkV4aXN0c1N0YXRlbWVudC0+cHJlcGFyZSgp
ICE9IFNRTElURV9PSykgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywg
IiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmlzUmVnaXN0ZXJlZEFz
U3VicmVzb3VyY2VVbmRlciBmYWlsZWQgdG8gcHJlcGFyZSBzdGF0ZW1lbnQsIGVycm9yIG1lc3Nh
Z2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1cm4gcmVsYXRpb25zaGlwRXhpc3RzKG1f
c3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluRXhpc3RzU3RhdGVtZW50LmdldCgpLCBkb21h
aW5JRChzdWJyZXNvdXJjZURvbWFpbiksIHRvcEZyYW1lRG9tYWluKTsKIH0KIAogYm9vbCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVu
ZGVyKGNvbnN0IFN1YkZyYW1lRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgVG9wRnJhbWVE
b21haW4mIHRvcEZyYW1lRG9tYWluKSBjb25zdAogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOworICAgIAorICAgIGlmICghbV9zdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5FeGlz
dHNTdGF0ZW1lbnQpIHsKKyAgICAgICAgbV9zdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5FeGlz
dHNTdGF0ZW1lbnQgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4obV9kYXRh
YmFzZSwgc3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluRXhpc3RzUXVlcnkpOworICAgICAgICBp
ZiAobV9zdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5FeGlzdHNTdGF0ZW1lbnQtPnByZXBhcmUo
KSAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmss
ICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppc1JlZ2lzdGVyZWRB
c1N1YkZyYW1lVW5kZXIgZmFpbGVkIHRvIHByZXBhcmUgc3RhdGVtZW50LCBlcnJvciBtZXNzYWdl
OiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIH0KKyAgICB9CiAKLSAgICByZXR1cm4gcmVsYXRpb25zaGlwRXhpc3RzKG1fc3ViZnJh
bWVVbmRlclRvcEZyYW1lRG9tYWluRXhpc3RzLCBkb21haW5JRChzdWJGcmFtZURvbWFpbiksIHRv
cEZyYW1lRG9tYWluKTsKKyAgICByZXR1cm4gcmVsYXRpb25zaGlwRXhpc3RzKG1fc3ViZnJhbWVV
bmRlclRvcEZyYW1lRG9tYWluRXhpc3RzU3RhdGVtZW50LmdldCgpLCBkb21haW5JRChzdWJGcmFt
ZURvbWFpbiksIHRvcEZyYW1lRG9tYWluKTsKIH0KIAogYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6aXNSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKGNvbnN0IFJlZGly
ZWN0ZWRGcm9tRG9tYWluJiByZWRpcmVjdGVkRnJvbURvbWFpbiwgY29uc3QgUmVkaXJlY3RlZFRv
RG9tYWluJiByZWRpcmVjdGVkVG9Eb21haW4pIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CisgICAgCisgICAgaWYgKCFtX3N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3Rz
VG9FeGlzdHNTdGF0ZW1lbnQpIHsKKyAgICAgICAgbV9zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0
c1RvRXhpc3RzU3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+
KG1fZGF0YWJhc2UsIHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG9FeGlzdHNRdWVyeSk7Cisg
ICAgICAgIGlmIChtX3N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG9FeGlzdHNTdGF0ZW1lbnQt
PnByZXBhcmUoKSAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppc1Jl
Z2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8gZmFpbGVkIHRvIHByZXBhcmUgc3RhdGVtZW50LCBlcnJv
ciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkp
OworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIH0KKyAgICB9CiAKLSAgICByZXR1cm4gcmVsYXRpb25zaGlwRXhpc3Rz
KG1fc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUb0V4aXN0cywgZG9tYWluSUQocmVkaXJlY3Rl
ZEZyb21Eb21haW4pLCByZWRpcmVjdGVkVG9Eb21haW4pOworICAgIHJldHVybiByZWxhdGlvbnNo
aXBFeGlzdHMobV9zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvRXhpc3RzU3RhdGVtZW50Lmdl
dCgpLCBkb21haW5JRChyZWRpcmVjdGVkRnJvbURvbWFpbiksIHJlZGlyZWN0ZWRUb0RvbWFpbik7
CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyUHJl
dmFsZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikKQEAgLTIwODQs
MTQgKzIyMTIsMjQgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWIKICAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyUHJldmFsZW50UmVzb3VyY2Ugd2FzIG5vdCBjb21wbGV0
ZWQgZHVlIHRvIGZhaWxlZCBpbnNlcnQgYXR0ZW1wdCIsIHRoaXMpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIGlmIChtX2NsZWFyUHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQuYmluZFRl
eHQoMSwgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9jbGVhclBy
ZXZhbGVudFJlc291cmNlU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgeworICAgIAor
ICAgIGlmICghbV9jbGVhclByZXZhbGVudFJlc291cmNlU3RhdGVtZW50KSB7CisgICAgICAgIG1f
Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudCA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6U1FM
aXRlU3RhdGVtZW50PihtX2RhdGFiYXNlLCBjbGVhclByZXZhbGVudFJlc291cmNlUXVlcnkpOwor
ICAgICAgICBpZiAobV9jbGVhclByZXZhbGVudFJlc291cmNlU3RhdGVtZW50LT5wcmVwYXJlKCkg
IT0gU1FMSVRFX09LKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAi
JXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJQcmV2YWxlbnRS
ZXNvdXJjZSBmYWlsZWQgdG8gcHJlcGFyZSBzdGF0ZW1lbnQsIGVycm9yIG1lc3NhZ2U6ICV7cHJp
dmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
IH0KKyAgICAKKyAgICBpZiAobV9jbGVhclByZXZhbGVudFJlc291cmNlU3RhdGVtZW50LT5iaW5k
VGV4dCgxLCBkb21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSworICAgICAgICB8fCBtX2NsZWFy
UHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewogICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZSwg
ZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1z
ZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgCi0gICAgaW50IHJlc2V0UmVzdWx0ID0gbV9jbGVhclByZXZhbGVudFJlc291cmNl
U3RhdGVtZW50LnJlc2V0KCk7CisgICAgaW50IHJlc2V0UmVzdWx0ID0gbV9jbGVhclByZXZhbGVu
dFJlc291cmNlU3RhdGVtZW50LT5yZXNldCgpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzZXRSZXN1
bHQsIHJlc2V0UmVzdWx0ID09IFNRTElURV9PSyk7CiB9CiAKQEAgLTIxMDQsMTUgKzIyNDIsMjUg
QEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0R3JhbmRmYXRo
ZXJlZChjb25zdCBSZWdpc3RyYWJsZURvbWEKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZf
QUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OnNldEdyYW5kZmF0aGVyZWQgd2FzIG5vdCBjb21wbGV0ZWQgZHVlIHRvIGZhaWxlZCBp
bnNlcnQgYXR0ZW1wdCIsIHRoaXMpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmICht
X3VwZGF0ZUdyYW5kZmF0aGVyZWRTdGF0ZW1lbnQuYmluZEludCgxLCB2YWx1ZSkgIT0gU1FMSVRF
X09LCi0gICAgICAgIHx8IG1fdXBkYXRlR3JhbmRmYXRoZXJlZFN0YXRlbWVudC5iaW5kVGV4dCgy
LCBkb21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX3VwZGF0ZUdyYW5k
ZmF0aGVyZWRTdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ET05FKSB7CisgICAgCisgICAgaWYg
KCFtX3VwZGF0ZUdyYW5kZmF0aGVyZWRTdGF0ZW1lbnQpIHsKKyAgICAgICAgbV91cGRhdGVHcmFu
ZGZhdGhlcmVkU3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+
KG1fZGF0YWJhc2UsIHVwZGF0ZUdyYW5kZmF0aGVyZWRRdWVyeSk7CisgICAgICAgIGlmIChtX3Vw
ZGF0ZUdyYW5kZmF0aGVyZWRTdGF0ZW1lbnQtPnByZXBhcmUoKSAhPSBTUUxJVEVfT0spIHsKKyAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRHcmFuZGZhdGhlcmVkIGZhaWxlZCB0byBwcmVwYXJl
IHN0YXRlbWVudCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNl
Lmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIGlmIChtX3VwZGF0
ZUdyYW5kZmF0aGVyZWRTdGF0ZW1lbnQtPmJpbmRJbnQoMSwgdmFsdWUpICE9IFNRTElURV9PSwor
ICAgICAgICB8fCBtX3VwZGF0ZUdyYW5kZmF0aGVyZWRTdGF0ZW1lbnQtPmJpbmRUZXh0KDIsIGRv
bWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1fdXBkYXRlR3JhbmRmYXRo
ZXJlZFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7CiAgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRHcmFuZGZhdGhlcmVkIGZhaWxlZCB0byBiaW5kLCBlcnJv
ciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkp
OwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICAKLSAgICBpbnQgcmVzZXRSZXN1bHQgPSBtX3VwZGF0ZUdyYW5kZmF0aGVyZWRTdGF0ZW1l
bnQucmVzZXQoKTsKKyAgICBpbnQgcmVzZXRSZXN1bHQgPSBtX3VwZGF0ZUdyYW5kZmF0aGVyZWRT
dGF0ZW1lbnQtPnJlc2V0KCk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNldFJlc3VsdCwgcmVzZXRS
ZXN1bHQgPT0gU1FMSVRFX09LKTsKIH0KIApAQCAtMjEyNSwxNSArMjI3MywyNSBAQCB2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRJc1NjaGVkdWxlZEZvckFsbEJ1
dENvb2tpZURhdGFSZW1vdgogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1f
c2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0
SXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCB3YXMgbm90IGNvbXBsZXRlZCBk
dWUgdG8gZmFpbGVkIGluc2VydCBhdHRlbXB0IiwgdGhpcyk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgaWYgKG1fdXBkYXRlSXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3Zh
bFN0YXRlbWVudC5iaW5kSW50KDEsIHZhbHVlKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV91
cGRhdGVJc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsU3RhdGVtZW50LmJpbmRU
ZXh0KDIsIGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fdXBkYXRl
SXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbFN0YXRlbWVudC5zdGVwKCkgIT0g
U1FMSVRFX0RPTkUpIHsKKyAgICAKKyAgICBpZiAoIW1fdXBkYXRlSXNTY2hlZHVsZWRGb3JBbGxC
dXRDb29raWVEYXRhUmVtb3ZhbFN0YXRlbWVudCkgeworICAgICAgICBtX3VwZGF0ZUlzU2NoZWR1
bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWxTdGF0ZW1lbnQgPSBtYWtlVW5pcXVlPFdlYkNv
cmU6OlNRTGl0ZVN0YXRlbWVudD4obV9kYXRhYmFzZSwgdXBkYXRlSXNTY2hlZHVsZWRGb3JBbGxC
dXRDb29raWVEYXRhUmVtb3ZhbFF1ZXJ5KTsKKyAgICAgICAgaWYgKG1fdXBkYXRlSXNTY2hlZHVs
ZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbFN0YXRlbWVudC0+cHJlcGFyZSgpICE9IFNRTElU
RV9PSykgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldElzU2NoZWR1bGVkRm9yQWxsQnV0
Q29va2llRGF0YVJlbW92YWwgZmFpbGVkIHRvIHByZXBhcmUgc3RhdGVtZW50LCBlcnJvciBtZXNz
YWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICB9CisgICAgCisgICAgaWYgKG1fdXBkYXRlSXNTY2hlZHVsZWRGb3JBbGxCdXRD
b29raWVEYXRhUmVtb3ZhbFN0YXRlbWVudC0+YmluZEludCgxLCB2YWx1ZSkgIT0gU1FMSVRFX09L
CisgICAgICAgIHx8IG1fdXBkYXRlSXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3Zh
bFN0YXRlbWVudC0+YmluZFRleHQoMiwgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKKyAg
ICAgICAgfHwgbV91cGRhdGVJc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsU3Rh
dGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OnNldElzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwgZmFp
bGVkIHRvIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFz
ZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgcmVzZXRTdGF0ZW1lbnQobV91cGRhdGVJc1NjaGVkdWxl
ZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsU3RhdGVtZW50KTsKKyAgICByZXNldFN0YXRlbWVu
dChtX3VwZGF0ZUlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWxTdGF0ZW1lbnQu
Z2V0KCkpOwogfQogU2Vjb25kcyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
Z2V0TW9zdFJlY2VudGx5VXBkYXRlZFRpbWVzdGFtcChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
c3ViRG9tYWluLCBjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRnJhbWVEb21haW4pIGNvbnN0CiB7
CkBAIC0yMTQ0LDI1ICsyMzAyLDM0IEBAIFNlY29uZHMgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OmdldE1vc3RSZWNlbnRseVVwZGF0ZWRUaW1lc3RhbXAoY29uCiAKICAgICBp
ZiAoIXN1YkZyYW1lRG9tYWluSUQgfHwgIXRvcEZyYW1lRG9tYWluSUQpCiAgICAgICAgIHJldHVy
biBTZWNvbmRzIHsgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6Tm9FeGlzdGluZ1RpbWVzdGFtcCB9
OworICAgIAorICAgIGlmICghbV9nZXRNb3N0UmVjZW50bHlVcGRhdGVkVGltZXN0YW1wU3RhdGVt
ZW50KSB7CisgICAgICAgIG1fZ2V0TW9zdFJlY2VudGx5VXBkYXRlZFRpbWVzdGFtcFN0YXRlbWVu
dCA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PihtX2RhdGFiYXNlLCBnZXRN
b3N0UmVjZW50bHlVcGRhdGVkVGltZXN0YW1wUXVlcnkpOworICAgICAgICBpZiAobV9nZXRNb3N0
UmVjZW50bHlVcGRhdGVkVGltZXN0YW1wU3RhdGVtZW50LT5wcmVwYXJlKCkgIT0gU1FMSVRFX09L
KSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0TW9zdFJlY2VudGx5VXBkYXRlZFRpbWVz
dGFtcCBmYWlsZWQgdG8gcHJlcGFyZSBzdGF0ZW1lbnQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0
ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiBTZWNvbmRzIHsgUmVzb3VyY2VM
b2FkU3RhdGlzdGljczo6Tm9FeGlzdGluZ1RpbWVzdGFtcCAgfTsKKyAgICAgICAgfQorICAgIH0K
IAotICAgIGlmIChtX2dldE1vc3RSZWNlbnRseVVwZGF0ZWRUaW1lc3RhbXBTdGF0ZW1lbnQuYmlu
ZEludCgxLCAqc3ViRnJhbWVEb21haW5JRCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fZ2V0
TW9zdFJlY2VudGx5VXBkYXRlZFRpbWVzdGFtcFN0YXRlbWVudC5iaW5kSW50KDIsICp0b3BGcmFt
ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9nZXRNb3N0UmVjZW50bHlVcGRh
dGVkVGltZXN0YW1wU3RhdGVtZW50LmJpbmRJbnQoMywgKnN1YkZyYW1lRG9tYWluSUQpICE9IFNR
TElURV9PSwotICAgICAgICB8fCBtX2dldE1vc3RSZWNlbnRseVVwZGF0ZWRUaW1lc3RhbXBTdGF0
ZW1lbnQuYmluZEludCg0LCAqdG9wRnJhbWVEb21haW5JRCkgIT0gU1FMSVRFX09LCi0gICAgICAg
IHx8IG1fZ2V0TW9zdFJlY2VudGx5VXBkYXRlZFRpbWVzdGFtcFN0YXRlbWVudC5iaW5kSW50KDUs
ICpzdWJGcmFtZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9nZXRNb3N0UmVj
ZW50bHlVcGRhdGVkVGltZXN0YW1wU3RhdGVtZW50LmJpbmRJbnQoNiwgKnRvcEZyYW1lRG9tYWlu
SUQpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX2dldE1vc3RSZWNlbnRseVVwZGF0ZWRUaW1l
c3RhbXBTdGF0ZW1lbnQuYmluZEludCg3LCAqc3ViRnJhbWVEb21haW5JRCkgIT0gU1FMSVRFX09L
Ci0gICAgICAgIHx8IG1fZ2V0TW9zdFJlY2VudGx5VXBkYXRlZFRpbWVzdGFtcFN0YXRlbWVudC5i
aW5kSW50KDgsICp0b3BGcmFtZURvbWFpbklEKSAhPSBTUUxJVEVfT0spIHsKKyAgICBpZiAobV9n
ZXRNb3N0UmVjZW50bHlVcGRhdGVkVGltZXN0YW1wU3RhdGVtZW50LT5iaW5kSW50KDEsICpzdWJG
cmFtZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9nZXRNb3N0UmVjZW50bHlV
cGRhdGVkVGltZXN0YW1wU3RhdGVtZW50LT5iaW5kSW50KDIsICp0b3BGcmFtZURvbWFpbklEKSAh
PSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9nZXRNb3N0UmVjZW50bHlVcGRhdGVkVGltZXN0YW1w
U3RhdGVtZW50LT5iaW5kSW50KDMsICpzdWJGcmFtZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAg
ICAgICAgfHwgbV9nZXRNb3N0UmVjZW50bHlVcGRhdGVkVGltZXN0YW1wU3RhdGVtZW50LT5iaW5k
SW50KDQsICp0b3BGcmFtZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9nZXRN
b3N0UmVjZW50bHlVcGRhdGVkVGltZXN0YW1wU3RhdGVtZW50LT5iaW5kSW50KDUsICpzdWJGcmFt
ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9nZXRNb3N0UmVjZW50bHlVcGRh
dGVkVGltZXN0YW1wU3RhdGVtZW50LT5iaW5kSW50KDYsICp0b3BGcmFtZURvbWFpbklEKSAhPSBT
UUxJVEVfT0sKKyAgICAgICAgfHwgbV9nZXRNb3N0UmVjZW50bHlVcGRhdGVkVGltZXN0YW1wU3Rh
dGVtZW50LT5iaW5kSW50KDcsICpzdWJGcmFtZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAg
ICAgfHwgbV9nZXRNb3N0UmVjZW50bHlVcGRhdGVkVGltZXN0YW1wU3RhdGVtZW50LT5iaW5kSW50
KDgsICp0b3BGcmFtZURvbWFpbklEKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OmdldE1vc3RSZWNlbnRseVVwZGF0ZWRUaW1lc3RhbXAgZmFpbGVk
IHRvIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5s
YXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBy
ZXR1cm4gU2Vjb25kcyB7IFJlc291cmNlTG9hZFN0YXRpc3RpY3M6Ok5vRXhpc3RpbmdUaW1lc3Rh
bXAgIH07CiAgICAgfQotICAgIGlmIChtX2dldE1vc3RSZWNlbnRseVVwZGF0ZWRUaW1lc3RhbXBT
dGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ST1cpIHsKLSAgICAgICAgcmVzZXRTdGF0ZW1lbnQo
bV9nZXRNb3N0UmVjZW50bHlVcGRhdGVkVGltZXN0YW1wU3RhdGVtZW50KTsKKyAgICBpZiAobV9n
ZXRNb3N0UmVjZW50bHlVcGRhdGVkVGltZXN0YW1wU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRF
X1JPVykgeworICAgICAgICByZXNldFN0YXRlbWVudChtX2dldE1vc3RSZWNlbnRseVVwZGF0ZWRU
aW1lc3RhbXBTdGF0ZW1lbnQuZ2V0KCkpOwogICAgICAgICByZXR1cm4gU2Vjb25kcyB7IFJlc291
cmNlTG9hZFN0YXRpc3RpY3M6Ok5vRXhpc3RpbmdUaW1lc3RhbXAgIH07CiAgICAgfQotICAgIGRv
dWJsZSBtb3N0UmVjZW50bHlVcGRhdGVkVGltZXN0YW1wID0gbV9nZXRNb3N0UmVjZW50bHlVcGRh
dGVkVGltZXN0YW1wU3RhdGVtZW50LmdldENvbHVtbkRvdWJsZSgwKTsKLSAgICByZXNldFN0YXRl
bWVudChtX2dldE1vc3RSZWNlbnRseVVwZGF0ZWRUaW1lc3RhbXBTdGF0ZW1lbnQpOworICAgIGRv
dWJsZSBtb3N0UmVjZW50bHlVcGRhdGVkVGltZXN0YW1wID0gbV9nZXRNb3N0UmVjZW50bHlVcGRh
dGVkVGltZXN0YW1wU3RhdGVtZW50LT5nZXRDb2x1bW5Eb3VibGUoMCk7CisgICAgcmVzZXRTdGF0
ZW1lbnQobV9nZXRNb3N0UmVjZW50bHlVcGRhdGVkVGltZXN0YW1wU3RhdGVtZW50LmdldCgpKTsK
ICAgICByZXR1cm4gU2Vjb25kcyB7IG1vc3RSZWNlbnRseVVwZGF0ZWRUaW1lc3RhbXAgfTsKIH0K
IApAQCAtMjE3MCw3ICsyMzM3LDE2IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OmlzR3JhbmRmYXRoZXJlZChjb25zdCBSZWdpc3RyYWJsZURvbWFpCiB7CiAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICByZXR1cm4gcHJlZGljYXRlVmFsdWVG
b3JEb21haW4obV9pc0dyYW5kZmF0aGVyZWRTdGF0ZW1lbnQsIGRvbWFpbik7CisgICAgaWYgKCFt
X2lzR3JhbmRmYXRoZXJlZFN0YXRlbWVudCkgeworICAgICAgICBtX2lzR3JhbmRmYXRoZXJlZFN0
YXRlbWVudCA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PihtX2RhdGFiYXNl
LCBpc0dyYW5kZmF0aGVyZWRRdWVyeSk7CisgICAgICAgIGlmIChtX2lzR3JhbmRmYXRoZXJlZFN0
YXRlbWVudC0+cHJlcGFyZSgpICE9IFNRTElURV9PSykgeworICAgICAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OmlzR3JhbmRmYXRoZXJlZCBmYWlsZWQgdG8gcHJlcGFyZSBzdGF0ZW1lbnQsIGVycm9yIG1l
c3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Cisg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1cm4gcHJlZGljYXRlVmFsdWVGb3JE
b21haW4obV9pc0dyYW5kZmF0aGVyZWRTdGF0ZW1lbnQuZ2V0KCksIGRvbWFpbik7CiB9CiAKIHZv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldFN1YmZyYW1lVW5kZXJU
b3BGcmFtZURvbWFpbihjb25zdCBTdWJGcmFtZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0
IFRvcEZyYW1lRG9tYWluJiB0b3BGcmFtZURvbWFpbikKQEAgLTIyNTUsMjIgKzI0MzEsMzEgQEAg
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0VG9wRnJhbWVVbmlx
dWVSZWRpcmVjdEZyb20oY29uc3QgVG8KIHN0ZDo6cGFpcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6QWRkZWRSZWNvcmQsIE9wdGlvbmFsPHVuc2lnbmVkPj4gUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJl
Z2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pCiB7CiAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgCisgICAgaWYgKCFtX2RvbWFpbklERnJv
bVN0cmluZ1N0YXRlbWVudCkgeworICAgICAgICBtX2RvbWFpbklERnJvbVN0cmluZ1N0YXRlbWVu
dCA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PihtX2RhdGFiYXNlLCBkb21h
aW5JREZyb21TdHJpbmdRdWVyeSk7CisgICAgICAgIGlmIChtX2RvbWFpbklERnJvbVN0cmluZ1N0
YXRlbWVudC0+cHJlcGFyZSgpICE9IFNRTElURV9PSykgeworICAgICAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluIGZhaWxlZCB0
byBwcmVwYXJlIHN0YXRlbWVudCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBt
X2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICAgICAgcmV0dXJuIHsgQWRkZWRSZWNvcmQ6Ok5vLCAwIH07CisgICAgICAg
IH0KKyAgICB9CiAKLSAgICBpZiAobV9kb21haW5JREZyb21TdHJpbmdTdGF0ZW1lbnQuYmluZFRl
eHQoMSwgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0spIHsKKyAgICBpZiAobV9kb21haW5J
REZyb21TdHJpbmdTdGF0ZW1lbnQtPmJpbmRUZXh0KDEsIGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FM
SVRFX09LKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9u
SUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjplbnN1cmVSZXNv
dXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbiBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6
ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4geyBBZGRlZFJlY29yZDo6Tm8s
IDAgfTsKICAgICB9CiAgICAgCi0gICAgaWYgKG1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50
LnN0ZXAoKSA9PSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIHVuc2lnbmVkIGRvbWFpbklEID0gbV9k
b21haW5JREZyb21TdHJpbmdTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDApOworICAgIGlmIChtX2Rv
bWFpbklERnJvbVN0cmluZ1N0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpIHsKKyAgICAg
ICAgdW5zaWduZWQgZG9tYWluSUQgPSBtX2RvbWFpbklERnJvbVN0cmluZ1N0YXRlbWVudC0+Z2V0
Q29sdW1uSW50KDApOwogCi0gICAgICAgIGludCByZXNldFJlc3VsdCA9IG1fZG9tYWluSURGcm9t
U3RyaW5nU3RhdGVtZW50LnJlc2V0KCk7CisgICAgICAgIGludCByZXNldFJlc3VsdCA9IG1fZG9t
YWluSURGcm9tU3RyaW5nU3RhdGVtZW50LT5yZXNldCgpOwogICAgICAgICBBU1NFUlRfVU5VU0VE
KHJlc2V0UmVzdWx0LCByZXNldFJlc3VsdCA9PSBTUUxJVEVfT0spOwogICAgICAgICByZXR1cm4g
eyBBZGRlZFJlY29yZDo6Tm8sIGRvbWFpbklEIH07CiAgICAgfQogCi0gICAgaW50IHJlc2V0UmVz
dWx0ID0gbV9kb21haW5JREZyb21TdHJpbmdTdGF0ZW1lbnQucmVzZXQoKTsKKyAgICBpbnQgcmVz
ZXRSZXN1bHQgPSBtX2RvbWFpbklERnJvbVN0cmluZ1N0YXRlbWVudC0+cmVzZXQoKTsKICAgICBB
U1NFUlRfVU5VU0VEKHJlc2V0UmVzdWx0LCByZXNldFJlc3VsdCA9PSBTUUxJVEVfT0spOwogCiAg
ICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyBuZXdPYnNlcnZhdGlvbihkb21haW4pOwpAQCAtMjMw
MSwxNCArMjQ4NiwyMyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpyZW1vdmVEYXRhRm9yRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRAogICAgIGF1dG8gZG9tYWlu
SURUb1JlbW92ZSA9IGRvbWFpbklEKGRvbWFpbik7CiAgICAgaWYgKCFkb21haW5JRFRvUmVtb3Zl
KQogICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYgKCFtX3JlbW92ZUFsbERhdGFTdGF0ZW1l
bnQpIHsKKyAgICAgICAgbV9yZW1vdmVBbGxEYXRhU3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxXZWJD
b3JlOjpTUUxpdGVTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIHJlbW92ZUFsbERhdGFRdWVyeSk7Cisg
ICAgICAgIGlmIChtX3JlbW92ZUFsbERhdGFTdGF0ZW1lbnQtPnByZXBhcmUoKSAhPSBTUUxJVEVf
T0spIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZW1vdmVEYXRhRm9yRG9tYWluIGZhaWxl
ZCB0byBwcmVwYXJlIHN0YXRlbWVudCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlz
LCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQogCi0gICAgaWYg
KG1fcmVtb3ZlQWxsRGF0YVN0YXRlbWVudC5iaW5kSW50KDEsICpkb21haW5JRFRvUmVtb3ZlKSAh
PSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9yZW1vdmVBbGxEYXRhU3RhdGVtZW50LnN0ZXAoKSAh
PSBTUUxJVEVfRE9ORSkgeworICAgIGlmIChtX3JlbW92ZUFsbERhdGFTdGF0ZW1lbnQtPmJpbmRJ
bnQoMSwgKmRvbWFpbklEVG9SZW1vdmUpICE9IFNRTElURV9PSworICAgICAgICB8fCBtX3JlbW92
ZUFsbERhdGFTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewogICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVtb3ZlRGF0YUZvckRvbWFpbiBmYWlsZWQsIGVycm9y
IG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KICAgICAKLSAgICByZXNldFN0
YXRlbWVudChtX3JlbW92ZUFsbERhdGFTdGF0ZW1lbnQpOworICAgIHJlc2V0U3RhdGVtZW50KG1f
cmVtb3ZlQWxsRGF0YVN0YXRlbWVudC5nZXQoKSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKQEAgLTI0OTAsMTQgKzI2ODQsMjMgQEAgVmVjdG9yPHVuc2lnbmVk
PiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZmluZEV4cGlyZWRVc2VySW50
ZXJhY3Rpb24KICAgICBPcHRpb25hbDxTZWNvbmRzPiBleHBpcmF0aW9uRGF0ZVRpbWUgPSBzdGF0
aXN0aWNzRXBpcmF0aW9uVGltZSgpOwogICAgIGlmICghZXhwaXJhdGlvbkRhdGVUaW1lKQogICAg
ICAgICByZXR1cm4gcmVzdWx0czsKKyAgICAKKyAgICBpZiAoIW1fZmluZEV4cGlyZWRVc2VySW50
ZXJhY3Rpb25TdGF0ZW1lbnQpIHsKKyAgICAgICAgbV9maW5kRXhwaXJlZFVzZXJJbnRlcmFjdGlv
blN0YXRlbWVudCA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PihtX2RhdGFi
YXNlLCBmaW5kRXhwaXJlZFVzZXJJbnRlcmFjdGlvblF1ZXJ5KTsKKyAgICAgICAgaWYgKG1fZmlu
ZEV4cGlyZWRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQtPnByZXBhcmUoKSAhPSBTUUxJVEVfT0sp
IHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpmaW5kRXhwaXJlZFVzZXJJbnRlcmFjdGlvbnMg
ZmFpbGVkIHRvIHByZXBhcmUgc3RhdGVtZW50LCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIs
IHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICB9CisgICAgfQog
Ci0gICAgaWYgKG1fZmluZEV4cGlyZWRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQuYmluZERvdWJs
ZSgxLCBleHBpcmF0aW9uRGF0ZVRpbWUudmFsdWUoKS52YWx1ZSgpKSAhPSBTUUxJVEVfT0spCisg
ICAgaWYgKG1fZmluZEV4cGlyZWRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQtPmJpbmREb3VibGUo
MSwgZXhwaXJhdGlvbkRhdGVUaW1lLnZhbHVlKCkudmFsdWUoKSkgIT0gU1FMSVRFX09LKQogICAg
ICAgICByZXR1cm4gcmVzdWx0czsKIAotICAgIHdoaWxlIChtX2ZpbmRFeHBpcmVkVXNlckludGVy
YWN0aW9uU3RhdGVtZW50LnN0ZXAoKSA9PSBTUUxJVEVfUk9XKQotICAgICAgICByZXN1bHRzLmFw
cGVuZChtX2ZpbmRFeHBpcmVkVXNlckludGVyYWN0aW9uU3RhdGVtZW50LmdldENvbHVtbkludCgw
KSk7CisgICAgd2hpbGUgKG1fZmluZEV4cGlyZWRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQtPnN0
ZXAoKSA9PSBTUUxJVEVfUk9XKQorICAgICAgICByZXN1bHRzLmFwcGVuZChtX2ZpbmRFeHBpcmVk
VXNlckludGVyYWN0aW9uU3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMCkpOwogCi0gICAgaW50IHJl
c2V0UmVzdWx0ID0gbV9maW5kRXhwaXJlZFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudC5yZXNldCgp
OworICAgIGludCByZXNldFJlc3VsdCA9IG1fZmluZEV4cGlyZWRVc2VySW50ZXJhY3Rpb25TdGF0
ZW1lbnQtPnJlc2V0KCk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNldFJlc3VsdCwgcmVzZXRSZXN1
bHQgPT0gU1FMSVRFX09LKTsKIAogICAgIHJldHVybiByZXN1bHRzOwpAQCAtMjY1OSwxMCArMjg2
MiwyMCBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcnVuZVN0
YXRpc3RpY3NJZk5lZWRlZCgpCiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKICAg
ICB1bnNpZ25lZCBjb3VudCA9IDA7Ci0gICAgaWYgKG1fb2JzZXJ2ZWREb21haW5Db3VudC5zdGVw
KCkgPT0gU1FMSVRFX1JPVykKLSAgICAgICAgY291bnQgPSBtX29ic2VydmVkRG9tYWluQ291bnQu
Z2V0Q29sdW1uSW50KDApOworICAgIAorICAgIGlmICghbV9vYnNlcnZlZERvbWFpbkNvdW50U3Rh
dGVtZW50KSB7CisgICAgICAgIG1fb2JzZXJ2ZWREb21haW5Db3VudFN0YXRlbWVudCA9IG1ha2VV
bmlxdWU8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PihtX2RhdGFiYXNlLCBvYnNlcnZlZERvbWFp
bkNvdW50UXVlcnkpOworICAgICAgICBpZiAobV9vYnNlcnZlZERvbWFpbkNvdW50U3RhdGVtZW50
LT5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJ1
bmVTdGF0aXN0aWNzSWZOZWVkZWQgZmFpbGVkIHRvIHByZXBhcmUgc3RhdGVtZW50LCBlcnJvciBt
ZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwor
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICB9CisgICAgCisgICAgaWYgKG1fb2JzZXJ2ZWREb21haW5Db3VudFN0YXRl
bWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpCisgICAgICAgIGNvdW50ID0gbV9vYnNlcnZlZERv
bWFpbkNvdW50U3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMCk7CiAKLSAgICBpbnQgcmVzZXRSZXN1
bHQgPSBtX29ic2VydmVkRG9tYWluQ291bnQucmVzZXQoKTsKKyAgICBpbnQgcmVzZXRSZXN1bHQg
PSBtX29ic2VydmVkRG9tYWluQ291bnRTdGF0ZW1lbnQtPnJlc2V0KCk7CiAgICAgQVNTRVJUX1VO
VVNFRChyZXNldFJlc3VsdCwgcmVzZXRSZXN1bHQgPT0gU1FMSVRFX09LKTsKIAogICAgIGlmIChj
b3VudCA8PSBwYXJhbWV0ZXJzKCkubWF4U3RhdGlzdGljc0VudHJpZXMpCkBAIC0yNjk5LDE2ICsy
OTEyLDI1IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnBydW5l
U3RhdGlzdGljc0lmTmVlZGVkKCkKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OnVwZGF0ZUxhc3RTZWVuKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIFdh
bGxUaW1lIGxhc3RTZWVuKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAg
IAorICAgIGlmICghbV91cGRhdGVMYXN0U2VlblN0YXRlbWVudCkgeworICAgICAgICBtX3VwZGF0
ZUxhc3RTZWVuU3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+
KG1fZGF0YWJhc2UsIHVwZGF0ZUxhc3RTZWVuUXVlcnkpOworICAgICAgICBpZiAobV91cGRhdGVM
YXN0U2VlblN0YXRlbWVudC0+cHJlcGFyZSgpICE9IFNRTElURV9PSykgeworICAgICAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OnVwZGF0ZUxhc3RTZWVuIGZhaWxlZCB0byBwcmVwYXJlIHN0YXRlbWVudCwg
ZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1z
ZygpKTsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgfQogCi0gICAgaWYgKG1fdXBkYXRlTGFzdFNlZW5TdGF0ZW1l
bnQuYmluZERvdWJsZSgxLCBsYXN0U2Vlbi5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpICE9
IFNRTElURV9PSwotICAgICAgICB8fCBtX3VwZGF0ZUxhc3RTZWVuU3RhdGVtZW50LmJpbmRUZXh0
KDIsIGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fdXBkYXRlTGFz
dFNlZW5TdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ET05FKSB7CisgICAgaWYgKG1fdXBkYXRl
TGFzdFNlZW5TdGF0ZW1lbnQtPmJpbmREb3VibGUoMSwgbGFzdFNlZW4uc2Vjb25kc1NpbmNlRXBv
Y2goKS52YWx1ZSgpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV91cGRhdGVMYXN0U2VlblN0
YXRlbWVudC0+YmluZFRleHQoMiwgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKKyAgICAg
ICAgfHwgbV91cGRhdGVMYXN0U2VlblN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7
CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAt
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVMYXN0U2VlbiBmYWls
ZWQgdG8gYmluZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNl
Lmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgCi0gICAgaW50IHJlc2V0UmVzdWx0ID0gbV91cGRhdGVMYXN0
U2VlblN0YXRlbWVudC5yZXNldCgpOworICAgIGludCByZXNldFJlc3VsdCA9IG1fdXBkYXRlTGFz
dFNlZW5TdGF0ZW1lbnQtPnJlc2V0KCk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNldFJlc3VsdCwg
cmVzZXRSZXN1bHQgPT0gU1FMSVRFX09LKTsKIH0KIApAQCAtMjc2MCwxNiArMjk4MiwyNSBAQCB2
b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRWZXJ5UHJldmFsZW50
UmVzb3VyY2UoY29uc3QgUmVnaXN0cgogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6dXBkYXRlRGF0YVJlY29yZHNSZW1vdmVkKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBkb21haW4sIGludCB2YWx1ZSkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
KyAgICAKKyAgICBpZiAoIW1fdXBkYXRlRGF0YVJlY29yZHNSZW1vdmVkU3RhdGVtZW50KSB7Cisg
ICAgICAgIG1fdXBkYXRlRGF0YVJlY29yZHNSZW1vdmVkU3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxX
ZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIHVwZGF0ZURhdGFSZWNvcmRzUmVt
b3ZlZFF1ZXJ5KTsKKyAgICAgICAgaWYgKG1fdXBkYXRlRGF0YVJlY29yZHNSZW1vdmVkU3RhdGVt
ZW50LT5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
dXBkYXRlRGF0YVJlY29yZHNSZW1vdmVkIGZhaWxlZCB0byBwcmVwYXJlIHN0YXRlbWVudCwgZXJy
b3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygp
KTsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgfQogCi0gICAgaWYgKG1fdXBkYXRlRGF0YVJlY29yZHNSZW1vdmVk
U3RhdGVtZW50LmJpbmRJbnQoMSwgdmFsdWUpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX3Vw
ZGF0ZURhdGFSZWNvcmRzUmVtb3ZlZFN0YXRlbWVudC5iaW5kVGV4dCgyLCBkb21haW4uc3RyaW5n
KCkpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX3VwZGF0ZURhdGFSZWNvcmRzUmVtb3ZlZFN0
YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKKyAgICBpZiAobV91cGRhdGVEYXRhUmVj
b3Jkc1JlbW92ZWRTdGF0ZW1lbnQtPmJpbmRJbnQoMSwgdmFsdWUpICE9IFNRTElURV9PSworICAg
ICAgICB8fCBtX3VwZGF0ZURhdGFSZWNvcmRzUmVtb3ZlZFN0YXRlbWVudC0+YmluZFRleHQoMiwg
ZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV91cGRhdGVEYXRhUmVj
b3Jkc1JlbW92ZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewogICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6dXBkYXRlRGF0YVJlY29yZHNSZW1vdmVkIGZhaWxl
ZCB0byBiaW5kLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2Uu
bGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGludCByZXNldFJlc3VsdCA9IG1fdXBkYXRlRGF0YVJlY29y
ZHNSZW1vdmVkU3RhdGVtZW50LnJlc2V0KCk7CisgICAgaW50IHJlc2V0UmVzdWx0ID0gbV91cGRh
dGVEYXRhUmVjb3Jkc1JlbW92ZWRTdGF0ZW1lbnQtPnJlc2V0KCk7CiAgICAgQVNTRVJUX1VOVVNF
RChyZXNldFJlc3VsdCwgcmVzZXRSZXN1bHQgPT0gU1FMSVRFX09LKTsKIH0KIApAQCAtMjgyNSwx
NiArMzA1NiwyNSBAQCBTdHJpbmcgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmdldERvbWFpblN0cmluZ0Zyb21Eb21haW5JRCh1bnNpZ25lZAogewogICAgIGF1dG8gcmVzdWx0
ID0gZW1wdHlTdHJpbmcoKTsKICAgICAKLSAgICBpZiAobV9kb21haW5TdHJpbmdGcm9tRG9tYWlu
SURTdGF0ZW1lbnQuYmluZEludCgxLCBkb21haW5JRCkgIT0gU1FMSVRFX09LKSB7CisgICAgaWYg
KCFtX2RvbWFpblN0cmluZ0Zyb21Eb21haW5JRFN0YXRlbWVudCkgeworICAgICAgICBtX2RvbWFp
blN0cmluZ0Zyb21Eb21haW5JRFN0YXRlbWVudCA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6U1FMaXRl
U3RhdGVtZW50PihtX2RhdGFiYXNlLCBkb21haW5TdHJpbmdGcm9tRG9tYWluSURRdWVyeSk7Cisg
ICAgICAgIGlmIChtX2RvbWFpblN0cmluZ0Zyb21Eb21haW5JRFN0YXRlbWVudC0+cHJlcGFyZSgp
ICE9IFNRTElURV9PSykgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywg
IiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldERvbWFpblN0cmlu
Z0Zyb21Eb21haW5JRCBmYWlsZWQgdG8gcHJlcGFyZSBzdGF0ZW1lbnQsIGVycm9yIG1lc3NhZ2U6
ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgCisgICAgaWYgKG1fZG9tYWluU3RyaW5nRnJvbURvbWFpbklE
U3RhdGVtZW50LT5iaW5kSW50KDEsIGRvbWFpbklEKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldERvbWFpblN0cmluZ0Zyb21Eb21haW5JRC4g
U3RhdGVtZW50IGZhaWxlZCB0byBwcmVwYXJlIG9yIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICV7cHJp
dmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKLSAg
ICBpZiAobV9kb21haW5TdHJpbmdGcm9tRG9tYWluSURTdGF0ZW1lbnQuc3RlcCgpID09IFNRTElU
RV9ST1cpCi0gICAgICAgIHJlc3VsdCA9IG1fZG9tYWluU3RyaW5nRnJvbURvbWFpbklEU3RhdGVt
ZW50LmdldENvbHVtblRleHQoMCk7CisgICAgaWYgKG1fZG9tYWluU3RyaW5nRnJvbURvbWFpbklE
U3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykKKyAgICAgICAgcmVzdWx0ID0gbV9kb21h
aW5TdHJpbmdGcm9tRG9tYWluSURTdGF0ZW1lbnQtPmdldENvbHVtblRleHQoMCk7CiAgICAgCi0g
ICAgcmVzZXRTdGF0ZW1lbnQobV9kb21haW5TdHJpbmdGcm9tRG9tYWluSURTdGF0ZW1lbnQpOwor
ICAgIHJlc2V0U3RhdGVtZW50KG1fZG9tYWluU3RyaW5nRnJvbURvbWFpbklEU3RhdGVtZW50Lmdl
dCgpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yOTAxLDggKzMxNDEsMTcgQEAgc3Rh
dGljIGJvb2wgaGFzSGFkUmVjZW50VXNlckludGVyYWN0aW9uKFdURjo6U2Vjb25kcyBpbnRlcmFj
dGlvblRpbWVTZWNvbmRzKQogCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpyZXNvdXJjZVRvU3RyaW5nKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IFN0cmlu
ZyYgZG9tYWluKSBjb25zdAogewotICAgIGlmIChtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFt
ZVN0YXRlbWVudC5iaW5kVGV4dCgxLCBkb21haW4pICE9IFNRTElURV9PSwotICAgICAgICB8fCBt
X2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX1JP
VykgeworICAgIGlmICghbV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQpIHsK
KyAgICAgICAgbV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQgPSBtYWtlVW5p
cXVlPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4obV9kYXRhYmFzZSwgZ2V0UmVzb3VyY2VEYXRh
QnlEb21haW5OYW1lUXVlcnkpOworICAgICAgICBpZiAobV9nZXRSZXNvdXJjZURhdGFCeURvbWFp
bk5hbWVTdGF0ZW1lbnQtPnByZXBhcmUoKSAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpyZXNvdXJjZVRvU3RyaW5nIGZhaWxlZCB0byBwcmVwYXJlIHN0YXRlbWVudCwg
ZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1z
ZygpKTsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIGlmIChtX2dldFJlc291cmNlRGF0YUJ5
RG9tYWluTmFtZVN0YXRlbWVudC0+YmluZFRleHQoMSwgZG9tYWluKSAhPSBTUUxJVEVfT0sKKyAg
ICAgICAgfHwgbV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQtPnN0ZXAoKSAh
PSBTUUxJVEVfUk9XKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9z
ZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXNv
dXJjZVRvU3RyaW5nLiBTdGF0ZW1lbnQgZmFpbGVkIHRvIGJpbmQgb3IgZG9tYWluIHdhcyBub3Qg
Zm91bmQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0
RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1
cm47CkBAIC0yOTEzLDE1ICszMTYyLDE1IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OnJlc291cmNlVG9TdHJpbmcoU3RyaW5nQnVpbGRlciYgYnVpbGRlCiAgICAg
YnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAgICAgCiAgICAgLy8gVXNlciBpbnRlcmFjdGlvbgotICAg
IGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImhhZFVzZXJJbnRlcmFjdGlvbiIsIG1fZ2V0UmVzb3Vy
Y2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LmdldENvbHVtbkludChIYWRVc2VySW50ZXJhY3Rp
b25JbmRleCkpOworICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImhhZFVzZXJJbnRlcmFjdGlv
biIsIG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LT5nZXRDb2x1bW5JbnQo
SGFkVXNlckludGVyYWN0aW9uSW5kZXgpKTsKICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKICAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiAgICBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uOiAi
KTsKLSAgICBpZiAoaGFzSGFkUmVjZW50VXNlckludGVyYWN0aW9uKFNlY29uZHMobV9nZXRSZXNv
dXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQuZ2V0Q29sdW1uRG91YmxlKE1vc3RSZWNlbnRV
c2VySW50ZXJhY3Rpb25UaW1lSW5kZXgpKSkpCisgICAgaWYgKGhhc0hhZFJlY2VudFVzZXJJbnRl
cmFjdGlvbihTZWNvbmRzKG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LT5n
ZXRDb2x1bW5Eb3VibGUoTW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWVJbmRleCkpKSkKICAg
ICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ3aXRoaW4gMjQgaG91cnMiKTsKICAgICBlbHNl
CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLTEiKTsKICAgICBidWlsZGVyLmFwcGVu
ZCgnXG4nKTsKLSAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJncmFuZGZhdGhlcmVkIiwgbV9n
ZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KEdyYW5kZmF0
aGVyZWRJbmRleCkpOworICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImdyYW5kZmF0aGVyZWQi
LCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC0+Z2V0Q29sdW1uSW50KEdy
YW5kZmF0aGVyZWRJbmRleCkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwogCiAgICAgLy8g
U3RvcmFnZSBhY2Nlc3MKQEAgLTI5MzQsNyArMzE4Myw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlc291cmNlVG9TdHJpbmcoU3RyaW5nQnVpbGRlciYgYnVp
bGRlCiAgICAgYXBwZW5kU3ViU3RhdGlzdGljTGlzdChidWlsZGVyLCAiVG9wRnJhbWVMaW5rRGVj
b3JhdGlvbnNGcm9tIiwgZG9tYWluKTsKICAgICBhcHBlbmRTdWJTdGF0aXN0aWNMaXN0KGJ1aWxk
ZXIsICJUb3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRzIiwgZG9tYWluKTsKIAotICAgIGFw
cGVuZEJvb2xlYW4oYnVpbGRlciwgIklzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92
YWwiLCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC5nZXRDb2x1bW5JbnQo
SXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbEluZGV4KSk7CisgICAgYXBwZW5k
Qm9vbGVhbihidWlsZGVyLCAiSXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCIs
IG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoSXNT
Y2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbEluZGV4KSk7CiAgICAgYnVpbGRlci5h
cHBlbmQoJ1xuJyk7CiAKICAgICAvLyBTdWJmcmFtZSBzdGF0cwpAQCAtMjk0Niw1NCArMzE5NSwx
MDggQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVzb3VyY2VU
b1N0cmluZyhTdHJpbmdCdWlsZGVyJiBidWlsZGUKICAgICBhcHBlbmRTdWJTdGF0aXN0aWNMaXN0
KGJ1aWxkZXIsICJTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20iLCBkb21haW4pOwogCiAg
ICAgLy8gUHJldmFsZW50IFJlc291cmNlCi0gICAgYXBwZW5kQm9vbGVhbihidWlsZGVyLCAiaXNQ
cmV2YWxlbnRSZXNvdXJjZSIsIG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50
LmdldENvbHVtbkludChJc1ByZXZhbGVudEluZGV4KSk7CisgICAgYXBwZW5kQm9vbGVhbihidWls
ZGVyLCAiaXNQcmV2YWxlbnRSZXNvdXJjZSIsIG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1l
U3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoSXNQcmV2YWxlbnRJbmRleCkpOwogICAgIGJ1aWxkZXIu
YXBwZW5kKCdcbicpOwotICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImlzVmVyeVByZXZhbGVu
dFJlc291cmNlIiwgbV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQuZ2V0Q29s
dW1uSW50KElzVmVyeVByZXZhbGVudEluZGV4KSk7CisgICAgYXBwZW5kQm9vbGVhbihidWlsZGVy
LCAiaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UiLCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFt
ZVN0YXRlbWVudC0+Z2V0Q29sdW1uSW50KElzVmVyeVByZXZhbGVudEluZGV4KSk7CiAgICAgYnVp
bGRlci5hcHBlbmQoJ1xuJyk7CiAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgICAgZGF0YVJl
Y29yZHNSZW1vdmVkOiAiKTsKLSAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX2dldFJlc291cmNl
RGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC5nZXRDb2x1bW5JbnQoRGF0YVJlY29yZHNSZW1vdmVk
SW5kZXgpKTsKKyAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX2dldFJlc291cmNlRGF0YUJ5RG9t
YWluTmFtZVN0YXRlbWVudC0+Z2V0Q29sdW1uSW50KERhdGFSZWNvcmRzUmVtb3ZlZEluZGV4KSk7
CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAKLSAgICByZXNldFN0YXRlbWVudChtX2dldFJl
c291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudCk7CisgICAgcmVzZXRTdGF0ZW1lbnQobV9n
ZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQuZ2V0KCkpOwogfQogCiBib29sIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkb21haW5JREV4aXN0c0luRGF0YWJh
c2UoaW50IGRvbWFpbklEKQogewotICAgIGlmIChtX2xpbmtEZWNvcmF0aW9uRXhpc3RzU3RhdGVt
ZW50LmJpbmRJbnQoMSwgZG9tYWluSUQpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX2xpbmtE
ZWNvcmF0aW9uRXhpc3RzU3RhdGVtZW50LmJpbmRJbnQoMiwgZG9tYWluSUQpICE9IFNRTElURV9P
SwotICAgICAgICB8fCBtX3NjcmlwdExvYWRFeGlzdHNTdGF0ZW1lbnQuYmluZEludCgxLCBkb21h
aW5JRCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fc2NyaXB0TG9hZEV4aXN0c1N0YXRlbWVu
dC5iaW5kSW50KDIsIGRvbWFpbklEKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9zdWJGcmFt
ZUV4aXN0c1N0YXRlbWVudC5iaW5kSW50KDEsIGRvbWFpbklEKSAhPSBTUUxJVEVfT0sKLSAgICAg
ICAgfHwgbV9zdWJGcmFtZUV4aXN0c1N0YXRlbWVudC5iaW5kSW50KDIsIGRvbWFpbklEKSAhPSBT
UUxJVEVfT0sKLSAgICAgICAgfHwgbV9zdWJSZXNvdXJjZUV4aXN0c1N0YXRlbWVudC5iaW5kSW50
KDEsIGRvbWFpbklEKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9zdWJSZXNvdXJjZUV4aXN0
c1N0YXRlbWVudC5iaW5kSW50KDIsIGRvbWFpbklEKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwg
bV91bmlxdWVSZWRpcmVjdEV4aXN0c1N0YXRlbWVudC5iaW5kSW50KDEsIGRvbWFpbklEKSAhPSBT
UUxJVEVfT0sKLSAgICAgICAgfHwgbV91bmlxdWVSZWRpcmVjdEV4aXN0c1N0YXRlbWVudC5iaW5k
SW50KDIsIGRvbWFpbklEKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9vYnNlcnZlZERvbWFp
bnNFeGlzdHNTdGF0ZW1lbnQuYmluZEludCgxLCBkb21haW5JRCkgIT0gU1FMSVRFX09LKSB7Cisg
ICAgaWYgKCFtX2xpbmtEZWNvcmF0aW9uRXhpc3RzU3RhdGVtZW50KSB7CisgICAgICAgIG1fbGlu
a0RlY29yYXRpb25FeGlzdHNTdGF0ZW1lbnQgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlNRTGl0ZVN0
YXRlbWVudD4obV9kYXRhYmFzZSwgbGlua0RlY29yYXRpb25FeGlzdHNRdWVyeSk7CisgICAgICAg
IGlmIChtX2xpbmtEZWNvcmF0aW9uRXhpc3RzU3RhdGVtZW50LT5wcmVwYXJlKCkgIT0gU1FMSVRF
X09LKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWluSURFeGlzdHNJbkRhdGFiYXNl
IGZhaWxlZCB0byBwcmVwYXJlIHN0YXRlbWVudCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMi
LCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
fQorICAgIAorICAgIGlmICghbV9zY3JpcHRMb2FkRXhpc3RzU3RhdGVtZW50KSB7CisgICAgICAg
IG1fc2NyaXB0TG9hZEV4aXN0c1N0YXRlbWVudCA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6U1FMaXRl
U3RhdGVtZW50PihtX2RhdGFiYXNlLCBzY3JpcHRMb2FkRXhpc3RzUXVlcnkpOworICAgICAgICBp
ZiAobV9zY3JpcHRMb2FkRXhpc3RzU3RhdGVtZW50LT5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKSB7
CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWluSURFeGlzdHNJbkRhdGFiYXNlIGZhaWxl
ZCB0byBwcmVwYXJlIHN0YXRlbWVudCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlz
LCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorICAg
IAorICAgIGlmICghbV9zdWJGcmFtZUV4aXN0c1N0YXRlbWVudCkgeworICAgICAgICBtX3N1YkZy
YW1lRXhpc3RzU3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+
KG1fZGF0YWJhc2UsIHN1YkZyYW1lRXhpc3RzUXVlcnkpOworICAgICAgICBpZiAobV9zdWJGcmFt
ZUV4aXN0c1N0YXRlbWVudC0+cHJlcGFyZSgpICE9IFNRTElURV9PSykgeworICAgICAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OmRvbWFpbklERXhpc3RzSW5EYXRhYmFzZSBmYWlsZWQgdG8gcHJlcGFyZSBz
dGF0ZW1lbnQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5s
YXN0RXJyb3JNc2coKSk7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBpZiAoIW1f
c3ViUmVzb3VyY2VFeGlzdHNTdGF0ZW1lbnQpIHsKKyAgICAgICAgbV9zdWJSZXNvdXJjZUV4aXN0
c1N0YXRlbWVudCA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PihtX2RhdGFi
YXNlLCBzdWJSZXNvdXJjZUV4aXN0c1F1ZXJ5KTsKKyAgICAgICAgaWYgKG1fc3ViUmVzb3VyY2VF
eGlzdHNTdGF0ZW1lbnQtPnByZXBhcmUoKSAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpkb21haW5JREV4aXN0c0luRGF0YWJhc2UgZmFpbGVkIHRvIHByZXBhcmUgc3Rh
dGVtZW50LCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFz
dEVycm9yTXNnKCkpOworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgaWYgKCFtX3Vu
aXF1ZVJlZGlyZWN0RXhpc3RzU3RhdGVtZW50KSB7CisgICAgICAgIG1fdW5pcXVlUmVkaXJlY3RF
eGlzdHNTdGF0ZW1lbnQgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4obV9k
YXRhYmFzZSwgdW5pcXVlUmVkaXJlY3RFeGlzdHNRdWVyeSk7CisgICAgICAgIGlmIChtX3VuaXF1
ZVJlZGlyZWN0RXhpc3RzU3RhdGVtZW50LT5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKSB7CisgICAg
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWluSURFeGlzdHNJbkRhdGFiYXNlIGZhaWxlZCB0byBw
cmVwYXJlIHN0YXRlbWVudCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2Rh
dGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIAorICAg
IGlmICghbV9vYnNlcnZlZERvbWFpbnNFeGlzdHNTdGF0ZW1lbnQpIHsKKyAgICAgICAgbV9vYnNl
cnZlZERvbWFpbnNFeGlzdHNTdGF0ZW1lbnQgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlNRTGl0ZVN0
YXRlbWVudD4obV9kYXRhYmFzZSwgb2JzZXJ2ZWREb21haW5zRXhpc3RzUXVlcnkpOworICAgICAg
ICBpZiAobV9vYnNlcnZlZERvbWFpbnNFeGlzdHNTdGF0ZW1lbnQtPnByZXBhcmUoKSAhPSBTUUxJ
VEVfT0spIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkb21haW5JREV4aXN0c0luRGF0YWJh
c2UgZmFpbGVkIHRvIHByZXBhcmUgc3RhdGVtZW50LCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9
cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAg
ICB9CisgICAgCisgICAgaWYgKG1fbGlua0RlY29yYXRpb25FeGlzdHNTdGF0ZW1lbnQtPmJpbmRJ
bnQoMSwgZG9tYWluSUQpICE9IFNRTElURV9PSworICAgICAgICB8fCBtX2xpbmtEZWNvcmF0aW9u
RXhpc3RzU3RhdGVtZW50LT5iaW5kSW50KDIsIGRvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAg
ICAgfHwgbV9zY3JpcHRMb2FkRXhpc3RzU3RhdGVtZW50LT5iaW5kSW50KDEsIGRvbWFpbklEKSAh
PSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9zY3JpcHRMb2FkRXhpc3RzU3RhdGVtZW50LT5iaW5k
SW50KDIsIGRvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9zdWJGcmFtZUV4aXN0
c1N0YXRlbWVudC0+YmluZEludCgxLCBkb21haW5JRCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8
IG1fc3ViRnJhbWVFeGlzdHNTdGF0ZW1lbnQtPmJpbmRJbnQoMiwgZG9tYWluSUQpICE9IFNRTElU
RV9PSworICAgICAgICB8fCBtX3N1YlJlc291cmNlRXhpc3RzU3RhdGVtZW50LT5iaW5kSW50KDEs
IGRvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9zdWJSZXNvdXJjZUV4aXN0c1N0
YXRlbWVudC0+YmluZEludCgyLCBkb21haW5JRCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1f
dW5pcXVlUmVkaXJlY3RFeGlzdHNTdGF0ZW1lbnQtPmJpbmRJbnQoMSwgZG9tYWluSUQpICE9IFNR
TElURV9PSworICAgICAgICB8fCBtX3VuaXF1ZVJlZGlyZWN0RXhpc3RzU3RhdGVtZW50LT5iaW5k
SW50KDIsIGRvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9vYnNlcnZlZERvbWFp
bnNFeGlzdHNTdGF0ZW1lbnQtPmJpbmRJbnQoMSwgZG9tYWluSUQpICE9IFNRTElURV9PSykgewog
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWluSURFeGlzdHNJbkRhdGFi
YXNlIGZhaWxlZCB0byBiaW5kLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1f
ZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmIChtX2xpbmtEZWNvcmF0aW9u
RXhpc3RzU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfUk9XCi0gICAgICAgIHx8IG1fc2NyaXB0
TG9hZEV4aXN0c1N0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX1JPVwotICAgICAgICB8fCBtX3N1
YkZyYW1lRXhpc3RzU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfUk9XCi0gICAgICAgIHx8IG1f
c3ViUmVzb3VyY2VFeGlzdHNTdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ST1cKLSAgICAgICAg
fHwgbV91bmlxdWVSZWRpcmVjdEV4aXN0c1N0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX1JPVwot
ICAgICAgICB8fCBtX29ic2VydmVkRG9tYWluc0V4aXN0c1N0YXRlbWVudC5zdGVwKCkgIT0gU1FM
SVRFX1JPVykgeworICAgIGlmIChtX2xpbmtEZWNvcmF0aW9uRXhpc3RzU3RhdGVtZW50LT5zdGVw
KCkgIT0gU1FMSVRFX1JPVworICAgICAgICB8fCBtX3NjcmlwdExvYWRFeGlzdHNTdGF0ZW1lbnQt
PnN0ZXAoKSAhPSBTUUxJVEVfUk9XCisgICAgICAgIHx8IG1fc3ViRnJhbWVFeGlzdHNTdGF0ZW1l
bnQtPnN0ZXAoKSAhPSBTUUxJVEVfUk9XCisgICAgICAgIHx8IG1fc3ViUmVzb3VyY2VFeGlzdHNT
dGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfUk9XCisgICAgICAgIHx8IG1fdW5pcXVlUmVkaXJl
Y3RFeGlzdHNTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfUk9XCisgICAgICAgIHx8IG1fb2Jz
ZXJ2ZWREb21haW5zRXhpc3RzU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX1JPVykgewogICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWluSURFeGlzdHNJbkRhdGFiYXNl
IGZhaWxlZCB0byBzdGVwLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0
YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKLSAgICByZXNldFN0YXRlbWVudChtX2xp
bmtEZWNvcmF0aW9uRXhpc3RzU3RhdGVtZW50KTsKLSAgICByZXNldFN0YXRlbWVudChtX3Njcmlw
dExvYWRFeGlzdHNTdGF0ZW1lbnQpOwotICAgIHJlc2V0U3RhdGVtZW50KG1fc3ViRnJhbWVFeGlz
dHNTdGF0ZW1lbnQpOwotICAgIHJlc2V0U3RhdGVtZW50KG1fc3ViUmVzb3VyY2VFeGlzdHNTdGF0
ZW1lbnQpOwotICAgIHJlc2V0U3RhdGVtZW50KG1fdW5pcXVlUmVkaXJlY3RFeGlzdHNTdGF0ZW1l
bnQpOwotICAgIHJlc2V0U3RhdGVtZW50KG1fb2JzZXJ2ZWREb21haW5zRXhpc3RzU3RhdGVtZW50
KTsKKyAgICByZXNldFN0YXRlbWVudChtX2xpbmtEZWNvcmF0aW9uRXhpc3RzU3RhdGVtZW50Lmdl
dCgpKTsKKyAgICByZXNldFN0YXRlbWVudChtX3NjcmlwdExvYWRFeGlzdHNTdGF0ZW1lbnQuZ2V0
KCkpOworICAgIHJlc2V0U3RhdGVtZW50KG1fc3ViRnJhbWVFeGlzdHNTdGF0ZW1lbnQuZ2V0KCkp
OworICAgIHJlc2V0U3RhdGVtZW50KG1fc3ViUmVzb3VyY2VFeGlzdHNTdGF0ZW1lbnQuZ2V0KCkp
OworICAgIHJlc2V0U3RhdGVtZW50KG1fdW5pcXVlUmVkaXJlY3RFeGlzdHNTdGF0ZW1lbnQuZ2V0
KCkpOworICAgIHJlc2V0U3RhdGVtZW50KG1fb2JzZXJ2ZWREb21haW5zRXhpc3RzU3RhdGVtZW50
LmdldCgpKTsKIAotICAgIHJldHVybiBtX2xpbmtEZWNvcmF0aW9uRXhpc3RzU3RhdGVtZW50Lmdl
dENvbHVtbkludCgwKSB8fCBtX3NjcmlwdExvYWRFeGlzdHNTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50
KDApIHx8IG1fc3ViRnJhbWVFeGlzdHNTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDApIHx8IG1fc3Vi
UmVzb3VyY2VFeGlzdHNTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDApIHx8IG1fdW5pcXVlUmVkaXJl
Y3RFeGlzdHNTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDApIHx8IG1fb2JzZXJ2ZWREb21haW5zRXhp
c3RzU3RhdGVtZW50LmdldENvbHVtbkludCgwKTsKKyAgICByZXR1cm4gbV9saW5rRGVjb3JhdGlv
bkV4aXN0c1N0YXRlbWVudC0+Z2V0Q29sdW1uSW50KDApIHx8IG1fc2NyaXB0TG9hZEV4aXN0c1N0
YXRlbWVudC0+Z2V0Q29sdW1uSW50KDApIHx8IG1fc3ViRnJhbWVFeGlzdHNTdGF0ZW1lbnQtPmdl
dENvbHVtbkludCgwKSB8fCBtX3N1YlJlc291cmNlRXhpc3RzU3RhdGVtZW50LT5nZXRDb2x1bW5J
bnQoMCkgfHwgbV91bmlxdWVSZWRpcmVjdEV4aXN0c1N0YXRlbWVudC0+Z2V0Q29sdW1uSW50KDAp
IHx8IG1fb2JzZXJ2ZWREb21haW5zRXhpc3RzU3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAppbmRleCBiNDdkNTJkZjJiNGE1ZThkZTg3MTY0MTJl
MWFhZDUzOTA3YWQzZDliLi5kZjkwZmEyYjE3YTIzMDRlYmQ1ZmNiNjRmMzM1MWFjOWFkY2VmNTc3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmUuaApAQCAtODQsNiArODQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBtZXJnZVN0YXRpc3RpY3Mo
VmVjdG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xl
YXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKICAgICBib29sIGlzRW1w
dHkoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGNsb3NlKCk7CiAKICAgICBWZWN0b3I8V2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YT4gYWdncmVnYXRlZFRo
aXJkUGFydHlEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVDb29raWVCbG9j
a2luZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwpAQCAtMTQ4LDYgKzE0
OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbmFibGVGb3JlaWduS2V5cygpOwogICAgIGJvb2wg
aXNNaWdyYXRpb25OZWNlc3NhcnkoKTsKICAgICB2b2lkIG1pZ3JhdGVEYXRhVG9OZXdUYWJsZXNJ
Zk5lY2Vzc2FyeSgpOworICAgIHZvaWQgZGVzdHJveVN0YXRlbWVudHMoKTsKICAgICBib29sIGhh
c1N0b3JhZ2VBY2Nlc3MoY29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBTdWJGcmFtZURvbWFp
biYpIGNvbnN0OwogICAgIFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRo
aXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5PiBnZXRUaGlyZFBhcnR5RGF0YUZvclNw
ZWNpZmljRmlyc3RQYXJ0eURvbWFpbnModW5zaWduZWQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JikgY29uc3Q7CiAgICAgdm9pZCBvcGVuQW5kVXBkYXRlU2NoZW1hSWZOZWNlc3NhcnkoKTsKQEAg
LTE1NSw3ICsxNTcsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBnZXRTdWJTdGF0aXN0aWNTdGF0
ZW1lbnQoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgdm9pZCBhcHBlbmRTdWJTdGF0aXN0aWNM
aXN0KFN0cmluZ0J1aWxkZXImLCBjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSwgY29uc3QgU3RyaW5n
JiBkb21haW4pIGNvbnN0OwogICAgIHZvaWQgbWVyZ2VTdGF0aXN0aWMoY29uc3QgUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyYpOwotICAgIHZvaWQgbWVyZ2UoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50
JiwgY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOworICAgIHZvaWQgbWVyZ2UoV2ViQ29y
ZTo6U1FMaXRlU3RhdGVtZW50KiwgY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOwogICAg
IHZvaWQgY2xlYXJEYXRhYmFzZUNvbnRlbnRzKCk7CiAgICAgdW5zaWduZWQgZ2V0TnVtYmVyT2ZQ
cmV2YWxlbnRSZXNvdXJjZXMoKSBjb25zdDsKICAgICB1bnNpZ25lZCBnZXROdW1iZXJPZlByZXZh
bGVudFJlc291cmNlc1dpdGhVSSgpIGNvbnN0OwpAQCAtMTY4LDcgKzE3MCw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBpbnNlcnREb21haW5SZWxhdGlvbnNoaXBzKGNvbnN0IFJlc291cmNlTG9hZFN0
YXRpc3RpY3MmKTsKICAgICB2b2lkIGluc2VydERvbWFpblJlbGF0aW9uc2hpcExpc3QoY29uc3Qg
U3RyaW5nJiwgY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mLCB1bnNpZ25lZCk7CiAg
ICAgYm9vbCBpbnNlcnREb21haW5SZWxhdGlvbnNoaXAoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50
JiwgdW5zaWduZWQgZG9tYWluSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURv
bWFpbik7Ci0gICAgYm9vbCByZWxhdGlvbnNoaXBFeGlzdHMoV2ViQ29yZTo6U1FMaXRlU3RhdGVt
ZW50JiwgT3B0aW9uYWw8dW5zaWduZWQ+IGZpcnN0RG9tYWluSUQsIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiBzZWNvbmREb21haW4pIGNvbnN0OworICAgIGJvb2wgcmVsYXRpb25zaGlwRXhpc3Rz
KFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCosIE9wdGlvbmFsPHVuc2lnbmVkPiBmaXJzdERvbWFp
bklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc2Vjb25kRG9tYWluKSBjb25zdDsKICAgICBP
cHRpb25hbDx1bnNpZ25lZD4gZG9tYWluSUQoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25z
dDsKICAgICBib29sIGRvbWFpbkV4aXN0cyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0
OwogICAgIHZvaWQgdXBkYXRlTGFzdFNlZW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBXYWxs
VGltZSk7CkBAIC0yMDYsNyArMjA4LDcgQEAgcHJpdmF0ZToKICAgICB9OwogICAgIEhhc2hNYXA8
dW5zaWduZWQsIE5vdFZlcnlQcmV2YWxlbnRSZXNvdXJjZXM+IGZpbmROb3RWZXJ5UHJldmFsZW50
UmVzb3VyY2VzKCk7CiAKLSAgICBib29sIHByZWRpY2F0ZVZhbHVlRm9yRG9tYWluKFdlYkNvcmU6
OlNRTGl0ZVN0YXRlbWVudCYsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CisgICAg
Ym9vbCBwcmVkaWNhdGVWYWx1ZUZvckRvbWFpbihXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQqLCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0OwogCiAgICAgYm9vbCBhcmVBbGxUaGlyZFBh
cnR5Q29va2llc0Jsb2NrZWRVbmRlcihjb25zdCBUb3BGcmFtZURvbWFpbiYpIG92ZXJyaWRlOwog
ICAgIENvb2tpZUFjY2VzcyBjb29raWVBY2Nlc3MoY29uc3QgU3ViUmVzb3VyY2VEb21haW4mLCBj
b25zdCBUb3BGcmFtZURvbWFpbiYpOwpAQCAtMjI5LDUwICsyMzEsNDggQEAgcHJpdmF0ZToKIAog
ICAgIGJvb2wgY3JlYXRlVW5pcXVlSW5kaWNlcygpOwogICAgIGJvb2wgY3JlYXRlU2NoZW1hKCk7
Ci0gICAgYm9vbCBwcmVwYXJlU3RhdGVtZW50cygpOwogICAgIFN0cmluZyBlbnN1cmVBbmRNYWtl
RG9tYWluTGlzdChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYpOwotCiAgICAgCiAg
ICAgY29uc3QgU3RyaW5nIG1fc3RvcmFnZURpcmVjdG9yeVBhdGg7CiAgICAgbXV0YWJsZSBXZWJD
b3JlOjpTUUxpdGVEYXRhYmFzZSBtX2RhdGFiYXNlOwotICAgIG11dGFibGUgV2ViQ29yZTo6U1FM
aXRlU3RhdGVtZW50IG1fb2JzZXJ2ZWREb21haW5Db3VudDsKLSAgICBXZWJDb3JlOjpTUUxpdGVT
dGF0ZW1lbnQgbV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudDsKLSAgICBXZWJDb3JlOjpT
UUxpdGVTdGF0ZW1lbnQgbV9pbnNlcnRUb3BMZXZlbERvbWFpblN0YXRlbWVudDsKLSAgICBtdXRh
YmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX2RvbWFpbklERnJvbVN0cmluZ1N0YXRlbWVu
dDsKLSAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX3RvcEZyYW1lTGlua0Rl
Y29yYXRpb25zRnJvbUV4aXN0czsKLSAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVu
dCBtX3RvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHNFeGlzdHM7Ci0gICAgbXV0YWJsZSBX
ZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV9zdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5FeGlz
dHM7Ci0gICAgbXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV9zdWJyZXNvdXJjZVVu
ZGVyVG9wRnJhbWVEb21haW5FeGlzdHM7Ci0gICAgbXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVTdGF0
ZW1lbnQgbV9zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvRXhpc3RzOwotICAgIFdlYkNvcmU6
OlNRTGl0ZVN0YXRlbWVudCBtX21vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQ7Ci0g
ICAgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fdXBkYXRlTGFzdFNlZW5TdGF0ZW1lbnQ7Ci0g
ICAgbXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV91cGRhdGVEYXRhUmVjb3Jkc1Jl
bW92ZWRTdGF0ZW1lbnQ7Ci0gICAgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fdXBkYXRlUHJl
dmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQ7Ci0gICAgbXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVTdGF0
ZW1lbnQgbV9pc1ByZXZhbGVudFJlc291cmNlU3RhdGVtZW50OwotICAgIFdlYkNvcmU6OlNRTGl0
ZVN0YXRlbWVudCBtX3VwZGF0ZVZlcnlQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudDsKLSAgICBt
dXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX2lzVmVyeVByZXZhbGVudFJlc291cmNl
U3RhdGVtZW50OwotICAgIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX2NsZWFyUHJldmFsZW50
UmVzb3VyY2VTdGF0ZW1lbnQ7Ci0gICAgbXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQg
bV9oYWRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQ7Ci0gICAgV2ViQ29yZTo6U1FMaXRlU3RhdGVt
ZW50IG1fdXBkYXRlR3JhbmRmYXRoZXJlZFN0YXRlbWVudDsKLSAgICBtdXRhYmxlIFdlYkNvcmU6
OlNRTGl0ZVN0YXRlbWVudCBtX3VwZGF0ZUlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJl
bW92YWxTdGF0ZW1lbnQ7Ci0gICAgbXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV9p
c0dyYW5kZmF0aGVyZWRTdGF0ZW1lbnQ7Ci0gICAgbXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVTdGF0
ZW1lbnQgbV9maW5kRXhwaXJlZFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudDsKLSAgICBtdXRhYmxl
IFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX2NvdW50UHJldmFsZW50UmVzb3VyY2VzU3RhdGVt
ZW50OwotICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fY291bnRQcmV2YWxl
bnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uU3RhdGVtZW50OwotICAgIG11dGFibGUgV2Vi
Q29yZTo6U1FMaXRlU3RhdGVtZW50IG1fY291bnRQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNl
ckludGVyYWN0aW9uU3RhdGVtZW50OwotICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlU3RhdGVt
ZW50IG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50OwotICAgIG11dGFibGUg
V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fZ2V0QWxsRG9tYWluc1N0YXRlbWVudDsKLSAgICBt
dXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX2RvbWFpblN0cmluZ0Zyb21Eb21haW5J
RFN0YXRlbWVudDsKLSAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX2dldEFs
bFN1YlN0YXRpc3RpY3NTdGF0ZW1lbnQ7Ci0gICAgbXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVTdGF0
ZW1lbnQgbV9zdG9yYWdlQWNjZXNzRXhpc3RzU3RhdGVtZW50OwotICAgIG11dGFibGUgV2ViQ29y
ZTo6U1FMaXRlU3RhdGVtZW50IG1fZ2V0TW9zdFJlY2VudGx5VXBkYXRlZFRpbWVzdGFtcFN0YXRl
bWVudDsKLSAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX2xpbmtEZWNvcmF0
aW9uRXhpc3RzU3RhdGVtZW50OwotICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50
IG1fc2NyaXB0TG9hZEV4aXN0c1N0YXRlbWVudDsKLSAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0
ZVN0YXRlbWVudCBtX3N1YkZyYW1lRXhpc3RzU3RhdGVtZW50OwotICAgIG11dGFibGUgV2ViQ29y
ZTo6U1FMaXRlU3RhdGVtZW50IG1fc3ViUmVzb3VyY2VFeGlzdHNTdGF0ZW1lbnQ7Ci0gICAgbXV0
YWJsZSBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV91bmlxdWVSZWRpcmVjdEV4aXN0c1N0YXRl
bWVudDsKLSAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX29ic2VydmVkRG9t
YWluc0V4aXN0c1N0YXRlbWVudDsKLSAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVu
dCBtX3JlbW92ZUFsbERhdGFTdGF0ZW1lbnQ7CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX29ic2VydmVkRG9tYWluQ291bnRTdGF0ZW1lbnQ7
CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9pbnNlcnRP
YnNlcnZlZERvbWFpblN0YXRlbWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FM
aXRlU3RhdGVtZW50PiBtX2luc2VydFRvcExldmVsRG9tYWluU3RhdGVtZW50OworICAgIG11dGFi
bGUgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9kb21haW5JREZy
b21TdHJpbmdTdGF0ZW1lbnQ7CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
U1FMaXRlU3RhdGVtZW50PiBtX3RvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbUV4aXN0c1N0YXRl
bWVudDsKKyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1l
bnQ+IG1fdG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0c0V4aXN0c1N0YXRlbWVudDsKKyAg
ICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fc3Vi
ZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluRXhpc3RzU3RhdGVtZW50OworICAgIG11dGFibGUgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9zdWJyZXNvdXJjZVVuZGVy
VG9wRnJhbWVEb21haW5FeGlzdHNTdGF0ZW1lbnQ7CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX3N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3Rz
VG9FeGlzdHNTdGF0ZW1lbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0
YXRlbWVudD4gbV9tb3N0UmVjZW50VXNlckludGVyYWN0aW9uU3RhdGVtZW50OworICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fdXBkYXRlTGFzdFNlZW5TdGF0
ZW1lbnQ7CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVt
ZW50PiBtX3VwZGF0ZURhdGFSZWNvcmRzUmVtb3ZlZFN0YXRlbWVudDsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX3VwZGF0ZVByZXZhbGVudFJlc291cmNl
U3RhdGVtZW50OworICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0
YXRlbWVudD4gbV9pc1ByZXZhbGVudFJlc291cmNlU3RhdGVtZW50OworICAgIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fdXBkYXRlVmVyeVByZXZhbGVudFJlc291
cmNlU3RhdGVtZW50OworICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0
ZVN0YXRlbWVudD4gbV9pc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudDsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2NsZWFyUHJldmFsZW50UmVz
b3VyY2VTdGF0ZW1lbnQ7CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FM
aXRlU3RhdGVtZW50PiBtX2hhZFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudDsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX3VwZGF0ZUdyYW5kZmF0aGVyZWRT
dGF0ZW1lbnQ7CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3Rh
dGVtZW50PiBtX3VwZGF0ZUlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWxTdGF0
ZW1lbnQ7CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVt
ZW50PiBtX2lzR3JhbmRmYXRoZXJlZFN0YXRlbWVudDsKKyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fZmluZEV4cGlyZWRVc2VySW50ZXJhY3Rp
b25TdGF0ZW1lbnQ7CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRl
U3RhdGVtZW50PiBtX2NvdW50UHJldmFsZW50UmVzb3VyY2VzU3RhdGVtZW50OworICAgIG11dGFi
bGUgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9jb3VudFByZXZh
bGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQ7CisgICAgbXV0YWJsZSBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2NvdW50UHJldmFsZW50
UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudDsKKyAgICBtdXRhYmxlIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fZ2V0UmVzb3VyY2VEYXRh
QnlEb21haW5OYW1lU3RhdGVtZW50OworICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9nZXRBbGxEb21haW5zU3RhdGVtZW50OworICAgIG11dGFi
bGUgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9kb21haW5TdHJp
bmdGcm9tRG9tYWluSURTdGF0ZW1lbnQ7CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2dldEFsbFN1YlN0YXRpc3RpY3NTdGF0ZW1lbnQ7Cisg
ICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX3N0
b3JhZ2VBY2Nlc3NFeGlzdHNTdGF0ZW1lbnQ7CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2dldE1vc3RSZWNlbnRseVVwZGF0ZWRUaW1lc3Rh
bXBTdGF0ZW1lbnQ7CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRl
U3RhdGVtZW50PiBtX2xpbmtEZWNvcmF0aW9uRXhpc3RzU3RhdGVtZW50OworICAgIG11dGFibGUg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9zY3JpcHRMb2FkRXhp
c3RzU3RhdGVtZW50OworICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0
ZVN0YXRlbWVudD4gbV9zdWJGcmFtZUV4aXN0c1N0YXRlbWVudDsKKyAgICBtdXRhYmxlIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fc3ViUmVzb3VyY2VFeGlzdHNT
dGF0ZW1lbnQ7CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3Rh
dGVtZW50PiBtX3VuaXF1ZVJlZGlyZWN0RXhpc3RzU3RhdGVtZW50OworICAgIG11dGFibGUgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9vYnNlcnZlZERvbWFpbnNF
eGlzdHNTdGF0ZW1lbnQ7CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FM
aXRlU3RhdGVtZW50PiBtX3JlbW92ZUFsbERhdGFTdGF0ZW1lbnQ7CiAgICAgUEFMOjpTZXNzaW9u
SUQgbV9zZXNzaW9uSUQ7CiAgICAgYm9vbCBtX2lzTmV3UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlRmlsZSB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCA1Mzg3Yjc2OTI0YTdiNDA3YTM2MTIxYWI4OGM5ZGVl
YzgyMjFmODFhLi4xYTBmYmQyZGQ2YzhjOGVlMzhmNTYwMzIyNWUxNmRmYWQyMTAxN2NhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAtMjUy
LDYgKzI1Miw5IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpmbHVzaEFu
ZERlc3Ryb3lQZXJzaXN0ZW50U3RvcmUoQ29tcGxldGlvbkhhCiAgICAgLy8gaXMgZGVzdHJveWVk
IGJlY2F1c2UgaXQgaGFzIGEgQysrIHJlZmVyZW5jZSB0byB1cy4KICAgICBtX3N0YXRpc3RpY3NR
dWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7
CiAgICAgICAgIG1fcGVyc2lzdGVudFN0b3JhZ2UgPSBudWxscHRyOworICAgICAgICBpZiAobV9z
dGF0aXN0aWNzU3RvcmUgJiYgIWlzRXBoZW1lcmFsKCkgJiYgaXM8UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU+KCptX3N0YXRpc3RpY3NTdG9yZSkpCisgICAgICAgICAgICBkb3du
Y2FzdDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZT4oKm1fc3RhdGlzdGljc1N0
b3JlKS5jbG9zZSgpOworCiAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlID0gbnVsbHB0cjsKICAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKICAgICB9KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399685</attachid>
            <date>2020-05-18 17:11:04 -0700</date>
            <delta_ts>2020-05-19 11:13:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211929-20200518171103.patch</filename>
            <type>text/plain</type>
            <size>81773</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNzY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDcxNmExZDI0Nzg1ZTE5NWRm
MmNiMGMxYjM2MTFjMTNhNjhjYzU0YzYuLmRlMWMzYTk0ODhlOGJmMjA4MmI2Mjg0YjVmMmQxOGFh
MDA1NmQwYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMjAtMDUtMTggIGthdGUgY2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgSVRQIGRhdGFiYXNl
IHNob3VsZCBmaW5hbGl6ZSBhbGwgcHJlcGFyZWQgc3RhdGVtZW50cyBiZWZvcmUgY2xvc2luZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExOTI5Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MzI0Njk0NT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGJlaGF2aW9yIGNvbmZpcm1l
ZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICBDb252ZXJ0IGFsbCBTUUxpdGUgc3RhdGVt
ZW50IG9iamVjdHMgdG8gYmUgdW5pcXVlIHBvaW50ZXJzIHRvIGJldHRlcgorICAgICAgICBtYW5h
Z2UgdGhlIGxpZmV0aW1lIG9mIGVhY2ggc3RhdGVtZW50IG9iamVjdC4gT25seSBpbml0aWFsaXpl
IGFuZAorICAgICAgICBwcmVwYXJlIGFuIG9iamVjdCB3aGVuIGl0IGlzIG5lZWRlZCBpbnN0ZWFk
IG9mIHByZXBhcmluZyBhbGwgb2JqZWN0cworICAgICAgICBhdCBvbmNlLiBTZXQgZWFjaCBzdGF0
ZW1lbnQgdG8gbnVsbCBiZWZvcmUgY2xvc2luZyB0aGUgZGF0YWJhc2UKKyAgICAgICAgYmVjYXVz
ZSB+U1FMaXRlU3RhdGVtZW50KCkgd2lsbCBmaW5hbGl6ZSB0aGUgc3RhdGVtZW50LgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbG9zZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpp
bml0aWFsaXplU3RhdGVtZW50IGNvbnN0KToKKyAgICAgICAgRnVuY3Rpb24gdG8gaW5pdGlhbGl6
ZSBhbmQgcHJlcGFyZSBhIHN0YXRldGVtZW50LgorCisgICAgICAgIChXZWJLaXQ6OnJlc2V0U3Rh
dGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OmNoZWNrRm9yTWlzc2luZ1RhYmxlc0luU2NoZW1hKToKKyAgICAgICAgKFdlYktpdDo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmlzTWlncmF0aW9uTmVjZXNzYXJ5
KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
Om9wZW5BbmRVcGRhdGVTY2hlbWFJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppc0VtcHR5IGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmRlc3Ryb3lTdGF0
ZW1lbnRzKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6Omluc2VydE9ic2VydmVkRG9tYWluKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlbGF0aW9uc2hpcEV4aXN0cyBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkb21h
aW5JRCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjptZXJnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjptZXJnZVN0YXRpc3RpYyk6CisgICAgICAgIChXZWJLaXQ6OkNvbXBs
ZXRpb25IYW5kbGVyPHZvaWQpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6cHJlcGFyZVN0YXRlbWVudHMpOiBEZWxldGVkLgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmUuaDoKKyAgICAgICAgVXBkYXRlZCBhbGwgc3RhdGVtZW50IHZhcmlhYmxlcyB0byBlbmQg
d2l0aCAiU3RhdGVtZW50IiB0byBmb2xsb3cgdGhlCisgICAgICAgIGVzdGFibGlzaGVkIHBhdHRl
cm4uCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6Zmx1c2hBbmREZXN0cm95UGVyc2lzdGVudFN0b3JlKToKKwogMjAyMC0w
NS0xNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFtpT1MgU2ltdWxhdG9yXSBUZXN0V2ViS2l0QVBJLl9XS0Rvd25sb2FkLlJlc3VtZSBpcyBh
IGZsYWt5IGNyYXNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlLmNwcAppbmRleCAzMWU5MTk5ODY1ODYwMDIzMWQ2NGNiYzA0OTMwMWNjNWMz
YWY1YjQ4Li45ZjY1YTc1ZDQzYjQ5ZDkzZjEyOWQzZDEyNDQzNmFmNjA1OGFjYTJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAK
QEAgLTI3NSw0NCArMjc1LDYgQEAgc3RhdGljIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+
JiBjcmVhdGVUYWJsZVF1ZXJpZXMoKQogUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlKFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZSYgc3RvcmUsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlLCBTaG91bGRJbmNsdWRl
TG9jYWxob3N0IHNob3VsZEluY2x1ZGVMb2NhbGhvc3QsIGNvbnN0IFN0cmluZyYgc3RvcmFnZURp
cmVjdG9yeVBhdGgsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICA6IFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZShzdG9yZSwgd29ya1F1ZXVlLCBzaG91bGRJbmNsdWRlTG9jYWxob3N0
KQogICAgICwgbV9zdG9yYWdlRGlyZWN0b3J5UGF0aChzdG9yYWdlRGlyZWN0b3J5UGF0aCArICIv
b2JzZXJ2YXRpb25zLmRiIikKLSAgICAsIG1fb2JzZXJ2ZWREb21haW5Db3VudChtX2RhdGFiYXNl
LCBvYnNlcnZlZERvbWFpbkNvdW50UXVlcnkpCi0gICAgLCBtX2luc2VydE9ic2VydmVkRG9tYWlu
U3RhdGVtZW50KG1fZGF0YWJhc2UsIGluc2VydE9ic2VydmVkRG9tYWluUXVlcnkpCi0gICAgLCBt
X2luc2VydFRvcExldmVsRG9tYWluU3RhdGVtZW50KG1fZGF0YWJhc2UsIGluc2VydFRvcExldmVs
RG9tYWluUXVlcnkpCi0gICAgLCBtX2RvbWFpbklERnJvbVN0cmluZ1N0YXRlbWVudChtX2RhdGFi
YXNlLCBkb21haW5JREZyb21TdHJpbmdRdWVyeSkKLSAgICAsIG1fdG9wRnJhbWVMaW5rRGVjb3Jh
dGlvbnNGcm9tRXhpc3RzKG1fZGF0YWJhc2UsIHRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbUV4
aXN0c1F1ZXJ5KQotICAgICwgbV90b3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRzRXhpc3Rz
KG1fZGF0YWJhc2UsIHRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHNFeGlzdHNRdWVyeSkK
LSAgICAsIG1fc3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluRXhpc3RzKG1fZGF0YWJhc2UsIHN1
YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbkV4aXN0c1F1ZXJ5KQotICAgICwgbV9zdWJyZXNvdXJj
ZVVuZGVyVG9wRnJhbWVEb21haW5FeGlzdHMobV9kYXRhYmFzZSwgc3VicmVzb3VyY2VVbmRlclRv
cEZyYW1lRG9tYWluRXhpc3RzUXVlcnkpCi0gICAgLCBtX3N1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RzVG9FeGlzdHMobV9kYXRhYmFzZSwgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUb0V4aXN0
c1F1ZXJ5KQotICAgICwgbV9tb3N0UmVjZW50VXNlckludGVyYWN0aW9uU3RhdGVtZW50KG1fZGF0
YWJhc2UsIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25RdWVyeSkKLSAgICAsIG1fdXBkYXRlTGFz
dFNlZW5TdGF0ZW1lbnQobV9kYXRhYmFzZSwgdXBkYXRlTGFzdFNlZW5RdWVyeSkKLSAgICAsIG1f
dXBkYXRlRGF0YVJlY29yZHNSZW1vdmVkU3RhdGVtZW50KG1fZGF0YWJhc2UsIHVwZGF0ZURhdGFS
ZWNvcmRzUmVtb3ZlZFF1ZXJ5KQotICAgICwgbV91cGRhdGVQcmV2YWxlbnRSZXNvdXJjZVN0YXRl
bWVudChtX2RhdGFiYXNlLCB1cGRhdGVQcmV2YWxlbnRSZXNvdXJjZVF1ZXJ5KQotICAgICwgbV9p
c1ByZXZhbGVudFJlc291cmNlU3RhdGVtZW50KG1fZGF0YWJhc2UsIGlzUHJldmFsZW50UmVzb3Vy
Y2VRdWVyeSkKLSAgICAsIG1fdXBkYXRlVmVyeVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50KG1f
ZGF0YWJhc2UsIHVwZGF0ZVZlcnlQcmV2YWxlbnRSZXNvdXJjZVF1ZXJ5KQotICAgICwgbV9pc1Zl
cnlQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudChtX2RhdGFiYXNlLCBpc1ZlcnlQcmV2YWxlbnRS
ZXNvdXJjZVF1ZXJ5KQotICAgICwgbV9jbGVhclByZXZhbGVudFJlc291cmNlU3RhdGVtZW50KG1f
ZGF0YWJhc2UsIGNsZWFyUHJldmFsZW50UmVzb3VyY2VRdWVyeSkKLSAgICAsIG1faGFkVXNlcklu
dGVyYWN0aW9uU3RhdGVtZW50KG1fZGF0YWJhc2UsIGhhZFVzZXJJbnRlcmFjdGlvblF1ZXJ5KQot
ICAgICwgbV91cGRhdGVHcmFuZGZhdGhlcmVkU3RhdGVtZW50KG1fZGF0YWJhc2UsIHVwZGF0ZUdy
YW5kZmF0aGVyZWRRdWVyeSkKLSAgICAsIG1fdXBkYXRlSXNTY2hlZHVsZWRGb3JBbGxCdXRDb29r
aWVEYXRhUmVtb3ZhbFN0YXRlbWVudChtX2RhdGFiYXNlLCB1cGRhdGVJc1NjaGVkdWxlZEZvckFs
bEJ1dENvb2tpZURhdGFSZW1vdmFsUXVlcnkpCi0gICAgLCBtX2lzR3JhbmRmYXRoZXJlZFN0YXRl
bWVudChtX2RhdGFiYXNlLCBpc0dyYW5kZmF0aGVyZWRRdWVyeSkKLSAgICAsIG1fZmluZEV4cGly
ZWRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQobV9kYXRhYmFzZSwgZmluZEV4cGlyZWRVc2VySW50
ZXJhY3Rpb25RdWVyeSkKLSAgICAsIG1fY291bnRQcmV2YWxlbnRSZXNvdXJjZXNTdGF0ZW1lbnQo
bV9kYXRhYmFzZSwgY291bnRQcmV2YWxlbnRSZXNvdXJjZXNRdWVyeSkKLSAgICAsIG1fY291bnRQ
cmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uU3RhdGVtZW50KG1fZGF0YWJhc2Us
IGNvdW50UHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvblF1ZXJ5KQotICAgICwg
bV9jb3VudFByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQo
bV9kYXRhYmFzZSwgY291bnRQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9u
UXVlcnkpCi0gICAgLCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudChtX2Rh
dGFiYXNlLCBnZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVRdWVyeSkKLSAgICAsIG1fZ2V0QWxs
RG9tYWluc1N0YXRlbWVudChtX2RhdGFiYXNlLCBnZXRBbGxEb21haW5zUXVlcnkpCi0gICAgLCBt
X2RvbWFpblN0cmluZ0Zyb21Eb21haW5JRFN0YXRlbWVudChtX2RhdGFiYXNlLCBkb21haW5TdHJp
bmdGcm9tRG9tYWluSURRdWVyeSkKLSAgICAsIG1fZ2V0QWxsU3ViU3RhdGlzdGljc1N0YXRlbWVu
dChtX2RhdGFiYXNlLCBnZXRBbGxTdWJTdGF0aXN0aWNzVW5kZXJEb21haW5RdWVyeSkKLSAgICAs
IG1fc3RvcmFnZUFjY2Vzc0V4aXN0c1N0YXRlbWVudChtX2RhdGFiYXNlLCBzdG9yYWdlQWNjZXNz
RXhpc3RzUXVlcnkpCi0gICAgLCBtX2dldE1vc3RSZWNlbnRseVVwZGF0ZWRUaW1lc3RhbXBTdGF0
ZW1lbnQobV9kYXRhYmFzZSwgZ2V0TW9zdFJlY2VudGx5VXBkYXRlZFRpbWVzdGFtcFF1ZXJ5KQot
ICAgICwgbV9saW5rRGVjb3JhdGlvbkV4aXN0c1N0YXRlbWVudChtX2RhdGFiYXNlLCBsaW5rRGVj
b3JhdGlvbkV4aXN0c1F1ZXJ5KQotICAgICwgbV9zY3JpcHRMb2FkRXhpc3RzU3RhdGVtZW50KG1f
ZGF0YWJhc2UsIHNjcmlwdExvYWRFeGlzdHNRdWVyeSkKLSAgICAsIG1fc3ViRnJhbWVFeGlzdHNT
dGF0ZW1lbnQobV9kYXRhYmFzZSwgc3ViRnJhbWVFeGlzdHNRdWVyeSkKLSAgICAsIG1fc3ViUmVz
b3VyY2VFeGlzdHNTdGF0ZW1lbnQobV9kYXRhYmFzZSwgc3ViUmVzb3VyY2VFeGlzdHNRdWVyeSkK
LSAgICAsIG1fdW5pcXVlUmVkaXJlY3RFeGlzdHNTdGF0ZW1lbnQobV9kYXRhYmFzZSwgdW5pcXVl
UmVkaXJlY3RFeGlzdHNRdWVyeSkKLSAgICAsIG1fb2JzZXJ2ZWREb21haW5zRXhpc3RzU3RhdGVt
ZW50KG1fZGF0YWJhc2UsIG9ic2VydmVkRG9tYWluc0V4aXN0c1F1ZXJ5KQotICAgICwgbV9yZW1v
dmVBbGxEYXRhU3RhdGVtZW50KG1fZGF0YWJhc2UsIHJlbW92ZUFsbERhdGFRdWVyeSkKICAgICAs
IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKQEAgLTMyNiwxOCArMjg4LDE5IEBAIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZShXZWJSZXNvCiAgICAgaWYg
KCFtX2RhdGFiYXNlLnR1cm5PbkluY3JlbWVudGFsQXV0b1ZhY3V1bSgpKQogICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6dHVybk9uSW5jcmVtZW50YWxBdXRvVmFjdXVtIGZhaWxlZCwgZXJyb3IgbWVzc2Fn
ZTogJSIgUFVCTElDX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkp
OwogCi0gICAgaWYgKCFwcmVwYXJlU3RhdGVtZW50cygpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpwcmVwYXJlU3RhdGVtZW50cyBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0df
U1RSSU5HICIsIGRhdGFiYXNlIHBhdGg6ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCB0aGlzLCBtX2Rh
dGFiYXNlLmxhc3RFcnJvck1zZygpLCBtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoLnV0ZjgoKS5kYXRh
KCkpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQogICAgIHdvcmtRdWV1ZS5kaXNwYXRjaEFmdGVyKDVfcywgW3dlYWtUaGlzID0gbWFrZVdl
YWtQdHIoKnRoaXMpXSB7CiAgICAgICAgIGlmICh3ZWFrVGhpcykKICAgICAgICAgICAgIHdlYWtU
aGlzLT5jYWxjdWxhdGVBbmRTdWJtaXRUZWxlbWV0cnkoKTsKICAgICB9KTsKIH0KIAordm9pZCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xvc2UoKQoreworICAgIGRlc3Ry
b3lTdGF0ZW1lbnRzKCk7CisgICAgaWYgKG1fZGF0YWJhc2UuaXNPcGVuKCkpCisgICAgICAgIG1f
ZGF0YWJhc2UuY2xvc2UoKTsKK30KKwogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6b3BlbklUUERhdGFiYXNlKCkKIHsKICAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVF
eGlzdHMobV9zdG9yYWdlRGlyZWN0b3J5UGF0aCkpCkBAIC0zNjYsOSArMzI5LDkgQEAgdm9pZCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6b3BlbklUUERhdGFiYXNlKCkKICAg
ICB9CiB9CiAKLXN0YXRpYyB2b2lkIHJlc2V0U3RhdGVtZW50KFNRTGl0ZVN0YXRlbWVudCYgc3Rh
dGVtZW50KQorc3RhdGljIHZvaWQgcmVzZXRTdGF0ZW1lbnQoU1FMaXRlU3RhdGVtZW50KiBzdGF0
ZW1lbnQpCiB7Ci0gICAgaW50IHJlc2V0UmVzdWx0ID0gc3RhdGVtZW50LnJlc2V0KCk7CisgICAg
aW50IHJlc2V0UmVzdWx0ID0gc3RhdGVtZW50LT5yZXNldCgpOwogICAgIEFTU0VSVF9VTlVTRUQo
cmVzZXRSZXN1bHQsIHJlc2V0UmVzdWx0ID09IFNRTElURV9PSyk7CiB9CiAKQEAgLTM5MCw3ICsz
NTMsOCBAQCBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OmNoZWNrRm9yTWlzc2luZ1RhYgogICAgICAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmNoZWNrRm9yTWlzc2luZ1RhYmxlc0luU2NoZW1hIHNjaGVtYSBpcyBtaXNzaW5nIHRhYmxlOiAl
cyIsIHRoaXMsIHRhYmxlLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgICAgIG1pc3NpbmdUYWJs
ZXMuYXBwZW5kKFN0cmluZyh0YWJsZSkpOwogICAgICAgICB9Ci0gICAgICAgIHJlc2V0U3RhdGVt
ZW50KHN0YXRlbWVudCk7CisgICAgICAgIGludCByZXNldFJlc3VsdCA9IHN0YXRlbWVudC5yZXNl
dCgpOworICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc2V0UmVzdWx0LCByZXNldFJlc3VsdCA9PSBT
UUxJVEVfT0spOwogICAgIH0KICAgICBpZiAobWlzc2luZ1RhYmxlcy5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC00MjEsNyArMzg1LDcgQEAgYm9vbCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aXNNaWdyYXRpb25OZWNlc3NhcnkoKQogICAg
IC8vIElmIHRoZXJlIGlzIG5vIHRhYmxlIGF0IGFsbCwgb3IgdGhlcmUgaXMgYW4gZXJyb3IgZXhl
Y3V0aW5nIHRoZSBmZXRjaCwgZGVsZXRlIGFuZCByZW9wZW4gdGhlIGZpbGUuCiAgICAgaWYgKHN0
YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX1JPVykgewogICAgICAgICBMT0dfRVJST1IoIkVycm9y
IGV4ZWN1dGluZyBzdGF0ZW1lbnQgdG8gZmV0Y2ggc2NoZW1hLiIpOwotICAgICAgICBtX2RhdGFi
YXNlLmNsb3NlKCk7CisgICAgICAgIGNsb3NlKCk7CiAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0
ZUZpbGUobV9zdG9yYWdlRGlyZWN0b3J5UGF0aCk7CiAgICAgICAgIG9wZW5JVFBEYXRhYmFzZSgp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01MTksNyArNDgzLDcgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6b3BlbkFuZFVwZGF0ZVNjaGVtYUlmTmVjZXNz
YXJ5KCkKICAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gT2JzZXJ2ZWREb21haW5zIHRhYmxlIGF0
IGFsbCwgb3IgdGhlcmUgaXMgYW4gZXJyb3IgZXhlY3V0aW5nIHRoZSBmZXRjaCwgZGVsZXRlIHRo
ZSBmaWxlLgogICAgICAgICBpZiAoc3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7CiAg
ICAgICAgICAgICBMT0dfRVJST1IoIkVycm9yIGV4ZWN1dGluZyBzdGF0ZW1lbnQgdG8gZmV0Y2gg
c2NoZW1hIGZvciB0aGUgT2JzZXJ2ZWQgRG9tYWlucyB0YWJsZS4iKTsKLSAgICAgICAgICAgIG1f
ZGF0YWJhc2UuY2xvc2UoKTsKKyAgICAgICAgICAgIGNsb3NlKCk7CiAgICAgICAgICAgICBGaWxl
U3lzdGVtOjpkZWxldGVGaWxlKG1fc3RvcmFnZURpcmVjdG9yeVBhdGgpOwogICAgICAgICAgICAg
b3BlbklUUERhdGFiYXNlKCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC01MzMsMjIgKzQ5Nywz
NSBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpvcGVuQW5kVXBk
YXRlU2NoZW1hSWZOZWNlc3NhcnkoKQogICAgIC8vIElmIHRoZSBPYnNlcnZlZERvbWFpbnMgc2No
ZW1hIGluIHRoZSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIGRpcmVjdG9yeSBpcyBub3QgdGhlIGN1
cnJlbnQgc2NoZW1hLCBkZWxldGUgdGhlIGRhdGFiYXNlIGZpbGUuCiAgICAgLy8gRklYTUU6IE1p
Z3JhdGUgb2xkIE9ic2VydmVkRG9tYWlucyBkYXRhIHRvIG5ldyB0YWJsZSBzY2hlbWEuCiAgICAg
aWYgKGN1cnJlbnRTY2hlbWEgIT0gT2JzZXJ2ZWREb21haW5zVGFibGVTY2hlbWFWMSgpICYmIGN1
cnJlbnRTY2hlbWEgIT0gT2JzZXJ2ZWREb21haW5zVGFibGVTY2hlbWFWMUFsdGVybmF0ZSgpKSB7
Ci0gICAgICAgIG1fZGF0YWJhc2UuY2xvc2UoKTsKKyAgICAgICAgY2xvc2UoKTsKICAgICAgICAg
RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoKTsKICAgICAgICAg
b3BlbklUUERhdGFiYXNlKCk7CiAgICAgfSBlbHNlCiAgICAgICAgIG1pZ3JhdGVEYXRhVG9OZXdU
YWJsZXNJZk5lY2Vzc2FyeSgpOwogfQogCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjppbml0aWFsaXplU3RhdGVtZW50KHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpT
UUxpdGVTdGF0ZW1lbnQ+JiBzdGF0ZW1lbnQsIGNvbnN0IFN0cmluZyBxdWVyeSwgY29uc3QgU3Ry
aW5nJiBsb2dTdHJpbmcpIGNvbnN0Cit7CisgICAgaWYgKCFzdGF0ZW1lbnQpIHsKKyAgICAgICAg
c3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+KG1fZGF0YWJh
c2UsIHF1ZXJ5KTsKKyAgICAgICAgaWYgKHN0YXRlbWVudC0+cHJlcGFyZSgpICE9IFNRTElURV9P
SykgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OiVzIGZhaWxlZCB0byBwcmVwYXJlIHN0YXRl
bWVudCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBsb2dTdHJpbmcuYXNjaWko
KS5kYXRhKCksIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIGJvb2wgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmlzRW1wdHkoKSBjb25zdAogewogICAgIEFTU0VSVCgh
UnVuTG9vcDo6aXNNYWluKCkpOwogICAgIAorICAgIGluaXRpYWxpemVTdGF0ZW1lbnQobV9vYnNl
cnZlZERvbWFpbkNvdW50U3RhdGVtZW50LCBvYnNlcnZlZERvbWFpbkNvdW50UXVlcnksICJpc0Vt
cHR5Il9zKTsKKyAgICAKICAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIGlmIChtX29ic2Vy
dmVkRG9tYWluQ291bnQuc3RlcCgpID09IFNRTElURV9ST1cpCi0gICAgICAgIHJlc3VsdCA9ICFt
X29ic2VydmVkRG9tYWluQ291bnQuZ2V0Q29sdW1uSW50KDApOworICAgIGlmIChtX29ic2VydmVk
RG9tYWluQ291bnRTdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKQorICAgICAgICByZXN1
bHQgPSAhbV9vYnNlcnZlZERvbWFpbkNvdW50U3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMCk7CiAg
ICAgCi0gICAgaW50IHJlc2V0UmVzdWx0ID0gbV9vYnNlcnZlZERvbWFpbkNvdW50LnJlc2V0KCk7
CisgICAgaW50IHJlc2V0UmVzdWx0ID0gbV9vYnNlcnZlZERvbWFpbkNvdW50U3RhdGVtZW50LT5y
ZXNldCgpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzZXRSZXN1bHQsIHJlc2V0UmVzdWx0ID09IFNR
TElURV9PSyk7CiAgICAgCiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTY0Miw1NSArNjE5LDQ4IEBA
IGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNyZWF0ZVNjaGVtYSgp
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OnByZXBhcmVTdGF0ZW1lbnRzKCkKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKLSAgICAgICAgCi0gICAgaWYgKG1fb2JzZXJ2ZWREb21haW5Db3VudC5wcmVwYXJl
KCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1l
bnQucHJlcGFyZSgpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX2luc2VydFRvcExldmVsRG9t
YWluU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9kb21haW5J
REZyb21TdHJpbmdTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwotICAgICAgICB8fCBt
X3N1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbkV4aXN0cy5wcmVwYXJlKCkgIT0gU1FMSVRFX09L
Ci0gICAgICAgIHx8IG1fc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluRXhpc3RzLnByZXBh
cmUoKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0
c1RvRXhpc3RzLnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV91cGRhdGVMYXN0
U2VlblN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fdXBkYXRl
RGF0YVJlY29yZHNSZW1vdmVkU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKLSAgICAg
ICAgfHwgbV9tb3N0UmVjZW50VXNlckludGVyYWN0aW9uU3RhdGVtZW50LnByZXBhcmUoKSAhPSBT
UUxJVEVfT0sKLSAgICAgICAgfHwgbV91cGRhdGVQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudC5w
cmVwYXJlKCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1faXNQcmV2YWxlbnRSZXNvdXJjZVN0
YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fdXBkYXRlVmVyeVBy
ZXZhbGVudFJlc291cmNlU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKLSAgICAgICAg
fHwgbV9pc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRF
X09LCi0gICAgICAgIHx8IG1fY2xlYXJQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudC5wcmVwYXJl
KCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1faGFkVXNlckludGVyYWN0aW9uU3RhdGVtZW50
LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV91cGRhdGVHcmFuZGZhdGhlcmVk
U3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV91cGRhdGVJc1Nj
aGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsU3RhdGVtZW50LnByZXBhcmUoKSAhPSBT
UUxJVEVfT0sKLSAgICAgICAgfHwgbV9pc0dyYW5kZmF0aGVyZWRTdGF0ZW1lbnQucHJlcGFyZSgp
ICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX2ZpbmRFeHBpcmVkVXNlckludGVyYWN0aW9uU3Rh
dGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV90b3BGcmFtZUxpbmtE
ZWNvcmF0aW9uc0Zyb21FeGlzdHMucHJlcGFyZSgpICE9IFNRTElURV9PSwotICAgICAgICB8fCBt
X3RvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHNFeGlzdHMucHJlcGFyZSgpICE9IFNRTElU
RV9PSwotICAgICAgICB8fCBtX2NvdW50UHJldmFsZW50UmVzb3VyY2VzU3RhdGVtZW50LnByZXBh
cmUoKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9jb3VudFByZXZhbGVudFJlc291cmNlc1dp
dGhVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwotICAgICAg
ICB8fCBtX2NvdW50UHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvblN0YXRl
bWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fZ2V0UmVzb3VyY2VEYXRh
QnlEb21haW5OYW1lU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwg
bV9nZXRBbGxEb21haW5zU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKLSAgICAgICAg
fHwgbV9kb21haW5TdHJpbmdGcm9tRG9tYWluSURTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElU
RV9PSwotICAgICAgICB8fCBtX2dldEFsbFN1YlN0YXRpc3RpY3NTdGF0ZW1lbnQucHJlcGFyZSgp
ICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX3N0b3JhZ2VBY2Nlc3NFeGlzdHNTdGF0ZW1lbnQu
cHJlcGFyZSgpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX2dldE1vc3RSZWNlbnRseVVwZGF0
ZWRUaW1lc3RhbXBTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwotICAgICAgICB8fCBt
X2xpbmtEZWNvcmF0aW9uRXhpc3RzU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKLSAg
ICAgICAgfHwgbV9zY3JpcHRMb2FkRXhpc3RzU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVf
T0sKLSAgICAgICAgfHwgbV9zdWJGcmFtZUV4aXN0c1N0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FM
SVRFX09LCi0gICAgICAgIHx8IG1fc3ViUmVzb3VyY2VFeGlzdHNTdGF0ZW1lbnQucHJlcGFyZSgp
ICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX3VuaXF1ZVJlZGlyZWN0RXhpc3RzU3RhdGVtZW50
LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9vYnNlcnZlZERvbWFpbnNFeGlz
dHNTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX3JlbW92ZUFs
bERhdGFTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwotICAgICAgICApIHsKLSAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OnByZXBhcmVTdGF0ZW1lbnRzIGZhaWxlZCB0byBwcmVwYXJlLCBlcnJv
ciBtZXNzYWdlOiAlIiBQVUJMSUNfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJy
b3JNc2coKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Cit2b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpkZXN0cm95U3RhdGVtZW50cygpCit7CisgICAgQVNTRVJUKCFS
dW5Mb29wOjppc01haW4oKSk7CisKKyAgICBtX29ic2VydmVkRG9tYWluQ291bnRTdGF0ZW1lbnQg
PSBudWxscHRyOworICAgIG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQgPSBudWxscHRy
OworICAgIG1faW5zZXJ0VG9wTGV2ZWxEb21haW5TdGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1f
ZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX3N1YmZyYW1lVW5k
ZXJUb3BGcmFtZURvbWFpbkV4aXN0c1N0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV9zdWJyZXNv
dXJjZVVuZGVyVG9wRnJhbWVEb21haW5FeGlzdHNTdGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1f
c3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUb0V4aXN0c1N0YXRlbWVudCA9IG51bGxwdHI7Cisg
ICAgbV91cGRhdGVMYXN0U2VlblN0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV91cGRhdGVEYXRh
UmVjb3Jkc1JlbW92ZWRTdGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1fbW9zdFJlY2VudFVzZXJJ
bnRlcmFjdGlvblN0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV91cGRhdGVQcmV2YWxlbnRSZXNv
dXJjZVN0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV9pc1ByZXZhbGVudFJlc291cmNlU3RhdGVt
ZW50ID0gbnVsbHB0cjsKKyAgICBtX3VwZGF0ZVZlcnlQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVu
dCA9IG51bGxwdHI7CisgICAgbV9pc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudCA9IG51
bGxwdHI7CisgICAgbV9jbGVhclByZXZhbGVudFJlc291cmNlU3RhdGVtZW50ID0gbnVsbHB0cjsK
KyAgICBtX2hhZFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV91cGRh
dGVHcmFuZGZhdGhlcmVkU3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX3VwZGF0ZUlzU2NoZWR1
bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWxTdGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1f
aXNHcmFuZGZhdGhlcmVkU3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX2ZpbmRFeHBpcmVkVXNl
ckludGVyYWN0aW9uU3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX3RvcEZyYW1lTGlua0RlY29y
YXRpb25zRnJvbUV4aXN0c1N0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV90b3BGcmFtZUxvYWRl
ZFRoaXJkUGFydHlTY3JpcHRzRXhpc3RzU3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX2NvdW50
UHJldmFsZW50UmVzb3VyY2VzU3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX2NvdW50UHJldmFs
ZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudCA9IG51bGxwdHI7CisgICAg
bV9jb3VudFByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQg
PSBudWxscHRyOworICAgIG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50ID0g
bnVsbHB0cjsKKyAgICBtX2dldEFsbERvbWFpbnNTdGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1f
ZG9tYWluU3RyaW5nRnJvbURvbWFpbklEU3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX2dldEFs
bFN1YlN0YXRpc3RpY3NTdGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1fc3RvcmFnZUFjY2Vzc0V4
aXN0c1N0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV9nZXRNb3N0UmVjZW50bHlVcGRhdGVkVGlt
ZXN0YW1wU3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX2xpbmtEZWNvcmF0aW9uRXhpc3RzU3Rh
dGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX3NjcmlwdExvYWRFeGlzdHNTdGF0ZW1lbnQgPSBudWxs
cHRyOworICAgIG1fc3ViRnJhbWVFeGlzdHNTdGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1fc3Vi
UmVzb3VyY2VFeGlzdHNTdGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1fdW5pcXVlUmVkaXJlY3RF
eGlzdHNTdGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1fb2JzZXJ2ZWREb21haW5zRXhpc3RzU3Rh
dGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX3JlbW92ZUFsbERhdGFTdGF0ZW1lbnQgPSBudWxscHRy
OwogfQogCiBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnRP
YnNlcnZlZERvbWFpbihjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBsb2FkU3RhdGlzdGlj
cykKQEAgLTcwMiw1MiArNjcyLDUzIEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6Omluc2VydE9ic2VydmVkRG9tYWluKGNvbnN0IFJlc291cmNlTG9hCiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotCi0g
ICAgaWYgKG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQuYmluZFRleHQoUmVnaXN0cmFi
bGVEb21haW5JbmRleCwgbG9hZFN0YXRpc3RpY3MucmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCkp
ICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50
LmJpbmREb3VibGUoTGFzdFNlZW5JbmRleCwgbG9hZFN0YXRpc3RpY3MubGFzdFNlZW4uc2Vjb25k
c1NpbmNlRXBvY2goKS52YWx1ZSgpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9pbnNlcnRP
YnNlcnZlZERvbWFpblN0YXRlbWVudC5iaW5kSW50KEhhZFVzZXJJbnRlcmFjdGlvbkluZGV4LCBs
b2FkU3RhdGlzdGljcy5oYWRVc2VySW50ZXJhY3Rpb24pICE9IFNRTElURV9PSwotICAgICAgICB8
fCBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50LmJpbmREb3VibGUoTW9zdFJlY2VudFVz
ZXJJbnRlcmFjdGlvblRpbWVJbmRleCwgbG9hZFN0YXRpc3RpY3MubW9zdFJlY2VudFVzZXJJbnRl
cmFjdGlvblRpbWUuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKSAhPSBTUUxJVEVfT0sKLSAg
ICAgICAgfHwgbV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC5iaW5kSW50KEdyYW5kZmF0
aGVyZWRJbmRleCwgbG9hZFN0YXRpc3RpY3MuZ3JhbmRmYXRoZXJlZCkgIT0gU1FMSVRFX09LCi0g
ICAgICAgIHx8IG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQuYmluZEludChJc1ByZXZh
bGVudEluZGV4LCBsb2FkU3RhdGlzdGljcy5pc1ByZXZhbGVudFJlc291cmNlKSAhPSBTUUxJVEVf
T0sKLSAgICAgICAgfHwgbV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC5iaW5kSW50KElz
VmVyeVByZXZhbGVudEluZGV4LCBsb2FkU3RhdGlzdGljcy5pc1ZlcnlQcmV2YWxlbnRSZXNvdXJj
ZSkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1l
bnQuYmluZEludChEYXRhUmVjb3Jkc1JlbW92ZWRJbmRleCwgbG9hZFN0YXRpc3RpY3MuZGF0YVJl
Y29yZHNSZW1vdmVkKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9pbnNlcnRPYnNlcnZlZERv
bWFpblN0YXRlbWVudC5iaW5kSW50KFRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJ
bnRlcmFjdGlvbkluZGV4LCBsb2FkU3RhdGlzdGljcy50aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5
RHVlVG9Vc2VySW50ZXJhY3Rpb24pICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX2luc2VydE9i
c2VydmVkRG9tYWluU3RhdGVtZW50LmJpbmRJbnQoVGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1
ZVRvU3RvcmFnZUFjY2Vzc0FQSUluZGV4LCBsb2FkU3RhdGlzdGljcy50aW1lc0FjY2Vzc2VkQXNG
aXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwg
bV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC5iaW5kSW50KElzU2NoZWR1bGVkRm9yQWxs
QnV0Q29va2llRGF0YVJlbW92YWxJbmRleCwgbG9hZFN0YXRpc3RpY3MuZ290TGlua0RlY29yYXRp
b25Gcm9tUHJldmFsZW50UmVzb3VyY2UpICE9IFNRTElURV9PSykgeworICAgIGluaXRpYWxpemVT
dGF0ZW1lbnQobV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudCwgaW5zZXJ0T2JzZXJ2ZWRE
b21haW5RdWVyeSwgImluc2VydE9ic2VydmVkRG9tYWluIl9zKTsKKworICAgIGlmIChtX2luc2Vy
dE9ic2VydmVkRG9tYWluU3RhdGVtZW50LT5iaW5kVGV4dChSZWdpc3RyYWJsZURvbWFpbkluZGV4
LCBsb2FkU3RhdGlzdGljcy5yZWdpc3RyYWJsZURvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09L
CisgICAgICAgIHx8IG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQtPmJpbmREb3VibGUo
TGFzdFNlZW5JbmRleCwgbG9hZFN0YXRpc3RpY3MubGFzdFNlZW4uc2Vjb25kc1NpbmNlRXBvY2go
KS52YWx1ZSgpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9pbnNlcnRPYnNlcnZlZERvbWFp
blN0YXRlbWVudC0+YmluZEludChIYWRVc2VySW50ZXJhY3Rpb25JbmRleCwgbG9hZFN0YXRpc3Rp
Y3MuaGFkVXNlckludGVyYWN0aW9uKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9pbnNlcnRP
YnNlcnZlZERvbWFpblN0YXRlbWVudC0+YmluZERvdWJsZShNb3N0UmVjZW50VXNlckludGVyYWN0
aW9uVGltZUluZGV4LCBsb2FkU3RhdGlzdGljcy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGlt
ZS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpICE9IFNRTElURV9PSworICAgICAgICB8fCBt
X2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50LT5iaW5kSW50KEdyYW5kZmF0aGVyZWRJbmRl
eCwgbG9hZFN0YXRpc3RpY3MuZ3JhbmRmYXRoZXJlZCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8
IG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQtPmJpbmRJbnQoSXNQcmV2YWxlbnRJbmRl
eCwgbG9hZFN0YXRpc3RpY3MuaXNQcmV2YWxlbnRSZXNvdXJjZSkgIT0gU1FMSVRFX09LCisgICAg
ICAgIHx8IG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQtPmJpbmRJbnQoSXNWZXJ5UHJl
dmFsZW50SW5kZXgsIGxvYWRTdGF0aXN0aWNzLmlzVmVyeVByZXZhbGVudFJlc291cmNlKSAhPSBT
UUxJVEVfT0sKKyAgICAgICAgfHwgbV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC0+Ymlu
ZEludChEYXRhUmVjb3Jkc1JlbW92ZWRJbmRleCwgbG9hZFN0YXRpc3RpY3MuZGF0YVJlY29yZHNS
ZW1vdmVkKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9pbnNlcnRPYnNlcnZlZERvbWFpblN0
YXRlbWVudC0+YmluZEludChUaW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9Vc2VySW50ZXJh
Y3Rpb25JbmRleCwgbG9hZFN0YXRpc3RpY3MudGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRv
VXNlckludGVyYWN0aW9uKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9pbnNlcnRPYnNlcnZl
ZERvbWFpblN0YXRlbWVudC0+YmluZEludChUaW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9T
dG9yYWdlQWNjZXNzQVBJSW5kZXgsIGxvYWRTdGF0aXN0aWNzLnRpbWVzQWNjZXNzZWRBc0ZpcnN0
UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUEkpICE9IFNRTElURV9PSworICAgICAgICB8fCBtX2lu
c2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50LT5iaW5kSW50KElzU2NoZWR1bGVkRm9yQWxsQnV0
Q29va2llRGF0YVJlbW92YWxJbmRleCwgbG9hZFN0YXRpc3RpY3MuZ290TGlua0RlY29yYXRpb25G
cm9tUHJldmFsZW50UmVzb3VyY2UpICE9IFNRTElURV9PSykgewogICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6aW5zZXJ0T2JzZXJ2ZWREb21haW4gZmFpbGVkIHRvIGJpbmQsIGVy
cm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2co
KSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCi0gICAgaWYgKG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQuc3RlcCgp
ICE9IFNRTElURV9ET05FKSB7CisgICAgaWYgKG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1l
bnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihO
ZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5zZXJ0
T2JzZXJ2ZWREb21haW4gZmFpbGVkIHRvIGNvbW1pdCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRl
fXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpbnQgcmVz
ZXRSZXN1bHQgPSBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50LnJlc2V0KCk7CisgICAg
aW50IHJlc2V0UmVzdWx0ID0gbV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC0+cmVzZXQo
KTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc2V0UmVzdWx0LCByZXNldFJlc3VsdCA9PSBTUUxJVEVf
T0spOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OnJlbGF0aW9uc2hpcEV4aXN0cyhXZWJDb3JlOjpTUUxpdGVTdGF0ZW1l
bnQmIHN0YXRlbWVudCwgT3B0aW9uYWw8dW5zaWduZWQ+IGZpcnN0RG9tYWluSUQsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiBzZWNvbmREb21haW4pIGNvbnN0Citib29sIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZWxhdGlvbnNoaXBFeGlzdHMoV2ViQ29yZTo6U1FMaXRl
U3RhdGVtZW50KiBzdGF0ZW1lbnQsIE9wdGlvbmFsPHVuc2lnbmVkPiBmaXJzdERvbWFpbklELCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc2Vjb25kRG9tYWluKSBjb25zdAogewogICAgIGlmICgh
Zmlyc3REb21haW5JRCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIEFTU0VSVCgh
UnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgaWYgKHN0YXRlbWVudC5iaW5kSW50KDEsICpmaXJz
dERvbWFpbklEKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgc3RhdGVtZW50LmJpbmRUZXh0KDIs
IHNlY29uZERvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IHN0YXRlbWVu
dC5zdGVwKCkgIT0gU1FMSVRFX1JPVykgeworICAgIGlmIChzdGF0ZW1lbnQtPmJpbmRJbnQoMSwg
KmZpcnN0RG9tYWluSUQpICE9IFNRTElURV9PSworICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRU
ZXh0KDIsIHNlY29uZERvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHN0
YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ST1cpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OnJlbGF0aW9uc2hpcEV4aXN0cyBmYWlsZWQgdG8gYmluZCwgZXJyb3IgbWVz
c2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
Ci0gICAgYm9vbCByZWxhdGlvbnNoaXBFeGlzdHMgPSAhIXN0YXRlbWVudC5nZXRDb2x1bW5JbnQo
MCk7CisgICAgYm9vbCByZWxhdGlvbnNoaXBFeGlzdHMgPSAhIXN0YXRlbWVudC0+Z2V0Q29sdW1u
SW50KDApOwogCi0gICAgaW50IHJlc2V0UmVzdWx0ID0gc3RhdGVtZW50LnJlc2V0KCk7CisgICAg
aW50IHJlc2V0UmVzdWx0ID0gc3RhdGVtZW50LT5yZXNldCgpOwogICAgIEFTU0VSVF9VTlVTRUQo
cmVzZXRSZXN1bHQsIHJlc2V0UmVzdWx0ID09IFNRTElURV9PSyk7CiAgICAgCiAgICAgcmV0dXJu
IHJlbGF0aW9uc2hpcEV4aXN0czsKQEAgLTc3NiwyMSArNzQ3LDIyIEBAIE9wdGlvbmFsPHVuc2ln
bmVkPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWluSUQoY29uc3Qg
UmVnaXN0cmFiCiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICB1bnNpZ25l
ZCBkb21haW5JRCA9IDA7CisgICAgaW5pdGlhbGl6ZVN0YXRlbWVudChtX2RvbWFpbklERnJvbVN0
cmluZ1N0YXRlbWVudCwgZG9tYWluSURGcm9tU3RyaW5nUXVlcnksICJkb21haW5JRCJfcyk7CiAK
LSAgICBpZiAobV9kb21haW5JREZyb21TdHJpbmdTdGF0ZW1lbnQuYmluZFRleHQoMSwgZG9tYWlu
LnN0cmluZygpKSAhPSBTUUxJVEVfT0spIHsKKyAgICBpZiAobV9kb21haW5JREZyb21TdHJpbmdT
dGF0ZW1lbnQtPmJpbmRUZXh0KDEsIGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LKSB7CiAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkb21haW5JREZyb21TdHJpbmcgZmFp
bGVkLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVy
cm9yTXNnKCkpOwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH0KICAgICAKLSAg
ICBpZiAobV9kb21haW5JREZyb21TdHJpbmdTdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ST1cp
IHsKLSAgICAgICAgaW50IHJlc2V0UmVzdWx0ID0gbV9kb21haW5JREZyb21TdHJpbmdTdGF0ZW1l
bnQucmVzZXQoKTsKKyAgICBpZiAobV9kb21haW5JREZyb21TdHJpbmdTdGF0ZW1lbnQtPnN0ZXAo
KSAhPSBTUUxJVEVfUk9XKSB7CisgICAgICAgIGludCByZXNldFJlc3VsdCA9IG1fZG9tYWluSURG
cm9tU3RyaW5nU3RhdGVtZW50LT5yZXNldCgpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc2V0
UmVzdWx0LCByZXNldFJlc3VsdCA9PSBTUUxJVEVfT0spOwogICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogICAgIH0KIAotICAgIGRvbWFpbklEID0gbV9kb21haW5JREZyb21TdHJpbmdTdGF0
ZW1lbnQuZ2V0Q29sdW1uSW50KDApOworICAgIGRvbWFpbklEID0gbV9kb21haW5JREZyb21TdHJp
bmdTdGF0ZW1lbnQtPmdldENvbHVtbkludCgwKTsKIAotICAgIGludCByZXNldFJlc3VsdCA9IG1f
ZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50LnJlc2V0KCk7CisgICAgaW50IHJlc2V0UmVzdWx0
ID0gbV9kb21haW5JREZyb21TdHJpbmdTdGF0ZW1lbnQtPnJlc2V0KCk7CiAgICAgQVNTRVJUX1VO
VVNFRChyZXNldFJlc3VsdCwgcmVzZXRSZXN1bHQgPT0gU1FMSVRFX09LKTsKICAgICAKICAgICBy
ZXR1cm4gZG9tYWluSUQ7CkBAIC04ODQsMTggKzg1NiwxOCBAQCB2b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwb3B1bGF0ZUZyb21NZW1vcnlTdG9yZShjb25zdCBSZXNv
dXJjZQogICAgICAgICBpbnNlcnREb21haW5SZWxhdGlvbnNoaXBzKHN0YXRpc3RpYy52YWx1ZSk7
CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1lcmdlKFdl
YkNvcmU6OlNRTGl0ZVN0YXRlbWVudCYgY3VycmVudCwgY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlz
dGljcyYgb3RoZXIpCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpt
ZXJnZShXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQqIGN1cnJlbnQsIGNvbnN0IFJlc291cmNlTG9h
ZFN0YXRpc3RpY3MmIG90aGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwog
Ci0gICAgYXV0byBjdXJyZW50UmVnaXN0cmFibGVEb21haW4gPSBjdXJyZW50LmdldENvbHVtblRl
eHQoUmVnaXN0cmFibGVEb21haW5JbmRleCk7Ci0gICAgYXV0byBjdXJyZW50TGFzdFNlZW4gPSBj
dXJyZW50LmdldENvbHVtbkRvdWJsZShMYXN0U2VlbkluZGV4KTsKLSAgICBhdXRvIGN1cnJlbnRN
b3N0UmVjZW50VXNlckludGVyYWN0aW9uID0gY3VycmVudC5nZXRDb2x1bW5Eb3VibGUoTW9zdFJl
Y2VudFVzZXJJbnRlcmFjdGlvblRpbWVJbmRleCk7Ci0gICAgYm9vbCBjdXJyZW50R3JhbmRmYXRo
ZXJlZCA9IGN1cnJlbnQuZ2V0Q29sdW1uSW50KEdyYW5kZmF0aGVyZWRJbmRleCk7Ci0gICAgYm9v
bCBjdXJyZW50SXNQcmV2YWxlbnQgPSBjdXJyZW50LmdldENvbHVtbkludChJc1ByZXZhbGVudElu
ZGV4KTsKLSAgICBib29sIGN1cnJlbnRJc1ZlcnlQcmV2YWxlbnQgPSBjdXJyZW50LmdldENvbHVt
bkludChJc1ZlcnlQcmV2YWxlbnRJbmRleCk7Ci0gICAgdW5zaWduZWQgY3VycmVudERhdGFSZWNv
cmRzUmVtb3ZlZCA9IGN1cnJlbnQuZ2V0Q29sdW1uSW50KERhdGFSZWNvcmRzUmVtb3ZlZEluZGV4
KTsKLSAgICBib29sIGN1cnJlbnRJc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFs
ID0gY3VycmVudC5nZXRDb2x1bW5JbnQoSXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVt
b3ZhbEluZGV4KTsKKyAgICBhdXRvIGN1cnJlbnRSZWdpc3RyYWJsZURvbWFpbiA9IGN1cnJlbnQt
PmdldENvbHVtblRleHQoUmVnaXN0cmFibGVEb21haW5JbmRleCk7CisgICAgYXV0byBjdXJyZW50
TGFzdFNlZW4gPSBjdXJyZW50LT5nZXRDb2x1bW5Eb3VibGUoTGFzdFNlZW5JbmRleCk7CisgICAg
YXV0byBjdXJyZW50TW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiA9IGN1cnJlbnQtPmdldENvbHVt
bkRvdWJsZShNb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZUluZGV4KTsKKyAgICBib29sIGN1
cnJlbnRHcmFuZGZhdGhlcmVkID0gY3VycmVudC0+Z2V0Q29sdW1uSW50KEdyYW5kZmF0aGVyZWRJ
bmRleCk7CisgICAgYm9vbCBjdXJyZW50SXNQcmV2YWxlbnQgPSBjdXJyZW50LT5nZXRDb2x1bW5J
bnQoSXNQcmV2YWxlbnRJbmRleCk7CisgICAgYm9vbCBjdXJyZW50SXNWZXJ5UHJldmFsZW50ID0g
Y3VycmVudC0+Z2V0Q29sdW1uSW50KElzVmVyeVByZXZhbGVudEluZGV4KTsKKyAgICB1bnNpZ25l
ZCBjdXJyZW50RGF0YVJlY29yZHNSZW1vdmVkID0gY3VycmVudC0+Z2V0Q29sdW1uSW50KERhdGFS
ZWNvcmRzUmVtb3ZlZEluZGV4KTsKKyAgICBib29sIGN1cnJlbnRJc1NjaGVkdWxlZEZvckFsbEJ1
dENvb2tpZURhdGFSZW1vdmFsID0gY3VycmVudC0+Z2V0Q29sdW1uSW50KElzU2NoZWR1bGVkRm9y
QWxsQnV0Q29va2llRGF0YVJlbW92YWxJbmRleCk7CiAKICAgICBBU1NFUlQoY3VycmVudFJlZ2lz
dHJhYmxlRG9tYWluID09IG90aGVyLnJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpKTsKIApAQCAt
OTI0LDE2ICs4OTYsMTcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6bWVyZ2UoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50JiBjdXJyZW4KIHZvaWQgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1lcmdlU3RhdGlzdGljKGNvbnN0IFJlc291cmNl
TG9hZFN0YXRpc3RpY3MmIHN0YXRpc3RpYykKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFp
bigpKTsKKyAgICBpbml0aWFsaXplU3RhdGVtZW50KG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5O
YW1lU3RhdGVtZW50LCBnZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVRdWVyeSwgIm1lcmdlU3Rh
dGlzdGljIl9zKTsKIAotICAgIGlmIChtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRl
bWVudC5iaW5kVGV4dCgxLCBzdGF0aXN0aWMucmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCkpICE9
IFNRTElURV9PSwotICAgICAgICB8fCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRl
bWVudC5zdGVwKCkgIT0gU1FMSVRFX1JPVykgeworICAgIGlmIChtX2dldFJlc291cmNlRGF0YUJ5
RG9tYWluTmFtZVN0YXRlbWVudC0+YmluZFRleHQoMSwgc3RhdGlzdGljLnJlZ2lzdHJhYmxlRG9t
YWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9nZXRSZXNvdXJjZURhdGFC
eURvbWFpbk5hbWVTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7CiAgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptZXJnZVN0YXRpc3RpYy4gU3RhdGVtZW50IGZhaWxl
ZCB0byBiaW5kIG9yIGRvbWFpbiB3YXMgbm90IGZvdW5kLCBlcnJvciBtZXNzYWdlOiAle3ByaXZh
dGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1lcmdlKG1fZ2V0
UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LCBzdGF0aXN0aWMpOwotICAgIHJlc2V0
U3RhdGVtZW50KG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50KTsKKyAgICBt
ZXJnZShtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC5nZXQoKSwgc3RhdGlz
dGljKTsKKyAgICByZXNldFN0YXRlbWVudChtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0
YXRlbWVudC5nZXQoKSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6Om1lcmdlU3RhdGlzdGljcyhWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJiBz
dGF0aXN0aWNzKQpAQCAtOTg3LDE4ICs5NjAsMjAgQEAgc3RhdGljIFNRTGl0ZVN0YXRlbWVudCBt
YWtlTWVkaWFuV2l0aFVJUXVlcnkoU1FMaXRlRGF0YWJhc2UmIGRhdGFiYXNlKQogCiBWZWN0b3I8
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmlj
Rmlyc3RQYXJ0eT4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldFRoaXJk
UGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9tYWlucyh1bnNpZ25lZCB0aGlyZFBhcnR5
RG9tYWluSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0aGlyZFBhcnR5RG9tYWluKSBjb25z
dAogewotICAgIGlmIChtX2dldEFsbFN1YlN0YXRpc3RpY3NTdGF0ZW1lbnQuYmluZEludCgxLCB0
aGlyZFBhcnR5RG9tYWluSUQpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX2dldEFsbFN1YlN0
YXRpc3RpY3NTdGF0ZW1lbnQuYmluZEludCgyLCB0aGlyZFBhcnR5RG9tYWluSUQpICE9IFNRTElU
RV9PSwotICAgICAgICB8fCBtX2dldEFsbFN1YlN0YXRpc3RpY3NTdGF0ZW1lbnQuYmluZEludCgz
LCB0aGlyZFBhcnR5RG9tYWluSUQpICE9IFNRTElURV9PSykgeworICAgIGluaXRpYWxpemVTdGF0
ZW1lbnQobV9nZXRBbGxTdWJTdGF0aXN0aWNzU3RhdGVtZW50LCBnZXRBbGxTdWJTdGF0aXN0aWNz
VW5kZXJEb21haW5RdWVyeSwgImdldFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5
RG9tYWlucyJfcyk7CisgICAgCisgICAgaWYgKG1fZ2V0QWxsU3ViU3RhdGlzdGljc1N0YXRlbWVu
dC0+YmluZEludCgxLCB0aGlyZFBhcnR5RG9tYWluSUQpICE9IFNRTElURV9PSworICAgICAgICB8
fCBtX2dldEFsbFN1YlN0YXRpc3RpY3NTdGF0ZW1lbnQtPmJpbmRJbnQoMiwgdGhpcmRQYXJ0eURv
bWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9nZXRBbGxTdWJTdGF0aXN0aWNzU3Rh
dGVtZW50LT5iaW5kSW50KDMsIHRoaXJkUGFydHlEb21haW5JRCkgIT0gU1FMSVRFX09LKSB7CiAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6Z2V0VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21h
aW4sIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCBtX2RhdGFiYXNlLmxhc3RF
cnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogICAgIFZl
Y3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhRm9yU3Bl
Y2lmaWNGaXJzdFBhcnR5PiB0aGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFp
bnM7Ci0gICAgd2hpbGUgKG1fZ2V0QWxsU3ViU3RhdGlzdGljc1N0YXRlbWVudC5zdGVwKCkgPT0g
U1FMSVRFX1JPVykgewotICAgICAgICBSZWdpc3RyYWJsZURvbWFpbiBmaXJzdFBhcnR5RG9tYWlu
ID0gUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFp
blN0cmluZyhnZXREb21haW5TdHJpbmdGcm9tRG9tYWluSUQobV9nZXRBbGxTdWJTdGF0aXN0aWNz
U3RhdGVtZW50LmdldENvbHVtbkludCgwKSkpOworICAgIHdoaWxlIChtX2dldEFsbFN1YlN0YXRp
c3RpY3NTdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKSB7CisgICAgICAgIFJlZ2lzdHJh
YmxlRG9tYWluIGZpcnN0UGFydHlEb21haW4gPSBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2Vk
Q3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKGdldERvbWFpblN0cmluZ0Zyb21Eb21h
aW5JRChtX2dldEFsbFN1YlN0YXRpc3RpY3NTdGF0ZW1lbnQtPmdldENvbHVtbkludCgwKSkpOwog
ICAgICAgICB0aGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbnMuYXBwZW5k
SWZOb3RDb250YWlucyhXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlE
YXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5IHsgZmlyc3RQYXJ0eURvbWFpbiwgaGFzU3RvcmFnZUFj
Y2VzcyhmaXJzdFBhcnR5RG9tYWluLCB0aGlyZFBhcnR5RG9tYWluKSwgZ2V0TW9zdFJlY2VudGx5
VXBkYXRlZFRpbWVzdGFtcCh0aGlyZFBhcnR5RG9tYWluLCBmaXJzdFBhcnR5RG9tYWluKSB9KTsK
ICAgICB9Ci0gICAgcmVzZXRTdGF0ZW1lbnQobV9nZXRBbGxTdWJTdGF0aXN0aWNzU3RhdGVtZW50
KTsKKyAgICByZXNldFN0YXRlbWVudChtX2dldEFsbFN1YlN0YXRpc3RpY3NTdGF0ZW1lbnQuZ2V0
KCkpOwogICAgIHJldHVybiB0aGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFp
bnM7CiB9CiAKQEAgLTExMjAsMzEgKzEwOTUsMzUgQEAgc3RhdGljIHVuc2lnbmVkIGdldE1lZGlh
bk9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbihTUUxpdGVEYXRhYmFzZSYK
IAogdW5zaWduZWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldE51bWJl
ck9mUHJldmFsZW50UmVzb3VyY2VzKCkgY29uc3QKIHsKLSAgICBhdXRvIHN0ZXBWYWx1ZSA9IG1f
Y291bnRQcmV2YWxlbnRSZXNvdXJjZXNTdGF0ZW1lbnQuc3RlcCgpOworICAgIGluaXRpYWxpemVT
dGF0ZW1lbnQobV9jb3VudFByZXZhbGVudFJlc291cmNlc1N0YXRlbWVudCwgY291bnRQcmV2YWxl
bnRSZXNvdXJjZXNRdWVyeSwgImdldE51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzIl9zKTsKKyAg
ICAKKyAgICBhdXRvIHN0ZXBWYWx1ZSA9IG1fY291bnRQcmV2YWxlbnRSZXNvdXJjZXNTdGF0ZW1l
bnQtPnN0ZXAoKTsKICAgICBpZiAoc3RlcFZhbHVlICE9IFNRTElURV9ST1cgJiYgc3RlcFZhbHVl
ICE9IFNRTElURV9ET05FKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0TnVtYmVyT2ZQcmV2YWxlbnRS
ZXNvdXJjZXMgZmFpbGVkIHRvIHN0ZXAsIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0dfU1RS
SU5HLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBpZiAoc3RlcFZhbHVlID09IFNR
TElURV9ST1cpIHsKLSAgICAgICAgdW5zaWduZWQgcHJldmFsZW50UmVzb3VyY2VDb3VudCA9IG1f
Y291bnRQcmV2YWxlbnRSZXNvdXJjZXNTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDApOworICAgICAg
ICB1bnNpZ25lZCBwcmV2YWxlbnRSZXNvdXJjZUNvdW50ID0gbV9jb3VudFByZXZhbGVudFJlc291
cmNlc1N0YXRlbWVudC0+Z2V0Q29sdW1uSW50KDApOwogICAgICAgICBpZiAocHJldmFsZW50UmVz
b3VyY2VDb3VudCA+PSBtaW5pbXVtUHJldmFsZW50UmVzb3VyY2VzRm9yVGVsZW1ldHJ5KSB7Ci0g
ICAgICAgICAgICByZXNldFN0YXRlbWVudChtX2NvdW50UHJldmFsZW50UmVzb3VyY2VzU3RhdGVt
ZW50KTsKKyAgICAgICAgICAgIHJlc2V0U3RhdGVtZW50KG1fY291bnRQcmV2YWxlbnRSZXNvdXJj
ZXNTdGF0ZW1lbnQuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuIHByZXZhbGVudFJlc291cmNl
Q291bnQ7CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmVzZXRTdGF0ZW1lbnQobV9jb3VudFByZXZh
bGVudFJlc291cmNlc1N0YXRlbWVudCk7CisgICAgcmVzZXRTdGF0ZW1lbnQobV9jb3VudFByZXZh
bGVudFJlc291cmNlc1N0YXRlbWVudC5nZXQoKSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKIHVuc2ln
bmVkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXROdW1iZXJPZlByZXZh
bGVudFJlc291cmNlc1dpdGhVSSgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fY291bnRQcmV2YWxlbnRS
ZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uU3RhdGVtZW50LnN0ZXAoKSA9PSBTUUxJVEVfUk9X
KSB7Ci0gICAgICAgIGludCBjb3VudCA9IG1fY291bnRQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNl
ckludGVyYWN0aW9uU3RhdGVtZW50LmdldENvbHVtbkludCgwKTsKLSAgICAgICAgcmVzZXRTdGF0
ZW1lbnQobV9jb3VudFByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb25TdGF0ZW1l
bnQpOworICAgIGluaXRpYWxpemVTdGF0ZW1lbnQobV9jb3VudFByZXZhbGVudFJlc291cmNlc1dp
dGhVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQsIGNvdW50UHJldmFsZW50UmVzb3VyY2VzV2l0aFVz
ZXJJbnRlcmFjdGlvblF1ZXJ5LCAiZ2V0TnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVUki
X3MpOworCisgICAgaWYgKG1fY291bnRQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0
aW9uU3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykgeworICAgICAgICBpbnQgY291bnQg
PSBtX2NvdW50UHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudC0+
Z2V0Q29sdW1uSW50KDApOworICAgICAgICByZXNldFN0YXRlbWVudChtX2NvdW50UHJldmFsZW50
UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudC5nZXQoKSk7CiAgICAgICAgIHJl
dHVybiBjb3VudDsKICAgICB9Ci0gICAgcmVzZXRTdGF0ZW1lbnQobV9jb3VudFByZXZhbGVudFJl
c291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQpOworICAgIHJlc2V0U3RhdGVtZW50
KG1fY291bnRQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uU3RhdGVtZW50Lmdl
dCgpKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMTI1OCwxMiArMTIzNywxNCBAQCBzdGF0aWMg
dW5zaWduZWQgbWFrZVN0YXRpc3RpY1F1ZXJ5KFNRTGl0ZURhdGFiYXNlJiBkYXRhYmFzZSwgUHJl
dmFsZW50UmVzb3VyY2VEYQogCiB1bnNpZ25lZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6Z2V0TnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VUkoKSBjb25zdAog
ewotICAgIGlmIChtX2NvdW50UHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlv
blN0YXRlbWVudC5zdGVwKCkgPT0gU1FMSVRFX1JPVykgewotICAgICAgICBpbnQgY291bnQgPSBt
X2NvdW50UHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudC5n
ZXRDb2x1bW5JbnQoMCk7Ci0gICAgICAgIHJlc2V0U3RhdGVtZW50KG1fY291bnRQcmV2YWxlbnRS
ZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uU3RhdGVtZW50KTsKKyAgICBpbml0aWFsaXpl
U3RhdGVtZW50KG1fY291bnRQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9u
U3RhdGVtZW50LCBjb3VudFByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb25R
dWVyeSwgImdldE51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVJIl9zKTsKKworICAg
IGlmIChtX2NvdW50UHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvblN0YXRl
bWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpIHsKKyAgICAgICAgaW50IGNvdW50ID0gbV9jb3Vu
dFByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQtPmdldENv
bHVtbkludCgwKTsKKyAgICAgICAgcmVzZXRTdGF0ZW1lbnQobV9jb3VudFByZXZhbGVudFJlc291
cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQuZ2V0KCkpOwogICAgICAgICByZXR1
cm4gY291bnQ7CiAgICAgfQotICAgIHJlc2V0U3RhdGVtZW50KG1fY291bnRQcmV2YWxlbnRSZXNv
dXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uU3RhdGVtZW50KTsKKyAgICByZXNldFN0YXRlbWVu
dChtX2NvdW50UHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvblN0YXRlbWVu
dC5nZXQoKSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTE1MTksNyArMTUwMCw4IEBAIHZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnN5bmNTdG9yYWdlSW1tZWRpYXRl
bHkoKQogCiBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpoYXNTdG9y
YWdlQWNjZXNzKGNvbnN0IFRvcEZyYW1lRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgY29uc3QgU3Vi
RnJhbWVEb21haW4mIHN1YkZyYW1lRG9tYWluKSBjb25zdAogewotICAgIHJldHVybiByZWxhdGlv
bnNoaXBFeGlzdHMobV9zdG9yYWdlQWNjZXNzRXhpc3RzU3RhdGVtZW50LCBkb21haW5JRChzdWJG
cmFtZURvbWFpbiksIHRvcEZyYW1lRG9tYWluKTsKKyAgICBpbml0aWFsaXplU3RhdGVtZW50KG1f
c3RvcmFnZUFjY2Vzc0V4aXN0c1N0YXRlbWVudCwgc3RvcmFnZUFjY2Vzc0V4aXN0c1F1ZXJ5LCAi
aGFzU3RvcmFnZUFjY2VzcyJfcyk7CisgICAgcmV0dXJuIHJlbGF0aW9uc2hpcEV4aXN0cyhtX3N0
b3JhZ2VBY2Nlc3NFeGlzdHNTdGF0ZW1lbnQuZ2V0KCksIGRvbWFpbklEKHN1YkZyYW1lRG9tYWlu
KSwgdG9wRnJhbWVEb21haW4pOwogfQogCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiBzdWJGcmFt
ZURvbWFpbiwgY29uc3QgVG9wRnJhbWVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBPcHRpb25hbDxG
cmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTE4NDEsMTcgKzE4
MjMsMTkgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJU
b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvU2luY2VTYW0KIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OnNldFVzZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgZG9tYWluLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgV2FsbFRpbWUgbW9zdFJlY2Vu
dEludGVyYWN0aW9uKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIAor
ICAgIGluaXRpYWxpemVTdGF0ZW1lbnQobV9tb3N0UmVjZW50VXNlckludGVyYWN0aW9uU3RhdGVt
ZW50LCBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uUXVlcnksICJzZXRVc2VySW50ZXJhY3Rpb24i
X3MpOwogCi0gICAgaWYgKG1fbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudC5iaW5k
SW50KDEsIGhhZFVzZXJJbnRlcmFjdGlvbikgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fbW9z
dFJlY2VudFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudC5iaW5kRG91YmxlKDIsIG1vc3RSZWNlbnRJ
bnRlcmFjdGlvbi5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpICE9IFNRTElURV9PSwotICAg
ICAgICB8fCBtX21vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQuYmluZFRleHQoMywg
ZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9tb3N0UmVjZW50VXNl
ckludGVyYWN0aW9uU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgeworICAgIGlmICht
X21vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQtPmJpbmRJbnQoMSwgaGFkVXNlcklu
dGVyYWN0aW9uKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9tb3N0UmVjZW50VXNlckludGVy
YWN0aW9uU3RhdGVtZW50LT5iaW5kRG91YmxlKDIsIG1vc3RSZWNlbnRJbnRlcmFjdGlvbi5zZWNv
bmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpICE9IFNRTElURV9PSworICAgICAgICB8fCBtX21vc3RS
ZWNlbnRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQtPmJpbmRUZXh0KDMsIGRvbWFpbi5zdHJpbmco
KSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1fbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblN0
YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpzZXRVc2VySW50ZXJhY3Rpb24sIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0
ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaW50IHJlc2V0UmVz
dWx0ID0gbV9tb3N0UmVjZW50VXNlckludGVyYWN0aW9uU3RhdGVtZW50LnJlc2V0KCk7CisgICAg
aW50IHJlc2V0UmVzdWx0ID0gbV9tb3N0UmVjZW50VXNlckludGVyYWN0aW9uU3RhdGVtZW50LT5y
ZXNldCgpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzZXRSZXN1bHQsIHJlc2V0UmVzdWx0ID09IFNR
TElURV9PSyk7CiB9CiAKQEAgLTE5MDEsMjQgKzE4ODUsMjYgQEAgdm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0
cmFibGUKIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc0hhZFVz
ZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBPcGVyYXRpbmdE
YXRlc1dpbmRvdyBvcGVyYXRpbmdEYXRlc1dpbmRvdykKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKKyAgICAKKyAgICBpbml0aWFsaXplU3RhdGVtZW50KG1faGFkVXNlckludGVy
YWN0aW9uU3RhdGVtZW50LCBoYWRVc2VySW50ZXJhY3Rpb25RdWVyeSwgImhhc0hhZFVzZXJJbnRl
cmFjdGlvbiJfcyk7CiAKLSAgICBpZiAobV9oYWRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQuYmlu
ZFRleHQoMSwgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9oYWRV
c2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ST1cpIHsKKyAgICBpZiAo
bV9oYWRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQtPmJpbmRUZXh0KDEsIGRvbWFpbi5zdHJpbmco
KSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1faGFkVXNlckludGVyYWN0aW9uU3RhdGVtZW50
LT5zdGVwKCkgIT0gU1FMSVRFX1JPVykgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9B
TExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6bV9oYWRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQgZmFpbGVkLCBlcnJvciBtZXNzYWdl
OiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogCi0gICAg
ICAgIGludCByZXNldFJlc3VsdCA9IG1faGFkVXNlckludGVyYWN0aW9uU3RhdGVtZW50LnJlc2V0
KCk7CisgICAgICAgIGludCByZXNldFJlc3VsdCA9IG1faGFkVXNlckludGVyYWN0aW9uU3RhdGVt
ZW50LT5yZXNldCgpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc2V0UmVzdWx0LCByZXNldFJl
c3VsdCA9PSBTUUxJVEVfT0spOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAg
Ym9vbCBoYWRVc2VySW50ZXJhY3Rpb24gPSAhIW1faGFkVXNlckludGVyYWN0aW9uU3RhdGVtZW50
LmdldENvbHVtbkludCgwKTsKKyAgICBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiA9ICEhbV9oYWRV
c2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQtPmdldENvbHVtbkludCgwKTsKICAgICBpZiAoIWhhZFVz
ZXJJbnRlcmFjdGlvbikgewotICAgICAgICBpbnQgcmVzZXRSZXN1bHQgPSBtX2hhZFVzZXJJbnRl
cmFjdGlvblN0YXRlbWVudC5yZXNldCgpOworICAgICAgICBpbnQgcmVzZXRSZXN1bHQgPSBtX2hh
ZFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudC0+cmVzZXQoKTsKICAgICAgICAgQVNTRVJUX1VOVVNF
RChyZXNldFJlc3VsdCwgcmVzZXRSZXN1bHQgPT0gU1FMSVRFX09LKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KICAgICAKLSAgICBXYWxsVGltZSBtb3N0UmVjZW50VXNlckludGVyYWN0
aW9uVGltZSA9IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhtX2hhZFVzZXJJbnRlcmFjdGlvblN0
YXRlbWVudC5nZXRDb2x1bW5Eb3VibGUoMSkpOworICAgIFdhbGxUaW1lIG1vc3RSZWNlbnRVc2Vy
SW50ZXJhY3Rpb25UaW1lID0gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKG1faGFkVXNlckludGVy
YWN0aW9uU3RhdGVtZW50LT5nZXRDb2x1bW5Eb3VibGUoMSkpOwogCiAgICAgaWYgKGhhc1N0YXRp
c3RpY3NFeHBpcmVkKG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lLCBvcGVyYXRpbmdEYXRl
c1dpbmRvdykpIHsKICAgICAgICAgLy8gRHJvcCBwcml2YWN5IHNlbnNpdGl2ZSBkYXRhIGJlY2F1
c2Ugd2Ugbm8gbG9uZ2VyIG5lZWQgaXQuCkBAIC0xOTI4LDcgKzE5MTQsNyBAQCBib29sIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpoYXNIYWRVc2VySW50ZXJhY3Rpb24oY29u
c3QgUmVnaXN0cmFibAogICAgICAgICBoYWRVc2VySW50ZXJhY3Rpb24gPSBmYWxzZTsKICAgICB9
CiAgICAgCi0gICAgaW50IHJlc2V0UmVzdWx0ID0gbV9oYWRVc2VySW50ZXJhY3Rpb25TdGF0ZW1l
bnQucmVzZXQoKTsKKyAgICBpbnQgcmVzZXRSZXN1bHQgPSBtX2hhZFVzZXJJbnRlcmFjdGlvblN0
YXRlbWVudC0+cmVzZXQoKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc2V0UmVzdWx0LCByZXNldFJl
c3VsdCA9PSBTUUxJVEVfT0spOwogCiAgICAgcmV0dXJuIGhhZFVzZXJJbnRlcmFjdGlvbjsKQEAg
LTE5MzksMjggKzE5MjUsMzEgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6c2V0UHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFibGUKICAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBpZiAoc2hvdWxkU2tpcChkb21haW4pKQogICAgICAg
ICByZXR1cm47CisgICAgaW5pdGlhbGl6ZVN0YXRlbWVudChtX3VwZGF0ZVByZXZhbGVudFJlc291
cmNlU3RhdGVtZW50LCB1cGRhdGVQcmV2YWxlbnRSZXNvdXJjZVF1ZXJ5LCAic2V0UHJldmFsZW50
UmVzb3VyY2UiX3MpOwogCi0gICAgaWYgKG1fdXBkYXRlUHJldmFsZW50UmVzb3VyY2VTdGF0ZW1l
bnQuYmluZEludCgxLCAxKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV91cGRhdGVQcmV2YWxl
bnRSZXNvdXJjZVN0YXRlbWVudC5iaW5kVGV4dCgyLCBkb21haW4uc3RyaW5nKCkpICE9IFNRTElU
RV9PSwotICAgICAgICB8fCBtX3VwZGF0ZVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50LnN0ZXAo
KSAhPSBTUUxJVEVfRE9ORSkgeworICAgIGlmIChtX3VwZGF0ZVByZXZhbGVudFJlc291cmNlU3Rh
dGVtZW50LT5iaW5kSW50KDEsIDEpICE9IFNRTElURV9PSworICAgICAgICB8fCBtX3VwZGF0ZVBy
ZXZhbGVudFJlc291cmNlU3RhdGVtZW50LT5iaW5kVGV4dCgyLCBkb21haW4uc3RyaW5nKCkpICE9
IFNRTElURV9PSworICAgICAgICB8fCBtX3VwZGF0ZVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50
LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZf
QUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6Om1fdXBkYXRlUHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQgZmFpbGVkLCBlcnJvciBt
ZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICAKLSAgICBpbnQgcmVzZXRSZXN1bHQgPSBtX3VwZGF0ZVByZXZhbGVudFJlc291cmNlU3RhdGVt
ZW50LnJlc2V0KCk7CisgICAgaW50IHJlc2V0UmVzdWx0ID0gbV91cGRhdGVQcmV2YWxlbnRSZXNv
dXJjZVN0YXRlbWVudC0+cmVzZXQoKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc2V0UmVzdWx0LCBy
ZXNldFJlc3VsdCA9PSBTUUxJVEVfT0spOwogCisgICAgaW5pdGlhbGl6ZVN0YXRlbWVudChtX3Vw
ZGF0ZVZlcnlQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudCwgdXBkYXRlVmVyeVByZXZhbGVudFJl
c291cmNlUXVlcnksICJzZXRQcmV2YWxlbnRSZXNvdXJjZSB1cGRhdGVWZXJ5UHJldmFsZW50UmVz
b3VyY2UiX3MpOworICAgIAogICAgIGlmIChuZXdQcmV2YWxlbmNlID09IFJlc291cmNlTG9hZFBy
ZXZhbGVuY2U6OlZlcnlIaWdoKSB7Ci0gICAgICAgIGlmIChtX3VwZGF0ZVZlcnlQcmV2YWxlbnRS
ZXNvdXJjZVN0YXRlbWVudC5iaW5kSW50KDEsIDEpICE9IFNRTElURV9PSwotICAgICAgICAgICAg
fHwgbV91cGRhdGVWZXJ5UHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQuYmluZFRleHQoMiwgZG9t
YWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IG1fdXBkYXRlVmVyeVBy
ZXZhbGVudFJlc291cmNlU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgeworICAgICAg
ICBpZiAobV91cGRhdGVWZXJ5UHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQtPmJpbmRJbnQoMSwg
MSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBtX3VwZGF0ZVZlcnlQcmV2YWxlbnRSZXNv
dXJjZVN0YXRlbWVudC0+YmluZFRleHQoMiwgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sK
KyAgICAgICAgICAgIHx8IG1fdXBkYXRlVmVyeVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50LT5z
dGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lG
X0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjptX3VwZGF0ZVZlcnlQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudCBmYWlsZWQsIGVy
cm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2co
KSk7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCi0gICAgICAgIGludCByZXNldFJlc3VsdCA9IG1fdXBkYXRlVmVyeVBy
ZXZhbGVudFJlc291cmNlU3RhdGVtZW50LnJlc2V0KCk7CisgICAgICAgIGludCByZXNldFJlc3Vs
dCA9IG1fdXBkYXRlVmVyeVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50LT5yZXNldCgpOwogICAg
ICAgICBBU1NFUlRfVU5VU0VEKHJlc2V0UmVzdWx0LCByZXNldFJlc3VsdCA9PSBTUUxJVEVfT0sp
OwogICAgIH0KIApAQCAtMTk5Miw5ICsxOTgxLDExIEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OmR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKENvbXBsZXRpb25I
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpbml0aWFsaXplU3RhdGVtZW50KG1fZ2V0
QWxsRG9tYWluc1N0YXRlbWVudCwgZ2V0QWxsRG9tYWluc1F1ZXJ5LCAiZHVtcFJlc291cmNlTG9h
ZFN0YXRpc3RpY3MiX3MpOworICAgIAogICAgIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnM7Ci0gICAg
d2hpbGUgKG1fZ2V0QWxsRG9tYWluc1N0YXRlbWVudC5zdGVwKCkgPT0gU1FMSVRFX1JPVykKLSAg
ICAgICAgZG9tYWlucy5hcHBlbmQobV9nZXRBbGxEb21haW5zU3RhdGVtZW50LmdldENvbHVtblRl
eHQoMCkpOworICAgIHdoaWxlIChtX2dldEFsbERvbWFpbnNTdGF0ZW1lbnQtPnN0ZXAoKSA9PSBT
UUxJVEVfUk9XKQorICAgICAgICBkb21haW5zLmFwcGVuZChtX2dldEFsbERvbWFpbnNTdGF0ZW1l
bnQtPmdldENvbHVtblRleHQoMCkpOwogICAgIHN0ZDo6c29ydChkb21haW5zLmJlZ2luKCksIGRv
bWFpbnMuZW5kKCksIFdURjo6Y29kZVBvaW50Q29tcGFyZUxlc3NUaGFuKTsKIAogICAgIFN0cmlu
Z0J1aWxkZXIgcmVzdWx0OwpAQCAtMjAxMCwyNiArMjAwMSwyNiBAQCB2b2lkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhDb21w
bGV0aW9uSAogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXG4nKTsKICAgICAgICAgfQogICAg
IH0KLSAgICByZXNldFN0YXRlbWVudChtX2dldEFsbERvbWFpbnNTdGF0ZW1lbnQpOworICAgIHJl
c2V0U3RhdGVtZW50KG1fZ2V0QWxsRG9tYWluc1N0YXRlbWVudC5nZXQoKSk7CiAgICAgY29tcGxl
dGlvbkhhbmRsZXIocmVzdWx0LnRvU3RyaW5nKCkpOwogfQogCi1ib29sIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcmVkaWNhdGVWYWx1ZUZvckRvbWFpbihXZWJDb3JlOjpT
UUxpdGVTdGF0ZW1lbnQmIHByZWRpY2F0ZVN0YXRlbWVudCwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIGRvbWFpbikgY29uc3QKK2Jvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OnByZWRpY2F0ZVZhbHVlRm9yRG9tYWluKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCogcHJl
ZGljYXRlU3RhdGVtZW50LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKSBjb25zdAog
ewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIAotICAgIGlmIChwcmVkaWNh
dGVTdGF0ZW1lbnQuYmluZFRleHQoMSwgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKLSAg
ICAgICAgfHwgcHJlZGljYXRlU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7CisgICAg
aWYgKHByZWRpY2F0ZVN0YXRlbWVudC0+YmluZFRleHQoMSwgZG9tYWluLnN0cmluZygpKSAhPSBT
UUxJVEVfT0sKKyAgICAgICAgfHwgcHJlZGljYXRlU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRF
X1JPVykgewogCi0gICAgICAgIGludCByZXNldFJlc3VsdCA9IHByZWRpY2F0ZVN0YXRlbWVudC5y
ZXNldCgpOworICAgICAgICBpbnQgcmVzZXRSZXN1bHQgPSBwcmVkaWNhdGVTdGF0ZW1lbnQtPnJl
c2V0KCk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzZXRSZXN1bHQsIHJlc2V0UmVzdWx0ID09
IFNRTElURV9PSyk7CiAKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nl
c3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnByZWRp
Y2F0ZVZhbHVlRm9yRG9tYWluIGZhaWxlZCB0byBiaW5kLCBlcnJvciBtZXNzYWdlOiAle3ByaXZh
dGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCi0gICAgYm9vbCByZXN1bHQgPSAhIXByZWRpY2F0ZVN0YXRlbWVudC5n
ZXRDb2x1bW5JbnQoMCk7Ci0gICAgaW50IHJlc2V0UmVzdWx0ID0gcHJlZGljYXRlU3RhdGVtZW50
LnJlc2V0KCk7CisgICAgYm9vbCByZXN1bHQgPSAhIXByZWRpY2F0ZVN0YXRlbWVudC0+Z2V0Q29s
dW1uSW50KDApOworICAgIGludCByZXNldFJlc3VsdCA9IHByZWRpY2F0ZVN0YXRlbWVudC0+cmVz
ZXQoKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc2V0UmVzdWx0LCByZXNldFJlc3VsdCA9PSBTUUxJ
VEVfT0spOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0yMDQxLDcgKzIwMzIsOSBAQCBib29s
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppc1ByZXZhbGVudFJlc291cmNl
KGNvbnN0IFJlZ2lzdHJhYmxlRAogICAgIGlmIChzaG91bGRTa2lwKGRvbWFpbikpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBwcmVkaWNhdGVWYWx1ZUZvckRvbWFpbihtX2lz
UHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQsIGRvbWFpbik7CisgICAgaW5pdGlhbGl6ZVN0YXRl
bWVudChtX2lzUHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQsIGlzUHJldmFsZW50UmVzb3VyY2VR
dWVyeSwgImlzUHJldmFsZW50UmVzb3VyY2UiX3MpOworICAgIAorICAgIHJldHVybiBwcmVkaWNh
dGVWYWx1ZUZvckRvbWFpbihtX2lzUHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQuZ2V0KCksIGRv
bWFpbik7CiB9CiAKIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omlz
VmVyeVByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pIGNv
bnN0CkBAIC0yMDUxLDI4ICsyMDQ0LDM2IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OmlzVmVyeVByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhCiAgICAg
aWYgKHNob3VsZFNraXAoZG9tYWluKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0
dXJuIHByZWRpY2F0ZVZhbHVlRm9yRG9tYWluKG1faXNWZXJ5UHJldmFsZW50UmVzb3VyY2VTdGF0
ZW1lbnQsIGRvbWFpbik7CisgICAgaW5pdGlhbGl6ZVN0YXRlbWVudChtX2lzVmVyeVByZXZhbGVu
dFJlc291cmNlU3RhdGVtZW50LCBpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZVF1ZXJ5LCAiaXNWZXJ5
UHJldmFsZW50UmVzb3VyY2UiX3MpOworCisgICAgcmV0dXJuIHByZWRpY2F0ZVZhbHVlRm9yRG9t
YWluKG1faXNWZXJ5UHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQuZ2V0KCksIGRvbWFpbik7CiB9
CiAKIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmlzUmVnaXN0ZXJl
ZEFzU3VicmVzb3VyY2VVbmRlcihjb25zdCBTdWJSZXNvdXJjZURvbWFpbiYgc3VicmVzb3VyY2VE
b21haW4sIGNvbnN0IFRvcEZyYW1lRG9tYWluJiB0b3BGcmFtZURvbWFpbikgY29uc3QKIHsKICAg
ICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIHJldHVybiByZWxhdGlvbnNoaXBF
eGlzdHMobV9zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5FeGlzdHMsIGRvbWFpbklEKHN1
YnJlc291cmNlRG9tYWluKSwgdG9wRnJhbWVEb21haW4pOworICAgIGluaXRpYWxpemVTdGF0ZW1l
bnQobV9zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5FeGlzdHNTdGF0ZW1lbnQsIHN1YnJl
c291cmNlVW5kZXJUb3BGcmFtZURvbWFpbkV4aXN0c1F1ZXJ5LCAiaXNSZWdpc3RlcmVkQXNTdWJy
ZXNvdXJjZVVuZGVyIl9zKTsKKyAgICAKKyAgICByZXR1cm4gcmVsYXRpb25zaGlwRXhpc3RzKG1f
c3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluRXhpc3RzU3RhdGVtZW50LmdldCgpLCBkb21h
aW5JRChzdWJyZXNvdXJjZURvbWFpbiksIHRvcEZyYW1lRG9tYWluKTsKIH0KIAogYm9vbCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVu
ZGVyKGNvbnN0IFN1YkZyYW1lRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgVG9wRnJhbWVE
b21haW4mIHRvcEZyYW1lRG9tYWluKSBjb25zdAogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOworICAgIAorICAgIGluaXRpYWxpemVTdGF0ZW1lbnQobV9zdWJmcmFtZVVuZGVyVG9w
RnJhbWVEb21haW5FeGlzdHNTdGF0ZW1lbnQsIHN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbkV4
aXN0c1F1ZXJ5LCAiaXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyIl9zKTsKIAotICAgIHJldHVy
biByZWxhdGlvbnNoaXBFeGlzdHMobV9zdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5FeGlzdHMs
IGRvbWFpbklEKHN1YkZyYW1lRG9tYWluKSwgdG9wRnJhbWVEb21haW4pOworICAgIHJldHVybiBy
ZWxhdGlvbnNoaXBFeGlzdHMobV9zdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5FeGlzdHNTdGF0
ZW1lbnQuZ2V0KCksIGRvbWFpbklEKHN1YkZyYW1lRG9tYWluKSwgdG9wRnJhbWVEb21haW4pOwog
fQogCiBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppc1JlZ2lzdGVy
ZWRBc1JlZGlyZWN0aW5nVG8oY29uc3QgUmVkaXJlY3RlZEZyb21Eb21haW4mIHJlZGlyZWN0ZWRG
cm9tRG9tYWluLCBjb25zdCBSZWRpcmVjdGVkVG9Eb21haW4mIHJlZGlyZWN0ZWRUb0RvbWFpbikg
Y29uc3QKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIHJldHVybiBy
ZWxhdGlvbnNoaXBFeGlzdHMobV9zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvRXhpc3RzLCBk
b21haW5JRChyZWRpcmVjdGVkRnJvbURvbWFpbiksIHJlZGlyZWN0ZWRUb0RvbWFpbik7CisgICAg
aW5pdGlhbGl6ZVN0YXRlbWVudChtX3N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG9FeGlzdHNT
dGF0ZW1lbnQsIHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG9FeGlzdHNRdWVyeSwgImlzUmVn
aXN0ZXJlZEFzUmVkaXJlY3RpbmdUbyJfcyk7CisKKyAgICByZXR1cm4gcmVsYXRpb25zaGlwRXhp
c3RzKG1fc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUb0V4aXN0c1N0YXRlbWVudC5nZXQoKSwg
ZG9tYWluSUQocmVkaXJlY3RlZEZyb21Eb21haW4pLCByZWRpcmVjdGVkVG9Eb21haW4pOwogfQog
CiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhclByZXZhbGVu
dFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pCkBAIC0yMDg0LDE0ICsy
MDg1LDE3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFy
UHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFiCiAgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpjbGVhclByZXZhbGVudFJlc291cmNlIHdhcyBub3QgY29tcGxldGVkIGR1
ZSB0byBmYWlsZWQgaW5zZXJ0IGF0dGVtcHQiLCB0aGlzKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICBpZiAobV9jbGVhclByZXZhbGVudFJlc291cmNlU3RhdGVtZW50LmJpbmRUZXh0KDEs
IGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fY2xlYXJQcmV2YWxl
bnRSZXNvdXJjZVN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKKyAgICAKKyAgICBp
bml0aWFsaXplU3RhdGVtZW50KG1fY2xlYXJQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudCwgY2xl
YXJQcmV2YWxlbnRSZXNvdXJjZVF1ZXJ5LCAiY2xlYXJQcmV2YWxlbnRSZXNvdXJjZSJfcyk7Cisg
ICAgCisgICAgaWYgKG1fY2xlYXJQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudC0+YmluZFRleHQo
MSwgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9jbGVhclByZXZh
bGVudFJlc291cmNlU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKICAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyUHJldmFsZW50UmVzb3VyY2UsIGVycm9y
IG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIAotICAgIGludCByZXNldFJlc3VsdCA9IG1fY2xlYXJQcmV2YWxlbnRSZXNvdXJjZVN0YXRl
bWVudC5yZXNldCgpOworICAgIGludCByZXNldFJlc3VsdCA9IG1fY2xlYXJQcmV2YWxlbnRSZXNv
dXJjZVN0YXRlbWVudC0+cmVzZXQoKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc2V0UmVzdWx0LCBy
ZXNldFJlc3VsdCA9PSBTUUxJVEVfT0spOwogfQogCkBAIC0yMTA0LDE1ICsyMTA4LDE4IEBAIHZv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldEdyYW5kZmF0aGVyZWQo
Y29uc3QgUmVnaXN0cmFibGVEb21hCiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9X
RUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpzZXRHcmFuZGZhdGhlcmVkIHdhcyBub3QgY29tcGxldGVkIGR1ZSB0byBmYWlsZWQgaW5zZXJ0
IGF0dGVtcHQiLCB0aGlzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAobV91cGRh
dGVHcmFuZGZhdGhlcmVkU3RhdGVtZW50LmJpbmRJbnQoMSwgdmFsdWUpICE9IFNRTElURV9PSwot
ICAgICAgICB8fCBtX3VwZGF0ZUdyYW5kZmF0aGVyZWRTdGF0ZW1lbnQuYmluZFRleHQoMiwgZG9t
YWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV91cGRhdGVHcmFuZGZhdGhl
cmVkU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgeworICAgIAorICAgIGluaXRpYWxp
emVTdGF0ZW1lbnQobV91cGRhdGVHcmFuZGZhdGhlcmVkU3RhdGVtZW50LCB1cGRhdGVHcmFuZGZh
dGhlcmVkUXVlcnksICJzZXRHcmFuZGZhdGhlcmVkIl9zKTsKKyAgICAKKyAgICBpZiAobV91cGRh
dGVHcmFuZGZhdGhlcmVkU3RhdGVtZW50LT5iaW5kSW50KDEsIHZhbHVlKSAhPSBTUUxJVEVfT0sK
KyAgICAgICAgfHwgbV91cGRhdGVHcmFuZGZhdGhlcmVkU3RhdGVtZW50LT5iaW5kVGV4dCgyLCBk
b21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSworICAgICAgICB8fCBtX3VwZGF0ZUdyYW5kZmF0
aGVyZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewogICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0R3JhbmRmYXRoZXJlZCBmYWlsZWQgdG8gYmluZCwgZXJy
b3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygp
KTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgCi0gICAgaW50IHJlc2V0UmVzdWx0ID0gbV91cGRhdGVHcmFuZGZhdGhlcmVkU3RhdGVt
ZW50LnJlc2V0KCk7CisgICAgaW50IHJlc2V0UmVzdWx0ID0gbV91cGRhdGVHcmFuZGZhdGhlcmVk
U3RhdGVtZW50LT5yZXNldCgpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzZXRSZXN1bHQsIHJlc2V0
UmVzdWx0ID09IFNRTElURV9PSyk7CiB9CiAKQEAgLTIxMjUsMTUgKzIxMzIsMTggQEAgdm9pZCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0SXNTY2hlZHVsZWRGb3JBbGxC
dXRDb29raWVEYXRhUmVtb3YKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCht
X3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNl
dElzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwgd2FzIG5vdCBjb21wbGV0ZWQg
ZHVlIHRvIGZhaWxlZCBpbnNlcnQgYXR0ZW1wdCIsIHRoaXMpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIGlmIChtX3VwZGF0ZUlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92
YWxTdGF0ZW1lbnQuYmluZEludCgxLCB2YWx1ZSkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1f
dXBkYXRlSXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbFN0YXRlbWVudC5iaW5k
VGV4dCgyLCBkb21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX3VwZGF0
ZUlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWxTdGF0ZW1lbnQuc3RlcCgpICE9
IFNRTElURV9ET05FKSB7CisgICAgCisgICAgaW5pdGlhbGl6ZVN0YXRlbWVudChtX3VwZGF0ZUlz
U2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWxTdGF0ZW1lbnQsIHVwZGF0ZUlzU2No
ZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWxRdWVyeSwgInNldElzU2NoZWR1bGVkRm9y
QWxsQnV0Q29va2llRGF0YVJlbW92YWwiX3MpOworICAgIAorICAgIGlmIChtX3VwZGF0ZUlzU2No
ZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWxTdGF0ZW1lbnQtPmJpbmRJbnQoMSwgdmFs
dWUpICE9IFNRTElURV9PSworICAgICAgICB8fCBtX3VwZGF0ZUlzU2NoZWR1bGVkRm9yQWxsQnV0
Q29va2llRGF0YVJlbW92YWxTdGF0ZW1lbnQtPmJpbmRUZXh0KDIsIGRvbWFpbi5zdHJpbmcoKSkg
IT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1fdXBkYXRlSXNTY2hlZHVsZWRGb3JBbGxCdXRDb29r
aWVEYXRhUmVtb3ZhbFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7CiAgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRJc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tp
ZURhdGFSZW1vdmFsIGZhaWxlZCB0byBiaW5kLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIs
IHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHJlc2V0U3RhdGVtZW50KG1f
dXBkYXRlSXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbFN0YXRlbWVudCk7Cisg
ICAgcmVzZXRTdGF0ZW1lbnQobV91cGRhdGVJc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFS
ZW1vdmFsU3RhdGVtZW50LmdldCgpKTsKIH0KIFNlY29uZHMgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OmdldE1vc3RSZWNlbnRseVVwZGF0ZWRUaW1lc3RhbXAoY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHN1YkRvbWFpbiwgY29uc3QgVG9wRnJhbWVEb21haW4mIHRvcEZyYW1l
RG9tYWluKSBjb25zdAogewpAQCAtMjE0NCwyNSArMjE1NCwyNyBAQCBTZWNvbmRzIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXRNb3N0UmVjZW50bHlVcGRhdGVkVGltZXN0
YW1wKGNvbgogCiAgICAgaWYgKCFzdWJGcmFtZURvbWFpbklEIHx8ICF0b3BGcmFtZURvbWFpbklE
KQogICAgICAgICByZXR1cm4gU2Vjb25kcyB7IFJlc291cmNlTG9hZFN0YXRpc3RpY3M6Ok5vRXhp
c3RpbmdUaW1lc3RhbXAgfTsKKyAgICAKKyAgICBpbml0aWFsaXplU3RhdGVtZW50KG1fZ2V0TW9z
dFJlY2VudGx5VXBkYXRlZFRpbWVzdGFtcFN0YXRlbWVudCwgZ2V0TW9zdFJlY2VudGx5VXBkYXRl
ZFRpbWVzdGFtcFF1ZXJ5LCAiZ2V0TW9zdFJlY2VudGx5VXBkYXRlZFRpbWVzdGFtcCJfcyk7CiAK
LSAgICBpZiAobV9nZXRNb3N0UmVjZW50bHlVcGRhdGVkVGltZXN0YW1wU3RhdGVtZW50LmJpbmRJ
bnQoMSwgKnN1YkZyYW1lRG9tYWluSUQpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX2dldE1v
c3RSZWNlbnRseVVwZGF0ZWRUaW1lc3RhbXBTdGF0ZW1lbnQuYmluZEludCgyLCAqdG9wRnJhbWVE
b21haW5JRCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fZ2V0TW9zdFJlY2VudGx5VXBkYXRl
ZFRpbWVzdGFtcFN0YXRlbWVudC5iaW5kSW50KDMsICpzdWJGcmFtZURvbWFpbklEKSAhPSBTUUxJ
VEVfT0sKLSAgICAgICAgfHwgbV9nZXRNb3N0UmVjZW50bHlVcGRhdGVkVGltZXN0YW1wU3RhdGVt
ZW50LmJpbmRJbnQoNCwgKnRvcEZyYW1lRG9tYWluSUQpICE9IFNRTElURV9PSwotICAgICAgICB8
fCBtX2dldE1vc3RSZWNlbnRseVVwZGF0ZWRUaW1lc3RhbXBTdGF0ZW1lbnQuYmluZEludCg1LCAq
c3ViRnJhbWVEb21haW5JRCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fZ2V0TW9zdFJlY2Vu
dGx5VXBkYXRlZFRpbWVzdGFtcFN0YXRlbWVudC5iaW5kSW50KDYsICp0b3BGcmFtZURvbWFpbklE
KSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9nZXRNb3N0UmVjZW50bHlVcGRhdGVkVGltZXN0
YW1wU3RhdGVtZW50LmJpbmRJbnQoNywgKnN1YkZyYW1lRG9tYWluSUQpICE9IFNRTElURV9PSwot
ICAgICAgICB8fCBtX2dldE1vc3RSZWNlbnRseVVwZGF0ZWRUaW1lc3RhbXBTdGF0ZW1lbnQuYmlu
ZEludCg4LCAqdG9wRnJhbWVEb21haW5JRCkgIT0gU1FMSVRFX09LKSB7CisgICAgaWYgKG1fZ2V0
TW9zdFJlY2VudGx5VXBkYXRlZFRpbWVzdGFtcFN0YXRlbWVudC0+YmluZEludCgxLCAqc3ViRnJh
bWVEb21haW5JRCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1fZ2V0TW9zdFJlY2VudGx5VXBk
YXRlZFRpbWVzdGFtcFN0YXRlbWVudC0+YmluZEludCgyLCAqdG9wRnJhbWVEb21haW5JRCkgIT0g
U1FMSVRFX09LCisgICAgICAgIHx8IG1fZ2V0TW9zdFJlY2VudGx5VXBkYXRlZFRpbWVzdGFtcFN0
YXRlbWVudC0+YmluZEludCgzLCAqc3ViRnJhbWVEb21haW5JRCkgIT0gU1FMSVRFX09LCisgICAg
ICAgIHx8IG1fZ2V0TW9zdFJlY2VudGx5VXBkYXRlZFRpbWVzdGFtcFN0YXRlbWVudC0+YmluZElu
dCg0LCAqdG9wRnJhbWVEb21haW5JRCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1fZ2V0TW9z
dFJlY2VudGx5VXBkYXRlZFRpbWVzdGFtcFN0YXRlbWVudC0+YmluZEludCg1LCAqc3ViRnJhbWVE
b21haW5JRCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1fZ2V0TW9zdFJlY2VudGx5VXBkYXRl
ZFRpbWVzdGFtcFN0YXRlbWVudC0+YmluZEludCg2LCAqdG9wRnJhbWVEb21haW5JRCkgIT0gU1FM
SVRFX09LCisgICAgICAgIHx8IG1fZ2V0TW9zdFJlY2VudGx5VXBkYXRlZFRpbWVzdGFtcFN0YXRl
bWVudC0+YmluZEludCg3LCAqc3ViRnJhbWVEb21haW5JRCkgIT0gU1FMSVRFX09LCisgICAgICAg
IHx8IG1fZ2V0TW9zdFJlY2VudGx5VXBkYXRlZFRpbWVzdGFtcFN0YXRlbWVudC0+YmluZEludCg4
LCAqdG9wRnJhbWVEb21haW5JRCkgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpnZXRNb3N0UmVjZW50bHlVcGRhdGVkVGltZXN0YW1wIGZhaWxlZCB0
byBiaW5kLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFz
dEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0
dXJuIFNlY29uZHMgeyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpOb0V4aXN0aW5nVGltZXN0YW1w
ICB9OwogICAgIH0KLSAgICBpZiAobV9nZXRNb3N0UmVjZW50bHlVcGRhdGVkVGltZXN0YW1wU3Rh
dGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIHJlc2V0U3RhdGVtZW50KG1f
Z2V0TW9zdFJlY2VudGx5VXBkYXRlZFRpbWVzdGFtcFN0YXRlbWVudCk7CisgICAgaWYgKG1fZ2V0
TW9zdFJlY2VudGx5VXBkYXRlZFRpbWVzdGFtcFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9S
T1cpIHsKKyAgICAgICAgcmVzZXRTdGF0ZW1lbnQobV9nZXRNb3N0UmVjZW50bHlVcGRhdGVkVGlt
ZXN0YW1wU3RhdGVtZW50LmdldCgpKTsKICAgICAgICAgcmV0dXJuIFNlY29uZHMgeyBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzOjpOb0V4aXN0aW5nVGltZXN0YW1wICB9OwogICAgIH0KLSAgICBkb3Vi
bGUgbW9zdFJlY2VudGx5VXBkYXRlZFRpbWVzdGFtcCA9IG1fZ2V0TW9zdFJlY2VudGx5VXBkYXRl
ZFRpbWVzdGFtcFN0YXRlbWVudC5nZXRDb2x1bW5Eb3VibGUoMCk7Ci0gICAgcmVzZXRTdGF0ZW1l
bnQobV9nZXRNb3N0UmVjZW50bHlVcGRhdGVkVGltZXN0YW1wU3RhdGVtZW50KTsKKyAgICBkb3Vi
bGUgbW9zdFJlY2VudGx5VXBkYXRlZFRpbWVzdGFtcCA9IG1fZ2V0TW9zdFJlY2VudGx5VXBkYXRl
ZFRpbWVzdGFtcFN0YXRlbWVudC0+Z2V0Q29sdW1uRG91YmxlKDApOworICAgIHJlc2V0U3RhdGVt
ZW50KG1fZ2V0TW9zdFJlY2VudGx5VXBkYXRlZFRpbWVzdGFtcFN0YXRlbWVudC5nZXQoKSk7CiAg
ICAgcmV0dXJuIFNlY29uZHMgeyBtb3N0UmVjZW50bHlVcGRhdGVkVGltZXN0YW1wIH07CiB9CiAK
QEAgLTIxNzAsNyArMjE4Miw5IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OmlzR3JhbmRmYXRoZXJlZChjb25zdCBSZWdpc3RyYWJsZURvbWFpCiB7CiAgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICByZXR1cm4gcHJlZGljYXRlVmFsdWVGb3JE
b21haW4obV9pc0dyYW5kZmF0aGVyZWRTdGF0ZW1lbnQsIGRvbWFpbik7CisgICAgaW5pdGlhbGl6
ZVN0YXRlbWVudChtX2lzR3JhbmRmYXRoZXJlZFN0YXRlbWVudCwgaXNHcmFuZGZhdGhlcmVkUXVl
cnksICJpc0dyYW5kZmF0aGVyZWQiX3MpOworICAgIAorICAgIHJldHVybiBwcmVkaWNhdGVWYWx1
ZUZvckRvbWFpbihtX2lzR3JhbmRmYXRoZXJlZFN0YXRlbWVudC5nZXQoKSwgZG9tYWluKTsKIH0K
IAogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0U3ViZnJhbWVV
bmRlclRvcEZyYW1lRG9tYWluKGNvbnN0IFN1YkZyYW1lRG9tYWluJiBzdWJGcmFtZURvbWFpbiwg
Y29uc3QgVG9wRnJhbWVEb21haW4mIHRvcEZyYW1lRG9tYWluKQpAQCAtMjI1NSwyMiArMjI2OSwy
NCBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRUb3BGcmFt
ZVVuaXF1ZVJlZGlyZWN0RnJvbShjb25zdCBUbwogc3RkOjpwYWlyPFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpBZGRlZFJlY29yZCwgT3B0aW9uYWw8dW5zaWduZWQ+PiBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNz
Rm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikKIHsK
ICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICAKKyAgICBpbml0aWFsaXplU3Rh
dGVtZW50KG1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50LCBkb21haW5JREZyb21TdHJpbmdR
dWVyeSwgImVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluIl9zKTsK
IAotICAgIGlmIChtX2RvbWFpbklERnJvbVN0cmluZ1N0YXRlbWVudC5iaW5kVGV4dCgxLCBkb21h
aW4uc3RyaW5nKCkpICE9IFNRTElURV9PSykgeworICAgIGlmIChtX2RvbWFpbklERnJvbVN0cmlu
Z1N0YXRlbWVudC0+YmluZFRleHQoMSwgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0spIHsK
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0g
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmVuc3VyZVJlc291cmNlU3RhdGlz
dGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRl
fXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiB7IEFkZGVkUmVjb3JkOjpObywgMCB9OwogICAg
IH0KICAgICAKLSAgICBpZiAobV9kb21haW5JREZyb21TdHJpbmdTdGF0ZW1lbnQuc3RlcCgpID09
IFNRTElURV9ST1cpIHsKLSAgICAgICAgdW5zaWduZWQgZG9tYWluSUQgPSBtX2RvbWFpbklERnJv
bVN0cmluZ1N0YXRlbWVudC5nZXRDb2x1bW5JbnQoMCk7CisgICAgaWYgKG1fZG9tYWluSURGcm9t
U3RyaW5nU3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykgeworICAgICAgICB1bnNpZ25l
ZCBkb21haW5JRCA9IG1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50LT5nZXRDb2x1bW5JbnQo
MCk7CiAKLSAgICAgICAgaW50IHJlc2V0UmVzdWx0ID0gbV9kb21haW5JREZyb21TdHJpbmdTdGF0
ZW1lbnQucmVzZXQoKTsKKyAgICAgICAgaW50IHJlc2V0UmVzdWx0ID0gbV9kb21haW5JREZyb21T
dHJpbmdTdGF0ZW1lbnQtPnJlc2V0KCk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzZXRSZXN1
bHQsIHJlc2V0UmVzdWx0ID09IFNRTElURV9PSyk7CiAgICAgICAgIHJldHVybiB7IEFkZGVkUmVj
b3JkOjpObywgZG9tYWluSUQgfTsKICAgICB9CiAKLSAgICBpbnQgcmVzZXRSZXN1bHQgPSBtX2Rv
bWFpbklERnJvbVN0cmluZ1N0YXRlbWVudC5yZXNldCgpOworICAgIGludCByZXNldFJlc3VsdCA9
IG1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50LT5yZXNldCgpOwogICAgIEFTU0VSVF9VTlVT
RUQocmVzZXRSZXN1bHQsIHJlc2V0UmVzdWx0ID09IFNRTElURV9PSyk7CiAKICAgICBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzIG5ld09ic2VydmF0aW9uKGRvbWFpbik7CkBAIC0yMzAxLDE0ICsyMzE3
LDE2IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlbW92ZURh
dGFGb3JEb21haW4oY29uc3QgUmVnaXN0cmFibGVECiAgICAgYXV0byBkb21haW5JRFRvUmVtb3Zl
ID0gZG9tYWluSUQoZG9tYWluKTsKICAgICBpZiAoIWRvbWFpbklEVG9SZW1vdmUpCiAgICAgICAg
IHJldHVybjsKKyAgICAKKyAgICBpbml0aWFsaXplU3RhdGVtZW50KG1fcmVtb3ZlQWxsRGF0YVN0
YXRlbWVudCwgcmVtb3ZlQWxsRGF0YVF1ZXJ5LCAicmVtb3ZlRGF0YUZvckRvbWFpbiJfcyk7CiAK
LSAgICBpZiAobV9yZW1vdmVBbGxEYXRhU3RhdGVtZW50LmJpbmRJbnQoMSwgKmRvbWFpbklEVG9S
ZW1vdmUpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX3JlbW92ZUFsbERhdGFTdGF0ZW1lbnQu
c3RlcCgpICE9IFNRTElURV9ET05FKSB7CisgICAgaWYgKG1fcmVtb3ZlQWxsRGF0YVN0YXRlbWVu
dC0+YmluZEludCgxLCAqZG9tYWluSURUb1JlbW92ZSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8
IG1fcmVtb3ZlQWxsRGF0YVN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7CiAgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZW1vdmVEYXRhRm9yRG9tYWluIGZhaWxl
ZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJv
ck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogICAgIAotICAg
IHJlc2V0U3RhdGVtZW50KG1fcmVtb3ZlQWxsRGF0YVN0YXRlbWVudCk7CisgICAgcmVzZXRTdGF0
ZW1lbnQobV9yZW1vdmVBbGxEYXRhU3RhdGVtZW50LmdldCgpKTsKIH0KIAogdm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXIoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMjQ5MCwxNCArMjUwOCwxNiBAQCBWZWN0b3I8
dW5zaWduZWQ+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpmaW5kRXhwaXJl
ZFVzZXJJbnRlcmFjdGlvbgogICAgIE9wdGlvbmFsPFNlY29uZHM+IGV4cGlyYXRpb25EYXRlVGlt
ZSA9IHN0YXRpc3RpY3NFcGlyYXRpb25UaW1lKCk7CiAgICAgaWYgKCFleHBpcmF0aW9uRGF0ZVRp
bWUpCiAgICAgICAgIHJldHVybiByZXN1bHRzOworICAgIAorICAgIGluaXRpYWxpemVTdGF0ZW1l
bnQobV9maW5kRXhwaXJlZFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudCwgZmluZEV4cGlyZWRVc2Vy
SW50ZXJhY3Rpb25RdWVyeSwgImZpbmRFeHBpcmVkVXNlckludGVyYWN0aW9ucyJfcyk7CiAKLSAg
ICBpZiAobV9maW5kRXhwaXJlZFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudC5iaW5kRG91YmxlKDEs
IGV4cGlyYXRpb25EYXRlVGltZS52YWx1ZSgpLnZhbHVlKCkpICE9IFNRTElURV9PSykKKyAgICBp
ZiAobV9maW5kRXhwaXJlZFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudC0+YmluZERvdWJsZSgxLCBl
eHBpcmF0aW9uRGF0ZVRpbWUudmFsdWUoKS52YWx1ZSgpKSAhPSBTUUxJVEVfT0spCiAgICAgICAg
IHJldHVybiByZXN1bHRzOwogCi0gICAgd2hpbGUgKG1fZmluZEV4cGlyZWRVc2VySW50ZXJhY3Rp
b25TdGF0ZW1lbnQuc3RlcCgpID09IFNRTElURV9ST1cpCi0gICAgICAgIHJlc3VsdHMuYXBwZW5k
KG1fZmluZEV4cGlyZWRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDApKTsK
KyAgICB3aGlsZSAobV9maW5kRXhwaXJlZFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudC0+c3RlcCgp
ID09IFNRTElURV9ST1cpCisgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fZmluZEV4cGlyZWRVc2Vy
SW50ZXJhY3Rpb25TdGF0ZW1lbnQtPmdldENvbHVtbkludCgwKSk7CiAKLSAgICBpbnQgcmVzZXRS
ZXN1bHQgPSBtX2ZpbmRFeHBpcmVkVXNlckludGVyYWN0aW9uU3RhdGVtZW50LnJlc2V0KCk7Cisg
ICAgaW50IHJlc2V0UmVzdWx0ID0gbV9maW5kRXhwaXJlZFVzZXJJbnRlcmFjdGlvblN0YXRlbWVu
dC0+cmVzZXQoKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc2V0UmVzdWx0LCByZXNldFJlc3VsdCA9
PSBTUUxJVEVfT0spOwogCiAgICAgcmV0dXJuIHJlc3VsdHM7CkBAIC0yNjU5LDEwICsyNjc5LDEy
IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnBydW5lU3RhdGlz
dGljc0lmTmVlZGVkKCkKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIHVu
c2lnbmVkIGNvdW50ID0gMDsKLSAgICBpZiAobV9vYnNlcnZlZERvbWFpbkNvdW50LnN0ZXAoKSA9
PSBTUUxJVEVfUk9XKQotICAgICAgICBjb3VudCA9IG1fb2JzZXJ2ZWREb21haW5Db3VudC5nZXRD
b2x1bW5JbnQoMCk7CisgICAgaW5pdGlhbGl6ZVN0YXRlbWVudChtX29ic2VydmVkRG9tYWluQ291
bnRTdGF0ZW1lbnQsIG9ic2VydmVkRG9tYWluQ291bnRRdWVyeSwgInBydW5lU3RhdGlzdGljc0lm
TmVlZGVkIl9zKTsKKyAgICAKKyAgICBpZiAobV9vYnNlcnZlZERvbWFpbkNvdW50U3RhdGVtZW50
LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykKKyAgICAgICAgY291bnQgPSBtX29ic2VydmVkRG9tYWlu
Q291bnRTdGF0ZW1lbnQtPmdldENvbHVtbkludCgwKTsKIAotICAgIGludCByZXNldFJlc3VsdCA9
IG1fb2JzZXJ2ZWREb21haW5Db3VudC5yZXNldCgpOworICAgIGludCByZXNldFJlc3VsdCA9IG1f
b2JzZXJ2ZWREb21haW5Db3VudFN0YXRlbWVudC0+cmVzZXQoKTsKICAgICBBU1NFUlRfVU5VU0VE
KHJlc2V0UmVzdWx0LCByZXNldFJlc3VsdCA9PSBTUUxJVEVfT0spOwogCiAgICAgaWYgKGNvdW50
IDw9IHBhcmFtZXRlcnMoKS5tYXhTdGF0aXN0aWNzRW50cmllcykKQEAgLTI2OTksMTYgKzI3MjEs
MTggQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJ1bmVTdGF0
aXN0aWNzSWZOZWVkZWQoKQogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6dXBkYXRlTGFzdFNlZW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgV2FsbFRp
bWUgbGFzdFNlZW4pCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgCisg
ICAgaW5pdGlhbGl6ZVN0YXRlbWVudChtX3VwZGF0ZUxhc3RTZWVuU3RhdGVtZW50LCB1cGRhdGVM
YXN0U2VlblF1ZXJ5LCAidXBkYXRlTGFzdFNlZW4iX3MpOwogCi0gICAgaWYgKG1fdXBkYXRlTGFz
dFNlZW5TdGF0ZW1lbnQuYmluZERvdWJsZSgxLCBsYXN0U2Vlbi5zZWNvbmRzU2luY2VFcG9jaCgp
LnZhbHVlKCkpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX3VwZGF0ZUxhc3RTZWVuU3RhdGVt
ZW50LmJpbmRUZXh0KDIsIGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8
IG1fdXBkYXRlTGFzdFNlZW5TdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ET05FKSB7CisgICAg
aWYgKG1fdXBkYXRlTGFzdFNlZW5TdGF0ZW1lbnQtPmJpbmREb3VibGUoMSwgbGFzdFNlZW4uc2Vj
b25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV91cGRh
dGVMYXN0U2VlblN0YXRlbWVudC0+YmluZFRleHQoMiwgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJ
VEVfT0sKKyAgICAgICAgfHwgbV91cGRhdGVMYXN0U2VlblN0YXRlbWVudC0+c3RlcCgpICE9IFNR
TElURV9ET05FKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNz
aW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVM
YXN0U2VlbiBmYWlsZWQgdG8gYmluZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlz
LCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgaW50IHJlc2V0UmVzdWx0ID0g
bV91cGRhdGVMYXN0U2VlblN0YXRlbWVudC5yZXNldCgpOworICAgIGludCByZXNldFJlc3VsdCA9
IG1fdXBkYXRlTGFzdFNlZW5TdGF0ZW1lbnQtPnJlc2V0KCk7CiAgICAgQVNTRVJUX1VOVVNFRChy
ZXNldFJlc3VsdCwgcmVzZXRSZXN1bHQgPT0gU1FMSVRFX09LKTsKIH0KIApAQCAtMjc2MCwxNiAr
Mjc4NCwxOCBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRW
ZXJ5UHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cgogdm9pZCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6dXBkYXRlRGF0YVJlY29yZHNSZW1vdmVkKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBkb21haW4sIGludCB2YWx1ZSkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKKyAgICAKKyAgICBpbml0aWFsaXplU3RhdGVtZW50KG1fdXBkYXRlRGF0YVJl
Y29yZHNSZW1vdmVkU3RhdGVtZW50LCB1cGRhdGVEYXRhUmVjb3Jkc1JlbW92ZWRRdWVyeSwgInVw
ZGF0ZURhdGFSZWNvcmRzUmVtb3ZlZCJfcyk7CiAKLSAgICBpZiAobV91cGRhdGVEYXRhUmVjb3Jk
c1JlbW92ZWRTdGF0ZW1lbnQuYmluZEludCgxLCB2YWx1ZSkgIT0gU1FMSVRFX09LCi0gICAgICAg
IHx8IG1fdXBkYXRlRGF0YVJlY29yZHNSZW1vdmVkU3RhdGVtZW50LmJpbmRUZXh0KDIsIGRvbWFp
bi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fdXBkYXRlRGF0YVJlY29yZHNS
ZW1vdmVkU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgeworICAgIGlmIChtX3VwZGF0
ZURhdGFSZWNvcmRzUmVtb3ZlZFN0YXRlbWVudC0+YmluZEludCgxLCB2YWx1ZSkgIT0gU1FMSVRF
X09LCisgICAgICAgIHx8IG1fdXBkYXRlRGF0YVJlY29yZHNSZW1vdmVkU3RhdGVtZW50LT5iaW5k
VGV4dCgyLCBkb21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSworICAgICAgICB8fCBtX3VwZGF0
ZURhdGFSZWNvcmRzUmVtb3ZlZFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7CiAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVEYXRhUmVjb3Jkc1JlbW92
ZWQgZmFpbGVkIHRvIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9k
YXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaW50IHJlc2V0UmVzdWx0ID0gbV91cGRhdGVE
YXRhUmVjb3Jkc1JlbW92ZWRTdGF0ZW1lbnQucmVzZXQoKTsKKyAgICBpbnQgcmVzZXRSZXN1bHQg
PSBtX3VwZGF0ZURhdGFSZWNvcmRzUmVtb3ZlZFN0YXRlbWVudC0+cmVzZXQoKTsKICAgICBBU1NF
UlRfVU5VU0VEKHJlc2V0UmVzdWx0LCByZXNldFJlc3VsdCA9PSBTUUxJVEVfT0spOwogfQogCkBA
IC0yODI1LDE2ICsyODUxLDE4IEBAIFN0cmluZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6Z2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKHVuc2lnbmVkCiB7CiAgICAgYXV0
byByZXN1bHQgPSBlbXB0eVN0cmluZygpOwogICAgIAotICAgIGlmIChtX2RvbWFpblN0cmluZ0Zy
b21Eb21haW5JRFN0YXRlbWVudC5iaW5kSW50KDEsIGRvbWFpbklEKSAhPSBTUUxJVEVfT0spIHsK
KyAgICBpbml0aWFsaXplU3RhdGVtZW50KG1fZG9tYWluU3RyaW5nRnJvbURvbWFpbklEU3RhdGVt
ZW50LCBkb21haW5TdHJpbmdGcm9tRG9tYWluSURRdWVyeSwgImdldERvbWFpblN0cmluZ0Zyb21E
b21haW5JRCJfcyk7CisgICAgCisgICAgaWYgKG1fZG9tYWluU3RyaW5nRnJvbURvbWFpbklEU3Rh
dGVtZW50LT5iaW5kSW50KDEsIGRvbWFpbklEKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldERvbWFpblN0cmluZ0Zyb21Eb21haW5JRC4gU3Rh
dGVtZW50IGZhaWxlZCB0byBwcmVwYXJlIG9yIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0
ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKLSAgICBp
ZiAobV9kb21haW5TdHJpbmdGcm9tRG9tYWluSURTdGF0ZW1lbnQuc3RlcCgpID09IFNRTElURV9S
T1cpCi0gICAgICAgIHJlc3VsdCA9IG1fZG9tYWluU3RyaW5nRnJvbURvbWFpbklEU3RhdGVtZW50
LmdldENvbHVtblRleHQoMCk7CisgICAgaWYgKG1fZG9tYWluU3RyaW5nRnJvbURvbWFpbklEU3Rh
dGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykKKyAgICAgICAgcmVzdWx0ID0gbV9kb21haW5T
dHJpbmdGcm9tRG9tYWluSURTdGF0ZW1lbnQtPmdldENvbHVtblRleHQoMCk7CiAgICAgCi0gICAg
cmVzZXRTdGF0ZW1lbnQobV9kb21haW5TdHJpbmdGcm9tRG9tYWluSURTdGF0ZW1lbnQpOworICAg
IHJlc2V0U3RhdGVtZW50KG1fZG9tYWluU3RyaW5nRnJvbURvbWFpbklEU3RhdGVtZW50LmdldCgp
KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yOTAxLDggKzI5MjksMTAgQEAgc3RhdGlj
IGJvb2wgaGFzSGFkUmVjZW50VXNlckludGVyYWN0aW9uKFdURjo6U2Vjb25kcyBpbnRlcmFjdGlv
blRpbWVTZWNvbmRzKQogCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpyZXNvdXJjZVRvU3RyaW5nKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IFN0cmluZyYg
ZG9tYWluKSBjb25zdAogewotICAgIGlmIChtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0
YXRlbWVudC5iaW5kVGV4dCgxLCBkb21haW4pICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX2dl
dFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX1JPVykg
eworICAgIGluaXRpYWxpemVTdGF0ZW1lbnQobV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVT
dGF0ZW1lbnQsIGdldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVF1ZXJ5LCAicmVzb3VyY2VUb1N0
cmluZyJfcyk7CisgICAgCisgICAgaWYgKG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3Rh
dGVtZW50LT5iaW5kVGV4dCgxLCBkb21haW4pICE9IFNRTElURV9PSworICAgICAgICB8fCBtX2dl
dFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ST1cp
IHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVw
IC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlc291cmNlVG9TdHJpbmcu
IFN0YXRlbWVudCBmYWlsZWQgdG8gYmluZCBvciBkb21haW4gd2FzIG5vdCBmb3VuZCwgZXJyb3Ig
bWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTI5MTMs
MTUgKzI5NDMsMTUgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
cmVzb3VyY2VUb1N0cmluZyhTdHJpbmdCdWlsZGVyJiBidWlsZGUKICAgICBidWlsZGVyLmFwcGVu
ZCgnXG4nKTsKICAgICAKICAgICAvLyBVc2VyIGludGVyYWN0aW9uCi0gICAgYXBwZW5kQm9vbGVh
bihidWlsZGVyLCAiaGFkVXNlckludGVyYWN0aW9uIiwgbV9nZXRSZXNvdXJjZURhdGFCeURvbWFp
bk5hbWVTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KEhhZFVzZXJJbnRlcmFjdGlvbkluZGV4KSk7Cisg
ICAgYXBwZW5kQm9vbGVhbihidWlsZGVyLCAiaGFkVXNlckludGVyYWN0aW9uIiwgbV9nZXRSZXNv
dXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQtPmdldENvbHVtbkludChIYWRVc2VySW50ZXJh
Y3Rpb25JbmRleCkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwogICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiICAgIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb246ICIpOwotICAgIGlmICho
YXNIYWRSZWNlbnRVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyhtX2dldFJlc291cmNlRGF0YUJ5RG9t
YWluTmFtZVN0YXRlbWVudC5nZXRDb2x1bW5Eb3VibGUoTW9zdFJlY2VudFVzZXJJbnRlcmFjdGlv
blRpbWVJbmRleCkpKSkKKyAgICBpZiAoaGFzSGFkUmVjZW50VXNlckludGVyYWN0aW9uKFNlY29u
ZHMobV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQtPmdldENvbHVtbkRvdWJs
ZShNb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZUluZGV4KSkpKQogICAgICAgICBidWlsZGVy
LmFwcGVuZExpdGVyYWwoIndpdGhpbiAyNCBob3VycyIpOwogICAgIGVsc2UKICAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCItMSIpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwotICAg
IGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImdyYW5kZmF0aGVyZWQiLCBtX2dldFJlc291cmNlRGF0
YUJ5RG9tYWluTmFtZVN0YXRlbWVudC5nZXRDb2x1bW5JbnQoR3JhbmRmYXRoZXJlZEluZGV4KSk7
CisgICAgYXBwZW5kQm9vbGVhbihidWlsZGVyLCAiZ3JhbmRmYXRoZXJlZCIsIG1fZ2V0UmVzb3Vy
Y2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoR3JhbmRmYXRoZXJlZElu
ZGV4KSk7CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAKICAgICAvLyBTdG9yYWdlIGFjY2Vz
cwpAQCAtMjkzNCw3ICsyOTY0LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6cmVzb3VyY2VUb1N0cmluZyhTdHJpbmdCdWlsZGVyJiBidWlsZGUKICAgICBhcHBl
bmRTdWJTdGF0aXN0aWNMaXN0KGJ1aWxkZXIsICJUb3BGcmFtZUxpbmtEZWNvcmF0aW9uc0Zyb20i
LCBkb21haW4pOwogICAgIGFwcGVuZFN1YlN0YXRpc3RpY0xpc3QoYnVpbGRlciwgIlRvcEZyYW1l
TG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHMiLCBkb21haW4pOwogCi0gICAgYXBwZW5kQm9vbGVhbihi
dWlsZGVyLCAiSXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCIsIG1fZ2V0UmVz
b3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LmdldENvbHVtbkludChJc1NjaGVkdWxlZEZv
ckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsSW5kZXgpKTsKKyAgICBhcHBlbmRCb29sZWFuKGJ1aWxk
ZXIsICJJc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsIiwgbV9nZXRSZXNvdXJj
ZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQtPmdldENvbHVtbkludChJc1NjaGVkdWxlZEZvckFs
bEJ1dENvb2tpZURhdGFSZW1vdmFsSW5kZXgpKTsKICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsK
IAogICAgIC8vIFN1YmZyYW1lIHN0YXRzCkBAIC0yOTQ2LDU0ICsyOTc2LDYxIEBAIHZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlc291cmNlVG9TdHJpbmcoU3RyaW5n
QnVpbGRlciYgYnVpbGRlCiAgICAgYXBwZW5kU3ViU3RhdGlzdGljTGlzdChidWlsZGVyLCAiU3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tIiwgZG9tYWluKTsKIAogICAgIC8vIFByZXZhbGVu
dCBSZXNvdXJjZQotICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImlzUHJldmFsZW50UmVzb3Vy
Y2UiLCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC5nZXRDb2x1bW5JbnQo
SXNQcmV2YWxlbnRJbmRleCkpOworICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImlzUHJldmFs
ZW50UmVzb3VyY2UiLCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC0+Z2V0
Q29sdW1uSW50KElzUHJldmFsZW50SW5kZXgpKTsKICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsK
LSAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSIsIG1f
Z2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LmdldENvbHVtbkludChJc1ZlcnlQ
cmV2YWxlbnRJbmRleCkpOworICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImlzVmVyeVByZXZh
bGVudFJlc291cmNlIiwgbV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQtPmdl
dENvbHVtbkludChJc1ZlcnlQcmV2YWxlbnRJbmRleCkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdc
bicpOwogICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiICAgIGRhdGFSZWNvcmRzUmVtb3ZlZDog
Iik7Ci0gICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5h
bWVTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KERhdGFSZWNvcmRzUmVtb3ZlZEluZGV4KSk7CisgICAg
YnVpbGRlci5hcHBlbmROdW1iZXIobV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1l
bnQtPmdldENvbHVtbkludChEYXRhUmVjb3Jkc1JlbW92ZWRJbmRleCkpOwogICAgIGJ1aWxkZXIu
YXBwZW5kKCdcbicpOwogCi0gICAgcmVzZXRTdGF0ZW1lbnQobV9nZXRSZXNvdXJjZURhdGFCeURv
bWFpbk5hbWVTdGF0ZW1lbnQpOworICAgIHJlc2V0U3RhdGVtZW50KG1fZ2V0UmVzb3VyY2VEYXRh
QnlEb21haW5OYW1lU3RhdGVtZW50LmdldCgpKTsKIH0KIAogYm9vbCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWluSURFeGlzdHNJbkRhdGFiYXNlKGludCBkb21haW5J
RCkKIHsKLSAgICBpZiAobV9saW5rRGVjb3JhdGlvbkV4aXN0c1N0YXRlbWVudC5iaW5kSW50KDEs
IGRvbWFpbklEKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9saW5rRGVjb3JhdGlvbkV4aXN0
c1N0YXRlbWVudC5iaW5kSW50KDIsIGRvbWFpbklEKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwg
bV9zY3JpcHRMb2FkRXhpc3RzU3RhdGVtZW50LmJpbmRJbnQoMSwgZG9tYWluSUQpICE9IFNRTElU
RV9PSwotICAgICAgICB8fCBtX3NjcmlwdExvYWRFeGlzdHNTdGF0ZW1lbnQuYmluZEludCgyLCBk
b21haW5JRCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fc3ViRnJhbWVFeGlzdHNTdGF0ZW1l
bnQuYmluZEludCgxLCBkb21haW5JRCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fc3ViRnJh
bWVFeGlzdHNTdGF0ZW1lbnQuYmluZEludCgyLCBkb21haW5JRCkgIT0gU1FMSVRFX09LCi0gICAg
ICAgIHx8IG1fc3ViUmVzb3VyY2VFeGlzdHNTdGF0ZW1lbnQuYmluZEludCgxLCBkb21haW5JRCkg
IT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fc3ViUmVzb3VyY2VFeGlzdHNTdGF0ZW1lbnQuYmlu
ZEludCgyLCBkb21haW5JRCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fdW5pcXVlUmVkaXJl
Y3RFeGlzdHNTdGF0ZW1lbnQuYmluZEludCgxLCBkb21haW5JRCkgIT0gU1FMSVRFX09LCi0gICAg
ICAgIHx8IG1fdW5pcXVlUmVkaXJlY3RFeGlzdHNTdGF0ZW1lbnQuYmluZEludCgyLCBkb21haW5J
RCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fb2JzZXJ2ZWREb21haW5zRXhpc3RzU3RhdGVt
ZW50LmJpbmRJbnQoMSwgZG9tYWluSUQpICE9IFNRTElURV9PSykgeworICAgIGluaXRpYWxpemVT
dGF0ZW1lbnQobV9saW5rRGVjb3JhdGlvbkV4aXN0c1N0YXRlbWVudCwgbGlua0RlY29yYXRpb25F
eGlzdHNRdWVyeSwgImRvbWFpbklERXhpc3RzSW5EYXRhYmFzZSJfcyk7CisgICAgaW5pdGlhbGl6
ZVN0YXRlbWVudChtX3NjcmlwdExvYWRFeGlzdHNTdGF0ZW1lbnQsIHNjcmlwdExvYWRFeGlzdHNR
dWVyeSwgImRvbWFpbklERXhpc3RzSW5EYXRhYmFzZSJfcyk7CisgICAgaW5pdGlhbGl6ZVN0YXRl
bWVudChtX3N1YkZyYW1lRXhpc3RzU3RhdGVtZW50LCBzdWJGcmFtZUV4aXN0c1F1ZXJ5LCAiZG9t
YWluSURFeGlzdHNJbkRhdGFiYXNlIl9zKTsKKyAgICBpbml0aWFsaXplU3RhdGVtZW50KG1fc3Vi
UmVzb3VyY2VFeGlzdHNTdGF0ZW1lbnQsIHN1YlJlc291cmNlRXhpc3RzUXVlcnksICJkb21haW5J
REV4aXN0c0luRGF0YWJhc2UiX3MpOworICAgIGluaXRpYWxpemVTdGF0ZW1lbnQobV91bmlxdWVS
ZWRpcmVjdEV4aXN0c1N0YXRlbWVudCwgdW5pcXVlUmVkaXJlY3RFeGlzdHNRdWVyeSwgImRvbWFp
bklERXhpc3RzSW5EYXRhYmFzZSJfcyk7CisgICAgaW5pdGlhbGl6ZVN0YXRlbWVudChtX29ic2Vy
dmVkRG9tYWluc0V4aXN0c1N0YXRlbWVudCwgb2JzZXJ2ZWREb21haW5zRXhpc3RzUXVlcnksICJk
b21haW5JREV4aXN0c0luRGF0YWJhc2UiX3MpOworICAgIAorICAgIGlmIChtX2xpbmtEZWNvcmF0
aW9uRXhpc3RzU3RhdGVtZW50LT5iaW5kSW50KDEsIGRvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAg
ICAgICAgfHwgbV9saW5rRGVjb3JhdGlvbkV4aXN0c1N0YXRlbWVudC0+YmluZEludCgyLCBkb21h
aW5JRCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1fc2NyaXB0TG9hZEV4aXN0c1N0YXRlbWVu
dC0+YmluZEludCgxLCBkb21haW5JRCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1fc2NyaXB0
TG9hZEV4aXN0c1N0YXRlbWVudC0+YmluZEludCgyLCBkb21haW5JRCkgIT0gU1FMSVRFX09LCisg
ICAgICAgIHx8IG1fc3ViRnJhbWVFeGlzdHNTdGF0ZW1lbnQtPmJpbmRJbnQoMSwgZG9tYWluSUQp
ICE9IFNRTElURV9PSworICAgICAgICB8fCBtX3N1YkZyYW1lRXhpc3RzU3RhdGVtZW50LT5iaW5k
SW50KDIsIGRvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9zdWJSZXNvdXJjZUV4
aXN0c1N0YXRlbWVudC0+YmluZEludCgxLCBkb21haW5JRCkgIT0gU1FMSVRFX09LCisgICAgICAg
IHx8IG1fc3ViUmVzb3VyY2VFeGlzdHNTdGF0ZW1lbnQtPmJpbmRJbnQoMiwgZG9tYWluSUQpICE9
IFNRTElURV9PSworICAgICAgICB8fCBtX3VuaXF1ZVJlZGlyZWN0RXhpc3RzU3RhdGVtZW50LT5i
aW5kSW50KDEsIGRvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV91bmlxdWVSZWRp
cmVjdEV4aXN0c1N0YXRlbWVudC0+YmluZEludCgyLCBkb21haW5JRCkgIT0gU1FMSVRFX09LCisg
ICAgICAgIHx8IG1fb2JzZXJ2ZWREb21haW5zRXhpc3RzU3RhdGVtZW50LT5iaW5kSW50KDEsIGRv
bWFpbklEKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxM
T1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OmRvbWFpbklERXhpc3RzSW5EYXRhYmFzZSBmYWlsZWQgdG8gYmluZCwgZXJyb3IgbWVzc2Fn
ZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
LSAgICBpZiAobV9saW5rRGVjb3JhdGlvbkV4aXN0c1N0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRF
X1JPVwotICAgICAgICB8fCBtX3NjcmlwdExvYWRFeGlzdHNTdGF0ZW1lbnQuc3RlcCgpICE9IFNR
TElURV9ST1cKLSAgICAgICAgfHwgbV9zdWJGcmFtZUV4aXN0c1N0YXRlbWVudC5zdGVwKCkgIT0g
U1FMSVRFX1JPVwotICAgICAgICB8fCBtX3N1YlJlc291cmNlRXhpc3RzU3RhdGVtZW50LnN0ZXAo
KSAhPSBTUUxJVEVfUk9XCi0gICAgICAgIHx8IG1fdW5pcXVlUmVkaXJlY3RFeGlzdHNTdGF0ZW1l
bnQuc3RlcCgpICE9IFNRTElURV9ST1cKLSAgICAgICAgfHwgbV9vYnNlcnZlZERvbWFpbnNFeGlz
dHNTdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ST1cpIHsKKyAgICBpZiAobV9saW5rRGVjb3Jh
dGlvbkV4aXN0c1N0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ST1cKKyAgICAgICAgfHwgbV9z
Y3JpcHRMb2FkRXhpc3RzU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX1JPVworICAgICAgICB8
fCBtX3N1YkZyYW1lRXhpc3RzU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX1JPVworICAgICAg
ICB8fCBtX3N1YlJlc291cmNlRXhpc3RzU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX1JPVwor
ICAgICAgICB8fCBtX3VuaXF1ZVJlZGlyZWN0RXhpc3RzU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FM
SVRFX1JPVworICAgICAgICB8fCBtX29ic2VydmVkRG9tYWluc0V4aXN0c1N0YXRlbWVudC0+c3Rl
cCgpICE9IFNRTElURV9ST1cpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dF
RChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmRvbWFpbklERXhpc3RzSW5EYXRhYmFzZSBmYWlsZWQgdG8gc3RlcCwgZXJyb3IgbWVzc2FnZTog
JXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAg
Ci0gICAgcmVzZXRTdGF0ZW1lbnQobV9saW5rRGVjb3JhdGlvbkV4aXN0c1N0YXRlbWVudCk7Ci0g
ICAgcmVzZXRTdGF0ZW1lbnQobV9zY3JpcHRMb2FkRXhpc3RzU3RhdGVtZW50KTsKLSAgICByZXNl
dFN0YXRlbWVudChtX3N1YkZyYW1lRXhpc3RzU3RhdGVtZW50KTsKLSAgICByZXNldFN0YXRlbWVu
dChtX3N1YlJlc291cmNlRXhpc3RzU3RhdGVtZW50KTsKLSAgICByZXNldFN0YXRlbWVudChtX3Vu
aXF1ZVJlZGlyZWN0RXhpc3RzU3RhdGVtZW50KTsKLSAgICByZXNldFN0YXRlbWVudChtX29ic2Vy
dmVkRG9tYWluc0V4aXN0c1N0YXRlbWVudCk7CisgICAgcmVzZXRTdGF0ZW1lbnQobV9saW5rRGVj
b3JhdGlvbkV4aXN0c1N0YXRlbWVudC5nZXQoKSk7CisgICAgcmVzZXRTdGF0ZW1lbnQobV9zY3Jp
cHRMb2FkRXhpc3RzU3RhdGVtZW50LmdldCgpKTsKKyAgICByZXNldFN0YXRlbWVudChtX3N1YkZy
YW1lRXhpc3RzU3RhdGVtZW50LmdldCgpKTsKKyAgICByZXNldFN0YXRlbWVudChtX3N1YlJlc291
cmNlRXhpc3RzU3RhdGVtZW50LmdldCgpKTsKKyAgICByZXNldFN0YXRlbWVudChtX3VuaXF1ZVJl
ZGlyZWN0RXhpc3RzU3RhdGVtZW50LmdldCgpKTsKKyAgICByZXNldFN0YXRlbWVudChtX29ic2Vy
dmVkRG9tYWluc0V4aXN0c1N0YXRlbWVudC5nZXQoKSk7CiAKLSAgICByZXR1cm4gbV9saW5rRGVj
b3JhdGlvbkV4aXN0c1N0YXRlbWVudC5nZXRDb2x1bW5JbnQoMCkgfHwgbV9zY3JpcHRMb2FkRXhp
c3RzU3RhdGVtZW50LmdldENvbHVtbkludCgwKSB8fCBtX3N1YkZyYW1lRXhpc3RzU3RhdGVtZW50
LmdldENvbHVtbkludCgwKSB8fCBtX3N1YlJlc291cmNlRXhpc3RzU3RhdGVtZW50LmdldENvbHVt
bkludCgwKSB8fCBtX3VuaXF1ZVJlZGlyZWN0RXhpc3RzU3RhdGVtZW50LmdldENvbHVtbkludCgw
KSB8fCBtX29ic2VydmVkRG9tYWluc0V4aXN0c1N0YXRlbWVudC5nZXRDb2x1bW5JbnQoMCk7Cisg
ICAgcmV0dXJuIG1fbGlua0RlY29yYXRpb25FeGlzdHNTdGF0ZW1lbnQtPmdldENvbHVtbkludCgw
KSB8fCBtX3NjcmlwdExvYWRFeGlzdHNTdGF0ZW1lbnQtPmdldENvbHVtbkludCgwKSB8fCBtX3N1
YkZyYW1lRXhpc3RzU3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMCkgfHwgbV9zdWJSZXNvdXJjZUV4
aXN0c1N0YXRlbWVudC0+Z2V0Q29sdW1uSW50KDApIHx8IG1fdW5pcXVlUmVkaXJlY3RFeGlzdHNT
dGF0ZW1lbnQtPmdldENvbHVtbkludCgwKSB8fCBtX29ic2VydmVkRG9tYWluc0V4aXN0c1N0YXRl
bWVudC0+Z2V0Q29sdW1uSW50KDApOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKaW5kZXgg
YjQ3ZDUyZGYyYjRhNWU4ZGU4NzE2NDEyZTFhYWQ1MzkwN2FkM2Q5Yi4uZTZhYzYyY2M3NDg5NWJm
MTRlZjFkMTZjYTJhZWY5ZjBlMTgyZmFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKQEAgLTg0LDYgKzg0LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgbWVyZ2VTdGF0aXN0aWNzKFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYm
KSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikg
b3ZlcnJpZGU7CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBj
bG9zZSgpOwogCiAgICAgVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhp
cmRQYXJ0eURhdGE+IGFnZ3JlZ2F0ZWRUaGlyZFBhcnR5RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIHZvaWQgdXBkYXRlQ29va2llQmxvY2tpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KSBvdmVycmlkZTsKQEAgLTE0OCw2ICsxNDksOSBAQCBwcml2YXRlOgogICAgIHZvaWQgZW5hYmxl
Rm9yZWlnbktleXMoKTsKICAgICBib29sIGlzTWlncmF0aW9uTmVjZXNzYXJ5KCk7CiAgICAgdm9p
ZCBtaWdyYXRlRGF0YVRvTmV3VGFibGVzSWZOZWNlc3NhcnkoKTsKKyAgICB2b2lkIGRlc3Ryb3lT
dGF0ZW1lbnRzKCk7CisgICAgdm9pZCBpbml0aWFsaXplU3RhdGVtZW50KHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+JiwgY29uc3QgU3RyaW5nLCBjb25zdCBTdHJpbmcm
KSBjb25zdDsKKwogICAgIGJvb2wgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBUb3BGcmFtZURvbWFp
biYsIGNvbnN0IFN1YkZyYW1lRG9tYWluJikgY29uc3Q7CiAgICAgVmVjdG9yPFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+
IGdldFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9tYWlucyh1bnNpZ25lZCwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKICAgICB2b2lkIG9wZW5BbmRVcGRhdGVT
Y2hlbWFJZk5lY2Vzc2FyeSgpOwpAQCAtMTU1LDcgKzE1OSw3IEBAIHByaXZhdGU6CiAgICAgU3Ry
aW5nIGdldFN1YlN0YXRpc3RpY1N0YXRlbWVudChjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICB2
b2lkIGFwcGVuZFN1YlN0YXRpc3RpY0xpc3QoU3RyaW5nQnVpbGRlciYsIGNvbnN0IFN0cmluZyYg
dGFibGVOYW1lLCBjb25zdCBTdHJpbmcmIGRvbWFpbikgY29uc3Q7CiAgICAgdm9pZCBtZXJnZVN0
YXRpc3RpYyhjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7Ci0gICAgdm9pZCBtZXJnZShX
ZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQmLCBjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7
CisgICAgdm9pZCBtZXJnZShXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQqLCBjb25zdCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzJik7CiAgICAgdm9pZCBjbGVhckRhdGFiYXNlQ29udGVudHMoKTsKICAg
ICB1bnNpZ25lZCBnZXROdW1iZXJPZlByZXZhbGVudFJlc291cmNlcygpIGNvbnN0OwogICAgIHVu
c2lnbmVkIGdldE51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVJKCkgY29uc3Q7CkBAIC0x
NjgsNyArMTcyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGluc2VydERvbWFpblJlbGF0aW9uc2hp
cHMoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOwogICAgIHZvaWQgaW5zZXJ0RG9tYWlu
UmVsYXRpb25zaGlwTGlzdChjb25zdCBTdHJpbmcmLCBjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxl
RG9tYWluPiYsIHVuc2lnbmVkKTsKICAgICBib29sIGluc2VydERvbWFpblJlbGF0aW9uc2hpcChX
ZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQmLCB1bnNpZ25lZCBkb21haW5JRCwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluKTsKLSAgICBib29sIHJlbGF0aW9uc2hpcEV4aXN0
cyhXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQmLCBPcHRpb25hbDx1bnNpZ25lZD4gZmlyc3REb21h
aW5JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHNlY29uZERvbWFpbikgY29uc3Q7CisgICAg
Ym9vbCByZWxhdGlvbnNoaXBFeGlzdHMoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50KiwgT3B0aW9u
YWw8dW5zaWduZWQ+IGZpcnN0RG9tYWluSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzZWNv
bmREb21haW4pIGNvbnN0OwogICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBkb21haW5JRChjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0OwogICAgIGJvb2wgZG9tYWluRXhpc3RzKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CiAgICAgdm9pZCB1cGRhdGVMYXN0U2Vlbihjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYsIFdhbGxUaW1lKTsKQEAgLTIwNiw3ICsyMTAsNyBAQCBwcml2YXRl
OgogICAgIH07CiAgICAgSGFzaE1hcDx1bnNpZ25lZCwgTm90VmVyeVByZXZhbGVudFJlc291cmNl
cz4gZmluZE5vdFZlcnlQcmV2YWxlbnRSZXNvdXJjZXMoKTsKIAotICAgIGJvb2wgcHJlZGljYXRl
VmFsdWVGb3JEb21haW4oV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50JiwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mKSBjb25zdDsKKyAgICBib29sIHByZWRpY2F0ZVZhbHVlRm9yRG9tYWluKFdlYkNv
cmU6OlNRTGl0ZVN0YXRlbWVudCosIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CiAK
ICAgICBib29sIGFyZUFsbFRoaXJkUGFydHlDb29raWVzQmxvY2tlZFVuZGVyKGNvbnN0IFRvcEZy
YW1lRG9tYWluJikgb3ZlcnJpZGU7CiAgICAgQ29va2llQWNjZXNzIGNvb2tpZUFjY2Vzcyhjb25z
dCBTdWJSZXNvdXJjZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJik7CkBAIC0yMjksNTAg
KzIzMyw0OCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBjcmVhdGVVbmlxdWVJbmRpY2VzKCk7CiAg
ICAgYm9vbCBjcmVhdGVTY2hlbWEoKTsKLSAgICBib29sIHByZXBhcmVTdGF0ZW1lbnRzKCk7CiAg
ICAgU3RyaW5nIGVuc3VyZUFuZE1ha2VEb21haW5MaXN0KGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFi
bGVEb21haW4+Jik7Ci0KICAgICAKICAgICBjb25zdCBTdHJpbmcgbV9zdG9yYWdlRGlyZWN0b3J5
UGF0aDsKICAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlIG1fZGF0YWJhc2U7Ci0g
ICAgbXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV9vYnNlcnZlZERvbWFpbkNvdW50
OwotICAgIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX2luc2VydE9ic2VydmVkRG9tYWluU3Rh
dGVtZW50OwotICAgIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX2luc2VydFRvcExldmVsRG9t
YWluU3RhdGVtZW50OwotICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fZG9t
YWluSURGcm9tU3RyaW5nU3RhdGVtZW50OwotICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlU3Rh
dGVtZW50IG1fdG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tRXhpc3RzOwotICAgIG11dGFibGUg
V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fdG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0
c0V4aXN0czsKLSAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX3N1YmZyYW1l
VW5kZXJUb3BGcmFtZURvbWFpbkV4aXN0czsKLSAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0
YXRlbWVudCBtX3N1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbkV4aXN0czsKLSAgICBtdXRh
YmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX3N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3Rz
VG9FeGlzdHM7Ci0gICAgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fbW9zdFJlY2VudFVzZXJJ
bnRlcmFjdGlvblN0YXRlbWVudDsKLSAgICBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV91cGRh
dGVMYXN0U2VlblN0YXRlbWVudDsKLSAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVu
dCBtX3VwZGF0ZURhdGFSZWNvcmRzUmVtb3ZlZFN0YXRlbWVudDsKLSAgICBXZWJDb3JlOjpTUUxp
dGVTdGF0ZW1lbnQgbV91cGRhdGVQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudDsKLSAgICBtdXRh
YmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX2lzUHJldmFsZW50UmVzb3VyY2VTdGF0ZW1l
bnQ7Ci0gICAgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fdXBkYXRlVmVyeVByZXZhbGVudFJl
c291cmNlU3RhdGVtZW50OwotICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1f
aXNWZXJ5UHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQ7Ci0gICAgV2ViQ29yZTo6U1FMaXRlU3Rh
dGVtZW50IG1fY2xlYXJQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudDsKLSAgICBtdXRhYmxlIFdl
YkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX2hhZFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudDsKLSAg
ICBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV91cGRhdGVHcmFuZGZhdGhlcmVkU3RhdGVtZW50
OwotICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fdXBkYXRlSXNTY2hlZHVs
ZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbFN0YXRlbWVudDsKLSAgICBtdXRhYmxlIFdlYkNv
cmU6OlNRTGl0ZVN0YXRlbWVudCBtX2lzR3JhbmRmYXRoZXJlZFN0YXRlbWVudDsKLSAgICBtdXRh
YmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX2ZpbmRFeHBpcmVkVXNlckludGVyYWN0aW9u
U3RhdGVtZW50OwotICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fY291bnRQ
cmV2YWxlbnRSZXNvdXJjZXNTdGF0ZW1lbnQ7Ci0gICAgbXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVT
dGF0ZW1lbnQgbV9jb3VudFByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb25TdGF0
ZW1lbnQ7Ci0gICAgbXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV9jb3VudFByZXZh
bGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQ7Ci0gICAgbXV0YWJs
ZSBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVT
dGF0ZW1lbnQ7Ci0gICAgbXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV9nZXRBbGxE
b21haW5zU3RhdGVtZW50OwotICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1f
ZG9tYWluU3RyaW5nRnJvbURvbWFpbklEU3RhdGVtZW50OwotICAgIG11dGFibGUgV2ViQ29yZTo6
U1FMaXRlU3RhdGVtZW50IG1fZ2V0QWxsU3ViU3RhdGlzdGljc1N0YXRlbWVudDsKLSAgICBtdXRh
YmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX3N0b3JhZ2VBY2Nlc3NFeGlzdHNTdGF0ZW1l
bnQ7Ci0gICAgbXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV9nZXRNb3N0UmVjZW50
bHlVcGRhdGVkVGltZXN0YW1wU3RhdGVtZW50OwotICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRl
U3RhdGVtZW50IG1fbGlua0RlY29yYXRpb25FeGlzdHNTdGF0ZW1lbnQ7Ci0gICAgbXV0YWJsZSBX
ZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV9zY3JpcHRMb2FkRXhpc3RzU3RhdGVtZW50OwotICAg
IG11dGFibGUgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fc3ViRnJhbWVFeGlzdHNTdGF0ZW1l
bnQ7Ci0gICAgbXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV9zdWJSZXNvdXJjZUV4
aXN0c1N0YXRlbWVudDsKLSAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX3Vu
aXF1ZVJlZGlyZWN0RXhpc3RzU3RhdGVtZW50OwotICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRl
U3RhdGVtZW50IG1fb2JzZXJ2ZWREb21haW5zRXhpc3RzU3RhdGVtZW50OwotICAgIG11dGFibGUg
V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fcmVtb3ZlQWxsRGF0YVN0YXRlbWVudDsKKyAgICBt
dXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fb2JzZXJ2
ZWREb21haW5Db3VudFN0YXRlbWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FM
aXRlU3RhdGVtZW50PiBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50OworICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1faW5zZXJ0VG9wTGV2ZWxEb21h
aW5TdGF0ZW1lbnQ7CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRl
U3RhdGVtZW50PiBtX2RvbWFpbklERnJvbVN0cmluZ1N0YXRlbWVudDsKKyAgICBtdXRhYmxlIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fdG9wRnJhbWVMaW5rRGVj
b3JhdGlvbnNGcm9tRXhpc3RzU3RhdGVtZW50OworICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV90b3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3Jp
cHRzRXhpc3RzU3RhdGVtZW50OworICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
OlNRTGl0ZVN0YXRlbWVudD4gbV9zdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5FeGlzdHNTdGF0
ZW1lbnQ7CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVt
ZW50PiBtX3N1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbkV4aXN0c1N0YXRlbWVudDsKKyAg
ICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fc3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUb0V4aXN0c1N0YXRlbWVudDsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX21vc3RSZWNlbnRVc2VySW50ZXJhY3Rp
b25TdGF0ZW1lbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVu
dD4gbV91cGRhdGVMYXN0U2VlblN0YXRlbWVudDsKKyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fdXBkYXRlRGF0YVJlY29yZHNSZW1vdmVkU3Rh
dGVtZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1f
dXBkYXRlUHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQ7CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2lzUHJldmFsZW50UmVzb3VyY2VTdGF0
ZW1lbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV91
cGRhdGVWZXJ5UHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQ7CisgICAgbXV0YWJsZSBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2lzVmVyeVByZXZhbGVudFJlc291
cmNlU3RhdGVtZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1l
bnQ+IG1fY2xlYXJQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudDsKKyAgICBtdXRhYmxlIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1faGFkVXNlckludGVyYWN0aW9u
U3RhdGVtZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+
IG1fdXBkYXRlR3JhbmRmYXRoZXJlZFN0YXRlbWVudDsKKyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fdXBkYXRlSXNTY2hlZHVsZWRGb3JBbGxC
dXRDb29raWVEYXRhUmVtb3ZhbFN0YXRlbWVudDsKKyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1faXNHcmFuZGZhdGhlcmVkU3RhdGVtZW50Owor
ICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9m
aW5kRXhwaXJlZFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudDsKKyAgICBtdXRhYmxlIHN0ZDo6dW5p
cXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fY291bnRQcmV2YWxlbnRSZXNvdXJj
ZXNTdGF0ZW1lbnQ7CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRl
U3RhdGVtZW50PiBtX2NvdW50UHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvblN0
YXRlbWVudDsKKyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0
ZW1lbnQ+IG1fY291bnRQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uU3Rh
dGVtZW50OworICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRl
bWVudD4gbV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQ7CisgICAgbXV0YWJs
ZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2dldEFsbERvbWFp
bnNTdGF0ZW1lbnQ7CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRl
U3RhdGVtZW50PiBtX2RvbWFpblN0cmluZ0Zyb21Eb21haW5JRFN0YXRlbWVudDsKKyAgICBtdXRh
YmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fZ2V0QWxsU3Vi
U3RhdGlzdGljc1N0YXRlbWVudDsKKyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpTUUxpdGVTdGF0ZW1lbnQ+IG1fc3RvcmFnZUFjY2Vzc0V4aXN0c1N0YXRlbWVudDsKKyAgICBt
dXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fZ2V0TW9z
dFJlY2VudGx5VXBkYXRlZFRpbWVzdGFtcFN0YXRlbWVudDsKKyAgICBtdXRhYmxlIHN0ZDo6dW5p
cXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fbGlua0RlY29yYXRpb25FeGlzdHNT
dGF0ZW1lbnQ7CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3Rh
dGVtZW50PiBtX3NjcmlwdExvYWRFeGlzdHNTdGF0ZW1lbnQ7CisgICAgbXV0YWJsZSBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX3N1YkZyYW1lRXhpc3RzU3RhdGVt
ZW50OworICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVu
dD4gbV9zdWJSZXNvdXJjZUV4aXN0c1N0YXRlbWVudDsKKyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fdW5pcXVlUmVkaXJlY3RFeGlzdHNTdGF0
ZW1lbnQ7CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVt
ZW50PiBtX29ic2VydmVkRG9tYWluc0V4aXN0c1N0YXRlbWVudDsKKyAgICBtdXRhYmxlIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fcmVtb3ZlQWxsRGF0YVN0YXRl
bWVudDsKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKICAgICBib29sIG1faXNOZXdS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VGaWxlIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IDUzODdiNzY5
MjRhN2I0MDdhMzYxMjFhYjg4YzlkZWVjODIyMWY4MWEuLjFhMGZiZDJkZDZjOGM4ZWUzOGY1NjAz
MjI1ZTE2ZGZhZDIxMDE3Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuY3BwCkBAIC0yNTIsNiArMjUyLDkgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OmZsdXNoQW5kRGVzdHJveVBlcnNpc3RlbnRTdG9yZShDb21wbGV0aW9u
SGEKICAgICAvLyBpcyBkZXN0cm95ZWQgYmVjYXVzZSBpdCBoYXMgYSBDKysgcmVmZXJlbmNlIHRv
IHVzLgogICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgbV9wZXJzaXN0ZW50U3RvcmFnZSA9IG51
bGxwdHI7CisgICAgICAgIGlmIChtX3N0YXRpc3RpY3NTdG9yZSAmJiAhaXNFcGhlbWVyYWwoKSAm
JiBpczxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZT4oKm1fc3RhdGlzdGljc1N0
b3JlKSkKKyAgICAgICAgICAgIGRvd25jYXN0PFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlPigqbV9zdGF0aXN0aWNzU3RvcmUpLmNsb3NlKCk7CisKICAgICAgICAgbV9zdGF0aXN0
aWNzU3RvcmUgPSBudWxscHRyOwogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIH0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399751</attachid>
            <date>2020-05-19 11:13:44 -0700</date>
            <delta_ts>2020-05-19 13:09:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211929-20200519111343.patch</filename>
            <type>text/plain</type>
            <size>81748</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNzY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDcxNmExZDI0Nzg1ZTE5NWRm
MmNiMGMxYjM2MTFjMTNhNjhjYzU0YzYuLjdkMzk0ZjM2NjU5YWZlMDRkZmE1Mjc0YTI2OTgyNzM0
NDc5Yzc4MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMjAtMDUtMTkgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgSVRQIGRhdGFiYXNl
IHNob3VsZCBmaW5hbGl6ZSBhbGwgcHJlcGFyZWQgc3RhdGVtZW50cyBiZWZvcmUgY2xvc2luZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExOTI5Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MzI0Njk0NT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGJlaGF2aW9yIGNvbmZpcm1l
ZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICBDb252ZXJ0IGFsbCBTUUxpdGUgc3RhdGVt
ZW50IG9iamVjdHMgdG8gYmUgdW5pcXVlIHBvaW50ZXJzIHRvIGJldHRlcgorICAgICAgICBtYW5h
Z2UgdGhlIGxpZmV0aW1lIG9mIGVhY2ggc3RhdGVtZW50IG9iamVjdC4gT25seSBpbml0aWFsaXpl
IGFuZAorICAgICAgICBwcmVwYXJlIGFuIG9iamVjdCB3aGVuIGl0IGlzIG5lZWRlZCBpbnN0ZWFk
IG9mIHByZXBhcmluZyBhbGwgb2JqZWN0cworICAgICAgICBhdCBvbmNlLiBTZXQgZWFjaCBzdGF0
ZW1lbnQgdG8gbnVsbCBiZWZvcmUgY2xvc2luZyB0aGUgZGF0YWJhc2UKKyAgICAgICAgYmVjYXVz
ZSB+U1FMaXRlU3RhdGVtZW50KCkgd2lsbCBmaW5hbGl6ZSB0aGUgc3RhdGVtZW50LgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyBhbGwgcmVzZXQoKSBjb21tYW5kcyBub3cgdGhhdCB3ZSBp
bml0aWFsaXplCisgICAgICAgIGVhY2ggc3RhdGVtZW50IHVzaW5nIFNRTGl0ZVN0YXRlbWVudEF1
dG9SZXNldFNjb3BlLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpjbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpnZXRTY29wZWRTdGF0ZW1lbnQgY29uc3QpOgorICAgICAgICBG
dW5jdGlvbiB0byBpbml0aWFsaXplIGFuZCBwcmVwYXJlIGEgc3RhdGVtZW50LgorCisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnREb21h
aW5SZWxhdGlvbnNoaXApOgorICAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIG5vdCB1c2VkIGFuZCBj
YW4gYmUgZGVsZXRlZC4KKworICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6Y2hlY2tGb3JNaXNzaW5nVGFibGVzSW5TY2hlbWEpOgorICAgICAgICAo
V2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aXNNaWdyYXRpb25O
ZWNlc3NhcnkpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6b3BlbkFuZFVwZGF0ZVNjaGVtYUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYktp
dDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmlzRW1wdHkgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZGVz
dHJveVN0YXRlbWVudHMpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6aW5zZXJ0T2JzZXJ2ZWREb21haW4pOgorICAgICAgICAoV2ViS2l0OjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVsYXRpb25zaGlwRXhpc3RzIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OmRvbWFpbklEIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6Om1lcmdlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1lcmdlU3RhdGlzdGljKToKKyAgICAgICAgKFdlYktp
dDo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcmVwYXJlU3RhdGVtZW50cyk6IERlbGV0ZWQuCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZS5oOgorICAgICAgICBVcGRhdGVkIGFsbCBzdGF0ZW1lbnQgdmFyaWFibGVz
IHRvIGVuZCB3aXRoICJTdGF0ZW1lbnQiIHRvIGZvbGxvdyB0aGUKKyAgICAgICAgZXN0YWJsaXNo
ZWQgcGF0dGVybi4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpmbHVzaEFuZERlc3Ryb3lQZXJzaXN0ZW50U3RvcmUpOgor
CiAyMDIwLTA1LTE1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgW2lPUyBTaW11bGF0b3JdIFRlc3RXZWJLaXRBUEkuX1dLRG93bmxvYWQuUmVz
dW1lIGlzIGEgZmxha3kgY3Jhc2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCmluZGV4IDMxZTkxOTk4NjU4NjAwMjMxZDY0Y2JjMDQ5
MzAxY2M1YzNhZjViNDguLjBjMzc0MGI3Mjk5NzFjOGZlMGY5MTM3NDI1NzQzMDgxNGQ3Y2IwNTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlLmNwcApAQCAtMjc1LDQ0ICsyNzUsNiBAQCBzdGF0aWMgY29uc3QgSGFzaE1hcDxTdHJpbmcs
IFN0cmluZz4mIGNyZWF0ZVRhYmxlUXVlcmllcygpCiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUoV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlJiBzdG9yZSwgV29ya1F1ZXVlJiB3b3JrUXVldWUsIFNob3Vs
ZEluY2x1ZGVMb2NhbGhvc3Qgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCwgY29uc3QgU3RyaW5nJiBz
dG9yYWdlRGlyZWN0b3J5UGF0aCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIDogUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKHN0b3JlLCB3b3JrUXVldWUsIHNob3VsZEluY2x1ZGVM
b2NhbGhvc3QpCiAgICAgLCBtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoKHN0b3JhZ2VEaXJlY3RvcnlQ
YXRoICsgIi9vYnNlcnZhdGlvbnMuZGIiKQotICAgICwgbV9vYnNlcnZlZERvbWFpbkNvdW50KG1f
ZGF0YWJhc2UsIG9ic2VydmVkRG9tYWluQ291bnRRdWVyeSkKLSAgICAsIG1faW5zZXJ0T2JzZXJ2
ZWREb21haW5TdGF0ZW1lbnQobV9kYXRhYmFzZSwgaW5zZXJ0T2JzZXJ2ZWREb21haW5RdWVyeSkK
LSAgICAsIG1faW5zZXJ0VG9wTGV2ZWxEb21haW5TdGF0ZW1lbnQobV9kYXRhYmFzZSwgaW5zZXJ0
VG9wTGV2ZWxEb21haW5RdWVyeSkKLSAgICAsIG1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50
KG1fZGF0YWJhc2UsIGRvbWFpbklERnJvbVN0cmluZ1F1ZXJ5KQotICAgICwgbV90b3BGcmFtZUxp
bmtEZWNvcmF0aW9uc0Zyb21FeGlzdHMobV9kYXRhYmFzZSwgdG9wRnJhbWVMaW5rRGVjb3JhdGlv
bnNGcm9tRXhpc3RzUXVlcnkpCi0gICAgLCBtX3RvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlw
dHNFeGlzdHMobV9kYXRhYmFzZSwgdG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0c0V4aXN0
c1F1ZXJ5KQotICAgICwgbV9zdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5FeGlzdHMobV9kYXRh
YmFzZSwgc3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluRXhpc3RzUXVlcnkpCi0gICAgLCBtX3N1
YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbkV4aXN0cyhtX2RhdGFiYXNlLCBzdWJyZXNvdXJj
ZVVuZGVyVG9wRnJhbWVEb21haW5FeGlzdHNRdWVyeSkKLSAgICAsIG1fc3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdHNUb0V4aXN0cyhtX2RhdGFiYXNlLCBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0
c1RvRXhpc3RzUXVlcnkpCi0gICAgLCBtX21vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25TdGF0ZW1l
bnQobV9kYXRhYmFzZSwgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblF1ZXJ5KQotICAgICwgbV91
cGRhdGVMYXN0U2VlblN0YXRlbWVudChtX2RhdGFiYXNlLCB1cGRhdGVMYXN0U2VlblF1ZXJ5KQot
ICAgICwgbV91cGRhdGVEYXRhUmVjb3Jkc1JlbW92ZWRTdGF0ZW1lbnQobV9kYXRhYmFzZSwgdXBk
YXRlRGF0YVJlY29yZHNSZW1vdmVkUXVlcnkpCi0gICAgLCBtX3VwZGF0ZVByZXZhbGVudFJlc291
cmNlU3RhdGVtZW50KG1fZGF0YWJhc2UsIHVwZGF0ZVByZXZhbGVudFJlc291cmNlUXVlcnkpCi0g
ICAgLCBtX2lzUHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQobV9kYXRhYmFzZSwgaXNQcmV2YWxl
bnRSZXNvdXJjZVF1ZXJ5KQotICAgICwgbV91cGRhdGVWZXJ5UHJldmFsZW50UmVzb3VyY2VTdGF0
ZW1lbnQobV9kYXRhYmFzZSwgdXBkYXRlVmVyeVByZXZhbGVudFJlc291cmNlUXVlcnkpCi0gICAg
LCBtX2lzVmVyeVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50KG1fZGF0YWJhc2UsIGlzVmVyeVBy
ZXZhbGVudFJlc291cmNlUXVlcnkpCi0gICAgLCBtX2NsZWFyUHJldmFsZW50UmVzb3VyY2VTdGF0
ZW1lbnQobV9kYXRhYmFzZSwgY2xlYXJQcmV2YWxlbnRSZXNvdXJjZVF1ZXJ5KQotICAgICwgbV9o
YWRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQobV9kYXRhYmFzZSwgaGFkVXNlckludGVyYWN0aW9u
UXVlcnkpCi0gICAgLCBtX3VwZGF0ZUdyYW5kZmF0aGVyZWRTdGF0ZW1lbnQobV9kYXRhYmFzZSwg
dXBkYXRlR3JhbmRmYXRoZXJlZFF1ZXJ5KQotICAgICwgbV91cGRhdGVJc1NjaGVkdWxlZEZvckFs
bEJ1dENvb2tpZURhdGFSZW1vdmFsU3RhdGVtZW50KG1fZGF0YWJhc2UsIHVwZGF0ZUlzU2NoZWR1
bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWxRdWVyeSkKLSAgICAsIG1faXNHcmFuZGZhdGhl
cmVkU3RhdGVtZW50KG1fZGF0YWJhc2UsIGlzR3JhbmRmYXRoZXJlZFF1ZXJ5KQotICAgICwgbV9m
aW5kRXhwaXJlZFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudChtX2RhdGFiYXNlLCBmaW5kRXhwaXJl
ZFVzZXJJbnRlcmFjdGlvblF1ZXJ5KQotICAgICwgbV9jb3VudFByZXZhbGVudFJlc291cmNlc1N0
YXRlbWVudChtX2RhdGFiYXNlLCBjb3VudFByZXZhbGVudFJlc291cmNlc1F1ZXJ5KQotICAgICwg
bV9jb3VudFByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQobV9k
YXRhYmFzZSwgY291bnRQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uUXVlcnkp
Ci0gICAgLCBtX2NvdW50UHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvblN0
YXRlbWVudChtX2RhdGFiYXNlLCBjb3VudFByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50
ZXJhY3Rpb25RdWVyeSkKLSAgICAsIG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVt
ZW50KG1fZGF0YWJhc2UsIGdldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVF1ZXJ5KQotICAgICwg
bV9nZXRBbGxEb21haW5zU3RhdGVtZW50KG1fZGF0YWJhc2UsIGdldEFsbERvbWFpbnNRdWVyeSkK
LSAgICAsIG1fZG9tYWluU3RyaW5nRnJvbURvbWFpbklEU3RhdGVtZW50KG1fZGF0YWJhc2UsIGRv
bWFpblN0cmluZ0Zyb21Eb21haW5JRFF1ZXJ5KQotICAgICwgbV9nZXRBbGxTdWJTdGF0aXN0aWNz
U3RhdGVtZW50KG1fZGF0YWJhc2UsIGdldEFsbFN1YlN0YXRpc3RpY3NVbmRlckRvbWFpblF1ZXJ5
KQotICAgICwgbV9zdG9yYWdlQWNjZXNzRXhpc3RzU3RhdGVtZW50KG1fZGF0YWJhc2UsIHN0b3Jh
Z2VBY2Nlc3NFeGlzdHNRdWVyeSkKLSAgICAsIG1fZ2V0TW9zdFJlY2VudGx5VXBkYXRlZFRpbWVz
dGFtcFN0YXRlbWVudChtX2RhdGFiYXNlLCBnZXRNb3N0UmVjZW50bHlVcGRhdGVkVGltZXN0YW1w
UXVlcnkpCi0gICAgLCBtX2xpbmtEZWNvcmF0aW9uRXhpc3RzU3RhdGVtZW50KG1fZGF0YWJhc2Us
IGxpbmtEZWNvcmF0aW9uRXhpc3RzUXVlcnkpCi0gICAgLCBtX3NjcmlwdExvYWRFeGlzdHNTdGF0
ZW1lbnQobV9kYXRhYmFzZSwgc2NyaXB0TG9hZEV4aXN0c1F1ZXJ5KQotICAgICwgbV9zdWJGcmFt
ZUV4aXN0c1N0YXRlbWVudChtX2RhdGFiYXNlLCBzdWJGcmFtZUV4aXN0c1F1ZXJ5KQotICAgICwg
bV9zdWJSZXNvdXJjZUV4aXN0c1N0YXRlbWVudChtX2RhdGFiYXNlLCBzdWJSZXNvdXJjZUV4aXN0
c1F1ZXJ5KQotICAgICwgbV91bmlxdWVSZWRpcmVjdEV4aXN0c1N0YXRlbWVudChtX2RhdGFiYXNl
LCB1bmlxdWVSZWRpcmVjdEV4aXN0c1F1ZXJ5KQotICAgICwgbV9vYnNlcnZlZERvbWFpbnNFeGlz
dHNTdGF0ZW1lbnQobV9kYXRhYmFzZSwgb2JzZXJ2ZWREb21haW5zRXhpc3RzUXVlcnkpCi0gICAg
LCBtX3JlbW92ZUFsbERhdGFTdGF0ZW1lbnQobV9kYXRhYmFzZSwgcmVtb3ZlQWxsRGF0YVF1ZXJ5
KQogICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOwpAQCAtMzI2LDE4ICsyODgsMjQgQEAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlKFdlYlJlc28K
ICAgICBpZiAoIW1fZGF0YWJhc2UudHVybk9uSW5jcmVtZW50YWxBdXRvVmFjdXVtKCkpCiAgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjp0dXJuT25JbmNyZW1lbnRhbEF1dG9WYWN1dW0gZmFpbGVkLCBlcnJv
ciBtZXNzYWdlOiAlIiBQVUJMSUNfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJy
b3JNc2coKSk7CiAKLSAgICBpZiAoIXByZXBhcmVTdGF0ZW1lbnRzKCkpIHsKLSAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OnByZXBhcmVTdGF0ZW1lbnRzIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJSIgUFVC
TElDX0xPR19TVFJJTkcgIiwgZGF0YWJhc2UgcGF0aDogJSIgUFVCTElDX0xPR19TVFJJTkcsIHRo
aXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCksIG1fc3RvcmFnZURpcmVjdG9yeVBhdGgudXRm
OCgpLmRhdGEoKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCiAgICAgd29ya1F1ZXVlLmRpc3BhdGNoQWZ0ZXIoNV9zLCBbd2Vha1RoaXMg
PSBtYWtlV2Vha1B0cigqdGhpcyldIHsKICAgICAgICAgaWYgKHdlYWtUaGlzKQogICAgICAgICAg
ICAgd2Vha1RoaXMtPmNhbGN1bGF0ZUFuZFN1Ym1pdFRlbGVtZXRyeSgpOwogICAgIH0pOwogfQog
CitSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6flJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlKCkKK3sKKyAgICBjbG9zZSgpOworfQorCit2b2lkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbG9zZSgpCit7CisgICAgZGVzdHJveVN0YXRl
bWVudHMoKTsKKyAgICBpZiAobV9kYXRhYmFzZS5pc09wZW4oKSkKKyAgICAgICAgbV9kYXRhYmFz
ZS5jbG9zZSgpOworfQorCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpvcGVuSVRQRGF0YWJhc2UoKQogewogICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyht
X3N0b3JhZ2VEaXJlY3RvcnlQYXRoKSkKQEAgLTM2NiwxMiArMzM0LDYgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6b3BlbklUUERhdGFiYXNlKCkKICAgICB9CiB9
CiAKLXN0YXRpYyB2b2lkIHJlc2V0U3RhdGVtZW50KFNRTGl0ZVN0YXRlbWVudCYgc3RhdGVtZW50
KQotewotICAgIGludCByZXNldFJlc3VsdCA9IHN0YXRlbWVudC5yZXNldCgpOwotICAgIEFTU0VS
VF9VTlVTRUQocmVzZXRSZXN1bHQsIHJlc2V0UmVzdWx0ID09IFNRTElURV9PSyk7Ci19Ci0KIE9w
dGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6Y2hlY2tGb3JNaXNzaW5nVGFibGVzSW5TY2hlbWEoKQogewogICAgIFZlY3RvcjxTdHJpbmc+
IG1pc3NpbmdUYWJsZXM7CkBAIC0zOTAsNyArMzUyLDYgQEAgT3B0aW9uYWw8VmVjdG9yPFN0cmlu
Zz4+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjaGVja0Zvck1pc3NpbmdU
YWIKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjaGVja0Zvck1pc3NpbmdUYWJsZXNJblNjaGVt
YSBzY2hlbWEgaXMgbWlzc2luZyB0YWJsZTogJXMiLCB0aGlzLCB0YWJsZS5hc2NpaSgpLmRhdGEo
KSk7CiAgICAgICAgICAgICBtaXNzaW5nVGFibGVzLmFwcGVuZChTdHJpbmcodGFibGUpKTsKICAg
ICAgICAgfQotICAgICAgICByZXNldFN0YXRlbWVudChzdGF0ZW1lbnQpOwogICAgIH0KICAgICBp
ZiAobWlzc2luZ1RhYmxlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CkBAIC00MjEsNyArMzgyLDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6aXNNaWdyYXRpb25OZWNlc3NhcnkoKQogICAgIC8vIElmIHRoZXJlIGlzIG5vIHRhYmxl
IGF0IGFsbCwgb3IgdGhlcmUgaXMgYW4gZXJyb3IgZXhlY3V0aW5nIHRoZSBmZXRjaCwgZGVsZXRl
IGFuZCByZW9wZW4gdGhlIGZpbGUuCiAgICAgaWYgKHN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRF
X1JPVykgewogICAgICAgICBMT0dfRVJST1IoIkVycm9yIGV4ZWN1dGluZyBzdGF0ZW1lbnQgdG8g
ZmV0Y2ggc2NoZW1hLiIpOwotICAgICAgICBtX2RhdGFiYXNlLmNsb3NlKCk7CisgICAgICAgIGNs
b3NlKCk7CiAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9zdG9yYWdlRGlyZWN0b3J5
UGF0aCk7CiAgICAgICAgIG9wZW5JVFBEYXRhYmFzZSgpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC01MTksNyArNDgwLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6b3BlbkFuZFVwZGF0ZVNjaGVtYUlmTmVjZXNzYXJ5KCkKICAgICAgICAgLy8gSWYgdGhl
cmUgaXMgbm8gT2JzZXJ2ZWREb21haW5zIHRhYmxlIGF0IGFsbCwgb3IgdGhlcmUgaXMgYW4gZXJy
b3IgZXhlY3V0aW5nIHRoZSBmZXRjaCwgZGVsZXRlIHRoZSBmaWxlLgogICAgICAgICBpZiAoc3Rh
dGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIkVy
cm9yIGV4ZWN1dGluZyBzdGF0ZW1lbnQgdG8gZmV0Y2ggc2NoZW1hIGZvciB0aGUgT2JzZXJ2ZWQg
RG9tYWlucyB0YWJsZS4iKTsKLSAgICAgICAgICAgIG1fZGF0YWJhc2UuY2xvc2UoKTsKKyAgICAg
ICAgICAgIGNsb3NlKCk7CiAgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fc3Rv
cmFnZURpcmVjdG9yeVBhdGgpOwogICAgICAgICAgICAgb3BlbklUUERhdGFiYXNlKCk7CiAgICAg
ICAgICAgICByZXR1cm47CkBAIC01MzMsMjUgKzQ5NCwzOCBAQCB2b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpvcGVuQW5kVXBkYXRlU2NoZW1hSWZOZWNlc3NhcnkoKQog
ICAgIC8vIElmIHRoZSBPYnNlcnZlZERvbWFpbnMgc2NoZW1hIGluIHRoZSBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzIGRpcmVjdG9yeSBpcyBub3QgdGhlIGN1cnJlbnQgc2NoZW1hLCBkZWxldGUgdGhl
IGRhdGFiYXNlIGZpbGUuCiAgICAgLy8gRklYTUU6IE1pZ3JhdGUgb2xkIE9ic2VydmVkRG9tYWlu
cyBkYXRhIHRvIG5ldyB0YWJsZSBzY2hlbWEuCiAgICAgaWYgKGN1cnJlbnRTY2hlbWEgIT0gT2Jz
ZXJ2ZWREb21haW5zVGFibGVTY2hlbWFWMSgpICYmIGN1cnJlbnRTY2hlbWEgIT0gT2JzZXJ2ZWRE
b21haW5zVGFibGVTY2hlbWFWMUFsdGVybmF0ZSgpKSB7Ci0gICAgICAgIG1fZGF0YWJhc2UuY2xv
c2UoKTsKKyAgICAgICAgY2xvc2UoKTsKICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZSht
X3N0b3JhZ2VEaXJlY3RvcnlQYXRoKTsKICAgICAgICAgb3BlbklUUERhdGFiYXNlKCk7CiAgICAg
fSBlbHNlCiAgICAgICAgIG1pZ3JhdGVEYXRhVG9OZXdUYWJsZXNJZk5lY2Vzc2FyeSgpOwogfQog
CitTUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6Z2V0U2NvcGVkU3RhdGVtZW50KHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpT
UUxpdGVTdGF0ZW1lbnQ+JiBzdGF0ZW1lbnQsIGNvbnN0IFN0cmluZyBxdWVyeSwgY29uc3QgU3Ry
aW5nJiBsb2dTdHJpbmcpIGNvbnN0Cit7CisgICAgaWYgKCFzdGF0ZW1lbnQpIHsKKyAgICAgICAg
c3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+KG1fZGF0YWJh
c2UsIHF1ZXJ5KTsKKyAgICAgICAgQVNTRVJUKG1fZGF0YWJhc2UuaXNPcGVuKCkpOworICAgICAg
ICBpZiAoc3RhdGVtZW50LT5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKSB7CisgICAgICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6JXMgZmFpbGVkIHRvIHByZXBhcmUgc3RhdGVtZW50LCBlcnJvciBtZXNzYWdl
OiAle3ByaXZhdGV9cyIsIHRoaXMsIGxvZ1N0cmluZy5hc2NpaSgpLmRhdGEoKSwgbV9kYXRhYmFz
ZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gU1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUg
eyBzdGF0ZW1lbnQuZ2V0KCkgfTsKK30KKwogYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6aXNFbXB0eSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7CiAgICAgCi0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICBpZiAobV9vYnNlcnZl
ZERvbWFpbkNvdW50LnN0ZXAoKSA9PSBTUUxJVEVfUk9XKQotICAgICAgICByZXN1bHQgPSAhbV9v
YnNlcnZlZERvbWFpbkNvdW50LmdldENvbHVtbkludCgwKTsKLSAgICAKLSAgICBpbnQgcmVzZXRS
ZXN1bHQgPSBtX29ic2VydmVkRG9tYWluQ291bnQucmVzZXQoKTsKLSAgICBBU1NFUlRfVU5VU0VE
KHJlc2V0UmVzdWx0LCByZXNldFJlc3VsdCA9PSBTUUxJVEVfT0spOwotICAgIAotICAgIHJldHVy
biByZXN1bHQ7CisgICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSBnZXRTY29wZWRTdGF0ZW1lbnQo
bV9vYnNlcnZlZERvbWFpbkNvdW50U3RhdGVtZW50LCBvYnNlcnZlZERvbWFpbkNvdW50UXVlcnks
ICJpc0VtcHR5Il9zKTsKKyAgICBpZiAoIXNjb3BlZFN0YXRlbWVudAorICAgICAgICB8fCBzY29w
ZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7CisgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
Ojppc0VtcHR5IGZhaWxlZCB0byBzdGVwLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRo
aXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gIXNjb3BlZFN0
YXRlbWVudC0+Z2V0Q29sdW1uSW50KDApOwogfQogCiBib29sIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpjcmVhdGVVbmlxdWVJbmRpY2VzKCkKQEAgLTY0Miw1NSArNjE2LDQ4
IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNyZWF0ZVNjaGVt
YSgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OnByZXBhcmVTdGF0ZW1lbnRzKCkKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKLSAgICAgICAgCi0gICAgaWYgKG1fb2JzZXJ2ZWREb21haW5Db3VudC5wcmVw
YXJlKCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0
ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX2luc2VydFRvcExldmVs
RG9tYWluU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9kb21h
aW5JREZyb21TdHJpbmdTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwotICAgICAgICB8
fCBtX3N1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbkV4aXN0cy5wcmVwYXJlKCkgIT0gU1FMSVRF
X09LCi0gICAgICAgIHx8IG1fc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluRXhpc3RzLnBy
ZXBhcmUoKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9zdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0c1RvRXhpc3RzLnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV91cGRhdGVM
YXN0U2VlblN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fdXBk
YXRlRGF0YVJlY29yZHNSZW1vdmVkU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKLSAg
ICAgICAgfHwgbV9tb3N0UmVjZW50VXNlckludGVyYWN0aW9uU3RhdGVtZW50LnByZXBhcmUoKSAh
PSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV91cGRhdGVQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVu
dC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1faXNQcmV2YWxlbnRSZXNvdXJj
ZVN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fdXBkYXRlVmVy
eVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKLSAgICAg
ICAgfHwgbV9pc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FM
SVRFX09LCi0gICAgICAgIHx8IG1fY2xlYXJQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudC5wcmVw
YXJlKCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1faGFkVXNlckludGVyYWN0aW9uU3RhdGVt
ZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV91cGRhdGVHcmFuZGZhdGhl
cmVkU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV91cGRhdGVJ
c1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsU3RhdGVtZW50LnByZXBhcmUoKSAh
PSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9pc0dyYW5kZmF0aGVyZWRTdGF0ZW1lbnQucHJlcGFy
ZSgpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX2ZpbmRFeHBpcmVkVXNlckludGVyYWN0aW9u
U3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV90b3BGcmFtZUxp
bmtEZWNvcmF0aW9uc0Zyb21FeGlzdHMucHJlcGFyZSgpICE9IFNRTElURV9PSwotICAgICAgICB8
fCBtX3RvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHNFeGlzdHMucHJlcGFyZSgpICE9IFNR
TElURV9PSwotICAgICAgICB8fCBtX2NvdW50UHJldmFsZW50UmVzb3VyY2VzU3RhdGVtZW50LnBy
ZXBhcmUoKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9jb3VudFByZXZhbGVudFJlc291cmNl
c1dpdGhVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwotICAg
ICAgICB8fCBtX2NvdW50UHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvblN0
YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fZ2V0UmVzb3VyY2VE
YXRhQnlEb21haW5OYW1lU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKLSAgICAgICAg
fHwgbV9nZXRBbGxEb21haW5zU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKLSAgICAg
ICAgfHwgbV9kb21haW5TdHJpbmdGcm9tRG9tYWluSURTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNR
TElURV9PSwotICAgICAgICB8fCBtX2dldEFsbFN1YlN0YXRpc3RpY3NTdGF0ZW1lbnQucHJlcGFy
ZSgpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX3N0b3JhZ2VBY2Nlc3NFeGlzdHNTdGF0ZW1l
bnQucHJlcGFyZSgpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX2dldE1vc3RSZWNlbnRseVVw
ZGF0ZWRUaW1lc3RhbXBTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwotICAgICAgICB8
fCBtX2xpbmtEZWNvcmF0aW9uRXhpc3RzU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sK
LSAgICAgICAgfHwgbV9zY3JpcHRMb2FkRXhpc3RzU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJ
VEVfT0sKLSAgICAgICAgfHwgbV9zdWJGcmFtZUV4aXN0c1N0YXRlbWVudC5wcmVwYXJlKCkgIT0g
U1FMSVRFX09LCi0gICAgICAgIHx8IG1fc3ViUmVzb3VyY2VFeGlzdHNTdGF0ZW1lbnQucHJlcGFy
ZSgpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX3VuaXF1ZVJlZGlyZWN0RXhpc3RzU3RhdGVt
ZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9vYnNlcnZlZERvbWFpbnNF
eGlzdHNTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX3JlbW92
ZUFsbERhdGFTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwotICAgICAgICApIHsKLSAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OnByZXBhcmVTdGF0ZW1lbnRzIGZhaWxlZCB0byBwcmVwYXJlLCBl
cnJvciBtZXNzYWdlOiAlIiBQVUJMSUNfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0
RXJyb3JNc2coKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Cit2b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkZXN0cm95U3RhdGVtZW50cygpCit7CisgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBtX29ic2VydmVkRG9tYWluQ291bnRTdGF0ZW1l
bnQgPSBudWxscHRyOworICAgIG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQgPSBudWxs
cHRyOworICAgIG1faW5zZXJ0VG9wTGV2ZWxEb21haW5TdGF0ZW1lbnQgPSBudWxscHRyOworICAg
IG1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX3N1YmZyYW1l
VW5kZXJUb3BGcmFtZURvbWFpbkV4aXN0c1N0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV9zdWJy
ZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5FeGlzdHNTdGF0ZW1lbnQgPSBudWxscHRyOworICAg
IG1fc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUb0V4aXN0c1N0YXRlbWVudCA9IG51bGxwdHI7
CisgICAgbV91cGRhdGVMYXN0U2VlblN0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV91cGRhdGVE
YXRhUmVjb3Jkc1JlbW92ZWRTdGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1fbW9zdFJlY2VudFVz
ZXJJbnRlcmFjdGlvblN0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV91cGRhdGVQcmV2YWxlbnRS
ZXNvdXJjZVN0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV9pc1ByZXZhbGVudFJlc291cmNlU3Rh
dGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX3VwZGF0ZVZlcnlQcmV2YWxlbnRSZXNvdXJjZVN0YXRl
bWVudCA9IG51bGxwdHI7CisgICAgbV9pc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudCA9
IG51bGxwdHI7CisgICAgbV9jbGVhclByZXZhbGVudFJlc291cmNlU3RhdGVtZW50ID0gbnVsbHB0
cjsKKyAgICBtX2hhZFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV91
cGRhdGVHcmFuZGZhdGhlcmVkU3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX3VwZGF0ZUlzU2No
ZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWxTdGF0ZW1lbnQgPSBudWxscHRyOworICAg
IG1faXNHcmFuZGZhdGhlcmVkU3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX2ZpbmRFeHBpcmVk
VXNlckludGVyYWN0aW9uU3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX3RvcEZyYW1lTGlua0Rl
Y29yYXRpb25zRnJvbUV4aXN0c1N0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV90b3BGcmFtZUxv
YWRlZFRoaXJkUGFydHlTY3JpcHRzRXhpc3RzU3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX2Nv
dW50UHJldmFsZW50UmVzb3VyY2VzU3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX2NvdW50UHJl
dmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudCA9IG51bGxwdHI7Cisg
ICAgbV9jb3VudFByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb25TdGF0ZW1l
bnQgPSBudWxscHRyOworICAgIG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50
ID0gbnVsbHB0cjsKKyAgICBtX2dldEFsbERvbWFpbnNTdGF0ZW1lbnQgPSBudWxscHRyOworICAg
IG1fZG9tYWluU3RyaW5nRnJvbURvbWFpbklEU3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX2dl
dEFsbFN1YlN0YXRpc3RpY3NTdGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1fc3RvcmFnZUFjY2Vz
c0V4aXN0c1N0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV9nZXRNb3N0UmVjZW50bHlVcGRhdGVk
VGltZXN0YW1wU3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX2xpbmtEZWNvcmF0aW9uRXhpc3Rz
U3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX3NjcmlwdExvYWRFeGlzdHNTdGF0ZW1lbnQgPSBu
dWxscHRyOworICAgIG1fc3ViRnJhbWVFeGlzdHNTdGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1f
c3ViUmVzb3VyY2VFeGlzdHNTdGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1fdW5pcXVlUmVkaXJl
Y3RFeGlzdHNTdGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1fb2JzZXJ2ZWREb21haW5zRXhpc3Rz
U3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX3JlbW92ZUFsbERhdGFTdGF0ZW1lbnQgPSBudWxs
cHRyOwogfQogCiBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNl
cnRPYnNlcnZlZERvbWFpbihjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBsb2FkU3RhdGlz
dGljcykKQEAgLTcwMiw5OCArNjY5LDY1IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6Omluc2VydE9ic2VydmVkRG9tYWluKGNvbnN0IFJlc291cmNlTG9hCiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQot
Ci0gICAgaWYgKG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQuYmluZFRleHQoUmVnaXN0
cmFibGVEb21haW5JbmRleCwgbG9hZFN0YXRpc3RpY3MucmVnaXN0cmFibGVEb21haW4uc3RyaW5n
KCkpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVt
ZW50LmJpbmREb3VibGUoTGFzdFNlZW5JbmRleCwgbG9hZFN0YXRpc3RpY3MubGFzdFNlZW4uc2Vj
b25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9pbnNl
cnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC5iaW5kSW50KEhhZFVzZXJJbnRlcmFjdGlvbkluZGV4
LCBsb2FkU3RhdGlzdGljcy5oYWRVc2VySW50ZXJhY3Rpb24pICE9IFNRTElURV9PSwotICAgICAg
ICB8fCBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50LmJpbmREb3VibGUoTW9zdFJlY2Vu
dFVzZXJJbnRlcmFjdGlvblRpbWVJbmRleCwgbG9hZFN0YXRpc3RpY3MubW9zdFJlY2VudFVzZXJJ
bnRlcmFjdGlvblRpbWUuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKSAhPSBTUUxJVEVfT0sK
LSAgICAgICAgfHwgbV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC5iaW5kSW50KEdyYW5k
ZmF0aGVyZWRJbmRleCwgbG9hZFN0YXRpc3RpY3MuZ3JhbmRmYXRoZXJlZCkgIT0gU1FMSVRFX09L
Ci0gICAgICAgIHx8IG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQuYmluZEludChJc1By
ZXZhbGVudEluZGV4LCBsb2FkU3RhdGlzdGljcy5pc1ByZXZhbGVudFJlc291cmNlKSAhPSBTUUxJ
VEVfT0sKLSAgICAgICAgfHwgbV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC5iaW5kSW50
KElzVmVyeVByZXZhbGVudEluZGV4LCBsb2FkU3RhdGlzdGljcy5pc1ZlcnlQcmV2YWxlbnRSZXNv
dXJjZSkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0
ZW1lbnQuYmluZEludChEYXRhUmVjb3Jkc1JlbW92ZWRJbmRleCwgbG9hZFN0YXRpc3RpY3MuZGF0
YVJlY29yZHNSZW1vdmVkKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9pbnNlcnRPYnNlcnZl
ZERvbWFpblN0YXRlbWVudC5iaW5kSW50KFRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1Vz
ZXJJbnRlcmFjdGlvbkluZGV4LCBsb2FkU3RhdGlzdGljcy50aW1lc0FjY2Vzc2VkQXNGaXJzdFBh
cnR5RHVlVG9Vc2VySW50ZXJhY3Rpb24pICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX2luc2Vy
dE9ic2VydmVkRG9tYWluU3RhdGVtZW50LmJpbmRJbnQoVGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0
eUR1ZVRvU3RvcmFnZUFjY2Vzc0FQSUluZGV4LCBsb2FkU3RhdGlzdGljcy50aW1lc0FjY2Vzc2Vk
QXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJKSAhPSBTUUxJVEVfT0sKLSAgICAgICAg
fHwgbV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC5iaW5kSW50KElzU2NoZWR1bGVkRm9y
QWxsQnV0Q29va2llRGF0YVJlbW92YWxJbmRleCwgbG9hZFN0YXRpc3RpY3MuZ290TGlua0RlY29y
YXRpb25Gcm9tUHJldmFsZW50UmVzb3VyY2UpICE9IFNRTElURV9PSykgeworICAgIGF1dG8gc2Nv
cGVkU3RhdGVtZW50ID0gZ2V0U2NvcGVkU3RhdGVtZW50KG1faW5zZXJ0T2JzZXJ2ZWREb21haW5T
dGF0ZW1lbnQsIGluc2VydE9ic2VydmVkRG9tYWluUXVlcnksICJpbnNlcnRPYnNlcnZlZERvbWFp
biJfcyk7CisgICAgaWYgKCFzY29wZWRTdGF0ZW1lbnQKKyAgICAgICAgfHwgc2NvcGVkU3RhdGVt
ZW50LT5iaW5kVGV4dChSZWdpc3RyYWJsZURvbWFpbkluZGV4LCBsb2FkU3RhdGlzdGljcy5yZWdp
c3RyYWJsZURvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHNjb3BlZFN0
YXRlbWVudC0+YmluZERvdWJsZShMYXN0U2VlbkluZGV4LCBsb2FkU3RhdGlzdGljcy5sYXN0U2Vl
bi5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpICE9IFNRTElURV9PSworICAgICAgICB8fCBz
Y29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQoSGFkVXNlckludGVyYWN0aW9uSW5kZXgsIGxvYWRTdGF0
aXN0aWNzLmhhZFVzZXJJbnRlcmFjdGlvbikgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHNjb3Bl
ZFN0YXRlbWVudC0+YmluZERvdWJsZShNb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZUluZGV4
LCBsb2FkU3RhdGlzdGljcy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZS5zZWNvbmRzU2lu
Y2VFcG9jaCgpLnZhbHVlKCkpICE9IFNRTElURV9PSworICAgICAgICB8fCBzY29wZWRTdGF0ZW1l
bnQtPmJpbmRJbnQoR3JhbmRmYXRoZXJlZEluZGV4LCBsb2FkU3RhdGlzdGljcy5ncmFuZGZhdGhl
cmVkKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KElz
UHJldmFsZW50SW5kZXgsIGxvYWRTdGF0aXN0aWNzLmlzUHJldmFsZW50UmVzb3VyY2UpICE9IFNR
TElURV9PSworICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQoSXNWZXJ5UHJldmFs
ZW50SW5kZXgsIGxvYWRTdGF0aXN0aWNzLmlzVmVyeVByZXZhbGVudFJlc291cmNlKSAhPSBTUUxJ
VEVfT0sKKyAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KERhdGFSZWNvcmRzUmVt
b3ZlZEluZGV4LCBsb2FkU3RhdGlzdGljcy5kYXRhUmVjb3Jkc1JlbW92ZWQpICE9IFNRTElURV9P
SworICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQoVGltZXNBY2Nlc3NlZEFzRmly
c3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uSW5kZXgsIGxvYWRTdGF0aXN0aWNzLnRpbWVzQWNj
ZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlvbikgIT0gU1FMSVRFX09LCisgICAg
ICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZEludChUaW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5
RHVlVG9TdG9yYWdlQWNjZXNzQVBJSW5kZXgsIGxvYWRTdGF0aXN0aWNzLnRpbWVzQWNjZXNzZWRB
c0ZpcnN0UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUEkpICE9IFNRTElURV9PSworICAgICAgICB8
fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQoSXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRh
UmVtb3ZhbEluZGV4LCBsb2FkU3RhdGlzdGljcy5nb3RMaW5rRGVjb3JhdGlvbkZyb21QcmV2YWxl
bnRSZXNvdXJjZSkgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lG
X0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjppbnNlcnRPYnNlcnZlZERvbWFpbiBmYWlsZWQgdG8gYmluZCwgZXJyb3IgbWVzc2Fn
ZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
LSAgICBpZiAobV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRF
X0RPTkUpIHsKKyAgICBpZiAoc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUp
IHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydE9ic2VydmVkRG9tYWluIGZhaWxlZCB0byBj
b21taXQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0
RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQotCi0gICAgaW50IHJlc2V0UmVzdWx0ID0gbV9pbnNlcnRPYnNlcnZl
ZERvbWFpblN0YXRlbWVudC5yZXNldCgpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzZXRSZXN1bHQs
IHJlc2V0UmVzdWx0ID09IFNRTElURV9PSyk7Ci0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVsYXRpb25zaGlwRXhpc3Rz
KFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCYgc3RhdGVtZW50LCBPcHRpb25hbDx1bnNpZ25lZD4g
Zmlyc3REb21haW5JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHNlY29uZERvbWFpbikgY29u
c3QKK2Jvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlbGF0aW9uc2hp
cEV4aXN0cyhTUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZSYgc3RhdGVtZW50LCBPcHRpb25h
bDx1bnNpZ25lZD4gZmlyc3REb21haW5JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHNlY29u
ZERvbWFpbikgY29uc3QKIHsKICAgICBpZiAoIWZpcnN0RG9tYWluSUQpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIGlm
IChzdGF0ZW1lbnQuYmluZEludCgxLCAqZmlyc3REb21haW5JRCkgIT0gU1FMSVRFX09LCi0gICAg
ICAgIHx8IHN0YXRlbWVudC5iaW5kVGV4dCgyLCBzZWNvbmREb21haW4uc3RyaW5nKCkpICE9IFNR
TElURV9PSwotICAgICAgICB8fCBzdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ST1cpIHsKKyAg
ICBpZiAoIXN0YXRlbWVudAorICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRJbnQoMSwgKmZpcnN0
RG9tYWluSUQpICE9IFNRTElURV9PSworICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRUZXh0KDIs
IHNlY29uZERvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHN0YXRlbWVu
dC0+c3RlcCgpICE9IFNRTElURV9ST1cpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZf
QUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OnJlbGF0aW9uc2hpcEV4aXN0cyBmYWlsZWQgdG8gYmluZCwgZXJyb3IgbWVzc2FnZTog
JXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAg
Ym9vbCByZWxhdGlvbnNoaXBFeGlzdHMgPSAhIXN0YXRlbWVudC5nZXRDb2x1bW5JbnQoMCk7Ci0K
LSAgICBpbnQgcmVzZXRSZXN1bHQgPSBzdGF0ZW1lbnQucmVzZXQoKTsKLSAgICBBU1NFUlRfVU5V
U0VEKHJlc2V0UmVzdWx0LCByZXNldFJlc3VsdCA9PSBTUUxJVEVfT0spOwotICAgIAotICAgIHJl
dHVybiByZWxhdGlvbnNoaXBFeGlzdHM7Ci19Ci0KLWJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6Omluc2VydERvbWFpblJlbGF0aW9uc2hpcChXZWJDb3JlOjpTUUxpdGVT
dGF0ZW1lbnQmIHN0YXRlbWVudCwgdW5zaWduZWQgZG9tYWluSUQsIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiB0b3BGcmFtZSkKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLQot
ICAgIGlmIChzdGF0ZW1lbnQuYmluZEludCgxLCBkb21haW5JRCkgIT0gU1FMSVRFX09LCi0gICAg
ICAgIHx8IHN0YXRlbWVudC5iaW5kVGV4dCgyLCB0b3BGcmFtZS5zdHJpbmcoKSkgIT0gU1FMSVRF
X09LCi0gICAgICAgIHx8IHN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1faW5zZXJ0RG9tYWluUmVsYXRpb25zaGlw
U3RhdGVtZW50IGZhaWxlZCB0byBiaW5kLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRo
aXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGludCByZXNldFJlc3Vs
dCA9IHN0YXRlbWVudC5yZXNldCgpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzZXRSZXN1bHQsIHJl
c2V0UmVzdWx0ID09IFNRTElURV9PSyk7Ci0gICAgCi0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0
dXJuICEhc3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMCk7CiB9CiAKIE9wdGlvbmFsPHVuc2lnbmVk
PiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWluSUQoY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIGRvbWFpbikgY29uc3QKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKIAotICAgIHVuc2lnbmVkIGRvbWFpbklEID0gMDsKLQotICAgIGlmIChtX2RvbWFp
bklERnJvbVN0cmluZ1N0YXRlbWVudC5iaW5kVGV4dCgxLCBkb21haW4uc3RyaW5nKCkpICE9IFNR
TElURV9PSykgeworICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50ID0gZ2V0U2NvcGVkU3RhdGVtZW50
KG1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50LCBkb21haW5JREZyb21TdHJpbmdRdWVyeSwg
ImRvbWFpbklEIl9zKTsKKyAgICBpZiAoIXNjb3BlZFN0YXRlbWVudAorICAgICAgICB8fCBzY29w
ZWRTdGF0ZW1lbnQtPmJpbmRUZXh0KDEsIGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LKSB7
CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAt
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkb21haW5JREZyb21TdHJpbmcg
ZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFz
dEVycm9yTXNnKCkpOwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH0KICAgICAK
LSAgICBpZiAobV9kb21haW5JREZyb21TdHJpbmdTdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9S
T1cpIHsKLSAgICAgICAgaW50IHJlc2V0UmVzdWx0ID0gbV9kb21haW5JREZyb21TdHJpbmdTdGF0
ZW1lbnQucmVzZXQoKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChyZXNldFJlc3VsdCwgcmVzZXRS
ZXN1bHQgPT0gU1FMSVRFX09LKTsKKyAgICBpZiAoc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgIT0g
U1FMSVRFX1JPVykKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9CiAKLSAgICBk
b21haW5JRCA9IG1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50LmdldENvbHVtbkludCgwKTsK
LQotICAgIGludCByZXNldFJlc3VsdCA9IG1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50LnJl
c2V0KCk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXNldFJlc3VsdCwgcmVzZXRSZXN1bHQgPT0gU1FM
SVRFX09LKTsKLSAgICAKLSAgICByZXR1cm4gZG9tYWluSUQ7CisgICAgcmV0dXJuIHNjb3BlZFN0
YXRlbWVudC0+Z2V0Q29sdW1uSW50KDApOwogfQogCiBTdHJpbmcgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OmVuc3VyZUFuZE1ha2VEb21haW5MaXN0KGNvbnN0IEhhc2hTZXQ8
UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5MaXN0KQpAQCAtODg0LDE4ICs4MTgsMTggQEAgdm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cG9wdWxhdGVGcm9tTWVtb3J5
U3RvcmUoY29uc3QgUmVzb3VyY2UKICAgICAgICAgaW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwcyhz
dGF0aXN0aWMudmFsdWUpOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjptZXJnZShXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQmIGN1cnJlbnQsIGNvbnN0IFJl
c291cmNlTG9hZFN0YXRpc3RpY3MmIG90aGVyKQordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6bWVyZ2UoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50KiBjdXJyZW50LCBj
b25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBvdGhlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxv
b3A6OmlzTWFpbigpKTsKIAotICAgIGF1dG8gY3VycmVudFJlZ2lzdHJhYmxlRG9tYWluID0gY3Vy
cmVudC5nZXRDb2x1bW5UZXh0KFJlZ2lzdHJhYmxlRG9tYWluSW5kZXgpOwotICAgIGF1dG8gY3Vy
cmVudExhc3RTZWVuID0gY3VycmVudC5nZXRDb2x1bW5Eb3VibGUoTGFzdFNlZW5JbmRleCk7Ci0g
ICAgYXV0byBjdXJyZW50TW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiA9IGN1cnJlbnQuZ2V0Q29s
dW1uRG91YmxlKE1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lSW5kZXgpOwotICAgIGJvb2wg
Y3VycmVudEdyYW5kZmF0aGVyZWQgPSBjdXJyZW50LmdldENvbHVtbkludChHcmFuZGZhdGhlcmVk
SW5kZXgpOwotICAgIGJvb2wgY3VycmVudElzUHJldmFsZW50ID0gY3VycmVudC5nZXRDb2x1bW5J
bnQoSXNQcmV2YWxlbnRJbmRleCk7Ci0gICAgYm9vbCBjdXJyZW50SXNWZXJ5UHJldmFsZW50ID0g
Y3VycmVudC5nZXRDb2x1bW5JbnQoSXNWZXJ5UHJldmFsZW50SW5kZXgpOwotICAgIHVuc2lnbmVk
IGN1cnJlbnREYXRhUmVjb3Jkc1JlbW92ZWQgPSBjdXJyZW50LmdldENvbHVtbkludChEYXRhUmVj
b3Jkc1JlbW92ZWRJbmRleCk7Ci0gICAgYm9vbCBjdXJyZW50SXNTY2hlZHVsZWRGb3JBbGxCdXRD
b29raWVEYXRhUmVtb3ZhbCA9IGN1cnJlbnQuZ2V0Q29sdW1uSW50KElzU2NoZWR1bGVkRm9yQWxs
QnV0Q29va2llRGF0YVJlbW92YWxJbmRleCk7CisgICAgYXV0byBjdXJyZW50UmVnaXN0cmFibGVE
b21haW4gPSBjdXJyZW50LT5nZXRDb2x1bW5UZXh0KFJlZ2lzdHJhYmxlRG9tYWluSW5kZXgpOwor
ICAgIGF1dG8gY3VycmVudExhc3RTZWVuID0gY3VycmVudC0+Z2V0Q29sdW1uRG91YmxlKExhc3RT
ZWVuSW5kZXgpOworICAgIGF1dG8gY3VycmVudE1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24gPSBj
dXJyZW50LT5nZXRDb2x1bW5Eb3VibGUoTW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWVJbmRl
eCk7CisgICAgYm9vbCBjdXJyZW50R3JhbmRmYXRoZXJlZCA9IGN1cnJlbnQtPmdldENvbHVtbklu
dChHcmFuZGZhdGhlcmVkSW5kZXgpOworICAgIGJvb2wgY3VycmVudElzUHJldmFsZW50ID0gY3Vy
cmVudC0+Z2V0Q29sdW1uSW50KElzUHJldmFsZW50SW5kZXgpOworICAgIGJvb2wgY3VycmVudElz
VmVyeVByZXZhbGVudCA9IGN1cnJlbnQtPmdldENvbHVtbkludChJc1ZlcnlQcmV2YWxlbnRJbmRl
eCk7CisgICAgdW5zaWduZWQgY3VycmVudERhdGFSZWNvcmRzUmVtb3ZlZCA9IGN1cnJlbnQtPmdl
dENvbHVtbkludChEYXRhUmVjb3Jkc1JlbW92ZWRJbmRleCk7CisgICAgYm9vbCBjdXJyZW50SXNT
Y2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCA9IGN1cnJlbnQtPmdldENvbHVtbklu
dChJc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsSW5kZXgpOwogCiAgICAgQVNT
RVJUKGN1cnJlbnRSZWdpc3RyYWJsZURvbWFpbiA9PSBvdGhlci5yZWdpc3RyYWJsZURvbWFpbi5z
dHJpbmcoKSk7CiAKQEAgLTkyNSwxNSArODU5LDE2IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6Om1lcmdlU3RhdGlzdGljKGNvbnN0IFJlc291cmNlTG9hZFN0YXRp
CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBpZiAobV9nZXRSZXNv
dXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQuYmluZFRleHQoMSwgc3RhdGlzdGljLnJlZ2lz
dHJhYmxlRG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9nZXRSZXNv
dXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ST1cpIHsKKyAg
ICBhdXRvIHNjb3BlZFN0YXRlbWVudCA9IGdldFNjb3BlZFN0YXRlbWVudChtX2dldFJlc291cmNl
RGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudCwgZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lUXVl
cnksICJtZXJnZVN0YXRpc3RpYyJfcyk7CisgICAgaWYgKCFzY29wZWRTdGF0ZW1lbnQKKyAgICAg
ICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kVGV4dCgxLCBzdGF0aXN0aWMucmVnaXN0cmFibGVE
b21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSworICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQt
PnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FM
TE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjptZXJnZVN0YXRpc3RpYy4gU3RhdGVtZW50IGZhaWxlZCB0byBiaW5kIG9yIGRvbWFpbiB3
YXMgbm90IGZvdW5kLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJh
c2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1lcmdlKG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5O
YW1lU3RhdGVtZW50LCBzdGF0aXN0aWMpOwotICAgIHJlc2V0U3RhdGVtZW50KG1fZ2V0UmVzb3Vy
Y2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50KTsKKyAgICBtZXJnZShzY29wZWRTdGF0ZW1lbnQu
Z2V0KCksIHN0YXRpc3RpYyk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6Om1lcmdlU3RhdGlzdGljcyhWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4m
JiBzdGF0aXN0aWNzKQpAQCAtOTg3LDE4ICs5MjIsMTkgQEAgc3RhdGljIFNRTGl0ZVN0YXRlbWVu
dCBtYWtlTWVkaWFuV2l0aFVJUXVlcnkoU1FMaXRlRGF0YWJhc2UmIGRhdGFiYXNlKQogCiBWZWN0
b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNp
ZmljRmlyc3RQYXJ0eT4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldFRo
aXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9tYWlucyh1bnNpZ25lZCB0aGlyZFBh
cnR5RG9tYWluSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0aGlyZFBhcnR5RG9tYWluKSBj
b25zdAogewotICAgIGlmIChtX2dldEFsbFN1YlN0YXRpc3RpY3NTdGF0ZW1lbnQuYmluZEludCgx
LCB0aGlyZFBhcnR5RG9tYWluSUQpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX2dldEFsbFN1
YlN0YXRpc3RpY3NTdGF0ZW1lbnQuYmluZEludCgyLCB0aGlyZFBhcnR5RG9tYWluSUQpICE9IFNR
TElURV9PSwotICAgICAgICB8fCBtX2dldEFsbFN1YlN0YXRpc3RpY3NTdGF0ZW1lbnQuYmluZElu
dCgzLCB0aGlyZFBhcnR5RG9tYWluSUQpICE9IFNRTElURV9PSykgeworICAgIGF1dG8gc2NvcGVk
U3RhdGVtZW50ID0gZ2V0U2NvcGVkU3RhdGVtZW50KG1fZ2V0QWxsU3ViU3RhdGlzdGljc1N0YXRl
bWVudCwgZ2V0QWxsU3ViU3RhdGlzdGljc1VuZGVyRG9tYWluUXVlcnksICJnZXRUaGlyZFBhcnR5
RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbnMiX3MpOworICAgIGlmICghc2NvcGVkU3Rh
dGVtZW50CisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZEludCgxLCB0aGlyZFBhcnR5
RG9tYWluSUQpICE9IFNRTElURV9PSworICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRJ
bnQoMiwgdGhpcmRQYXJ0eURvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc2NvcGVk
U3RhdGVtZW50LT5iaW5kSW50KDMsIHRoaXJkUGFydHlEb21haW5JRCkgIT0gU1FMSVRFX09LKSB7
CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6Z2V0VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlE
b21haW4sIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCBtX2RhdGFiYXNlLmxh
c3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogICAg
IFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhRm9y
U3BlY2lmaWNGaXJzdFBhcnR5PiB0aGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURv
bWFpbnM7Ci0gICAgd2hpbGUgKG1fZ2V0QWxsU3ViU3RhdGlzdGljc1N0YXRlbWVudC5zdGVwKCkg
PT0gU1FMSVRFX1JPVykgewotICAgICAgICBSZWdpc3RyYWJsZURvbWFpbiBmaXJzdFBhcnR5RG9t
YWluID0gUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURv
bWFpblN0cmluZyhnZXREb21haW5TdHJpbmdGcm9tRG9tYWluSUQobV9nZXRBbGxTdWJTdGF0aXN0
aWNzU3RhdGVtZW50LmdldENvbHVtbkludCgwKSkpOworICAgIHdoaWxlIChzY29wZWRTdGF0ZW1l
bnQtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKSB7CisgICAgICAgIFJlZ2lzdHJhYmxlRG9tYWluIGZp
cnN0UGFydHlEb21haW4gPSBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJl
Z2lzdHJhYmxlRG9tYWluU3RyaW5nKGdldERvbWFpblN0cmluZ0Zyb21Eb21haW5JRChtX2dldEFs
bFN1YlN0YXRpc3RpY3NTdGF0ZW1lbnQtPmdldENvbHVtbkludCgwKSkpOwogICAgICAgICB0aGly
ZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbnMuYXBwZW5kSWZOb3RDb250YWlu
cyhXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhRm9yU3BlY2lm
aWNGaXJzdFBhcnR5IHsgZmlyc3RQYXJ0eURvbWFpbiwgaGFzU3RvcmFnZUFjY2VzcyhmaXJzdFBh
cnR5RG9tYWluLCB0aGlyZFBhcnR5RG9tYWluKSwgZ2V0TW9zdFJlY2VudGx5VXBkYXRlZFRpbWVz
dGFtcCh0aGlyZFBhcnR5RG9tYWluLCBmaXJzdFBhcnR5RG9tYWluKSB9KTsKICAgICB9Ci0gICAg
cmVzZXRTdGF0ZW1lbnQobV9nZXRBbGxTdWJTdGF0aXN0aWNzU3RhdGVtZW50KTsKICAgICByZXR1
cm4gdGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5zOwogfQogCkBAIC0x
MTIwLDMxICsxMDU2LDMxIEBAIHN0YXRpYyB1bnNpZ25lZCBnZXRNZWRpYW5PZlByZXZhbGVudFJl
c291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24oU1FMaXRlRGF0YWJhc2UmCiAKIHVuc2lnbmVkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXROdW1iZXJPZlByZXZhbGVudFJl
c291cmNlcygpIGNvbnN0CiB7Ci0gICAgYXV0byBzdGVwVmFsdWUgPSBtX2NvdW50UHJldmFsZW50
UmVzb3VyY2VzU3RhdGVtZW50LnN0ZXAoKTsKKyAgICBhdXRvIHNjb3BlZFN0YXRlbWVudCA9IGdl
dFNjb3BlZFN0YXRlbWVudChtX2NvdW50UHJldmFsZW50UmVzb3VyY2VzU3RhdGVtZW50LCBjb3Vu
dFByZXZhbGVudFJlc291cmNlc1F1ZXJ5LCAiZ2V0TnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXMi
X3MpOworICAgIGlmICghc2NvcGVkU3RhdGVtZW50KQorICAgICAgICByZXR1cm4gMDsKKyAgICAK
KyAgICBhdXRvIHN0ZXBWYWx1ZSA9IHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpOwogICAgIGlmIChz
dGVwVmFsdWUgIT0gU1FMSVRFX1JPVyAmJiBzdGVwVmFsdWUgIT0gU1FMSVRFX0RPTkUpIHsKICAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpnZXROdW1iZXJPZlByZXZhbGVudFJlc291cmNlcyBmYWlsZWQgdG8gc3Rl
cCwgZXJyb3IgbWVzc2FnZTogJSIgUFVCTElDX0xPR19TVFJJTkcsIG1fZGF0YWJhc2UubGFzdEVy
cm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQogICAgIGlmIChzdGVwVmFsdWUgPT0gU1FMSVRFX1JPVykgewotICAgICAgICB1
bnNpZ25lZCBwcmV2YWxlbnRSZXNvdXJjZUNvdW50ID0gbV9jb3VudFByZXZhbGVudFJlc291cmNl
c1N0YXRlbWVudC5nZXRDb2x1bW5JbnQoMCk7Ci0gICAgICAgIGlmIChwcmV2YWxlbnRSZXNvdXJj
ZUNvdW50ID49IG1pbmltdW1QcmV2YWxlbnRSZXNvdXJjZXNGb3JUZWxlbWV0cnkpIHsKLSAgICAg
ICAgICAgIHJlc2V0U3RhdGVtZW50KG1fY291bnRQcmV2YWxlbnRSZXNvdXJjZXNTdGF0ZW1lbnQp
OworICAgICAgICB1bnNpZ25lZCBwcmV2YWxlbnRSZXNvdXJjZUNvdW50ID0gc2NvcGVkU3RhdGVt
ZW50LT5nZXRDb2x1bW5JbnQoMCk7CisgICAgICAgIGlmIChwcmV2YWxlbnRSZXNvdXJjZUNvdW50
ID49IG1pbmltdW1QcmV2YWxlbnRSZXNvdXJjZXNGb3JUZWxlbWV0cnkpCiAgICAgICAgICAgICBy
ZXR1cm4gcHJldmFsZW50UmVzb3VyY2VDb3VudDsKLSAgICAgICAgfQogICAgIH0KLSAgICByZXNl
dFN0YXRlbWVudChtX2NvdW50UHJldmFsZW50UmVzb3VyY2VzU3RhdGVtZW50KTsKICAgICByZXR1
cm4gMDsKIH0KIAogdW5zaWduZWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmdldE51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVJKCkgY29uc3QKIHsKLSAgICBpZiAo
bV9jb3VudFByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQuc3Rl
cCgpID09IFNRTElURV9ST1cpIHsKLSAgICAgICAgaW50IGNvdW50ID0gbV9jb3VudFByZXZhbGVu
dFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDApOwot
ICAgICAgICByZXNldFN0YXRlbWVudChtX2NvdW50UHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJ
bnRlcmFjdGlvblN0YXRlbWVudCk7CisgICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSBnZXRTY29w
ZWRTdGF0ZW1lbnQobV9jb3VudFByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb25T
dGF0ZW1lbnQsIGNvdW50UHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvblF1ZXJ5
LCAiZ2V0TnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVUkiX3MpOworICAgIGlmIChzY29w
ZWRTdGF0ZW1lbnQgJiYgc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykgewor
ICAgICAgICBpbnQgY291bnQgPSBzY29wZWRTdGF0ZW1lbnQtPmdldENvbHVtbkludCgwKTsKICAg
ICAgICAgcmV0dXJuIGNvdW50OwogICAgIH0KLSAgICByZXNldFN0YXRlbWVudChtX2NvdW50UHJl
dmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudCk7CiAgICAgcmV0dXJu
IDA7CiB9CiAKQEAgLTEyNTgsMTIgKzExOTQsMTEgQEAgc3RhdGljIHVuc2lnbmVkIG1ha2VTdGF0
aXN0aWNRdWVyeShTUUxpdGVEYXRhYmFzZSYgZGF0YWJhc2UsIFByZXZhbGVudFJlc291cmNlRGEK
IAogdW5zaWduZWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldE51bWJl
ck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVJKCkgY29uc3QKIHsKLSAgICBpZiAobV9jb3Vu
dFByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQuc3RlcCgp
ID09IFNRTElURV9ST1cpIHsKLSAgICAgICAgaW50IGNvdW50ID0gbV9jb3VudFByZXZhbGVudFJl
c291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDApOwot
ICAgICAgICByZXNldFN0YXRlbWVudChtX2NvdW50UHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVz
ZXJJbnRlcmFjdGlvblN0YXRlbWVudCk7CisgICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSBnZXRT
Y29wZWRTdGF0ZW1lbnQobV9jb3VudFByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJh
Y3Rpb25TdGF0ZW1lbnQsIGNvdW50UHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFj
dGlvblF1ZXJ5LCAiZ2V0TnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VUkiX3MpOwor
ICAgIGlmIChzY29wZWRTdGF0ZW1lbnQgJiYgc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgPT0gU1FM
SVRFX1JPVykgeworICAgICAgICBpbnQgY291bnQgPSBtX2NvdW50UHJldmFsZW50UmVzb3VyY2Vz
V2l0aG91dFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudC0+Z2V0Q29sdW1uSW50KDApOwogICAgICAg
ICByZXR1cm4gY291bnQ7CiAgICAgfQotICAgIHJlc2V0U3RhdGVtZW50KG1fY291bnRQcmV2YWxl
bnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uU3RhdGVtZW50KTsKICAgICByZXR1cm4g
MDsKIH0KIApAQCAtMTUxOSw3ICsxNDU0LDggQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6c3luY1N0b3JhZ2VJbW1lZGlhdGVseSgpCiAKIGJvb2wgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgVG9wRnJh
bWVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBjb25zdCBTdWJGcmFtZURvbWFpbiYgc3ViRnJhbWVE
b21haW4pIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHJlbGF0aW9uc2hpcEV4aXN0cyhtX3N0b3JhZ2VB
Y2Nlc3NFeGlzdHNTdGF0ZW1lbnQsIGRvbWFpbklEKHN1YkZyYW1lRG9tYWluKSwgdG9wRnJhbWVE
b21haW4pOworICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50ID0gZ2V0U2NvcGVkU3RhdGVtZW50KG1f
c3RvcmFnZUFjY2Vzc0V4aXN0c1N0YXRlbWVudCwgc3RvcmFnZUFjY2Vzc0V4aXN0c1F1ZXJ5LCAi
aGFzU3RvcmFnZUFjY2VzcyJfcyk7CisgICAgcmV0dXJuIHJlbGF0aW9uc2hpcEV4aXN0cyhzY29w
ZWRTdGF0ZW1lbnQsIGRvbWFpbklEKHN1YkZyYW1lRG9tYWluKSwgdG9wRnJhbWVEb21haW4pOwog
fQogCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpoYXNTdG9yYWdl
QWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgVG9wRnJh
bWVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1l
SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTE4NDEsMTggKzE3NzcsMTcgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0
c1RvU2luY2VTYW0KIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNl
dFVzZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBib29sIGhh
ZFVzZXJJbnRlcmFjdGlvbiwgV2FsbFRpbWUgbW9zdFJlY2VudEludGVyYWN0aW9uKQogewogICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgaWYgKG1fbW9zdFJlY2VudFVzZXJJ
bnRlcmFjdGlvblN0YXRlbWVudC5iaW5kSW50KDEsIGhhZFVzZXJJbnRlcmFjdGlvbikgIT0gU1FM
SVRFX09LCi0gICAgICAgIHx8IG1fbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudC5i
aW5kRG91YmxlKDIsIG1vc3RSZWNlbnRJbnRlcmFjdGlvbi5zZWNvbmRzU2luY2VFcG9jaCgpLnZh
bHVlKCkpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX21vc3RSZWNlbnRVc2VySW50ZXJhY3Rp
b25TdGF0ZW1lbnQuYmluZFRleHQoMywgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKLSAg
ICAgICAgfHwgbV9tb3N0UmVjZW50VXNlckludGVyYWN0aW9uU3RhdGVtZW50LnN0ZXAoKSAhPSBT
UUxJVEVfRE9ORSkgeworICAgIAorICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50ID0gZ2V0U2NvcGVk
U3RhdGVtZW50KG1fbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudCwgbW9zdFJlY2Vu
dFVzZXJJbnRlcmFjdGlvblF1ZXJ5LCAic2V0VXNlckludGVyYWN0aW9uIl9zKTsKKyAgICBpZiAo
IXNjb3BlZFN0YXRlbWVudAorICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQoMSwg
aGFkVXNlckludGVyYWN0aW9uKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc2NvcGVkU3RhdGVt
ZW50LT5iaW5kRG91YmxlKDIsIG1vc3RSZWNlbnRJbnRlcmFjdGlvbi5zZWNvbmRzU2luY2VFcG9j
aCgpLnZhbHVlKCkpICE9IFNRTElURV9PSworICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJp
bmRUZXh0KDMsIGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHNjb3Bl
ZFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7CiAgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpzZXRVc2VySW50ZXJhY3Rpb24sIGVycm9yIG1lc3NhZ2U6ICV7cHJp
dmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotCi0gICAgaW50IHJlc2V0
UmVzdWx0ID0gbV9tb3N0UmVjZW50VXNlckludGVyYWN0aW9uU3RhdGVtZW50LnJlc2V0KCk7Ci0g
ICAgQVNTRVJUX1VOVVNFRChyZXNldFJlc3VsdCwgcmVzZXRSZXN1bHQgPT0gU1FMSVRFX09LKTsK
IH0KIAogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bG9nVXNlcklu
dGVyYWN0aW9uKGNvbnN0IFRvcEZyYW1lRG9tYWluJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTE5MDEsMjQgKzE4MzYsMjAgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJVc2VySW50ZXJhY3Rp
b24oY29uc3QgUmVnaXN0cmFibGUKIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6Omhhc0hhZFVzZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9t
YWluLCBPcGVyYXRpbmdEYXRlc1dpbmRvdyBvcGVyYXRpbmdEYXRlc1dpbmRvdykKIHsKICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLQotICAgIGlmIChtX2hhZFVzZXJJbnRlcmFjdGlv
blN0YXRlbWVudC5iaW5kVGV4dCgxLCBkb21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSwotICAg
ICAgICB8fCBtX2hhZFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX1JP
VykgeworICAgIAorICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50ID0gZ2V0U2NvcGVkU3RhdGVtZW50
KG1faGFkVXNlckludGVyYWN0aW9uU3RhdGVtZW50LCBoYWRVc2VySW50ZXJhY3Rpb25RdWVyeSwg
Imhhc0hhZFVzZXJJbnRlcmFjdGlvbiJfcyk7CisgICAgaWYgKCFzY29wZWRTdGF0ZW1lbnQKKyAg
ICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kVGV4dCgxLCBkb21haW4uc3RyaW5nKCkpICE9
IFNRTElURV9PSworICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVf
Uk9XKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQs
ICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptX2hhZFVzZXJJbnRl
cmFjdGlvblN0YXRlbWVudCBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhp
cywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0KLSAgICAgICAgaW50IHJlc2V0UmVzdWx0
ID0gbV9oYWRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQucmVzZXQoKTsKLSAgICAgICAgQVNTRVJU
X1VOVVNFRChyZXNldFJlc3VsdCwgcmVzZXRSZXN1bHQgPT0gU1FMSVRFX09LKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGJvb2wgaGFkVXNlckludGVyYWN0aW9uID0gISFt
X2hhZFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudC5nZXRDb2x1bW5JbnQoMCk7Ci0gICAgaWYgKCFo
YWRVc2VySW50ZXJhY3Rpb24pIHsKLSAgICAgICAgaW50IHJlc2V0UmVzdWx0ID0gbV9oYWRVc2Vy
SW50ZXJhY3Rpb25TdGF0ZW1lbnQucmVzZXQoKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChyZXNl
dFJlc3VsdCwgcmVzZXRSZXN1bHQgPT0gU1FMSVRFX09LKTsKKyAgICBib29sIGhhZFVzZXJJbnRl
cmFjdGlvbiA9ICEhc2NvcGVkU3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMCk7CisgICAgaWYgKCFo
YWRVc2VySW50ZXJhY3Rpb24pCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CiAgICAgCi0g
ICAgV2FsbFRpbWUgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUgPSBXYWxsVGltZTo6ZnJv
bVJhd1NlY29uZHMobV9oYWRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQuZ2V0Q29sdW1uRG91Ymxl
KDEpKTsKKyAgICBXYWxsVGltZSBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSA9IFdhbGxU
aW1lOjpmcm9tUmF3U2Vjb25kcyhzY29wZWRTdGF0ZW1lbnQtPmdldENvbHVtbkRvdWJsZSgxKSk7
CiAKICAgICBpZiAoaGFzU3RhdGlzdGljc0V4cGlyZWQobW9zdFJlY2VudFVzZXJJbnRlcmFjdGlv
blRpbWUsIG9wZXJhdGluZ0RhdGVzV2luZG93KSkgewogICAgICAgICAvLyBEcm9wIHByaXZhY3kg
c2Vuc2l0aXZlIGRhdGEgYmVjYXVzZSB3ZSBubyBsb25nZXIgbmVlZCBpdC4KQEAgLTE5MjcsMTAg
KzE4NTgsNiBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpoYXNI
YWRVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFibAogICAgICAgICBjbGVhclVzZXJJbnRl
cmFjdGlvbihkb21haW4sIFtdIHsgfSk7CiAgICAgICAgIGhhZFVzZXJJbnRlcmFjdGlvbiA9IGZh
bHNlOwogICAgIH0KLSAgICAKLSAgICBpbnQgcmVzZXRSZXN1bHQgPSBtX2hhZFVzZXJJbnRlcmFj
dGlvblN0YXRlbWVudC5yZXNldCgpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzZXRSZXN1bHQsIHJl
c2V0UmVzdWx0ID09IFNRTElURV9PSyk7Ci0KICAgICByZXR1cm4gaGFkVXNlckludGVyYWN0aW9u
OwogfQogCkBAIC0xOTQwLDI4ICsxODY3LDI2IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OnNldFByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlCiAg
ICAgaWYgKHNob3VsZFNraXAoZG9tYWluKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1f
dXBkYXRlUHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQuYmluZEludCgxLCAxKSAhPSBTUUxJVEVf
T0sKLSAgICAgICAgfHwgbV91cGRhdGVQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudC5iaW5kVGV4
dCgyLCBkb21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX3VwZGF0ZVBy
ZXZhbGVudFJlc291cmNlU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgeworICAgIGF1
dG8gc2NvcGVkVXBkYXRlUHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQgPSBnZXRTY29wZWRTdGF0
ZW1lbnQobV91cGRhdGVQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudCwgdXBkYXRlUHJldmFsZW50
UmVzb3VyY2VRdWVyeSwgInNldFByZXZhbGVudFJlc291cmNlIl9zKTsKKyAgICBpZiAoIXNjb3Bl
ZFVwZGF0ZVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50CisgICAgICAgIHx8IHNjb3BlZFVwZGF0
ZVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50LT5iaW5kSW50KDEsIDEpICE9IFNRTElURV9PSwor
ICAgICAgICB8fCBzY29wZWRVcGRhdGVQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudC0+YmluZFRl
eHQoMiwgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc2NvcGVkVXBk
YXRlUHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewog
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bV91cGRhdGVQcmV2YWxlbnRSZXNv
dXJjZVN0YXRlbWVudCBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywg
bV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAotICAgIGludCByZXNldFJlc3VsdCA9IG1f
dXBkYXRlUHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQucmVzZXQoKTsKLSAgICBBU1NFUlRfVU5V
U0VEKHJlc2V0UmVzdWx0LCByZXNldFJlc3VsdCA9PSBTUUxJVEVfT0spOwogCisgICAgYXV0byBz
Y29wZWRVcGRhdGVWZXJ5UHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQgPSBnZXRTY29wZWRTdGF0
ZW1lbnQobV91cGRhdGVWZXJ5UHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQsIHVwZGF0ZVZlcnlQ
cmV2YWxlbnRSZXNvdXJjZVF1ZXJ5LCAic2V0UHJldmFsZW50UmVzb3VyY2UgdXBkYXRlVmVyeVBy
ZXZhbGVudFJlc291cmNlIl9zKTsKICAgICBpZiAobmV3UHJldmFsZW5jZSA9PSBSZXNvdXJjZUxv
YWRQcmV2YWxlbmNlOjpWZXJ5SGlnaCkgewotICAgICAgICBpZiAobV91cGRhdGVWZXJ5UHJldmFs
ZW50UmVzb3VyY2VTdGF0ZW1lbnQuYmluZEludCgxLCAxKSAhPSBTUUxJVEVfT0sKLSAgICAgICAg
ICAgIHx8IG1fdXBkYXRlVmVyeVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50LmJpbmRUZXh0KDIs
IGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBtX3VwZGF0ZVZl
cnlQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKKyAg
ICAgICAgaWYgKCFzY29wZWRVcGRhdGVWZXJ5UHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQKKyAg
ICAgICAgICAgIHx8IHNjb3BlZFVwZGF0ZVZlcnlQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudC0+
YmluZEludCgxLCAxKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHNjb3BlZFVwZGF0ZVZl
cnlQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudC0+YmluZFRleHQoMiwgZG9tYWluLnN0cmluZygp
KSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHNjb3BlZFVwZGF0ZVZlcnlQcmV2YWxlbnRS
ZXNvdXJjZVN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7CiAgICAgICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bV91cGRhdGVWZXJ5UHJldmFsZW50UmVzb3VyY2VT
dGF0ZW1lbnQgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0
YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLQotICAgICAgICBpbnQgcmVzZXRSZXN1
bHQgPSBtX3VwZGF0ZVZlcnlQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudC5yZXNldCgpOwotICAg
ICAgICBBU1NFUlRfVU5VU0VEKHJlc2V0UmVzdWx0LCByZXNldFJlc3VsdCA9PSBTUUxJVEVfT0sp
OwogICAgIH0KIAogICAgIFN0ZFNldDx1bnNpZ25lZD4gbm9uUHJldmFsZW50UmVkaXJlY3Rpb25T
b3VyY2VzOwpAQCAtMTk5Miw5ICsxOTE3LDEzIEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OmR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKENvbXBsZXRpb25ICiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBhdXRvIHNjb3BlZFN0YXRlbWVudCA9IGdldFNj
b3BlZFN0YXRlbWVudChtX2dldEFsbERvbWFpbnNTdGF0ZW1lbnQsIGdldEFsbERvbWFpbnNRdWVy
eSwgImR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIl9zKTsKKyAgICBpZiAoIXNjb3BlZFN0YXRl
bWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIAogICAgIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnM7
Ci0gICAgd2hpbGUgKG1fZ2V0QWxsRG9tYWluc1N0YXRlbWVudC5zdGVwKCkgPT0gU1FMSVRFX1JP
VykKLSAgICAgICAgZG9tYWlucy5hcHBlbmQobV9nZXRBbGxEb21haW5zU3RhdGVtZW50LmdldENv
bHVtblRleHQoMCkpOworICAgIHdoaWxlIChzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJ
VEVfUk9XKQorICAgICAgICBkb21haW5zLmFwcGVuZChzY29wZWRTdGF0ZW1lbnQtPmdldENvbHVt
blRleHQoMCkpOwogICAgIHN0ZDo6c29ydChkb21haW5zLmJlZ2luKCksIGRvbWFpbnMuZW5kKCks
IFdURjo6Y29kZVBvaW50Q29tcGFyZUxlc3NUaGFuKTsKIAogICAgIFN0cmluZ0J1aWxkZXIgcmVz
dWx0OwpAQCAtMjAxMCwyOCArMTkzOSwyMCBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhDb21wbGV0aW9uSAogICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXG4nKTsKICAgICAgICAgfQogICAgIH0KLSAgICByZXNl
dFN0YXRlbWVudChtX2dldEFsbERvbWFpbnNTdGF0ZW1lbnQpOwogICAgIGNvbXBsZXRpb25IYW5k
bGVyKHJlc3VsdC50b1N0cmluZygpKTsKIH0KIAotYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6cHJlZGljYXRlVmFsdWVGb3JEb21haW4oV2ViQ29yZTo6U1FMaXRlU3Rh
dGVtZW50JiBwcmVkaWNhdGVTdGF0ZW1lbnQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21h
aW4pIGNvbnN0Citib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcmVk
aWNhdGVWYWx1ZUZvckRvbWFpbihTUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZSYgcHJlZGlj
YXRlU3RhdGVtZW50LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKSBjb25zdAogewog
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIAotICAgIGlmIChwcmVkaWNhdGVT
dGF0ZW1lbnQuYmluZFRleHQoMSwgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKLSAgICAg
ICAgfHwgcHJlZGljYXRlU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7Ci0KLSAgICAg
ICAgaW50IHJlc2V0UmVzdWx0ID0gcHJlZGljYXRlU3RhdGVtZW50LnJlc2V0KCk7Ci0gICAgICAg
IEFTU0VSVF9VTlVTRUQocmVzZXRSZXN1bHQsIHJlc2V0UmVzdWx0ID09IFNRTElURV9PSyk7CiAK
KyAgICBpZiAoIXByZWRpY2F0ZVN0YXRlbWVudAorICAgICAgICB8fCBwcmVkaWNhdGVTdGF0ZW1l
bnQtPmJpbmRUZXh0KDEsIGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8
IHByZWRpY2F0ZVN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ST1cpIHsKICAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnByZWRpY2F0ZVZhbHVlRm9yRG9tYWluIGZhaWxlZCB0
byBiaW5kLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFz
dEVycm9yTXNnKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotCi0gICAgYm9vbCBy
ZXN1bHQgPSAhIXByZWRpY2F0ZVN0YXRlbWVudC5nZXRDb2x1bW5JbnQoMCk7Ci0gICAgaW50IHJl
c2V0UmVzdWx0ID0gcHJlZGljYXRlU3RhdGVtZW50LnJlc2V0KCk7Ci0gICAgQVNTRVJUX1VOVVNF
RChyZXNldFJlc3VsdCwgcmVzZXRSZXN1bHQgPT0gU1FMSVRFX09LKTsKLSAgICByZXR1cm4gcmVz
dWx0OworICAgIHJldHVybiAhIXByZWRpY2F0ZVN0YXRlbWVudC0+Z2V0Q29sdW1uSW50KDApOwog
fQogCiBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppc1ByZXZhbGVu
dFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pIGNvbnN0CkBAIC0yMDQx
LDcgKzE5NjIsOCBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpp
c1ByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRAogICAgIGlmIChzaG91bGRTa2lw
KGRvbWFpbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBwcmVkaWNhdGVW
YWx1ZUZvckRvbWFpbihtX2lzUHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQsIGRvbWFpbik7Cisg
ICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSBnZXRTY29wZWRTdGF0ZW1lbnQobV9pc1ByZXZhbGVu
dFJlc291cmNlU3RhdGVtZW50LCBpc1ByZXZhbGVudFJlc291cmNlUXVlcnksICJpc1ByZXZhbGVu
dFJlc291cmNlIl9zKTsKKyAgICByZXR1cm4gcHJlZGljYXRlVmFsdWVGb3JEb21haW4oc2NvcGVk
U3RhdGVtZW50LCBkb21haW4pOwogfQogCiBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjppc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgZG9tYWluKSBjb25zdApAQCAtMjA1MSwyOCArMTk3MywzMiBAQCBib29sIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBS
ZWdpc3RyYQogICAgIGlmIChzaG91bGRTa2lwKGRvbWFpbikpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIHJldHVybiBwcmVkaWNhdGVWYWx1ZUZvckRvbWFpbihtX2lzVmVyeVByZXZhbGVu
dFJlc291cmNlU3RhdGVtZW50LCBkb21haW4pOworICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50ID0g
Z2V0U2NvcGVkU3RhdGVtZW50KG1faXNWZXJ5UHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQsIGlz
VmVyeVByZXZhbGVudFJlc291cmNlUXVlcnksICJpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSJfcyk7
CisgICAgcmV0dXJuIHByZWRpY2F0ZVZhbHVlRm9yRG9tYWluKHNjb3BlZFN0YXRlbWVudCwgZG9t
YWluKTsKIH0KIAogYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aXNS
ZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKGNvbnN0IFN1YlJlc291cmNlRG9tYWluJiBzdWJy
ZXNvdXJjZURvbWFpbiwgY29uc3QgVG9wRnJhbWVEb21haW4mIHRvcEZyYW1lRG9tYWluKSBjb25z
dAogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgcmV0dXJuIHJlbGF0
aW9uc2hpcEV4aXN0cyhtX3N1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbkV4aXN0cywgZG9t
YWluSUQoc3VicmVzb3VyY2VEb21haW4pLCB0b3BGcmFtZURvbWFpbik7CisgICAgYXV0byBzY29w
ZWRTdGF0ZW1lbnQgPSBnZXRTY29wZWRTdGF0ZW1lbnQobV9zdWJyZXNvdXJjZVVuZGVyVG9wRnJh
bWVEb21haW5FeGlzdHNTdGF0ZW1lbnQsIHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbkV4
aXN0c1F1ZXJ5LCAiaXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyIl9zKTsKKyAgICByZXR1
cm4gcmVsYXRpb25zaGlwRXhpc3RzKHNjb3BlZFN0YXRlbWVudCwgZG9tYWluSUQoc3VicmVzb3Vy
Y2VEb21haW4pLCB0b3BGcmFtZURvbWFpbik7CiB9CiAKIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OmlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcihjb25zdCBTdWJG
cmFtZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFRvcEZyYW1lRG9tYWluJiB0b3BGcmFt
ZURvbWFpbikgY29uc3QKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLQotICAg
IHJldHVybiByZWxhdGlvbnNoaXBFeGlzdHMobV9zdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5F
eGlzdHMsIGRvbWFpbklEKHN1YkZyYW1lRG9tYWluKSwgdG9wRnJhbWVEb21haW4pOworICAgIAor
ICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50ID0gZ2V0U2NvcGVkU3RhdGVtZW50KG1fc3ViZnJhbWVV
bmRlclRvcEZyYW1lRG9tYWluRXhpc3RzU3RhdGVtZW50LCBzdWJmcmFtZVVuZGVyVG9wRnJhbWVE
b21haW5FeGlzdHNRdWVyeSwgImlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlciJfcyk7CisgICAg
cmV0dXJuIHJlbGF0aW9uc2hpcEV4aXN0cyhzY29wZWRTdGF0ZW1lbnQsIGRvbWFpbklEKHN1YkZy
YW1lRG9tYWluKSwgdG9wRnJhbWVEb21haW4pOwogfQogCiBib29sIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjppc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oY29uc3QgUmVk
aXJlY3RlZEZyb21Eb21haW4mIHJlZGlyZWN0ZWRGcm9tRG9tYWluLCBjb25zdCBSZWRpcmVjdGVk
VG9Eb21haW4mIHJlZGlyZWN0ZWRUb0RvbWFpbikgY29uc3QKIHsKICAgICBBU1NFUlQoIVJ1bkxv
b3A6OmlzTWFpbigpKTsKIAotICAgIHJldHVybiByZWxhdGlvbnNoaXBFeGlzdHMobV9zdWJyZXNv
dXJjZVVuaXF1ZVJlZGlyZWN0c1RvRXhpc3RzLCBkb21haW5JRChyZWRpcmVjdGVkRnJvbURvbWFp
biksIHJlZGlyZWN0ZWRUb0RvbWFpbik7CisgICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSBnZXRT
Y29wZWRTdGF0ZW1lbnQobV9zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvRXhpc3RzU3RhdGVt
ZW50LCBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvRXhpc3RzUXVlcnksICJpc1JlZ2lzdGVy
ZWRBc1JlZGlyZWN0aW5nVG8iX3MpOworICAgIHJldHVybiByZWxhdGlvbnNoaXBFeGlzdHMoc2Nv
cGVkU3RhdGVtZW50LCBkb21haW5JRChyZWRpcmVjdGVkRnJvbURvbWFpbiksIHJlZGlyZWN0ZWRU
b0RvbWFpbik7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmNsZWFyUHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikK
QEAgLTIwODQsMTUgKzIwMTAsMTYgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWIKICAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyUHJldmFsZW50UmVzb3VyY2Ugd2FzIG5v
dCBjb21wbGV0ZWQgZHVlIHRvIGZhaWxlZCBpbnNlcnQgYXR0ZW1wdCIsIHRoaXMpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIGlmIChtX2NsZWFyUHJldmFsZW50UmVzb3VyY2VTdGF0ZW1l
bnQuYmluZFRleHQoMSwgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwg
bV9jbGVhclByZXZhbGVudFJlc291cmNlU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkg
eworICAgIAorICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50ID0gZ2V0U2NvcGVkU3RhdGVtZW50KG1f
Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudCwgY2xlYXJQcmV2YWxlbnRSZXNvdXJjZVF1
ZXJ5LCAiY2xlYXJQcmV2YWxlbnRSZXNvdXJjZSJfcyk7CisgICAgCisgICAgaWYgKCFzY29wZWRT
dGF0ZW1lbnQKKyAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kVGV4dCgxLCBkb21haW4u
c3RyaW5nKCkpICE9IFNRTElURV9PSworICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPnN0ZXAo
KSAhPSBTUUxJVEVfRE9ORSkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VE
KG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZSwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlz
LCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCi0gICAgaW50IHJlc2V0UmVzdWx0ID0g
bV9jbGVhclByZXZhbGVudFJlc291cmNlU3RhdGVtZW50LnJlc2V0KCk7Ci0gICAgQVNTRVJUX1VO
VVNFRChyZXNldFJlc3VsdCwgcmVzZXRSZXN1bHQgPT0gU1FMSVRFX09LKTsKIH0KIAogdm9pZCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0R3JhbmRmYXRoZXJlZChjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBib29sIHZhbHVlKQpAQCAtMjEwNCwxNiArMjAz
MSwxNSBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRHcmFu
ZGZhdGhlcmVkKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYQogICAgICAgICBSRUxFQVNFX0xPR19FUlJP
Ul9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6c2V0R3JhbmRmYXRoZXJlZCB3YXMgbm90IGNvbXBsZXRlZCBkdWUgdG8gZmFp
bGVkIGluc2VydCBhdHRlbXB0IiwgdGhpcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
aWYgKG1fdXBkYXRlR3JhbmRmYXRoZXJlZFN0YXRlbWVudC5iaW5kSW50KDEsIHZhbHVlKSAhPSBT
UUxJVEVfT0sKLSAgICAgICAgfHwgbV91cGRhdGVHcmFuZGZhdGhlcmVkU3RhdGVtZW50LmJpbmRU
ZXh0KDIsIGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fdXBkYXRl
R3JhbmRmYXRoZXJlZFN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKKyAgICAKKyAg
ICBhdXRvIHNjb3BlZFN0YXRlbWVudCA9IGdldFNjb3BlZFN0YXRlbWVudChtX3VwZGF0ZUdyYW5k
ZmF0aGVyZWRTdGF0ZW1lbnQsIHVwZGF0ZUdyYW5kZmF0aGVyZWRRdWVyeSwgInNldEdyYW5kZmF0
aGVyZWQiX3MpOworICAgIGlmICghc2NvcGVkU3RhdGVtZW50CisgICAgICAgIHx8IHNjb3BlZFN0
YXRlbWVudC0+YmluZEludCgxLCB2YWx1ZSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHNjb3Bl
ZFN0YXRlbWVudC0+YmluZFRleHQoMiwgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKKyAg
ICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldEdyYW5kZmF0aGVyZWQgZmFpbGVkIHRv
IGJpbmQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0
RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIAotICAgIGludCByZXNldFJlc3VsdCA9IG1fdXBkYXRlR3JhbmRmYXRo
ZXJlZFN0YXRlbWVudC5yZXNldCgpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzZXRSZXN1bHQsIHJl
c2V0UmVzdWx0ID09IFNRTElURV9PSyk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OnNldElzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwo
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgYm9vbCB2YWx1ZSkKQEAgLTIxMjUsMTYg
KzIwNTEsMTcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0
SXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3YKICAgICAgICAgUkVMRUFTRV9MT0df
RVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OnNldElzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwg
d2FzIG5vdCBjb21wbGV0ZWQgZHVlIHRvIGZhaWxlZCBpbnNlcnQgYXR0ZW1wdCIsIHRoaXMpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmIChtX3VwZGF0ZUlzU2NoZWR1bGVkRm9yQWxs
QnV0Q29va2llRGF0YVJlbW92YWxTdGF0ZW1lbnQuYmluZEludCgxLCB2YWx1ZSkgIT0gU1FMSVRF
X09LCi0gICAgICAgIHx8IG1fdXBkYXRlSXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVt
b3ZhbFN0YXRlbWVudC5iaW5kVGV4dCgyLCBkb21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSwot
ICAgICAgICB8fCBtX3VwZGF0ZUlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWxT
dGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ET05FKSB7CisgICAgCisgICAgYXV0byBzY29wZWRT
dGF0ZW1lbnQgPSBnZXRTY29wZWRTdGF0ZW1lbnQobV91cGRhdGVJc1NjaGVkdWxlZEZvckFsbEJ1
dENvb2tpZURhdGFSZW1vdmFsU3RhdGVtZW50LCB1cGRhdGVJc1NjaGVkdWxlZEZvckFsbEJ1dENv
b2tpZURhdGFSZW1vdmFsUXVlcnksICJzZXRJc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFS
ZW1vdmFsIl9zKTsKKyAgICBpZiAoIXNjb3BlZFN0YXRlbWVudAorICAgICAgICB8fCBzY29wZWRT
dGF0ZW1lbnQtPmJpbmRJbnQoMSwgdmFsdWUpICE9IFNRTElURV9PSworICAgICAgICB8fCBzY29w
ZWRTdGF0ZW1lbnQtPmJpbmRUZXh0KDIsIGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCisg
ICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7CiAgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRJc1NjaGVkdWxlZEZvckFsbEJ1dENv
b2tpZURhdGFSZW1vdmFsIGZhaWxlZCB0byBiaW5kLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9
cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwogICAgIH0KLQotICAgIHJlc2V0U3RhdGVtZW50
KG1fdXBkYXRlSXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbFN0YXRlbWVudCk7
CiB9CisKIFNlY29uZHMgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldE1v
c3RSZWNlbnRseVVwZGF0ZWRUaW1lc3RhbXAoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkRv
bWFpbiwgY29uc3QgVG9wRnJhbWVEb21haW4mIHRvcEZyYW1lRG9tYWluKSBjb25zdAogewogICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtMjE0NCwzMyArMjA3MSwzMyBAQCBTZWNv
bmRzIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXRNb3N0UmVjZW50bHlV
cGRhdGVkVGltZXN0YW1wKGNvbgogCiAgICAgaWYgKCFzdWJGcmFtZURvbWFpbklEIHx8ICF0b3BG
cmFtZURvbWFpbklEKQogICAgICAgICByZXR1cm4gU2Vjb25kcyB7IFJlc291cmNlTG9hZFN0YXRp
c3RpY3M6Ok5vRXhpc3RpbmdUaW1lc3RhbXAgfTsKLQotICAgIGlmIChtX2dldE1vc3RSZWNlbnRs
eVVwZGF0ZWRUaW1lc3RhbXBTdGF0ZW1lbnQuYmluZEludCgxLCAqc3ViRnJhbWVEb21haW5JRCkg
IT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fZ2V0TW9zdFJlY2VudGx5VXBkYXRlZFRpbWVzdGFt
cFN0YXRlbWVudC5iaW5kSW50KDIsICp0b3BGcmFtZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKLSAg
ICAgICAgfHwgbV9nZXRNb3N0UmVjZW50bHlVcGRhdGVkVGltZXN0YW1wU3RhdGVtZW50LmJpbmRJ
bnQoMywgKnN1YkZyYW1lRG9tYWluSUQpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX2dldE1v
c3RSZWNlbnRseVVwZGF0ZWRUaW1lc3RhbXBTdGF0ZW1lbnQuYmluZEludCg0LCAqdG9wRnJhbWVE
b21haW5JRCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fZ2V0TW9zdFJlY2VudGx5VXBkYXRl
ZFRpbWVzdGFtcFN0YXRlbWVudC5iaW5kSW50KDUsICpzdWJGcmFtZURvbWFpbklEKSAhPSBTUUxJ
VEVfT0sKLSAgICAgICAgfHwgbV9nZXRNb3N0UmVjZW50bHlVcGRhdGVkVGltZXN0YW1wU3RhdGVt
ZW50LmJpbmRJbnQoNiwgKnRvcEZyYW1lRG9tYWluSUQpICE9IFNRTElURV9PSwotICAgICAgICB8
fCBtX2dldE1vc3RSZWNlbnRseVVwZGF0ZWRUaW1lc3RhbXBTdGF0ZW1lbnQuYmluZEludCg3LCAq
c3ViRnJhbWVEb21haW5JRCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fZ2V0TW9zdFJlY2Vu
dGx5VXBkYXRlZFRpbWVzdGFtcFN0YXRlbWVudC5iaW5kSW50KDgsICp0b3BGcmFtZURvbWFpbklE
KSAhPSBTUUxJVEVfT0spIHsKKyAgICAKKyAgICBhdXRvIHNjb3BlZFN0YXRlbWVudCA9IGdldFNj
b3BlZFN0YXRlbWVudChtX2dldE1vc3RSZWNlbnRseVVwZGF0ZWRUaW1lc3RhbXBTdGF0ZW1lbnQs
IGdldE1vc3RSZWNlbnRseVVwZGF0ZWRUaW1lc3RhbXBRdWVyeSwgImdldE1vc3RSZWNlbnRseVVw
ZGF0ZWRUaW1lc3RhbXAiX3MpOworICAgIGlmICghc2NvcGVkU3RhdGVtZW50CisgICAgICAgIHx8
IHNjb3BlZFN0YXRlbWVudC0+YmluZEludCgxLCAqc3ViRnJhbWVEb21haW5JRCkgIT0gU1FMSVRF
X09LCisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZEludCgyLCAqdG9wRnJhbWVEb21h
aW5JRCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZEludCgz
LCAqc3ViRnJhbWVEb21haW5JRCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHNjb3BlZFN0YXRl
bWVudC0+YmluZEludCg0LCAqdG9wRnJhbWVEb21haW5JRCkgIT0gU1FMSVRFX09LCisgICAgICAg
IHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZEludCg1LCAqc3ViRnJhbWVEb21haW5JRCkgIT0gU1FM
SVRFX09LCisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZEludCg2LCAqdG9wRnJhbWVE
b21haW5JRCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZElu
dCg3LCAqc3ViRnJhbWVEb21haW5JRCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHNjb3BlZFN0
YXRlbWVudC0+YmluZEludCg4LCAqdG9wRnJhbWVEb21haW5JRCkgIT0gU1FMSVRFX09LKSB7CiAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXRNb3N0UmVjZW50bHlVcGRhdGVk
VGltZXN0YW1wIGZhaWxlZCB0byBiaW5kLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRo
aXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgcmV0dXJuIFNlY29uZHMgeyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpO
b0V4aXN0aW5nVGltZXN0YW1wICB9OwogICAgIH0KLSAgICBpZiAobV9nZXRNb3N0UmVjZW50bHlV
cGRhdGVkVGltZXN0YW1wU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7Ci0gICAgICAg
IHJlc2V0U3RhdGVtZW50KG1fZ2V0TW9zdFJlY2VudGx5VXBkYXRlZFRpbWVzdGFtcFN0YXRlbWVu
dCk7CisgICAgaWYgKHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ST1cpCiAgICAg
ICAgIHJldHVybiBTZWNvbmRzIHsgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6Tm9FeGlzdGluZ1Rp
bWVzdGFtcCAgfTsKLSAgICB9Ci0gICAgZG91YmxlIG1vc3RSZWNlbnRseVVwZGF0ZWRUaW1lc3Rh
bXAgPSBtX2dldE1vc3RSZWNlbnRseVVwZGF0ZWRUaW1lc3RhbXBTdGF0ZW1lbnQuZ2V0Q29sdW1u
RG91YmxlKDApOwotICAgIHJlc2V0U3RhdGVtZW50KG1fZ2V0TW9zdFJlY2VudGx5VXBkYXRlZFRp
bWVzdGFtcFN0YXRlbWVudCk7Ci0gICAgcmV0dXJuIFNlY29uZHMgeyBtb3N0UmVjZW50bHlVcGRh
dGVkVGltZXN0YW1wIH07CisKKyAgICByZXR1cm4gU2Vjb25kcyB7IHNjb3BlZFN0YXRlbWVudC0+
Z2V0Q29sdW1uRG91YmxlKDApIH07CiB9CiAKIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OmlzR3JhbmRmYXRoZXJlZChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9t
YWluKSBjb25zdAogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgcmV0
dXJuIHByZWRpY2F0ZVZhbHVlRm9yRG9tYWluKG1faXNHcmFuZGZhdGhlcmVkU3RhdGVtZW50LCBk
b21haW4pOworICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50ID0gZ2V0U2NvcGVkU3RhdGVtZW50KG1f
aXNHcmFuZGZhdGhlcmVkU3RhdGVtZW50LCBpc0dyYW5kZmF0aGVyZWRRdWVyeSwgImlzR3JhbmRm
YXRoZXJlZCJfcyk7CisgICAgcmV0dXJuIHByZWRpY2F0ZVZhbHVlRm9yRG9tYWluKHNjb3BlZFN0
YXRlbWVudCwgZG9tYWluKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6c2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluKGNvbnN0IFN1YkZyYW1lRG9t
YWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgVG9wRnJhbWVEb21haW4mIHRvcEZyYW1lRG9tYWlu
KQpAQCAtMjI1NSwyNCArMjE4MiwyMCBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpzZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShjb25zdCBUbwogc3RkOjpw
YWlyPFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpBZGRlZFJlY29yZCwgT3B0
aW9uYWw8dW5zaWduZWQ+PiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZW5z
dXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIGRvbWFpbikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLQot
ICAgIGlmIChtX2RvbWFpbklERnJvbVN0cmluZ1N0YXRlbWVudC5iaW5kVGV4dCgxLCBkb21haW4u
c3RyaW5nKCkpICE9IFNRTElURV9PSykgeworICAgIAorICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50
ID0gZ2V0U2NvcGVkU3RhdGVtZW50KG1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50LCBkb21h
aW5JREZyb21TdHJpbmdRdWVyeSwgImVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJh
YmxlRG9tYWluIl9zKTsKKyAgICBpZiAoIXNjb3BlZFN0YXRlbWVudAorICAgICAgICB8fCBzY29w
ZWRTdGF0ZW1lbnQtPmJpbmRUZXh0KDEsIGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LKSB7
CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAt
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjplbnN1cmVSZXNvdXJjZVN0YXRp
c3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbiBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0
ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4geyBBZGRlZFJlY29yZDo6Tm8sIDAgfTsKICAg
ICB9CiAgICAgCi0gICAgaWYgKG1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50LnN0ZXAoKSA9
PSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIHVuc2lnbmVkIGRvbWFpbklEID0gbV9kb21haW5JREZy
b21TdHJpbmdTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDApOwotCi0gICAgICAgIGludCByZXNldFJl
c3VsdCA9IG1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50LnJlc2V0KCk7Ci0gICAgICAgIEFT
U0VSVF9VTlVTRUQocmVzZXRSZXN1bHQsIHJlc2V0UmVzdWx0ID09IFNRTElURV9PSyk7CisgICAg
aWYgKHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpIHsKKyAgICAgICAgdW5z
aWduZWQgZG9tYWluSUQgPSBzY29wZWRTdGF0ZW1lbnQtPmdldENvbHVtbkludCgwKTsKICAgICAg
ICAgcmV0dXJuIHsgQWRkZWRSZWNvcmQ6Ok5vLCBkb21haW5JRCB9OwogICAgIH0KIAotICAgIGlu
dCByZXNldFJlc3VsdCA9IG1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50LnJlc2V0KCk7Ci0g
ICAgQVNTRVJUX1VOVVNFRChyZXNldFJlc3VsdCwgcmVzZXRSZXN1bHQgPT0gU1FMSVRFX09LKTsK
LQogICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3MgbmV3T2JzZXJ2YXRpb24oZG9tYWluKTsKICAg
ICBhdXRvIHJlc3VsdCA9IGluc2VydE9ic2VydmVkRG9tYWluKG5ld09ic2VydmF0aW9uKTsKIApA
QCAtMjMwMSwxNCArMjIyNCwxNCBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpyZW1vdmVEYXRhRm9yRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRAogICAgIGF1dG8g
ZG9tYWluSURUb1JlbW92ZSA9IGRvbWFpbklEKGRvbWFpbik7CiAgICAgaWYgKCFkb21haW5JRFRv
UmVtb3ZlKQogICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9yZW1vdmVBbGxEYXRhU3RhdGVt
ZW50LmJpbmRJbnQoMSwgKmRvbWFpbklEVG9SZW1vdmUpICE9IFNRTElURV9PSwotICAgICAgICB8
fCBtX3JlbW92ZUFsbERhdGFTdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ET05FKSB7CisgICAg
CisgICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSBnZXRTY29wZWRTdGF0ZW1lbnQobV9yZW1vdmVB
bGxEYXRhU3RhdGVtZW50LCByZW1vdmVBbGxEYXRhUXVlcnksICJyZW1vdmVEYXRhRm9yRG9tYWlu
Il9zKTsKKyAgICBpZiAoIXNjb3BlZFN0YXRlbWVudAorICAgICAgICB8fCBzY29wZWRTdGF0ZW1l
bnQtPmJpbmRJbnQoMSwgKmRvbWFpbklEVG9SZW1vdmUpICE9IFNRTElURV9PSworICAgICAgICB8
fCBzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewogICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVtb3ZlRGF0YUZvckRvbWFpbiBmYWlsZWQsIGVycm9y
IG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KLSAgICAKLSAgICByZXNldFN0
YXRlbWVudChtX3JlbW92ZUFsbERhdGFTdGF0ZW1lbnQpOwogfQogCiB2b2lkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0yNDkwLDE1ICsyNDEzLDE0IEBAIFZlY3Rvcjx1bnNp
Z25lZD4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmZpbmRFeHBpcmVkVXNl
ckludGVyYWN0aW9uCiAgICAgT3B0aW9uYWw8U2Vjb25kcz4gZXhwaXJhdGlvbkRhdGVUaW1lID0g
c3RhdGlzdGljc0VwaXJhdGlvblRpbWUoKTsKICAgICBpZiAoIWV4cGlyYXRpb25EYXRlVGltZSkK
ICAgICAgICAgcmV0dXJuIHJlc3VsdHM7Ci0KLSAgICBpZiAobV9maW5kRXhwaXJlZFVzZXJJbnRl
cmFjdGlvblN0YXRlbWVudC5iaW5kRG91YmxlKDEsIGV4cGlyYXRpb25EYXRlVGltZS52YWx1ZSgp
LnZhbHVlKCkpICE9IFNRTElURV9PSykKKyAgICAKKyAgICBhdXRvIHNjb3BlZFN0YXRlbWVudCA9
IGdldFNjb3BlZFN0YXRlbWVudChtX2ZpbmRFeHBpcmVkVXNlckludGVyYWN0aW9uU3RhdGVtZW50
LCBmaW5kRXhwaXJlZFVzZXJJbnRlcmFjdGlvblF1ZXJ5LCAiZmluZEV4cGlyZWRVc2VySW50ZXJh
Y3Rpb25zIl9zKTsKKyAgICBpZiAoIXNjb3BlZFN0YXRlbWVudAorICAgICAgICB8fCBzY29wZWRT
dGF0ZW1lbnQtPmJpbmREb3VibGUoMSwgZXhwaXJhdGlvbkRhdGVUaW1lLnZhbHVlKCkudmFsdWUo
KSkgIT0gU1FMSVRFX09LKQogICAgICAgICByZXR1cm4gcmVzdWx0czsKIAotICAgIHdoaWxlICht
X2ZpbmRFeHBpcmVkVXNlckludGVyYWN0aW9uU3RhdGVtZW50LnN0ZXAoKSA9PSBTUUxJVEVfUk9X
KQotICAgICAgICByZXN1bHRzLmFwcGVuZChtX2ZpbmRFeHBpcmVkVXNlckludGVyYWN0aW9uU3Rh
dGVtZW50LmdldENvbHVtbkludCgwKSk7Ci0KLSAgICBpbnQgcmVzZXRSZXN1bHQgPSBtX2ZpbmRF
eHBpcmVkVXNlckludGVyYWN0aW9uU3RhdGVtZW50LnJlc2V0KCk7Ci0gICAgQVNTRVJUX1VOVVNF
RChyZXNldFJlc3VsdCwgcmVzZXRSZXN1bHQgPT0gU1FMSVRFX09LKTsKKyAgICB3aGlsZSAoc2Nv
cGVkU3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykKKyAgICAgICAgcmVzdWx0cy5hcHBl
bmQoc2NvcGVkU3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMCkpOwogCiAgICAgcmV0dXJuIHJlc3Vs
dHM7CiB9CkBAIC0yNjU5LDExICsyNTgxLDEyIEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OnBydW5lU3RhdGlzdGljc0lmTmVlZGVkKCkKICAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIHVuc2lnbmVkIGNvdW50ID0gMDsKLSAgICBpZiAobV9v
YnNlcnZlZERvbWFpbkNvdW50LnN0ZXAoKSA9PSBTUUxJVEVfUk9XKQotICAgICAgICBjb3VudCA9
IG1fb2JzZXJ2ZWREb21haW5Db3VudC5nZXRDb2x1bW5JbnQoMCk7Ci0KLSAgICBpbnQgcmVzZXRS
ZXN1bHQgPSBtX29ic2VydmVkRG9tYWluQ291bnQucmVzZXQoKTsKLSAgICBBU1NFUlRfVU5VU0VE
KHJlc2V0UmVzdWx0LCByZXNldFJlc3VsdCA9PSBTUUxJVEVfT0spOworICAgIGF1dG8gc2NvcGVk
U3RhdGVtZW50ID0gZ2V0U2NvcGVkU3RhdGVtZW50KG1fb2JzZXJ2ZWREb21haW5Db3VudFN0YXRl
bWVudCwgb2JzZXJ2ZWREb21haW5Db3VudFF1ZXJ5LCAicHJ1bmVTdGF0aXN0aWNzSWZOZWVkZWQi
X3MpOworICAgIGlmICghc2NvcGVkU3RhdGVtZW50KQorICAgICAgICByZXR1cm47CisgICAgCisg
ICAgaWYgKHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpCisgICAgICAgIGNv
dW50ID0gc2NvcGVkU3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMCk7CiAKICAgICBpZiAoY291bnQg
PD0gcGFyYW1ldGVycygpLm1heFN0YXRpc3RpY3NFbnRyaWVzKQogICAgICAgICByZXR1cm47CkBA
IC0yNjk5LDE3ICsyNjIyLDE2IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OnBydW5lU3RhdGlzdGljc0lmTmVlZGVkKCkKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OnVwZGF0ZUxhc3RTZWVuKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBkb21haW4sIFdhbGxUaW1lIGxhc3RTZWVuKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOwotCi0gICAgaWYgKG1fdXBkYXRlTGFzdFNlZW5TdGF0ZW1lbnQuYmluZERvdWJsZSgx
LCBsYXN0U2Vlbi5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpICE9IFNRTElURV9PSwotICAg
ICAgICB8fCBtX3VwZGF0ZUxhc3RTZWVuU3RhdGVtZW50LmJpbmRUZXh0KDIsIGRvbWFpbi5zdHJp
bmcoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fdXBkYXRlTGFzdFNlZW5TdGF0ZW1lbnQu
c3RlcCgpICE9IFNRTElURV9ET05FKSB7CisgICAgCisgICAgYXV0byBzY29wZWRTdGF0ZW1lbnQg
PSBnZXRTY29wZWRTdGF0ZW1lbnQobV91cGRhdGVMYXN0U2VlblN0YXRlbWVudCwgdXBkYXRlTGFz
dFNlZW5RdWVyeSwgInVwZGF0ZUxhc3RTZWVuIl9zKTsKKyAgICBpZiAoIXNjb3BlZFN0YXRlbWVu
dAorICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmREb3VibGUoMSwgbGFzdFNlZW4uc2Vj
b25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc2NvcGVk
U3RhdGVtZW50LT5iaW5kVGV4dCgyLCBkb21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSworICAg
ICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewogICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6dXBkYXRlTGFzdFNlZW4gZmFpbGVkIHRvIGJp
bmQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJy
b3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIAotICAgIGludCByZXNldFJlc3VsdCA9IG1fdXBkYXRlTGFzdFNlZW5TdGF0
ZW1lbnQucmVzZXQoKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc2V0UmVzdWx0LCByZXNldFJlc3Vs
dCA9PSBTUUxJVEVfT0spOwogfQogCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpzZXRMYXN0U2Vlbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBTZWNv
bmRzIHNlY29uZHMpCkBAIC0yNzYwLDE3ICsyNjgyLDE2IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdp
c3RyCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVEYXRh
UmVjb3Jkc1JlbW92ZWQoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgaW50IHZhbHVl
KQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgaWYgKG1fdXBkYXRl
RGF0YVJlY29yZHNSZW1vdmVkU3RhdGVtZW50LmJpbmRJbnQoMSwgdmFsdWUpICE9IFNRTElURV9P
SwotICAgICAgICB8fCBtX3VwZGF0ZURhdGFSZWNvcmRzUmVtb3ZlZFN0YXRlbWVudC5iaW5kVGV4
dCgyLCBkb21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX3VwZGF0ZURh
dGFSZWNvcmRzUmVtb3ZlZFN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKKyAgICAK
KyAgICBhdXRvIHNjb3BlZFN0YXRlbWVudCA9IGdldFNjb3BlZFN0YXRlbWVudChtX3VwZGF0ZURh
dGFSZWNvcmRzUmVtb3ZlZFN0YXRlbWVudCwgdXBkYXRlRGF0YVJlY29yZHNSZW1vdmVkUXVlcnks
ICJ1cGRhdGVEYXRhUmVjb3Jkc1JlbW92ZWQiX3MpOworICAgIGlmICghc2NvcGVkU3RhdGVtZW50
CisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZEludCgxLCB2YWx1ZSkgIT0gU1FMSVRF
X09LCisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZFRleHQoMiwgZG9tYWluLnN0cmlu
ZygpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgIT0g
U1FMSVRFX0RPTkUpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nl
c3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnVwZGF0
ZURhdGFSZWNvcmRzUmVtb3ZlZCBmYWlsZWQgdG8gYmluZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2
YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0KLSAgICBpbnQgcmVzZXRS
ZXN1bHQgPSBtX3VwZGF0ZURhdGFSZWNvcmRzUmVtb3ZlZFN0YXRlbWVudC5yZXNldCgpOwotICAg
IEFTU0VSVF9VTlVTRUQocmVzZXRSZXN1bHQsIHJlc2V0UmVzdWx0ID09IFNRTElURV9PSyk7CiB9
CiAKIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmlzQ29ycmVjdFN1
YlN0YXRpc3RpY3NDb3VudChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViZnJhbWVEb21haW4s
IGNvbnN0IFRvcEZyYW1lRG9tYWluJiB0b3BGcmFtZURvbWFpbikKQEAgLTI4MjUsMTYgKzI3NDYs
MTcgQEAgU3RyaW5nIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXREb21h
aW5TdHJpbmdGcm9tRG9tYWluSUQodW5zaWduZWQKIHsKICAgICBhdXRvIHJlc3VsdCA9IGVtcHR5
U3RyaW5nKCk7CiAgICAgCi0gICAgaWYgKG1fZG9tYWluU3RyaW5nRnJvbURvbWFpbklEU3RhdGVt
ZW50LmJpbmRJbnQoMSwgZG9tYWluSUQpICE9IFNRTElURV9PSykgeworICAgIGF1dG8gc2NvcGVk
U3RhdGVtZW50ID0gZ2V0U2NvcGVkU3RhdGVtZW50KG1fZG9tYWluU3RyaW5nRnJvbURvbWFpbklE
U3RhdGVtZW50LCBkb21haW5TdHJpbmdGcm9tRG9tYWluSURRdWVyeSwgImdldERvbWFpblN0cmlu
Z0Zyb21Eb21haW5JRCJfcyk7CisgICAgaWYgKCFzY29wZWRTdGF0ZW1lbnQKKyAgICAgICAgfHwg
c2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDEsIGRvbWFpbklEKSAhPSBTUUxJVEVfT0spIHsKICAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldERvbWFpblN0cmluZ0Zyb21Eb21h
aW5JRC4gU3RhdGVtZW50IGZhaWxlZCB0byBwcmVwYXJlIG9yIGJpbmQsIGVycm9yIG1lc3NhZ2U6
ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAg
ICAKLSAgICBpZiAobV9kb21haW5TdHJpbmdGcm9tRG9tYWluSURTdGF0ZW1lbnQuc3RlcCgpID09
IFNRTElURV9ST1cpCi0gICAgICAgIHJlc3VsdCA9IG1fZG9tYWluU3RyaW5nRnJvbURvbWFpbklE
U3RhdGVtZW50LmdldENvbHVtblRleHQoMCk7CisgICAgaWYgKHNjb3BlZFN0YXRlbWVudC0+c3Rl
cCgpID09IFNRTElURV9ST1cpCisgICAgICAgIHJlc3VsdCA9IG1fZG9tYWluU3RyaW5nRnJvbURv
bWFpbklEU3RhdGVtZW50LT5nZXRDb2x1bW5UZXh0KDApOwogICAgIAotICAgIHJlc2V0U3RhdGVt
ZW50KG1fZG9tYWluU3RyaW5nRnJvbURvbWFpbklEU3RhdGVtZW50KTsKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCkBAIC0yOTAxLDggKzI4MjMsMTAgQEAgc3RhdGljIGJvb2wgaGFzSGFkUmVjZW50
VXNlckludGVyYWN0aW9uKFdURjo6U2Vjb25kcyBpbnRlcmFjdGlvblRpbWVTZWNvbmRzKQogCiB2
b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXNvdXJjZVRvU3RyaW5n
KFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluKSBjb25zdAogewot
ICAgIGlmIChtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC5iaW5kVGV4dCgx
LCBkb21haW4pICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX2dldFJlc291cmNlRGF0YUJ5RG9t
YWluTmFtZVN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX1JPVykgeworICAgIGF1dG8gc2NvcGVk
U3RhdGVtZW50ID0gZ2V0U2NvcGVkU3RhdGVtZW50KG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5O
YW1lU3RhdGVtZW50LCBnZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVRdWVyeSwgInJlc291cmNl
VG9TdHJpbmciX3MpOworICAgIGlmICghc2NvcGVkU3RhdGVtZW50CisgICAgICAgIHx8IHNjb3Bl
ZFN0YXRlbWVudC0+YmluZFRleHQoMSwgZG9tYWluKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwg
c2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX1JPVykgewogICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVzb3VyY2VUb1N0cmluZy4gU3RhdGVtZW50IGZhaWxlZCB0
byBiaW5kIG9yIGRvbWFpbiB3YXMgbm90IGZvdW5kLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9
cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjkxMywxNSArMjgzNywxNSBAQCB2b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXNvdXJjZVRvU3RyaW5nKFN0
cmluZ0J1aWxkZXImIGJ1aWxkZQogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwogICAgIAogICAg
IC8vIFVzZXIgaW50ZXJhY3Rpb24KLSAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJoYWRVc2Vy
SW50ZXJhY3Rpb24iLCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC5nZXRD
b2x1bW5JbnQoSGFkVXNlckludGVyYWN0aW9uSW5kZXgpKTsKKyAgICBhcHBlbmRCb29sZWFuKGJ1
aWxkZXIsICJoYWRVc2VySW50ZXJhY3Rpb24iLCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFt
ZVN0YXRlbWVudC0+Z2V0Q29sdW1uSW50KEhhZFVzZXJJbnRlcmFjdGlvbkluZGV4KSk7CiAgICAg
YnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgICAgbW9z
dFJlY2VudFVzZXJJbnRlcmFjdGlvbjogIik7Ci0gICAgaWYgKGhhc0hhZFJlY2VudFVzZXJJbnRl
cmFjdGlvbihTZWNvbmRzKG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50Lmdl
dENvbHVtbkRvdWJsZShNb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZUluZGV4KSkpKQorICAg
IGlmIChoYXNIYWRSZWNlbnRVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyhtX2dldFJlc291cmNlRGF0
YUJ5RG9tYWluTmFtZVN0YXRlbWVudC0+Z2V0Q29sdW1uRG91YmxlKE1vc3RSZWNlbnRVc2VySW50
ZXJhY3Rpb25UaW1lSW5kZXgpKSkpCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgid2l0
aGluIDI0IGhvdXJzIik7CiAgICAgZWxzZQogICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
Ii0xIik7CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgYXBwZW5kQm9vbGVhbihidWls
ZGVyLCAiZ3JhbmRmYXRoZXJlZCIsIG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVt
ZW50LmdldENvbHVtbkludChHcmFuZGZhdGhlcmVkSW5kZXgpKTsKKyAgICBhcHBlbmRCb29sZWFu
KGJ1aWxkZXIsICJncmFuZGZhdGhlcmVkIiwgbV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVT
dGF0ZW1lbnQtPmdldENvbHVtbkludChHcmFuZGZhdGhlcmVkSW5kZXgpKTsKICAgICBidWlsZGVy
LmFwcGVuZCgnXG4nKTsKIAogICAgIC8vIFN0b3JhZ2UgYWNjZXNzCkBAIC0yOTM0LDcgKzI4NTgs
NyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXNvdXJjZVRv
U3RyaW5nKFN0cmluZ0J1aWxkZXImIGJ1aWxkZQogICAgIGFwcGVuZFN1YlN0YXRpc3RpY0xpc3Qo
YnVpbGRlciwgIlRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSIsIGRvbWFpbik7CiAgICAgYXBw
ZW5kU3ViU3RhdGlzdGljTGlzdChidWlsZGVyLCAiVG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2Ny
aXB0cyIsIGRvbWFpbik7CiAKLSAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJJc1NjaGVkdWxl
ZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsIiwgbV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5h
bWVTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KElzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJl
bW92YWxJbmRleCkpOworICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgIklzU2NoZWR1bGVkRm9y
QWxsQnV0Q29va2llRGF0YVJlbW92YWwiLCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0
YXRlbWVudC0+Z2V0Q29sdW1uSW50KElzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92
YWxJbmRleCkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwogCiAgICAgLy8gU3ViZnJhbWUg
c3RhdHMKQEAgLTI5NDYsNTQgKzI4NzAsNTggQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6cmVzb3VyY2VUb1N0cmluZyhTdHJpbmdCdWlsZGVyJiBidWlsZGUKICAg
ICBhcHBlbmRTdWJTdGF0aXN0aWNMaXN0KGJ1aWxkZXIsICJTdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0c0Zyb20iLCBkb21haW4pOwogCiAgICAgLy8gUHJldmFsZW50IFJlc291cmNlCi0gICAgYXBw
ZW5kQm9vbGVhbihidWlsZGVyLCAiaXNQcmV2YWxlbnRSZXNvdXJjZSIsIG1fZ2V0UmVzb3VyY2VE
YXRhQnlEb21haW5OYW1lU3RhdGVtZW50LmdldENvbHVtbkludChJc1ByZXZhbGVudEluZGV4KSk7
CisgICAgYXBwZW5kQm9vbGVhbihidWlsZGVyLCAiaXNQcmV2YWxlbnRSZXNvdXJjZSIsIG1fZ2V0
UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoSXNQcmV2YWxl
bnRJbmRleCkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgIGFwcGVuZEJvb2xlYW4o
YnVpbGRlciwgImlzVmVyeVByZXZhbGVudFJlc291cmNlIiwgbV9nZXRSZXNvdXJjZURhdGFCeURv
bWFpbk5hbWVTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KElzVmVyeVByZXZhbGVudEluZGV4KSk7Cisg
ICAgYXBwZW5kQm9vbGVhbihidWlsZGVyLCAiaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UiLCBtX2dl
dFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC0+Z2V0Q29sdW1uSW50KElzVmVyeVBy
ZXZhbGVudEluZGV4KSk7CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAgICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIgICAgZGF0YVJlY29yZHNSZW1vdmVkOiAiKTsKLSAgICBidWlsZGVyLmFw
cGVuZE51bWJlcihtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC5nZXRDb2x1
bW5JbnQoRGF0YVJlY29yZHNSZW1vdmVkSW5kZXgpKTsKKyAgICBidWlsZGVyLmFwcGVuZE51bWJl
cihtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC0+Z2V0Q29sdW1uSW50KERh
dGFSZWNvcmRzUmVtb3ZlZEluZGV4KSk7CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0KLSAg
ICByZXNldFN0YXRlbWVudChtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudCk7
CiB9CiAKIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmRvbWFpbklE
RXhpc3RzSW5EYXRhYmFzZShpbnQgZG9tYWluSUQpCiB7Ci0gICAgaWYgKG1fbGlua0RlY29yYXRp
b25FeGlzdHNTdGF0ZW1lbnQuYmluZEludCgxLCBkb21haW5JRCkgIT0gU1FMSVRFX09LCi0gICAg
ICAgIHx8IG1fbGlua0RlY29yYXRpb25FeGlzdHNTdGF0ZW1lbnQuYmluZEludCgyLCBkb21haW5J
RCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fc2NyaXB0TG9hZEV4aXN0c1N0YXRlbWVudC5i
aW5kSW50KDEsIGRvbWFpbklEKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9zY3JpcHRMb2Fk
RXhpc3RzU3RhdGVtZW50LmJpbmRJbnQoMiwgZG9tYWluSUQpICE9IFNRTElURV9PSwotICAgICAg
ICB8fCBtX3N1YkZyYW1lRXhpc3RzU3RhdGVtZW50LmJpbmRJbnQoMSwgZG9tYWluSUQpICE9IFNR
TElURV9PSwotICAgICAgICB8fCBtX3N1YkZyYW1lRXhpc3RzU3RhdGVtZW50LmJpbmRJbnQoMiwg
ZG9tYWluSUQpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX3N1YlJlc291cmNlRXhpc3RzU3Rh
dGVtZW50LmJpbmRJbnQoMSwgZG9tYWluSUQpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX3N1
YlJlc291cmNlRXhpc3RzU3RhdGVtZW50LmJpbmRJbnQoMiwgZG9tYWluSUQpICE9IFNRTElURV9P
SwotICAgICAgICB8fCBtX3VuaXF1ZVJlZGlyZWN0RXhpc3RzU3RhdGVtZW50LmJpbmRJbnQoMSwg
ZG9tYWluSUQpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX3VuaXF1ZVJlZGlyZWN0RXhpc3Rz
U3RhdGVtZW50LmJpbmRJbnQoMiwgZG9tYWluSUQpICE9IFNRTElURV9PSwotICAgICAgICB8fCBt
X29ic2VydmVkRG9tYWluc0V4aXN0c1N0YXRlbWVudC5iaW5kSW50KDEsIGRvbWFpbklEKSAhPSBT
UUxJVEVfT0spIHsKKyAgICBhdXRvIHNjb3BlZExpbmtEZWNvcmF0aW9uRXhpc3RzU3RhdGVtZW50
ID0gZ2V0U2NvcGVkU3RhdGVtZW50KG1fbGlua0RlY29yYXRpb25FeGlzdHNTdGF0ZW1lbnQsIGxp
bmtEZWNvcmF0aW9uRXhpc3RzUXVlcnksICJkb21haW5JREV4aXN0c0luRGF0YWJhc2UiX3MpOwor
ICAgIGF1dG8gc2NvcGVkU2NyaXB0TG9hZEV4aXN0c1N0YXRlbWVudCA9IGdldFNjb3BlZFN0YXRl
bWVudChtX3NjcmlwdExvYWRFeGlzdHNTdGF0ZW1lbnQsIHNjcmlwdExvYWRFeGlzdHNRdWVyeSwg
ImRvbWFpbklERXhpc3RzSW5EYXRhYmFzZSBsaW5rRGVjb3JhdGlvbkV4aXN0c1N0YXRlbWVudCJf
cyk7CisgICAgYXV0byBzY29wZWRTdWJGcmFtZUV4aXN0c1N0YXRlbWVudCA9IGdldFNjb3BlZFN0
YXRlbWVudChtX3N1YkZyYW1lRXhpc3RzU3RhdGVtZW50LCBzdWJGcmFtZUV4aXN0c1F1ZXJ5LCAi
ZG9tYWluSURFeGlzdHNJbkRhdGFiYXNlIHN1YkZyYW1lRXhpc3RzU3RhdGVtZW50Il9zKTsKKyAg
ICBhdXRvIHNjb3BlZFN1YlJlc291cmNlRXhpc3RzU3RhdGVtZW50ID0gZ2V0U2NvcGVkU3RhdGVt
ZW50KG1fc3ViUmVzb3VyY2VFeGlzdHNTdGF0ZW1lbnQsIHN1YlJlc291cmNlRXhpc3RzUXVlcnks
ICJkb21haW5JREV4aXN0c0luRGF0YWJhc2Ugc3ViUmVzb3VyY2VFeGlzdHNTdGF0ZW1lbnQiX3Mp
OworICAgIGF1dG8gc2NvcGVkVW5pcXVlUmVkaXJlY3RFeGlzdHNTdGF0ZW1lbnQgPSBnZXRTY29w
ZWRTdGF0ZW1lbnQobV91bmlxdWVSZWRpcmVjdEV4aXN0c1N0YXRlbWVudCwgdW5pcXVlUmVkaXJl
Y3RFeGlzdHNRdWVyeSwgImRvbWFpbklERXhpc3RzSW5EYXRhYmFzZSB1bmlxdWVSZWRpcmVjdEV4
aXN0c1N0YXRlbWVudCJfcyk7CisgICAgYXV0byBzY29wZWRPYnNlcnZlZERvbWFpbnNFeGlzdHNT
dGF0ZW1lbnQgPSBnZXRTY29wZWRTdGF0ZW1lbnQobV9vYnNlcnZlZERvbWFpbnNFeGlzdHNTdGF0
ZW1lbnQsIG9ic2VydmVkRG9tYWluc0V4aXN0c1F1ZXJ5LCAiZG9tYWluSURFeGlzdHNJbkRhdGFi
YXNlIG9ic2VydmVkRG9tYWluc0V4aXN0c1N0YXRlbWVudCJfcyk7CisgICAgCisgICAgaWYgKCFz
Y29wZWRMaW5rRGVjb3JhdGlvbkV4aXN0c1N0YXRlbWVudAorICAgICAgICB8fCAhc2NvcGVkU2Ny
aXB0TG9hZEV4aXN0c1N0YXRlbWVudAorICAgICAgICB8fCAhc2NvcGVkU3ViRnJhbWVFeGlzdHNT
dGF0ZW1lbnQKKyAgICAgICAgfHwgIXNjb3BlZFN1YlJlc291cmNlRXhpc3RzU3RhdGVtZW50Cisg
ICAgICAgIHx8ICFzY29wZWRVbmlxdWVSZWRpcmVjdEV4aXN0c1N0YXRlbWVudAorICAgICAgICB8
fCAhc2NvcGVkT2JzZXJ2ZWREb21haW5zRXhpc3RzU3RhdGVtZW50CisgICAgICAgIHx8IG1fbGlu
a0RlY29yYXRpb25FeGlzdHNTdGF0ZW1lbnQtPmJpbmRJbnQoMSwgZG9tYWluSUQpICE9IFNRTElU
RV9PSworICAgICAgICB8fCBtX2xpbmtEZWNvcmF0aW9uRXhpc3RzU3RhdGVtZW50LT5iaW5kSW50
KDIsIGRvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9zY3JpcHRMb2FkRXhpc3Rz
U3RhdGVtZW50LT5iaW5kSW50KDEsIGRvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwg
bV9zY3JpcHRMb2FkRXhpc3RzU3RhdGVtZW50LT5iaW5kSW50KDIsIGRvbWFpbklEKSAhPSBTUUxJ
VEVfT0sKKyAgICAgICAgfHwgbV9zdWJGcmFtZUV4aXN0c1N0YXRlbWVudC0+YmluZEludCgxLCBk
b21haW5JRCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1fc3ViRnJhbWVFeGlzdHNTdGF0ZW1l
bnQtPmJpbmRJbnQoMiwgZG9tYWluSUQpICE9IFNRTElURV9PSworICAgICAgICB8fCBtX3N1YlJl
c291cmNlRXhpc3RzU3RhdGVtZW50LT5iaW5kSW50KDEsIGRvbWFpbklEKSAhPSBTUUxJVEVfT0sK
KyAgICAgICAgfHwgbV9zdWJSZXNvdXJjZUV4aXN0c1N0YXRlbWVudC0+YmluZEludCgyLCBkb21h
aW5JRCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1fdW5pcXVlUmVkaXJlY3RFeGlzdHNTdGF0
ZW1lbnQtPmJpbmRJbnQoMSwgZG9tYWluSUQpICE9IFNRTElURV9PSworICAgICAgICB8fCBtX3Vu
aXF1ZVJlZGlyZWN0RXhpc3RzU3RhdGVtZW50LT5iaW5kSW50KDIsIGRvbWFpbklEKSAhPSBTUUxJ
VEVfT0sKKyAgICAgICAgfHwgbV9vYnNlcnZlZERvbWFpbnNFeGlzdHNTdGF0ZW1lbnQtPmJpbmRJ
bnQoMSwgZG9tYWluSUQpICE9IFNRTElURV9PSykgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJP
Ul9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6ZG9tYWluSURFeGlzdHNJbkRhdGFiYXNlIGZhaWxlZCB0byBiaW5kLCBlcnJv
ciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkp
OwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAotICAgIGlmIChtX2xpbmtEZWNvcmF0aW9uRXhpc3RzU3RhdGVtZW50LnN0ZXAoKSAh
PSBTUUxJVEVfUk9XCi0gICAgICAgIHx8IG1fc2NyaXB0TG9hZEV4aXN0c1N0YXRlbWVudC5zdGVw
KCkgIT0gU1FMSVRFX1JPVwotICAgICAgICB8fCBtX3N1YkZyYW1lRXhpc3RzU3RhdGVtZW50LnN0
ZXAoKSAhPSBTUUxJVEVfUk9XCi0gICAgICAgIHx8IG1fc3ViUmVzb3VyY2VFeGlzdHNTdGF0ZW1l
bnQuc3RlcCgpICE9IFNRTElURV9ST1cKLSAgICAgICAgfHwgbV91bmlxdWVSZWRpcmVjdEV4aXN0
c1N0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX1JPVwotICAgICAgICB8fCBtX29ic2VydmVkRG9t
YWluc0V4aXN0c1N0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX1JPVykgeworICAgIGlmIChtX2xp
bmtEZWNvcmF0aW9uRXhpc3RzU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX1JPVworICAgICAg
ICB8fCBtX3NjcmlwdExvYWRFeGlzdHNTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfUk9XCisg
ICAgICAgIHx8IG1fc3ViRnJhbWVFeGlzdHNTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfUk9X
CisgICAgICAgIHx8IG1fc3ViUmVzb3VyY2VFeGlzdHNTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJ
VEVfUk9XCisgICAgICAgIHx8IG1fdW5pcXVlUmVkaXJlY3RFeGlzdHNTdGF0ZW1lbnQtPnN0ZXAo
KSAhPSBTUUxJVEVfUk9XCisgICAgICAgIHx8IG1fb2JzZXJ2ZWREb21haW5zRXhpc3RzU3RhdGVt
ZW50LT5zdGVwKCkgIT0gU1FMSVRFX1JPVykgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9J
Rl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6ZG9tYWluSURFeGlzdHNJbkRhdGFiYXNlIGZhaWxlZCB0byBzdGVwLCBlcnJvciBt
ZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KLSAgICAKLSAgICByZXNldFN0YXRlbWVudChtX2xpbmtEZWNvcmF0aW9uRXhpc3RzU3RhdGVt
ZW50KTsKLSAgICByZXNldFN0YXRlbWVudChtX3NjcmlwdExvYWRFeGlzdHNTdGF0ZW1lbnQpOwot
ICAgIHJlc2V0U3RhdGVtZW50KG1fc3ViRnJhbWVFeGlzdHNTdGF0ZW1lbnQpOwotICAgIHJlc2V0
U3RhdGVtZW50KG1fc3ViUmVzb3VyY2VFeGlzdHNTdGF0ZW1lbnQpOwotICAgIHJlc2V0U3RhdGVt
ZW50KG1fdW5pcXVlUmVkaXJlY3RFeGlzdHNTdGF0ZW1lbnQpOwotICAgIHJlc2V0U3RhdGVtZW50
KG1fb2JzZXJ2ZWREb21haW5zRXhpc3RzU3RhdGVtZW50KTsKIAotICAgIHJldHVybiBtX2xpbmtE
ZWNvcmF0aW9uRXhpc3RzU3RhdGVtZW50LmdldENvbHVtbkludCgwKSB8fCBtX3NjcmlwdExvYWRF
eGlzdHNTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDApIHx8IG1fc3ViRnJhbWVFeGlzdHNTdGF0ZW1l
bnQuZ2V0Q29sdW1uSW50KDApIHx8IG1fc3ViUmVzb3VyY2VFeGlzdHNTdGF0ZW1lbnQuZ2V0Q29s
dW1uSW50KDApIHx8IG1fdW5pcXVlUmVkaXJlY3RFeGlzdHNTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50
KDApIHx8IG1fb2JzZXJ2ZWREb21haW5zRXhpc3RzU3RhdGVtZW50LmdldENvbHVtbkludCgwKTsK
KyAgICByZXR1cm4gbV9saW5rRGVjb3JhdGlvbkV4aXN0c1N0YXRlbWVudC0+Z2V0Q29sdW1uSW50
KDApIHx8IG1fc2NyaXB0TG9hZEV4aXN0c1N0YXRlbWVudC0+Z2V0Q29sdW1uSW50KDApIHx8IG1f
c3ViRnJhbWVFeGlzdHNTdGF0ZW1lbnQtPmdldENvbHVtbkludCgwKSB8fCBtX3N1YlJlc291cmNl
RXhpc3RzU3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMCkgfHwgbV91bmlxdWVSZWRpcmVjdEV4aXN0
c1N0YXRlbWVudC0+Z2V0Q29sdW1uSW50KDApIHx8IG1fb2JzZXJ2ZWREb21haW5zRXhpc3RzU3Rh
dGVtZW50LT5nZXRDb2x1bW5JbnQoMCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAppbmRl
eCBiNDdkNTJkZjJiNGE1ZThkZTg3MTY0MTJlMWFhZDUzOTA3YWQzZDliLi45ZDkzNTVlMjhiYjNj
YmVmMzg5MmZjOGE2ZDMxNTVhMGY2NjMwYTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
U1FMaXRlRGF0YWJhc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVN0YXRlbWVudC5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUuaD4KICNpbmNs
dWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+
CiAjaW5jbHVkZSA8d3RmL1N0ZFNldC5oPgpAQCAtNzksMTEgKzgwLDEyIEBAIGNsYXNzIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTsKIGNsYXNzIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlIGZpbmFsIDogcHVibGljIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZSB7CiBwdWJsaWM6CiAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUoV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiwgV29ya1F1ZXVlJiwgU2hvdWxkSW5jbHVkZUxv
Y2FsaG9zdCwgY29uc3QgU3RyaW5nJiBzdG9yYWdlRGlyZWN0b3J5UGF0aCwgUEFMOjpTZXNzaW9u
SUQpOwotCisgICAgflJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlKCk7CiAgICAg
dm9pZCBwb3B1bGF0ZUZyb21NZW1vcnlTdG9yZShjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWVtb3J5U3RvcmUmKTsKICAgICB2b2lkIG1lcmdlU3RhdGlzdGljcyhWZWN0b3I8UmVzb3VyY2VM
b2FkU3RhdGlzdGljcz4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGVhcihDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IG92ZXJy
aWRlOworICAgIHZvaWQgY2xvc2UoKTsKIAogICAgIFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhPiBhZ2dyZWdhdGVkVGhpcmRQYXJ0eURhdGEoKSBj
b25zdCBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZUNvb2tpZUJsb2NraW5nKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7CkBAIC0xNDgsNiArMTUwLDkgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGVuYWJsZUZvcmVpZ25LZXlzKCk7CiAgICAgYm9vbCBpc01pZ3JhdGlvbk5lY2Vz
c2FyeSgpOwogICAgIHZvaWQgbWlncmF0ZURhdGFUb05ld1RhYmxlc0lmTmVjZXNzYXJ5KCk7Cisg
ICAgdm9pZCBkZXN0cm95U3RhdGVtZW50cygpOworICAgIFNRTGl0ZVN0YXRlbWVudEF1dG9SZXNl
dFNjb3BlIGdldFNjb3BlZFN0YXRlbWVudChzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRl
U3RhdGVtZW50PiYsIGNvbnN0IFN0cmluZywgY29uc3QgU3RyaW5nJikgY29uc3Q7CisKICAgICBi
b29sIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBTdWJGcmFt
ZURvbWFpbiYpIGNvbnN0OwogICAgIFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OlRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5PiBnZXRUaGlyZFBhcnR5RGF0
YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbnModW5zaWduZWQsIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJikgY29uc3Q7CiAgICAgdm9pZCBvcGVuQW5kVXBkYXRlU2NoZW1hSWZOZWNlc3Nhcnko
KTsKQEAgLTE1NSw3ICsxNjAsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBnZXRTdWJTdGF0aXN0
aWNTdGF0ZW1lbnQoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgdm9pZCBhcHBlbmRTdWJTdGF0
aXN0aWNMaXN0KFN0cmluZ0J1aWxkZXImLCBjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSwgY29uc3Qg
U3RyaW5nJiBkb21haW4pIGNvbnN0OwogICAgIHZvaWQgbWVyZ2VTdGF0aXN0aWMoY29uc3QgUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyYpOwotICAgIHZvaWQgbWVyZ2UoV2ViQ29yZTo6U1FMaXRlU3Rh
dGVtZW50JiwgY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOworICAgIHZvaWQgbWVyZ2Uo
V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50KiwgY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYp
OwogICAgIHZvaWQgY2xlYXJEYXRhYmFzZUNvbnRlbnRzKCk7CiAgICAgdW5zaWduZWQgZ2V0TnVt
YmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXMoKSBjb25zdDsKICAgICB1bnNpZ25lZCBnZXROdW1iZXJP
ZlByZXZhbGVudFJlc291cmNlc1dpdGhVSSgpIGNvbnN0OwpAQCAtMTY3LDggKzE3Miw3IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBpbnNlcnRPYnNlcnZlZERvbWFpbihjb25zdCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzJikgV0FSTl9VTlVTRURfUkVUVVJOOwogICAgIHZvaWQgaW5zZXJ0RG9tYWluUmVs
YXRpb25zaGlwcyhjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7CiAgICAgdm9pZCBpbnNl
cnREb21haW5SZWxhdGlvbnNoaXBMaXN0KGNvbnN0IFN0cmluZyYsIGNvbnN0IEhhc2hTZXQ8UmVn
aXN0cmFibGVEb21haW4+JiwgdW5zaWduZWQpOwotICAgIGJvb2wgaW5zZXJ0RG9tYWluUmVsYXRp
b25zaGlwKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCYsIHVuc2lnbmVkIGRvbWFpbklELCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4pOwotICAgIGJvb2wgcmVsYXRpb25z
aGlwRXhpc3RzKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCYsIE9wdGlvbmFsPHVuc2lnbmVkPiBm
aXJzdERvbWFpbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc2Vjb25kRG9tYWluKSBjb25z
dDsKKyAgICBib29sIHJlbGF0aW9uc2hpcEV4aXN0cyhTUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRT
Y29wZSYsIE9wdGlvbmFsPHVuc2lnbmVkPiBmaXJzdERvbWFpbklELCBjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgc2Vjb25kRG9tYWluKSBjb25zdDsKICAgICBPcHRpb25hbDx1bnNpZ25lZD4gZG9t
YWluSUQoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKICAgICBib29sIGRvbWFpbkV4
aXN0cyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0OwogICAgIHZvaWQgdXBkYXRlTGFz
dFNlZW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBXYWxsVGltZSk7CkBAIC0yMDYsNyArMjEw
LDcgQEAgcHJpdmF0ZToKICAgICB9OwogICAgIEhhc2hNYXA8dW5zaWduZWQsIE5vdFZlcnlQcmV2
YWxlbnRSZXNvdXJjZXM+IGZpbmROb3RWZXJ5UHJldmFsZW50UmVzb3VyY2VzKCk7CiAKLSAgICBi
b29sIHByZWRpY2F0ZVZhbHVlRm9yRG9tYWluKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCYsIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CisgICAgYm9vbCBwcmVkaWNhdGVWYWx1ZUZv
ckRvbWFpbihTUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZSYsIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJikgY29uc3Q7CiAKICAgICBib29sIGFyZUFsbFRoaXJkUGFydHlDb29raWVzQmxvY2tl
ZFVuZGVyKGNvbnN0IFRvcEZyYW1lRG9tYWluJikgb3ZlcnJpZGU7CiAgICAgQ29va2llQWNjZXNz
IGNvb2tpZUFjY2Vzcyhjb25zdCBTdWJSZXNvdXJjZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9t
YWluJik7CkBAIC0yMjksNTAgKzIzMyw0OCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBjcmVhdGVV
bmlxdWVJbmRpY2VzKCk7CiAgICAgYm9vbCBjcmVhdGVTY2hlbWEoKTsKLSAgICBib29sIHByZXBh
cmVTdGF0ZW1lbnRzKCk7CiAgICAgU3RyaW5nIGVuc3VyZUFuZE1ha2VEb21haW5MaXN0KGNvbnN0
IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik7Ci0KICAgICAKICAgICBjb25zdCBTdHJpbmcg
bV9zdG9yYWdlRGlyZWN0b3J5UGF0aDsKICAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZURhdGFi
YXNlIG1fZGF0YWJhc2U7Ci0gICAgbXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV9v
YnNlcnZlZERvbWFpbkNvdW50OwotICAgIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX2luc2Vy
dE9ic2VydmVkRG9tYWluU3RhdGVtZW50OwotICAgIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBt
X2luc2VydFRvcExldmVsRG9tYWluU3RhdGVtZW50OwotICAgIG11dGFibGUgV2ViQ29yZTo6U1FM
aXRlU3RhdGVtZW50IG1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50OwotICAgIG11dGFibGUg
V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fdG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tRXhp
c3RzOwotICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fdG9wRnJhbWVMb2Fk
ZWRUaGlyZFBhcnR5U2NyaXB0c0V4aXN0czsKLSAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0
YXRlbWVudCBtX3N1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbkV4aXN0czsKLSAgICBtdXRhYmxl
IFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX3N1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFp
bkV4aXN0czsKLSAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX3N1YnJlc291
cmNlVW5pcXVlUmVkaXJlY3RzVG9FeGlzdHM7Ci0gICAgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50
IG1fbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudDsKLSAgICBXZWJDb3JlOjpTUUxp
dGVTdGF0ZW1lbnQgbV91cGRhdGVMYXN0U2VlblN0YXRlbWVudDsKLSAgICBtdXRhYmxlIFdlYkNv
cmU6OlNRTGl0ZVN0YXRlbWVudCBtX3VwZGF0ZURhdGFSZWNvcmRzUmVtb3ZlZFN0YXRlbWVudDsK
LSAgICBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV91cGRhdGVQcmV2YWxlbnRSZXNvdXJjZVN0
YXRlbWVudDsKLSAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX2lzUHJldmFs
ZW50UmVzb3VyY2VTdGF0ZW1lbnQ7Ci0gICAgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fdXBk
YXRlVmVyeVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50OwotICAgIG11dGFibGUgV2ViQ29yZTo6
U1FMaXRlU3RhdGVtZW50IG1faXNWZXJ5UHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQ7Ci0gICAg
V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fY2xlYXJQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVu
dDsKLSAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX2hhZFVzZXJJbnRlcmFj
dGlvblN0YXRlbWVudDsKLSAgICBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV91cGRhdGVHcmFu
ZGZhdGhlcmVkU3RhdGVtZW50OwotICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50
IG1fdXBkYXRlSXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbFN0YXRlbWVudDsK
LSAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX2lzR3JhbmRmYXRoZXJlZFN0
YXRlbWVudDsKLSAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX2ZpbmRFeHBp
cmVkVXNlckludGVyYWN0aW9uU3RhdGVtZW50OwotICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRl
U3RhdGVtZW50IG1fY291bnRQcmV2YWxlbnRSZXNvdXJjZXNTdGF0ZW1lbnQ7Ci0gICAgbXV0YWJs
ZSBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV9jb3VudFByZXZhbGVudFJlc291cmNlc1dpdGhV
c2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQ7Ci0gICAgbXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVTdGF0
ZW1lbnQgbV9jb3VudFByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb25TdGF0
ZW1lbnQ7Ci0gICAgbXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV9nZXRSZXNvdXJj
ZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQ7Ci0gICAgbXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVT
dGF0ZW1lbnQgbV9nZXRBbGxEb21haW5zU3RhdGVtZW50OwotICAgIG11dGFibGUgV2ViQ29yZTo6
U1FMaXRlU3RhdGVtZW50IG1fZG9tYWluU3RyaW5nRnJvbURvbWFpbklEU3RhdGVtZW50OwotICAg
IG11dGFibGUgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fZ2V0QWxsU3ViU3RhdGlzdGljc1N0
YXRlbWVudDsKLSAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX3N0b3JhZ2VB
Y2Nlc3NFeGlzdHNTdGF0ZW1lbnQ7Ci0gICAgbXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1l
bnQgbV9nZXRNb3N0UmVjZW50bHlVcGRhdGVkVGltZXN0YW1wU3RhdGVtZW50OwotICAgIG11dGFi
bGUgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fbGlua0RlY29yYXRpb25FeGlzdHNTdGF0ZW1l
bnQ7Ci0gICAgbXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV9zY3JpcHRMb2FkRXhp
c3RzU3RhdGVtZW50OwotICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fc3Vi
RnJhbWVFeGlzdHNTdGF0ZW1lbnQ7Ci0gICAgbXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1l
bnQgbV9zdWJSZXNvdXJjZUV4aXN0c1N0YXRlbWVudDsKLSAgICBtdXRhYmxlIFdlYkNvcmU6OlNR
TGl0ZVN0YXRlbWVudCBtX3VuaXF1ZVJlZGlyZWN0RXhpc3RzU3RhdGVtZW50OwotICAgIG11dGFi
bGUgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fb2JzZXJ2ZWREb21haW5zRXhpc3RzU3RhdGVt
ZW50OwotICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fcmVtb3ZlQWxsRGF0
YVN0YXRlbWVudDsKKyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVT
dGF0ZW1lbnQ+IG1fb2JzZXJ2ZWREb21haW5Db3VudFN0YXRlbWVudDsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2luc2VydE9ic2VydmVkRG9tYWluU3Rh
dGVtZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1f
aW5zZXJ0VG9wTGV2ZWxEb21haW5TdGF0ZW1lbnQ7CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2RvbWFpbklERnJvbVN0cmluZ1N0YXRlbWVu
dDsKKyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+
IG1fdG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tRXhpc3RzU3RhdGVtZW50OworICAgIG11dGFi
bGUgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV90b3BGcmFtZUxv
YWRlZFRoaXJkUGFydHlTY3JpcHRzRXhpc3RzU3RhdGVtZW50OworICAgIG11dGFibGUgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9zdWJmcmFtZVVuZGVyVG9wRnJh
bWVEb21haW5FeGlzdHNTdGF0ZW1lbnQ7CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX3N1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbkV4
aXN0c1N0YXRlbWVudDsKKyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxp
dGVTdGF0ZW1lbnQ+IG1fc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUb0V4aXN0c1N0YXRlbWVu
dDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX21vc3RS
ZWNlbnRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OlNRTGl0ZVN0YXRlbWVudD4gbV91cGRhdGVMYXN0U2VlblN0YXRlbWVudDsKKyAgICBtdXRh
YmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fdXBkYXRlRGF0
YVJlY29yZHNSZW1vdmVkU3RhdGVtZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpT
UUxpdGVTdGF0ZW1lbnQ+IG1fdXBkYXRlUHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQ7CisgICAg
bXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2lzUHJl
dmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNR
TGl0ZVN0YXRlbWVudD4gbV91cGRhdGVWZXJ5UHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQ7Cisg
ICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2lz
VmVyeVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fY2xlYXJQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudDsK
KyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1f
aGFkVXNlckludGVyYWN0aW9uU3RhdGVtZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpTUUxpdGVTdGF0ZW1lbnQ+IG1fdXBkYXRlR3JhbmRmYXRoZXJlZFN0YXRlbWVudDsKKyAgICBt
dXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fdXBkYXRl
SXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbFN0YXRlbWVudDsKKyAgICBtdXRh
YmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1faXNHcmFuZGZh
dGhlcmVkU3RhdGVtZW50OworICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNR
TGl0ZVN0YXRlbWVudD4gbV9maW5kRXhwaXJlZFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudDsKKyAg
ICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fY291
bnRQcmV2YWxlbnRSZXNvdXJjZXNTdGF0ZW1lbnQ7CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2NvdW50UHJldmFsZW50UmVzb3VyY2VzV2l0
aFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudDsKKyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fY291bnRQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0
VXNlckludGVyYWN0aW9uU3RhdGVtZW50OworICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0
ZW1lbnQ7CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVt
ZW50PiBtX2dldEFsbERvbWFpbnNTdGF0ZW1lbnQ7CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2RvbWFpblN0cmluZ0Zyb21Eb21haW5JRFN0
YXRlbWVudDsKKyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0
ZW1lbnQ+IG1fZ2V0QWxsU3ViU3RhdGlzdGljc1N0YXRlbWVudDsKKyAgICBtdXRhYmxlIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fc3RvcmFnZUFjY2Vzc0V4aXN0
c1N0YXRlbWVudDsKKyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVT
dGF0ZW1lbnQ+IG1fZ2V0TW9zdFJlY2VudGx5VXBkYXRlZFRpbWVzdGFtcFN0YXRlbWVudDsKKyAg
ICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fbGlu
a0RlY29yYXRpb25FeGlzdHNTdGF0ZW1lbnQ7CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX3NjcmlwdExvYWRFeGlzdHNTdGF0ZW1lbnQ7Cisg
ICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX3N1
YkZyYW1lRXhpc3RzU3RhdGVtZW50OworICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9zdWJSZXNvdXJjZUV4aXN0c1N0YXRlbWVudDsKKyAgICBt
dXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fdW5pcXVl
UmVkaXJlY3RFeGlzdHNTdGF0ZW1lbnQ7CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX29ic2VydmVkRG9tYWluc0V4aXN0c1N0YXRlbWVudDsK
KyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1f
cmVtb3ZlQWxsRGF0YVN0YXRlbWVudDsKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsK
ICAgICBib29sIG1faXNOZXdSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VGaWxlIHsgZmFs
c2UgfTsKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399762</attachid>
            <date>2020-05-19 13:09:29 -0700</date>
            <delta_ts>2020-05-19 15:35:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211929-20200519130929.patch</filename>
            <type>text/plain</type>
            <size>81775</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNzY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDcxNmExZDI0Nzg1ZTE5NWRm
MmNiMGMxYjM2MTFjMTNhNjhjYzU0YzYuLjdkMzk0ZjM2NjU5YWZlMDRkZmE1Mjc0YTI2OTgyNzM0
NDc5Yzc4MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMjAtMDUtMTkgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgSVRQIGRhdGFiYXNl
IHNob3VsZCBmaW5hbGl6ZSBhbGwgcHJlcGFyZWQgc3RhdGVtZW50cyBiZWZvcmUgY2xvc2luZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExOTI5Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MzI0Njk0NT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGJlaGF2aW9yIGNvbmZpcm1l
ZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICBDb252ZXJ0IGFsbCBTUUxpdGUgc3RhdGVt
ZW50IG9iamVjdHMgdG8gYmUgdW5pcXVlIHBvaW50ZXJzIHRvIGJldHRlcgorICAgICAgICBtYW5h
Z2UgdGhlIGxpZmV0aW1lIG9mIGVhY2ggc3RhdGVtZW50IG9iamVjdC4gT25seSBpbml0aWFsaXpl
IGFuZAorICAgICAgICBwcmVwYXJlIGFuIG9iamVjdCB3aGVuIGl0IGlzIG5lZWRlZCBpbnN0ZWFk
IG9mIHByZXBhcmluZyBhbGwgb2JqZWN0cworICAgICAgICBhdCBvbmNlLiBTZXQgZWFjaCBzdGF0
ZW1lbnQgdG8gbnVsbCBiZWZvcmUgY2xvc2luZyB0aGUgZGF0YWJhc2UKKyAgICAgICAgYmVjYXVz
ZSB+U1FMaXRlU3RhdGVtZW50KCkgd2lsbCBmaW5hbGl6ZSB0aGUgc3RhdGVtZW50LgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyBhbGwgcmVzZXQoKSBjb21tYW5kcyBub3cgdGhhdCB3ZSBp
bml0aWFsaXplCisgICAgICAgIGVhY2ggc3RhdGVtZW50IHVzaW5nIFNRTGl0ZVN0YXRlbWVudEF1
dG9SZXNldFNjb3BlLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpjbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpnZXRTY29wZWRTdGF0ZW1lbnQgY29uc3QpOgorICAgICAgICBG
dW5jdGlvbiB0byBpbml0aWFsaXplIGFuZCBwcmVwYXJlIGEgc3RhdGVtZW50LgorCisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnREb21h
aW5SZWxhdGlvbnNoaXApOgorICAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIG5vdCB1c2VkIGFuZCBj
YW4gYmUgZGVsZXRlZC4KKworICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6Y2hlY2tGb3JNaXNzaW5nVGFibGVzSW5TY2hlbWEpOgorICAgICAgICAo
V2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aXNNaWdyYXRpb25O
ZWNlc3NhcnkpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6b3BlbkFuZFVwZGF0ZVNjaGVtYUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYktp
dDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmlzRW1wdHkgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZGVz
dHJveVN0YXRlbWVudHMpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6aW5zZXJ0T2JzZXJ2ZWREb21haW4pOgorICAgICAgICAoV2ViS2l0OjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVsYXRpb25zaGlwRXhpc3RzIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OmRvbWFpbklEIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6Om1lcmdlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1lcmdlU3RhdGlzdGljKToKKyAgICAgICAgKFdlYktp
dDo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcmVwYXJlU3RhdGVtZW50cyk6IERlbGV0ZWQuCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZS5oOgorICAgICAgICBVcGRhdGVkIGFsbCBzdGF0ZW1lbnQgdmFyaWFibGVz
IHRvIGVuZCB3aXRoICJTdGF0ZW1lbnQiIHRvIGZvbGxvdyB0aGUKKyAgICAgICAgZXN0YWJsaXNo
ZWQgcGF0dGVybi4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpmbHVzaEFuZERlc3Ryb3lQZXJzaXN0ZW50U3RvcmUpOgor
CiAyMDIwLTA1LTE1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgW2lPUyBTaW11bGF0b3JdIFRlc3RXZWJLaXRBUEkuX1dLRG93bmxvYWQuUmVz
dW1lIGlzIGEgZmxha3kgY3Jhc2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCmluZGV4IDMxZTkxOTk4NjU4NjAwMjMxZDY0Y2JjMDQ5
MzAxY2M1YzNhZjViNDguLjBjMzc0MGI3Mjk5NzFjOGZlMGY5MTM3NDI1NzQzMDgxNGQ3Y2IwNTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlLmNwcApAQCAtMjc1LDQ0ICsyNzUsNiBAQCBzdGF0aWMgY29uc3QgSGFzaE1hcDxTdHJpbmcs
IFN0cmluZz4mIGNyZWF0ZVRhYmxlUXVlcmllcygpCiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUoV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlJiBzdG9yZSwgV29ya1F1ZXVlJiB3b3JrUXVldWUsIFNob3Vs
ZEluY2x1ZGVMb2NhbGhvc3Qgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCwgY29uc3QgU3RyaW5nJiBz
dG9yYWdlRGlyZWN0b3J5UGF0aCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIDogUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKHN0b3JlLCB3b3JrUXVldWUsIHNob3VsZEluY2x1ZGVM
b2NhbGhvc3QpCiAgICAgLCBtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoKHN0b3JhZ2VEaXJlY3RvcnlQ
YXRoICsgIi9vYnNlcnZhdGlvbnMuZGIiKQotICAgICwgbV9vYnNlcnZlZERvbWFpbkNvdW50KG1f
ZGF0YWJhc2UsIG9ic2VydmVkRG9tYWluQ291bnRRdWVyeSkKLSAgICAsIG1faW5zZXJ0T2JzZXJ2
ZWREb21haW5TdGF0ZW1lbnQobV9kYXRhYmFzZSwgaW5zZXJ0T2JzZXJ2ZWREb21haW5RdWVyeSkK
LSAgICAsIG1faW5zZXJ0VG9wTGV2ZWxEb21haW5TdGF0ZW1lbnQobV9kYXRhYmFzZSwgaW5zZXJ0
VG9wTGV2ZWxEb21haW5RdWVyeSkKLSAgICAsIG1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50
KG1fZGF0YWJhc2UsIGRvbWFpbklERnJvbVN0cmluZ1F1ZXJ5KQotICAgICwgbV90b3BGcmFtZUxp
bmtEZWNvcmF0aW9uc0Zyb21FeGlzdHMobV9kYXRhYmFzZSwgdG9wRnJhbWVMaW5rRGVjb3JhdGlv
bnNGcm9tRXhpc3RzUXVlcnkpCi0gICAgLCBtX3RvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlw
dHNFeGlzdHMobV9kYXRhYmFzZSwgdG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0c0V4aXN0
c1F1ZXJ5KQotICAgICwgbV9zdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5FeGlzdHMobV9kYXRh
YmFzZSwgc3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluRXhpc3RzUXVlcnkpCi0gICAgLCBtX3N1
YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbkV4aXN0cyhtX2RhdGFiYXNlLCBzdWJyZXNvdXJj
ZVVuZGVyVG9wRnJhbWVEb21haW5FeGlzdHNRdWVyeSkKLSAgICAsIG1fc3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdHNUb0V4aXN0cyhtX2RhdGFiYXNlLCBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0
c1RvRXhpc3RzUXVlcnkpCi0gICAgLCBtX21vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25TdGF0ZW1l
bnQobV9kYXRhYmFzZSwgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblF1ZXJ5KQotICAgICwgbV91
cGRhdGVMYXN0U2VlblN0YXRlbWVudChtX2RhdGFiYXNlLCB1cGRhdGVMYXN0U2VlblF1ZXJ5KQot
ICAgICwgbV91cGRhdGVEYXRhUmVjb3Jkc1JlbW92ZWRTdGF0ZW1lbnQobV9kYXRhYmFzZSwgdXBk
YXRlRGF0YVJlY29yZHNSZW1vdmVkUXVlcnkpCi0gICAgLCBtX3VwZGF0ZVByZXZhbGVudFJlc291
cmNlU3RhdGVtZW50KG1fZGF0YWJhc2UsIHVwZGF0ZVByZXZhbGVudFJlc291cmNlUXVlcnkpCi0g
ICAgLCBtX2lzUHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQobV9kYXRhYmFzZSwgaXNQcmV2YWxl
bnRSZXNvdXJjZVF1ZXJ5KQotICAgICwgbV91cGRhdGVWZXJ5UHJldmFsZW50UmVzb3VyY2VTdGF0
ZW1lbnQobV9kYXRhYmFzZSwgdXBkYXRlVmVyeVByZXZhbGVudFJlc291cmNlUXVlcnkpCi0gICAg
LCBtX2lzVmVyeVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50KG1fZGF0YWJhc2UsIGlzVmVyeVBy
ZXZhbGVudFJlc291cmNlUXVlcnkpCi0gICAgLCBtX2NsZWFyUHJldmFsZW50UmVzb3VyY2VTdGF0
ZW1lbnQobV9kYXRhYmFzZSwgY2xlYXJQcmV2YWxlbnRSZXNvdXJjZVF1ZXJ5KQotICAgICwgbV9o
YWRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQobV9kYXRhYmFzZSwgaGFkVXNlckludGVyYWN0aW9u
UXVlcnkpCi0gICAgLCBtX3VwZGF0ZUdyYW5kZmF0aGVyZWRTdGF0ZW1lbnQobV9kYXRhYmFzZSwg
dXBkYXRlR3JhbmRmYXRoZXJlZFF1ZXJ5KQotICAgICwgbV91cGRhdGVJc1NjaGVkdWxlZEZvckFs
bEJ1dENvb2tpZURhdGFSZW1vdmFsU3RhdGVtZW50KG1fZGF0YWJhc2UsIHVwZGF0ZUlzU2NoZWR1
bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWxRdWVyeSkKLSAgICAsIG1faXNHcmFuZGZhdGhl
cmVkU3RhdGVtZW50KG1fZGF0YWJhc2UsIGlzR3JhbmRmYXRoZXJlZFF1ZXJ5KQotICAgICwgbV9m
aW5kRXhwaXJlZFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudChtX2RhdGFiYXNlLCBmaW5kRXhwaXJl
ZFVzZXJJbnRlcmFjdGlvblF1ZXJ5KQotICAgICwgbV9jb3VudFByZXZhbGVudFJlc291cmNlc1N0
YXRlbWVudChtX2RhdGFiYXNlLCBjb3VudFByZXZhbGVudFJlc291cmNlc1F1ZXJ5KQotICAgICwg
bV9jb3VudFByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQobV9k
YXRhYmFzZSwgY291bnRQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uUXVlcnkp
Ci0gICAgLCBtX2NvdW50UHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvblN0
YXRlbWVudChtX2RhdGFiYXNlLCBjb3VudFByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50
ZXJhY3Rpb25RdWVyeSkKLSAgICAsIG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVt
ZW50KG1fZGF0YWJhc2UsIGdldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVF1ZXJ5KQotICAgICwg
bV9nZXRBbGxEb21haW5zU3RhdGVtZW50KG1fZGF0YWJhc2UsIGdldEFsbERvbWFpbnNRdWVyeSkK
LSAgICAsIG1fZG9tYWluU3RyaW5nRnJvbURvbWFpbklEU3RhdGVtZW50KG1fZGF0YWJhc2UsIGRv
bWFpblN0cmluZ0Zyb21Eb21haW5JRFF1ZXJ5KQotICAgICwgbV9nZXRBbGxTdWJTdGF0aXN0aWNz
U3RhdGVtZW50KG1fZGF0YWJhc2UsIGdldEFsbFN1YlN0YXRpc3RpY3NVbmRlckRvbWFpblF1ZXJ5
KQotICAgICwgbV9zdG9yYWdlQWNjZXNzRXhpc3RzU3RhdGVtZW50KG1fZGF0YWJhc2UsIHN0b3Jh
Z2VBY2Nlc3NFeGlzdHNRdWVyeSkKLSAgICAsIG1fZ2V0TW9zdFJlY2VudGx5VXBkYXRlZFRpbWVz
dGFtcFN0YXRlbWVudChtX2RhdGFiYXNlLCBnZXRNb3N0UmVjZW50bHlVcGRhdGVkVGltZXN0YW1w
UXVlcnkpCi0gICAgLCBtX2xpbmtEZWNvcmF0aW9uRXhpc3RzU3RhdGVtZW50KG1fZGF0YWJhc2Us
IGxpbmtEZWNvcmF0aW9uRXhpc3RzUXVlcnkpCi0gICAgLCBtX3NjcmlwdExvYWRFeGlzdHNTdGF0
ZW1lbnQobV9kYXRhYmFzZSwgc2NyaXB0TG9hZEV4aXN0c1F1ZXJ5KQotICAgICwgbV9zdWJGcmFt
ZUV4aXN0c1N0YXRlbWVudChtX2RhdGFiYXNlLCBzdWJGcmFtZUV4aXN0c1F1ZXJ5KQotICAgICwg
bV9zdWJSZXNvdXJjZUV4aXN0c1N0YXRlbWVudChtX2RhdGFiYXNlLCBzdWJSZXNvdXJjZUV4aXN0
c1F1ZXJ5KQotICAgICwgbV91bmlxdWVSZWRpcmVjdEV4aXN0c1N0YXRlbWVudChtX2RhdGFiYXNl
LCB1bmlxdWVSZWRpcmVjdEV4aXN0c1F1ZXJ5KQotICAgICwgbV9vYnNlcnZlZERvbWFpbnNFeGlz
dHNTdGF0ZW1lbnQobV9kYXRhYmFzZSwgb2JzZXJ2ZWREb21haW5zRXhpc3RzUXVlcnkpCi0gICAg
LCBtX3JlbW92ZUFsbERhdGFTdGF0ZW1lbnQobV9kYXRhYmFzZSwgcmVtb3ZlQWxsRGF0YVF1ZXJ5
KQogICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOwpAQCAtMzI2LDE4ICsyODgsMjQgQEAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlKFdlYlJlc28K
ICAgICBpZiAoIW1fZGF0YWJhc2UudHVybk9uSW5jcmVtZW50YWxBdXRvVmFjdXVtKCkpCiAgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjp0dXJuT25JbmNyZW1lbnRhbEF1dG9WYWN1dW0gZmFpbGVkLCBlcnJv
ciBtZXNzYWdlOiAlIiBQVUJMSUNfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJy
b3JNc2coKSk7CiAKLSAgICBpZiAoIXByZXBhcmVTdGF0ZW1lbnRzKCkpIHsKLSAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OnByZXBhcmVTdGF0ZW1lbnRzIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJSIgUFVC
TElDX0xPR19TVFJJTkcgIiwgZGF0YWJhc2UgcGF0aDogJSIgUFVCTElDX0xPR19TVFJJTkcsIHRo
aXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCksIG1fc3RvcmFnZURpcmVjdG9yeVBhdGgudXRm
OCgpLmRhdGEoKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCiAgICAgd29ya1F1ZXVlLmRpc3BhdGNoQWZ0ZXIoNV9zLCBbd2Vha1RoaXMg
PSBtYWtlV2Vha1B0cigqdGhpcyldIHsKICAgICAgICAgaWYgKHdlYWtUaGlzKQogICAgICAgICAg
ICAgd2Vha1RoaXMtPmNhbGN1bGF0ZUFuZFN1Ym1pdFRlbGVtZXRyeSgpOwogICAgIH0pOwogfQog
CitSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6flJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlKCkKK3sKKyAgICBjbG9zZSgpOworfQorCit2b2lkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbG9zZSgpCit7CisgICAgZGVzdHJveVN0YXRl
bWVudHMoKTsKKyAgICBpZiAobV9kYXRhYmFzZS5pc09wZW4oKSkKKyAgICAgICAgbV9kYXRhYmFz
ZS5jbG9zZSgpOworfQorCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpvcGVuSVRQRGF0YWJhc2UoKQogewogICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyht
X3N0b3JhZ2VEaXJlY3RvcnlQYXRoKSkKQEAgLTM2NiwxMiArMzM0LDYgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6b3BlbklUUERhdGFiYXNlKCkKICAgICB9CiB9
CiAKLXN0YXRpYyB2b2lkIHJlc2V0U3RhdGVtZW50KFNRTGl0ZVN0YXRlbWVudCYgc3RhdGVtZW50
KQotewotICAgIGludCByZXNldFJlc3VsdCA9IHN0YXRlbWVudC5yZXNldCgpOwotICAgIEFTU0VS
VF9VTlVTRUQocmVzZXRSZXN1bHQsIHJlc2V0UmVzdWx0ID09IFNRTElURV9PSyk7Ci19Ci0KIE9w
dGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6Y2hlY2tGb3JNaXNzaW5nVGFibGVzSW5TY2hlbWEoKQogewogICAgIFZlY3RvcjxTdHJpbmc+
IG1pc3NpbmdUYWJsZXM7CkBAIC0zOTAsNyArMzUyLDYgQEAgT3B0aW9uYWw8VmVjdG9yPFN0cmlu
Zz4+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjaGVja0Zvck1pc3NpbmdU
YWIKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjaGVja0Zvck1pc3NpbmdUYWJsZXNJblNjaGVt
YSBzY2hlbWEgaXMgbWlzc2luZyB0YWJsZTogJXMiLCB0aGlzLCB0YWJsZS5hc2NpaSgpLmRhdGEo
KSk7CiAgICAgICAgICAgICBtaXNzaW5nVGFibGVzLmFwcGVuZChTdHJpbmcodGFibGUpKTsKICAg
ICAgICAgfQotICAgICAgICByZXNldFN0YXRlbWVudChzdGF0ZW1lbnQpOwogICAgIH0KICAgICBp
ZiAobWlzc2luZ1RhYmxlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CkBAIC00MjEsNyArMzgyLDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6aXNNaWdyYXRpb25OZWNlc3NhcnkoKQogICAgIC8vIElmIHRoZXJlIGlzIG5vIHRhYmxl
IGF0IGFsbCwgb3IgdGhlcmUgaXMgYW4gZXJyb3IgZXhlY3V0aW5nIHRoZSBmZXRjaCwgZGVsZXRl
IGFuZCByZW9wZW4gdGhlIGZpbGUuCiAgICAgaWYgKHN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRF
X1JPVykgewogICAgICAgICBMT0dfRVJST1IoIkVycm9yIGV4ZWN1dGluZyBzdGF0ZW1lbnQgdG8g
ZmV0Y2ggc2NoZW1hLiIpOwotICAgICAgICBtX2RhdGFiYXNlLmNsb3NlKCk7CisgICAgICAgIGNs
b3NlKCk7CiAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9zdG9yYWdlRGlyZWN0b3J5
UGF0aCk7CiAgICAgICAgIG9wZW5JVFBEYXRhYmFzZSgpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC01MTksNyArNDgwLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6b3BlbkFuZFVwZGF0ZVNjaGVtYUlmTmVjZXNzYXJ5KCkKICAgICAgICAgLy8gSWYgdGhl
cmUgaXMgbm8gT2JzZXJ2ZWREb21haW5zIHRhYmxlIGF0IGFsbCwgb3IgdGhlcmUgaXMgYW4gZXJy
b3IgZXhlY3V0aW5nIHRoZSBmZXRjaCwgZGVsZXRlIHRoZSBmaWxlLgogICAgICAgICBpZiAoc3Rh
dGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIkVy
cm9yIGV4ZWN1dGluZyBzdGF0ZW1lbnQgdG8gZmV0Y2ggc2NoZW1hIGZvciB0aGUgT2JzZXJ2ZWQg
RG9tYWlucyB0YWJsZS4iKTsKLSAgICAgICAgICAgIG1fZGF0YWJhc2UuY2xvc2UoKTsKKyAgICAg
ICAgICAgIGNsb3NlKCk7CiAgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fc3Rv
cmFnZURpcmVjdG9yeVBhdGgpOwogICAgICAgICAgICAgb3BlbklUUERhdGFiYXNlKCk7CiAgICAg
ICAgICAgICByZXR1cm47CkBAIC01MzMsMjUgKzQ5NCwzOCBAQCB2b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpvcGVuQW5kVXBkYXRlU2NoZW1hSWZOZWNlc3NhcnkoKQog
ICAgIC8vIElmIHRoZSBPYnNlcnZlZERvbWFpbnMgc2NoZW1hIGluIHRoZSBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzIGRpcmVjdG9yeSBpcyBub3QgdGhlIGN1cnJlbnQgc2NoZW1hLCBkZWxldGUgdGhl
IGRhdGFiYXNlIGZpbGUuCiAgICAgLy8gRklYTUU6IE1pZ3JhdGUgb2xkIE9ic2VydmVkRG9tYWlu
cyBkYXRhIHRvIG5ldyB0YWJsZSBzY2hlbWEuCiAgICAgaWYgKGN1cnJlbnRTY2hlbWEgIT0gT2Jz
ZXJ2ZWREb21haW5zVGFibGVTY2hlbWFWMSgpICYmIGN1cnJlbnRTY2hlbWEgIT0gT2JzZXJ2ZWRE
b21haW5zVGFibGVTY2hlbWFWMUFsdGVybmF0ZSgpKSB7Ci0gICAgICAgIG1fZGF0YWJhc2UuY2xv
c2UoKTsKKyAgICAgICAgY2xvc2UoKTsKICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZSht
X3N0b3JhZ2VEaXJlY3RvcnlQYXRoKTsKICAgICAgICAgb3BlbklUUERhdGFiYXNlKCk7CiAgICAg
fSBlbHNlCiAgICAgICAgIG1pZ3JhdGVEYXRhVG9OZXdUYWJsZXNJZk5lY2Vzc2FyeSgpOwogfQog
CitTUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6Z2V0U2NvcGVkU3RhdGVtZW50KHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpT
UUxpdGVTdGF0ZW1lbnQ+JiBzdGF0ZW1lbnQsIGNvbnN0IFN0cmluZyBxdWVyeSwgY29uc3QgU3Ry
aW5nJiBsb2dTdHJpbmcpIGNvbnN0Cit7CisgICAgaWYgKCFzdGF0ZW1lbnQpIHsKKyAgICAgICAg
c3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+KG1fZGF0YWJh
c2UsIHF1ZXJ5KTsKKyAgICAgICAgQVNTRVJUKG1fZGF0YWJhc2UuaXNPcGVuKCkpOworICAgICAg
ICBpZiAoc3RhdGVtZW50LT5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKSB7CisgICAgICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6JXMgZmFpbGVkIHRvIHByZXBhcmUgc3RhdGVtZW50LCBlcnJvciBtZXNzYWdl
OiAle3ByaXZhdGV9cyIsIHRoaXMsIGxvZ1N0cmluZy5hc2NpaSgpLmRhdGEoKSwgbV9kYXRhYmFz
ZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gU1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUg
eyBzdGF0ZW1lbnQuZ2V0KCkgfTsKK30KKwogYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6aXNFbXB0eSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7CiAgICAgCi0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICBpZiAobV9vYnNlcnZl
ZERvbWFpbkNvdW50LnN0ZXAoKSA9PSBTUUxJVEVfUk9XKQotICAgICAgICByZXN1bHQgPSAhbV9v
YnNlcnZlZERvbWFpbkNvdW50LmdldENvbHVtbkludCgwKTsKLSAgICAKLSAgICBpbnQgcmVzZXRS
ZXN1bHQgPSBtX29ic2VydmVkRG9tYWluQ291bnQucmVzZXQoKTsKLSAgICBBU1NFUlRfVU5VU0VE
KHJlc2V0UmVzdWx0LCByZXNldFJlc3VsdCA9PSBTUUxJVEVfT0spOwotICAgIAotICAgIHJldHVy
biByZXN1bHQ7CisgICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSBnZXRTY29wZWRTdGF0ZW1lbnQo
bV9vYnNlcnZlZERvbWFpbkNvdW50U3RhdGVtZW50LCBvYnNlcnZlZERvbWFpbkNvdW50UXVlcnks
ICJpc0VtcHR5Il9zKTsKKyAgICBpZiAoIXNjb3BlZFN0YXRlbWVudAorICAgICAgICB8fCBzY29w
ZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7CisgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
Ojppc0VtcHR5IGZhaWxlZCB0byBzdGVwLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRo
aXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gIXNjb3BlZFN0
YXRlbWVudC0+Z2V0Q29sdW1uSW50KDApOwogfQogCiBib29sIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpjcmVhdGVVbmlxdWVJbmRpY2VzKCkKQEAgLTY0Miw1NSArNjE2LDQ4
IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNyZWF0ZVNjaGVt
YSgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OnByZXBhcmVTdGF0ZW1lbnRzKCkKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKLSAgICAgICAgCi0gICAgaWYgKG1fb2JzZXJ2ZWREb21haW5Db3VudC5wcmVw
YXJlKCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0
ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX2luc2VydFRvcExldmVs
RG9tYWluU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9kb21h
aW5JREZyb21TdHJpbmdTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwotICAgICAgICB8
fCBtX3N1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbkV4aXN0cy5wcmVwYXJlKCkgIT0gU1FMSVRF
X09LCi0gICAgICAgIHx8IG1fc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluRXhpc3RzLnBy
ZXBhcmUoKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9zdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0c1RvRXhpc3RzLnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV91cGRhdGVM
YXN0U2VlblN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fdXBk
YXRlRGF0YVJlY29yZHNSZW1vdmVkU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKLSAg
ICAgICAgfHwgbV9tb3N0UmVjZW50VXNlckludGVyYWN0aW9uU3RhdGVtZW50LnByZXBhcmUoKSAh
PSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV91cGRhdGVQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVu
dC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1faXNQcmV2YWxlbnRSZXNvdXJj
ZVN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fdXBkYXRlVmVy
eVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKLSAgICAg
ICAgfHwgbV9pc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FM
SVRFX09LCi0gICAgICAgIHx8IG1fY2xlYXJQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudC5wcmVw
YXJlKCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1faGFkVXNlckludGVyYWN0aW9uU3RhdGVt
ZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV91cGRhdGVHcmFuZGZhdGhl
cmVkU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV91cGRhdGVJ
c1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsU3RhdGVtZW50LnByZXBhcmUoKSAh
PSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9pc0dyYW5kZmF0aGVyZWRTdGF0ZW1lbnQucHJlcGFy
ZSgpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX2ZpbmRFeHBpcmVkVXNlckludGVyYWN0aW9u
U3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV90b3BGcmFtZUxp
bmtEZWNvcmF0aW9uc0Zyb21FeGlzdHMucHJlcGFyZSgpICE9IFNRTElURV9PSwotICAgICAgICB8
fCBtX3RvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHNFeGlzdHMucHJlcGFyZSgpICE9IFNR
TElURV9PSwotICAgICAgICB8fCBtX2NvdW50UHJldmFsZW50UmVzb3VyY2VzU3RhdGVtZW50LnBy
ZXBhcmUoKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9jb3VudFByZXZhbGVudFJlc291cmNl
c1dpdGhVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwotICAg
ICAgICB8fCBtX2NvdW50UHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvblN0
YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fZ2V0UmVzb3VyY2VE
YXRhQnlEb21haW5OYW1lU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKLSAgICAgICAg
fHwgbV9nZXRBbGxEb21haW5zU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKLSAgICAg
ICAgfHwgbV9kb21haW5TdHJpbmdGcm9tRG9tYWluSURTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNR
TElURV9PSwotICAgICAgICB8fCBtX2dldEFsbFN1YlN0YXRpc3RpY3NTdGF0ZW1lbnQucHJlcGFy
ZSgpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX3N0b3JhZ2VBY2Nlc3NFeGlzdHNTdGF0ZW1l
bnQucHJlcGFyZSgpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX2dldE1vc3RSZWNlbnRseVVw
ZGF0ZWRUaW1lc3RhbXBTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwotICAgICAgICB8
fCBtX2xpbmtEZWNvcmF0aW9uRXhpc3RzU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sK
LSAgICAgICAgfHwgbV9zY3JpcHRMb2FkRXhpc3RzU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJ
VEVfT0sKLSAgICAgICAgfHwgbV9zdWJGcmFtZUV4aXN0c1N0YXRlbWVudC5wcmVwYXJlKCkgIT0g
U1FMSVRFX09LCi0gICAgICAgIHx8IG1fc3ViUmVzb3VyY2VFeGlzdHNTdGF0ZW1lbnQucHJlcGFy
ZSgpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX3VuaXF1ZVJlZGlyZWN0RXhpc3RzU3RhdGVt
ZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9vYnNlcnZlZERvbWFpbnNF
eGlzdHNTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX3JlbW92
ZUFsbERhdGFTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwotICAgICAgICApIHsKLSAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OnByZXBhcmVTdGF0ZW1lbnRzIGZhaWxlZCB0byBwcmVwYXJlLCBl
cnJvciBtZXNzYWdlOiAlIiBQVUJMSUNfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0
RXJyb3JNc2coKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Cit2b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkZXN0cm95U3RhdGVtZW50cygpCit7CisgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBtX29ic2VydmVkRG9tYWluQ291bnRTdGF0ZW1l
bnQgPSBudWxscHRyOworICAgIG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQgPSBudWxs
cHRyOworICAgIG1faW5zZXJ0VG9wTGV2ZWxEb21haW5TdGF0ZW1lbnQgPSBudWxscHRyOworICAg
IG1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX3N1YmZyYW1l
VW5kZXJUb3BGcmFtZURvbWFpbkV4aXN0c1N0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV9zdWJy
ZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5FeGlzdHNTdGF0ZW1lbnQgPSBudWxscHRyOworICAg
IG1fc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUb0V4aXN0c1N0YXRlbWVudCA9IG51bGxwdHI7
CisgICAgbV91cGRhdGVMYXN0U2VlblN0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV91cGRhdGVE
YXRhUmVjb3Jkc1JlbW92ZWRTdGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1fbW9zdFJlY2VudFVz
ZXJJbnRlcmFjdGlvblN0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV91cGRhdGVQcmV2YWxlbnRS
ZXNvdXJjZVN0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV9pc1ByZXZhbGVudFJlc291cmNlU3Rh
dGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX3VwZGF0ZVZlcnlQcmV2YWxlbnRSZXNvdXJjZVN0YXRl
bWVudCA9IG51bGxwdHI7CisgICAgbV9pc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudCA9
IG51bGxwdHI7CisgICAgbV9jbGVhclByZXZhbGVudFJlc291cmNlU3RhdGVtZW50ID0gbnVsbHB0
cjsKKyAgICBtX2hhZFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV91
cGRhdGVHcmFuZGZhdGhlcmVkU3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX3VwZGF0ZUlzU2No
ZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWxTdGF0ZW1lbnQgPSBudWxscHRyOworICAg
IG1faXNHcmFuZGZhdGhlcmVkU3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX2ZpbmRFeHBpcmVk
VXNlckludGVyYWN0aW9uU3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX3RvcEZyYW1lTGlua0Rl
Y29yYXRpb25zRnJvbUV4aXN0c1N0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV90b3BGcmFtZUxv
YWRlZFRoaXJkUGFydHlTY3JpcHRzRXhpc3RzU3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX2Nv
dW50UHJldmFsZW50UmVzb3VyY2VzU3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX2NvdW50UHJl
dmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudCA9IG51bGxwdHI7Cisg
ICAgbV9jb3VudFByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb25TdGF0ZW1l
bnQgPSBudWxscHRyOworICAgIG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50
ID0gbnVsbHB0cjsKKyAgICBtX2dldEFsbERvbWFpbnNTdGF0ZW1lbnQgPSBudWxscHRyOworICAg
IG1fZG9tYWluU3RyaW5nRnJvbURvbWFpbklEU3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX2dl
dEFsbFN1YlN0YXRpc3RpY3NTdGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1fc3RvcmFnZUFjY2Vz
c0V4aXN0c1N0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV9nZXRNb3N0UmVjZW50bHlVcGRhdGVk
VGltZXN0YW1wU3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX2xpbmtEZWNvcmF0aW9uRXhpc3Rz
U3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX3NjcmlwdExvYWRFeGlzdHNTdGF0ZW1lbnQgPSBu
dWxscHRyOworICAgIG1fc3ViRnJhbWVFeGlzdHNTdGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1f
c3ViUmVzb3VyY2VFeGlzdHNTdGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1fdW5pcXVlUmVkaXJl
Y3RFeGlzdHNTdGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1fb2JzZXJ2ZWREb21haW5zRXhpc3Rz
U3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX3JlbW92ZUFsbERhdGFTdGF0ZW1lbnQgPSBudWxs
cHRyOwogfQogCiBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNl
cnRPYnNlcnZlZERvbWFpbihjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBsb2FkU3RhdGlz
dGljcykKQEAgLTcwMiw5OCArNjY5LDY1IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6Omluc2VydE9ic2VydmVkRG9tYWluKGNvbnN0IFJlc291cmNlTG9hCiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQot
Ci0gICAgaWYgKG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQuYmluZFRleHQoUmVnaXN0
cmFibGVEb21haW5JbmRleCwgbG9hZFN0YXRpc3RpY3MucmVnaXN0cmFibGVEb21haW4uc3RyaW5n
KCkpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVt
ZW50LmJpbmREb3VibGUoTGFzdFNlZW5JbmRleCwgbG9hZFN0YXRpc3RpY3MubGFzdFNlZW4uc2Vj
b25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9pbnNl
cnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC5iaW5kSW50KEhhZFVzZXJJbnRlcmFjdGlvbkluZGV4
LCBsb2FkU3RhdGlzdGljcy5oYWRVc2VySW50ZXJhY3Rpb24pICE9IFNRTElURV9PSwotICAgICAg
ICB8fCBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50LmJpbmREb3VibGUoTW9zdFJlY2Vu
dFVzZXJJbnRlcmFjdGlvblRpbWVJbmRleCwgbG9hZFN0YXRpc3RpY3MubW9zdFJlY2VudFVzZXJJ
bnRlcmFjdGlvblRpbWUuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKSAhPSBTUUxJVEVfT0sK
LSAgICAgICAgfHwgbV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC5iaW5kSW50KEdyYW5k
ZmF0aGVyZWRJbmRleCwgbG9hZFN0YXRpc3RpY3MuZ3JhbmRmYXRoZXJlZCkgIT0gU1FMSVRFX09L
Ci0gICAgICAgIHx8IG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQuYmluZEludChJc1By
ZXZhbGVudEluZGV4LCBsb2FkU3RhdGlzdGljcy5pc1ByZXZhbGVudFJlc291cmNlKSAhPSBTUUxJ
VEVfT0sKLSAgICAgICAgfHwgbV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC5iaW5kSW50
KElzVmVyeVByZXZhbGVudEluZGV4LCBsb2FkU3RhdGlzdGljcy5pc1ZlcnlQcmV2YWxlbnRSZXNv
dXJjZSkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0
ZW1lbnQuYmluZEludChEYXRhUmVjb3Jkc1JlbW92ZWRJbmRleCwgbG9hZFN0YXRpc3RpY3MuZGF0
YVJlY29yZHNSZW1vdmVkKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9pbnNlcnRPYnNlcnZl
ZERvbWFpblN0YXRlbWVudC5iaW5kSW50KFRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1Vz
ZXJJbnRlcmFjdGlvbkluZGV4LCBsb2FkU3RhdGlzdGljcy50aW1lc0FjY2Vzc2VkQXNGaXJzdFBh
cnR5RHVlVG9Vc2VySW50ZXJhY3Rpb24pICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX2luc2Vy
dE9ic2VydmVkRG9tYWluU3RhdGVtZW50LmJpbmRJbnQoVGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0
eUR1ZVRvU3RvcmFnZUFjY2Vzc0FQSUluZGV4LCBsb2FkU3RhdGlzdGljcy50aW1lc0FjY2Vzc2Vk
QXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJKSAhPSBTUUxJVEVfT0sKLSAgICAgICAg
fHwgbV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC5iaW5kSW50KElzU2NoZWR1bGVkRm9y
QWxsQnV0Q29va2llRGF0YVJlbW92YWxJbmRleCwgbG9hZFN0YXRpc3RpY3MuZ290TGlua0RlY29y
YXRpb25Gcm9tUHJldmFsZW50UmVzb3VyY2UpICE9IFNRTElURV9PSykgeworICAgIGF1dG8gc2Nv
cGVkU3RhdGVtZW50ID0gZ2V0U2NvcGVkU3RhdGVtZW50KG1faW5zZXJ0T2JzZXJ2ZWREb21haW5T
dGF0ZW1lbnQsIGluc2VydE9ic2VydmVkRG9tYWluUXVlcnksICJpbnNlcnRPYnNlcnZlZERvbWFp
biJfcyk7CisgICAgaWYgKCFzY29wZWRTdGF0ZW1lbnQKKyAgICAgICAgfHwgc2NvcGVkU3RhdGVt
ZW50LT5iaW5kVGV4dChSZWdpc3RyYWJsZURvbWFpbkluZGV4LCBsb2FkU3RhdGlzdGljcy5yZWdp
c3RyYWJsZURvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHNjb3BlZFN0
YXRlbWVudC0+YmluZERvdWJsZShMYXN0U2VlbkluZGV4LCBsb2FkU3RhdGlzdGljcy5sYXN0U2Vl
bi5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpICE9IFNRTElURV9PSworICAgICAgICB8fCBz
Y29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQoSGFkVXNlckludGVyYWN0aW9uSW5kZXgsIGxvYWRTdGF0
aXN0aWNzLmhhZFVzZXJJbnRlcmFjdGlvbikgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHNjb3Bl
ZFN0YXRlbWVudC0+YmluZERvdWJsZShNb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZUluZGV4
LCBsb2FkU3RhdGlzdGljcy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZS5zZWNvbmRzU2lu
Y2VFcG9jaCgpLnZhbHVlKCkpICE9IFNRTElURV9PSworICAgICAgICB8fCBzY29wZWRTdGF0ZW1l
bnQtPmJpbmRJbnQoR3JhbmRmYXRoZXJlZEluZGV4LCBsb2FkU3RhdGlzdGljcy5ncmFuZGZhdGhl
cmVkKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KElz
UHJldmFsZW50SW5kZXgsIGxvYWRTdGF0aXN0aWNzLmlzUHJldmFsZW50UmVzb3VyY2UpICE9IFNR
TElURV9PSworICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQoSXNWZXJ5UHJldmFs
ZW50SW5kZXgsIGxvYWRTdGF0aXN0aWNzLmlzVmVyeVByZXZhbGVudFJlc291cmNlKSAhPSBTUUxJ
VEVfT0sKKyAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KERhdGFSZWNvcmRzUmVt
b3ZlZEluZGV4LCBsb2FkU3RhdGlzdGljcy5kYXRhUmVjb3Jkc1JlbW92ZWQpICE9IFNRTElURV9P
SworICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQoVGltZXNBY2Nlc3NlZEFzRmly
c3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uSW5kZXgsIGxvYWRTdGF0aXN0aWNzLnRpbWVzQWNj
ZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlvbikgIT0gU1FMSVRFX09LCisgICAg
ICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZEludChUaW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5
RHVlVG9TdG9yYWdlQWNjZXNzQVBJSW5kZXgsIGxvYWRTdGF0aXN0aWNzLnRpbWVzQWNjZXNzZWRB
c0ZpcnN0UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUEkpICE9IFNRTElURV9PSworICAgICAgICB8
fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQoSXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRh
UmVtb3ZhbEluZGV4LCBsb2FkU3RhdGlzdGljcy5nb3RMaW5rRGVjb3JhdGlvbkZyb21QcmV2YWxl
bnRSZXNvdXJjZSkgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lG
X0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjppbnNlcnRPYnNlcnZlZERvbWFpbiBmYWlsZWQgdG8gYmluZCwgZXJyb3IgbWVzc2Fn
ZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
LSAgICBpZiAobV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRF
X0RPTkUpIHsKKyAgICBpZiAoc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUp
IHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydE9ic2VydmVkRG9tYWluIGZhaWxlZCB0byBj
b21taXQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0
RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQotCi0gICAgaW50IHJlc2V0UmVzdWx0ID0gbV9pbnNlcnRPYnNlcnZl
ZERvbWFpblN0YXRlbWVudC5yZXNldCgpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzZXRSZXN1bHQs
IHJlc2V0UmVzdWx0ID09IFNRTElURV9PSyk7Ci0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVsYXRpb25zaGlwRXhpc3Rz
KFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCYgc3RhdGVtZW50LCBPcHRpb25hbDx1bnNpZ25lZD4g
Zmlyc3REb21haW5JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHNlY29uZERvbWFpbikgY29u
c3QKK2Jvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlbGF0aW9uc2hp
cEV4aXN0cyhTUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZSYgc3RhdGVtZW50LCBPcHRpb25h
bDx1bnNpZ25lZD4gZmlyc3REb21haW5JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHNlY29u
ZERvbWFpbikgY29uc3QKIHsKICAgICBpZiAoIWZpcnN0RG9tYWluSUQpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIGlm
IChzdGF0ZW1lbnQuYmluZEludCgxLCAqZmlyc3REb21haW5JRCkgIT0gU1FMSVRFX09LCi0gICAg
ICAgIHx8IHN0YXRlbWVudC5iaW5kVGV4dCgyLCBzZWNvbmREb21haW4uc3RyaW5nKCkpICE9IFNR
TElURV9PSwotICAgICAgICB8fCBzdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ST1cpIHsKKyAg
ICBpZiAoIXN0YXRlbWVudAorICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRJbnQoMSwgKmZpcnN0
RG9tYWluSUQpICE9IFNRTElURV9PSworICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRUZXh0KDIs
IHNlY29uZERvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHN0YXRlbWVu
dC0+c3RlcCgpICE9IFNRTElURV9ST1cpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZf
QUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OnJlbGF0aW9uc2hpcEV4aXN0cyBmYWlsZWQgdG8gYmluZCwgZXJyb3IgbWVzc2FnZTog
JXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAg
Ym9vbCByZWxhdGlvbnNoaXBFeGlzdHMgPSAhIXN0YXRlbWVudC5nZXRDb2x1bW5JbnQoMCk7Ci0K
LSAgICBpbnQgcmVzZXRSZXN1bHQgPSBzdGF0ZW1lbnQucmVzZXQoKTsKLSAgICBBU1NFUlRfVU5V
U0VEKHJlc2V0UmVzdWx0LCByZXNldFJlc3VsdCA9PSBTUUxJVEVfT0spOwotICAgIAotICAgIHJl
dHVybiByZWxhdGlvbnNoaXBFeGlzdHM7Ci19Ci0KLWJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6Omluc2VydERvbWFpblJlbGF0aW9uc2hpcChXZWJDb3JlOjpTUUxpdGVT
dGF0ZW1lbnQmIHN0YXRlbWVudCwgdW5zaWduZWQgZG9tYWluSUQsIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiB0b3BGcmFtZSkKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLQot
ICAgIGlmIChzdGF0ZW1lbnQuYmluZEludCgxLCBkb21haW5JRCkgIT0gU1FMSVRFX09LCi0gICAg
ICAgIHx8IHN0YXRlbWVudC5iaW5kVGV4dCgyLCB0b3BGcmFtZS5zdHJpbmcoKSkgIT0gU1FMSVRF
X09LCi0gICAgICAgIHx8IHN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1faW5zZXJ0RG9tYWluUmVsYXRpb25zaGlw
U3RhdGVtZW50IGZhaWxlZCB0byBiaW5kLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRo
aXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGludCByZXNldFJlc3Vs
dCA9IHN0YXRlbWVudC5yZXNldCgpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzZXRSZXN1bHQsIHJl
c2V0UmVzdWx0ID09IFNRTElURV9PSyk7Ci0gICAgCi0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0
dXJuICEhc3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMCk7CiB9CiAKIE9wdGlvbmFsPHVuc2lnbmVk
PiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWluSUQoY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIGRvbWFpbikgY29uc3QKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKIAotICAgIHVuc2lnbmVkIGRvbWFpbklEID0gMDsKLQotICAgIGlmIChtX2RvbWFp
bklERnJvbVN0cmluZ1N0YXRlbWVudC5iaW5kVGV4dCgxLCBkb21haW4uc3RyaW5nKCkpICE9IFNR
TElURV9PSykgeworICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50ID0gZ2V0U2NvcGVkU3RhdGVtZW50
KG1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50LCBkb21haW5JREZyb21TdHJpbmdRdWVyeSwg
ImRvbWFpbklEIl9zKTsKKyAgICBpZiAoIXNjb3BlZFN0YXRlbWVudAorICAgICAgICB8fCBzY29w
ZWRTdGF0ZW1lbnQtPmJpbmRUZXh0KDEsIGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LKSB7
CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAt
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkb21haW5JREZyb21TdHJpbmcg
ZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFz
dEVycm9yTXNnKCkpOwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH0KICAgICAK
LSAgICBpZiAobV9kb21haW5JREZyb21TdHJpbmdTdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9S
T1cpIHsKLSAgICAgICAgaW50IHJlc2V0UmVzdWx0ID0gbV9kb21haW5JREZyb21TdHJpbmdTdGF0
ZW1lbnQucmVzZXQoKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChyZXNldFJlc3VsdCwgcmVzZXRS
ZXN1bHQgPT0gU1FMSVRFX09LKTsKKyAgICBpZiAoc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgIT0g
U1FMSVRFX1JPVykKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9CiAKLSAgICBk
b21haW5JRCA9IG1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50LmdldENvbHVtbkludCgwKTsK
LQotICAgIGludCByZXNldFJlc3VsdCA9IG1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50LnJl
c2V0KCk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXNldFJlc3VsdCwgcmVzZXRSZXN1bHQgPT0gU1FM
SVRFX09LKTsKLSAgICAKLSAgICByZXR1cm4gZG9tYWluSUQ7CisgICAgcmV0dXJuIHNjb3BlZFN0
YXRlbWVudC0+Z2V0Q29sdW1uSW50KDApOwogfQogCiBTdHJpbmcgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OmVuc3VyZUFuZE1ha2VEb21haW5MaXN0KGNvbnN0IEhhc2hTZXQ8
UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5MaXN0KQpAQCAtODg0LDE4ICs4MTgsMTggQEAgdm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cG9wdWxhdGVGcm9tTWVtb3J5
U3RvcmUoY29uc3QgUmVzb3VyY2UKICAgICAgICAgaW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwcyhz
dGF0aXN0aWMudmFsdWUpOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjptZXJnZShXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQmIGN1cnJlbnQsIGNvbnN0IFJl
c291cmNlTG9hZFN0YXRpc3RpY3MmIG90aGVyKQordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6bWVyZ2UoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50KiBjdXJyZW50LCBj
b25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBvdGhlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxv
b3A6OmlzTWFpbigpKTsKIAotICAgIGF1dG8gY3VycmVudFJlZ2lzdHJhYmxlRG9tYWluID0gY3Vy
cmVudC5nZXRDb2x1bW5UZXh0KFJlZ2lzdHJhYmxlRG9tYWluSW5kZXgpOwotICAgIGF1dG8gY3Vy
cmVudExhc3RTZWVuID0gY3VycmVudC5nZXRDb2x1bW5Eb3VibGUoTGFzdFNlZW5JbmRleCk7Ci0g
ICAgYXV0byBjdXJyZW50TW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiA9IGN1cnJlbnQuZ2V0Q29s
dW1uRG91YmxlKE1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lSW5kZXgpOwotICAgIGJvb2wg
Y3VycmVudEdyYW5kZmF0aGVyZWQgPSBjdXJyZW50LmdldENvbHVtbkludChHcmFuZGZhdGhlcmVk
SW5kZXgpOwotICAgIGJvb2wgY3VycmVudElzUHJldmFsZW50ID0gY3VycmVudC5nZXRDb2x1bW5J
bnQoSXNQcmV2YWxlbnRJbmRleCk7Ci0gICAgYm9vbCBjdXJyZW50SXNWZXJ5UHJldmFsZW50ID0g
Y3VycmVudC5nZXRDb2x1bW5JbnQoSXNWZXJ5UHJldmFsZW50SW5kZXgpOwotICAgIHVuc2lnbmVk
IGN1cnJlbnREYXRhUmVjb3Jkc1JlbW92ZWQgPSBjdXJyZW50LmdldENvbHVtbkludChEYXRhUmVj
b3Jkc1JlbW92ZWRJbmRleCk7Ci0gICAgYm9vbCBjdXJyZW50SXNTY2hlZHVsZWRGb3JBbGxCdXRD
b29raWVEYXRhUmVtb3ZhbCA9IGN1cnJlbnQuZ2V0Q29sdW1uSW50KElzU2NoZWR1bGVkRm9yQWxs
QnV0Q29va2llRGF0YVJlbW92YWxJbmRleCk7CisgICAgYXV0byBjdXJyZW50UmVnaXN0cmFibGVE
b21haW4gPSBjdXJyZW50LT5nZXRDb2x1bW5UZXh0KFJlZ2lzdHJhYmxlRG9tYWluSW5kZXgpOwor
ICAgIGF1dG8gY3VycmVudExhc3RTZWVuID0gY3VycmVudC0+Z2V0Q29sdW1uRG91YmxlKExhc3RT
ZWVuSW5kZXgpOworICAgIGF1dG8gY3VycmVudE1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24gPSBj
dXJyZW50LT5nZXRDb2x1bW5Eb3VibGUoTW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWVJbmRl
eCk7CisgICAgYm9vbCBjdXJyZW50R3JhbmRmYXRoZXJlZCA9IGN1cnJlbnQtPmdldENvbHVtbklu
dChHcmFuZGZhdGhlcmVkSW5kZXgpOworICAgIGJvb2wgY3VycmVudElzUHJldmFsZW50ID0gY3Vy
cmVudC0+Z2V0Q29sdW1uSW50KElzUHJldmFsZW50SW5kZXgpOworICAgIGJvb2wgY3VycmVudElz
VmVyeVByZXZhbGVudCA9IGN1cnJlbnQtPmdldENvbHVtbkludChJc1ZlcnlQcmV2YWxlbnRJbmRl
eCk7CisgICAgdW5zaWduZWQgY3VycmVudERhdGFSZWNvcmRzUmVtb3ZlZCA9IGN1cnJlbnQtPmdl
dENvbHVtbkludChEYXRhUmVjb3Jkc1JlbW92ZWRJbmRleCk7CisgICAgYm9vbCBjdXJyZW50SXNT
Y2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCA9IGN1cnJlbnQtPmdldENvbHVtbklu
dChJc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsSW5kZXgpOwogCiAgICAgQVNT
RVJUKGN1cnJlbnRSZWdpc3RyYWJsZURvbWFpbiA9PSBvdGhlci5yZWdpc3RyYWJsZURvbWFpbi5z
dHJpbmcoKSk7CiAKQEAgLTkyNSwxNSArODU5LDE2IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6Om1lcmdlU3RhdGlzdGljKGNvbnN0IFJlc291cmNlTG9hZFN0YXRp
CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBpZiAobV9nZXRSZXNv
dXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQuYmluZFRleHQoMSwgc3RhdGlzdGljLnJlZ2lz
dHJhYmxlRG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9nZXRSZXNv
dXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ST1cpIHsKKyAg
ICBhdXRvIHNjb3BlZFN0YXRlbWVudCA9IGdldFNjb3BlZFN0YXRlbWVudChtX2dldFJlc291cmNl
RGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudCwgZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lUXVl
cnksICJtZXJnZVN0YXRpc3RpYyJfcyk7CisgICAgaWYgKCFzY29wZWRTdGF0ZW1lbnQKKyAgICAg
ICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kVGV4dCgxLCBzdGF0aXN0aWMucmVnaXN0cmFibGVE
b21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSworICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQt
PnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FM
TE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjptZXJnZVN0YXRpc3RpYy4gU3RhdGVtZW50IGZhaWxlZCB0byBiaW5kIG9yIGRvbWFpbiB3
YXMgbm90IGZvdW5kLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJh
c2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1lcmdlKG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5O
YW1lU3RhdGVtZW50LCBzdGF0aXN0aWMpOwotICAgIHJlc2V0U3RhdGVtZW50KG1fZ2V0UmVzb3Vy
Y2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50KTsKKyAgICBtZXJnZShzY29wZWRTdGF0ZW1lbnQu
Z2V0KCksIHN0YXRpc3RpYyk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6Om1lcmdlU3RhdGlzdGljcyhWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4m
JiBzdGF0aXN0aWNzKQpAQCAtOTg3LDE4ICs5MjIsMTkgQEAgc3RhdGljIFNRTGl0ZVN0YXRlbWVu
dCBtYWtlTWVkaWFuV2l0aFVJUXVlcnkoU1FMaXRlRGF0YWJhc2UmIGRhdGFiYXNlKQogCiBWZWN0
b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNp
ZmljRmlyc3RQYXJ0eT4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldFRo
aXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9tYWlucyh1bnNpZ25lZCB0aGlyZFBh
cnR5RG9tYWluSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0aGlyZFBhcnR5RG9tYWluKSBj
b25zdAogewotICAgIGlmIChtX2dldEFsbFN1YlN0YXRpc3RpY3NTdGF0ZW1lbnQuYmluZEludCgx
LCB0aGlyZFBhcnR5RG9tYWluSUQpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX2dldEFsbFN1
YlN0YXRpc3RpY3NTdGF0ZW1lbnQuYmluZEludCgyLCB0aGlyZFBhcnR5RG9tYWluSUQpICE9IFNR
TElURV9PSwotICAgICAgICB8fCBtX2dldEFsbFN1YlN0YXRpc3RpY3NTdGF0ZW1lbnQuYmluZElu
dCgzLCB0aGlyZFBhcnR5RG9tYWluSUQpICE9IFNRTElURV9PSykgeworICAgIGF1dG8gc2NvcGVk
U3RhdGVtZW50ID0gZ2V0U2NvcGVkU3RhdGVtZW50KG1fZ2V0QWxsU3ViU3RhdGlzdGljc1N0YXRl
bWVudCwgZ2V0QWxsU3ViU3RhdGlzdGljc1VuZGVyRG9tYWluUXVlcnksICJnZXRUaGlyZFBhcnR5
RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbnMiX3MpOworICAgIGlmICghc2NvcGVkU3Rh
dGVtZW50CisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZEludCgxLCB0aGlyZFBhcnR5
RG9tYWluSUQpICE9IFNRTElURV9PSworICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRJ
bnQoMiwgdGhpcmRQYXJ0eURvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc2NvcGVk
U3RhdGVtZW50LT5iaW5kSW50KDMsIHRoaXJkUGFydHlEb21haW5JRCkgIT0gU1FMSVRFX09LKSB7
CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6Z2V0VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlE
b21haW4sIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCBtX2RhdGFiYXNlLmxh
c3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogICAg
IFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhRm9y
U3BlY2lmaWNGaXJzdFBhcnR5PiB0aGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURv
bWFpbnM7Ci0gICAgd2hpbGUgKG1fZ2V0QWxsU3ViU3RhdGlzdGljc1N0YXRlbWVudC5zdGVwKCkg
PT0gU1FMSVRFX1JPVykgewotICAgICAgICBSZWdpc3RyYWJsZURvbWFpbiBmaXJzdFBhcnR5RG9t
YWluID0gUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURv
bWFpblN0cmluZyhnZXREb21haW5TdHJpbmdGcm9tRG9tYWluSUQobV9nZXRBbGxTdWJTdGF0aXN0
aWNzU3RhdGVtZW50LmdldENvbHVtbkludCgwKSkpOworICAgIHdoaWxlIChzY29wZWRTdGF0ZW1l
bnQtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKSB7CisgICAgICAgIFJlZ2lzdHJhYmxlRG9tYWluIGZp
cnN0UGFydHlEb21haW4gPSBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJl
Z2lzdHJhYmxlRG9tYWluU3RyaW5nKGdldERvbWFpblN0cmluZ0Zyb21Eb21haW5JRChtX2dldEFs
bFN1YlN0YXRpc3RpY3NTdGF0ZW1lbnQtPmdldENvbHVtbkludCgwKSkpOwogICAgICAgICB0aGly
ZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbnMuYXBwZW5kSWZOb3RDb250YWlu
cyhXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhRm9yU3BlY2lm
aWNGaXJzdFBhcnR5IHsgZmlyc3RQYXJ0eURvbWFpbiwgaGFzU3RvcmFnZUFjY2VzcyhmaXJzdFBh
cnR5RG9tYWluLCB0aGlyZFBhcnR5RG9tYWluKSwgZ2V0TW9zdFJlY2VudGx5VXBkYXRlZFRpbWVz
dGFtcCh0aGlyZFBhcnR5RG9tYWluLCBmaXJzdFBhcnR5RG9tYWluKSB9KTsKICAgICB9Ci0gICAg
cmVzZXRTdGF0ZW1lbnQobV9nZXRBbGxTdWJTdGF0aXN0aWNzU3RhdGVtZW50KTsKICAgICByZXR1
cm4gdGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5zOwogfQogCkBAIC0x
MTIwLDMxICsxMDU2LDMxIEBAIHN0YXRpYyB1bnNpZ25lZCBnZXRNZWRpYW5PZlByZXZhbGVudFJl
c291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24oU1FMaXRlRGF0YWJhc2UmCiAKIHVuc2lnbmVkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXROdW1iZXJPZlByZXZhbGVudFJl
c291cmNlcygpIGNvbnN0CiB7Ci0gICAgYXV0byBzdGVwVmFsdWUgPSBtX2NvdW50UHJldmFsZW50
UmVzb3VyY2VzU3RhdGVtZW50LnN0ZXAoKTsKKyAgICBhdXRvIHNjb3BlZFN0YXRlbWVudCA9IGdl
dFNjb3BlZFN0YXRlbWVudChtX2NvdW50UHJldmFsZW50UmVzb3VyY2VzU3RhdGVtZW50LCBjb3Vu
dFByZXZhbGVudFJlc291cmNlc1F1ZXJ5LCAiZ2V0TnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXMi
X3MpOworICAgIGlmICghc2NvcGVkU3RhdGVtZW50KQorICAgICAgICByZXR1cm4gMDsKKyAgICAK
KyAgICBhdXRvIHN0ZXBWYWx1ZSA9IHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpOwogICAgIGlmIChz
dGVwVmFsdWUgIT0gU1FMSVRFX1JPVyAmJiBzdGVwVmFsdWUgIT0gU1FMSVRFX0RPTkUpIHsKICAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpnZXROdW1iZXJPZlByZXZhbGVudFJlc291cmNlcyBmYWlsZWQgdG8gc3Rl
cCwgZXJyb3IgbWVzc2FnZTogJSIgUFVCTElDX0xPR19TVFJJTkcsIG1fZGF0YWJhc2UubGFzdEVy
cm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQogICAgIGlmIChzdGVwVmFsdWUgPT0gU1FMSVRFX1JPVykgewotICAgICAgICB1
bnNpZ25lZCBwcmV2YWxlbnRSZXNvdXJjZUNvdW50ID0gbV9jb3VudFByZXZhbGVudFJlc291cmNl
c1N0YXRlbWVudC5nZXRDb2x1bW5JbnQoMCk7Ci0gICAgICAgIGlmIChwcmV2YWxlbnRSZXNvdXJj
ZUNvdW50ID49IG1pbmltdW1QcmV2YWxlbnRSZXNvdXJjZXNGb3JUZWxlbWV0cnkpIHsKLSAgICAg
ICAgICAgIHJlc2V0U3RhdGVtZW50KG1fY291bnRQcmV2YWxlbnRSZXNvdXJjZXNTdGF0ZW1lbnQp
OworICAgICAgICB1bnNpZ25lZCBwcmV2YWxlbnRSZXNvdXJjZUNvdW50ID0gc2NvcGVkU3RhdGVt
ZW50LT5nZXRDb2x1bW5JbnQoMCk7CisgICAgICAgIGlmIChwcmV2YWxlbnRSZXNvdXJjZUNvdW50
ID49IG1pbmltdW1QcmV2YWxlbnRSZXNvdXJjZXNGb3JUZWxlbWV0cnkpCiAgICAgICAgICAgICBy
ZXR1cm4gcHJldmFsZW50UmVzb3VyY2VDb3VudDsKLSAgICAgICAgfQogICAgIH0KLSAgICByZXNl
dFN0YXRlbWVudChtX2NvdW50UHJldmFsZW50UmVzb3VyY2VzU3RhdGVtZW50KTsKICAgICByZXR1
cm4gMDsKIH0KIAogdW5zaWduZWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmdldE51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVJKCkgY29uc3QKIHsKLSAgICBpZiAo
bV9jb3VudFByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQuc3Rl
cCgpID09IFNRTElURV9ST1cpIHsKLSAgICAgICAgaW50IGNvdW50ID0gbV9jb3VudFByZXZhbGVu
dFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDApOwot
ICAgICAgICByZXNldFN0YXRlbWVudChtX2NvdW50UHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJ
bnRlcmFjdGlvblN0YXRlbWVudCk7CisgICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSBnZXRTY29w
ZWRTdGF0ZW1lbnQobV9jb3VudFByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb25T
dGF0ZW1lbnQsIGNvdW50UHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvblF1ZXJ5
LCAiZ2V0TnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVUkiX3MpOworICAgIGlmIChzY29w
ZWRTdGF0ZW1lbnQgJiYgc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykgewor
ICAgICAgICBpbnQgY291bnQgPSBzY29wZWRTdGF0ZW1lbnQtPmdldENvbHVtbkludCgwKTsKICAg
ICAgICAgcmV0dXJuIGNvdW50OwogICAgIH0KLSAgICByZXNldFN0YXRlbWVudChtX2NvdW50UHJl
dmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudCk7CiAgICAgcmV0dXJu
IDA7CiB9CiAKQEAgLTEyNTgsMTIgKzExOTQsMTEgQEAgc3RhdGljIHVuc2lnbmVkIG1ha2VTdGF0
aXN0aWNRdWVyeShTUUxpdGVEYXRhYmFzZSYgZGF0YWJhc2UsIFByZXZhbGVudFJlc291cmNlRGEK
IAogdW5zaWduZWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldE51bWJl
ck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVJKCkgY29uc3QKIHsKLSAgICBpZiAobV9jb3Vu
dFByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQuc3RlcCgp
ID09IFNRTElURV9ST1cpIHsKLSAgICAgICAgaW50IGNvdW50ID0gbV9jb3VudFByZXZhbGVudFJl
c291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDApOwot
ICAgICAgICByZXNldFN0YXRlbWVudChtX2NvdW50UHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVz
ZXJJbnRlcmFjdGlvblN0YXRlbWVudCk7CisgICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSBnZXRT
Y29wZWRTdGF0ZW1lbnQobV9jb3VudFByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJh
Y3Rpb25TdGF0ZW1lbnQsIGNvdW50UHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFj
dGlvblF1ZXJ5LCAiZ2V0TnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VUkiX3MpOwor
ICAgIGlmIChzY29wZWRTdGF0ZW1lbnQgJiYgc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgPT0gU1FM
SVRFX1JPVykgeworICAgICAgICBpbnQgY291bnQgPSBtX2NvdW50UHJldmFsZW50UmVzb3VyY2Vz
V2l0aG91dFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudC0+Z2V0Q29sdW1uSW50KDApOwogICAgICAg
ICByZXR1cm4gY291bnQ7CiAgICAgfQotICAgIHJlc2V0U3RhdGVtZW50KG1fY291bnRQcmV2YWxl
bnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uU3RhdGVtZW50KTsKICAgICByZXR1cm4g
MDsKIH0KIApAQCAtMTUxOSw3ICsxNDU0LDggQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6c3luY1N0b3JhZ2VJbW1lZGlhdGVseSgpCiAKIGJvb2wgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgVG9wRnJh
bWVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBjb25zdCBTdWJGcmFtZURvbWFpbiYgc3ViRnJhbWVE
b21haW4pIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHJlbGF0aW9uc2hpcEV4aXN0cyhtX3N0b3JhZ2VB
Y2Nlc3NFeGlzdHNTdGF0ZW1lbnQsIGRvbWFpbklEKHN1YkZyYW1lRG9tYWluKSwgdG9wRnJhbWVE
b21haW4pOworICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50ID0gZ2V0U2NvcGVkU3RhdGVtZW50KG1f
c3RvcmFnZUFjY2Vzc0V4aXN0c1N0YXRlbWVudCwgc3RvcmFnZUFjY2Vzc0V4aXN0c1F1ZXJ5LCAi
aGFzU3RvcmFnZUFjY2VzcyJfcyk7CisgICAgcmV0dXJuIHJlbGF0aW9uc2hpcEV4aXN0cyhzY29w
ZWRTdGF0ZW1lbnQsIGRvbWFpbklEKHN1YkZyYW1lRG9tYWluKSwgdG9wRnJhbWVEb21haW4pOwog
fQogCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpoYXNTdG9yYWdl
QWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgVG9wRnJh
bWVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1l
SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTE4NDEsMTggKzE3NzcsMTcgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0
c1RvU2luY2VTYW0KIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNl
dFVzZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBib29sIGhh
ZFVzZXJJbnRlcmFjdGlvbiwgV2FsbFRpbWUgbW9zdFJlY2VudEludGVyYWN0aW9uKQogewogICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgaWYgKG1fbW9zdFJlY2VudFVzZXJJ
bnRlcmFjdGlvblN0YXRlbWVudC5iaW5kSW50KDEsIGhhZFVzZXJJbnRlcmFjdGlvbikgIT0gU1FM
SVRFX09LCi0gICAgICAgIHx8IG1fbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudC5i
aW5kRG91YmxlKDIsIG1vc3RSZWNlbnRJbnRlcmFjdGlvbi5zZWNvbmRzU2luY2VFcG9jaCgpLnZh
bHVlKCkpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX21vc3RSZWNlbnRVc2VySW50ZXJhY3Rp
b25TdGF0ZW1lbnQuYmluZFRleHQoMywgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKLSAg
ICAgICAgfHwgbV9tb3N0UmVjZW50VXNlckludGVyYWN0aW9uU3RhdGVtZW50LnN0ZXAoKSAhPSBT
UUxJVEVfRE9ORSkgeworICAgIAorICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50ID0gZ2V0U2NvcGVk
U3RhdGVtZW50KG1fbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudCwgbW9zdFJlY2Vu
dFVzZXJJbnRlcmFjdGlvblF1ZXJ5LCAic2V0VXNlckludGVyYWN0aW9uIl9zKTsKKyAgICBpZiAo
IXNjb3BlZFN0YXRlbWVudAorICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQoMSwg
aGFkVXNlckludGVyYWN0aW9uKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc2NvcGVkU3RhdGVt
ZW50LT5iaW5kRG91YmxlKDIsIG1vc3RSZWNlbnRJbnRlcmFjdGlvbi5zZWNvbmRzU2luY2VFcG9j
aCgpLnZhbHVlKCkpICE9IFNRTElURV9PSworICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJp
bmRUZXh0KDMsIGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHNjb3Bl
ZFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7CiAgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpzZXRVc2VySW50ZXJhY3Rpb24sIGVycm9yIG1lc3NhZ2U6ICV7cHJp
dmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotCi0gICAgaW50IHJlc2V0
UmVzdWx0ID0gbV9tb3N0UmVjZW50VXNlckludGVyYWN0aW9uU3RhdGVtZW50LnJlc2V0KCk7Ci0g
ICAgQVNTRVJUX1VOVVNFRChyZXNldFJlc3VsdCwgcmVzZXRSZXN1bHQgPT0gU1FMSVRFX09LKTsK
IH0KIAogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bG9nVXNlcklu
dGVyYWN0aW9uKGNvbnN0IFRvcEZyYW1lRG9tYWluJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTE5MDEsMjQgKzE4MzYsMjAgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJVc2VySW50ZXJhY3Rp
b24oY29uc3QgUmVnaXN0cmFibGUKIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6Omhhc0hhZFVzZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9t
YWluLCBPcGVyYXRpbmdEYXRlc1dpbmRvdyBvcGVyYXRpbmdEYXRlc1dpbmRvdykKIHsKICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLQotICAgIGlmIChtX2hhZFVzZXJJbnRlcmFjdGlv
blN0YXRlbWVudC5iaW5kVGV4dCgxLCBkb21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSwotICAg
ICAgICB8fCBtX2hhZFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX1JP
VykgeworICAgIAorICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50ID0gZ2V0U2NvcGVkU3RhdGVtZW50
KG1faGFkVXNlckludGVyYWN0aW9uU3RhdGVtZW50LCBoYWRVc2VySW50ZXJhY3Rpb25RdWVyeSwg
Imhhc0hhZFVzZXJJbnRlcmFjdGlvbiJfcyk7CisgICAgaWYgKCFzY29wZWRTdGF0ZW1lbnQKKyAg
ICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kVGV4dCgxLCBkb21haW4uc3RyaW5nKCkpICE9
IFNRTElURV9PSworICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVf
Uk9XKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQs
ICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptX2hhZFVzZXJJbnRl
cmFjdGlvblN0YXRlbWVudCBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhp
cywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0KLSAgICAgICAgaW50IHJlc2V0UmVzdWx0
ID0gbV9oYWRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQucmVzZXQoKTsKLSAgICAgICAgQVNTRVJU
X1VOVVNFRChyZXNldFJlc3VsdCwgcmVzZXRSZXN1bHQgPT0gU1FMSVRFX09LKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGJvb2wgaGFkVXNlckludGVyYWN0aW9uID0gISFt
X2hhZFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudC5nZXRDb2x1bW5JbnQoMCk7Ci0gICAgaWYgKCFo
YWRVc2VySW50ZXJhY3Rpb24pIHsKLSAgICAgICAgaW50IHJlc2V0UmVzdWx0ID0gbV9oYWRVc2Vy
SW50ZXJhY3Rpb25TdGF0ZW1lbnQucmVzZXQoKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChyZXNl
dFJlc3VsdCwgcmVzZXRSZXN1bHQgPT0gU1FMSVRFX09LKTsKKyAgICBib29sIGhhZFVzZXJJbnRl
cmFjdGlvbiA9ICEhc2NvcGVkU3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMCk7CisgICAgaWYgKCFo
YWRVc2VySW50ZXJhY3Rpb24pCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CiAgICAgCi0g
ICAgV2FsbFRpbWUgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUgPSBXYWxsVGltZTo6ZnJv
bVJhd1NlY29uZHMobV9oYWRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQuZ2V0Q29sdW1uRG91Ymxl
KDEpKTsKKyAgICBXYWxsVGltZSBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSA9IFdhbGxU
aW1lOjpmcm9tUmF3U2Vjb25kcyhzY29wZWRTdGF0ZW1lbnQtPmdldENvbHVtbkRvdWJsZSgxKSk7
CiAKICAgICBpZiAoaGFzU3RhdGlzdGljc0V4cGlyZWQobW9zdFJlY2VudFVzZXJJbnRlcmFjdGlv
blRpbWUsIG9wZXJhdGluZ0RhdGVzV2luZG93KSkgewogICAgICAgICAvLyBEcm9wIHByaXZhY3kg
c2Vuc2l0aXZlIGRhdGEgYmVjYXVzZSB3ZSBubyBsb25nZXIgbmVlZCBpdC4KQEAgLTE5MjcsMTAg
KzE4NTgsNiBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpoYXNI
YWRVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFibAogICAgICAgICBjbGVhclVzZXJJbnRl
cmFjdGlvbihkb21haW4sIFtdIHsgfSk7CiAgICAgICAgIGhhZFVzZXJJbnRlcmFjdGlvbiA9IGZh
bHNlOwogICAgIH0KLSAgICAKLSAgICBpbnQgcmVzZXRSZXN1bHQgPSBtX2hhZFVzZXJJbnRlcmFj
dGlvblN0YXRlbWVudC5yZXNldCgpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzZXRSZXN1bHQsIHJl
c2V0UmVzdWx0ID09IFNRTElURV9PSyk7Ci0KICAgICByZXR1cm4gaGFkVXNlckludGVyYWN0aW9u
OwogfQogCkBAIC0xOTQwLDI4ICsxODY3LDI2IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OnNldFByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlCiAg
ICAgaWYgKHNob3VsZFNraXAoZG9tYWluKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1f
dXBkYXRlUHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQuYmluZEludCgxLCAxKSAhPSBTUUxJVEVf
T0sKLSAgICAgICAgfHwgbV91cGRhdGVQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudC5iaW5kVGV4
dCgyLCBkb21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX3VwZGF0ZVBy
ZXZhbGVudFJlc291cmNlU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgeworICAgIGF1
dG8gc2NvcGVkVXBkYXRlUHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQgPSBnZXRTY29wZWRTdGF0
ZW1lbnQobV91cGRhdGVQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudCwgdXBkYXRlUHJldmFsZW50
UmVzb3VyY2VRdWVyeSwgInNldFByZXZhbGVudFJlc291cmNlIl9zKTsKKyAgICBpZiAoIXNjb3Bl
ZFVwZGF0ZVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50CisgICAgICAgIHx8IHNjb3BlZFVwZGF0
ZVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50LT5iaW5kSW50KDEsIDEpICE9IFNRTElURV9PSwor
ICAgICAgICB8fCBzY29wZWRVcGRhdGVQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudC0+YmluZFRl
eHQoMiwgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc2NvcGVkVXBk
YXRlUHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewog
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bV91cGRhdGVQcmV2YWxlbnRSZXNv
dXJjZVN0YXRlbWVudCBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywg
bV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAotICAgIGludCByZXNldFJlc3VsdCA9IG1f
dXBkYXRlUHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQucmVzZXQoKTsKLSAgICBBU1NFUlRfVU5V
U0VEKHJlc2V0UmVzdWx0LCByZXNldFJlc3VsdCA9PSBTUUxJVEVfT0spOwogCisgICAgYXV0byBz
Y29wZWRVcGRhdGVWZXJ5UHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQgPSBnZXRTY29wZWRTdGF0
ZW1lbnQobV91cGRhdGVWZXJ5UHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQsIHVwZGF0ZVZlcnlQ
cmV2YWxlbnRSZXNvdXJjZVF1ZXJ5LCAic2V0UHJldmFsZW50UmVzb3VyY2UgdXBkYXRlVmVyeVBy
ZXZhbGVudFJlc291cmNlIl9zKTsKICAgICBpZiAobmV3UHJldmFsZW5jZSA9PSBSZXNvdXJjZUxv
YWRQcmV2YWxlbmNlOjpWZXJ5SGlnaCkgewotICAgICAgICBpZiAobV91cGRhdGVWZXJ5UHJldmFs
ZW50UmVzb3VyY2VTdGF0ZW1lbnQuYmluZEludCgxLCAxKSAhPSBTUUxJVEVfT0sKLSAgICAgICAg
ICAgIHx8IG1fdXBkYXRlVmVyeVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50LmJpbmRUZXh0KDIs
IGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBtX3VwZGF0ZVZl
cnlQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKKyAg
ICAgICAgaWYgKCFzY29wZWRVcGRhdGVWZXJ5UHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQKKyAg
ICAgICAgICAgIHx8IHNjb3BlZFVwZGF0ZVZlcnlQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudC0+
YmluZEludCgxLCAxKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHNjb3BlZFVwZGF0ZVZl
cnlQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudC0+YmluZFRleHQoMiwgZG9tYWluLnN0cmluZygp
KSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHNjb3BlZFVwZGF0ZVZlcnlQcmV2YWxlbnRS
ZXNvdXJjZVN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7CiAgICAgICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bV91cGRhdGVWZXJ5UHJldmFsZW50UmVzb3VyY2VT
dGF0ZW1lbnQgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0
YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLQotICAgICAgICBpbnQgcmVzZXRSZXN1
bHQgPSBtX3VwZGF0ZVZlcnlQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudC5yZXNldCgpOwotICAg
ICAgICBBU1NFUlRfVU5VU0VEKHJlc2V0UmVzdWx0LCByZXNldFJlc3VsdCA9PSBTUUxJVEVfT0sp
OwogICAgIH0KIAogICAgIFN0ZFNldDx1bnNpZ25lZD4gbm9uUHJldmFsZW50UmVkaXJlY3Rpb25T
b3VyY2VzOwpAQCAtMTk5Miw5ICsxOTE3LDEzIEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OmR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKENvbXBsZXRpb25ICiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBhdXRvIHNjb3BlZFN0YXRlbWVudCA9IGdldFNj
b3BlZFN0YXRlbWVudChtX2dldEFsbERvbWFpbnNTdGF0ZW1lbnQsIGdldEFsbERvbWFpbnNRdWVy
eSwgImR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIl9zKTsKKyAgICBpZiAoIXNjb3BlZFN0YXRl
bWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIAogICAgIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnM7
Ci0gICAgd2hpbGUgKG1fZ2V0QWxsRG9tYWluc1N0YXRlbWVudC5zdGVwKCkgPT0gU1FMSVRFX1JP
VykKLSAgICAgICAgZG9tYWlucy5hcHBlbmQobV9nZXRBbGxEb21haW5zU3RhdGVtZW50LmdldENv
bHVtblRleHQoMCkpOworICAgIHdoaWxlIChzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJ
VEVfUk9XKQorICAgICAgICBkb21haW5zLmFwcGVuZChzY29wZWRTdGF0ZW1lbnQtPmdldENvbHVt
blRleHQoMCkpOwogICAgIHN0ZDo6c29ydChkb21haW5zLmJlZ2luKCksIGRvbWFpbnMuZW5kKCks
IFdURjo6Y29kZVBvaW50Q29tcGFyZUxlc3NUaGFuKTsKIAogICAgIFN0cmluZ0J1aWxkZXIgcmVz
dWx0OwpAQCAtMjAxMCwyOCArMTkzOSwyMCBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhDb21wbGV0aW9uSAogICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXG4nKTsKICAgICAgICAgfQogICAgIH0KLSAgICByZXNl
dFN0YXRlbWVudChtX2dldEFsbERvbWFpbnNTdGF0ZW1lbnQpOwogICAgIGNvbXBsZXRpb25IYW5k
bGVyKHJlc3VsdC50b1N0cmluZygpKTsKIH0KIAotYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6cHJlZGljYXRlVmFsdWVGb3JEb21haW4oV2ViQ29yZTo6U1FMaXRlU3Rh
dGVtZW50JiBwcmVkaWNhdGVTdGF0ZW1lbnQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21h
aW4pIGNvbnN0Citib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcmVk
aWNhdGVWYWx1ZUZvckRvbWFpbihTUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZSYgcHJlZGlj
YXRlU3RhdGVtZW50LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKSBjb25zdAogewog
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIAotICAgIGlmIChwcmVkaWNhdGVT
dGF0ZW1lbnQuYmluZFRleHQoMSwgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKLSAgICAg
ICAgfHwgcHJlZGljYXRlU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7Ci0KLSAgICAg
ICAgaW50IHJlc2V0UmVzdWx0ID0gcHJlZGljYXRlU3RhdGVtZW50LnJlc2V0KCk7Ci0gICAgICAg
IEFTU0VSVF9VTlVTRUQocmVzZXRSZXN1bHQsIHJlc2V0UmVzdWx0ID09IFNRTElURV9PSyk7CiAK
KyAgICBpZiAoIXByZWRpY2F0ZVN0YXRlbWVudAorICAgICAgICB8fCBwcmVkaWNhdGVTdGF0ZW1l
bnQtPmJpbmRUZXh0KDEsIGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8
IHByZWRpY2F0ZVN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ST1cpIHsKICAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnByZWRpY2F0ZVZhbHVlRm9yRG9tYWluIGZhaWxlZCB0
byBiaW5kLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFz
dEVycm9yTXNnKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotCi0gICAgYm9vbCBy
ZXN1bHQgPSAhIXByZWRpY2F0ZVN0YXRlbWVudC5nZXRDb2x1bW5JbnQoMCk7Ci0gICAgaW50IHJl
c2V0UmVzdWx0ID0gcHJlZGljYXRlU3RhdGVtZW50LnJlc2V0KCk7Ci0gICAgQVNTRVJUX1VOVVNF
RChyZXNldFJlc3VsdCwgcmVzZXRSZXN1bHQgPT0gU1FMSVRFX09LKTsKLSAgICByZXR1cm4gcmVz
dWx0OworICAgIHJldHVybiAhIXByZWRpY2F0ZVN0YXRlbWVudC0+Z2V0Q29sdW1uSW50KDApOwog
fQogCiBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppc1ByZXZhbGVu
dFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pIGNvbnN0CkBAIC0yMDQx
LDcgKzE5NjIsOCBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpp
c1ByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRAogICAgIGlmIChzaG91bGRTa2lw
KGRvbWFpbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBwcmVkaWNhdGVW
YWx1ZUZvckRvbWFpbihtX2lzUHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQsIGRvbWFpbik7Cisg
ICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSBnZXRTY29wZWRTdGF0ZW1lbnQobV9pc1ByZXZhbGVu
dFJlc291cmNlU3RhdGVtZW50LCBpc1ByZXZhbGVudFJlc291cmNlUXVlcnksICJpc1ByZXZhbGVu
dFJlc291cmNlIl9zKTsKKyAgICByZXR1cm4gcHJlZGljYXRlVmFsdWVGb3JEb21haW4oc2NvcGVk
U3RhdGVtZW50LCBkb21haW4pOwogfQogCiBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjppc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgZG9tYWluKSBjb25zdApAQCAtMjA1MSwyOCArMTk3MywzMiBAQCBib29sIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBS
ZWdpc3RyYQogICAgIGlmIChzaG91bGRTa2lwKGRvbWFpbikpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIHJldHVybiBwcmVkaWNhdGVWYWx1ZUZvckRvbWFpbihtX2lzVmVyeVByZXZhbGVu
dFJlc291cmNlU3RhdGVtZW50LCBkb21haW4pOworICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50ID0g
Z2V0U2NvcGVkU3RhdGVtZW50KG1faXNWZXJ5UHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQsIGlz
VmVyeVByZXZhbGVudFJlc291cmNlUXVlcnksICJpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSJfcyk7
CisgICAgcmV0dXJuIHByZWRpY2F0ZVZhbHVlRm9yRG9tYWluKHNjb3BlZFN0YXRlbWVudCwgZG9t
YWluKTsKIH0KIAogYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aXNS
ZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKGNvbnN0IFN1YlJlc291cmNlRG9tYWluJiBzdWJy
ZXNvdXJjZURvbWFpbiwgY29uc3QgVG9wRnJhbWVEb21haW4mIHRvcEZyYW1lRG9tYWluKSBjb25z
dAogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgcmV0dXJuIHJlbGF0
aW9uc2hpcEV4aXN0cyhtX3N1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbkV4aXN0cywgZG9t
YWluSUQoc3VicmVzb3VyY2VEb21haW4pLCB0b3BGcmFtZURvbWFpbik7CisgICAgYXV0byBzY29w
ZWRTdGF0ZW1lbnQgPSBnZXRTY29wZWRTdGF0ZW1lbnQobV9zdWJyZXNvdXJjZVVuZGVyVG9wRnJh
bWVEb21haW5FeGlzdHNTdGF0ZW1lbnQsIHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbkV4
aXN0c1F1ZXJ5LCAiaXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyIl9zKTsKKyAgICByZXR1
cm4gcmVsYXRpb25zaGlwRXhpc3RzKHNjb3BlZFN0YXRlbWVudCwgZG9tYWluSUQoc3VicmVzb3Vy
Y2VEb21haW4pLCB0b3BGcmFtZURvbWFpbik7CiB9CiAKIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OmlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcihjb25zdCBTdWJG
cmFtZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFRvcEZyYW1lRG9tYWluJiB0b3BGcmFt
ZURvbWFpbikgY29uc3QKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLQotICAg
IHJldHVybiByZWxhdGlvbnNoaXBFeGlzdHMobV9zdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5F
eGlzdHMsIGRvbWFpbklEKHN1YkZyYW1lRG9tYWluKSwgdG9wRnJhbWVEb21haW4pOworICAgIAor
ICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50ID0gZ2V0U2NvcGVkU3RhdGVtZW50KG1fc3ViZnJhbWVV
bmRlclRvcEZyYW1lRG9tYWluRXhpc3RzU3RhdGVtZW50LCBzdWJmcmFtZVVuZGVyVG9wRnJhbWVE
b21haW5FeGlzdHNRdWVyeSwgImlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlciJfcyk7CisgICAg
cmV0dXJuIHJlbGF0aW9uc2hpcEV4aXN0cyhzY29wZWRTdGF0ZW1lbnQsIGRvbWFpbklEKHN1YkZy
YW1lRG9tYWluKSwgdG9wRnJhbWVEb21haW4pOwogfQogCiBib29sIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjppc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oY29uc3QgUmVk
aXJlY3RlZEZyb21Eb21haW4mIHJlZGlyZWN0ZWRGcm9tRG9tYWluLCBjb25zdCBSZWRpcmVjdGVk
VG9Eb21haW4mIHJlZGlyZWN0ZWRUb0RvbWFpbikgY29uc3QKIHsKICAgICBBU1NFUlQoIVJ1bkxv
b3A6OmlzTWFpbigpKTsKIAotICAgIHJldHVybiByZWxhdGlvbnNoaXBFeGlzdHMobV9zdWJyZXNv
dXJjZVVuaXF1ZVJlZGlyZWN0c1RvRXhpc3RzLCBkb21haW5JRChyZWRpcmVjdGVkRnJvbURvbWFp
biksIHJlZGlyZWN0ZWRUb0RvbWFpbik7CisgICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSBnZXRT
Y29wZWRTdGF0ZW1lbnQobV9zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvRXhpc3RzU3RhdGVt
ZW50LCBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvRXhpc3RzUXVlcnksICJpc1JlZ2lzdGVy
ZWRBc1JlZGlyZWN0aW5nVG8iX3MpOworICAgIHJldHVybiByZWxhdGlvbnNoaXBFeGlzdHMoc2Nv
cGVkU3RhdGVtZW50LCBkb21haW5JRChyZWRpcmVjdGVkRnJvbURvbWFpbiksIHJlZGlyZWN0ZWRU
b0RvbWFpbik7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmNsZWFyUHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikK
QEAgLTIwODQsMTUgKzIwMTAsMTYgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWIKICAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyUHJldmFsZW50UmVzb3VyY2Ugd2FzIG5v
dCBjb21wbGV0ZWQgZHVlIHRvIGZhaWxlZCBpbnNlcnQgYXR0ZW1wdCIsIHRoaXMpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIGlmIChtX2NsZWFyUHJldmFsZW50UmVzb3VyY2VTdGF0ZW1l
bnQuYmluZFRleHQoMSwgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwg
bV9jbGVhclByZXZhbGVudFJlc291cmNlU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkg
eworICAgIAorICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50ID0gZ2V0U2NvcGVkU3RhdGVtZW50KG1f
Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudCwgY2xlYXJQcmV2YWxlbnRSZXNvdXJjZVF1
ZXJ5LCAiY2xlYXJQcmV2YWxlbnRSZXNvdXJjZSJfcyk7CisgICAgCisgICAgaWYgKCFzY29wZWRT
dGF0ZW1lbnQKKyAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kVGV4dCgxLCBkb21haW4u
c3RyaW5nKCkpICE9IFNRTElURV9PSworICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPnN0ZXAo
KSAhPSBTUUxJVEVfRE9ORSkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VE
KG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZSwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlz
LCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCi0gICAgaW50IHJlc2V0UmVzdWx0ID0g
bV9jbGVhclByZXZhbGVudFJlc291cmNlU3RhdGVtZW50LnJlc2V0KCk7Ci0gICAgQVNTRVJUX1VO
VVNFRChyZXNldFJlc3VsdCwgcmVzZXRSZXN1bHQgPT0gU1FMSVRFX09LKTsKIH0KIAogdm9pZCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0R3JhbmRmYXRoZXJlZChjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBib29sIHZhbHVlKQpAQCAtMjEwNCwxNiArMjAz
MSwxNSBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRHcmFu
ZGZhdGhlcmVkKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYQogICAgICAgICBSRUxFQVNFX0xPR19FUlJP
Ul9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6c2V0R3JhbmRmYXRoZXJlZCB3YXMgbm90IGNvbXBsZXRlZCBkdWUgdG8gZmFp
bGVkIGluc2VydCBhdHRlbXB0IiwgdGhpcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
aWYgKG1fdXBkYXRlR3JhbmRmYXRoZXJlZFN0YXRlbWVudC5iaW5kSW50KDEsIHZhbHVlKSAhPSBT
UUxJVEVfT0sKLSAgICAgICAgfHwgbV91cGRhdGVHcmFuZGZhdGhlcmVkU3RhdGVtZW50LmJpbmRU
ZXh0KDIsIGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fdXBkYXRl
R3JhbmRmYXRoZXJlZFN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKKyAgICAKKyAg
ICBhdXRvIHNjb3BlZFN0YXRlbWVudCA9IGdldFNjb3BlZFN0YXRlbWVudChtX3VwZGF0ZUdyYW5k
ZmF0aGVyZWRTdGF0ZW1lbnQsIHVwZGF0ZUdyYW5kZmF0aGVyZWRRdWVyeSwgInNldEdyYW5kZmF0
aGVyZWQiX3MpOworICAgIGlmICghc2NvcGVkU3RhdGVtZW50CisgICAgICAgIHx8IHNjb3BlZFN0
YXRlbWVudC0+YmluZEludCgxLCB2YWx1ZSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHNjb3Bl
ZFN0YXRlbWVudC0+YmluZFRleHQoMiwgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKKyAg
ICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldEdyYW5kZmF0aGVyZWQgZmFpbGVkIHRv
IGJpbmQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0
RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIAotICAgIGludCByZXNldFJlc3VsdCA9IG1fdXBkYXRlR3JhbmRmYXRo
ZXJlZFN0YXRlbWVudC5yZXNldCgpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzZXRSZXN1bHQsIHJl
c2V0UmVzdWx0ID09IFNRTElURV9PSyk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OnNldElzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwo
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgYm9vbCB2YWx1ZSkKQEAgLTIxMjUsMTYg
KzIwNTEsMTcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0
SXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3YKICAgICAgICAgUkVMRUFTRV9MT0df
RVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OnNldElzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwg
d2FzIG5vdCBjb21wbGV0ZWQgZHVlIHRvIGZhaWxlZCBpbnNlcnQgYXR0ZW1wdCIsIHRoaXMpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmIChtX3VwZGF0ZUlzU2NoZWR1bGVkRm9yQWxs
QnV0Q29va2llRGF0YVJlbW92YWxTdGF0ZW1lbnQuYmluZEludCgxLCB2YWx1ZSkgIT0gU1FMSVRF
X09LCi0gICAgICAgIHx8IG1fdXBkYXRlSXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVt
b3ZhbFN0YXRlbWVudC5iaW5kVGV4dCgyLCBkb21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSwot
ICAgICAgICB8fCBtX3VwZGF0ZUlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWxT
dGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ET05FKSB7CisgICAgCisgICAgYXV0byBzY29wZWRT
dGF0ZW1lbnQgPSBnZXRTY29wZWRTdGF0ZW1lbnQobV91cGRhdGVJc1NjaGVkdWxlZEZvckFsbEJ1
dENvb2tpZURhdGFSZW1vdmFsU3RhdGVtZW50LCB1cGRhdGVJc1NjaGVkdWxlZEZvckFsbEJ1dENv
b2tpZURhdGFSZW1vdmFsUXVlcnksICJzZXRJc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFS
ZW1vdmFsIl9zKTsKKyAgICBpZiAoIXNjb3BlZFN0YXRlbWVudAorICAgICAgICB8fCBzY29wZWRT
dGF0ZW1lbnQtPmJpbmRJbnQoMSwgdmFsdWUpICE9IFNRTElURV9PSworICAgICAgICB8fCBzY29w
ZWRTdGF0ZW1lbnQtPmJpbmRUZXh0KDIsIGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCisg
ICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7CiAgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRJc1NjaGVkdWxlZEZvckFsbEJ1dENv
b2tpZURhdGFSZW1vdmFsIGZhaWxlZCB0byBiaW5kLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9
cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwogICAgIH0KLQotICAgIHJlc2V0U3RhdGVtZW50
KG1fdXBkYXRlSXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbFN0YXRlbWVudCk7
CiB9CisKIFNlY29uZHMgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldE1v
c3RSZWNlbnRseVVwZGF0ZWRUaW1lc3RhbXAoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkRv
bWFpbiwgY29uc3QgVG9wRnJhbWVEb21haW4mIHRvcEZyYW1lRG9tYWluKSBjb25zdAogewogICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtMjE0NCwzMyArMjA3MSwzMyBAQCBTZWNv
bmRzIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXRNb3N0UmVjZW50bHlV
cGRhdGVkVGltZXN0YW1wKGNvbgogCiAgICAgaWYgKCFzdWJGcmFtZURvbWFpbklEIHx8ICF0b3BG
cmFtZURvbWFpbklEKQogICAgICAgICByZXR1cm4gU2Vjb25kcyB7IFJlc291cmNlTG9hZFN0YXRp
c3RpY3M6Ok5vRXhpc3RpbmdUaW1lc3RhbXAgfTsKLQotICAgIGlmIChtX2dldE1vc3RSZWNlbnRs
eVVwZGF0ZWRUaW1lc3RhbXBTdGF0ZW1lbnQuYmluZEludCgxLCAqc3ViRnJhbWVEb21haW5JRCkg
IT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fZ2V0TW9zdFJlY2VudGx5VXBkYXRlZFRpbWVzdGFt
cFN0YXRlbWVudC5iaW5kSW50KDIsICp0b3BGcmFtZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKLSAg
ICAgICAgfHwgbV9nZXRNb3N0UmVjZW50bHlVcGRhdGVkVGltZXN0YW1wU3RhdGVtZW50LmJpbmRJ
bnQoMywgKnN1YkZyYW1lRG9tYWluSUQpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX2dldE1v
c3RSZWNlbnRseVVwZGF0ZWRUaW1lc3RhbXBTdGF0ZW1lbnQuYmluZEludCg0LCAqdG9wRnJhbWVE
b21haW5JRCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fZ2V0TW9zdFJlY2VudGx5VXBkYXRl
ZFRpbWVzdGFtcFN0YXRlbWVudC5iaW5kSW50KDUsICpzdWJGcmFtZURvbWFpbklEKSAhPSBTUUxJ
VEVfT0sKLSAgICAgICAgfHwgbV9nZXRNb3N0UmVjZW50bHlVcGRhdGVkVGltZXN0YW1wU3RhdGVt
ZW50LmJpbmRJbnQoNiwgKnRvcEZyYW1lRG9tYWluSUQpICE9IFNRTElURV9PSwotICAgICAgICB8
fCBtX2dldE1vc3RSZWNlbnRseVVwZGF0ZWRUaW1lc3RhbXBTdGF0ZW1lbnQuYmluZEludCg3LCAq
c3ViRnJhbWVEb21haW5JRCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fZ2V0TW9zdFJlY2Vu
dGx5VXBkYXRlZFRpbWVzdGFtcFN0YXRlbWVudC5iaW5kSW50KDgsICp0b3BGcmFtZURvbWFpbklE
KSAhPSBTUUxJVEVfT0spIHsKKyAgICAKKyAgICBhdXRvIHNjb3BlZFN0YXRlbWVudCA9IGdldFNj
b3BlZFN0YXRlbWVudChtX2dldE1vc3RSZWNlbnRseVVwZGF0ZWRUaW1lc3RhbXBTdGF0ZW1lbnQs
IGdldE1vc3RSZWNlbnRseVVwZGF0ZWRUaW1lc3RhbXBRdWVyeSwgImdldE1vc3RSZWNlbnRseVVw
ZGF0ZWRUaW1lc3RhbXAiX3MpOworICAgIGlmICghc2NvcGVkU3RhdGVtZW50CisgICAgICAgIHx8
IHNjb3BlZFN0YXRlbWVudC0+YmluZEludCgxLCAqc3ViRnJhbWVEb21haW5JRCkgIT0gU1FMSVRF
X09LCisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZEludCgyLCAqdG9wRnJhbWVEb21h
aW5JRCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZEludCgz
LCAqc3ViRnJhbWVEb21haW5JRCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHNjb3BlZFN0YXRl
bWVudC0+YmluZEludCg0LCAqdG9wRnJhbWVEb21haW5JRCkgIT0gU1FMSVRFX09LCisgICAgICAg
IHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZEludCg1LCAqc3ViRnJhbWVEb21haW5JRCkgIT0gU1FM
SVRFX09LCisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZEludCg2LCAqdG9wRnJhbWVE
b21haW5JRCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZElu
dCg3LCAqc3ViRnJhbWVEb21haW5JRCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHNjb3BlZFN0
YXRlbWVudC0+YmluZEludCg4LCAqdG9wRnJhbWVEb21haW5JRCkgIT0gU1FMSVRFX09LKSB7CiAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXRNb3N0UmVjZW50bHlVcGRhdGVk
VGltZXN0YW1wIGZhaWxlZCB0byBiaW5kLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRo
aXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgcmV0dXJuIFNlY29uZHMgeyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpO
b0V4aXN0aW5nVGltZXN0YW1wICB9OwogICAgIH0KLSAgICBpZiAobV9nZXRNb3N0UmVjZW50bHlV
cGRhdGVkVGltZXN0YW1wU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7Ci0gICAgICAg
IHJlc2V0U3RhdGVtZW50KG1fZ2V0TW9zdFJlY2VudGx5VXBkYXRlZFRpbWVzdGFtcFN0YXRlbWVu
dCk7CisgICAgaWYgKHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ST1cpCiAgICAg
ICAgIHJldHVybiBTZWNvbmRzIHsgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6Tm9FeGlzdGluZ1Rp
bWVzdGFtcCAgfTsKLSAgICB9Ci0gICAgZG91YmxlIG1vc3RSZWNlbnRseVVwZGF0ZWRUaW1lc3Rh
bXAgPSBtX2dldE1vc3RSZWNlbnRseVVwZGF0ZWRUaW1lc3RhbXBTdGF0ZW1lbnQuZ2V0Q29sdW1u
RG91YmxlKDApOwotICAgIHJlc2V0U3RhdGVtZW50KG1fZ2V0TW9zdFJlY2VudGx5VXBkYXRlZFRp
bWVzdGFtcFN0YXRlbWVudCk7Ci0gICAgcmV0dXJuIFNlY29uZHMgeyBtb3N0UmVjZW50bHlVcGRh
dGVkVGltZXN0YW1wIH07CisKKyAgICByZXR1cm4gU2Vjb25kcyB7IHNjb3BlZFN0YXRlbWVudC0+
Z2V0Q29sdW1uRG91YmxlKDApIH07CiB9CiAKIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OmlzR3JhbmRmYXRoZXJlZChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9t
YWluKSBjb25zdAogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgcmV0
dXJuIHByZWRpY2F0ZVZhbHVlRm9yRG9tYWluKG1faXNHcmFuZGZhdGhlcmVkU3RhdGVtZW50LCBk
b21haW4pOworICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50ID0gZ2V0U2NvcGVkU3RhdGVtZW50KG1f
aXNHcmFuZGZhdGhlcmVkU3RhdGVtZW50LCBpc0dyYW5kZmF0aGVyZWRRdWVyeSwgImlzR3JhbmRm
YXRoZXJlZCJfcyk7CisgICAgcmV0dXJuIHByZWRpY2F0ZVZhbHVlRm9yRG9tYWluKHNjb3BlZFN0
YXRlbWVudCwgZG9tYWluKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6c2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluKGNvbnN0IFN1YkZyYW1lRG9t
YWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgVG9wRnJhbWVEb21haW4mIHRvcEZyYW1lRG9tYWlu
KQpAQCAtMjI1NSwyNCArMjE4MiwyMCBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpzZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShjb25zdCBUbwogc3RkOjpw
YWlyPFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpBZGRlZFJlY29yZCwgT3B0
aW9uYWw8dW5zaWduZWQ+PiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZW5z
dXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIGRvbWFpbikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLQot
ICAgIGlmIChtX2RvbWFpbklERnJvbVN0cmluZ1N0YXRlbWVudC5iaW5kVGV4dCgxLCBkb21haW4u
c3RyaW5nKCkpICE9IFNRTElURV9PSykgeworICAgIAorICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50
ID0gZ2V0U2NvcGVkU3RhdGVtZW50KG1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50LCBkb21h
aW5JREZyb21TdHJpbmdRdWVyeSwgImVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJh
YmxlRG9tYWluIl9zKTsKKyAgICBpZiAoIXNjb3BlZFN0YXRlbWVudAorICAgICAgICB8fCBzY29w
ZWRTdGF0ZW1lbnQtPmJpbmRUZXh0KDEsIGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LKSB7
CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAt
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjplbnN1cmVSZXNvdXJjZVN0YXRp
c3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbiBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0
ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4geyBBZGRlZFJlY29yZDo6Tm8sIDAgfTsKICAg
ICB9CiAgICAgCi0gICAgaWYgKG1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50LnN0ZXAoKSA9
PSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIHVuc2lnbmVkIGRvbWFpbklEID0gbV9kb21haW5JREZy
b21TdHJpbmdTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDApOwotCi0gICAgICAgIGludCByZXNldFJl
c3VsdCA9IG1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50LnJlc2V0KCk7Ci0gICAgICAgIEFT
U0VSVF9VTlVTRUQocmVzZXRSZXN1bHQsIHJlc2V0UmVzdWx0ID09IFNRTElURV9PSyk7CisgICAg
aWYgKHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpIHsKKyAgICAgICAgdW5z
aWduZWQgZG9tYWluSUQgPSBzY29wZWRTdGF0ZW1lbnQtPmdldENvbHVtbkludCgwKTsKICAgICAg
ICAgcmV0dXJuIHsgQWRkZWRSZWNvcmQ6Ok5vLCBkb21haW5JRCB9OwogICAgIH0KIAotICAgIGlu
dCByZXNldFJlc3VsdCA9IG1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50LnJlc2V0KCk7Ci0g
ICAgQVNTRVJUX1VOVVNFRChyZXNldFJlc3VsdCwgcmVzZXRSZXN1bHQgPT0gU1FMSVRFX09LKTsK
LQogICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3MgbmV3T2JzZXJ2YXRpb24oZG9tYWluKTsKICAg
ICBhdXRvIHJlc3VsdCA9IGluc2VydE9ic2VydmVkRG9tYWluKG5ld09ic2VydmF0aW9uKTsKIApA
QCAtMjMwMSwxNCArMjIyNCwxNCBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpyZW1vdmVEYXRhRm9yRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRAogICAgIGF1dG8g
ZG9tYWluSURUb1JlbW92ZSA9IGRvbWFpbklEKGRvbWFpbik7CiAgICAgaWYgKCFkb21haW5JRFRv
UmVtb3ZlKQogICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9yZW1vdmVBbGxEYXRhU3RhdGVt
ZW50LmJpbmRJbnQoMSwgKmRvbWFpbklEVG9SZW1vdmUpICE9IFNRTElURV9PSwotICAgICAgICB8
fCBtX3JlbW92ZUFsbERhdGFTdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ET05FKSB7CisgICAg
CisgICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSBnZXRTY29wZWRTdGF0ZW1lbnQobV9yZW1vdmVB
bGxEYXRhU3RhdGVtZW50LCByZW1vdmVBbGxEYXRhUXVlcnksICJyZW1vdmVEYXRhRm9yRG9tYWlu
Il9zKTsKKyAgICBpZiAoIXNjb3BlZFN0YXRlbWVudAorICAgICAgICB8fCBzY29wZWRTdGF0ZW1l
bnQtPmJpbmRJbnQoMSwgKmRvbWFpbklEVG9SZW1vdmUpICE9IFNRTElURV9PSworICAgICAgICB8
fCBzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewogICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVtb3ZlRGF0YUZvckRvbWFpbiBmYWlsZWQsIGVycm9y
IG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KLSAgICAKLSAgICByZXNldFN0
YXRlbWVudChtX3JlbW92ZUFsbERhdGFTdGF0ZW1lbnQpOwogfQogCiB2b2lkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0yNDkwLDE1ICsyNDEzLDE0IEBAIFZlY3Rvcjx1bnNp
Z25lZD4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmZpbmRFeHBpcmVkVXNl
ckludGVyYWN0aW9uCiAgICAgT3B0aW9uYWw8U2Vjb25kcz4gZXhwaXJhdGlvbkRhdGVUaW1lID0g
c3RhdGlzdGljc0VwaXJhdGlvblRpbWUoKTsKICAgICBpZiAoIWV4cGlyYXRpb25EYXRlVGltZSkK
ICAgICAgICAgcmV0dXJuIHJlc3VsdHM7Ci0KLSAgICBpZiAobV9maW5kRXhwaXJlZFVzZXJJbnRl
cmFjdGlvblN0YXRlbWVudC5iaW5kRG91YmxlKDEsIGV4cGlyYXRpb25EYXRlVGltZS52YWx1ZSgp
LnZhbHVlKCkpICE9IFNRTElURV9PSykKKyAgICAKKyAgICBhdXRvIHNjb3BlZFN0YXRlbWVudCA9
IGdldFNjb3BlZFN0YXRlbWVudChtX2ZpbmRFeHBpcmVkVXNlckludGVyYWN0aW9uU3RhdGVtZW50
LCBmaW5kRXhwaXJlZFVzZXJJbnRlcmFjdGlvblF1ZXJ5LCAiZmluZEV4cGlyZWRVc2VySW50ZXJh
Y3Rpb25zIl9zKTsKKyAgICBpZiAoIXNjb3BlZFN0YXRlbWVudAorICAgICAgICB8fCBzY29wZWRT
dGF0ZW1lbnQtPmJpbmREb3VibGUoMSwgZXhwaXJhdGlvbkRhdGVUaW1lLnZhbHVlKCkudmFsdWUo
KSkgIT0gU1FMSVRFX09LKQogICAgICAgICByZXR1cm4gcmVzdWx0czsKIAotICAgIHdoaWxlICht
X2ZpbmRFeHBpcmVkVXNlckludGVyYWN0aW9uU3RhdGVtZW50LnN0ZXAoKSA9PSBTUUxJVEVfUk9X
KQotICAgICAgICByZXN1bHRzLmFwcGVuZChtX2ZpbmRFeHBpcmVkVXNlckludGVyYWN0aW9uU3Rh
dGVtZW50LmdldENvbHVtbkludCgwKSk7Ci0KLSAgICBpbnQgcmVzZXRSZXN1bHQgPSBtX2ZpbmRF
eHBpcmVkVXNlckludGVyYWN0aW9uU3RhdGVtZW50LnJlc2V0KCk7Ci0gICAgQVNTRVJUX1VOVVNF
RChyZXNldFJlc3VsdCwgcmVzZXRSZXN1bHQgPT0gU1FMSVRFX09LKTsKKyAgICB3aGlsZSAoc2Nv
cGVkU3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykKKyAgICAgICAgcmVzdWx0cy5hcHBl
bmQoc2NvcGVkU3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMCkpOwogCiAgICAgcmV0dXJuIHJlc3Vs
dHM7CiB9CkBAIC0yNjU5LDExICsyNTgxLDEyIEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OnBydW5lU3RhdGlzdGljc0lmTmVlZGVkKCkKICAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIHVuc2lnbmVkIGNvdW50ID0gMDsKLSAgICBpZiAobV9v
YnNlcnZlZERvbWFpbkNvdW50LnN0ZXAoKSA9PSBTUUxJVEVfUk9XKQotICAgICAgICBjb3VudCA9
IG1fb2JzZXJ2ZWREb21haW5Db3VudC5nZXRDb2x1bW5JbnQoMCk7Ci0KLSAgICBpbnQgcmVzZXRS
ZXN1bHQgPSBtX29ic2VydmVkRG9tYWluQ291bnQucmVzZXQoKTsKLSAgICBBU1NFUlRfVU5VU0VE
KHJlc2V0UmVzdWx0LCByZXNldFJlc3VsdCA9PSBTUUxJVEVfT0spOworICAgIGF1dG8gc2NvcGVk
U3RhdGVtZW50ID0gZ2V0U2NvcGVkU3RhdGVtZW50KG1fb2JzZXJ2ZWREb21haW5Db3VudFN0YXRl
bWVudCwgb2JzZXJ2ZWREb21haW5Db3VudFF1ZXJ5LCAicHJ1bmVTdGF0aXN0aWNzSWZOZWVkZWQi
X3MpOworICAgIGlmICghc2NvcGVkU3RhdGVtZW50KQorICAgICAgICByZXR1cm47CisgICAgCisg
ICAgaWYgKHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpCisgICAgICAgIGNv
dW50ID0gc2NvcGVkU3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMCk7CiAKICAgICBpZiAoY291bnQg
PD0gcGFyYW1ldGVycygpLm1heFN0YXRpc3RpY3NFbnRyaWVzKQogICAgICAgICByZXR1cm47CkBA
IC0yNjk5LDE3ICsyNjIyLDE2IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OnBydW5lU3RhdGlzdGljc0lmTmVlZGVkKCkKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OnVwZGF0ZUxhc3RTZWVuKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBkb21haW4sIFdhbGxUaW1lIGxhc3RTZWVuKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOwotCi0gICAgaWYgKG1fdXBkYXRlTGFzdFNlZW5TdGF0ZW1lbnQuYmluZERvdWJsZSgx
LCBsYXN0U2Vlbi5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpICE9IFNRTElURV9PSwotICAg
ICAgICB8fCBtX3VwZGF0ZUxhc3RTZWVuU3RhdGVtZW50LmJpbmRUZXh0KDIsIGRvbWFpbi5zdHJp
bmcoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fdXBkYXRlTGFzdFNlZW5TdGF0ZW1lbnQu
c3RlcCgpICE9IFNRTElURV9ET05FKSB7CisgICAgCisgICAgYXV0byBzY29wZWRTdGF0ZW1lbnQg
PSBnZXRTY29wZWRTdGF0ZW1lbnQobV91cGRhdGVMYXN0U2VlblN0YXRlbWVudCwgdXBkYXRlTGFz
dFNlZW5RdWVyeSwgInVwZGF0ZUxhc3RTZWVuIl9zKTsKKyAgICBpZiAoIXNjb3BlZFN0YXRlbWVu
dAorICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmREb3VibGUoMSwgbGFzdFNlZW4uc2Vj
b25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc2NvcGVk
U3RhdGVtZW50LT5iaW5kVGV4dCgyLCBkb21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSworICAg
ICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewogICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6dXBkYXRlTGFzdFNlZW4gZmFpbGVkIHRvIGJp
bmQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJy
b3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIAotICAgIGludCByZXNldFJlc3VsdCA9IG1fdXBkYXRlTGFzdFNlZW5TdGF0
ZW1lbnQucmVzZXQoKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc2V0UmVzdWx0LCByZXNldFJlc3Vs
dCA9PSBTUUxJVEVfT0spOwogfQogCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpzZXRMYXN0U2Vlbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBTZWNv
bmRzIHNlY29uZHMpCkBAIC0yNzYwLDE3ICsyNjgyLDE2IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdp
c3RyCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVEYXRh
UmVjb3Jkc1JlbW92ZWQoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgaW50IHZhbHVl
KQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgaWYgKG1fdXBkYXRl
RGF0YVJlY29yZHNSZW1vdmVkU3RhdGVtZW50LmJpbmRJbnQoMSwgdmFsdWUpICE9IFNRTElURV9P
SwotICAgICAgICB8fCBtX3VwZGF0ZURhdGFSZWNvcmRzUmVtb3ZlZFN0YXRlbWVudC5iaW5kVGV4
dCgyLCBkb21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX3VwZGF0ZURh
dGFSZWNvcmRzUmVtb3ZlZFN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKKyAgICAK
KyAgICBhdXRvIHNjb3BlZFN0YXRlbWVudCA9IGdldFNjb3BlZFN0YXRlbWVudChtX3VwZGF0ZURh
dGFSZWNvcmRzUmVtb3ZlZFN0YXRlbWVudCwgdXBkYXRlRGF0YVJlY29yZHNSZW1vdmVkUXVlcnks
ICJ1cGRhdGVEYXRhUmVjb3Jkc1JlbW92ZWQiX3MpOworICAgIGlmICghc2NvcGVkU3RhdGVtZW50
CisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZEludCgxLCB2YWx1ZSkgIT0gU1FMSVRF
X09LCisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZFRleHQoMiwgZG9tYWluLnN0cmlu
ZygpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgIT0g
U1FMSVRFX0RPTkUpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nl
c3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnVwZGF0
ZURhdGFSZWNvcmRzUmVtb3ZlZCBmYWlsZWQgdG8gYmluZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2
YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0KLSAgICBpbnQgcmVzZXRS
ZXN1bHQgPSBtX3VwZGF0ZURhdGFSZWNvcmRzUmVtb3ZlZFN0YXRlbWVudC5yZXNldCgpOwotICAg
IEFTU0VSVF9VTlVTRUQocmVzZXRSZXN1bHQsIHJlc2V0UmVzdWx0ID09IFNRTElURV9PSyk7CiB9
CiAKIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmlzQ29ycmVjdFN1
YlN0YXRpc3RpY3NDb3VudChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViZnJhbWVEb21haW4s
IGNvbnN0IFRvcEZyYW1lRG9tYWluJiB0b3BGcmFtZURvbWFpbikKQEAgLTI4MjUsMTYgKzI3NDYs
MTcgQEAgU3RyaW5nIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXREb21h
aW5TdHJpbmdGcm9tRG9tYWluSUQodW5zaWduZWQKIHsKICAgICBhdXRvIHJlc3VsdCA9IGVtcHR5
U3RyaW5nKCk7CiAgICAgCi0gICAgaWYgKG1fZG9tYWluU3RyaW5nRnJvbURvbWFpbklEU3RhdGVt
ZW50LmJpbmRJbnQoMSwgZG9tYWluSUQpICE9IFNRTElURV9PSykgeworICAgIGF1dG8gc2NvcGVk
U3RhdGVtZW50ID0gZ2V0U2NvcGVkU3RhdGVtZW50KG1fZG9tYWluU3RyaW5nRnJvbURvbWFpbklE
U3RhdGVtZW50LCBkb21haW5TdHJpbmdGcm9tRG9tYWluSURRdWVyeSwgImdldERvbWFpblN0cmlu
Z0Zyb21Eb21haW5JRCJfcyk7CisgICAgaWYgKCFzY29wZWRTdGF0ZW1lbnQKKyAgICAgICAgfHwg
c2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDEsIGRvbWFpbklEKSAhPSBTUUxJVEVfT0spIHsKICAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldERvbWFpblN0cmluZ0Zyb21Eb21h
aW5JRC4gU3RhdGVtZW50IGZhaWxlZCB0byBwcmVwYXJlIG9yIGJpbmQsIGVycm9yIG1lc3NhZ2U6
ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAg
ICAKLSAgICBpZiAobV9kb21haW5TdHJpbmdGcm9tRG9tYWluSURTdGF0ZW1lbnQuc3RlcCgpID09
IFNRTElURV9ST1cpCi0gICAgICAgIHJlc3VsdCA9IG1fZG9tYWluU3RyaW5nRnJvbURvbWFpbklE
U3RhdGVtZW50LmdldENvbHVtblRleHQoMCk7CisgICAgaWYgKHNjb3BlZFN0YXRlbWVudC0+c3Rl
cCgpID09IFNRTElURV9ST1cpCisgICAgICAgIHJlc3VsdCA9IG1fZG9tYWluU3RyaW5nRnJvbURv
bWFpbklEU3RhdGVtZW50LT5nZXRDb2x1bW5UZXh0KDApOwogICAgIAotICAgIHJlc2V0U3RhdGVt
ZW50KG1fZG9tYWluU3RyaW5nRnJvbURvbWFpbklEU3RhdGVtZW50KTsKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCkBAIC0yOTAxLDggKzI4MjMsMTAgQEAgc3RhdGljIGJvb2wgaGFzSGFkUmVjZW50
VXNlckludGVyYWN0aW9uKFdURjo6U2Vjb25kcyBpbnRlcmFjdGlvblRpbWVTZWNvbmRzKQogCiB2
b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXNvdXJjZVRvU3RyaW5n
KFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluKSBjb25zdAogewot
ICAgIGlmIChtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC5iaW5kVGV4dCgx
LCBkb21haW4pICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX2dldFJlc291cmNlRGF0YUJ5RG9t
YWluTmFtZVN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX1JPVykgeworICAgIGF1dG8gc2NvcGVk
U3RhdGVtZW50ID0gZ2V0U2NvcGVkU3RhdGVtZW50KG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5O
YW1lU3RhdGVtZW50LCBnZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVRdWVyeSwgInJlc291cmNl
VG9TdHJpbmciX3MpOworICAgIGlmICghc2NvcGVkU3RhdGVtZW50CisgICAgICAgIHx8IHNjb3Bl
ZFN0YXRlbWVudC0+YmluZFRleHQoMSwgZG9tYWluKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwg
c2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX1JPVykgewogICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVzb3VyY2VUb1N0cmluZy4gU3RhdGVtZW50IGZhaWxlZCB0
byBiaW5kIG9yIGRvbWFpbiB3YXMgbm90IGZvdW5kLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9
cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjkxMywxNSArMjgzNywxNSBAQCB2b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXNvdXJjZVRvU3RyaW5nKFN0
cmluZ0J1aWxkZXImIGJ1aWxkZQogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwogICAgIAogICAg
IC8vIFVzZXIgaW50ZXJhY3Rpb24KLSAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJoYWRVc2Vy
SW50ZXJhY3Rpb24iLCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC5nZXRD
b2x1bW5JbnQoSGFkVXNlckludGVyYWN0aW9uSW5kZXgpKTsKKyAgICBhcHBlbmRCb29sZWFuKGJ1
aWxkZXIsICJoYWRVc2VySW50ZXJhY3Rpb24iLCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFt
ZVN0YXRlbWVudC0+Z2V0Q29sdW1uSW50KEhhZFVzZXJJbnRlcmFjdGlvbkluZGV4KSk7CiAgICAg
YnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgICAgbW9z
dFJlY2VudFVzZXJJbnRlcmFjdGlvbjogIik7Ci0gICAgaWYgKGhhc0hhZFJlY2VudFVzZXJJbnRl
cmFjdGlvbihTZWNvbmRzKG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50Lmdl
dENvbHVtbkRvdWJsZShNb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZUluZGV4KSkpKQorICAg
IGlmIChoYXNIYWRSZWNlbnRVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyhtX2dldFJlc291cmNlRGF0
YUJ5RG9tYWluTmFtZVN0YXRlbWVudC0+Z2V0Q29sdW1uRG91YmxlKE1vc3RSZWNlbnRVc2VySW50
ZXJhY3Rpb25UaW1lSW5kZXgpKSkpCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgid2l0
aGluIDI0IGhvdXJzIik7CiAgICAgZWxzZQogICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
Ii0xIik7CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgYXBwZW5kQm9vbGVhbihidWls
ZGVyLCAiZ3JhbmRmYXRoZXJlZCIsIG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVt
ZW50LmdldENvbHVtbkludChHcmFuZGZhdGhlcmVkSW5kZXgpKTsKKyAgICBhcHBlbmRCb29sZWFu
KGJ1aWxkZXIsICJncmFuZGZhdGhlcmVkIiwgbV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVT
dGF0ZW1lbnQtPmdldENvbHVtbkludChHcmFuZGZhdGhlcmVkSW5kZXgpKTsKICAgICBidWlsZGVy
LmFwcGVuZCgnXG4nKTsKIAogICAgIC8vIFN0b3JhZ2UgYWNjZXNzCkBAIC0yOTM0LDcgKzI4NTgs
NyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXNvdXJjZVRv
U3RyaW5nKFN0cmluZ0J1aWxkZXImIGJ1aWxkZQogICAgIGFwcGVuZFN1YlN0YXRpc3RpY0xpc3Qo
YnVpbGRlciwgIlRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSIsIGRvbWFpbik7CiAgICAgYXBw
ZW5kU3ViU3RhdGlzdGljTGlzdChidWlsZGVyLCAiVG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2Ny
aXB0cyIsIGRvbWFpbik7CiAKLSAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJJc1NjaGVkdWxl
ZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsIiwgbV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5h
bWVTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KElzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJl
bW92YWxJbmRleCkpOworICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgIklzU2NoZWR1bGVkRm9y
QWxsQnV0Q29va2llRGF0YVJlbW92YWwiLCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0
YXRlbWVudC0+Z2V0Q29sdW1uSW50KElzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92
YWxJbmRleCkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwogCiAgICAgLy8gU3ViZnJhbWUg
c3RhdHMKQEAgLTI5NDYsNTQgKzI4NzAsNTggQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6cmVzb3VyY2VUb1N0cmluZyhTdHJpbmdCdWlsZGVyJiBidWlsZGUKICAg
ICBhcHBlbmRTdWJTdGF0aXN0aWNMaXN0KGJ1aWxkZXIsICJTdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0c0Zyb20iLCBkb21haW4pOwogCiAgICAgLy8gUHJldmFsZW50IFJlc291cmNlCi0gICAgYXBw
ZW5kQm9vbGVhbihidWlsZGVyLCAiaXNQcmV2YWxlbnRSZXNvdXJjZSIsIG1fZ2V0UmVzb3VyY2VE
YXRhQnlEb21haW5OYW1lU3RhdGVtZW50LmdldENvbHVtbkludChJc1ByZXZhbGVudEluZGV4KSk7
CisgICAgYXBwZW5kQm9vbGVhbihidWlsZGVyLCAiaXNQcmV2YWxlbnRSZXNvdXJjZSIsIG1fZ2V0
UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoSXNQcmV2YWxl
bnRJbmRleCkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgIGFwcGVuZEJvb2xlYW4o
YnVpbGRlciwgImlzVmVyeVByZXZhbGVudFJlc291cmNlIiwgbV9nZXRSZXNvdXJjZURhdGFCeURv
bWFpbk5hbWVTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KElzVmVyeVByZXZhbGVudEluZGV4KSk7Cisg
ICAgYXBwZW5kQm9vbGVhbihidWlsZGVyLCAiaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UiLCBtX2dl
dFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC0+Z2V0Q29sdW1uSW50KElzVmVyeVBy
ZXZhbGVudEluZGV4KSk7CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAgICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIgICAgZGF0YVJlY29yZHNSZW1vdmVkOiAiKTsKLSAgICBidWlsZGVyLmFw
cGVuZE51bWJlcihtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC5nZXRDb2x1
bW5JbnQoRGF0YVJlY29yZHNSZW1vdmVkSW5kZXgpKTsKKyAgICBidWlsZGVyLmFwcGVuZE51bWJl
cihtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC0+Z2V0Q29sdW1uSW50KERh
dGFSZWNvcmRzUmVtb3ZlZEluZGV4KSk7CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0KLSAg
ICByZXNldFN0YXRlbWVudChtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudCk7
CiB9CiAKIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmRvbWFpbklE
RXhpc3RzSW5EYXRhYmFzZShpbnQgZG9tYWluSUQpCiB7Ci0gICAgaWYgKG1fbGlua0RlY29yYXRp
b25FeGlzdHNTdGF0ZW1lbnQuYmluZEludCgxLCBkb21haW5JRCkgIT0gU1FMSVRFX09LCi0gICAg
ICAgIHx8IG1fbGlua0RlY29yYXRpb25FeGlzdHNTdGF0ZW1lbnQuYmluZEludCgyLCBkb21haW5J
RCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fc2NyaXB0TG9hZEV4aXN0c1N0YXRlbWVudC5i
aW5kSW50KDEsIGRvbWFpbklEKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9zY3JpcHRMb2Fk
RXhpc3RzU3RhdGVtZW50LmJpbmRJbnQoMiwgZG9tYWluSUQpICE9IFNRTElURV9PSwotICAgICAg
ICB8fCBtX3N1YkZyYW1lRXhpc3RzU3RhdGVtZW50LmJpbmRJbnQoMSwgZG9tYWluSUQpICE9IFNR
TElURV9PSwotICAgICAgICB8fCBtX3N1YkZyYW1lRXhpc3RzU3RhdGVtZW50LmJpbmRJbnQoMiwg
ZG9tYWluSUQpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX3N1YlJlc291cmNlRXhpc3RzU3Rh
dGVtZW50LmJpbmRJbnQoMSwgZG9tYWluSUQpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX3N1
YlJlc291cmNlRXhpc3RzU3RhdGVtZW50LmJpbmRJbnQoMiwgZG9tYWluSUQpICE9IFNRTElURV9P
SwotICAgICAgICB8fCBtX3VuaXF1ZVJlZGlyZWN0RXhpc3RzU3RhdGVtZW50LmJpbmRJbnQoMSwg
ZG9tYWluSUQpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX3VuaXF1ZVJlZGlyZWN0RXhpc3Rz
U3RhdGVtZW50LmJpbmRJbnQoMiwgZG9tYWluSUQpICE9IFNRTElURV9PSwotICAgICAgICB8fCBt
X29ic2VydmVkRG9tYWluc0V4aXN0c1N0YXRlbWVudC5iaW5kSW50KDEsIGRvbWFpbklEKSAhPSBT
UUxJVEVfT0spIHsKKyAgICBhdXRvIHNjb3BlZExpbmtEZWNvcmF0aW9uRXhpc3RzU3RhdGVtZW50
ID0gZ2V0U2NvcGVkU3RhdGVtZW50KG1fbGlua0RlY29yYXRpb25FeGlzdHNTdGF0ZW1lbnQsIGxp
bmtEZWNvcmF0aW9uRXhpc3RzUXVlcnksICJkb21haW5JREV4aXN0c0luRGF0YWJhc2UiX3MpOwor
ICAgIGF1dG8gc2NvcGVkU2NyaXB0TG9hZEV4aXN0c1N0YXRlbWVudCA9IGdldFNjb3BlZFN0YXRl
bWVudChtX3NjcmlwdExvYWRFeGlzdHNTdGF0ZW1lbnQsIHNjcmlwdExvYWRFeGlzdHNRdWVyeSwg
ImRvbWFpbklERXhpc3RzSW5EYXRhYmFzZSBsaW5rRGVjb3JhdGlvbkV4aXN0c1N0YXRlbWVudCJf
cyk7CisgICAgYXV0byBzY29wZWRTdWJGcmFtZUV4aXN0c1N0YXRlbWVudCA9IGdldFNjb3BlZFN0
YXRlbWVudChtX3N1YkZyYW1lRXhpc3RzU3RhdGVtZW50LCBzdWJGcmFtZUV4aXN0c1F1ZXJ5LCAi
ZG9tYWluSURFeGlzdHNJbkRhdGFiYXNlIHN1YkZyYW1lRXhpc3RzU3RhdGVtZW50Il9zKTsKKyAg
ICBhdXRvIHNjb3BlZFN1YlJlc291cmNlRXhpc3RzU3RhdGVtZW50ID0gZ2V0U2NvcGVkU3RhdGVt
ZW50KG1fc3ViUmVzb3VyY2VFeGlzdHNTdGF0ZW1lbnQsIHN1YlJlc291cmNlRXhpc3RzUXVlcnks
ICJkb21haW5JREV4aXN0c0luRGF0YWJhc2Ugc3ViUmVzb3VyY2VFeGlzdHNTdGF0ZW1lbnQiX3Mp
OworICAgIGF1dG8gc2NvcGVkVW5pcXVlUmVkaXJlY3RFeGlzdHNTdGF0ZW1lbnQgPSBnZXRTY29w
ZWRTdGF0ZW1lbnQobV91bmlxdWVSZWRpcmVjdEV4aXN0c1N0YXRlbWVudCwgdW5pcXVlUmVkaXJl
Y3RFeGlzdHNRdWVyeSwgImRvbWFpbklERXhpc3RzSW5EYXRhYmFzZSB1bmlxdWVSZWRpcmVjdEV4
aXN0c1N0YXRlbWVudCJfcyk7CisgICAgYXV0byBzY29wZWRPYnNlcnZlZERvbWFpbnNFeGlzdHNT
dGF0ZW1lbnQgPSBnZXRTY29wZWRTdGF0ZW1lbnQobV9vYnNlcnZlZERvbWFpbnNFeGlzdHNTdGF0
ZW1lbnQsIG9ic2VydmVkRG9tYWluc0V4aXN0c1F1ZXJ5LCAiZG9tYWluSURFeGlzdHNJbkRhdGFi
YXNlIG9ic2VydmVkRG9tYWluc0V4aXN0c1N0YXRlbWVudCJfcyk7CisgICAgCisgICAgaWYgKCFz
Y29wZWRMaW5rRGVjb3JhdGlvbkV4aXN0c1N0YXRlbWVudAorICAgICAgICB8fCAhc2NvcGVkU2Ny
aXB0TG9hZEV4aXN0c1N0YXRlbWVudAorICAgICAgICB8fCAhc2NvcGVkU3ViRnJhbWVFeGlzdHNT
dGF0ZW1lbnQKKyAgICAgICAgfHwgIXNjb3BlZFN1YlJlc291cmNlRXhpc3RzU3RhdGVtZW50Cisg
ICAgICAgIHx8ICFzY29wZWRVbmlxdWVSZWRpcmVjdEV4aXN0c1N0YXRlbWVudAorICAgICAgICB8
fCAhc2NvcGVkT2JzZXJ2ZWREb21haW5zRXhpc3RzU3RhdGVtZW50CisgICAgICAgIHx8IG1fbGlu
a0RlY29yYXRpb25FeGlzdHNTdGF0ZW1lbnQtPmJpbmRJbnQoMSwgZG9tYWluSUQpICE9IFNRTElU
RV9PSworICAgICAgICB8fCBtX2xpbmtEZWNvcmF0aW9uRXhpc3RzU3RhdGVtZW50LT5iaW5kSW50
KDIsIGRvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9zY3JpcHRMb2FkRXhpc3Rz
U3RhdGVtZW50LT5iaW5kSW50KDEsIGRvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwg
bV9zY3JpcHRMb2FkRXhpc3RzU3RhdGVtZW50LT5iaW5kSW50KDIsIGRvbWFpbklEKSAhPSBTUUxJ
VEVfT0sKKyAgICAgICAgfHwgbV9zdWJGcmFtZUV4aXN0c1N0YXRlbWVudC0+YmluZEludCgxLCBk
b21haW5JRCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1fc3ViRnJhbWVFeGlzdHNTdGF0ZW1l
bnQtPmJpbmRJbnQoMiwgZG9tYWluSUQpICE9IFNRTElURV9PSworICAgICAgICB8fCBtX3N1YlJl
c291cmNlRXhpc3RzU3RhdGVtZW50LT5iaW5kSW50KDEsIGRvbWFpbklEKSAhPSBTUUxJVEVfT0sK
KyAgICAgICAgfHwgbV9zdWJSZXNvdXJjZUV4aXN0c1N0YXRlbWVudC0+YmluZEludCgyLCBkb21h
aW5JRCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1fdW5pcXVlUmVkaXJlY3RFeGlzdHNTdGF0
ZW1lbnQtPmJpbmRJbnQoMSwgZG9tYWluSUQpICE9IFNRTElURV9PSworICAgICAgICB8fCBtX3Vu
aXF1ZVJlZGlyZWN0RXhpc3RzU3RhdGVtZW50LT5iaW5kSW50KDIsIGRvbWFpbklEKSAhPSBTUUxJ
VEVfT0sKKyAgICAgICAgfHwgbV9vYnNlcnZlZERvbWFpbnNFeGlzdHNTdGF0ZW1lbnQtPmJpbmRJ
bnQoMSwgZG9tYWluSUQpICE9IFNRTElURV9PSykgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJP
Ul9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6ZG9tYWluSURFeGlzdHNJbkRhdGFiYXNlIGZhaWxlZCB0byBiaW5kLCBlcnJv
ciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkp
OwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAotICAgIGlmIChtX2xpbmtEZWNvcmF0aW9uRXhpc3RzU3RhdGVtZW50LnN0ZXAoKSAh
PSBTUUxJVEVfUk9XCi0gICAgICAgIHx8IG1fc2NyaXB0TG9hZEV4aXN0c1N0YXRlbWVudC5zdGVw
KCkgIT0gU1FMSVRFX1JPVwotICAgICAgICB8fCBtX3N1YkZyYW1lRXhpc3RzU3RhdGVtZW50LnN0
ZXAoKSAhPSBTUUxJVEVfUk9XCi0gICAgICAgIHx8IG1fc3ViUmVzb3VyY2VFeGlzdHNTdGF0ZW1l
bnQuc3RlcCgpICE9IFNRTElURV9ST1cKLSAgICAgICAgfHwgbV91bmlxdWVSZWRpcmVjdEV4aXN0
c1N0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX1JPVwotICAgICAgICB8fCBtX29ic2VydmVkRG9t
YWluc0V4aXN0c1N0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX1JPVykgeworICAgIGlmIChtX2xp
bmtEZWNvcmF0aW9uRXhpc3RzU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX1JPVworICAgICAg
ICB8fCBtX3NjcmlwdExvYWRFeGlzdHNTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfUk9XCisg
ICAgICAgIHx8IG1fc3ViRnJhbWVFeGlzdHNTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfUk9X
CisgICAgICAgIHx8IG1fc3ViUmVzb3VyY2VFeGlzdHNTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJ
VEVfUk9XCisgICAgICAgIHx8IG1fdW5pcXVlUmVkaXJlY3RFeGlzdHNTdGF0ZW1lbnQtPnN0ZXAo
KSAhPSBTUUxJVEVfUk9XCisgICAgICAgIHx8IG1fb2JzZXJ2ZWREb21haW5zRXhpc3RzU3RhdGVt
ZW50LT5zdGVwKCkgIT0gU1FMSVRFX1JPVykgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9J
Rl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6ZG9tYWluSURFeGlzdHNJbkRhdGFiYXNlIGZhaWxlZCB0byBzdGVwLCBlcnJvciBt
ZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KLSAgICAKLSAgICByZXNldFN0YXRlbWVudChtX2xpbmtEZWNvcmF0aW9uRXhpc3RzU3RhdGVt
ZW50KTsKLSAgICByZXNldFN0YXRlbWVudChtX3NjcmlwdExvYWRFeGlzdHNTdGF0ZW1lbnQpOwot
ICAgIHJlc2V0U3RhdGVtZW50KG1fc3ViRnJhbWVFeGlzdHNTdGF0ZW1lbnQpOwotICAgIHJlc2V0
U3RhdGVtZW50KG1fc3ViUmVzb3VyY2VFeGlzdHNTdGF0ZW1lbnQpOwotICAgIHJlc2V0U3RhdGVt
ZW50KG1fdW5pcXVlUmVkaXJlY3RFeGlzdHNTdGF0ZW1lbnQpOwotICAgIHJlc2V0U3RhdGVtZW50
KG1fb2JzZXJ2ZWREb21haW5zRXhpc3RzU3RhdGVtZW50KTsKIAotICAgIHJldHVybiBtX2xpbmtE
ZWNvcmF0aW9uRXhpc3RzU3RhdGVtZW50LmdldENvbHVtbkludCgwKSB8fCBtX3NjcmlwdExvYWRF
eGlzdHNTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDApIHx8IG1fc3ViRnJhbWVFeGlzdHNTdGF0ZW1l
bnQuZ2V0Q29sdW1uSW50KDApIHx8IG1fc3ViUmVzb3VyY2VFeGlzdHNTdGF0ZW1lbnQuZ2V0Q29s
dW1uSW50KDApIHx8IG1fdW5pcXVlUmVkaXJlY3RFeGlzdHNTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50
KDApIHx8IG1fb2JzZXJ2ZWREb21haW5zRXhpc3RzU3RhdGVtZW50LmdldENvbHVtbkludCgwKTsK
KyAgICByZXR1cm4gbV9saW5rRGVjb3JhdGlvbkV4aXN0c1N0YXRlbWVudC0+Z2V0Q29sdW1uSW50
KDApIHx8IG1fc2NyaXB0TG9hZEV4aXN0c1N0YXRlbWVudC0+Z2V0Q29sdW1uSW50KDApIHx8IG1f
c3ViRnJhbWVFeGlzdHNTdGF0ZW1lbnQtPmdldENvbHVtbkludCgwKSB8fCBtX3N1YlJlc291cmNl
RXhpc3RzU3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMCkgfHwgbV91bmlxdWVSZWRpcmVjdEV4aXN0
c1N0YXRlbWVudC0+Z2V0Q29sdW1uSW50KDApIHx8IG1fb2JzZXJ2ZWREb21haW5zRXhpc3RzU3Rh
dGVtZW50LT5nZXRDb2x1bW5JbnQoMCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAppbmRl
eCBiNDdkNTJkZjJiNGE1ZThkZTg3MTY0MTJlMWFhZDUzOTA3YWQzZDliLi5lYTAyN2M1OTUxZjgw
NWQyYzJjMjk2N2U4YjJhNTI0ZTNhYjdiNzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
U1FMaXRlRGF0YWJhc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVN0YXRlbWVudC5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUuaD4KICNpbmNs
dWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+
CiAjaW5jbHVkZSA8d3RmL1N0ZFNldC5oPgpAQCAtNzksMTEgKzgwLDEyIEBAIGNsYXNzIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTsKIGNsYXNzIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlIGZpbmFsIDogcHVibGljIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZSB7CiBwdWJsaWM6CiAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUoV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiwgV29ya1F1ZXVlJiwgU2hvdWxkSW5jbHVkZUxv
Y2FsaG9zdCwgY29uc3QgU3RyaW5nJiBzdG9yYWdlRGlyZWN0b3J5UGF0aCwgUEFMOjpTZXNzaW9u
SUQpOwotCisgICAgflJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlKCk7CiAgICAg
dm9pZCBwb3B1bGF0ZUZyb21NZW1vcnlTdG9yZShjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWVtb3J5U3RvcmUmKTsKICAgICB2b2lkIG1lcmdlU3RhdGlzdGljcyhWZWN0b3I8UmVzb3VyY2VM
b2FkU3RhdGlzdGljcz4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGVhcihDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IG92ZXJy
aWRlOworICAgIHZvaWQgY2xvc2UoKTsKIAogICAgIFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhPiBhZ2dyZWdhdGVkVGhpcmRQYXJ0eURhdGEoKSBj
b25zdCBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZUNvb2tpZUJsb2NraW5nKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7CkBAIC0xNDgsNiArMTUwLDkgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGVuYWJsZUZvcmVpZ25LZXlzKCk7CiAgICAgYm9vbCBpc01pZ3JhdGlvbk5lY2Vz
c2FyeSgpOwogICAgIHZvaWQgbWlncmF0ZURhdGFUb05ld1RhYmxlc0lmTmVjZXNzYXJ5KCk7Cisg
ICAgdm9pZCBkZXN0cm95U3RhdGVtZW50cygpOworICAgIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVu
dEF1dG9SZXNldFNjb3BlIGdldFNjb3BlZFN0YXRlbWVudChzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6U1FMaXRlU3RhdGVtZW50PiYsIGNvbnN0IFN0cmluZywgY29uc3QgU3RyaW5nJikgY29uc3Q7
CisKICAgICBib29sIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25z
dCBTdWJGcmFtZURvbWFpbiYpIGNvbnN0OwogICAgIFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5PiBnZXRUaGly
ZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbnModW5zaWduZWQsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CiAgICAgdm9pZCBvcGVuQW5kVXBkYXRlU2NoZW1hSWZO
ZWNlc3NhcnkoKTsKQEAgLTE1NSw3ICsxNjAsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBnZXRT
dWJTdGF0aXN0aWNTdGF0ZW1lbnQoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgdm9pZCBhcHBl
bmRTdWJTdGF0aXN0aWNMaXN0KFN0cmluZ0J1aWxkZXImLCBjb25zdCBTdHJpbmcmIHRhYmxlTmFt
ZSwgY29uc3QgU3RyaW5nJiBkb21haW4pIGNvbnN0OwogICAgIHZvaWQgbWVyZ2VTdGF0aXN0aWMo
Y29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOwotICAgIHZvaWQgbWVyZ2UoV2ViQ29yZTo6
U1FMaXRlU3RhdGVtZW50JiwgY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOworICAgIHZv
aWQgbWVyZ2UoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50KiwgY29uc3QgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyYpOwogICAgIHZvaWQgY2xlYXJEYXRhYmFzZUNvbnRlbnRzKCk7CiAgICAgdW5zaWdu
ZWQgZ2V0TnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXMoKSBjb25zdDsKICAgICB1bnNpZ25lZCBn
ZXROdW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVSSgpIGNvbnN0OwpAQCAtMTY3LDggKzE3
Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpbnNlcnRPYnNlcnZlZERvbWFpbihjb25zdCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzJikgV0FSTl9VTlVTRURfUkVUVVJOOwogICAgIHZvaWQgaW5zZXJ0
RG9tYWluUmVsYXRpb25zaGlwcyhjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7CiAgICAg
dm9pZCBpbnNlcnREb21haW5SZWxhdGlvbnNoaXBMaXN0KGNvbnN0IFN0cmluZyYsIGNvbnN0IEhh
c2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiwgdW5zaWduZWQpOwotICAgIGJvb2wgaW5zZXJ0RG9t
YWluUmVsYXRpb25zaGlwKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCYsIHVuc2lnbmVkIGRvbWFp
bklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4pOwotICAgIGJvb2wg
cmVsYXRpb25zaGlwRXhpc3RzKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCYsIE9wdGlvbmFsPHVu
c2lnbmVkPiBmaXJzdERvbWFpbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc2Vjb25kRG9t
YWluKSBjb25zdDsKKyAgICBib29sIHJlbGF0aW9uc2hpcEV4aXN0cyhXZWJDb3JlOjpTUUxpdGVT
dGF0ZW1lbnRBdXRvUmVzZXRTY29wZSYsIE9wdGlvbmFsPHVuc2lnbmVkPiBmaXJzdERvbWFpbklE
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc2Vjb25kRG9tYWluKSBjb25zdDsKICAgICBPcHRp
b25hbDx1bnNpZ25lZD4gZG9tYWluSUQoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsK
ICAgICBib29sIGRvbWFpbkV4aXN0cyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0Owog
ICAgIHZvaWQgdXBkYXRlTGFzdFNlZW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBXYWxsVGlt
ZSk7CkBAIC0yMDYsNyArMjEwLDcgQEAgcHJpdmF0ZToKICAgICB9OwogICAgIEhhc2hNYXA8dW5z
aWduZWQsIE5vdFZlcnlQcmV2YWxlbnRSZXNvdXJjZXM+IGZpbmROb3RWZXJ5UHJldmFsZW50UmVz
b3VyY2VzKCk7CiAKLSAgICBib29sIHByZWRpY2F0ZVZhbHVlRm9yRG9tYWluKFdlYkNvcmU6OlNR
TGl0ZVN0YXRlbWVudCYsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CisgICAgYm9v
bCBwcmVkaWNhdGVWYWx1ZUZvckRvbWFpbihXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnRBdXRvUmVz
ZXRTY29wZSYsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CiAKICAgICBib29sIGFy
ZUFsbFRoaXJkUGFydHlDb29raWVzQmxvY2tlZFVuZGVyKGNvbnN0IFRvcEZyYW1lRG9tYWluJikg
b3ZlcnJpZGU7CiAgICAgQ29va2llQWNjZXNzIGNvb2tpZUFjY2Vzcyhjb25zdCBTdWJSZXNvdXJj
ZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJik7CkBAIC0yMjksNTAgKzIzMyw0OCBAQCBw
cml2YXRlOgogCiAgICAgYm9vbCBjcmVhdGVVbmlxdWVJbmRpY2VzKCk7CiAgICAgYm9vbCBjcmVh
dGVTY2hlbWEoKTsKLSAgICBib29sIHByZXBhcmVTdGF0ZW1lbnRzKCk7CiAgICAgU3RyaW5nIGVu
c3VyZUFuZE1ha2VEb21haW5MaXN0KGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik7
Ci0KICAgICAKICAgICBjb25zdCBTdHJpbmcgbV9zdG9yYWdlRGlyZWN0b3J5UGF0aDsKICAgICBt
dXRhYmxlIFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlIG1fZGF0YWJhc2U7Ci0gICAgbXV0YWJsZSBX
ZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV9vYnNlcnZlZERvbWFpbkNvdW50OwotICAgIFdlYkNv
cmU6OlNRTGl0ZVN0YXRlbWVudCBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50OwotICAg
IFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX2luc2VydFRvcExldmVsRG9tYWluU3RhdGVtZW50
OwotICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fZG9tYWluSURGcm9tU3Ry
aW5nU3RhdGVtZW50OwotICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fdG9w
RnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tRXhpc3RzOwotICAgIG11dGFibGUgV2ViQ29yZTo6U1FM
aXRlU3RhdGVtZW50IG1fdG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0c0V4aXN0czsKLSAg
ICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX3N1YmZyYW1lVW5kZXJUb3BGcmFt
ZURvbWFpbkV4aXN0czsKLSAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX3N1
YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbkV4aXN0czsKLSAgICBtdXRhYmxlIFdlYkNvcmU6
OlNRTGl0ZVN0YXRlbWVudCBtX3N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG9FeGlzdHM7Ci0g
ICAgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblN0
YXRlbWVudDsKLSAgICBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV91cGRhdGVMYXN0U2VlblN0
YXRlbWVudDsKLSAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX3VwZGF0ZURh
dGFSZWNvcmRzUmVtb3ZlZFN0YXRlbWVudDsKLSAgICBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQg
bV91cGRhdGVQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudDsKLSAgICBtdXRhYmxlIFdlYkNvcmU6
OlNRTGl0ZVN0YXRlbWVudCBtX2lzUHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQ7Ci0gICAgV2Vi
Q29yZTo6U1FMaXRlU3RhdGVtZW50IG1fdXBkYXRlVmVyeVByZXZhbGVudFJlc291cmNlU3RhdGVt
ZW50OwotICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1faXNWZXJ5UHJldmFs
ZW50UmVzb3VyY2VTdGF0ZW1lbnQ7Ci0gICAgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fY2xl
YXJQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudDsKLSAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0
ZVN0YXRlbWVudCBtX2hhZFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudDsKLSAgICBXZWJDb3JlOjpT
UUxpdGVTdGF0ZW1lbnQgbV91cGRhdGVHcmFuZGZhdGhlcmVkU3RhdGVtZW50OwotICAgIG11dGFi
bGUgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fdXBkYXRlSXNTY2hlZHVsZWRGb3JBbGxCdXRD
b29raWVEYXRhUmVtb3ZhbFN0YXRlbWVudDsKLSAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0
YXRlbWVudCBtX2lzR3JhbmRmYXRoZXJlZFN0YXRlbWVudDsKLSAgICBtdXRhYmxlIFdlYkNvcmU6
OlNRTGl0ZVN0YXRlbWVudCBtX2ZpbmRFeHBpcmVkVXNlckludGVyYWN0aW9uU3RhdGVtZW50Owot
ICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fY291bnRQcmV2YWxlbnRSZXNv
dXJjZXNTdGF0ZW1lbnQ7Ci0gICAgbXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV9j
b3VudFByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQ7Ci0gICAg
bXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV9jb3VudFByZXZhbGVudFJlc291cmNl
c1dpdGhvdXRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQ7Ci0gICAgbXV0YWJsZSBXZWJDb3JlOjpT
UUxpdGVTdGF0ZW1lbnQgbV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQ7Ci0g
ICAgbXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV9nZXRBbGxEb21haW5zU3RhdGVt
ZW50OwotICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fZG9tYWluU3RyaW5n
RnJvbURvbWFpbklEU3RhdGVtZW50OwotICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlU3RhdGVt
ZW50IG1fZ2V0QWxsU3ViU3RhdGlzdGljc1N0YXRlbWVudDsKLSAgICBtdXRhYmxlIFdlYkNvcmU6
OlNRTGl0ZVN0YXRlbWVudCBtX3N0b3JhZ2VBY2Nlc3NFeGlzdHNTdGF0ZW1lbnQ7Ci0gICAgbXV0
YWJsZSBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV9nZXRNb3N0UmVjZW50bHlVcGRhdGVkVGlt
ZXN0YW1wU3RhdGVtZW50OwotICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1f
bGlua0RlY29yYXRpb25FeGlzdHNTdGF0ZW1lbnQ7Ci0gICAgbXV0YWJsZSBXZWJDb3JlOjpTUUxp
dGVTdGF0ZW1lbnQgbV9zY3JpcHRMb2FkRXhpc3RzU3RhdGVtZW50OwotICAgIG11dGFibGUgV2Vi
Q29yZTo6U1FMaXRlU3RhdGVtZW50IG1fc3ViRnJhbWVFeGlzdHNTdGF0ZW1lbnQ7Ci0gICAgbXV0
YWJsZSBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV9zdWJSZXNvdXJjZUV4aXN0c1N0YXRlbWVu
dDsKLSAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX3VuaXF1ZVJlZGlyZWN0
RXhpc3RzU3RhdGVtZW50OwotICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1f
b2JzZXJ2ZWREb21haW5zRXhpc3RzU3RhdGVtZW50OwotICAgIG11dGFibGUgV2ViQ29yZTo6U1FM
aXRlU3RhdGVtZW50IG1fcmVtb3ZlQWxsRGF0YVN0YXRlbWVudDsKKyAgICBtdXRhYmxlIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fb2JzZXJ2ZWREb21haW5Db3Vu
dFN0YXRlbWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50
PiBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1faW5zZXJ0VG9wTGV2ZWxEb21haW5TdGF0ZW1lbnQ7
CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBt
X2RvbWFpbklERnJvbVN0cmluZ1N0YXRlbWVudDsKKyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fdG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9t
RXhpc3RzU3RhdGVtZW50OworICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNR
TGl0ZVN0YXRlbWVudD4gbV90b3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRzRXhpc3RzU3Rh
dGVtZW50OworICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRl
bWVudD4gbV9zdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5FeGlzdHNTdGF0ZW1lbnQ7CisgICAg
bXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX3N1YnJl
c291cmNlVW5kZXJUb3BGcmFtZURvbWFpbkV4aXN0c1N0YXRlbWVudDsKKyAgICBtdXRhYmxlIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fc3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdHNUb0V4aXN0c1N0YXRlbWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6U1FMaXRlU3RhdGVtZW50PiBtX21vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQ7
CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV91cGRhdGVM
YXN0U2VlblN0YXRlbWVudDsKKyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpT
UUxpdGVTdGF0ZW1lbnQ+IG1fdXBkYXRlRGF0YVJlY29yZHNSZW1vdmVkU3RhdGVtZW50OworICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fdXBkYXRlUHJldmFs
ZW50UmVzb3VyY2VTdGF0ZW1lbnQ7CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6U1FMaXRlU3RhdGVtZW50PiBtX2lzUHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQ7CisgICAg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV91cGRhdGVWZXJ5UHJl
dmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQ7CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2lzVmVyeVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fY2xlYXJQ
cmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudDsKKyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1faGFkVXNlckludGVyYWN0aW9uU3RhdGVtZW50Owor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fdXBkYXRlR3Jh
bmRmYXRoZXJlZFN0YXRlbWVudDsKKyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpTUUxpdGVTdGF0ZW1lbnQ+IG1fdXBkYXRlSXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRh
UmVtb3ZhbFN0YXRlbWVudDsKKyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpT
UUxpdGVTdGF0ZW1lbnQ+IG1faXNHcmFuZGZhdGhlcmVkU3RhdGVtZW50OworICAgIG11dGFibGUg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9maW5kRXhwaXJlZFVz
ZXJJbnRlcmFjdGlvblN0YXRlbWVudDsKKyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fY291bnRQcmV2YWxlbnRSZXNvdXJjZXNTdGF0ZW1lbnQ7
CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBt
X2NvdW50UHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudDsKKyAg
ICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fY291
bnRQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uU3RhdGVtZW50OworICAg
IG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9nZXRS
ZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQ7CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2dldEFsbERvbWFpbnNTdGF0ZW1lbnQ7
CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBt
X2RvbWFpblN0cmluZ0Zyb21Eb21haW5JRFN0YXRlbWVudDsKKyAgICBtdXRhYmxlIHN0ZDo6dW5p
cXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fZ2V0QWxsU3ViU3RhdGlzdGljc1N0
YXRlbWVudDsKKyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0
ZW1lbnQ+IG1fc3RvcmFnZUFjY2Vzc0V4aXN0c1N0YXRlbWVudDsKKyAgICBtdXRhYmxlIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fZ2V0TW9zdFJlY2VudGx5VXBk
YXRlZFRpbWVzdGFtcFN0YXRlbWVudDsKKyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fbGlua0RlY29yYXRpb25FeGlzdHNTdGF0ZW1lbnQ7Cisg
ICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX3Nj
cmlwdExvYWRFeGlzdHNTdGF0ZW1lbnQ7CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX3N1YkZyYW1lRXhpc3RzU3RhdGVtZW50OworICAgIG11
dGFibGUgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9zdWJSZXNv
dXJjZUV4aXN0c1N0YXRlbWVudDsKKyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpTUUxpdGVTdGF0ZW1lbnQ+IG1fdW5pcXVlUmVkaXJlY3RFeGlzdHNTdGF0ZW1lbnQ7CisgICAg
bXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX29ic2Vy
dmVkRG9tYWluc0V4aXN0c1N0YXRlbWVudDsKKyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fcmVtb3ZlQWxsRGF0YVN0YXRlbWVudDsKICAgICBQ
QUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKICAgICBib29sIG1faXNOZXdSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VGaWxlIHsgZmFsc2UgfTsKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399774</attachid>
            <date>2020-05-19 15:35:36 -0700</date>
            <delta_ts>2020-05-19 15:55:53 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-211929-20200519153535.patch</filename>
            <type>text/plain</type>
            <size>81892</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNzY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDcxNmExZDI0Nzg1ZTE5NWRm
MmNiMGMxYjM2MTFjMTNhNjhjYzU0YzYuLjRmODM0ZDZlNTA3YThiYzY1YThhNTdiNDJjN2MyNTEy
YWI2Mzc5MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMjAtMDUtMTkgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgSVRQIGRhdGFiYXNl
IHNob3VsZCBmaW5hbGl6ZSBhbGwgcHJlcGFyZWQgc3RhdGVtZW50cyBiZWZvcmUgY2xvc2luZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExOTI5Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MzI0Njk0NT4KKworICAgICAgICBSZXZpZXdlZCBieSBK
b2huIFdpbGFuZGVyLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYmVoYXZpb3IgY29uZmlybWVk
IGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgIENvbnZlcnQgYWxsIFNRTGl0ZSBzdGF0ZW1l
bnQgb2JqZWN0cyB0byBiZSB1bmlxdWUgcG9pbnRlcnMgdG8gYmV0dGVyCisgICAgICAgIG1hbmFn
ZSB0aGUgbGlmZXRpbWUgb2YgZWFjaCBzdGF0ZW1lbnQgb2JqZWN0LiBPbmx5IGluaXRpYWxpemUg
YW5kCisgICAgICAgIHByZXBhcmUgYW4gb2JqZWN0IHdoZW4gaXQgaXMgbmVlZGVkIGluc3RlYWQg
b2YgcHJlcGFyaW5nIGFsbCBvYmplY3RzCisgICAgICAgIGF0IG9uY2UuIFNldCBlYWNoIHN0YXRl
bWVudCB0byBudWxsIGJlZm9yZSBjbG9zaW5nIHRoZSBkYXRhYmFzZQorICAgICAgICBiZWNhdXNl
IH5TUUxpdGVTdGF0ZW1lbnQoKSB3aWxsIGZpbmFsaXplIHRoZSBzdGF0ZW1lbnQuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCByZW1vdmVzIGFsbCByZXNldCgpIGNvbW1hbmRzIG5vdyB0aGF0IHdlIGlu
aXRpYWxpemUKKyAgICAgICAgZWFjaCBzdGF0ZW1lbnQgdXNpbmcgU1FMaXRlU3RhdGVtZW50QXV0
b1Jlc2V0U2NvcGUuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OmNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OmdldFNjb3BlZFN0YXRlbWVudCBjb25zdCk6CisgICAgICAgIEZ1
bmN0aW9uIHRvIGluaXRpYWxpemUgYW5kIHByZXBhcmUgYSBzdGF0ZW1lbnQuCisKKyAgICAgICAg
KFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydERvbWFp
blJlbGF0aW9uc2hpcCk6CisgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgbm90IHVzZWQgYW5kIGNh
biBiZSBkZWxldGVkLgorCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpjaGVja0Zvck1pc3NpbmdUYWJsZXNJblNjaGVtYSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppc01pZ3JhdGlvbk5l
Y2Vzc2FyeSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpvcGVuQW5kVXBkYXRlU2NoZW1hSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViS2l0
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aXNFbXB0eSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkZXN0
cm95U3RhdGVtZW50cyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjppbnNlcnRPYnNlcnZlZERvbWFpbik6CisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZWxhdGlvbnNoaXBFeGlzdHMgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6ZG9tYWluSUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6bWVyZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWVyZ2VTdGF0aXN0aWMpOgorICAgICAgICAoV2ViS2l0
OjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnByZXBhcmVTdGF0ZW1lbnRzKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlLmg6CisgICAgICAgIFVwZGF0ZWQgYWxsIHN0YXRlbWVudCB2YXJpYWJsZXMg
dG8gZW5kIHdpdGggIlN0YXRlbWVudCIgdG8gZm9sbG93IHRoZQorICAgICAgICBlc3RhYmxpc2hl
ZCBwYXR0ZXJuLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmZsdXNoQW5kRGVzdHJveVBlcnNpc3RlbnRTdG9yZSk6CisK
IDIwMjAtMDUtMTUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBbaU9TIFNpbXVsYXRvcl0gVGVzdFdlYktpdEFQSS5fV0tEb3dubG9hZC5SZXN1
bWUgaXMgYSBmbGFreSBjcmFzaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKaW5kZXggMzFlOTE5OTg2NTg2MDAyMzFkNjRjYmMwNDkz
MDFjYzVjM2FmNWI0OC4uYzY1NGRkM2EyY2ZmZTg0NTg1YjNhYTVlNTMyYjc5YmFlMzJjZTI0NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmUuY3BwCkBAIC0yNzUsNDQgKzI3NSw2IEBAIHN0YXRpYyBjb25zdCBIYXNoTWFwPFN0cmluZywg
U3RyaW5nPiYgY3JlYXRlVGFibGVRdWVyaWVzKCkKIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZShXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUmIHN0b3JlLCBXb3JrUXVldWUmIHdvcmtRdWV1ZSwgU2hvdWxk
SW5jbHVkZUxvY2FsaG9zdCBzaG91bGRJbmNsdWRlTG9jYWxob3N0LCBjb25zdCBTdHJpbmcmIHN0
b3JhZ2VEaXJlY3RvcnlQYXRoLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgOiBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoc3RvcmUsIHdvcmtRdWV1ZSwgc2hvdWxkSW5jbHVkZUxv
Y2FsaG9zdCkKICAgICAsIG1fc3RvcmFnZURpcmVjdG9yeVBhdGgoc3RvcmFnZURpcmVjdG9yeVBh
dGggKyAiL29ic2VydmF0aW9ucy5kYiIpCi0gICAgLCBtX29ic2VydmVkRG9tYWluQ291bnQobV9k
YXRhYmFzZSwgb2JzZXJ2ZWREb21haW5Db3VudFF1ZXJ5KQotICAgICwgbV9pbnNlcnRPYnNlcnZl
ZERvbWFpblN0YXRlbWVudChtX2RhdGFiYXNlLCBpbnNlcnRPYnNlcnZlZERvbWFpblF1ZXJ5KQot
ICAgICwgbV9pbnNlcnRUb3BMZXZlbERvbWFpblN0YXRlbWVudChtX2RhdGFiYXNlLCBpbnNlcnRU
b3BMZXZlbERvbWFpblF1ZXJ5KQotICAgICwgbV9kb21haW5JREZyb21TdHJpbmdTdGF0ZW1lbnQo
bV9kYXRhYmFzZSwgZG9tYWluSURGcm9tU3RyaW5nUXVlcnkpCi0gICAgLCBtX3RvcEZyYW1lTGlu
a0RlY29yYXRpb25zRnJvbUV4aXN0cyhtX2RhdGFiYXNlLCB0b3BGcmFtZUxpbmtEZWNvcmF0aW9u
c0Zyb21FeGlzdHNRdWVyeSkKLSAgICAsIG1fdG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0
c0V4aXN0cyhtX2RhdGFiYXNlLCB0b3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRzRXhpc3Rz
UXVlcnkpCi0gICAgLCBtX3N1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbkV4aXN0cyhtX2RhdGFi
YXNlLCBzdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5FeGlzdHNRdWVyeSkKLSAgICAsIG1fc3Vi
cmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluRXhpc3RzKG1fZGF0YWJhc2UsIHN1YnJlc291cmNl
VW5kZXJUb3BGcmFtZURvbWFpbkV4aXN0c1F1ZXJ5KQotICAgICwgbV9zdWJyZXNvdXJjZVVuaXF1
ZVJlZGlyZWN0c1RvRXhpc3RzKG1fZGF0YWJhc2UsIHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3Rz
VG9FeGlzdHNRdWVyeSkKLSAgICAsIG1fbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblN0YXRlbWVu
dChtX2RhdGFiYXNlLCBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uUXVlcnkpCi0gICAgLCBtX3Vw
ZGF0ZUxhc3RTZWVuU3RhdGVtZW50KG1fZGF0YWJhc2UsIHVwZGF0ZUxhc3RTZWVuUXVlcnkpCi0g
ICAgLCBtX3VwZGF0ZURhdGFSZWNvcmRzUmVtb3ZlZFN0YXRlbWVudChtX2RhdGFiYXNlLCB1cGRh
dGVEYXRhUmVjb3Jkc1JlbW92ZWRRdWVyeSkKLSAgICAsIG1fdXBkYXRlUHJldmFsZW50UmVzb3Vy
Y2VTdGF0ZW1lbnQobV9kYXRhYmFzZSwgdXBkYXRlUHJldmFsZW50UmVzb3VyY2VRdWVyeSkKLSAg
ICAsIG1faXNQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudChtX2RhdGFiYXNlLCBpc1ByZXZhbGVu
dFJlc291cmNlUXVlcnkpCi0gICAgLCBtX3VwZGF0ZVZlcnlQcmV2YWxlbnRSZXNvdXJjZVN0YXRl
bWVudChtX2RhdGFiYXNlLCB1cGRhdGVWZXJ5UHJldmFsZW50UmVzb3VyY2VRdWVyeSkKLSAgICAs
IG1faXNWZXJ5UHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQobV9kYXRhYmFzZSwgaXNWZXJ5UHJl
dmFsZW50UmVzb3VyY2VRdWVyeSkKLSAgICAsIG1fY2xlYXJQcmV2YWxlbnRSZXNvdXJjZVN0YXRl
bWVudChtX2RhdGFiYXNlLCBjbGVhclByZXZhbGVudFJlc291cmNlUXVlcnkpCi0gICAgLCBtX2hh
ZFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudChtX2RhdGFiYXNlLCBoYWRVc2VySW50ZXJhY3Rpb25R
dWVyeSkKLSAgICAsIG1fdXBkYXRlR3JhbmRmYXRoZXJlZFN0YXRlbWVudChtX2RhdGFiYXNlLCB1
cGRhdGVHcmFuZGZhdGhlcmVkUXVlcnkpCi0gICAgLCBtX3VwZGF0ZUlzU2NoZWR1bGVkRm9yQWxs
QnV0Q29va2llRGF0YVJlbW92YWxTdGF0ZW1lbnQobV9kYXRhYmFzZSwgdXBkYXRlSXNTY2hlZHVs
ZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbFF1ZXJ5KQotICAgICwgbV9pc0dyYW5kZmF0aGVy
ZWRTdGF0ZW1lbnQobV9kYXRhYmFzZSwgaXNHcmFuZGZhdGhlcmVkUXVlcnkpCi0gICAgLCBtX2Zp
bmRFeHBpcmVkVXNlckludGVyYWN0aW9uU3RhdGVtZW50KG1fZGF0YWJhc2UsIGZpbmRFeHBpcmVk
VXNlckludGVyYWN0aW9uUXVlcnkpCi0gICAgLCBtX2NvdW50UHJldmFsZW50UmVzb3VyY2VzU3Rh
dGVtZW50KG1fZGF0YWJhc2UsIGNvdW50UHJldmFsZW50UmVzb3VyY2VzUXVlcnkpCi0gICAgLCBt
X2NvdW50UHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudChtX2Rh
dGFiYXNlLCBjb3VudFByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb25RdWVyeSkK
LSAgICAsIG1fY291bnRQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uU3Rh
dGVtZW50KG1fZGF0YWJhc2UsIGNvdW50UHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRl
cmFjdGlvblF1ZXJ5KQotICAgICwgbV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1l
bnQobV9kYXRhYmFzZSwgZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lUXVlcnkpCi0gICAgLCBt
X2dldEFsbERvbWFpbnNTdGF0ZW1lbnQobV9kYXRhYmFzZSwgZ2V0QWxsRG9tYWluc1F1ZXJ5KQot
ICAgICwgbV9kb21haW5TdHJpbmdGcm9tRG9tYWluSURTdGF0ZW1lbnQobV9kYXRhYmFzZSwgZG9t
YWluU3RyaW5nRnJvbURvbWFpbklEUXVlcnkpCi0gICAgLCBtX2dldEFsbFN1YlN0YXRpc3RpY3NT
dGF0ZW1lbnQobV9kYXRhYmFzZSwgZ2V0QWxsU3ViU3RhdGlzdGljc1VuZGVyRG9tYWluUXVlcnkp
Ci0gICAgLCBtX3N0b3JhZ2VBY2Nlc3NFeGlzdHNTdGF0ZW1lbnQobV9kYXRhYmFzZSwgc3RvcmFn
ZUFjY2Vzc0V4aXN0c1F1ZXJ5KQotICAgICwgbV9nZXRNb3N0UmVjZW50bHlVcGRhdGVkVGltZXN0
YW1wU3RhdGVtZW50KG1fZGF0YWJhc2UsIGdldE1vc3RSZWNlbnRseVVwZGF0ZWRUaW1lc3RhbXBR
dWVyeSkKLSAgICAsIG1fbGlua0RlY29yYXRpb25FeGlzdHNTdGF0ZW1lbnQobV9kYXRhYmFzZSwg
bGlua0RlY29yYXRpb25FeGlzdHNRdWVyeSkKLSAgICAsIG1fc2NyaXB0TG9hZEV4aXN0c1N0YXRl
bWVudChtX2RhdGFiYXNlLCBzY3JpcHRMb2FkRXhpc3RzUXVlcnkpCi0gICAgLCBtX3N1YkZyYW1l
RXhpc3RzU3RhdGVtZW50KG1fZGF0YWJhc2UsIHN1YkZyYW1lRXhpc3RzUXVlcnkpCi0gICAgLCBt
X3N1YlJlc291cmNlRXhpc3RzU3RhdGVtZW50KG1fZGF0YWJhc2UsIHN1YlJlc291cmNlRXhpc3Rz
UXVlcnkpCi0gICAgLCBtX3VuaXF1ZVJlZGlyZWN0RXhpc3RzU3RhdGVtZW50KG1fZGF0YWJhc2Us
IHVuaXF1ZVJlZGlyZWN0RXhpc3RzUXVlcnkpCi0gICAgLCBtX29ic2VydmVkRG9tYWluc0V4aXN0
c1N0YXRlbWVudChtX2RhdGFiYXNlLCBvYnNlcnZlZERvbWFpbnNFeGlzdHNRdWVyeSkKLSAgICAs
IG1fcmVtb3ZlQWxsRGF0YVN0YXRlbWVudChtX2RhdGFiYXNlLCByZW1vdmVBbGxEYXRhUXVlcnkp
CiAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjpp
c01haW4oKSk7CkBAIC0zMjYsMTggKzI4OCwyNCBAQCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUoV2ViUmVzbwog
ICAgIGlmICghbV9kYXRhYmFzZS50dXJuT25JbmNyZW1lbnRhbEF1dG9WYWN1dW0oKSkKICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OnR1cm5PbkluY3JlbWVudGFsQXV0b1ZhY3V1bSBmYWlsZWQsIGVycm9y
IG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJv
ck1zZygpKTsKIAotICAgIGlmICghcHJlcGFyZVN0YXRlbWVudHMoKSkgewotICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6cHJlcGFyZVN0YXRlbWVudHMgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAlIiBQVUJM
SUNfTE9HX1NUUklORyAiLCBkYXRhYmFzZSBwYXRoOiAlIiBQVUJMSUNfTE9HX1NUUklORywgdGhp
cywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSwgbV9zdG9yYWdlRGlyZWN0b3J5UGF0aC51dGY4
KCkuZGF0YSgpKTsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KICAgICB3b3JrUXVldWUuZGlzcGF0Y2hBZnRlcig1X3MsIFt3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKCp0aGlzKV0gewogICAgICAgICBpZiAod2Vha1RoaXMpCiAgICAgICAgICAg
ICB3ZWFrVGhpcy0+Y2FsY3VsYXRlQW5kU3VibWl0VGVsZW1ldHJ5KCk7CiAgICAgfSk7CiB9CiAK
K1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp+UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmUoKQoreworICAgIGNsb3NlKCk7Cit9CisKK3ZvaWQgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsb3NlKCkKK3sKKyAgICBkZXN0cm95U3RhdGVt
ZW50cygpOworICAgIGlmIChtX2RhdGFiYXNlLmlzT3BlbigpKQorICAgICAgICBtX2RhdGFiYXNl
LmNsb3NlKCk7Cit9CisKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
Om9wZW5JVFBEYXRhYmFzZSgpCiB7CiAgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1f
c3RvcmFnZURpcmVjdG9yeVBhdGgpKQpAQCAtMzY2LDEyICszMzQsNiBAQCB2b2lkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpvcGVuSVRQRGF0YWJhc2UoKQogICAgIH0KIH0K
IAotc3RhdGljIHZvaWQgcmVzZXRTdGF0ZW1lbnQoU1FMaXRlU3RhdGVtZW50JiBzdGF0ZW1lbnQp
Ci17Ci0gICAgaW50IHJlc2V0UmVzdWx0ID0gc3RhdGVtZW50LnJlc2V0KCk7Ci0gICAgQVNTRVJU
X1VOVVNFRChyZXNldFJlc3VsdCwgcmVzZXRSZXN1bHQgPT0gU1FMSVRFX09LKTsKLX0KLQogT3B0
aW9uYWw8VmVjdG9yPFN0cmluZz4+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpjaGVja0Zvck1pc3NpbmdUYWJsZXNJblNjaGVtYSgpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4g
bWlzc2luZ1RhYmxlczsKQEAgLTM5MCw3ICszNTIsNiBAQCBPcHRpb25hbDxWZWN0b3I8U3RyaW5n
Pj4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNoZWNrRm9yTWlzc2luZ1Rh
YgogICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNoZWNrRm9yTWlzc2luZ1RhYmxlc0luU2NoZW1h
IHNjaGVtYSBpcyBtaXNzaW5nIHRhYmxlOiAlcyIsIHRoaXMsIHRhYmxlLmFzY2lpKCkuZGF0YSgp
KTsKICAgICAgICAgICAgIG1pc3NpbmdUYWJsZXMuYXBwZW5kKFN0cmluZyh0YWJsZSkpOwogICAg
ICAgICB9Ci0gICAgICAgIHJlc2V0U3RhdGVtZW50KHN0YXRlbWVudCk7CiAgICAgfQogICAgIGlm
IChtaXNzaW5nVGFibGVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
QEAgLTQyMSw3ICszODIsNyBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjppc01pZ3JhdGlvbk5lY2Vzc2FyeSgpCiAgICAgLy8gSWYgdGhlcmUgaXMgbm8gdGFibGUg
YXQgYWxsLCBvciB0aGVyZSBpcyBhbiBlcnJvciBleGVjdXRpbmcgdGhlIGZldGNoLCBkZWxldGUg
YW5kIHJlb3BlbiB0aGUgZmlsZS4KICAgICBpZiAoc3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVf
Uk9XKSB7CiAgICAgICAgIExPR19FUlJPUigiRXJyb3IgZXhlY3V0aW5nIHN0YXRlbWVudCB0byBm
ZXRjaCBzY2hlbWEuIik7Ci0gICAgICAgIG1fZGF0YWJhc2UuY2xvc2UoKTsKKyAgICAgICAgY2xv
c2UoKTsKICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3N0b3JhZ2VEaXJlY3RvcnlQ
YXRoKTsKICAgICAgICAgb3BlbklUUERhdGFiYXNlKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTUxOSw3ICs0ODAsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpvcGVuQW5kVXBkYXRlU2NoZW1hSWZOZWNlc3NhcnkoKQogICAgICAgICAvLyBJZiB0aGVy
ZSBpcyBubyBPYnNlcnZlZERvbWFpbnMgdGFibGUgYXQgYWxsLCBvciB0aGVyZSBpcyBhbiBlcnJv
ciBleGVjdXRpbmcgdGhlIGZldGNoLCBkZWxldGUgdGhlIGZpbGUuCiAgICAgICAgIGlmIChzdGF0
ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ST1cpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiRXJy
b3IgZXhlY3V0aW5nIHN0YXRlbWVudCB0byBmZXRjaCBzY2hlbWEgZm9yIHRoZSBPYnNlcnZlZCBE
b21haW5zIHRhYmxlLiIpOwotICAgICAgICAgICAgbV9kYXRhYmFzZS5jbG9zZSgpOworICAgICAg
ICAgICAgY2xvc2UoKTsKICAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9zdG9y
YWdlRGlyZWN0b3J5UGF0aCk7CiAgICAgICAgICAgICBvcGVuSVRQRGF0YWJhc2UoKTsKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTUzMywyNSArNDk0LDM4IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6Om9wZW5BbmRVcGRhdGVTY2hlbWFJZk5lY2Vzc2FyeSgpCiAg
ICAgLy8gSWYgdGhlIE9ic2VydmVkRG9tYWlucyBzY2hlbWEgaW4gdGhlIFJlc291cmNlTG9hZFN0
YXRpc3RpY3MgZGlyZWN0b3J5IGlzIG5vdCB0aGUgY3VycmVudCBzY2hlbWEsIGRlbGV0ZSB0aGUg
ZGF0YWJhc2UgZmlsZS4KICAgICAvLyBGSVhNRTogTWlncmF0ZSBvbGQgT2JzZXJ2ZWREb21haW5z
IGRhdGEgdG8gbmV3IHRhYmxlIHNjaGVtYS4KICAgICBpZiAoY3VycmVudFNjaGVtYSAhPSBPYnNl
cnZlZERvbWFpbnNUYWJsZVNjaGVtYVYxKCkgJiYgY3VycmVudFNjaGVtYSAhPSBPYnNlcnZlZERv
bWFpbnNUYWJsZVNjaGVtYVYxQWx0ZXJuYXRlKCkpIHsKLSAgICAgICAgbV9kYXRhYmFzZS5jbG9z
ZSgpOworICAgICAgICBjbG9zZSgpOwogICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1f
c3RvcmFnZURpcmVjdG9yeVBhdGgpOwogICAgICAgICBvcGVuSVRQRGF0YWJhc2UoKTsKICAgICB9
IGVsc2UKICAgICAgICAgbWlncmF0ZURhdGFUb05ld1RhYmxlc0lmTmVjZXNzYXJ5KCk7CiB9CiAK
K1NRTGl0ZVN0YXRlbWVudEF1dG9SZXNldFNjb3BlIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpzY29wZWRTdGF0ZW1lbnQoc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0
ZVN0YXRlbWVudD4mIHN0YXRlbWVudCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgU3RyaW5n
JiBsb2dTdHJpbmcpIGNvbnN0Cit7CisgICAgaWYgKCFzdGF0ZW1lbnQpIHsKKyAgICAgICAgc3Rh
dGVtZW50ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+KG1fZGF0YWJhc2Us
IHF1ZXJ5KTsKKyAgICAgICAgQVNTRVJUKG1fZGF0YWJhc2UuaXNPcGVuKCkpOworICAgICAgICBp
ZiAoc3RhdGVtZW50LT5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKSB7CisgICAgICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6JXMgZmFpbGVkIHRvIHByZXBhcmUgc3RhdGVtZW50LCBlcnJvciBtZXNzYWdlOiAl
IiBQVUJMSUNfTE9HX1NUUklORywgdGhpcywgbG9nU3RyaW5nLmFzY2lpKCkuZGF0YSgpLCBtX2Rh
dGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBTUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRT
Y29wZSB7IHN0YXRlbWVudC5nZXQoKSB9OworfQorCiBib29sIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjppc0VtcHR5KCkgY29uc3QKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKICAgICAKLSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIGlmIChtX29i
c2VydmVkRG9tYWluQ291bnQuc3RlcCgpID09IFNRTElURV9ST1cpCi0gICAgICAgIHJlc3VsdCA9
ICFtX29ic2VydmVkRG9tYWluQ291bnQuZ2V0Q29sdW1uSW50KDApOwotICAgIAotICAgIGludCBy
ZXNldFJlc3VsdCA9IG1fb2JzZXJ2ZWREb21haW5Db3VudC5yZXNldCgpOwotICAgIEFTU0VSVF9V
TlVTRUQocmVzZXRSZXN1bHQsIHJlc2V0UmVzdWx0ID09IFNRTElURV9PSyk7Ci0gICAgCi0gICAg
cmV0dXJuIHJlc3VsdDsKKyAgICBhdXRvIHNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0
YXRlbWVudChtX29ic2VydmVkRG9tYWluQ291bnRTdGF0ZW1lbnQsIG9ic2VydmVkRG9tYWluQ291
bnRRdWVyeSwgImlzRW1wdHkiX3MpOworICAgIGlmICghc2NvcGVkU3RhdGVtZW50CisgICAgICAg
IHx8IHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ST1cpIHsKKyAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OmlzRW1wdHkgZmFpbGVkIHRvIHN0ZXAsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0
ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiAh
c2NvcGVkU3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMCk7CiB9CiAKIGJvb2wgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNyZWF0ZVVuaXF1ZUluZGljZXMoKQpAQCAtNjQyLDU1
ICs2MTYsNDggQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y3Jl
YXRlU2NoZW1hKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJlcGFyZVN0YXRlbWVudHMoKQotewotICAgIEFTU0VSVCgh
UnVuTG9vcDo6aXNNYWluKCkpOwotICAgICAgICAKLSAgICBpZiAobV9vYnNlcnZlZERvbWFpbkNv
dW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9pbnNlcnRPYnNlcnZlZERv
bWFpblN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1faW5zZXJ0
VG9wTGV2ZWxEb21haW5TdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwotICAgICAgICB8
fCBtX2RvbWFpbklERnJvbVN0cmluZ1N0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCi0g
ICAgICAgIHx8IG1fc3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluRXhpc3RzLnByZXBhcmUoKSAh
PSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5F
eGlzdHMucHJlcGFyZSgpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX3N1YnJlc291cmNlVW5p
cXVlUmVkaXJlY3RzVG9FeGlzdHMucHJlcGFyZSgpICE9IFNRTElURV9PSwotICAgICAgICB8fCBt
X3VwZGF0ZUxhc3RTZWVuU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKLSAgICAgICAg
fHwgbV91cGRhdGVEYXRhUmVjb3Jkc1JlbW92ZWRTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElU
RV9PSwotICAgICAgICB8fCBtX21vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQucHJl
cGFyZSgpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX3VwZGF0ZVByZXZhbGVudFJlc291cmNl
U3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9pc1ByZXZhbGVu
dFJlc291cmNlU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV91
cGRhdGVWZXJ5UHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9P
SwotICAgICAgICB8fCBtX2lzVmVyeVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50LnByZXBhcmUo
KSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9jbGVhclByZXZhbGVudFJlc291cmNlU3RhdGVt
ZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9oYWRVc2VySW50ZXJhY3Rp
b25TdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX3VwZGF0ZUdy
YW5kZmF0aGVyZWRTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwotICAgICAgICB8fCBt
X3VwZGF0ZUlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWxTdGF0ZW1lbnQucHJl
cGFyZSgpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX2lzR3JhbmRmYXRoZXJlZFN0YXRlbWVu
dC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fZmluZEV4cGlyZWRVc2VySW50
ZXJhY3Rpb25TdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX3Rv
cEZyYW1lTGlua0RlY29yYXRpb25zRnJvbUV4aXN0cy5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCi0g
ICAgICAgIHx8IG1fdG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0c0V4aXN0cy5wcmVwYXJl
KCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fY291bnRQcmV2YWxlbnRSZXNvdXJjZXNTdGF0
ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX2NvdW50UHJldmFsZW50
UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRF
X09LCi0gICAgICAgIHx8IG1fY291bnRQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVy
YWN0aW9uU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9nZXRS
ZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwot
ICAgICAgICB8fCBtX2dldEFsbERvbWFpbnNTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9P
SwotICAgICAgICB8fCBtX2RvbWFpblN0cmluZ0Zyb21Eb21haW5JRFN0YXRlbWVudC5wcmVwYXJl
KCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fZ2V0QWxsU3ViU3RhdGlzdGljc1N0YXRlbWVu
dC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fc3RvcmFnZUFjY2Vzc0V4aXN0
c1N0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fZ2V0TW9zdFJl
Y2VudGx5VXBkYXRlZFRpbWVzdGFtcFN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCi0g
ICAgICAgIHx8IG1fbGlua0RlY29yYXRpb25FeGlzdHNTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNR
TElURV9PSwotICAgICAgICB8fCBtX3NjcmlwdExvYWRFeGlzdHNTdGF0ZW1lbnQucHJlcGFyZSgp
ICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX3N1YkZyYW1lRXhpc3RzU3RhdGVtZW50LnByZXBh
cmUoKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9zdWJSZXNvdXJjZUV4aXN0c1N0YXRlbWVu
dC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fdW5pcXVlUmVkaXJlY3RFeGlz
dHNTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX29ic2VydmVk
RG9tYWluc0V4aXN0c1N0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8
IG1fcmVtb3ZlQWxsRGF0YVN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCi0gICAgICAg
ICkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJlcGFyZVN0YXRlbWVudHMgZmFpbGVkIHRvIHBy
ZXBhcmUsIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFi
YXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKK3ZvaWQgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmRlc3Ryb3lTdGF0ZW1lbnRzKCkKK3sKKyAg
ICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIG1fb2JzZXJ2ZWREb21haW5Db3Vu
dFN0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVu
dCA9IG51bGxwdHI7CisgICAgbV9pbnNlcnRUb3BMZXZlbERvbWFpblN0YXRlbWVudCA9IG51bGxw
dHI7CisgICAgbV9kb21haW5JREZyb21TdHJpbmdTdGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1f
c3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluRXhpc3RzU3RhdGVtZW50ID0gbnVsbHB0cjsKKyAg
ICBtX3N1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbkV4aXN0c1N0YXRlbWVudCA9IG51bGxw
dHI7CisgICAgbV9zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvRXhpc3RzU3RhdGVtZW50ID0g
bnVsbHB0cjsKKyAgICBtX3VwZGF0ZUxhc3RTZWVuU3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBt
X3VwZGF0ZURhdGFSZWNvcmRzUmVtb3ZlZFN0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV9tb3N0
UmVjZW50VXNlckludGVyYWN0aW9uU3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX3VwZGF0ZVBy
ZXZhbGVudFJlc291cmNlU3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX2lzUHJldmFsZW50UmVz
b3VyY2VTdGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1fdXBkYXRlVmVyeVByZXZhbGVudFJlc291
cmNlU3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX2lzVmVyeVByZXZhbGVudFJlc291cmNlU3Rh
dGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX2NsZWFyUHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQg
PSBudWxscHRyOworICAgIG1faGFkVXNlckludGVyYWN0aW9uU3RhdGVtZW50ID0gbnVsbHB0cjsK
KyAgICBtX3VwZGF0ZUdyYW5kZmF0aGVyZWRTdGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1fdXBk
YXRlSXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbFN0YXRlbWVudCA9IG51bGxw
dHI7CisgICAgbV9pc0dyYW5kZmF0aGVyZWRTdGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1fZmlu
ZEV4cGlyZWRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1fdG9wRnJh
bWVMaW5rRGVjb3JhdGlvbnNGcm9tRXhpc3RzU3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX3Rv
cEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHNFeGlzdHNTdGF0ZW1lbnQgPSBudWxscHRyOwor
ICAgIG1fY291bnRQcmV2YWxlbnRSZXNvdXJjZXNTdGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1f
Y291bnRQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uU3RhdGVtZW50ID0gbnVs
bHB0cjsKKyAgICBtX2NvdW50UHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlv
blN0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVT
dGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1fZ2V0QWxsRG9tYWluc1N0YXRlbWVudCA9IG51bGxw
dHI7CisgICAgbV9kb21haW5TdHJpbmdGcm9tRG9tYWluSURTdGF0ZW1lbnQgPSBudWxscHRyOwor
ICAgIG1fZ2V0QWxsU3ViU3RhdGlzdGljc1N0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV9zdG9y
YWdlQWNjZXNzRXhpc3RzU3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX2dldE1vc3RSZWNlbnRs
eVVwZGF0ZWRUaW1lc3RhbXBTdGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1fbGlua0RlY29yYXRp
b25FeGlzdHNTdGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1fc2NyaXB0TG9hZEV4aXN0c1N0YXRl
bWVudCA9IG51bGxwdHI7CisgICAgbV9zdWJGcmFtZUV4aXN0c1N0YXRlbWVudCA9IG51bGxwdHI7
CisgICAgbV9zdWJSZXNvdXJjZUV4aXN0c1N0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV91bmlx
dWVSZWRpcmVjdEV4aXN0c1N0YXRlbWVudCA9IG51bGxwdHI7CisgICAgbV9vYnNlcnZlZERvbWFp
bnNFeGlzdHNTdGF0ZW1lbnQgPSBudWxscHRyOworICAgIG1fcmVtb3ZlQWxsRGF0YVN0YXRlbWVu
dCA9IG51bGxwdHI7CiB9CiAKIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6Omluc2VydE9ic2VydmVkRG9tYWluKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIGxv
YWRTdGF0aXN0aWNzKQpAQCAtNzAyLDk4ICs2NjksNjUgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5zZXJ0T2JzZXJ2ZWREb21haW4oY29uc3QgUmVzb3VyY2VM
b2EKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9Ci0KLSAgICBpZiAobV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC5iaW5kVGV4
dChSZWdpc3RyYWJsZURvbWFpbkluZGV4LCBsb2FkU3RhdGlzdGljcy5yZWdpc3RyYWJsZURvbWFp
bi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1faW5zZXJ0T2JzZXJ2ZWREb21h
aW5TdGF0ZW1lbnQuYmluZERvdWJsZShMYXN0U2VlbkluZGV4LCBsb2FkU3RhdGlzdGljcy5sYXN0
U2Vlbi5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpICE9IFNRTElURV9PSwotICAgICAgICB8
fCBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50LmJpbmRJbnQoSGFkVXNlckludGVyYWN0
aW9uSW5kZXgsIGxvYWRTdGF0aXN0aWNzLmhhZFVzZXJJbnRlcmFjdGlvbikgIT0gU1FMSVRFX09L
Ci0gICAgICAgIHx8IG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQuYmluZERvdWJsZShN
b3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZUluZGV4LCBsb2FkU3RhdGlzdGljcy5tb3N0UmVj
ZW50VXNlckludGVyYWN0aW9uVGltZS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpICE9IFNR
TElURV9PSwotICAgICAgICB8fCBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50LmJpbmRJ
bnQoR3JhbmRmYXRoZXJlZEluZGV4LCBsb2FkU3RhdGlzdGljcy5ncmFuZGZhdGhlcmVkKSAhPSBT
UUxJVEVfT0sKLSAgICAgICAgfHwgbV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC5iaW5k
SW50KElzUHJldmFsZW50SW5kZXgsIGxvYWRTdGF0aXN0aWNzLmlzUHJldmFsZW50UmVzb3VyY2Up
ICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50
LmJpbmRJbnQoSXNWZXJ5UHJldmFsZW50SW5kZXgsIGxvYWRTdGF0aXN0aWNzLmlzVmVyeVByZXZh
bGVudFJlc291cmNlKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9pbnNlcnRPYnNlcnZlZERv
bWFpblN0YXRlbWVudC5iaW5kSW50KERhdGFSZWNvcmRzUmVtb3ZlZEluZGV4LCBsb2FkU3RhdGlz
dGljcy5kYXRhUmVjb3Jkc1JlbW92ZWQpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX2luc2Vy
dE9ic2VydmVkRG9tYWluU3RhdGVtZW50LmJpbmRJbnQoVGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0
eUR1ZVRvVXNlckludGVyYWN0aW9uSW5kZXgsIGxvYWRTdGF0aXN0aWNzLnRpbWVzQWNjZXNzZWRB
c0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlvbikgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8
IG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQuYmluZEludChUaW1lc0FjY2Vzc2VkQXNG
aXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJSW5kZXgsIGxvYWRTdGF0aXN0aWNzLnRpbWVz
QWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUEkpICE9IFNRTElURV9PSwot
ICAgICAgICB8fCBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50LmJpbmRJbnQoSXNTY2hl
ZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbEluZGV4LCBsb2FkU3RhdGlzdGljcy5nb3RM
aW5rRGVjb3JhdGlvbkZyb21QcmV2YWxlbnRSZXNvdXJjZSkgIT0gU1FMSVRFX09LKSB7CisgICAg
YXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9pbnNlcnRPYnNl
cnZlZERvbWFpblN0YXRlbWVudCwgaW5zZXJ0T2JzZXJ2ZWREb21haW5RdWVyeSwgImluc2VydE9i
c2VydmVkRG9tYWluIl9zKTsKKyAgICBpZiAoIXNjb3BlZFN0YXRlbWVudAorICAgICAgICB8fCBz
Y29wZWRTdGF0ZW1lbnQtPmJpbmRUZXh0KFJlZ2lzdHJhYmxlRG9tYWluSW5kZXgsIGxvYWRTdGF0
aXN0aWNzLnJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAg
fHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kRG91YmxlKExhc3RTZWVuSW5kZXgsIGxvYWRTdGF0aXN0
aWNzLmxhc3RTZWVuLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSkgIT0gU1FMSVRFX09LCisg
ICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZEludChIYWRVc2VySW50ZXJhY3Rpb25JbmRl
eCwgbG9hZFN0YXRpc3RpY3MuaGFkVXNlckludGVyYWN0aW9uKSAhPSBTUUxJVEVfT0sKKyAgICAg
ICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kRG91YmxlKE1vc3RSZWNlbnRVc2VySW50ZXJhY3Rp
b25UaW1lSW5kZXgsIGxvYWRTdGF0aXN0aWNzLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1l
LnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHNj
b3BlZFN0YXRlbWVudC0+YmluZEludChHcmFuZGZhdGhlcmVkSW5kZXgsIGxvYWRTdGF0aXN0aWNz
LmdyYW5kZmF0aGVyZWQpICE9IFNRTElURV9PSworICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQt
PmJpbmRJbnQoSXNQcmV2YWxlbnRJbmRleCwgbG9hZFN0YXRpc3RpY3MuaXNQcmV2YWxlbnRSZXNv
dXJjZSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZEludChJ
c1ZlcnlQcmV2YWxlbnRJbmRleCwgbG9hZFN0YXRpc3RpY3MuaXNWZXJ5UHJldmFsZW50UmVzb3Vy
Y2UpICE9IFNRTElURV9PSworICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQoRGF0
YVJlY29yZHNSZW1vdmVkSW5kZXgsIGxvYWRTdGF0aXN0aWNzLmRhdGFSZWNvcmRzUmVtb3ZlZCkg
IT0gU1FMSVRFX09LCisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZEludChUaW1lc0Fj
Y2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9Vc2VySW50ZXJhY3Rpb25JbmRleCwgbG9hZFN0YXRpc3Rp
Y3MudGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uKSAhPSBTUUxJ
VEVfT0sKKyAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KFRpbWVzQWNjZXNzZWRB
c0ZpcnN0UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUElJbmRleCwgbG9hZFN0YXRpc3RpY3MudGlt
ZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvU3RvcmFnZUFjY2Vzc0FQSSkgIT0gU1FMSVRFX09L
CisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZEludChJc1NjaGVkdWxlZEZvckFsbEJ1
dENvb2tpZURhdGFSZW1vdmFsSW5kZXgsIGxvYWRTdGF0aXN0aWNzLmdvdExpbmtEZWNvcmF0aW9u
RnJvbVByZXZhbGVudFJlc291cmNlKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6Omluc2VydE9ic2VydmVkRG9tYWluIGZhaWxlZCB0byBiaW5kLCBl
cnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNn
KCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAotICAgIGlmIChtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50LnN0ZXAo
KSAhPSBTUUxJVEVfRE9ORSkgeworICAgIGlmIChzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBT
UUxJVEVfRE9ORSkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5zZXJ0T2JzZXJ2ZWREb21haW4g
ZmFpbGVkIHRvIGNvbW1pdCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2Rh
dGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0KLSAgICBpbnQgcmVzZXRSZXN1bHQgPSBtX2lu
c2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50LnJlc2V0KCk7Ci0gICAgQVNTRVJUX1VOVVNFRChy
ZXNldFJlc3VsdCwgcmVzZXRSZXN1bHQgPT0gU1FMSVRFX09LKTsKLQogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZWxhdGlv
bnNoaXBFeGlzdHMoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50JiBzdGF0ZW1lbnQsIE9wdGlvbmFs
PHVuc2lnbmVkPiBmaXJzdERvbWFpbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc2Vjb25k
RG9tYWluKSBjb25zdAorYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
cmVsYXRpb25zaGlwRXhpc3RzKFNRTGl0ZVN0YXRlbWVudEF1dG9SZXNldFNjb3BlJiBzdGF0ZW1l
bnQsIE9wdGlvbmFsPHVuc2lnbmVkPiBmaXJzdERvbWFpbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgc2Vjb25kRG9tYWluKSBjb25zdAogewogICAgIGlmICghZmlyc3REb21haW5JRCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OwogCi0gICAgaWYgKHN0YXRlbWVudC5iaW5kSW50KDEsICpmaXJzdERvbWFpbklEKSAhPSBTUUxJ
VEVfT0sKLSAgICAgICAgfHwgc3RhdGVtZW50LmJpbmRUZXh0KDIsIHNlY29uZERvbWFpbi5zdHJp
bmcoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IHN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRF
X1JPVykgeworICAgIGlmICghc3RhdGVtZW50CisgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZElu
dCgxLCAqZmlyc3REb21haW5JRCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHN0YXRlbWVudC0+
YmluZFRleHQoMiwgc2Vjb25kRG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAg
fHwgc3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX1JPVykgewogICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6cmVsYXRpb25zaGlwRXhpc3RzIGZhaWxlZCB0byBiaW5kLCBlcnJv
ciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkp
OwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KLSAgICBib29sIHJlbGF0aW9uc2hpcEV4aXN0cyA9ICEhc3RhdGVtZW50LmdldENvbHVt
bkludCgwKTsKLQotICAgIGludCByZXNldFJlc3VsdCA9IHN0YXRlbWVudC5yZXNldCgpOwotICAg
IEFTU0VSVF9VTlVTRUQocmVzZXRSZXN1bHQsIHJlc2V0UmVzdWx0ID09IFNRTElURV9PSyk7Ci0g
ICAgCi0gICAgcmV0dXJuIHJlbGF0aW9uc2hpcEV4aXN0czsKLX0KLQotYm9vbCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwKFdlYkNv
cmU6OlNRTGl0ZVN0YXRlbWVudCYgc3RhdGVtZW50LCB1bnNpZ25lZCBkb21haW5JRCwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lKQotewotICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOwotCi0gICAgaWYgKHN0YXRlbWVudC5iaW5kSW50KDEsIGRvbWFpbklEKSAhPSBTUUxJ
VEVfT0sKLSAgICAgICAgfHwgc3RhdGVtZW50LmJpbmRUZXh0KDIsIHRvcEZyYW1lLnN0cmluZygp
KSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgc3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfRE9O
RSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAi
JXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bV9pbnNlcnREb21haW5S
ZWxhdGlvbnNoaXBTdGF0ZW1lbnQgZmFpbGVkIHRvIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICV7cHJp
dmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaW50
IHJlc2V0UmVzdWx0ID0gc3RhdGVtZW50LnJlc2V0KCk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXNl
dFJlc3VsdCwgcmVzZXRSZXN1bHQgPT0gU1FMSVRFX09LKTsKLSAgICAKLSAgICByZXR1cm4gdHJ1
ZTsKKyAgICByZXR1cm4gISFzdGF0ZW1lbnQtPmdldENvbHVtbkludCgwKTsKIH0KIAogT3B0aW9u
YWw8dW5zaWduZWQ+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkb21haW5J
RChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKSBjb25zdAogewogICAgIEFTU0VSVCgh
UnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgdW5zaWduZWQgZG9tYWluSUQgPSAwOwotCi0gICAg
aWYgKG1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50LmJpbmRUZXh0KDEsIGRvbWFpbi5zdHJp
bmcoKSkgIT0gU1FMSVRFX09LKSB7CisgICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5z
Y29wZWRTdGF0ZW1lbnQobV9kb21haW5JREZyb21TdHJpbmdTdGF0ZW1lbnQsIGRvbWFpbklERnJv
bVN0cmluZ1F1ZXJ5LCAiZG9tYWluSUQiX3MpOworICAgIGlmICghc2NvcGVkU3RhdGVtZW50Cisg
ICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZFRleHQoMSwgZG9tYWluLnN0cmluZygpKSAh
PSBTUUxJVEVfT0spIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nl
c3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmRvbWFp
bklERnJvbVN0cmluZyBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywg
bV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiAgICAgfQogICAgIAotICAgIGlmIChtX2RvbWFpbklERnJvbVN0cmluZ1N0YXRlbWVudC5zdGVw
KCkgIT0gU1FMSVRFX1JPVykgewotICAgICAgICBpbnQgcmVzZXRSZXN1bHQgPSBtX2RvbWFpbklE
RnJvbVN0cmluZ1N0YXRlbWVudC5yZXNldCgpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc2V0
UmVzdWx0LCByZXNldFJlc3VsdCA9PSBTUUxJVEVfT0spOworICAgIGlmIChzY29wZWRTdGF0ZW1l
bnQtPnN0ZXAoKSAhPSBTUUxJVEVfUk9XKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owot
ICAgIH0KIAotICAgIGRvbWFpbklEID0gbV9kb21haW5JREZyb21TdHJpbmdTdGF0ZW1lbnQuZ2V0
Q29sdW1uSW50KDApOwotCi0gICAgaW50IHJlc2V0UmVzdWx0ID0gbV9kb21haW5JREZyb21TdHJp
bmdTdGF0ZW1lbnQucmVzZXQoKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc2V0UmVzdWx0LCByZXNl
dFJlc3VsdCA9PSBTUUxJVEVfT0spOwotICAgIAotICAgIHJldHVybiBkb21haW5JRDsKKyAgICBy
ZXR1cm4gc2NvcGVkU3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMCk7CiB9CiAKIFN0cmluZyBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZW5zdXJlQW5kTWFrZURvbWFpbkxpc3Qo
Y29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mIGRvbWFpbkxpc3QpCkBAIC04ODQsMTgg
KzgxOCwxOCBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwb3B1
bGF0ZUZyb21NZW1vcnlTdG9yZShjb25zdCBSZXNvdXJjZQogICAgICAgICBpbnNlcnREb21haW5S
ZWxhdGlvbnNoaXBzKHN0YXRpc3RpYy52YWx1ZSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6Om1lcmdlKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCYgY3Vy
cmVudCwgY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgb3RoZXIpCit2b2lkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptZXJnZShXZWJDb3JlOjpTUUxpdGVTdGF0ZW1l
bnQqIGN1cnJlbnQsIGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIG90aGVyKQogewogICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgYXV0byBjdXJyZW50UmVnaXN0cmFi
bGVEb21haW4gPSBjdXJyZW50LmdldENvbHVtblRleHQoUmVnaXN0cmFibGVEb21haW5JbmRleCk7
Ci0gICAgYXV0byBjdXJyZW50TGFzdFNlZW4gPSBjdXJyZW50LmdldENvbHVtbkRvdWJsZShMYXN0
U2VlbkluZGV4KTsKLSAgICBhdXRvIGN1cnJlbnRNb3N0UmVjZW50VXNlckludGVyYWN0aW9uID0g
Y3VycmVudC5nZXRDb2x1bW5Eb3VibGUoTW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWVJbmRl
eCk7Ci0gICAgYm9vbCBjdXJyZW50R3JhbmRmYXRoZXJlZCA9IGN1cnJlbnQuZ2V0Q29sdW1uSW50
KEdyYW5kZmF0aGVyZWRJbmRleCk7Ci0gICAgYm9vbCBjdXJyZW50SXNQcmV2YWxlbnQgPSBjdXJy
ZW50LmdldENvbHVtbkludChJc1ByZXZhbGVudEluZGV4KTsKLSAgICBib29sIGN1cnJlbnRJc1Zl
cnlQcmV2YWxlbnQgPSBjdXJyZW50LmdldENvbHVtbkludChJc1ZlcnlQcmV2YWxlbnRJbmRleCk7
Ci0gICAgdW5zaWduZWQgY3VycmVudERhdGFSZWNvcmRzUmVtb3ZlZCA9IGN1cnJlbnQuZ2V0Q29s
dW1uSW50KERhdGFSZWNvcmRzUmVtb3ZlZEluZGV4KTsKLSAgICBib29sIGN1cnJlbnRJc1NjaGVk
dWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsID0gY3VycmVudC5nZXRDb2x1bW5JbnQoSXNT
Y2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbEluZGV4KTsKKyAgICBhdXRvIGN1cnJl
bnRSZWdpc3RyYWJsZURvbWFpbiA9IGN1cnJlbnQtPmdldENvbHVtblRleHQoUmVnaXN0cmFibGVE
b21haW5JbmRleCk7CisgICAgYXV0byBjdXJyZW50TGFzdFNlZW4gPSBjdXJyZW50LT5nZXRDb2x1
bW5Eb3VibGUoTGFzdFNlZW5JbmRleCk7CisgICAgYXV0byBjdXJyZW50TW9zdFJlY2VudFVzZXJJ
bnRlcmFjdGlvbiA9IGN1cnJlbnQtPmdldENvbHVtbkRvdWJsZShNb3N0UmVjZW50VXNlckludGVy
YWN0aW9uVGltZUluZGV4KTsKKyAgICBib29sIGN1cnJlbnRHcmFuZGZhdGhlcmVkID0gY3VycmVu
dC0+Z2V0Q29sdW1uSW50KEdyYW5kZmF0aGVyZWRJbmRleCk7CisgICAgYm9vbCBjdXJyZW50SXNQ
cmV2YWxlbnQgPSBjdXJyZW50LT5nZXRDb2x1bW5JbnQoSXNQcmV2YWxlbnRJbmRleCk7CisgICAg
Ym9vbCBjdXJyZW50SXNWZXJ5UHJldmFsZW50ID0gY3VycmVudC0+Z2V0Q29sdW1uSW50KElzVmVy
eVByZXZhbGVudEluZGV4KTsKKyAgICB1bnNpZ25lZCBjdXJyZW50RGF0YVJlY29yZHNSZW1vdmVk
ID0gY3VycmVudC0+Z2V0Q29sdW1uSW50KERhdGFSZWNvcmRzUmVtb3ZlZEluZGV4KTsKKyAgICBi
b29sIGN1cnJlbnRJc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsID0gY3VycmVu
dC0+Z2V0Q29sdW1uSW50KElzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWxJbmRl
eCk7CiAKICAgICBBU1NFUlQoY3VycmVudFJlZ2lzdHJhYmxlRG9tYWluID09IG90aGVyLnJlZ2lz
dHJhYmxlRG9tYWluLnN0cmluZygpKTsKIApAQCAtOTI1LDE1ICs4NTksMTYgQEAgdm9pZCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWVyZ2VTdGF0aXN0aWMoY29uc3QgUmVz
b3VyY2VMb2FkU3RhdGkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAg
IGlmIChtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC5iaW5kVGV4dCgxLCBz
dGF0aXN0aWMucmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSwotICAgICAg
ICB8fCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC5zdGVwKCkgIT0gU1FM
SVRFX1JPVykgeworICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVt
ZW50KG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LCBnZXRSZXNvdXJjZURh
dGFCeURvbWFpbk5hbWVRdWVyeSwgIm1lcmdlU3RhdGlzdGljIl9zKTsKKyAgICBpZiAoIXNjb3Bl
ZFN0YXRlbWVudAorICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRUZXh0KDEsIHN0YXRp
c3RpYy5yZWdpc3RyYWJsZURvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8
IHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ST1cpIHsKICAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6Om1lcmdlU3RhdGlzdGljLiBTdGF0ZW1lbnQgZmFpbGVkIHRv
IGJpbmQgb3IgZG9tYWluIHdhcyBub3QgZm91bmQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1z
IiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbWVyZ2UobV9nZXRSZXNv
dXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQsIHN0YXRpc3RpYyk7Ci0gICAgcmVzZXRTdGF0
ZW1lbnQobV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQpOworICAgIG1lcmdl
KHNjb3BlZFN0YXRlbWVudC5nZXQoKSwgc3RhdGlzdGljKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWVyZ2VTdGF0aXN0aWNzKFZlY3RvcjxSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzPiYmIHN0YXRpc3RpY3MpCkBAIC05ODcsMTggKzkyMiwxOSBAQCBzdGF0
aWMgU1FMaXRlU3RhdGVtZW50IG1ha2VNZWRpYW5XaXRoVUlRdWVyeShTUUxpdGVEYXRhYmFzZSYg
ZGF0YWJhc2UpCiAKIFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJk
UGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5PiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6Z2V0VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5z
KHVuc2lnbmVkIHRoaXJkUGFydHlEb21haW5JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRo
aXJkUGFydHlEb21haW4pIGNvbnN0CiB7Ci0gICAgaWYgKG1fZ2V0QWxsU3ViU3RhdGlzdGljc1N0
YXRlbWVudC5iaW5kSW50KDEsIHRoaXJkUGFydHlEb21haW5JRCkgIT0gU1FMSVRFX09LCi0gICAg
ICAgIHx8IG1fZ2V0QWxsU3ViU3RhdGlzdGljc1N0YXRlbWVudC5iaW5kSW50KDIsIHRoaXJkUGFy
dHlEb21haW5JRCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fZ2V0QWxsU3ViU3RhdGlzdGlj
c1N0YXRlbWVudC5iaW5kSW50KDMsIHRoaXJkUGFydHlEb21haW5JRCkgIT0gU1FMSVRFX09LKSB7
CisgICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9nZXRB
bGxTdWJTdGF0aXN0aWNzU3RhdGVtZW50LCBnZXRBbGxTdWJTdGF0aXN0aWNzVW5kZXJEb21haW5R
dWVyeSwgImdldFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9tYWlucyJfcyk7
CisgICAgaWYgKCFzY29wZWRTdGF0ZW1lbnQKKyAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5i
aW5kSW50KDEsIHRoaXJkUGFydHlEb21haW5JRCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHNj
b3BlZFN0YXRlbWVudC0+YmluZEludCgyLCB0aGlyZFBhcnR5RG9tYWluSUQpICE9IFNRTElURV9P
SworICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRJbnQoMywgdGhpcmRQYXJ0eURvbWFp
bklEKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywg
IlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXRUaGlyZFBhcnR5RGF0YUZv
clNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbiwgZXJyb3IgbWVzc2FnZTogJSIgUFVCTElDX0xPR19T
VFJJTkcsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICB9CiAgICAgVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+IHRoaXJkUGFydHlEYXRhRm9y
U3BlY2lmaWNGaXJzdFBhcnR5RG9tYWluczsKLSAgICB3aGlsZSAobV9nZXRBbGxTdWJTdGF0aXN0
aWNzU3RhdGVtZW50LnN0ZXAoKSA9PSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIFJlZ2lzdHJhYmxl
RG9tYWluIGZpcnN0UGFydHlEb21haW4gPSBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3Jl
YXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKGdldERvbWFpblN0cmluZ0Zyb21Eb21haW5J
RChtX2dldEFsbFN1YlN0YXRpc3RpY3NTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDApKSk7CisgICAg
d2hpbGUgKHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpIHsKKyAgICAgICAg
UmVnaXN0cmFibGVEb21haW4gZmlyc3RQYXJ0eURvbWFpbiA9IFJlZ2lzdHJhYmxlRG9tYWluOjp1
bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoZ2V0RG9tYWluU3RyaW5n
RnJvbURvbWFpbklEKG1fZ2V0QWxsU3ViU3RhdGlzdGljc1N0YXRlbWVudC0+Z2V0Q29sdW1uSW50
KDApKSk7CiAgICAgICAgIHRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9tYWlu
cy5hcHBlbmRJZk5vdENvbnRhaW5zKFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhp
cmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHkgeyBmaXJzdFBhcnR5RG9tYWluLCBoYXNT
dG9yYWdlQWNjZXNzKGZpcnN0UGFydHlEb21haW4sIHRoaXJkUGFydHlEb21haW4pLCBnZXRNb3N0
UmVjZW50bHlVcGRhdGVkVGltZXN0YW1wKHRoaXJkUGFydHlEb21haW4sIGZpcnN0UGFydHlEb21h
aW4pIH0pOwogICAgIH0KLSAgICByZXNldFN0YXRlbWVudChtX2dldEFsbFN1YlN0YXRpc3RpY3NT
dGF0ZW1lbnQpOwogICAgIHJldHVybiB0aGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0
eURvbWFpbnM7CiB9CiAKQEAgLTExMjAsMzEgKzEwNTYsMzEgQEAgc3RhdGljIHVuc2lnbmVkIGdl
dE1lZGlhbk9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbihTUUxpdGVEYXRh
YmFzZSYKIAogdW5zaWduZWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omdl
dE51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzKCkgY29uc3QKIHsKLSAgICBhdXRvIHN0ZXBWYWx1
ZSA9IG1fY291bnRQcmV2YWxlbnRSZXNvdXJjZXNTdGF0ZW1lbnQuc3RlcCgpOworICAgIGF1dG8g
c2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fY291bnRQcmV2YWxlbnRS
ZXNvdXJjZXNTdGF0ZW1lbnQsIGNvdW50UHJldmFsZW50UmVzb3VyY2VzUXVlcnksICJnZXROdW1i
ZXJPZlByZXZhbGVudFJlc291cmNlcyJfcyk7CisgICAgaWYgKCFzY29wZWRTdGF0ZW1lbnQpCisg
ICAgICAgIHJldHVybiAwOworICAgIAorICAgIGF1dG8gc3RlcFZhbHVlID0gc2NvcGVkU3RhdGVt
ZW50LT5zdGVwKCk7CiAgICAgaWYgKHN0ZXBWYWx1ZSAhPSBTUUxJVEVfUk9XICYmIHN0ZXBWYWx1
ZSAhPSBTUUxJVEVfRE9ORSkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldE51bWJlck9mUHJldmFsZW50
UmVzb3VyY2VzIGZhaWxlZCB0byBzdGVwLCBlcnJvciBtZXNzYWdlOiAlIiBQVUJMSUNfTE9HX1NU
UklORywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgaWYgKHN0ZXBWYWx1ZSA9PSBT
UUxJVEVfUk9XKSB7Ci0gICAgICAgIHVuc2lnbmVkIHByZXZhbGVudFJlc291cmNlQ291bnQgPSBt
X2NvdW50UHJldmFsZW50UmVzb3VyY2VzU3RhdGVtZW50LmdldENvbHVtbkludCgwKTsKLSAgICAg
ICAgaWYgKHByZXZhbGVudFJlc291cmNlQ291bnQgPj0gbWluaW11bVByZXZhbGVudFJlc291cmNl
c0ZvclRlbGVtZXRyeSkgewotICAgICAgICAgICAgcmVzZXRTdGF0ZW1lbnQobV9jb3VudFByZXZh
bGVudFJlc291cmNlc1N0YXRlbWVudCk7CisgICAgICAgIHVuc2lnbmVkIHByZXZhbGVudFJlc291
cmNlQ291bnQgPSBzY29wZWRTdGF0ZW1lbnQtPmdldENvbHVtbkludCgwKTsKKyAgICAgICAgaWYg
KHByZXZhbGVudFJlc291cmNlQ291bnQgPj0gbWluaW11bVByZXZhbGVudFJlc291cmNlc0ZvclRl
bGVtZXRyeSkKICAgICAgICAgICAgIHJldHVybiBwcmV2YWxlbnRSZXNvdXJjZUNvdW50OwotICAg
ICAgICB9CiAgICAgfQotICAgIHJlc2V0U3RhdGVtZW50KG1fY291bnRQcmV2YWxlbnRSZXNvdXJj
ZXNTdGF0ZW1lbnQpOwogICAgIHJldHVybiAwOwogfQogCiB1bnNpZ25lZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0TnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRo
VUkoKSBjb25zdAogewotICAgIGlmIChtX2NvdW50UHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJ
bnRlcmFjdGlvblN0YXRlbWVudC5zdGVwKCkgPT0gU1FMSVRFX1JPVykgewotICAgICAgICBpbnQg
Y291bnQgPSBtX2NvdW50UHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvblN0YXRl
bWVudC5nZXRDb2x1bW5JbnQoMCk7Ci0gICAgICAgIHJlc2V0U3RhdGVtZW50KG1fY291bnRQcmV2
YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uU3RhdGVtZW50KTsKKyAgICBhdXRvIHNj
b3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX2NvdW50UHJldmFsZW50UmVz
b3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudCwgY291bnRQcmV2YWxlbnRSZXNvdXJj
ZXNXaXRoVXNlckludGVyYWN0aW9uUXVlcnksICJnZXROdW1iZXJPZlByZXZhbGVudFJlc291cmNl
c1dpdGhVSSJfcyk7CisgICAgaWYgKHNjb3BlZFN0YXRlbWVudCAmJiBzY29wZWRTdGF0ZW1lbnQt
PnN0ZXAoKSA9PSBTUUxJVEVfUk9XKSB7CisgICAgICAgIGludCBjb3VudCA9IHNjb3BlZFN0YXRl
bWVudC0+Z2V0Q29sdW1uSW50KDApOwogICAgICAgICByZXR1cm4gY291bnQ7CiAgICAgfQotICAg
IHJlc2V0U3RhdGVtZW50KG1fY291bnRQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0
aW9uU3RhdGVtZW50KTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMTI1OCwxMiArMTE5NCwxMSBA
QCBzdGF0aWMgdW5zaWduZWQgbWFrZVN0YXRpc3RpY1F1ZXJ5KFNRTGl0ZURhdGFiYXNlJiBkYXRh
YmFzZSwgUHJldmFsZW50UmVzb3VyY2VEYQogCiB1bnNpZ25lZCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6Z2V0TnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VUko
KSBjb25zdAogewotICAgIGlmIChtX2NvdW50UHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJ
bnRlcmFjdGlvblN0YXRlbWVudC5zdGVwKCkgPT0gU1FMSVRFX1JPVykgewotICAgICAgICBpbnQg
Y291bnQgPSBtX2NvdW50UHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvblN0
YXRlbWVudC5nZXRDb2x1bW5JbnQoMCk7Ci0gICAgICAgIHJlc2V0U3RhdGVtZW50KG1fY291bnRQ
cmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uU3RhdGVtZW50KTsKKyAgICBh
dXRvIHNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX2NvdW50UHJldmFs
ZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudCwgY291bnRQcmV2YWxl
bnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uUXVlcnksICJnZXROdW1iZXJPZlByZXZh
bGVudFJlc291cmNlc1dpdGhvdXRVSSJfcyk7CisgICAgaWYgKHNjb3BlZFN0YXRlbWVudCAmJiBz
Y29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKSB7CisgICAgICAgIGludCBjb3Vu
dCA9IG1fY291bnRQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uU3RhdGVt
ZW50LT5nZXRDb2x1bW5JbnQoMCk7CiAgICAgICAgIHJldHVybiBjb3VudDsKICAgICB9Ci0gICAg
cmVzZXRTdGF0ZW1lbnQobV9jb3VudFByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJh
Y3Rpb25TdGF0ZW1lbnQpOwogICAgIHJldHVybiAwOwogfQogCkBAIC0xNTE5LDcgKzE0NTQsOCBA
QCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzeW5jU3RvcmFnZUlt
bWVkaWF0ZWx5KCkKIAogYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIGNv
bnN0IFN1YkZyYW1lRG9tYWluJiBzdWJGcmFtZURvbWFpbikgY29uc3QKIHsKLSAgICByZXR1cm4g
cmVsYXRpb25zaGlwRXhpc3RzKG1fc3RvcmFnZUFjY2Vzc0V4aXN0c1N0YXRlbWVudCwgZG9tYWlu
SUQoc3ViRnJhbWVEb21haW4pLCB0b3BGcmFtZURvbWFpbik7CisgICAgYXV0byBzY29wZWRTdGF0
ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9zdG9yYWdlQWNjZXNzRXhpc3RzU3RhdGVt
ZW50LCBzdG9yYWdlQWNjZXNzRXhpc3RzUXVlcnksICJoYXNTdG9yYWdlQWNjZXNzIl9zKTsKKyAg
ICByZXR1cm4gcmVsYXRpb25zaGlwRXhpc3RzKHNjb3BlZFN0YXRlbWVudCwgZG9tYWluSUQoc3Vi
RnJhbWVEb21haW4pLCB0b3BGcmFtZURvbWFpbik7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21h
aW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRnJhbWVEb21haW4s
IE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAt
MTg0MSwxOCArMTc3NywxNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpjbGVhclRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG9TaW5jZVNhbQogdm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0VXNlckludGVyYWN0aW9uKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiBkb21haW4sIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBXYWxsVGlt
ZSBtb3N0UmVjZW50SW50ZXJhY3Rpb24pCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7Ci0KLSAgICBpZiAobV9tb3N0UmVjZW50VXNlckludGVyYWN0aW9uU3RhdGVtZW50LmJpbmRJ
bnQoMSwgaGFkVXNlckludGVyYWN0aW9uKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9tb3N0
UmVjZW50VXNlckludGVyYWN0aW9uU3RhdGVtZW50LmJpbmREb3VibGUoMiwgbW9zdFJlY2VudElu
dGVyYWN0aW9uLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSkgIT0gU1FMSVRFX09LCi0gICAg
ICAgIHx8IG1fbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudC5iaW5kVGV4dCgzLCBk
b21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX21vc3RSZWNlbnRVc2Vy
SW50ZXJhY3Rpb25TdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ET05FKSB7CisgICAgCisgICAg
YXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9tb3N0UmVjZW50
VXNlckludGVyYWN0aW9uU3RhdGVtZW50LCBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uUXVlcnks
ICJzZXRVc2VySW50ZXJhY3Rpb24iX3MpOworICAgIGlmICghc2NvcGVkU3RhdGVtZW50CisgICAg
ICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZEludCgxLCBoYWRVc2VySW50ZXJhY3Rpb24pICE9
IFNRTElURV9PSworICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmREb3VibGUoMiwgbW9z
dFJlY2VudEludGVyYWN0aW9uLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSkgIT0gU1FMSVRF
X09LCisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZFRleHQoMywgZG9tYWluLnN0cmlu
ZygpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgIT0g
U1FMSVRFX0RPTkUpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nl
c3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldFVz
ZXJJbnRlcmFjdGlvbiwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFi
YXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0KLSAgICBpbnQgcmVzZXRSZXN1bHQgPSBtX21vc3RSZWNlbnRV
c2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQucmVzZXQoKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc2V0
UmVzdWx0LCByZXNldFJlc3VsdCA9PSBTUUxJVEVfT0spOwogfQogCiB2b2lkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgVG9wRnJh
bWVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQpAQCAtMTkwMSwyNCArMTgzNiwyMCBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpjbGVhclVzZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJsZQog
Ym9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzSGFkVXNlckludGVy
YWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIE9wZXJhdGluZ0RhdGVzV2lu
ZG93IG9wZXJhdGluZ0RhdGVzV2luZG93KQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwotCi0gICAgaWYgKG1faGFkVXNlckludGVyYWN0aW9uU3RhdGVtZW50LmJpbmRUZXh0KDEs
IGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1faGFkVXNlckludGVy
YWN0aW9uU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7CisgICAgCisgICAgYXV0byBz
Y29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9oYWRVc2VySW50ZXJhY3Rp
b25TdGF0ZW1lbnQsIGhhZFVzZXJJbnRlcmFjdGlvblF1ZXJ5LCAiaGFzSGFkVXNlckludGVyYWN0
aW9uIl9zKTsKKyAgICBpZiAoIXNjb3BlZFN0YXRlbWVudAorICAgICAgICB8fCBzY29wZWRTdGF0
ZW1lbnQtPmJpbmRUZXh0KDEsIGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCisgICAgICAg
IHx8IHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ST1cpIHsKICAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1faGFkVXNlckludGVyYWN0aW9uU3RhdGVtZW50IGZh
aWxlZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RF
cnJvck1zZygpKTsKLQotICAgICAgICBpbnQgcmVzZXRSZXN1bHQgPSBtX2hhZFVzZXJJbnRlcmFj
dGlvblN0YXRlbWVudC5yZXNldCgpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc2V0UmVzdWx0
LCByZXNldFJlc3VsdCA9PSBTUUxJVEVfT0spOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCi0gICAgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24gPSAhIW1faGFkVXNlckludGVyYWN0aW9u
U3RhdGVtZW50LmdldENvbHVtbkludCgwKTsKLSAgICBpZiAoIWhhZFVzZXJJbnRlcmFjdGlvbikg
ewotICAgICAgICBpbnQgcmVzZXRSZXN1bHQgPSBtX2hhZFVzZXJJbnRlcmFjdGlvblN0YXRlbWVu
dC5yZXNldCgpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc2V0UmVzdWx0LCByZXNldFJlc3Vs
dCA9PSBTUUxJVEVfT0spOworICAgIGJvb2wgaGFkVXNlckludGVyYWN0aW9uID0gISFzY29wZWRT
dGF0ZW1lbnQtPmdldENvbHVtbkludCgwKTsKKyAgICBpZiAoIWhhZFVzZXJJbnRlcmFjdGlvbikK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KICAgICAKLSAgICBXYWxsVGltZSBtb3N0UmVj
ZW50VXNlckludGVyYWN0aW9uVGltZSA9IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhtX2hhZFVz
ZXJJbnRlcmFjdGlvblN0YXRlbWVudC5nZXRDb2x1bW5Eb3VibGUoMSkpOworICAgIFdhbGxUaW1l
IG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lID0gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRz
KHNjb3BlZFN0YXRlbWVudC0+Z2V0Q29sdW1uRG91YmxlKDEpKTsKIAogICAgIGlmIChoYXNTdGF0
aXN0aWNzRXhwaXJlZChtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSwgb3BlcmF0aW5nRGF0
ZXNXaW5kb3cpKSB7CiAgICAgICAgIC8vIERyb3AgcHJpdmFjeSBzZW5zaXRpdmUgZGF0YSBiZWNh
dXNlIHdlIG5vIGxvbmdlciBuZWVkIGl0LgpAQCAtMTkyNywxMCArMTg1OCw2IEBAIGJvb2wgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc0hhZFVzZXJJbnRlcmFjdGlvbihj
b25zdCBSZWdpc3RyYWJsCiAgICAgICAgIGNsZWFyVXNlckludGVyYWN0aW9uKGRvbWFpbiwgW10g
eyB9KTsKICAgICAgICAgaGFkVXNlckludGVyYWN0aW9uID0gZmFsc2U7CiAgICAgfQotICAgIAot
ICAgIGludCByZXNldFJlc3VsdCA9IG1faGFkVXNlckludGVyYWN0aW9uU3RhdGVtZW50LnJlc2V0
KCk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXNldFJlc3VsdCwgcmVzZXRSZXN1bHQgPT0gU1FMSVRF
X09LKTsKLQogICAgIHJldHVybiBoYWRVc2VySW50ZXJhY3Rpb247CiB9CiAKQEAgLTE5NDAsMjgg
KzE4NjcsMjYgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0
UHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFibGUKICAgICBpZiAoc2hvdWxkU2tpcChk
b21haW4pKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV91cGRhdGVQcmV2YWxlbnRSZXNv
dXJjZVN0YXRlbWVudC5iaW5kSW50KDEsIDEpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX3Vw
ZGF0ZVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50LmJpbmRUZXh0KDIsIGRvbWFpbi5zdHJpbmco
KSkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fdXBkYXRlUHJldmFsZW50UmVzb3VyY2VTdGF0
ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ET05FKSB7CisgICAgYXV0byBzY29wZWRVcGRhdGVQcmV2
YWxlbnRSZXNvdXJjZVN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX3VwZGF0ZVBy
ZXZhbGVudFJlc291cmNlU3RhdGVtZW50LCB1cGRhdGVQcmV2YWxlbnRSZXNvdXJjZVF1ZXJ5LCAi
c2V0UHJldmFsZW50UmVzb3VyY2UiX3MpOworICAgIGlmICghc2NvcGVkVXBkYXRlUHJldmFsZW50
UmVzb3VyY2VTdGF0ZW1lbnQKKyAgICAgICAgfHwgc2NvcGVkVXBkYXRlUHJldmFsZW50UmVzb3Vy
Y2VTdGF0ZW1lbnQtPmJpbmRJbnQoMSwgMSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHNjb3Bl
ZFVwZGF0ZVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50LT5iaW5kVGV4dCgyLCBkb21haW4uc3Ry
aW5nKCkpICE9IFNRTElURV9PSworICAgICAgICB8fCBzY29wZWRVcGRhdGVQcmV2YWxlbnRSZXNv
dXJjZVN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7CiAgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjptX3VwZGF0ZVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50IGZh
aWxlZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RF
cnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgCi0gICAgaW50IHJlc2V0UmVzdWx0ID0gbV91cGRhdGVQcmV2YWxlbnRS
ZXNvdXJjZVN0YXRlbWVudC5yZXNldCgpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzZXRSZXN1bHQs
IHJlc2V0UmVzdWx0ID09IFNRTElURV9PSyk7CiAKKyAgICBhdXRvIHNjb3BlZFVwZGF0ZVZlcnlQ
cmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX3VwZGF0
ZVZlcnlQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudCwgdXBkYXRlVmVyeVByZXZhbGVudFJlc291
cmNlUXVlcnksICJzZXRQcmV2YWxlbnRSZXNvdXJjZSB1cGRhdGVWZXJ5UHJldmFsZW50UmVzb3Vy
Y2UiX3MpOwogICAgIGlmIChuZXdQcmV2YWxlbmNlID09IFJlc291cmNlTG9hZFByZXZhbGVuY2U6
OlZlcnlIaWdoKSB7Ci0gICAgICAgIGlmIChtX3VwZGF0ZVZlcnlQcmV2YWxlbnRSZXNvdXJjZVN0
YXRlbWVudC5iaW5kSW50KDEsIDEpICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwgbV91cGRh
dGVWZXJ5UHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQuYmluZFRleHQoMiwgZG9tYWluLnN0cmlu
ZygpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IG1fdXBkYXRlVmVyeVByZXZhbGVudFJl
c291cmNlU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgeworICAgICAgICBpZiAoIXNj
b3BlZFVwZGF0ZVZlcnlQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudAorICAgICAgICAgICAgfHwg
c2NvcGVkVXBkYXRlVmVyeVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50LT5iaW5kSW50KDEsIDEp
ICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgc2NvcGVkVXBkYXRlVmVyeVByZXZhbGVudFJl
c291cmNlU3RhdGVtZW50LT5iaW5kVGV4dCgyLCBkb21haW4uc3RyaW5nKCkpICE9IFNRTElURV9P
SworICAgICAgICAgICAgfHwgc2NvcGVkVXBkYXRlVmVyeVByZXZhbGVudFJlc291cmNlU3RhdGVt
ZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjptX3VwZGF0ZVZlcnlQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudCBmYWls
ZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJy
b3JNc2coKSk7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQotCi0gICAgICAgIGludCByZXNldFJlc3VsdCA9IG1fdXBkYXRl
VmVyeVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50LnJlc2V0KCk7Ci0gICAgICAgIEFTU0VSVF9V
TlVTRUQocmVzZXRSZXN1bHQsIHJlc2V0UmVzdWx0ID09IFNRTElURV9PSyk7CiAgICAgfQogCiAg
ICAgU3RkU2V0PHVuc2lnbmVkPiBub25QcmV2YWxlbnRSZWRpcmVjdGlvblNvdXJjZXM7CkBAIC0x
OTkyLDkgKzE5MTcsMTMgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6ZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoQ29tcGxldGlvbkgKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAorICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVt
ZW50KG1fZ2V0QWxsRG9tYWluc1N0YXRlbWVudCwgZ2V0QWxsRG9tYWluc1F1ZXJ5LCAiZHVtcFJl
c291cmNlTG9hZFN0YXRpc3RpY3MiX3MpOworICAgIGlmICghc2NvcGVkU3RhdGVtZW50KQorICAg
ICAgICByZXR1cm47CisgICAgCiAgICAgVmVjdG9yPFN0cmluZz4gZG9tYWluczsKLSAgICB3aGls
ZSAobV9nZXRBbGxEb21haW5zU3RhdGVtZW50LnN0ZXAoKSA9PSBTUUxJVEVfUk9XKQotICAgICAg
ICBkb21haW5zLmFwcGVuZChtX2dldEFsbERvbWFpbnNTdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgw
KSk7CisgICAgd2hpbGUgKHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpCisg
ICAgICAgIGRvbWFpbnMuYXBwZW5kKHNjb3BlZFN0YXRlbWVudC0+Z2V0Q29sdW1uVGV4dCgwKSk7
CiAgICAgc3RkOjpzb3J0KGRvbWFpbnMuYmVnaW4oKSwgZG9tYWlucy5lbmQoKSwgV1RGOjpjb2Rl
UG9pbnRDb21wYXJlTGVzc1RoYW4pOwogCiAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7CkBAIC0y
MDEwLDI4ICsxOTM5LDIwIEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OmR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKENvbXBsZXRpb25ICiAgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKCdcbicpOwogICAgICAgICB9CiAgICAgfQotICAgIHJlc2V0U3RhdGVtZW50
KG1fZ2V0QWxsRG9tYWluc1N0YXRlbWVudCk7CiAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0
LnRvU3RyaW5nKCkpOwogfQogCi1ib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpwcmVkaWNhdGVWYWx1ZUZvckRvbWFpbihXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQmIHBy
ZWRpY2F0ZVN0YXRlbWVudCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikgY29uc3QK
K2Jvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnByZWRpY2F0ZVZhbHVl
Rm9yRG9tYWluKFNRTGl0ZVN0YXRlbWVudEF1dG9SZXNldFNjb3BlJiBwcmVkaWNhdGVTdGF0ZW1l
bnQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pIGNvbnN0CiB7CiAgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgCi0gICAgaWYgKHByZWRpY2F0ZVN0YXRlbWVudC5i
aW5kVGV4dCgxLCBkb21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSwotICAgICAgICB8fCBwcmVk
aWNhdGVTdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ST1cpIHsKLQotICAgICAgICBpbnQgcmVz
ZXRSZXN1bHQgPSBwcmVkaWNhdGVTdGF0ZW1lbnQucmVzZXQoKTsKLSAgICAgICAgQVNTRVJUX1VO
VVNFRChyZXNldFJlc3VsdCwgcmVzZXRSZXN1bHQgPT0gU1FMSVRFX09LKTsKIAorICAgIGlmICgh
cHJlZGljYXRlU3RhdGVtZW50CisgICAgICAgIHx8IHByZWRpY2F0ZVN0YXRlbWVudC0+YmluZFRl
eHQoMSwgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgcHJlZGljYXRl
U3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX1JPVykgewogICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6cHJlZGljYXRlVmFsdWVGb3JEb21haW4gZmFpbGVkIHRvIGJpbmQsIGVy
cm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2co
KSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0KLSAgICBib29sIHJlc3VsdCA9ICEh
cHJlZGljYXRlU3RhdGVtZW50LmdldENvbHVtbkludCgwKTsKLSAgICBpbnQgcmVzZXRSZXN1bHQg
PSBwcmVkaWNhdGVTdGF0ZW1lbnQucmVzZXQoKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc2V0UmVz
dWx0LCByZXNldFJlc3VsdCA9PSBTUUxJVEVfT0spOwotICAgIHJldHVybiByZXN1bHQ7CisgICAg
cmV0dXJuICEhcHJlZGljYXRlU3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMCk7CiB9CiAKIGJvb2wg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmlzUHJldmFsZW50UmVzb3VyY2Uo
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikgY29uc3QKQEAgLTIwNDEsNyArMTk2Miw4
IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmlzUHJldmFsZW50
UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFibGVECiAgICAgaWYgKHNob3VsZFNraXAoZG9tYWluKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIHByZWRpY2F0ZVZhbHVlRm9yRG9t
YWluKG1faXNQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudCwgZG9tYWluKTsKKyAgICBhdXRvIHNj
b3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX2lzUHJldmFsZW50UmVzb3Vy
Y2VTdGF0ZW1lbnQsIGlzUHJldmFsZW50UmVzb3VyY2VRdWVyeSwgImlzUHJldmFsZW50UmVzb3Vy
Y2UiX3MpOworICAgIHJldHVybiBwcmVkaWNhdGVWYWx1ZUZvckRvbWFpbihzY29wZWRTdGF0ZW1l
bnQsIGRvbWFpbik7CiB9CiAKIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OmlzVmVyeVByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21h
aW4pIGNvbnN0CkBAIC0yMDUxLDI4ICsxOTczLDMyIEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OmlzVmVyeVByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJh
CiAgICAgaWYgKHNob3VsZFNraXAoZG9tYWluKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgcmV0dXJuIHByZWRpY2F0ZVZhbHVlRm9yRG9tYWluKG1faXNWZXJ5UHJldmFsZW50UmVzb3Vy
Y2VTdGF0ZW1lbnQsIGRvbWFpbik7CisgICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5z
Y29wZWRTdGF0ZW1lbnQobV9pc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudCwgaXNWZXJ5
UHJldmFsZW50UmVzb3VyY2VRdWVyeSwgImlzVmVyeVByZXZhbGVudFJlc291cmNlIl9zKTsKKyAg
ICByZXR1cm4gcHJlZGljYXRlVmFsdWVGb3JEb21haW4oc2NvcGVkU3RhdGVtZW50LCBkb21haW4p
OwogfQogCiBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppc1JlZ2lz
dGVyZWRBc1N1YnJlc291cmNlVW5kZXIoY29uc3QgU3ViUmVzb3VyY2VEb21haW4mIHN1YnJlc291
cmNlRG9tYWluLCBjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRnJhbWVEb21haW4pIGNvbnN0CiB7
CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICByZXR1cm4gcmVsYXRpb25z
aGlwRXhpc3RzKG1fc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluRXhpc3RzLCBkb21haW5J
RChzdWJyZXNvdXJjZURvbWFpbiksIHRvcEZyYW1lRG9tYWluKTsKKyAgICBhdXRvIHNjb3BlZFN0
YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX3N1YnJlc291cmNlVW5kZXJUb3BGcmFt
ZURvbWFpbkV4aXN0c1N0YXRlbWVudCwgc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluRXhp
c3RzUXVlcnksICJpc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIiX3MpOworICAgIHJldHVy
biByZWxhdGlvbnNoaXBFeGlzdHMoc2NvcGVkU3RhdGVtZW50LCBkb21haW5JRChzdWJyZXNvdXJj
ZURvbWFpbiksIHRvcEZyYW1lRG9tYWluKTsKIH0KIAogYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6aXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKGNvbnN0IFN1YkZy
YW1lRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgVG9wRnJhbWVEb21haW4mIHRvcEZyYW1l
RG9tYWluKSBjb25zdAogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAg
cmV0dXJuIHJlbGF0aW9uc2hpcEV4aXN0cyhtX3N1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbkV4
aXN0cywgZG9tYWluSUQoc3ViRnJhbWVEb21haW4pLCB0b3BGcmFtZURvbWFpbik7CisgICAgCisg
ICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9zdWJmcmFt
ZVVuZGVyVG9wRnJhbWVEb21haW5FeGlzdHNTdGF0ZW1lbnQsIHN1YmZyYW1lVW5kZXJUb3BGcmFt
ZURvbWFpbkV4aXN0c1F1ZXJ5LCAiaXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyIl9zKTsKKyAg
ICByZXR1cm4gcmVsYXRpb25zaGlwRXhpc3RzKHNjb3BlZFN0YXRlbWVudCwgZG9tYWluSUQoc3Vi
RnJhbWVEb21haW4pLCB0b3BGcmFtZURvbWFpbik7CiB9CiAKIGJvb2wgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OmlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbyhjb25zdCBS
ZWRpcmVjdGVkRnJvbURvbWFpbiYgcmVkaXJlY3RlZEZyb21Eb21haW4sIGNvbnN0IFJlZGlyZWN0
ZWRUb0RvbWFpbiYgcmVkaXJlY3RlZFRvRG9tYWluKSBjb25zdAogewogICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOwogCi0gICAgcmV0dXJuIHJlbGF0aW9uc2hpcEV4aXN0cyhtX3N1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RzVG9FeGlzdHMsIGRvbWFpbklEKHJlZGlyZWN0ZWRGcm9tRG9t
YWluKSwgcmVkaXJlY3RlZFRvRG9tYWluKTsKKyAgICBhdXRvIHNjb3BlZFN0YXRlbWVudCA9IHRo
aXMtPnNjb3BlZFN0YXRlbWVudChtX3N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG9FeGlzdHNT
dGF0ZW1lbnQsIHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG9FeGlzdHNRdWVyeSwgImlzUmVn
aXN0ZXJlZEFzUmVkaXJlY3RpbmdUbyJfcyk7CisgICAgcmV0dXJuIHJlbGF0aW9uc2hpcEV4aXN0
cyhzY29wZWRTdGF0ZW1lbnQsIGRvbWFpbklEKHJlZGlyZWN0ZWRGcm9tRG9tYWluKSwgcmVkaXJl
Y3RlZFRvRG9tYWluKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9t
YWluKQpAQCAtMjA4NCwxNSArMjAxMCwxNiBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpjbGVhclByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYgogICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZSB3
YXMgbm90IGNvbXBsZXRlZCBkdWUgdG8gZmFpbGVkIGluc2VydCBhdHRlbXB0IiwgdGhpcyk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKG1fY2xlYXJQcmV2YWxlbnRSZXNvdXJjZVN0
YXRlbWVudC5iaW5kVGV4dCgxLCBkb21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSwotICAgICAg
ICB8fCBtX2NsZWFyUHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9E
T05FKSB7CisgICAgCisgICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0
ZW1lbnQobV9jbGVhclByZXZhbGVudFJlc291cmNlU3RhdGVtZW50LCBjbGVhclByZXZhbGVudFJl
c291cmNlUXVlcnksICJjbGVhclByZXZhbGVudFJlc291cmNlIl9zKTsKKyAgICAKKyAgICBpZiAo
IXNjb3BlZFN0YXRlbWVudAorICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRUZXh0KDEs
IGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVu
dC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lG
X0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpjbGVhclByZXZhbGVudFJlc291cmNlLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9
cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKLSAgICBpbnQgcmVzZXRS
ZXN1bHQgPSBtX2NsZWFyUHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQucmVzZXQoKTsKLSAgICBB
U1NFUlRfVU5VU0VEKHJlc2V0UmVzdWx0LCByZXNldFJlc3VsdCA9PSBTUUxJVEVfT0spOwogfQog
CiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRHcmFuZGZhdGhl
cmVkKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIGJvb2wgdmFsdWUpCkBAIC0yMTA0
LDE2ICsyMDMxLDE1IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OnNldEdyYW5kZmF0aGVyZWQoY29uc3QgUmVnaXN0cmFibGVEb21hCiAgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRHcmFuZGZhdGhlcmVkIHdhcyBub3QgY29tcGxldGVkIGR1
ZSB0byBmYWlsZWQgaW5zZXJ0IGF0dGVtcHQiLCB0aGlzKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICBpZiAobV91cGRhdGVHcmFuZGZhdGhlcmVkU3RhdGVtZW50LmJpbmRJbnQoMSwgdmFs
dWUpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX3VwZGF0ZUdyYW5kZmF0aGVyZWRTdGF0ZW1l
bnQuYmluZFRleHQoMiwgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwg
bV91cGRhdGVHcmFuZGZhdGhlcmVkU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewor
ICAgIAorICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1f
dXBkYXRlR3JhbmRmYXRoZXJlZFN0YXRlbWVudCwgdXBkYXRlR3JhbmRmYXRoZXJlZFF1ZXJ5LCAi
c2V0R3JhbmRmYXRoZXJlZCJfcyk7CisgICAgaWYgKCFzY29wZWRTdGF0ZW1lbnQKKyAgICAgICAg
fHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDEsIHZhbHVlKSAhPSBTUUxJVEVfT0sKKyAgICAg
ICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kVGV4dCgyLCBkb21haW4uc3RyaW5nKCkpICE9IFNR
TElURV9PSworICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9O
RSkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAi
JXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0R3JhbmRmYXRoZXJl
ZCBmYWlsZWQgdG8gYmluZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2Rh
dGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCi0gICAgaW50IHJlc2V0UmVzdWx0ID0gbV91cGRh
dGVHcmFuZGZhdGhlcmVkU3RhdGVtZW50LnJlc2V0KCk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXNl
dFJlc3VsdCwgcmVzZXRSZXN1bHQgPT0gU1FMSVRFX09LKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0SXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVE
YXRhUmVtb3ZhbChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBib29sIHZhbHVlKQpA
QCAtMjEyNSwxNiArMjA1MSwxNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpzZXRJc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdgogICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0SXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVE
YXRhUmVtb3ZhbCB3YXMgbm90IGNvbXBsZXRlZCBkdWUgdG8gZmFpbGVkIGluc2VydCBhdHRlbXB0
IiwgdGhpcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKG1fdXBkYXRlSXNTY2hl
ZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbFN0YXRlbWVudC5iaW5kSW50KDEsIHZhbHVl
KSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV91cGRhdGVJc1NjaGVkdWxlZEZvckFsbEJ1dENv
b2tpZURhdGFSZW1vdmFsU3RhdGVtZW50LmJpbmRUZXh0KDIsIGRvbWFpbi5zdHJpbmcoKSkgIT0g
U1FMSVRFX09LCi0gICAgICAgIHx8IG1fdXBkYXRlSXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVE
YXRhUmVtb3ZhbFN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKKyAgICAKKyAgICBh
dXRvIHNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX3VwZGF0ZUlzU2No
ZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWxTdGF0ZW1lbnQsIHVwZGF0ZUlzU2NoZWR1
bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWxRdWVyeSwgInNldElzU2NoZWR1bGVkRm9yQWxs
QnV0Q29va2llRGF0YVJlbW92YWwiX3MpOworICAgIGlmICghc2NvcGVkU3RhdGVtZW50CisgICAg
ICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZEludCgxLCB2YWx1ZSkgIT0gU1FMSVRFX09LCisg
ICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZFRleHQoMiwgZG9tYWluLnN0cmluZygpKSAh
PSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRF
X0RPTkUpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25J
RCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldElzU2NoZWR1
bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwgZmFpbGVkIHRvIGJpbmQsIGVycm9yIG1lc3Nh
Z2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47CiAgICAgfQotCi0gICAg
cmVzZXRTdGF0ZW1lbnQobV91cGRhdGVJc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1v
dmFsU3RhdGVtZW50KTsKIH0KKwogU2Vjb25kcyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6Z2V0TW9zdFJlY2VudGx5VXBkYXRlZFRpbWVzdGFtcChjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgc3ViRG9tYWluLCBjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRnJhbWVEb21haW4p
IGNvbnN0CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CkBAIC0yMTQ0LDMzICsy
MDcxLDMzIEBAIFNlY29uZHMgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omdl
dE1vc3RSZWNlbnRseVVwZGF0ZWRUaW1lc3RhbXAoY29uCiAKICAgICBpZiAoIXN1YkZyYW1lRG9t
YWluSUQgfHwgIXRvcEZyYW1lRG9tYWluSUQpCiAgICAgICAgIHJldHVybiBTZWNvbmRzIHsgUmVz
b3VyY2VMb2FkU3RhdGlzdGljczo6Tm9FeGlzdGluZ1RpbWVzdGFtcCB9OwotCi0gICAgaWYgKG1f
Z2V0TW9zdFJlY2VudGx5VXBkYXRlZFRpbWVzdGFtcFN0YXRlbWVudC5iaW5kSW50KDEsICpzdWJG
cmFtZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9nZXRNb3N0UmVjZW50bHlV
cGRhdGVkVGltZXN0YW1wU3RhdGVtZW50LmJpbmRJbnQoMiwgKnRvcEZyYW1lRG9tYWluSUQpICE9
IFNRTElURV9PSwotICAgICAgICB8fCBtX2dldE1vc3RSZWNlbnRseVVwZGF0ZWRUaW1lc3RhbXBT
dGF0ZW1lbnQuYmluZEludCgzLCAqc3ViRnJhbWVEb21haW5JRCkgIT0gU1FMSVRFX09LCi0gICAg
ICAgIHx8IG1fZ2V0TW9zdFJlY2VudGx5VXBkYXRlZFRpbWVzdGFtcFN0YXRlbWVudC5iaW5kSW50
KDQsICp0b3BGcmFtZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9nZXRNb3N0
UmVjZW50bHlVcGRhdGVkVGltZXN0YW1wU3RhdGVtZW50LmJpbmRJbnQoNSwgKnN1YkZyYW1lRG9t
YWluSUQpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX2dldE1vc3RSZWNlbnRseVVwZGF0ZWRU
aW1lc3RhbXBTdGF0ZW1lbnQuYmluZEludCg2LCAqdG9wRnJhbWVEb21haW5JRCkgIT0gU1FMSVRF
X09LCi0gICAgICAgIHx8IG1fZ2V0TW9zdFJlY2VudGx5VXBkYXRlZFRpbWVzdGFtcFN0YXRlbWVu
dC5iaW5kSW50KDcsICpzdWJGcmFtZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwg
bV9nZXRNb3N0UmVjZW50bHlVcGRhdGVkVGltZXN0YW1wU3RhdGVtZW50LmJpbmRJbnQoOCwgKnRv
cEZyYW1lRG9tYWluSUQpICE9IFNRTElURV9PSykgeworICAgIAorICAgIGF1dG8gc2NvcGVkU3Rh
dGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fZ2V0TW9zdFJlY2VudGx5VXBkYXRlZFRp
bWVzdGFtcFN0YXRlbWVudCwgZ2V0TW9zdFJlY2VudGx5VXBkYXRlZFRpbWVzdGFtcFF1ZXJ5LCAi
Z2V0TW9zdFJlY2VudGx5VXBkYXRlZFRpbWVzdGFtcCJfcyk7CisgICAgaWYgKCFzY29wZWRTdGF0
ZW1lbnQKKyAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDEsICpzdWJGcmFtZURv
bWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kSW50
KDIsICp0b3BGcmFtZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc2NvcGVkU3Rh
dGVtZW50LT5iaW5kSW50KDMsICpzdWJGcmFtZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAg
ICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDQsICp0b3BGcmFtZURvbWFpbklEKSAhPSBT
UUxJVEVfT0sKKyAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDUsICpzdWJGcmFt
ZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5k
SW50KDYsICp0b3BGcmFtZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc2NvcGVk
U3RhdGVtZW50LT5iaW5kSW50KDcsICpzdWJGcmFtZURvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAg
ICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5iaW5kSW50KDgsICp0b3BGcmFtZURvbWFpbklEKSAh
PSBTUUxJVEVfT0spIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nl
c3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldE1v
c3RSZWNlbnRseVVwZGF0ZWRUaW1lc3RhbXAgZmFpbGVkIHRvIGJpbmQsIGVycm9yIG1lc3NhZ2U6
ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gU2Vjb25kcyB7IFJlc291cmNl
TG9hZFN0YXRpc3RpY3M6Ok5vRXhpc3RpbmdUaW1lc3RhbXAgIH07CiAgICAgfQotICAgIGlmICht
X2dldE1vc3RSZWNlbnRseVVwZGF0ZWRUaW1lc3RhbXBTdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElU
RV9ST1cpIHsKLSAgICAgICAgcmVzZXRTdGF0ZW1lbnQobV9nZXRNb3N0UmVjZW50bHlVcGRhdGVk
VGltZXN0YW1wU3RhdGVtZW50KTsKKyAgICBpZiAoc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgIT0g
U1FMSVRFX1JPVykKICAgICAgICAgcmV0dXJuIFNlY29uZHMgeyBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzOjpOb0V4aXN0aW5nVGltZXN0YW1wICB9OwotICAgIH0KLSAgICBkb3VibGUgbW9zdFJlY2Vu
dGx5VXBkYXRlZFRpbWVzdGFtcCA9IG1fZ2V0TW9zdFJlY2VudGx5VXBkYXRlZFRpbWVzdGFtcFN0
YXRlbWVudC5nZXRDb2x1bW5Eb3VibGUoMCk7Ci0gICAgcmVzZXRTdGF0ZW1lbnQobV9nZXRNb3N0
UmVjZW50bHlVcGRhdGVkVGltZXN0YW1wU3RhdGVtZW50KTsKLSAgICByZXR1cm4gU2Vjb25kcyB7
IG1vc3RSZWNlbnRseVVwZGF0ZWRUaW1lc3RhbXAgfTsKKworICAgIHJldHVybiBTZWNvbmRzIHsg
c2NvcGVkU3RhdGVtZW50LT5nZXRDb2x1bW5Eb3VibGUoMCkgfTsKIH0KIAogYm9vbCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aXNHcmFuZGZhdGhlcmVkKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBkb21haW4pIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7CiAKLSAgICByZXR1cm4gcHJlZGljYXRlVmFsdWVGb3JEb21haW4obV9pc0dyYW5kZmF0
aGVyZWRTdGF0ZW1lbnQsIGRvbWFpbik7CisgICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0aGlz
LT5zY29wZWRTdGF0ZW1lbnQobV9pc0dyYW5kZmF0aGVyZWRTdGF0ZW1lbnQsIGlzR3JhbmRmYXRo
ZXJlZFF1ZXJ5LCAiaXNHcmFuZGZhdGhlcmVkIl9zKTsKKyAgICByZXR1cm4gcHJlZGljYXRlVmFs
dWVGb3JEb21haW4oc2NvcGVkU3RhdGVtZW50LCBkb21haW4pOwogfQogCiB2b2lkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21h
aW4oY29uc3QgU3ViRnJhbWVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBUb3BGcmFtZURv
bWFpbiYgdG9wRnJhbWVEb21haW4pCkBAIC0yMjU1LDI0ICsyMTgyLDIwIEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RG
cm9tKGNvbnN0IFRvCiBzdGQ6OnBhaXI8UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OkFkZGVkUmVjb3JkLCBPcHRpb25hbDx1bnNpZ25lZD4+IFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjplbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURv
bWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKQogewogICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOwotCi0gICAgaWYgKG1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50
LmJpbmRUZXh0KDEsIGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LKSB7CisgICAgCisgICAg
YXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9kb21haW5JREZy
b21TdHJpbmdTdGF0ZW1lbnQsIGRvbWFpbklERnJvbVN0cmluZ1F1ZXJ5LCAiZW5zdXJlUmVzb3Vy
Y2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4iX3MpOworICAgIGlmICghc2NvcGVkU3Rh
dGVtZW50CisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZFRleHQoMSwgZG9tYWluLnN0
cmluZygpKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxM
T1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluIGZhaWxlZCwg
ZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1z
ZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiB7IEFk
ZGVkUmVjb3JkOjpObywgMCB9OwogICAgIH0KICAgICAKLSAgICBpZiAobV9kb21haW5JREZyb21T
dHJpbmdTdGF0ZW1lbnQuc3RlcCgpID09IFNRTElURV9ST1cpIHsKLSAgICAgICAgdW5zaWduZWQg
ZG9tYWluSUQgPSBtX2RvbWFpbklERnJvbVN0cmluZ1N0YXRlbWVudC5nZXRDb2x1bW5JbnQoMCk7
Ci0KLSAgICAgICAgaW50IHJlc2V0UmVzdWx0ID0gbV9kb21haW5JREZyb21TdHJpbmdTdGF0ZW1l
bnQucmVzZXQoKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChyZXNldFJlc3VsdCwgcmVzZXRSZXN1
bHQgPT0gU1FMSVRFX09LKTsKKyAgICBpZiAoc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgPT0gU1FM
SVRFX1JPVykgeworICAgICAgICB1bnNpZ25lZCBkb21haW5JRCA9IHNjb3BlZFN0YXRlbWVudC0+
Z2V0Q29sdW1uSW50KDApOwogICAgICAgICByZXR1cm4geyBBZGRlZFJlY29yZDo6Tm8sIGRvbWFp
bklEIH07CiAgICAgfQogCi0gICAgaW50IHJlc2V0UmVzdWx0ID0gbV9kb21haW5JREZyb21TdHJp
bmdTdGF0ZW1lbnQucmVzZXQoKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc2V0UmVzdWx0LCByZXNl
dFJlc3VsdCA9PSBTUUxJVEVfT0spOwotCiAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyBuZXdP
YnNlcnZhdGlvbihkb21haW4pOwogICAgIGF1dG8gcmVzdWx0ID0gaW5zZXJ0T2JzZXJ2ZWREb21h
aW4obmV3T2JzZXJ2YXRpb24pOwogCkBAIC0yMzAxLDE0ICsyMjI0LDE0IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlbW92ZURhdGFGb3JEb21haW4oY29uc3Qg
UmVnaXN0cmFibGVECiAgICAgYXV0byBkb21haW5JRFRvUmVtb3ZlID0gZG9tYWluSUQoZG9tYWlu
KTsKICAgICBpZiAoIWRvbWFpbklEVG9SZW1vdmUpCiAgICAgICAgIHJldHVybjsKLQotICAgIGlm
IChtX3JlbW92ZUFsbERhdGFTdGF0ZW1lbnQuYmluZEludCgxLCAqZG9tYWluSURUb1JlbW92ZSkg
IT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fcmVtb3ZlQWxsRGF0YVN0YXRlbWVudC5zdGVwKCkg
IT0gU1FMSVRFX0RPTkUpIHsKKyAgICAKKyAgICBhdXRvIHNjb3BlZFN0YXRlbWVudCA9IHRoaXMt
PnNjb3BlZFN0YXRlbWVudChtX3JlbW92ZUFsbERhdGFTdGF0ZW1lbnQsIHJlbW92ZUFsbERhdGFR
dWVyeSwgInJlbW92ZURhdGFGb3JEb21haW4iX3MpOworICAgIGlmICghc2NvcGVkU3RhdGVtZW50
CisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZEludCgxLCAqZG9tYWluSURUb1JlbW92
ZSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpICE9IFNR
TElURV9ET05FKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNz
aW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZW1vdmVE
YXRhRm9yRG9tYWluIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBt
X2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgfQotICAgIAotICAgIHJlc2V0U3RhdGVtZW50KG1fcmVtb3ZlQWxsRGF0YVN0YXRlbWVu
dCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFy
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTI0OTAs
MTUgKzI0MTMsMTQgQEAgVmVjdG9yPHVuc2lnbmVkPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6ZmluZEV4cGlyZWRVc2VySW50ZXJhY3Rpb24KICAgICBPcHRpb25hbDxTZWNv
bmRzPiBleHBpcmF0aW9uRGF0ZVRpbWUgPSBzdGF0aXN0aWNzRXBpcmF0aW9uVGltZSgpOwogICAg
IGlmICghZXhwaXJhdGlvbkRhdGVUaW1lKQogICAgICAgICByZXR1cm4gcmVzdWx0czsKLQotICAg
IGlmIChtX2ZpbmRFeHBpcmVkVXNlckludGVyYWN0aW9uU3RhdGVtZW50LmJpbmREb3VibGUoMSwg
ZXhwaXJhdGlvbkRhdGVUaW1lLnZhbHVlKCkudmFsdWUoKSkgIT0gU1FMSVRFX09LKQorICAgIAor
ICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fZmluZEV4
cGlyZWRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQsIGZpbmRFeHBpcmVkVXNlckludGVyYWN0aW9u
UXVlcnksICJmaW5kRXhwaXJlZFVzZXJJbnRlcmFjdGlvbnMiX3MpOworICAgIGlmICghc2NvcGVk
U3RhdGVtZW50CisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVudC0+YmluZERvdWJsZSgxLCBleHBp
cmF0aW9uRGF0ZVRpbWUudmFsdWUoKS52YWx1ZSgpKSAhPSBTUUxJVEVfT0spCiAgICAgICAgIHJl
dHVybiByZXN1bHRzOwogCi0gICAgd2hpbGUgKG1fZmluZEV4cGlyZWRVc2VySW50ZXJhY3Rpb25T
dGF0ZW1lbnQuc3RlcCgpID09IFNRTElURV9ST1cpCi0gICAgICAgIHJlc3VsdHMuYXBwZW5kKG1f
ZmluZEV4cGlyZWRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDApKTsKLQot
ICAgIGludCByZXNldFJlc3VsdCA9IG1fZmluZEV4cGlyZWRVc2VySW50ZXJhY3Rpb25TdGF0ZW1l
bnQucmVzZXQoKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc2V0UmVzdWx0LCByZXNldFJlc3VsdCA9
PSBTUUxJVEVfT0spOworICAgIHdoaWxlIChzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJ
VEVfUk9XKQorICAgICAgICByZXN1bHRzLmFwcGVuZChzY29wZWRTdGF0ZW1lbnQtPmdldENvbHVt
bkludCgwKSk7CiAKICAgICByZXR1cm4gcmVzdWx0czsKIH0KQEAgLTI2NTksMTEgKzI1ODEsMTIg
QEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJ1bmVTdGF0aXN0
aWNzSWZOZWVkZWQoKQogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgdW5z
aWduZWQgY291bnQgPSAwOwotICAgIGlmIChtX29ic2VydmVkRG9tYWluQ291bnQuc3RlcCgpID09
IFNRTElURV9ST1cpCi0gICAgICAgIGNvdW50ID0gbV9vYnNlcnZlZERvbWFpbkNvdW50LmdldENv
bHVtbkludCgwKTsKLQotICAgIGludCByZXNldFJlc3VsdCA9IG1fb2JzZXJ2ZWREb21haW5Db3Vu
dC5yZXNldCgpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzZXRSZXN1bHQsIHJlc2V0UmVzdWx0ID09
IFNRTElURV9PSyk7CisgICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0
ZW1lbnQobV9vYnNlcnZlZERvbWFpbkNvdW50U3RhdGVtZW50LCBvYnNlcnZlZERvbWFpbkNvdW50
UXVlcnksICJwcnVuZVN0YXRpc3RpY3NJZk5lZWRlZCJfcyk7CisgICAgaWYgKCFzY29wZWRTdGF0
ZW1lbnQpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBpZiAoc2NvcGVkU3RhdGVtZW50LT5z
dGVwKCkgPT0gU1FMSVRFX1JPVykKKyAgICAgICAgY291bnQgPSBzY29wZWRTdGF0ZW1lbnQtPmdl
dENvbHVtbkludCgwKTsKIAogICAgIGlmIChjb3VudCA8PSBwYXJhbWV0ZXJzKCkubWF4U3RhdGlz
dGljc0VudHJpZXMpCiAgICAgICAgIHJldHVybjsKQEAgLTI2OTksMTcgKzI2MjIsMTYgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJ1bmVTdGF0aXN0aWNzSWZO
ZWVkZWQoKQogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6dXBkYXRl
TGFzdFNlZW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgV2FsbFRpbWUgbGFzdFNl
ZW4pCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICBpZiAobV91cGRh
dGVMYXN0U2VlblN0YXRlbWVudC5iaW5kRG91YmxlKDEsIGxhc3RTZWVuLnNlY29uZHNTaW5jZUVw
b2NoKCkudmFsdWUoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fdXBkYXRlTGFzdFNlZW5T
dGF0ZW1lbnQuYmluZFRleHQoMiwgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKLSAgICAg
ICAgfHwgbV91cGRhdGVMYXN0U2VlblN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsK
KyAgICAKKyAgICBhdXRvIHNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudCht
X3VwZGF0ZUxhc3RTZWVuU3RhdGVtZW50LCB1cGRhdGVMYXN0U2VlblF1ZXJ5LCAidXBkYXRlTGFz
dFNlZW4iX3MpOworICAgIGlmICghc2NvcGVkU3RhdGVtZW50CisgICAgICAgIHx8IHNjb3BlZFN0
YXRlbWVudC0+YmluZERvdWJsZSgxLCBsYXN0U2Vlbi5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVl
KCkpICE9IFNRTElURV9PSworICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRUZXh0KDIs
IGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHNjb3BlZFN0YXRlbWVu
dC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lG
X0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjp1cGRhdGVMYXN0U2VlbiBmYWlsZWQgdG8gYmluZCwgZXJyb3IgbWVzc2FnZTogJXtw
cml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCi0gICAgaW50
IHJlc2V0UmVzdWx0ID0gbV91cGRhdGVMYXN0U2VlblN0YXRlbWVudC5yZXNldCgpOwotICAgIEFT
U0VSVF9VTlVTRUQocmVzZXRSZXN1bHQsIHJlc2V0UmVzdWx0ID09IFNRTElURV9PSyk7CiB9CiAK
IHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldExhc3RTZWVuKGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIFNlY29uZHMgc2Vjb25kcykKQEAgLTI3NjAs
MTcgKzI2ODIsMTYgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
c2V0VmVyeVByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHIKIHZvaWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnVwZGF0ZURhdGFSZWNvcmRzUmVtb3ZlZChjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBpbnQgdmFsdWUpCiB7CiAgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7Ci0KLSAgICBpZiAobV91cGRhdGVEYXRhUmVjb3Jkc1JlbW92ZWRTdGF0
ZW1lbnQuYmluZEludCgxLCB2YWx1ZSkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fdXBkYXRl
RGF0YVJlY29yZHNSZW1vdmVkU3RhdGVtZW50LmJpbmRUZXh0KDIsIGRvbWFpbi5zdHJpbmcoKSkg
IT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fdXBkYXRlRGF0YVJlY29yZHNSZW1vdmVkU3RhdGVt
ZW50LnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgeworICAgIAorICAgIGF1dG8gc2NvcGVkU3RhdGVt
ZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fdXBkYXRlRGF0YVJlY29yZHNSZW1vdmVkU3Rh
dGVtZW50LCB1cGRhdGVEYXRhUmVjb3Jkc1JlbW92ZWRRdWVyeSwgInVwZGF0ZURhdGFSZWNvcmRz
UmVtb3ZlZCJfcyk7CisgICAgaWYgKCFzY29wZWRTdGF0ZW1lbnQKKyAgICAgICAgfHwgc2NvcGVk
U3RhdGVtZW50LT5iaW5kSW50KDEsIHZhbHVlKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc2Nv
cGVkU3RhdGVtZW50LT5iaW5kVGV4dCgyLCBkb21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSwor
ICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewogICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6dXBkYXRlRGF0YVJlY29yZHNSZW1vdmVk
IGZhaWxlZCB0byBiaW5kLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0
YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLQotICAgIGludCByZXNldFJlc3VsdCA9IG1fdXBkYXRlRGF0
YVJlY29yZHNSZW1vdmVkU3RhdGVtZW50LnJlc2V0KCk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXNl
dFJlc3VsdCwgcmVzZXRSZXN1bHQgPT0gU1FMSVRFX09LKTsKIH0KIAogYm9vbCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aXNDb3JyZWN0U3ViU3RhdGlzdGljc0NvdW50KGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJmcmFtZURvbWFpbiwgY29uc3QgVG9wRnJhbWVEb21h
aW4mIHRvcEZyYW1lRG9tYWluKQpAQCAtMjgyNSwxNiArMjc0NiwxNyBAQCBTdHJpbmcgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldERvbWFpblN0cmluZ0Zyb21Eb21haW5J
RCh1bnNpZ25lZAogewogICAgIGF1dG8gcmVzdWx0ID0gZW1wdHlTdHJpbmcoKTsKICAgICAKLSAg
ICBpZiAobV9kb21haW5TdHJpbmdGcm9tRG9tYWluSURTdGF0ZW1lbnQuYmluZEludCgxLCBkb21h
aW5JRCkgIT0gU1FMSVRFX09LKSB7CisgICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5z
Y29wZWRTdGF0ZW1lbnQobV9kb21haW5TdHJpbmdGcm9tRG9tYWluSURTdGF0ZW1lbnQsIGRvbWFp
blN0cmluZ0Zyb21Eb21haW5JRFF1ZXJ5LCAiZ2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklEIl9z
KTsKKyAgICBpZiAoIXNjb3BlZFN0YXRlbWVudAorICAgICAgICB8fCBzY29wZWRTdGF0ZW1lbnQt
PmJpbmRJbnQoMSwgZG9tYWluSUQpICE9IFNRTElURV9PSykgewogICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6Z2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklELiBTdGF0ZW1lbnQg
ZmFpbGVkIHRvIHByZXBhcmUgb3IgYmluZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0
aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIGlmIChtX2Rv
bWFpblN0cmluZ0Zyb21Eb21haW5JRFN0YXRlbWVudC5zdGVwKCkgPT0gU1FMSVRFX1JPVykKLSAg
ICAgICAgcmVzdWx0ID0gbV9kb21haW5TdHJpbmdGcm9tRG9tYWluSURTdGF0ZW1lbnQuZ2V0Q29s
dW1uVGV4dCgwKTsKKyAgICBpZiAoc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JP
VykKKyAgICAgICAgcmVzdWx0ID0gbV9kb21haW5TdHJpbmdGcm9tRG9tYWluSURTdGF0ZW1lbnQt
PmdldENvbHVtblRleHQoMCk7CiAgICAgCi0gICAgcmVzZXRTdGF0ZW1lbnQobV9kb21haW5TdHJp
bmdGcm9tRG9tYWluSURTdGF0ZW1lbnQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTI5
MDEsOCArMjgyMywxMCBAQCBzdGF0aWMgYm9vbCBoYXNIYWRSZWNlbnRVc2VySW50ZXJhY3Rpb24o
V1RGOjpTZWNvbmRzIGludGVyYWN0aW9uVGltZVNlY29uZHMpCiAKIHZvaWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlc291cmNlVG9TdHJpbmcoU3RyaW5nQnVpbGRlciYg
YnVpbGRlciwgY29uc3QgU3RyaW5nJiBkb21haW4pIGNvbnN0CiB7Ci0gICAgaWYgKG1fZ2V0UmVz
b3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LmJpbmRUZXh0KDEsIGRvbWFpbikgIT0gU1FM
SVRFX09LCi0gICAgICAgIHx8IG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50
LnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7CisgICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0aGlz
LT5zY29wZWRTdGF0ZW1lbnQobV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQs
IGdldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVF1ZXJ5LCAicmVzb3VyY2VUb1N0cmluZyJfcyk7
CisgICAgaWYgKCFzY29wZWRTdGF0ZW1lbnQKKyAgICAgICAgfHwgc2NvcGVkU3RhdGVtZW50LT5i
aW5kVGV4dCgxLCBkb21haW4pICE9IFNRTElURV9PSworICAgICAgICB8fCBzY29wZWRTdGF0ZW1l
bnQtPnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lG
X0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpyZXNvdXJjZVRvU3RyaW5nLiBTdGF0ZW1lbnQgZmFpbGVkIHRvIGJpbmQgb3IgZG9t
YWluIHdhcyBub3QgZm91bmQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9k
YXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICByZXR1cm47CkBAIC0yOTEzLDE1ICsyODM3LDE1IEBAIHZvaWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlc291cmNlVG9TdHJpbmcoU3RyaW5nQnVpbGRlciYg
YnVpbGRlCiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAgICAgCiAgICAgLy8gVXNlciBpbnRl
cmFjdGlvbgotICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImhhZFVzZXJJbnRlcmFjdGlvbiIs
IG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LmdldENvbHVtbkludChIYWRV
c2VySW50ZXJhY3Rpb25JbmRleCkpOworICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImhhZFVz
ZXJJbnRlcmFjdGlvbiIsIG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LT5n
ZXRDb2x1bW5JbnQoSGFkVXNlckludGVyYWN0aW9uSW5kZXgpKTsKICAgICBidWlsZGVyLmFwcGVu
ZCgnXG4nKTsKICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiAgICBtb3N0UmVjZW50VXNlcklu
dGVyYWN0aW9uOiAiKTsKLSAgICBpZiAoaGFzSGFkUmVjZW50VXNlckludGVyYWN0aW9uKFNlY29u
ZHMobV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQuZ2V0Q29sdW1uRG91Ymxl
KE1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lSW5kZXgpKSkpCisgICAgaWYgKGhhc0hhZFJl
Y2VudFVzZXJJbnRlcmFjdGlvbihTZWNvbmRzKG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1l
U3RhdGVtZW50LT5nZXRDb2x1bW5Eb3VibGUoTW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWVJ
bmRleCkpKSkKICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ3aXRoaW4gMjQgaG91cnMi
KTsKICAgICBlbHNlCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLTEiKTsKICAgICBi
dWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJncmFuZGZh
dGhlcmVkIiwgbV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQuZ2V0Q29sdW1u
SW50KEdyYW5kZmF0aGVyZWRJbmRleCkpOworICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImdy
YW5kZmF0aGVyZWQiLCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC0+Z2V0
Q29sdW1uSW50KEdyYW5kZmF0aGVyZWRJbmRleCkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicp
OwogCiAgICAgLy8gU3RvcmFnZSBhY2Nlc3MKQEAgLTI5MzQsNyArMjg1OCw3IEBAIHZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlc291cmNlVG9TdHJpbmcoU3RyaW5n
QnVpbGRlciYgYnVpbGRlCiAgICAgYXBwZW5kU3ViU3RhdGlzdGljTGlzdChidWlsZGVyLCAiVG9w
RnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tIiwgZG9tYWluKTsKICAgICBhcHBlbmRTdWJTdGF0aXN0
aWNMaXN0KGJ1aWxkZXIsICJUb3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRzIiwgZG9tYWlu
KTsKIAotICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgIklzU2NoZWR1bGVkRm9yQWxsQnV0Q29v
a2llRGF0YVJlbW92YWwiLCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC5n
ZXRDb2x1bW5JbnQoSXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbEluZGV4KSk7
CisgICAgYXBwZW5kQm9vbGVhbihidWlsZGVyLCAiSXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVE
YXRhUmVtb3ZhbCIsIG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LT5nZXRD
b2x1bW5JbnQoSXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbEluZGV4KSk7CiAg
ICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAKICAgICAvLyBTdWJmcmFtZSBzdGF0cwpAQCAtMjk0
Niw1NCArMjg3MCw1OCBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpyZXNvdXJjZVRvU3RyaW5nKFN0cmluZ0J1aWxkZXImIGJ1aWxkZQogICAgIGFwcGVuZFN1YlN0
YXRpc3RpY0xpc3QoYnVpbGRlciwgIlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSIsIGRv
bWFpbik7CiAKICAgICAvLyBQcmV2YWxlbnQgUmVzb3VyY2UKLSAgICBhcHBlbmRCb29sZWFuKGJ1
aWxkZXIsICJpc1ByZXZhbGVudFJlc291cmNlIiwgbV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5h
bWVTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KElzUHJldmFsZW50SW5kZXgpKTsKKyAgICBhcHBlbmRC
b29sZWFuKGJ1aWxkZXIsICJpc1ByZXZhbGVudFJlc291cmNlIiwgbV9nZXRSZXNvdXJjZURhdGFC
eURvbWFpbk5hbWVTdGF0ZW1lbnQtPmdldENvbHVtbkludChJc1ByZXZhbGVudEluZGV4KSk7CiAg
ICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgYXBwZW5kQm9vbGVhbihidWlsZGVyLCAiaXNW
ZXJ5UHJldmFsZW50UmVzb3VyY2UiLCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRl
bWVudC5nZXRDb2x1bW5JbnQoSXNWZXJ5UHJldmFsZW50SW5kZXgpKTsKKyAgICBhcHBlbmRCb29s
ZWFuKGJ1aWxkZXIsICJpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSIsIG1fZ2V0UmVzb3VyY2VEYXRh
QnlEb21haW5OYW1lU3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoSXNWZXJ5UHJldmFsZW50SW5kZXgp
KTsKICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IiAgICBkYXRhUmVjb3Jkc1JlbW92ZWQ6ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1f
Z2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LmdldENvbHVtbkludChEYXRhUmVj
b3Jkc1JlbW92ZWRJbmRleCkpOworICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1fZ2V0UmVzb3Vy
Y2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoRGF0YVJlY29yZHNSZW1v
dmVkSW5kZXgpKTsKICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLQotICAgIHJlc2V0U3RhdGVt
ZW50KG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50KTsKIH0KIAogYm9vbCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWluSURFeGlzdHNJbkRhdGFi
YXNlKGludCBkb21haW5JRCkKIHsKLSAgICBpZiAobV9saW5rRGVjb3JhdGlvbkV4aXN0c1N0YXRl
bWVudC5iaW5kSW50KDEsIGRvbWFpbklEKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9saW5r
RGVjb3JhdGlvbkV4aXN0c1N0YXRlbWVudC5iaW5kSW50KDIsIGRvbWFpbklEKSAhPSBTUUxJVEVf
T0sKLSAgICAgICAgfHwgbV9zY3JpcHRMb2FkRXhpc3RzU3RhdGVtZW50LmJpbmRJbnQoMSwgZG9t
YWluSUQpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX3NjcmlwdExvYWRFeGlzdHNTdGF0ZW1l
bnQuYmluZEludCgyLCBkb21haW5JRCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fc3ViRnJh
bWVFeGlzdHNTdGF0ZW1lbnQuYmluZEludCgxLCBkb21haW5JRCkgIT0gU1FMSVRFX09LCi0gICAg
ICAgIHx8IG1fc3ViRnJhbWVFeGlzdHNTdGF0ZW1lbnQuYmluZEludCgyLCBkb21haW5JRCkgIT0g
U1FMSVRFX09LCi0gICAgICAgIHx8IG1fc3ViUmVzb3VyY2VFeGlzdHNTdGF0ZW1lbnQuYmluZElu
dCgxLCBkb21haW5JRCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fc3ViUmVzb3VyY2VFeGlz
dHNTdGF0ZW1lbnQuYmluZEludCgyLCBkb21haW5JRCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8
IG1fdW5pcXVlUmVkaXJlY3RFeGlzdHNTdGF0ZW1lbnQuYmluZEludCgxLCBkb21haW5JRCkgIT0g
U1FMSVRFX09LCi0gICAgICAgIHx8IG1fdW5pcXVlUmVkaXJlY3RFeGlzdHNTdGF0ZW1lbnQuYmlu
ZEludCgyLCBkb21haW5JRCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fb2JzZXJ2ZWREb21h
aW5zRXhpc3RzU3RhdGVtZW50LmJpbmRJbnQoMSwgZG9tYWluSUQpICE9IFNRTElURV9PSykgewor
ICAgIGF1dG8gc2NvcGVkTGlua0RlY29yYXRpb25FeGlzdHNTdGF0ZW1lbnQgPSB0aGlzLT5zY29w
ZWRTdGF0ZW1lbnQobV9saW5rRGVjb3JhdGlvbkV4aXN0c1N0YXRlbWVudCwgbGlua0RlY29yYXRp
b25FeGlzdHNRdWVyeSwgImRvbWFpbklERXhpc3RzSW5EYXRhYmFzZSJfcyk7CisgICAgYXV0byBz
Y29wZWRTY3JpcHRMb2FkRXhpc3RzU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1f
c2NyaXB0TG9hZEV4aXN0c1N0YXRlbWVudCwgc2NyaXB0TG9hZEV4aXN0c1F1ZXJ5LCAiZG9tYWlu
SURFeGlzdHNJbkRhdGFiYXNlIGxpbmtEZWNvcmF0aW9uRXhpc3RzU3RhdGVtZW50Il9zKTsKKyAg
ICBhdXRvIHNjb3BlZFN1YkZyYW1lRXhpc3RzU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVt
ZW50KG1fc3ViRnJhbWVFeGlzdHNTdGF0ZW1lbnQsIHN1YkZyYW1lRXhpc3RzUXVlcnksICJkb21h
aW5JREV4aXN0c0luRGF0YWJhc2Ugc3ViRnJhbWVFeGlzdHNTdGF0ZW1lbnQiX3MpOworICAgIGF1
dG8gc2NvcGVkU3ViUmVzb3VyY2VFeGlzdHNTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1l
bnQobV9zdWJSZXNvdXJjZUV4aXN0c1N0YXRlbWVudCwgc3ViUmVzb3VyY2VFeGlzdHNRdWVyeSwg
ImRvbWFpbklERXhpc3RzSW5EYXRhYmFzZSBzdWJSZXNvdXJjZUV4aXN0c1N0YXRlbWVudCJfcyk7
CisgICAgYXV0byBzY29wZWRVbmlxdWVSZWRpcmVjdEV4aXN0c1N0YXRlbWVudCA9IHRoaXMtPnNj
b3BlZFN0YXRlbWVudChtX3VuaXF1ZVJlZGlyZWN0RXhpc3RzU3RhdGVtZW50LCB1bmlxdWVSZWRp
cmVjdEV4aXN0c1F1ZXJ5LCAiZG9tYWluSURFeGlzdHNJbkRhdGFiYXNlIHVuaXF1ZVJlZGlyZWN0
RXhpc3RzU3RhdGVtZW50Il9zKTsKKyAgICBhdXRvIHNjb3BlZE9ic2VydmVkRG9tYWluc0V4aXN0
c1N0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX29ic2VydmVkRG9tYWluc0V4aXN0
c1N0YXRlbWVudCwgb2JzZXJ2ZWREb21haW5zRXhpc3RzUXVlcnksICJkb21haW5JREV4aXN0c0lu
RGF0YWJhc2Ugb2JzZXJ2ZWREb21haW5zRXhpc3RzU3RhdGVtZW50Il9zKTsKKyAgICAKKyAgICBp
ZiAoIXNjb3BlZExpbmtEZWNvcmF0aW9uRXhpc3RzU3RhdGVtZW50CisgICAgICAgIHx8ICFzY29w
ZWRTY3JpcHRMb2FkRXhpc3RzU3RhdGVtZW50CisgICAgICAgIHx8ICFzY29wZWRTdWJGcmFtZUV4
aXN0c1N0YXRlbWVudAorICAgICAgICB8fCAhc2NvcGVkU3ViUmVzb3VyY2VFeGlzdHNTdGF0ZW1l
bnQKKyAgICAgICAgfHwgIXNjb3BlZFVuaXF1ZVJlZGlyZWN0RXhpc3RzU3RhdGVtZW50CisgICAg
ICAgIHx8ICFzY29wZWRPYnNlcnZlZERvbWFpbnNFeGlzdHNTdGF0ZW1lbnQKKyAgICAgICAgfHwg
bV9saW5rRGVjb3JhdGlvbkV4aXN0c1N0YXRlbWVudC0+YmluZEludCgxLCBkb21haW5JRCkgIT0g
U1FMSVRFX09LCisgICAgICAgIHx8IG1fbGlua0RlY29yYXRpb25FeGlzdHNTdGF0ZW1lbnQtPmJp
bmRJbnQoMiwgZG9tYWluSUQpICE9IFNRTElURV9PSworICAgICAgICB8fCBtX3NjcmlwdExvYWRF
eGlzdHNTdGF0ZW1lbnQtPmJpbmRJbnQoMSwgZG9tYWluSUQpICE9IFNRTElURV9PSworICAgICAg
ICB8fCBtX3NjcmlwdExvYWRFeGlzdHNTdGF0ZW1lbnQtPmJpbmRJbnQoMiwgZG9tYWluSUQpICE9
IFNRTElURV9PSworICAgICAgICB8fCBtX3N1YkZyYW1lRXhpc3RzU3RhdGVtZW50LT5iaW5kSW50
KDEsIGRvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9zdWJGcmFtZUV4aXN0c1N0
YXRlbWVudC0+YmluZEludCgyLCBkb21haW5JRCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1f
c3ViUmVzb3VyY2VFeGlzdHNTdGF0ZW1lbnQtPmJpbmRJbnQoMSwgZG9tYWluSUQpICE9IFNRTElU
RV9PSworICAgICAgICB8fCBtX3N1YlJlc291cmNlRXhpc3RzU3RhdGVtZW50LT5iaW5kSW50KDIs
IGRvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV91bmlxdWVSZWRpcmVjdEV4aXN0
c1N0YXRlbWVudC0+YmluZEludCgxLCBkb21haW5JRCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8
IG1fdW5pcXVlUmVkaXJlY3RFeGlzdHNTdGF0ZW1lbnQtPmJpbmRJbnQoMiwgZG9tYWluSUQpICE9
IFNRTElURV9PSworICAgICAgICB8fCBtX29ic2VydmVkRG9tYWluc0V4aXN0c1N0YXRlbWVudC0+
YmluZEludCgxLCBkb21haW5JRCkgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpkb21haW5JREV4aXN0c0luRGF0YWJhc2UgZmFpbGVkIHRvIGJpbmQs
IGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JN
c2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCi0gICAgaWYgKG1fbGlua0RlY29yYXRpb25FeGlzdHNTdGF0ZW1lbnQuc3Rl
cCgpICE9IFNRTElURV9ST1cKLSAgICAgICAgfHwgbV9zY3JpcHRMb2FkRXhpc3RzU3RhdGVtZW50
LnN0ZXAoKSAhPSBTUUxJVEVfUk9XCi0gICAgICAgIHx8IG1fc3ViRnJhbWVFeGlzdHNTdGF0ZW1l
bnQuc3RlcCgpICE9IFNRTElURV9ST1cKLSAgICAgICAgfHwgbV9zdWJSZXNvdXJjZUV4aXN0c1N0
YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX1JPVwotICAgICAgICB8fCBtX3VuaXF1ZVJlZGlyZWN0
RXhpc3RzU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfUk9XCi0gICAgICAgIHx8IG1fb2JzZXJ2
ZWREb21haW5zRXhpc3RzU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7CisgICAgaWYg
KG1fbGlua0RlY29yYXRpb25FeGlzdHNTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfUk9XCisg
ICAgICAgIHx8IG1fc2NyaXB0TG9hZEV4aXN0c1N0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9S
T1cKKyAgICAgICAgfHwgbV9zdWJGcmFtZUV4aXN0c1N0YXRlbWVudC0+c3RlcCgpICE9IFNRTElU
RV9ST1cKKyAgICAgICAgfHwgbV9zdWJSZXNvdXJjZUV4aXN0c1N0YXRlbWVudC0+c3RlcCgpICE9
IFNRTElURV9ST1cKKyAgICAgICAgfHwgbV91bmlxdWVSZWRpcmVjdEV4aXN0c1N0YXRlbWVudC0+
c3RlcCgpICE9IFNRTElURV9ST1cKKyAgICAgICAgfHwgbV9vYnNlcnZlZERvbWFpbnNFeGlzdHNT
dGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpkb21haW5JREV4aXN0c0luRGF0YWJhc2UgZmFpbGVkIHRvIHN0ZXAsIGVy
cm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2co
KSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQotICAgIAotICAgIHJlc2V0U3RhdGVtZW50KG1fbGlua0RlY29yYXRpb25FeGlzdHNT
dGF0ZW1lbnQpOwotICAgIHJlc2V0U3RhdGVtZW50KG1fc2NyaXB0TG9hZEV4aXN0c1N0YXRlbWVu
dCk7Ci0gICAgcmVzZXRTdGF0ZW1lbnQobV9zdWJGcmFtZUV4aXN0c1N0YXRlbWVudCk7Ci0gICAg
cmVzZXRTdGF0ZW1lbnQobV9zdWJSZXNvdXJjZUV4aXN0c1N0YXRlbWVudCk7Ci0gICAgcmVzZXRT
dGF0ZW1lbnQobV91bmlxdWVSZWRpcmVjdEV4aXN0c1N0YXRlbWVudCk7Ci0gICAgcmVzZXRTdGF0
ZW1lbnQobV9vYnNlcnZlZERvbWFpbnNFeGlzdHNTdGF0ZW1lbnQpOwogCi0gICAgcmV0dXJuIG1f
bGlua0RlY29yYXRpb25FeGlzdHNTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDApIHx8IG1fc2NyaXB0
TG9hZEV4aXN0c1N0YXRlbWVudC5nZXRDb2x1bW5JbnQoMCkgfHwgbV9zdWJGcmFtZUV4aXN0c1N0
YXRlbWVudC5nZXRDb2x1bW5JbnQoMCkgfHwgbV9zdWJSZXNvdXJjZUV4aXN0c1N0YXRlbWVudC5n
ZXRDb2x1bW5JbnQoMCkgfHwgbV91bmlxdWVSZWRpcmVjdEV4aXN0c1N0YXRlbWVudC5nZXRDb2x1
bW5JbnQoMCkgfHwgbV9vYnNlcnZlZERvbWFpbnNFeGlzdHNTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50
KDApOworICAgIHJldHVybiBtX2xpbmtEZWNvcmF0aW9uRXhpc3RzU3RhdGVtZW50LT5nZXRDb2x1
bW5JbnQoMCkgfHwgbV9zY3JpcHRMb2FkRXhpc3RzU3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMCkg
fHwgbV9zdWJGcmFtZUV4aXN0c1N0YXRlbWVudC0+Z2V0Q29sdW1uSW50KDApIHx8IG1fc3ViUmVz
b3VyY2VFeGlzdHNTdGF0ZW1lbnQtPmdldENvbHVtbkludCgwKSB8fCBtX3VuaXF1ZVJlZGlyZWN0
RXhpc3RzU3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMCkgfHwgbV9vYnNlcnZlZERvbWFpbnNFeGlz
dHNTdGF0ZW1lbnQtPmdldENvbHVtbkludCgwKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5o
CmluZGV4IGI0N2Q1MmRmMmI0YTVlOGRlODcxNjQxMmUxYWFkNTM5MDdhZDNkOWIuLjU4NDA2NjAz
MmZhMjJlOTcyMzZiNThlY2QyYzFmMjZlM2I5ZWYzNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCkBAIC0zMSw2ICszMSw3IEBACiAj
aW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9TUUxpdGVEYXRhYmFzZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVtZW50
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZS5oPgog
I2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRs
ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RkU2V0Lmg+CkBAIC03OSwxMSArODAsMTIgQEAgY2xhc3Mg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOwogY2xhc3MgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmUgZmluYWwgOiBwdWJsaWMgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlIHsKIHB1YmxpYzoKICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZShXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUmLCBXb3JrUXVldWUmLCBTaG91bGRJbmNs
dWRlTG9jYWxob3N0LCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VEaXJlY3RvcnlQYXRoLCBQQUw6OlNl
c3Npb25JRCk7Ci0KKyAgICB+UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUoKTsK
ICAgICB2b2lkIHBvcHVsYXRlRnJvbU1lbW9yeVN0b3JlKGNvbnN0IFJlc291cmNlTG9hZFN0YXRp
c3RpY3NNZW1vcnlTdG9yZSYpOwogICAgIHZvaWQgbWVyZ2VTdGF0aXN0aWNzKFZlY3RvcjxSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgdm9pZCBjbG9zZSgpOwogCiAgICAgVmVjdG9yPFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGE+IGFnZ3JlZ2F0ZWRUaGlyZFBhcnR5RGF0
YSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlQ29va2llQmxvY2tpbmcoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKQEAgLTE0OCw2ICsxNTAsOSBAQCBwcml2
YXRlOgogICAgIHZvaWQgZW5hYmxlRm9yZWlnbktleXMoKTsKICAgICBib29sIGlzTWlncmF0aW9u
TmVjZXNzYXJ5KCk7CiAgICAgdm9pZCBtaWdyYXRlRGF0YVRvTmV3VGFibGVzSWZOZWNlc3Nhcnko
KTsKKyAgICB2b2lkIGRlc3Ryb3lTdGF0ZW1lbnRzKCk7CisgICAgV2ViQ29yZTo6U1FMaXRlU3Rh
dGVtZW50QXV0b1Jlc2V0U2NvcGUgc2NvcGVkU3RhdGVtZW50KHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpTUUxpdGVTdGF0ZW1lbnQ+JiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgY29u
c3Q7CisKICAgICBib29sIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgVG9wRnJhbWVEb21haW4mLCBj
b25zdCBTdWJGcmFtZURvbWFpbiYpIGNvbnN0OwogICAgIFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5PiBnZXRU
aGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbnModW5zaWduZWQsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CiAgICAgdm9pZCBvcGVuQW5kVXBkYXRlU2NoZW1h
SWZOZWNlc3NhcnkoKTsKQEAgLTE1NSw3ICsxNjAsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBn
ZXRTdWJTdGF0aXN0aWNTdGF0ZW1lbnQoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgdm9pZCBh
cHBlbmRTdWJTdGF0aXN0aWNMaXN0KFN0cmluZ0J1aWxkZXImLCBjb25zdCBTdHJpbmcmIHRhYmxl
TmFtZSwgY29uc3QgU3RyaW5nJiBkb21haW4pIGNvbnN0OwogICAgIHZvaWQgbWVyZ2VTdGF0aXN0
aWMoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOwotICAgIHZvaWQgbWVyZ2UoV2ViQ29y
ZTo6U1FMaXRlU3RhdGVtZW50JiwgY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOworICAg
IHZvaWQgbWVyZ2UoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50KiwgY29uc3QgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyYpOwogICAgIHZvaWQgY2xlYXJEYXRhYmFzZUNvbnRlbnRzKCk7CiAgICAgdW5z
aWduZWQgZ2V0TnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXMoKSBjb25zdDsKICAgICB1bnNpZ25l
ZCBnZXROdW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVSSgpIGNvbnN0OwpAQCAtMTY3LDgg
KzE3Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpbnNlcnRPYnNlcnZlZERvbWFpbihjb25zdCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzJikgV0FSTl9VTlVTRURfUkVUVVJOOwogICAgIHZvaWQgaW5z
ZXJ0RG9tYWluUmVsYXRpb25zaGlwcyhjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7CiAg
ICAgdm9pZCBpbnNlcnREb21haW5SZWxhdGlvbnNoaXBMaXN0KGNvbnN0IFN0cmluZyYsIGNvbnN0
IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiwgdW5zaWduZWQpOwotICAgIGJvb2wgaW5zZXJ0
RG9tYWluUmVsYXRpb25zaGlwKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCYsIHVuc2lnbmVkIGRv
bWFpbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4pOwotICAgIGJv
b2wgcmVsYXRpb25zaGlwRXhpc3RzKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCYsIE9wdGlvbmFs
PHVuc2lnbmVkPiBmaXJzdERvbWFpbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc2Vjb25k
RG9tYWluKSBjb25zdDsKKyAgICBib29sIHJlbGF0aW9uc2hpcEV4aXN0cyhXZWJDb3JlOjpTUUxp
dGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZSYsIE9wdGlvbmFsPHVuc2lnbmVkPiBmaXJzdERvbWFp
bklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc2Vjb25kRG9tYWluKSBjb25zdDsKICAgICBP
cHRpb25hbDx1bnNpZ25lZD4gZG9tYWluSUQoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25z
dDsKICAgICBib29sIGRvbWFpbkV4aXN0cyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0
OwogICAgIHZvaWQgdXBkYXRlTGFzdFNlZW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBXYWxs
VGltZSk7CkBAIC0yMDYsNyArMjEwLDcgQEAgcHJpdmF0ZToKICAgICB9OwogICAgIEhhc2hNYXA8
dW5zaWduZWQsIE5vdFZlcnlQcmV2YWxlbnRSZXNvdXJjZXM+IGZpbmROb3RWZXJ5UHJldmFsZW50
UmVzb3VyY2VzKCk7CiAKLSAgICBib29sIHByZWRpY2F0ZVZhbHVlRm9yRG9tYWluKFdlYkNvcmU6
OlNRTGl0ZVN0YXRlbWVudCYsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CisgICAg
Ym9vbCBwcmVkaWNhdGVWYWx1ZUZvckRvbWFpbihXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnRBdXRv
UmVzZXRTY29wZSYsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CiAKICAgICBib29s
IGFyZUFsbFRoaXJkUGFydHlDb29raWVzQmxvY2tlZFVuZGVyKGNvbnN0IFRvcEZyYW1lRG9tYWlu
Jikgb3ZlcnJpZGU7CiAgICAgQ29va2llQWNjZXNzIGNvb2tpZUFjY2Vzcyhjb25zdCBTdWJSZXNv
dXJjZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJik7CkBAIC0yMjksNTAgKzIzMyw0OCBA
QCBwcml2YXRlOgogCiAgICAgYm9vbCBjcmVhdGVVbmlxdWVJbmRpY2VzKCk7CiAgICAgYm9vbCBj
cmVhdGVTY2hlbWEoKTsKLSAgICBib29sIHByZXBhcmVTdGF0ZW1lbnRzKCk7CiAgICAgU3RyaW5n
IGVuc3VyZUFuZE1ha2VEb21haW5MaXN0KGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+
Jik7Ci0KICAgICAKICAgICBjb25zdCBTdHJpbmcgbV9zdG9yYWdlRGlyZWN0b3J5UGF0aDsKICAg
ICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlIG1fZGF0YWJhc2U7Ci0gICAgbXV0YWJs
ZSBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV9vYnNlcnZlZERvbWFpbkNvdW50OwotICAgIFdl
YkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50Owot
ICAgIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX2luc2VydFRvcExldmVsRG9tYWluU3RhdGVt
ZW50OwotICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fZG9tYWluSURGcm9t
U3RyaW5nU3RhdGVtZW50OwotICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1f
dG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tRXhpc3RzOwotICAgIG11dGFibGUgV2ViQ29yZTo6
U1FMaXRlU3RhdGVtZW50IG1fdG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0c0V4aXN0czsK
LSAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX3N1YmZyYW1lVW5kZXJUb3BG
cmFtZURvbWFpbkV4aXN0czsKLSAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBt
X3N1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbkV4aXN0czsKLSAgICBtdXRhYmxlIFdlYkNv
cmU6OlNRTGl0ZVN0YXRlbWVudCBtX3N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG9FeGlzdHM7
Ci0gICAgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlv
blN0YXRlbWVudDsKLSAgICBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV91cGRhdGVMYXN0U2Vl
blN0YXRlbWVudDsKLSAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX3VwZGF0
ZURhdGFSZWNvcmRzUmVtb3ZlZFN0YXRlbWVudDsKLSAgICBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1l
bnQgbV91cGRhdGVQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudDsKLSAgICBtdXRhYmxlIFdlYkNv
cmU6OlNRTGl0ZVN0YXRlbWVudCBtX2lzUHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQ7Ci0gICAg
V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fdXBkYXRlVmVyeVByZXZhbGVudFJlc291cmNlU3Rh
dGVtZW50OwotICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1faXNWZXJ5UHJl
dmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQ7Ci0gICAgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1f
Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudDsKLSAgICBtdXRhYmxlIFdlYkNvcmU6OlNR
TGl0ZVN0YXRlbWVudCBtX2hhZFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudDsKLSAgICBXZWJDb3Jl
OjpTUUxpdGVTdGF0ZW1lbnQgbV91cGRhdGVHcmFuZGZhdGhlcmVkU3RhdGVtZW50OwotICAgIG11
dGFibGUgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fdXBkYXRlSXNTY2hlZHVsZWRGb3JBbGxC
dXRDb29raWVEYXRhUmVtb3ZhbFN0YXRlbWVudDsKLSAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0
ZVN0YXRlbWVudCBtX2lzR3JhbmRmYXRoZXJlZFN0YXRlbWVudDsKLSAgICBtdXRhYmxlIFdlYkNv
cmU6OlNRTGl0ZVN0YXRlbWVudCBtX2ZpbmRFeHBpcmVkVXNlckludGVyYWN0aW9uU3RhdGVtZW50
OwotICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fY291bnRQcmV2YWxlbnRS
ZXNvdXJjZXNTdGF0ZW1lbnQ7Ci0gICAgbXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQg
bV9jb3VudFByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQ7Ci0g
ICAgbXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV9jb3VudFByZXZhbGVudFJlc291
cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQ7Ci0gICAgbXV0YWJsZSBXZWJDb3Jl
OjpTUUxpdGVTdGF0ZW1lbnQgbV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQ7
Ci0gICAgbXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV9nZXRBbGxEb21haW5zU3Rh
dGVtZW50OwotICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fZG9tYWluU3Ry
aW5nRnJvbURvbWFpbklEU3RhdGVtZW50OwotICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlU3Rh
dGVtZW50IG1fZ2V0QWxsU3ViU3RhdGlzdGljc1N0YXRlbWVudDsKLSAgICBtdXRhYmxlIFdlYkNv
cmU6OlNRTGl0ZVN0YXRlbWVudCBtX3N0b3JhZ2VBY2Nlc3NFeGlzdHNTdGF0ZW1lbnQ7Ci0gICAg
bXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV9nZXRNb3N0UmVjZW50bHlVcGRhdGVk
VGltZXN0YW1wU3RhdGVtZW50OwotICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50
IG1fbGlua0RlY29yYXRpb25FeGlzdHNTdGF0ZW1lbnQ7Ci0gICAgbXV0YWJsZSBXZWJDb3JlOjpT
UUxpdGVTdGF0ZW1lbnQgbV9zY3JpcHRMb2FkRXhpc3RzU3RhdGVtZW50OwotICAgIG11dGFibGUg
V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fc3ViRnJhbWVFeGlzdHNTdGF0ZW1lbnQ7Ci0gICAg
bXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV9zdWJSZXNvdXJjZUV4aXN0c1N0YXRl
bWVudDsKLSAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX3VuaXF1ZVJlZGly
ZWN0RXhpc3RzU3RhdGVtZW50OwotICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50
IG1fb2JzZXJ2ZWREb21haW5zRXhpc3RzU3RhdGVtZW50OwotICAgIG11dGFibGUgV2ViQ29yZTo6
U1FMaXRlU3RhdGVtZW50IG1fcmVtb3ZlQWxsRGF0YVN0YXRlbWVudDsKKyAgICBtdXRhYmxlIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fb2JzZXJ2ZWREb21haW5D
b3VudFN0YXRlbWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVt
ZW50PiBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50OworICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1faW5zZXJ0VG9wTGV2ZWxEb21haW5TdGF0ZW1l
bnQ7CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50
PiBtX2RvbWFpbklERnJvbVN0cmluZ1N0YXRlbWVudDsKKyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fdG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNG
cm9tRXhpc3RzU3RhdGVtZW50OworICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
OlNRTGl0ZVN0YXRlbWVudD4gbV90b3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRzRXhpc3Rz
U3RhdGVtZW50OworICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0
YXRlbWVudD4gbV9zdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5FeGlzdHNTdGF0ZW1lbnQ7Cisg
ICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX3N1
YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbkV4aXN0c1N0YXRlbWVudDsKKyAgICBtdXRhYmxl
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fc3VicmVzb3VyY2VV
bmlxdWVSZWRpcmVjdHNUb0V4aXN0c1N0YXRlbWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX21vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25TdGF0ZW1l
bnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV91cGRh
dGVMYXN0U2VlblN0YXRlbWVudDsKKyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpTUUxpdGVTdGF0ZW1lbnQ+IG1fdXBkYXRlRGF0YVJlY29yZHNSZW1vdmVkU3RhdGVtZW50Owor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fdXBkYXRlUHJl
dmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQ7CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2lzUHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQ7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV91cGRhdGVWZXJ5
UHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQ7CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2lzVmVyeVByZXZhbGVudFJlc291cmNlU3RhdGVt
ZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fY2xl
YXJQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudDsKKyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1faGFkVXNlckludGVyYWN0aW9uU3RhdGVtZW50
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fdXBkYXRl
R3JhbmRmYXRoZXJlZFN0YXRlbWVudDsKKyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fdXBkYXRlSXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVE
YXRhUmVtb3ZhbFN0YXRlbWVudDsKKyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpTUUxpdGVTdGF0ZW1lbnQ+IG1faXNHcmFuZGZhdGhlcmVkU3RhdGVtZW50OworICAgIG11dGFi
bGUgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9maW5kRXhwaXJl
ZFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudDsKKyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fY291bnRQcmV2YWxlbnRSZXNvdXJjZXNTdGF0ZW1l
bnQ7CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50
PiBtX2NvdW50UHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudDsK
KyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1f
Y291bnRQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uU3RhdGVtZW50Owor
ICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9n
ZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQ7CisgICAgbXV0YWJsZSBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2dldEFsbERvbWFpbnNTdGF0ZW1l
bnQ7CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50
PiBtX2RvbWFpblN0cmluZ0Zyb21Eb21haW5JRFN0YXRlbWVudDsKKyAgICBtdXRhYmxlIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fZ2V0QWxsU3ViU3RhdGlzdGlj
c1N0YXRlbWVudDsKKyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVT
dGF0ZW1lbnQ+IG1fc3RvcmFnZUFjY2Vzc0V4aXN0c1N0YXRlbWVudDsKKyAgICBtdXRhYmxlIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fZ2V0TW9zdFJlY2VudGx5
VXBkYXRlZFRpbWVzdGFtcFN0YXRlbWVudDsKKyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fbGlua0RlY29yYXRpb25FeGlzdHNTdGF0ZW1lbnQ7
CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBt
X3NjcmlwdExvYWRFeGlzdHNTdGF0ZW1lbnQ7CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX3N1YkZyYW1lRXhpc3RzU3RhdGVtZW50OworICAg
IG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9zdWJS
ZXNvdXJjZUV4aXN0c1N0YXRlbWVudDsKKyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fdW5pcXVlUmVkaXJlY3RFeGlzdHNTdGF0ZW1lbnQ7Cisg
ICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX29i
c2VydmVkRG9tYWluc0V4aXN0c1N0YXRlbWVudDsKKyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fcmVtb3ZlQWxsRGF0YVN0YXRlbWVudDsKICAg
ICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKICAgICBib29sIG1faXNOZXdSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VGaWxlIHsgZmFsc2UgfTsKIH07Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>