<?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>64177</bug_id>
          
          <creation_ts>2011-07-08 10:45:06 -0700</creation_ts>
          <short_desc>ApplicationCache update should not immediately fail when reaching per-origin quota</short_desc>
          <delta_ts>2011-07-12 17:45:30 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>joepeck</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>434144</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-07-08 10:45:06 -0700</bug_when>
    <thetext>If the user intends to cache a page (despite the default quota), then the forced manual
reload of a page is annoying and wasteful. The update should only fail at the end,
if the user disallows a storage increase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434162</commentid>
    <comment_count>1</comment_count>
      <attachid>100137</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-07-08 11:11:02 -0700</bug_when>
    <thetext>Created attachment 100137
[PATCH] Patch without Boilerplate

This is the patch of the test + changes, without boilerplate crowding the patch.
A patch with ChangeLogs and other boilerplate will follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434164</commentid>
    <comment_count>2</comment_count>
      <attachid>100138</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-07-08 11:11:36 -0700</bug_when>
    <thetext>Created attachment 100138
[PATCH] Proposed Patch for Landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434174</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-08 11:15:53 -0700</bug_when>
    <thetext>Attachment 100138 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/http...&quot; exit_code: 1

Source/WebCore/page/ChromeClient.h:196:  The parameter name &quot;origin&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/loader/appcache/ApplicationCacheGroup.h:122:  The parameter name &quot;frame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 52 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434175</commentid>
    <comment_count>4</comment_count>
      <attachid>100137</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-07-08 11:16:15 -0700</bug_when>
    <thetext>Comment on attachment 100137
[PATCH] Patch without Boilerplate

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

&gt; LayoutTests/http/tests/appcache/resources/quota-origin-continued-download.manifest:5
&gt; +# will fire at the end, allowing an increase, and then a successful
&gt; +# cache with the new quota.

I will change this to: &quot;... and then successfully cache with the new quota.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434191</commentid>
    <comment_count>5</comment_count>
      <attachid>100138</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-07-08 11:34:27 -0700</bug_when>
    <thetext>Comment on attachment 100138
[PATCH] Proposed Patch for Landing

Attachment 100138 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/9003364</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434196</commentid>
    <comment_count>6</comment_count>
      <attachid>100138</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-07-08 11:41:20 -0700</bug_when>
    <thetext>Comment on attachment 100138
[PATCH] Proposed Patch for Landing

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

Looks good for the most part.

Many of my comments are for discussion, although I expect at least some of them to lead to code changes. Not accounting for other caches with the same origin seems like a clear mistake.

&gt; LayoutTests/ChangeLog:4
&gt; +        ApplicationCache update should not immediately fail when reaching per-origin quota
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=64177

ChangeLog needs an overview of the new behavior. There are at least two ways to fix the bug, the other being that we wait for user decision right after exceeding the quota (in that case, the user could get multiple prompts).

&gt; Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp:812
&gt; +void ApplicationCacheGroup::didReachOriginQuota(PassRefPtr&lt;Frame&gt; frame, int64_t spaceNeeded)
&gt;  {
&gt;      // Inform the client the origin quota has been reached,
&gt;      // they may decide to increase the quota.
&gt; -    frame-&gt;page()-&gt;chrome()-&gt;client()-&gt;reachedApplicationCacheOriginQuota(m_origin.get());
&gt; +    frame-&gt;page()-&gt;chrome()-&gt;client()-&gt;reachedApplicationCacheOriginQuota(m_origin.get(), spaceNeeded);

This seems wrong. The quota is per origin, and there may be other caches using part of it. You need to add up other caches sizes when asking the client.

&gt; Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp:909
&gt; +        // If we encountered the origin quota while downloading we can request a quota
&gt; +        // increase now, before we attempt to store the cache.
&gt; +        if (m_originQuotaReachedWhileDownloading)

Why do we need to pre-compute m_originQuotaReachedWhileDownloading? It seems that with the proposed logic, we can just compare the final size to quota here.

You also have console logging when this happens, but it seems that it would be more helpful to log the full size at the end, not just tell the developer which resource brought us over the limit.

&gt; Source/WebCore/loader/appcache/ApplicationCacheGroup.h:122
&gt; -    void didReachOriginQuota(PassRefPtr&lt;Frame&gt; frame);
&gt; +    void didReachOriginQuota(PassRefPtr&lt;Frame&gt; frame, int64_t spaceNeeded);

I think that the pre-exising use of PassRefPtr is incorrect, and it would be good to fix it now. We had a long discussion about that in webkit-dev recently, and it seemed that Darin and myself had the last word :)

&gt; Source/WebCore/loader/appcache/ApplicationCacheGroup.h:205
&gt; +    bool m_originQuotaReachedWhileDownloading;

&quot;DuringCurrentUpdate&quot; perhaps? Or maybe the variable is not needed at all.

&gt; Source/WebCore/loader/appcache/ApplicationCacheGroup.h:206
&gt; +    bool m_originQuotaReachedPreviously;

Is this to prevent downloading and asking for quota again if the user reloads the page? I think that this idea should be considered on its own merits in a separate patch.

Any such per-process state that&apos;s not saved persistently could be confusing to users of platforms that don&apos;t expose application lifetime explicitly.

&gt; Source/WebKit/mac/WebView/WebUIDelegatePrivate.h:208
&gt; +- (void)webView:(WebView *)sender exceededApplicationCacheOriginQuotaForSecurityOrigin:(WebSecurityOrigin *)origin spaceNeeded:(NSNumber *)spaceNeeded;

I don&apos;t see any reason to use NSNumber here. It&apos;s only needed to put numbers in plists and other collections.

But I&apos;m not absolutely sure what you want instead - likely NSUInteger, or maybe unsigned long long to match the type Foundation uses for file sizes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434289</commentid>
    <comment_count>7</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-07-08 13:55:00 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 100138 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=100138&amp;action=review
&gt; 
&gt; Looks good for the most part.
&gt; 
&gt; Many of my comments are for discussion, although I expect at least some of them to lead to code changes. Not accounting for other caches with the same origin seems like a clear mistake.

You&apos;re correct. This was a mistake!


&gt; &gt; LayoutTests/ChangeLog:4
&gt; &gt; +        ApplicationCache update should not immediately fail when reaching per-origin quota
&gt; &gt; +        https://bugs.webkit.org/show_bug.cgi?id=64177
&gt; 
&gt; ChangeLog needs an overview of the new behavior. There are at least two ways to fix the bug, the other being that we wait for user decision right after exceeding the quota (in that case, the user could get multiple prompts).

Yes, I don&apos;t think multiple prompts is a nice solution. I&apos;ll include some high level
descriptions in the important ChangeLogs.


&gt; &gt; Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp:812
&gt; &gt; +void ApplicationCacheGroup::didReachOriginQuota(PassRefPtr&lt;Frame&gt; frame, int64_t spaceNeeded)
&gt; &gt;  {
&gt; &gt;      // Inform the client the origin quota has been reached,
&gt; &gt;      // they may decide to increase the quota.
&gt; &gt; -    frame-&gt;page()-&gt;chrome()-&gt;client()-&gt;reachedApplicationCacheOriginQuota(m_origin.get());
&gt; &gt; +    frame-&gt;page()-&gt;chrome()-&gt;client()-&gt;reachedApplicationCacheOriginQuota(m_origin.get(), spaceNeeded);
&gt; 
&gt; This seems wrong. The quota is per origin, and there may be other caches using part of it. You need to add up other caches sizes when asking the client.

You&apos;re correct. The spaceNeeded was not taking the other caches into account.


&gt; &gt; Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp:909
&gt; &gt; +        // If we encountered the origin quota while downloading we can request a quota
&gt; &gt; +        // increase now, before we attempt to store the cache.
&gt; &gt; +        if (m_originQuotaReachedWhileDownloading)
&gt; 
&gt; Why do we need to pre-compute m_originQuotaReachedWhileDownloading? It seems that with the proposed logic, we can just compare the final size to quota here.
&gt; 
&gt; You also have console logging when this happens, but it seems that it would be more helpful to log the full size at the end, not just tell the developer which resource brought us over the limit.

The pre-compute was to prevent running some SQL commands, but I agree
that is probably the preferred solution so I&apos;ll change this.


&gt; &gt; Source/WebCore/loader/appcache/ApplicationCacheGroup.h:122
&gt; &gt; -    void didReachOriginQuota(PassRefPtr&lt;Frame&gt; frame);
&gt; &gt; +    void didReachOriginQuota(PassRefPtr&lt;Frame&gt; frame, int64_t spaceNeeded);
&gt; 
&gt; I think that the pre-exising use of PassRefPtr is incorrect, and it would be good to fix it now. We had a long discussion about that in webkit-dev recently, and it seemed that Darin and myself had the last word :)

Sure, I&apos;ll remove the param and use m_frame, since this function uses m_origin anyways.


&gt; &gt; Source/WebCore/loader/appcache/ApplicationCacheGroup.h:205
&gt; &gt; +    bool m_originQuotaReachedWhileDownloading;
&gt; 
&gt; &quot;DuringCurrentUpdate&quot; perhaps? Or maybe the variable is not needed at all.

By just checking the quota at the end of the download I&apos;ve removed this.


&gt; &gt; Source/WebCore/loader/appcache/ApplicationCacheGroup.h:206
&gt; &gt; +    bool m_originQuotaReachedPreviously;
&gt; 
&gt; Is this to prevent downloading and asking for quota again if the user reloads the page? I think that this idea should be considered on its own merits in a separate patch.
&gt; 
&gt; Any such per-process state that&apos;s not saved persistently could be confusing to users of platforms that don&apos;t expose application lifetime explicitly.

This is already the current behavior. I&apos;ve just renamed the variable and moved it
to a better spot. I can rip this out, but if so I&apos;d like to make that a separate patch,
with a test. That behavior is currently untested.


&gt; &gt; Source/WebKit/mac/WebView/WebUIDelegatePrivate.h:208
&gt; &gt; +- (void)webView:(WebView *)sender exceededApplicationCacheOriginQuotaForSecurityOrigin:(WebSecurityOrigin *)origin spaceNeeded:(NSNumber *)spaceNeeded;
&gt; 
&gt; I don&apos;t see any reason to use NSNumber here. It&apos;s only needed to put numbers in plists and other collections.
&gt; 
&gt; But I&apos;m not absolutely sure what you want instead - likely NSUInteger, or maybe unsigned long long to match the type Foundation uses for file sizes.

That sounds good, I&apos;ll gladly switch to NSUInteger.



(In reply to comment #5)
&gt; (From update of attachment 100138 [details])
&gt; Attachment 100138 [details] did not pass qt-ews (qt):
&gt; Output: http://queues.webkit.org/results/9003364

Looks like Qt has their own, separate, LayoutTestController implementation which
does not inherit from the default. I&apos;ll try to patch that up and see what the bot says!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434366</commentid>
    <comment_count>8</comment_count>
      <attachid>100181</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-07-08 16:12:19 -0700</bug_when>
    <thetext>Created attachment 100181
[PATCH] Address Comments

• Attempted to address Qt build issues.
• Addressed ap&apos;s Review comments:
  - fix the spaceNeeded parameter to account for other caches/manifests in the domain
    Added a test for this as well, which required changes the delegate dump&apos;d output.
• Implemented spaceNeeded for Qt to attempt to keep their tests from failing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434368</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-08 16:16:25 -0700</bug_when>
    <thetext>Attachment 100181 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/http...&quot; exit_code: 1

Tools/DumpRenderTree/qt/DumpRenderTreeQt.h:122:  The parameter name &quot;origin&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/qt/Api/qwebpage.h:397:  The parameter name &quot;origin&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 67 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434383</commentid>
    <comment_count>10</comment_count>
      <attachid>100181</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-07-08 16:37:24 -0700</bug_when>
    <thetext>Comment on attachment 100181
[PATCH] Address Comments

Attachment 100181 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/9001604</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434427</commentid>
    <comment_count>11</comment_count>
      <attachid>100181</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-07-08 18:04:20 -0700</bug_when>
    <thetext>Comment on attachment 100181
[PATCH] Address Comments

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

I haven&apos;t been able to follow the new logic in ApplicationCacheGroup::checkIfLoadIsComplete(). I&apos;d like to fully understand it, and will get back to it on Monday.

&gt; Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp:615
&gt;          cacheUpdateFailedDueToOriginQuota();
&gt; +        cacheUpdateFailed();

It&apos;s super confusing to have two &quot;failed&quot; calls, which do completely different things.

In fact, we should log different messages when the function is called for early abort here, and when it&apos;s called after full update.

&gt; Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp:937
&gt; +                // We ran out of space for this origin. Fall down to the normal error handling
&gt; +                // after recording this state.
&gt;                  cacheUpdateFailedDueToOriginQuota();

We should log cache size and quota size in this case (and possibly the size of other caches for this origin).

&gt; Source/WebCore/page/ChromeClient.h:196
&gt; +        virtual void reachedApplicationCacheOriginQuota(SecurityOrigin*, int64_t spaceNeeded) = 0;

It&apos;s not 100% clear if spaceNeeded is total space needed, or how much more space we need in addition to what we have.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434428</commentid>
    <comment_count>12</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-07-08 18:10:54 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 100181 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=100181&amp;action=review
&gt; 
&gt; I haven&apos;t been able to follow the new logic in ApplicationCacheGroup::checkIfLoadIsComplete(). I&apos;d like to fully understand it, and will get back to it on Monday.
&gt; 
&gt; &gt; Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp:615
&gt; &gt;          cacheUpdateFailedDueToOriginQuota();
&gt; &gt; +        cacheUpdateFailed();
&gt; 
&gt; It&apos;s super confusing to have two &quot;failed&quot; calls, which do completely different things.
&gt; 
&gt; In fact, we should log different messages when the function is called for early abort here, and when it&apos;s called after full update.

I can remove the cacheUpdateFailedDueToOriginQuota function and
instead pull its 1 or 2 lines out to the call sites.


&gt; &gt; Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp:937
&gt; &gt; +                // We ran out of space for this origin. Fall down to the normal error handling
&gt; &gt; +                // after recording this state.
&gt; &gt;                  cacheUpdateFailedDueToOriginQuota();
&gt; 
&gt; We should log cache size and quota size in this case (and possibly the size of other caches for this origin).

Can we leave that for a follow-up bug or would you like me to tackle that now?


&gt; &gt; Source/WebCore/page/ChromeClient.h:196
&gt; &gt; +        virtual void reachedApplicationCacheOriginQuota(SecurityOrigin*, int64_t spaceNeeded) = 0;
&gt; 
&gt; It&apos;s not 100% clear if spaceNeeded is total space needed, or how much more space we need in addition to what we have.

It is total space needed. I could improve the function&apos;s documentation and
rename the parameter to totalSpaceNeeded or something else.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434431</commentid>
    <comment_count>13</comment_count>
      <attachid>100196</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-07-08 18:25:57 -0700</bug_when>
    <thetext>Created attachment 100196
[PATCH] Attempt to Fix Qt Build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434432</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-08 18:27:40 -0700</bug_when>
    <thetext>Attachment 100196 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/http...&quot; exit_code: 1

Tools/DumpRenderTree/qt/DumpRenderTreeQt.h:122:  The parameter name &quot;origin&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/qt/Api/qwebpage.h:397:  The parameter name &quot;origin&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 67 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435843</commentid>
    <comment_count>15</comment_count>
      <attachid>100196</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-07-12 12:04:19 -0700</bug_when>
    <thetext>Comment on attachment 100196
[PATCH] Attempt to Fix Qt Build

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

&gt; It is total space needed. I could improve the function&apos;s documentation and
&gt; rename the parameter to totalSpaceNeeded or something else.

Yes, please do.

Looks good to me.

&gt; Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp:75
&gt; -    , m_originQuotaReached(false)
&gt; +    , m_originQuotaReachedPreviously(false)

Maybe s/reached/exceeded/? It doesn&apos;t seem confusing in practice though.

&gt; Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp:604
&gt; +    if (m_availableSpaceInQuota == ApplicationCacheStorage::unknownQuota())
&gt; +        recalculateAvailableSpaceInQuota();

Even if it&apos;s known, it could have changed due to another appcache in the same domain. That needs a FIXME comment.

&gt; Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp:615
&gt;          cacheUpdateFailedDueToOriginQuota();
&gt; +        cacheUpdateFailed();

I&apos;m still very unhappy to see two &quot;cacheUpdateFailed&quot; calls in a row.

&gt; Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp:803
&gt;      // Inform the client the origin quota has been reached,
&gt;      // they may decide to increase the quota.

This comment doesn&apos;t need to be split into two short lines.

Perhaps it&apos;s worth mentioning that we expect quota to be increased synchronously while waiting for the call to return. At least, I was confused about that despite having learned that while reviewing the original quota code.

&gt; Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp:827
&gt; +    if (!cacheStorage().remainingSizeForOriginExcludingCache(m_origin.get(), m_newestCache.get(), m_availableSpaceInQuota)) {
&gt; +        // Failed to determine what is left in the quota. Fallback to allowing anything.

It&apos;s a bad coding style violation that a function called remainingSizeForOriginExcludingCache() returns a boolean, not the remaining size. This is a pre-existing issue, and not something you did in this patch.

&gt; Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp:913
&gt; +        // If we encountered the origin quota while downloading we can request a quota
&gt; +        // increase now, before we attempt to store the cache.

s/encountered/exceeded/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435846</commentid>
    <comment_count>16</comment_count>
      <attachid>100196</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-07-12 12:07:15 -0700</bug_when>
    <thetext>Comment on attachment 100196
[PATCH] Attempt to Fix Qt Build

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

&gt; Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp:940
&gt;              if (failureReason == ApplicationCacheStorage::TotalQuotaReached &amp;&amp; !m_calledReachedMaxAppCacheSize) {

It&apos;s a pity that logic for total quota reached is so different from origin quota (I don&apos;t really understand what happens for global quota). Perhaps that&apos;s worth a FIXME too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435972</commentid>
    <comment_count>17</comment_count>
      <attachid>100196</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-07-12 14:41:22 -0700</bug_when>
    <thetext>Comment on attachment 100196
[PATCH] Attempt to Fix Qt Build

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

&gt;&gt; Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp:75
&gt;&gt; +    , m_originQuotaReachedPreviously(false)
&gt; 
&gt; Maybe s/reached/exceeded/? It doesn&apos;t seem confusing in practice though.

Sure, I&apos;ll make this rename. I think its clearer.

&gt;&gt; Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp:604
&gt;&gt; +        recalculateAvailableSpaceInQuota();
&gt; 
&gt; Even if it&apos;s known, it could have changed due to another appcache in the same domain. That needs a FIXME comment.

Done.

&gt;&gt; Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp:615
&gt;&gt; +        cacheUpdateFailed();
&gt; 
&gt; I&apos;m still very unhappy to see two &quot;cacheUpdateFailed&quot; calls in a row.

I removed this. I took the approach I mentioned in a previous comment and pulled the
log statement out to the call sites, and set the exceeded previously variable the only place
it was needed.

&gt;&gt; Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp:803
&gt;&gt;      // they may decide to increase the quota.
&gt; 
&gt; This comment doesn&apos;t need to be split into two short lines.
&gt; 
&gt; Perhaps it&apos;s worth mentioning that we expect quota to be increased synchronously while waiting for the call to return. At least, I was confused about that despite having learned that while reviewing the original quota code.

Done.

&gt;&gt; Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp:827
&gt;&gt; +        // Failed to determine what is left in the quota. Fallback to allowing anything.
&gt; 
&gt; It&apos;s a bad coding style violation that a function called remainingSizeForOriginExcludingCache() returns a boolean, not the remaining size. This is a pre-existing issue, and not something you did in this patch.

But it is something I did in a previous patch =/. It uses an out parameter with a return bool
for succeeded/failed. Should I switch instead to returning a number, and having a bool
out param for success/failure (like parseDouble from String)?

&gt;&gt; Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp:913

&gt; 
&gt; s/encountered/exceeded/

Done.

&gt;&gt; Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp:940
&gt;&gt;              if (failureReason == ApplicationCacheStorage::TotalQuotaReached &amp;&amp; !m_calledReachedMaxAppCacheSize) {
&gt; 
&gt; It&apos;s a pity that logic for total quota reached is so different from origin quota (I don&apos;t really understand what happens for global quota). Perhaps that&apos;s worth a FIXME too.

Will do, I also don&apos;t know exactly what happens here. I also don&apos;t think it should return here without
reseting the state. I added:

    // FIXME: Should this be handled more like Origin Quotas? Does this fail properly?

&gt;&gt; Tools/DumpRenderTree/qt/DumpRenderTreeQt.h:122
&gt;&gt; +    void dumpApplicationCacheQuota(QWebSecurityOrigin* origin, quint64 defaultOriginQuota, quint64 spaceNeeded);
&gt; 
&gt; The parameter name &quot;origin&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]

Old code, I&apos;ll leave it since the rest of this file has similar style warnings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435997</commentid>
    <comment_count>18</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-07-12 15:02:09 -0700</bug_when>
    <thetext>Landed in r90856 &lt;http://trac.webkit.org/changeset/90856&gt;.
Watching the bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436119</commentid>
    <comment_count>19</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-07-12 17:45:30 -0700</bug_when>
    <thetext>&gt; But it is something I did in a previous patch =/. It uses an out parameter with a return bool
&gt; for succeeded/failed. Should I switch instead to returning a number, and having a bool
&gt; out param for success/failure (like parseDouble from String)?

Just renaming it from remainingSizeForOriginExcludingCache() to calculateRemainingSizeForOriginExcludingCache() would do the trick. Your suggestion is fine too.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100137</attachid>
            <date>2011-07-08 11:11:02 -0700</date>
            <delta_ts>2011-07-08 16:12:19 -0700</delta_ts>
            <desc>[PATCH] Patch without Boilerplate</desc>
            <filename>non-boilerplate.patch</filename>
            <type>text/plain</type>
            <size>25221</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLXF1b3Rh
LWNvbnRpbnVlZC1kb3dubG9hZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2FwcGNhY2hlL29yaWdpbi1xdW90YS1jb250aW51ZWQtZG93bmxvYWQtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxMDNjYmQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90YS1jb250aW51
ZWQtZG93bmxvYWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorVUkgREVMRUdBVEUgQVBQ
TElDQVRJT04gQ0FDSEUgQ0FMTEJBQ0s6IGV4Y2VlZGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1
b3RhRm9yU2VjdXJpdHlPcmlnaW46e2h0dHAsIDEyNy4wLjAuMSwgODAwMH0KK1RoaXMgdGVzdCBj
aGVja3MgdGhhdCBwZXItb3JpZ2luIGFwcGxpY2F0aW9uIGNhY2hlIHF1b3RhIGRvbid0IHJlcXVp
cmUgYSByZWZyZXNoIHRvIGNvbXBsZXRlIHN1Y2Nlc3NmdWxseS4KKworVGhpcyB0ZXN0IHNldHMg
dGhlIHF1b3RhIGZvciB0aGUgb3JpZ2luIHRvIDFrYiwgYW5kIGF0dGVtcHRzIHRvIGZpbGwgaXQg
dXAgd2l0aCBtb3JlIHRoYW4gMWtiIG9mIGRhdGEuIFRoZSBkb3dubG9hZCBzaG91bGQgY29tcGxl
dGUgc3VjY2Vzc2Z1bGx5LCB3aXRoIHRoZSBxdW90YSBiZWluZyBpbmNyZWFzZWQgdG8gdGhlIGRl
ZmF1bHQgb2YgNU1CLiBUaGUgZGVsZWdhdGUgc2hvdWxkIGJlIGluZm9ybWVkIGZvciB0aGUgZXhj
ZWVkZWQgcXVvdGEsIGluY3JlYXNlIGl0IHRvIGEgc2l6ZSBsYXJnZSBlbm91Z2gsIGFuZCB0aGUg
ZG93bmxvYWQgc3VjY2VlZC4KKworUEFTUyAtIGNhY2hlZCBpZnJhbWUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tcXVvdGEtY29udGludWVkLWRv
d25sb2FkLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90
YS1jb250aW51ZWQtZG93bmxvYWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi44MDExOTAyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9h
cHBjYWNoZS9vcmlnaW4tcXVvdGEtY29udGludWVkLWRvd25sb2FkLmh0bWwKQEAgLTAsMCArMSw2
MCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisKKy8vIEhlbHBlcnMuCisKK2Z1bmN0aW9u
IGxvZyhtZXNzYWdlKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5p
bm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKK30KKworLy8gU3RhcnQgYW5kIGVuZC4KKwor
ZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuY2xlYXJBbGxBcHBsaWNhdGlvbkNh
Y2hlcygpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXBwbGljYXRpb25DYWNo
ZURlbGVnYXRlQ2FsbGJhY2tzKCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEFw
cGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSgxMDI0KTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7CisgICAgfQorCisgICAgYWRkSUZyYW1lKCk7Cit9CisKK2Z1bmN0aW9uIGZpbmlz
aFRlc3QoKSB7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCisvLyBTdGFnZXMuCisKK2Z1
bmN0aW9uIGFkZElGcmFtZVdpdGhDb250aW51YXRpb24oc3JjLCBjb250aW51YXRpb24pIHsKKyAg
ICB3aW5kb3cub25tZXNzYWdlID0gY29udGludWF0aW9uOworICAgIHZhciBpZnJhbWUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICBpZnJhbWUuc3JjID0gc3JjOworICAg
IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lKTsKK30KKworZnVuY3Rpb24gYWRkSUZy
YW1lKCkgeworICAgIC8vIEV4cGVjdGVkIHRvIHN1Y2NlZWQuIERlZmF1bHQgaGFuZGxpbmcgd2ls
bCByYWlzZSB0aGUgcXVvdGEgYmFjayB1cCB0byA1TUIgd2hpY2ggaXMgZW5vdWdoLgorICAgIGFk
ZElGcmFtZVdpdGhDb250aW51YXRpb24oInJlc291cmNlcy9xdW90YS1vcmlnaW4tY29udGludWVk
LWRvd25sb2FkLmh0bWwiLCBmdW5jdGlvbihldmVudCkgeworICAgICAgICBsb2coZXZlbnQuZGF0
YSk7CisgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICB9KTsKK30KKworPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keSBvbmxvYWQ9InN0YXJ0VGVzdCgpIj4KKzxwPlRoaXMgdGVzdCBjaGVja3MgdGhh
dCBwZXItb3JpZ2luIGFwcGxpY2F0aW9uIGNhY2hlIHF1b3RhIGRvbid0IHJlcXVpcmUgYSByZWZy
ZXNoIHRvIGNvbXBsZXRlIHN1Y2Nlc3NmdWxseS48L3A+Cis8cD4KKyAgICBUaGlzIHRlc3Qgc2V0
cyB0aGUgcXVvdGEgZm9yIHRoZSBvcmlnaW4gdG8gMWtiLCBhbmQgYXR0ZW1wdHMgdG8gZmlsbAor
ICAgIGl0IHVwIHdpdGggbW9yZSB0aGFuIDFrYiBvZiBkYXRhLiBUaGUgZG93bmxvYWQgc2hvdWxk
IGNvbXBsZXRlCisgICAgc3VjY2Vzc2Z1bGx5LCB3aXRoIHRoZSBxdW90YSBiZWluZyBpbmNyZWFz
ZWQgdG8gdGhlIGRlZmF1bHQgb2YgNU1CLiBUaGUKKyAgICBkZWxlZ2F0ZSBzaG91bGQgYmUgaW5m
b3JtZWQgZm9yIHRoZSBleGNlZWRlZCBxdW90YSwgaW5jcmVhc2UgaXQgdG8gYSBzaXplCisgICAg
bGFyZ2UgZW5vdWdoLCBhbmQgdGhlIGRvd25sb2FkIHN1Y2NlZWQuCis8L3A+Cis8cHJlIGlkPSJj
b25zb2xlIj48L3ByZT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLXF1b3RhLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90YS5odG1sCmluZGV4IGE3MzIyZmQuLmYwMDkwMGUg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLXF1b3Rh
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tcXVvdGEu
aHRtbApAQCAtMTQsNiArMTQsNyBAQCBmdW5jdGlvbiBzdGFydFRlc3QoKSB7CiAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewogICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5jbGVhckFsbEFwcGxpY2F0aW9uQ2FjaGVzKCk7CiAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3MoKTsKKyAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZGlzYWxsb3dJbmNyZWFzZUZvckFwcGxpY2F0aW9uQ2FjaGVRdW90
YSgpOwogICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRBcHBsaWNhdGlvbkNhY2hlT3Jp
Z2luUXVvdGEoMjAqMTAyNCk7CiAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwpAQCAt
NDYsOSArNDcsOSBAQCBmdW5jdGlvbiBhZGRGaXJzdElGcmFtZSgpIHsKIAogZnVuY3Rpb24gYWRk
U2Vjb25kSUZyYW1lKCkgewogICAgIC8vIEV4cGVjdGVkIHRvIGZhaWwsIHRoZW4gaW5jcmVhc2Ug
dGhlIHF1b3RhLgotICAgIC8vIE5PVEU6IFdoZW4gdGhpcyBmYWlscywgdGhlIGV4Y2VlZCBjYWxs
YmFjayB3aWxsIGF1dG9tYXRpY2FsbHkgaW5jcmVhc2UgaXQgYmFjayB0byB0aGUgZGVmYXVsdCBx
dW90YSBzaXplLgogICAgIGFkZElGcmFtZVdpdGhDb250aW51YXRpb24oInJlc291cmNlcy9xdW90
YS1vcmlnaW4taWZyYW1lLTIuaHRtbCIsIGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgIGxvZyhl
dmVudC5kYXRhKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0QXBwbGljYXRpb25D
YWNoZU9yaWdpblF1b3RhKDEwMCoxMDI0KTsKICAgICAgICAgYWRkVGhpcmRJRnJhbWUoKTsKICAg
ICB9KTsKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVz
b3VyY2VzL3F1b3RhLW9yaWdpbi1jb250aW51ZWQtZG93bmxvYWQuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL3F1b3RhLW9yaWdpbi1jb250aW51ZWQtZG93
bmxvYWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTQ0ZGZiCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJj
ZXMvcXVvdGEtb3JpZ2luLWNvbnRpbnVlZC1kb3dubG9hZC5odG1sCkBAIC0wLDAgKzEsOSBAQAor
PGh0bWwgbWFuaWZlc3Q9InF1b3RhLW9yaWdpbi1jb250aW51ZWQtZG93bmxvYWQubWFuaWZlc3Qi
PgorPHNjcmlwdD4KKy8vIFRoaXMgaXMgZXhwZWN0ZWQgdG8gc3VjY2VlZCB3aGVuIHRoZSBxdW90
YSBpcyByZWFjaGVkLCBkb3dubG9hZCBjb21wbGV0ZXMsIHRoZSB1c2VyIGlzIHByb21wdGVkLCBh
bmQgdGhleSBpbmNyZWFzZSBzdG9yYWdlLgorYXBwbGljYXRpb25DYWNoZS5vbmNhY2hlZCA9IGZ1
bmN0aW9uKCkgeyBwYXJlbnQucG9zdE1lc3NhZ2UoIlBBU1MgLSBjYWNoZWQgaWZyYW1lIiwgIioi
KTsgfTsKK2FwcGxpY2F0aW9uQ2FjaGUub25lcnJvciA9IGZ1bmN0aW9uKCkgeyBwYXJlbnQucG9z
dE1lc3NhZ2UoIkZBSUwgLSBlcnJvciBjYWNoaW5nIGlmcmFtZSwgZXhwZWN0ZWQgdGhpcyB0byBz
dWNjZWVkIHdpdGggdGhlIHF1b3RhIGluY3JlYXNlZCBhdXRvbWF0aWNhbGx5IiwgIioiKTsgfTsK
K2FwcGxpY2F0aW9uQ2FjaGUub251cGRhdGVyZWFkeSA9IGZ1bmN0aW9uKCkgeyBwYXJlbnQucG9z
dE1lc3NhZ2UoIkZBSUwgLSB1cGRhdGUgcmVhZHksIGFsbCBjYWNoZXMgc2hvdWxkIGhhdmUgYmVl
biBkZWxldGVkIGJlZm9yZSB0aGlzIHRlc3QiLCAiKiIpOyB9OworYXBwbGljYXRpb25DYWNoZS5v
bm5vdXBkYXRlID0gZnVuY3Rpb24oKSB7IHBhcmVudC5wb3N0TWVzc2FnZSgiRkFJTCAtIG5vIHVw
ZGF0ZSBpZnJhbWUsIGFsbCBjYWNoZXMgc2hvdWxkIGhhdmUgYmVlbiBkZWxldGVkIGJlZm9yZSB0
aGlzIHRlc3QiLCAiKiIpOyB9OworPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9xdW90YS1vcmlnaW4tY29udGlu
dWVkLWRvd25sb2FkLm1hbmlmZXN0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9y
ZXNvdXJjZXMvcXVvdGEtb3JpZ2luLWNvbnRpbnVlZC1kb3dubG9hZC5tYW5pZmVzdApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNmNlYzQxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvcXVvdGEtb3JpZ2luLWNv
bnRpbnVlZC1kb3dubG9hZC5tYW5pZmVzdApAQCAtMCwwICsxLDggQEAKK0NBQ0hFIE1BTklGRVNU
CisKKyMgVGhpcyBzaG91bGQgc3VjY2VlZC4gVGhlIHF1b3RhIHdpbGwgYmUgcmVhY2hlZCwgYnV0
IHRoZSBkZWxlZ2F0ZQorIyB3aWxsIGZpcmUgYXQgdGhlIGVuZCwgYWxsb3dpbmcgYW4gaW5jcmVh
c2UsIGFuZCB0aGVuIGEgc3VjY2Vzc2Z1bAorIyBjYWNoZSB3aXRoIHRoZSBuZXcgcXVvdGEuCisK
K0NBQ0hFOgorYWJlLnBuZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBj
YWNoZS9yZXNvdXJjZXMvcXVvdGEtb3JpZ2luLWlmcmFtZS0zLm1hbmlmZXN0IGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvcXVvdGEtb3JpZ2luLWlmcmFtZS0zLm1h
bmlmZXN0CmluZGV4IGJjMjk4NjcuLmE3ZTJkM2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL3F1b3RhLW9yaWdpbi1pZnJhbWUtMy5tYW5pZmVz
dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9xdW90YS1v
cmlnaW4taWZyYW1lLTMubWFuaWZlc3QKQEAgLTEsNiArMSw2IEBACiBDQUNIRSBNQU5JRkVTVAog
Ci0jIGlmcmFtZS0zIHNob3VsZCBzdWNjZWVkLiBUaGUgb3JpZ2luIHF1b3RhIHNodWxkIGhhdmUg
YmVlbgorIyBpZnJhbWUtMyBzaG91bGQgc3VjY2VlZC4gVGhlIG9yaWdpbiBxdW90YSBzaG91bGQg
aGF2ZSBiZWVuCiAjIHJhaXNlZCB0byA0MGtiLCB3aXRoIH4xM2tiIGFscmVhZHkgY2FjaGVkLiBD
YWNoaW5nIGFiZS5wbmcKICMgYW5kIHRoaXMgbWFuaWZlc3Qgd2lsbCBiZSB+MTNrYiwgYnJpbmdp
bmcgdXMgdXAgdG8gMjZrYi4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4
IDNmZjI1OGIuLjU1NGI1YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAg
LTE4NSw3ICsxODUsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElD
QVRJT05TKQogICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3Qp
IHsgfQotICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3Rh
KFNlY3VyaXR5T3JpZ2luKikgeyB9CisgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRBcHBsaWNhdGlv
bkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4qLCBpbnQ2NF90KSB7IH0KICNlbmRpZgog
CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDY0ZjdiNjgu
LjVhMzAwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC03Miw3ICs3Miw4IEBAIEFwcGxpY2F0aW9u
Q2FjaGVHcm91cDo6QXBwbGljYXRpb25DYWNoZUdyb3VwKGNvbnN0IEtVUkwmIG1hbmlmZXN0VVJM
LCBib29sIGlzQ29wCiAgICAgLCBtX2NhbGxlZFJlYWNoZWRNYXhBcHBDYWNoZVNpemUoZmFsc2Up
CiAgICAgLCBtX2xvYWRlZFNpemUoMCkKICAgICAsIG1fYXZhaWxhYmxlU3BhY2VJblF1b3RhKEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjp1bmtub3duUXVvdGEoKSkKLSAgICAsIG1fb3JpZ2luUXVv
dGFSZWFjaGVkKGZhbHNlKQorICAgICwgbV9vcmlnaW5RdW90YVJlYWNoZWRXaGlsZURvd25sb2Fk
aW5nKGZhbHNlKQorICAgICwgbV9vcmlnaW5RdW90YVJlYWNoZWRQcmV2aW91c2x5KGZhbHNlKQog
ewogfQogCkBAIC02MDAsMTggKzYwMSwyNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6
ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBkb3VibGUgZmluaQogCiAg
ICAgLy8gQWZ0ZXIgZmluaXNoaW5nIHRoZSBsb2FkaW5nIG9mIGFueSByZXNvdXJjZSwgd2UgY2hl
Y2sgaWYgaXQgd2lsbAogICAgIC8vIGZpdCBpbiBvdXIgbGFzdCBrbm93biBxdW90YSBsaW1pdC4K
LSAgICBpZiAobV9hdmFpbGFibGVTcGFjZUluUXVvdGEgPT0gQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2U6OnVua25vd25RdW90YSgpKSB7Ci0gICAgICAgIC8vIEZhaWxlZCB0byBkZXRlcm1pbmUgd2hh
dCBpcyBsZWZ0IGluIHRoZSBxdW90YS4gRmFsbGJhY2sgdG8gYWxsb3dpbmcgYW55dGhpbmcuCi0g
ICAgICAgIGlmICghY2FjaGVTdG9yYWdlKCkucmVtYWluaW5nU2l6ZUZvck9yaWdpbkV4Y2x1ZGlu
Z0NhY2hlKG1fb3JpZ2luLmdldCgpLCBtX25ld2VzdENhY2hlLmdldCgpLCBtX2F2YWlsYWJsZVNw
YWNlSW5RdW90YSkpCi0gICAgICAgICAgICBtX2F2YWlsYWJsZVNwYWNlSW5RdW90YSA9IEFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOjpub1F1b3RhKCk7Ci0gICAgfQorICAgIGlmIChtX2F2YWlsYWJs
ZVNwYWNlSW5RdW90YSA9PSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6dW5rbm93blF1b3RhKCkp
CisgICAgICAgIHJlY2FsY3VsYXRlQXZhaWxhYmxlU3BhY2VJblF1b3RhKCk7CiAKLSAgICAvLyBD
aGVjayBlYWNoIHJlc291cmNlLCBhcyBpdCBsb2FkcywgdG8gc2VlIGlmIGl0IHdvdWxkIGZpdCBp
biBvdXIKLSAgICAvLyBpZGVhIG9mIHRoZSBhdmFpbGFibGUgcXVvdGEgc3BhY2UuCi0gICAgaWYg
KG1fYXZhaWxhYmxlU3BhY2VJblF1b3RhIDwgbV9sb2FkZWRTaXplKSB7Ci0gICAgICAgIG1fY3Vy
cmVudFJlc291cmNlID0gMDsKLSAgICAgICAgY2FjaGVVcGRhdGVGYWlsZWREdWVUb09yaWdpblF1
b3RhKCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAvLyBXaGlsZSBkb3dubG9hZGluZyBjaGVjayB0
byBzZWUgaWYgd2UgaGF2ZSBleGNlZWRlZCB0aGUgYXZhaWxhYmxlIHF1b3RhLgorICAgIC8vIElm
IHdlIGhhdmUsIHNldCBhIGZsYWcgc28gdGhhdCB3ZSBjYW4gcmVxdWVzdCBhIHF1b3RhIGluY3Jl
YXNlIHdoZW4KKyAgICAvLyB3ZSBrbm93IHRoZSBmaW5hbCBzaXplIG9mIHRoZSBhcHBjYWNoZS4K
KyAgICBpZiAoIW1fb3JpZ2luUXVvdGFSZWFjaGVkV2hpbGVEb3dubG9hZGluZykgeworICAgICAg
ICBtX29yaWdpblF1b3RhUmVhY2hlZFdoaWxlRG93bmxvYWRpbmcgPSBtX2F2YWlsYWJsZVNwYWNl
SW5RdW90YSA8IG1fbG9hZGVkU2l6ZTsKKyAgICAgICAgCisgICAgICAgIC8vIFdlIGNhbiBzdG9w
IGltbWVkaWF0ZWx5IGlmIHdlIGhhdmUgYWxyZWFkeSBwcmV2aW91c2x5IGZhaWxlZAorICAgICAg
ICAvLyBkdWUgdG8gYSBxdW90YSByZXN0cmljdGlvbi4gVGhlIGNsaWVudCB3YXMgYWxyZWFkeSBu
b3RpZmllZAorICAgICAgICAvLyBvZiB0aGUgcXVvdGEgYmVpbmcgcmVhY2hlZCBhbmQgZGVjaWRl
ZCBub3QgdG8gaW5jcmVhc2UgaXQgdGhlbi4KKyAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBi
cmVhayBlYXJsaWVyIGFuZCBwcmV2ZW50IHJlZG93bmxvYWRpbmcgb24gbGF0ZXIgcGFnZSBsb2Fk
cz8KKyAgICAgICAgLy8gV2UgY291bGQgdGhlbiBhbHNvIGdldCByaWQgb2YgbV9sb2FkZWRTaXpl
IGFuZCBpbnN0ZWFkIGp1c3QgcHJlLWNoZWNrCisgICAgICAgIC8vIHRoZSBxdW90YSB3aGVuIHRo
ZSBkb3dubG9hZCBjb21wbGV0ZXMuCisgICAgICAgIGlmIChtX29yaWdpblF1b3RhUmVhY2hlZFdo
aWxlRG93bmxvYWRpbmcgJiYgbV9vcmlnaW5RdW90YVJlYWNoZWRQcmV2aW91c2x5KSB7CisgICAg
ICAgICAgICBtX2N1cnJlbnRSZXNvdXJjZSA9IDA7CisgICAgICAgICAgICBjYWNoZVVwZGF0ZUZh
aWxlZER1ZVRvT3JpZ2luUXVvdGEoKTsKKyAgICAgICAgICAgIGNhY2hlVXBkYXRlRmFpbGVkKCk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICB9CiAKICAgICBBU1NFUlQobV9j
dXJyZW50SGFuZGxlID09IGhhbmRsZSk7CkBAIC03OTUsMTEgKzgwNSwxMSBAQCB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDo6ZGlkUmVhY2hNYXhBcHBDYWNoZVNpemUoKQogICAgIGNoZWNrSWZM
b2FkSXNDb21wbGV0ZSgpOwogfQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkUmVh
Y2hPcmlnaW5RdW90YShQYXNzUmVmUHRyPEZyYW1lPiBmcmFtZSkKK3ZvaWQgQXBwbGljYXRpb25D
YWNoZUdyb3VwOjpkaWRSZWFjaE9yaWdpblF1b3RhKFBhc3NSZWZQdHI8RnJhbWU+IGZyYW1lLCBp
bnQ2NF90IHNwYWNlTmVlZGVkKQogewogICAgIC8vIEluZm9ybSB0aGUgY2xpZW50IHRoZSBvcmln
aW4gcXVvdGEgaGFzIGJlZW4gcmVhY2hlZCwKICAgICAvLyB0aGV5IG1heSBkZWNpZGUgdG8gaW5j
cmVhc2UgdGhlIHF1b3RhLgotICAgIGZyYW1lLT5wYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+
cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShtX29yaWdpbi5nZXQoKSk7CisgICAg
ZnJhbWUtPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5yZWFjaGVkQXBwbGljYXRpb25DYWNo
ZU9yaWdpblF1b3RhKG1fb3JpZ2luLmdldCgpLCBzcGFjZU5lZWRlZCk7CiB9CiAKIHZvaWQgQXBw
bGljYXRpb25DYWNoZUdyb3VwOjpjYWNoZVVwZGF0ZUZhaWxlZCgpCkBAIC04MTQsMTUgKzgyNCwx
NyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2FjaGVVcGRhdGVGYWlsZWQoKQogCiB2
b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2FjaGVVcGRhdGVGYWlsZWREdWVUb09yaWdpblF1
b3RhKCkKIHsKLSAgICBpZiAoIW1fb3JpZ2luUXVvdGFSZWFjaGVkKSB7Ci0gICAgICAgIG1fb3Jp
Z2luUXVvdGFSZWFjaGVkID0gdHJ1ZTsKLSAgICAgICAgc2NoZWR1bGVSZWFjaGVkT3JpZ2luUXVv
dGFDYWxsYmFjaygpOwotICAgIH0KKyAgICBtX29yaWdpblF1b3RhUmVhY2hlZFByZXZpb3VzbHkg
PSB0cnVlOwogCiAgICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2Fn
ZShPdGhlck1lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwg
IkFwcGxpY2F0aW9uIENhY2hlIHVwZGF0ZSBmYWlsZWQsIGJlY2F1c2Ugc2l6ZSBxdW90YSB3YXMg
ZXhjZWVkZWQuIiwgMCwgU3RyaW5nKCkpOworfQogCi0gICAgLy8gRklYTUU6IFNob3VsZCBub3Qg
YWJvcnQgY2FjaGUgdXBkYXRlIC0gdGhlIHVzZXIgbWF5IGNob29zZSB0byBpbmNyZWFzZSB0aGUg
cXVvdGEuCi0gICAgY2FjaGVVcGRhdGVGYWlsZWQoKTsKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUdy
b3VwOjpyZWNhbGN1bGF0ZUF2YWlsYWJsZVNwYWNlSW5RdW90YSgpCit7CisgICAgaWYgKCFjYWNo
ZVN0b3JhZ2UoKS5yZW1haW5pbmdTaXplRm9yT3JpZ2luRXhjbHVkaW5nQ2FjaGUobV9vcmlnaW4u
Z2V0KCksIG1fbmV3ZXN0Q2FjaGUuZ2V0KCksIG1fYXZhaWxhYmxlU3BhY2VJblF1b3RhKSkgewor
ICAgICAgICAvLyBGYWlsZWQgdG8gZGV0ZXJtaW5lIHdoYXQgaXMgbGVmdCBpbiB0aGUgcXVvdGEu
IEZhbGxiYWNrIHRvIGFsbG93aW5nIGFueXRoaW5nLgorICAgICAgICBtX2F2YWlsYWJsZVNwYWNl
SW5RdW90YSA9IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpub1F1b3RhKCk7CisgICAgfQogfQog
ICAgIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6Om1hbmlmZXN0Tm90Rm91bmQoKQpAQCAt
ODkyLDYgKzkwNCwxMSBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2hlY2tJZkxvYWRJ
c0NvbXBsZXRlKCkKICAgICBjYXNlIENvbXBsZXRlZDogewogICAgICAgICAvLyBGSVhNRTogRmV0
Y2ggdGhlIHJlc291cmNlIGZyb20gbWFuaWZlc3QgVVJMIGFnYWluLCBhbmQgY2hlY2sgd2hldGhl
ciBpdCBpcyBpZGVudGljYWwgdG8gdGhlIG9uZSB1c2VkIGZvciB1cGRhdGUgKGluIGNhc2UgdGhl
IGFwcGxpY2F0aW9uIHdhcyB1cGdyYWRlZCBzZXJ2ZXItc2lkZSBpbiB0aGUgbWVhbndoaWxlKS4g
KDxyZGFyOi8vcHJvYmxlbS82NDY3NjI1PikKIAorICAgICAgICAvLyBJZiB3ZSBlbmNvdW50ZXJl
ZCB0aGUgb3JpZ2luIHF1b3RhIHdoaWxlIGRvd25sb2FkaW5nIHdlIGNhbiByZXF1ZXN0IGEgcXVv
dGEKKyAgICAgICAgLy8gaW5jcmVhc2Ugbm93LCBiZWZvcmUgd2UgYXR0ZW1wdCB0byBzdG9yZSB0
aGUgY2FjaGUuCisgICAgICAgIGlmIChtX29yaWdpblF1b3RhUmVhY2hlZFdoaWxlRG93bmxvYWRp
bmcpCisgICAgICAgICAgICBkaWRSZWFjaE9yaWdpblF1b3RhKG1fZnJhbWUsIG1fY2FjaGVCZWlu
Z1VwZGF0ZWQtPmVzdGltYXRlZFNpemVJblN0b3JhZ2UoKSk7CisKICAgICAgICAgQVNTRVJUKG1f
Y2FjaGVCZWluZ1VwZGF0ZWQpOwogICAgICAgICBpZiAobV9tYW5pZmVzdFJlc291cmNlKQogICAg
ICAgICAgICAgbV9jYWNoZUJlaW5nVXBkYXRlZC0+c2V0TWFuaWZlc3RSZXNvdXJjZShtX21hbmlm
ZXN0UmVzb3VyY2UucmVsZWFzZSgpKTsKQEAgLTkxOCwxNCArOTM1LDEyIEBAIHZvaWQgQXBwbGlj
YXRpb25DYWNoZUdyb3VwOjpjaGVja0lmTG9hZElzQ29tcGxldGUoKQogICAgICAgICAgICAgLy8g
RmlyZSB0aGUgc3VjY2VzcyBldmVudC4KICAgICAgICAgICAgIHBvc3RMaXN0ZW5lclRhc2soaXNV
cGdyYWRlQXR0ZW1wdCA/IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpVUERBVEVSRUFEWV9FVkVOVCA6
IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpDQUNIRURfRVZFTlQsIG1fYXNzb2NpYXRlZERvY3VtZW50
TG9hZGVycyk7CiAgICAgICAgICAgICAvLyBJdCBpcyBjbGVhciB0aGF0IHRoZSBvcmlnaW4gcXVv
dGEgd2FzIG5vdCByZWFjaGVkLCBzbyBjbGVhciB0aGUgZmxhZyBpZiBpdCB3YXMgc2V0LgotICAg
ICAgICAgICAgbV9vcmlnaW5RdW90YVJlYWNoZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIG1fb3Jp
Z2luUXVvdGFSZWFjaGVkUHJldmlvdXNseSA9IGZhbHNlOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgaWYgKGZhaWx1cmVSZWFzb24gPT0gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Ok9y
aWdpblF1b3RhUmVhY2hlZCkgewotICAgICAgICAgICAgICAgIC8vIFdlIHJhbiBvdXQgb2Ygc3Bh
Y2UgZm9yIHRoaXMgb3JpZ2luLiBSb2xsIGJhY2sgdG8gcHJldmlvdXMgc3RhdGUuCi0gICAgICAg
ICAgICAgICAgaWYgKG9sZE5ld2VzdENhY2hlKQotICAgICAgICAgICAgICAgICAgICBzZXROZXdl
c3RDYWNoZShvbGROZXdlc3RDYWNoZS5yZWxlYXNlKCkpOworICAgICAgICAgICAgICAgIC8vIFdl
IHJhbiBvdXQgb2Ygc3BhY2UgZm9yIHRoaXMgb3JpZ2luLiBGYWxsIGRvd24gdG8gdGhlIG5vcm1h
bCBlcnJvciBoYW5kbGluZworICAgICAgICAgICAgICAgIC8vIGFmdGVyIHJlY29yZGluZyB0aGlz
IHN0YXRlLgogICAgICAgICAgICAgICAgIGNhY2hlVXBkYXRlRmFpbGVkRHVlVG9PcmlnaW5RdW90
YSgpOwotICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgaWYgKGZhaWx1cmVSZWFzb24gPT0gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OlRvdGFsUXVv
dGFSZWFjaGVkICYmICFtX2NhbGxlZFJlYWNoZWRNYXhBcHBDYWNoZVNpemUpIHsKQEAgLTk3OCw2
ICs5OTMsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2hlY2tJZkxvYWRJc0NvbXBs
ZXRlKCkKICAgICBzZXRVcGRhdGVTdGF0dXMoSWRsZSk7CiAgICAgbV9mcmFtZSA9IDA7CiAgICAg
bV9sb2FkZWRTaXplID0gMDsKKyAgICBtX29yaWdpblF1b3RhUmVhY2hlZFdoaWxlRG93bmxvYWRp
bmcgPSBmYWxzZTsKICAgICBtX2F2YWlsYWJsZVNwYWNlSW5RdW90YSA9IEFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlOjp1bmtub3duUXVvdGEoKTsKICAgICBtX2NhbGxlZFJlYWNoZWRNYXhBcHBDYWNo
ZVNpemUgPSBmYWxzZTsKIH0KQEAgLTEwOTIsMTIgKzExMDgsNiBAQCB2b2lkIEFwcGxpY2F0aW9u
Q2FjaGVHcm91cDo6c2NoZWR1bGVSZWFjaGVkTWF4QXBwQ2FjaGVTaXplQ2FsbGJhY2soKQogICAg
IC8vIFRoZSB0aW1lciB3aWxsIGRlbGV0ZSBpdHNlbGYgb25jZSBpdCBmaXJlcy4KIH0KIAotdm9p
ZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNjaGVkdWxlUmVhY2hlZE9yaWdpblF1b3RhQ2FsbGJh
Y2soKQotewotICAgIC8vIEZJWE1FOiBpdCBtaWdodCBiZSBuaWNlIHRvIHJ1biB0aGlzIGFzeW5j
aHJvbm91c2x5LCBiZWNhdXNlIHRoZXJlIGlzIG5vIHJldHVybiB2YWx1ZSB0byB3YWl0IGZvci4K
LSAgICBkaWRSZWFjaE9yaWdpblF1b3RhKG1fZnJhbWUpOwotfQotCiBjbGFzcyBDYWxsQ2FjaGVM
aXN0ZW5lclRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8Q2FsbENhY2hlTGlzdGVuZXJUYXNrPiBjcmVhdGUo
UGFzc1JlZlB0cjxEb2N1bWVudExvYWRlcj4gbG9hZGVyLCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
RXZlbnRJRCBldmVudElELCBpbnQgcHJvZ3Jlc3NUb3RhbCwgaW50IHByb2dyZXNzRG9uZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
R3JvdXAuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
R3JvdXAuaAppbmRleCBhYjdiMTZiLi4zMDQzMWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCkBAIC0xMDMsNyAr
MTAzLDYgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBwb3N0TGlzdGVuZXJUYXNrKEFwcGxp
Y2F0aW9uQ2FjaGVIb3N0OjpFdmVudElELCBpbnQgcHJvZ3Jlc3NUb3RhbCwgaW50IHByb2dyZXNz
RG9uZSwgRG9jdW1lbnRMb2FkZXIqKTsKIAogICAgIHZvaWQgc2NoZWR1bGVSZWFjaGVkTWF4QXBw
Q2FjaGVTaXplQ2FsbGJhY2soKTsKLSAgICB2b2lkIHNjaGVkdWxlUmVhY2hlZE9yaWdpblF1b3Rh
Q2FsbGJhY2soKTsKIAogICAgIFBhc3NSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IGNyZWF0ZVJlc291
cmNlSGFuZGxlKGNvbnN0IEtVUkwmLCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIG5ld2VzdENh
Y2hlZFJlc291cmNlKTsKIApAQCAtMTIwLDEzICsxMTksMTQgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRpZFJlY2VpdmVNYW5pZmVzdERhdGEoY29uc3QgY2hhciosIGludCk7CiAgICAgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nTWFuaWZlc3QoKTsKICAgICB2b2lkIGRpZFJlYWNoTWF4QXBwQ2FjaGVTaXpl
KCk7Ci0gICAgdm9pZCBkaWRSZWFjaE9yaWdpblF1b3RhKFBhc3NSZWZQdHI8RnJhbWU+IGZyYW1l
KTsKKyAgICB2b2lkIGRpZFJlYWNoT3JpZ2luUXVvdGEoUGFzc1JlZlB0cjxGcmFtZT4gZnJhbWUs
IGludDY0X3Qgc3BhY2VOZWVkZWQpOwogICAgIAogICAgIHZvaWQgc3RhcnRMb2FkaW5nRW50cnko
KTsKICAgICB2b2lkIGRlbGl2ZXJEZWxheWVkTWFpblJlc291cmNlcygpOwogICAgIHZvaWQgY2hl
Y2tJZkxvYWRJc0NvbXBsZXRlKCk7CiAgICAgdm9pZCBjYWNoZVVwZGF0ZUZhaWxlZCgpOwogICAg
IHZvaWQgY2FjaGVVcGRhdGVGYWlsZWREdWVUb09yaWdpblF1b3RhKCk7CisgICAgdm9pZCByZWNh
bGN1bGF0ZUF2YWlsYWJsZVNwYWNlSW5RdW90YSgpOwogICAgIHZvaWQgbWFuaWZlc3ROb3RGb3Vu
ZCgpOwogICAgIAogICAgIHZvaWQgYWRkRW50cnkoY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgdHlw
ZSk7CkBAIC0yMDIsNyArMjAyLDggQEAgcHJpdmF0ZToKIAogICAgIGludDY0X3QgbV9sb2FkZWRT
aXplOwogICAgIGludDY0X3QgbV9hdmFpbGFibGVTcGFjZUluUXVvdGE7Ci0gICAgYm9vbCBtX29y
aWdpblF1b3RhUmVhY2hlZDsKKyAgICBib29sIG1fb3JpZ2luUXVvdGFSZWFjaGVkV2hpbGVEb3du
bG9hZGluZzsKKyAgICBib29sIG1fb3JpZ2luUXVvdGFSZWFjaGVkUHJldmlvdXNseTsKIAogICAg
IGZyaWVuZCBjbGFzcyBDaHJvbWVDbGllbnRDYWxsYmFja1RpbWVyOwogICAgIGZyaWVuZCBjbGFz
cyBPcmlnaW5RdW90YVJlYWNoZWRDYWxsYmFja1RpbWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xp
ZW50LmgKaW5kZXggYTI3Yzc2Ni4uNGIzNDFmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVu
dC5oCkBAIC0xOTMsNyArMTkzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBt
b3JlIHRoYW4gYWxsb3dlZCBvbiB0aGlzIG9yaWdpbi4gVGhpcyBjYWxsYmFjayBhbGxvd3MgdGhl
IGNocm9tZSBjbGllbnQKICAgICAgICAgLy8gdG8gdGFrZSBhY3Rpb24sIHN1Y2ggYXMgcHJvbXB0
aW5nIHRoZSB1c2VyIHRvIGFzayB0byBpbmNyZWFzZSB0aGUgcXVvdGEKICAgICAgICAgLy8gZm9y
IHRoaXMgb3JpZ2luLgotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2Fj
aGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiogb3JpZ2luKSA9IDA7CisgICAgICAgIHZpcnR1
YWwgdm9pZCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2lu
KiBvcmlnaW4sIGludDY0X3Qgc3BhY2VOZWVkZWQpID0gMDsKICNlbmRpZgogCiAjaWYgRU5BQkxF
KERBU0hCT0FSRF9TVVBQT1JUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBkNGQ2ZWI2Li5jNjZiM2UzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAt
MTE2LDcgKzExNiw3IEBAIHB1YmxpYzoKICNlbmRpZgogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9B
UFBMSUNBVElPTlMpCiAgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRNYXhBcHBDYWNoZVNpemUoaW50
NjRfdCBzcGFjZU5lZWRlZCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNh
Y2hlT3JpZ2luUXVvdGEoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qKTsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbiosIGludDY0X3Qgc3BhY2VOZWVkZWQpOwogI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIHBv
cHVsYXRlVmlzaXRlZExpbmtzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQppbmRleCA3MjE4MWM0Li4yZjlkMTliIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
Lm1tCkBAIC02OTgsMTIgKzY5OCwxMyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6cmVhY2hlZE1h
eEFwcENhY2hlU2l6ZShpbnQ2NF90IHNwYWNlTmVlZGVkKQogICAgIC8vIEZJWE1FOiBGcmVlIHNv
bWUgc3BhY2UuCiB9CiAKLXZvaWQgV2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwbGljYXRpb25D
YWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCit2b2lkIFdlYkNocm9tZUNs
aWVudDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiog
b3JpZ2luLCBpbnQ2NF90IHNwYWNlTmVlZGVkKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUzsKIAogICAgIFdlYlNlY3VyaXR5T3JpZ2luICp3ZWJPcmlnaW4gPSBbW1dlYlNlY3Vy
aXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46b3JpZ2luXTsK
LSAgICBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmV4Y2VlZGVk
QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhRm9yU2VjdXJpdHlPcmlnaW46KSwgd2ViT3JpZ2lu
KTsKKyAgICBOU051bWJlciAqc3BhY2VOZWVkZWROdW1iZXIgPSBbTlNOdW1iZXIgbnVtYmVyV2l0
aExvbmdMb25nOnNwYWNlTmVlZGVkXTsKKyAgICBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZpZXcsIEBz
ZWxlY3Rvcih3ZWJWaWV3OmV4Y2VlZGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhRm9yU2Vj
dXJpdHlPcmlnaW46c3BhY2VOZWVkZWQ6KSwgd2ViT3JpZ2luLCBzcGFjZU5lZWRlZE51bWJlcik7
CiAgICAgW3dlYk9yaWdpbiByZWxlYXNlXTsKIAogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElP
TlM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlVJRGVsZWdhdGVQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlVJRGVsZWdhdGVQcml2YXRl
LmgKaW5kZXggOTBjZmJkZi4uNjczMzBlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJVSURlbGVnYXRlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaApAQCAtMTk3LDE0ICsxOTcsMTUgQEAgZXh0ZXJu
IE5TU3RyaW5nICpXZWJDb25zb2xlTWVzc2FnZURlYnVnTWVzc2FnZUxldmVsOwogLSAodm9pZCl3
ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGZyYW1lOihXZWJGcmFtZSAqKWZyYW1lIGV4Y2VlZGVk
RGF0YWJhc2VRdW90YUZvclNlY3VyaXR5T3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdp
biBkYXRhYmFzZTooTlNTdHJpbmcgKilkYXRhYmFzZUlkZW50aWZpZXI7CiAKIC8qIQotICAgIEBt
ZXRob2Qgd2ViVmlldzpleGNlZWRlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YUZvclNlY3Vy
aXR5T3JpZ2luOgorICAgIEBtZXRob2Qgd2ViVmlldzpleGNlZWRlZEFwcGxpY2F0aW9uQ2FjaGVP
cmlnaW5RdW90YUZvclNlY3VyaXR5T3JpZ2luOnNwYWNlTmVlZGVkOgogICAgIEBwYXJhbSBzZW5k
ZXIgVGhlIFdlYlZpZXcgc2VuZGluZyB0aGUgZGVsZWdhdGUgbWV0aG9kLgotICAgIEBwYXJhbSBv
cmlnaW4gVGhlIHNlY3VyaXR5IG9yaWdpbiB0aGF0IG5lZWRzIGEgbGFyZ2VyIHF1b3RhCisgICAg
QHBhcmFtIG9yaWdpbiBUaGUgc2VjdXJpdHkgb3JpZ2luIHRoYXQgbmVlZHMgYSBsYXJnZXIgcXVv
dGEuCisgICAgQHBhcmFtIHNwYWNlTmVlZGVkIFRoZSBhbW91bnQgb2Ygc3BhY2UgbmVlZGVkIHRv
IHN0b3JlIHRoZSBlbnRpcmUgbWFuaWZlc3QuCiAgICAgQGRpc2N1c3Npb24gVGhpcyBtZXRob2Qg
aXMgY2FsbGVkIHdoZW4gYSBwYWdlIGF0dGVtcHRzIHRvIHN0b3JlIG1vcmUgaW4gdGhlIEFwcGxp
Y2F0aW9uIENhY2hlCiAgICAgZm9yIGFuIG9yaWdpbiB0aGFuIHdhcyBhbGxvd2VkIGJ5IHRoZSBx
dW90YSAob3IgZGVmYXVsdCkgc2V0IGZvciB0aGUgb3JpZ2luLiBUaGlzIGFsbG93cyB0aGUKICAg
ICBxdW90YSB0byBiZSBpbmNyZWFzZWQgZm9yIHRoZSBzZWN1cml0eSBvcmlnaW4uCiAqLwotLSAo
dm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGV4Y2VlZGVkQXBwbGljYXRpb25DYWNoZU9y
aWdpblF1b3RhRm9yU2VjdXJpdHlPcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luOwor
LSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGV4Y2VlZGVkQXBwbGljYXRpb25DYWNo
ZU9yaWdpblF1b3RhRm9yU2VjdXJpdHlPcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2lu
IHNwYWNlTmVlZGVkOihOU051bWJlciAqKXNwYWNlTmVlZGVkOwogCiAtIChXZWJWaWV3ICopd2Vi
VmlldzooV2ViVmlldyAqKXNlbmRlciBjcmVhdGVXZWJWaWV3V2l0aFJlcXVlc3Q6KE5TVVJMUmVx
dWVzdCAqKXJlcXVlc3Qgd2luZG93RmVhdHVyZXM6KE5TRGljdGlvbmFyeSAqKWZlYXR1cmVzOwog
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5j
cHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXgg
ZGY2ZjM1MS4uOTkyMjIxOCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RD
b250cm9sbGVyLmNwcApAQCAtNDMsNyArNDMsOCBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
IAogTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKGNvbnN0IHN0ZDo6
c3RyaW5nJiB0ZXN0UGF0aE9yVVJMLCBjb25zdCBzdGQ6OnN0cmluZyYgZXhwZWN0ZWRQaXhlbEhh
c2gpCi0gICAgOiBtX2R1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3MoZmFsc2Up
CisgICAgOiBtX2Rpc2FsbG93SW5jcmVhc2VGb3JBcHBsaWNhdGlvbkNhY2hlUXVvdGEoZmFsc2Up
CisgICAgLCBtX2R1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3MoZmFsc2UpCiAg
ICAgLCBtX2R1bXBBc0F1ZGlvKGZhbHNlKQogICAgICwgbV9kdW1wQXNQREYoZmFsc2UpCiAgICAg
LCBtX2R1bXBBc1RleHQoZmFsc2UpCkBAIC05OCw2ICs5OSwxMyBAQCBQYXNzUmVmUHRyPExheW91
dFRlc3RDb250cm9sbGVyPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y3JlYXRlKGNvbnN0IHN0ZDo6
c3RyaW5nJgogCiAvLyBTdGF0aWMgRnVuY3Rpb25zCiAKK3N0YXRpYyBKU1ZhbHVlUmVmIGRpc2Fs
bG93SW5jcmVhc2VGb3JBcHBsaWNhdGlvbkNhY2hlUXVvdGFDYWxsYmFjayhKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNp
emVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVl
UmVmKiBleGNlcHRpb24pCit7CisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIg
PSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0
aGlzT2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+c2V0RGlzYWxsb3dJbmNyZWFzZUZvckFwcGxp
Y2F0aW9uQ2FjaGVRdW90YSh0cnVlKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQo
Y29udGV4dCk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIGR1bXBBcHBsaWNhdGlvbkNhY2hlRGVs
ZWdhdGVDYWxsYmFja3NDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYg
ZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBj
b25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAg
ICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRU
ZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CkBAIC0yMjYz
LDYgKzIyNzEsNyBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3Rh
dGljRnVuY3Rpb25zKCkKICAgICAgICAgeyAibm9kZXNGcm9tUmVjdCIsIG5vZGVzRnJvbVJlY3RD
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJkZWNvZGVIb3N0TmFtZSIsIGRlY29kZUhvc3RO
YW1lQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiZGlzYWJsZUltYWdlTG9hZGluZyIsIGRp
c2FibGVJbWFnZUxvYWRpbmdDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJkaXNhbGxvd0lu
Y3JlYXNlRm9yQXBwbGljYXRpb25DYWNoZVF1b3RhIiwgZGlzYWxsb3dJbmNyZWFzZUZvckFwcGxp
Y2F0aW9uQ2FjaGVRdW90YUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwg
a0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImRpc3BhdGNoUGVu
ZGluZ0xvYWRSZXF1ZXN0cyIsIGRpc3BhdGNoUGVuZGluZ0xvYWRSZXF1ZXN0c0NhbGxiYWNrLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVs
ZXRlIH0sCiAgICAgICAgIHsgImRpc3BsYXkiLCBkaXNwbGF5Q2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAg
ICAgICAgeyAiZGlzcGxheUludmFsaWRhdGVkUmVnaW9uIiwgZGlzcGxheUludmFsaWRhdGVkUmVn
aW9uQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZURvbnREZWxldGUgfSwKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xh
eW91dFRlc3RDb250cm9sbGVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5oCmluZGV4IGRmNzViZWEuLjEzYWZhOTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtMTU1LDYgKzE1NSw5IEBAIHB1YmxpYzoKICAg
ICBib29sIGdlbmVyYXRlUGl4ZWxSZXN1bHRzKCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0ZVBp
eGVsUmVzdWx0czsgfQogICAgIHZvaWQgc2V0R2VuZXJhdGVQaXhlbFJlc3VsdHMoYm9vbCBnZW5l
cmF0ZVBpeGVsUmVzdWx0cykgeyBtX2dlbmVyYXRlUGl4ZWxSZXN1bHRzID0gZ2VuZXJhdGVQaXhl
bFJlc3VsdHM7IH0KIAorICAgIGJvb2wgZGlzYWxsb3dJbmNyZWFzZUZvckFwcGxpY2F0aW9uQ2Fj
aGVRdW90YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzYWxsb3dJbmNyZWFzZUZvckFwcGxpY2F0aW9u
Q2FjaGVRdW90YTsgfQorICAgIHZvaWQgc2V0RGlzYWxsb3dJbmNyZWFzZUZvckFwcGxpY2F0aW9u
Q2FjaGVRdW90YShib29sIGRpc2FsbG93SW5jcmVhc2UpIHsgbV9kaXNhbGxvd0luY3JlYXNlRm9y
QXBwbGljYXRpb25DYWNoZVF1b3RhID0gZGlzYWxsb3dJbmNyZWFzZTsgfQorCiAgICAgYm9vbCBk
dW1wQXBwbGljYXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzKCkgY29uc3QgeyByZXR1cm4gbV9k
dW1wQXBwbGljYXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzOyB9CiAgICAgdm9pZCBzZXREdW1w
QXBwbGljYXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzKGJvb2wgZHVtcENhbGxiYWNrcykgeyBt
X2R1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3MgPSBkdW1wQ2FsbGJhY2tzOyB9
CiAKQEAgLTM1MSw2ICszNTQsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXRHZW9sb2NhdGlv
blBlcm1pc3Npb25Db21tb24oYm9vbCBhbGxvdyk7CiAKKyAgICBib29sIG1fZGlzYWxsb3dJbmNy
ZWFzZUZvckFwcGxpY2F0aW9uQ2FjaGVRdW90YTsKICAgICBib29sIG1fZHVtcEFwcGxpY2F0aW9u
Q2FjaGVEZWxlZ2F0ZUNhbGxiYWNrczsKICAgICBib29sIG1fZHVtcEFzQXVkaW87CiAgICAgYm9v
bCBtX2R1bXBBc1BERjsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURl
bGVnYXRlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0KaW5kZXgg
NmI4NDczOC4uNGE1NDgwYiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJ
RGVsZWdhdGUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0K
QEAgLTE2NiwxMyArMTY2LDE2IEBAIER1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZvICpkcmFnZ2lu
Z0luZm8gPSBuaWw7CiAgICAgW1tvcmlnaW4gZGF0YWJhc2VRdW90YU1hbmFnZXJdIHNldFF1b3Rh
OmRlZmF1bHRRdW90YV07CiB9CiAKLS0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBl
eGNlZWRlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YUZvclNlY3VyaXR5T3JpZ2luOihXZWJT
ZWN1cml0eU9yaWdpbiAqKW9yaWdpbgorLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVy
IGV4Y2VlZGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhRm9yU2VjdXJpdHlPcmlnaW46KFdl
YlNlY3VyaXR5T3JpZ2luICopb3JpZ2luIHNwYWNlTmVlZGVkOihOU051bWJlciAqKXNwYWNlTmVl
ZGVkCiB7CiAgICAgaWYgKCFkb25lICYmIGdMYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcEFwcGxp
Y2F0aW9uQ2FjaGVEZWxlZ2F0ZUNhbGxiYWNrcygpKSB7CiAgICAgICAgIHByaW50ZigiVUkgREVM
RUdBVEUgQVBQTElDQVRJT04gQ0FDSEUgQ0FMTEJBQ0s6IGV4Y2VlZGVkQXBwbGljYXRpb25DYWNo
ZU9yaWdpblF1b3RhRm9yU2VjdXJpdHlPcmlnaW46eyVzLCAlcywgJWl9XG4iLAogICAgICAgICAg
ICAgW1tvcmlnaW4gcHJvdG9jb2xdIFVURjhTdHJpbmddLCBbW29yaWdpbiBob3N0XSBVVEY4U3Ry
aW5nXSwgW29yaWdpbiBwb3J0XSk7CiAgICAgfQogCisgICAgaWYgKGdMYXlvdXRUZXN0Q29udHJv
bGxlci0+ZGlzYWxsb3dJbmNyZWFzZUZvckFwcGxpY2F0aW9uQ2FjaGVRdW90YSgpKQorICAgICAg
ICByZXR1cm47CisKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9uZyBsb25nIGRlZmF1bHRP
cmlnaW5RdW90YSA9IFtXZWJBcHBsaWNhdGlvbkNhY2hlIGRlZmF1bHRPcmlnaW5RdW90YV07CiAg
ICAgW1tvcmlnaW4gYXBwbGljYXRpb25DYWNoZVF1b3RhTWFuYWdlcl0gc2V0UXVvdGE6ZGVmYXVs
dE9yaWdpblF1b3RhXTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1
bXBSZW5kZXJUcmVlUXQuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRy
ZWVRdC5jcHAKaW5kZXggN2Y1ZjgyMi4uNzYzNmQzOCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5jcHAKQEAgLTEwNDksNiArMTA0OSwxMCBAQCB2b2lkIER1
bXBSZW5kZXJUcmVlOjpkdW1wQXBwbGljYXRpb25DYWNoZVF1b3RhKFFXZWJTZWN1cml0eU9yaWdp
biogb3JpZ2luLCBxdWludAogICAgICAgICAgICBvcmlnaW4tPmhvc3QoKS50b1V0ZjgoKS5kYXRh
KCksCiAgICAgICAgICAgIG9yaWdpbi0+cG9ydCgpCiAgICAgICAgICAgICk7CisKKyAgICBpZiAo
bV9jb250cm9sbGVyLT5kaXNhbGxvd0luY3JlYXNlRm9yQXBwbGljYXRpb25DYWNoZVF1b3RhKCkp
CisgICAgICAgIHJldHVybjsKKwogICAgIG9yaWdpbi0+c2V0QXBwbGljYXRpb25DYWNoZVF1b3Rh
KGRlZmF1bHRPcmlnaW5RdW90YSk7CiB9CiAK
</data>
<flag name="review"
          id="94773"
          type_id="1"
          status="-"
          setter="joepeck"
    />
    <flag name="commit-queue"
          id="94774"
          type_id="3"
          status="-"
          setter="joepeck"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100138</attachid>
            <date>2011-07-08 11:11:36 -0700</date>
            <delta_ts>2011-07-08 16:12:19 -0700</delta_ts>
            <desc>[PATCH] Proposed Patch for Landing</desc>
            <filename>total.patch</filename>
            <type>text/plain</type>
            <size>51627</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxNjI4MzIwLi40MTEyM2ZkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDct
MDggIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBBcHBs
aWNhdGlvbkNhY2hlIHVwZGF0ZSBzaG91bGQgbm90IGltbWVkaWF0ZWx5IGZhaWwgd2hlbiByZWFj
aGluZyBwZXItb3JpZ2luIHF1b3RhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02NDE3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tcXVvdGEtY29udGludWVk
LWRvd25sb2FkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHBj
YWNoZS9vcmlnaW4tcXVvdGEtY29udGludWVkLWRvd25sb2FkLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL3F1b3RhLW9yaWdpbi1jb250aW51ZWQt
ZG93bmxvYWQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNv
dXJjZXMvcXVvdGEtb3JpZ2luLWNvbnRpbnVlZC1kb3dubG9hZC5tYW5pZmVzdDogQWRkZWQuCisg
ICAgICAgIFRoZSBuZXcgdGVzdCB3aGljaCBjaGVja3MgdGhhdCB0aGVyZSB3aWxsIHN0aWxsIGJl
IGEgc3VjY2Vzc2Z1bCBjYWNoZQorICAgICAgICB3aGVuIHRoZSBwZXItb3JpZ2luIHF1b3RhIGlz
IHJlYWNoZWQgYW5kIGluY3JlYXNlZCBhdCB0aGUgZW5kIG9mIGRvd25sb2FkaW5nLgorCisgICAg
ICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvcXVvdGEtb3JpZ2luLWlmcmFtZS0z
Lm1hbmlmZXN0OiBGaXggYSB0eXBvLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvb3Jp
Z2luLXF1b3RhLmh0bWw6CisgICAgICAgIFVwZGF0ZSB0aGUgb2xkIHRlc3QgdG8gZGlzYWxsb3cg
YXV0b21hdGljIGluY3JlYXNlIG9mIHRoZSBxdW90YSB0byA1TUIsCisgICAgICAgIHdoaWNoIGlz
IHRoZSBkZWZhdWx0IGhhbmRsaW5nIG9mIERSVCB3aGVuIHJlYWNoaW5nIHRoZSBxdW90YS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ndGsvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Ta2lwcGVk
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3dr
Mi9Ta2lwcGVkOgorICAgICAgICBTa2lwIHRoZSB0ZXN0IG9uIHBvcnRzIHRoYXQgZG9uJ3QgaW1w
bGVtZW50IEFwcGxpY2F0aW9uQ2FjaGUgcGVyLW9yaWdpbiBxdW90YXMuCisKIDIwMTEtMDctMDYg
IEpvaG5ueSBEaW5nICA8am5kQGNocm9taXVtLm9yZz4KIAogICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjM4NTcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLXF1b3RhLWNvbnRpbnVlZC1kb3dubG9hZC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90YS1j
b250aW51ZWQtZG93bmxvYWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmYxMDNjYmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2FwcGNhY2hlL29yaWdpbi1xdW90YS1jb250aW51ZWQtZG93bmxvYWQtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsNyBAQAorVUkgREVMRUdBVEUgQVBQTElDQVRJT04gQ0FDSEUgQ0FMTEJBQ0s6
IGV4Y2VlZGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhRm9yU2VjdXJpdHlPcmlnaW46e2h0
dHAsIDEyNy4wLjAuMSwgODAwMH0KK1RoaXMgdGVzdCBjaGVja3MgdGhhdCBwZXItb3JpZ2luIGFw
cGxpY2F0aW9uIGNhY2hlIHF1b3RhIGRvbid0IHJlcXVpcmUgYSByZWZyZXNoIHRvIGNvbXBsZXRl
IHN1Y2Nlc3NmdWxseS4KKworVGhpcyB0ZXN0IHNldHMgdGhlIHF1b3RhIGZvciB0aGUgb3JpZ2lu
IHRvIDFrYiwgYW5kIGF0dGVtcHRzIHRvIGZpbGwgaXQgdXAgd2l0aCBtb3JlIHRoYW4gMWtiIG9m
IGRhdGEuIFRoZSBkb3dubG9hZCBzaG91bGQgY29tcGxldGUgc3VjY2Vzc2Z1bGx5LCB3aXRoIHRo
ZSBxdW90YSBiZWluZyBpbmNyZWFzZWQgdG8gdGhlIGRlZmF1bHQgb2YgNU1CLiBUaGUgZGVsZWdh
dGUgc2hvdWxkIGJlIGluZm9ybWVkIGZvciB0aGUgZXhjZWVkZWQgcXVvdGEsIGluY3JlYXNlIGl0
IHRvIGEgc2l6ZSBsYXJnZSBlbm91Z2gsIGFuZCB0aGUgZG93bmxvYWQgc3VjY2VlZC4KKworUEFT
UyAtIGNhY2hlZCBpZnJhbWUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9h
cHBjYWNoZS9vcmlnaW4tcXVvdGEtY29udGludWVkLWRvd25sb2FkLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90YS1jb250aW51ZWQtZG93bmxvYWQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDExOTAyCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tcXVvdGEtY29u
dGludWVkLWRvd25sb2FkLmh0bWwKQEAgLTAsMCArMSw2MCBAQAorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQ+CisKKy8vIEhlbHBlcnMuCisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8
YnI+IjsKK30KKworLy8gU3RhcnQgYW5kIGVuZC4KKworZnVuY3Rpb24gc3RhcnRUZXN0KCkgewor
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuY2xlYXJBbGxBcHBsaWNhdGlvbkNhY2hlcygpOworICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXBwbGljYXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzKCk7Cisg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90
YSgxMDI0KTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgfQorCisgICAg
YWRkSUZyYW1lKCk7Cit9CisKK2Z1bmN0aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworfQorCisvLyBTdGFnZXMuCisKK2Z1bmN0aW9uIGFkZElGcmFtZVdpdGhDb250
aW51YXRpb24oc3JjLCBjb250aW51YXRpb24pIHsKKyAgICB3aW5kb3cub25tZXNzYWdlID0gY29u
dGludWF0aW9uOworICAgIHZhciBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJh
bWUiKTsKKyAgICBpZnJhbWUuc3JjID0gc3JjOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQoaWZyYW1lKTsKK30KKworZnVuY3Rpb24gYWRkSUZyYW1lKCkgeworICAgIC8vIEV4cGVjdGVk
IHRvIHN1Y2NlZWQuIERlZmF1bHQgaGFuZGxpbmcgd2lsbCByYWlzZSB0aGUgcXVvdGEgYmFjayB1
cCB0byA1TUIgd2hpY2ggaXMgZW5vdWdoLgorICAgIGFkZElGcmFtZVdpdGhDb250aW51YXRpb24o
InJlc291cmNlcy9xdW90YS1vcmlnaW4tY29udGludWVkLWRvd25sb2FkLmh0bWwiLCBmdW5jdGlv
bihldmVudCkgeworICAgICAgICBsb2coZXZlbnQuZGF0YSk7CisgICAgICAgIGZpbmlzaFRlc3Qo
KTsKKyAgICB9KTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InN0YXJ0
VGVzdCgpIj4KKzxwPlRoaXMgdGVzdCBjaGVja3MgdGhhdCBwZXItb3JpZ2luIGFwcGxpY2F0aW9u
IGNhY2hlIHF1b3RhIGRvbid0IHJlcXVpcmUgYSByZWZyZXNoIHRvIGNvbXBsZXRlIHN1Y2Nlc3Nm
dWxseS48L3A+Cis8cD4KKyAgICBUaGlzIHRlc3Qgc2V0cyB0aGUgcXVvdGEgZm9yIHRoZSBvcmln
aW4gdG8gMWtiLCBhbmQgYXR0ZW1wdHMgdG8gZmlsbAorICAgIGl0IHVwIHdpdGggbW9yZSB0aGFu
IDFrYiBvZiBkYXRhLiBUaGUgZG93bmxvYWQgc2hvdWxkIGNvbXBsZXRlCisgICAgc3VjY2Vzc2Z1
bGx5LCB3aXRoIHRoZSBxdW90YSBiZWluZyBpbmNyZWFzZWQgdG8gdGhlIGRlZmF1bHQgb2YgNU1C
LiBUaGUKKyAgICBkZWxlZ2F0ZSBzaG91bGQgYmUgaW5mb3JtZWQgZm9yIHRoZSBleGNlZWRlZCBx
dW90YSwgaW5jcmVhc2UgaXQgdG8gYSBzaXplCisgICAgbGFyZ2UgZW5vdWdoLCBhbmQgdGhlIGRv
d25sb2FkIHN1Y2NlZWQuCis8L3A+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvb3Jp
Z2luLXF1b3RhLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1x
dW90YS5odG1sCmluZGV4IGE3MzIyZmQuLmYwMDkwMGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLXF1b3RhLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tcXVvdGEuaHRtbApAQCAtMTQsNiArMTQsNyBAQCBm
dW5jdGlvbiBzdGFydFRlc3QoKSB7CiAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewogICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbGVhckFsbEFwcGxpY2F0aW9uQ2Fj
aGVzKCk7CiAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBcHBsaWNhdGlvbkNhY2hl
RGVsZWdhdGVDYWxsYmFja3MoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZGlzYWxs
b3dJbmNyZWFzZUZvckFwcGxpY2F0aW9uQ2FjaGVRdW90YSgpOwogICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5zZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoMjAqMTAyNCk7CiAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwpAQCAtNDYsOSArNDcsOSBAQCBmdW5jdGlvbiBh
ZGRGaXJzdElGcmFtZSgpIHsKIAogZnVuY3Rpb24gYWRkU2Vjb25kSUZyYW1lKCkgewogICAgIC8v
IEV4cGVjdGVkIHRvIGZhaWwsIHRoZW4gaW5jcmVhc2UgdGhlIHF1b3RhLgotICAgIC8vIE5PVEU6
IFdoZW4gdGhpcyBmYWlscywgdGhlIGV4Y2VlZCBjYWxsYmFjayB3aWxsIGF1dG9tYXRpY2FsbHkg
aW5jcmVhc2UgaXQgYmFjayB0byB0aGUgZGVmYXVsdCBxdW90YSBzaXplLgogICAgIGFkZElGcmFt
ZVdpdGhDb250aW51YXRpb24oInJlc291cmNlcy9xdW90YS1vcmlnaW4taWZyYW1lLTIuaHRtbCIs
IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgIGxvZyhldmVudC5kYXRhKTsKKyAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuc2V0QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKDEwMCoxMDI0
KTsKICAgICAgICAgYWRkVGhpcmRJRnJhbWUoKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL3F1b3RhLW9yaWdpbi1jb250
aW51ZWQtZG93bmxvYWQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVz
b3VyY2VzL3F1b3RhLW9yaWdpbi1jb250aW51ZWQtZG93bmxvYWQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTQ0ZGZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvcXVvdGEtb3JpZ2luLWNvbnRpbnVl
ZC1kb3dubG9hZC5odG1sCkBAIC0wLDAgKzEsOSBAQAorPGh0bWwgbWFuaWZlc3Q9InF1b3RhLW9y
aWdpbi1jb250aW51ZWQtZG93bmxvYWQubWFuaWZlc3QiPgorPHNjcmlwdD4KKy8vIFRoaXMgaXMg
ZXhwZWN0ZWQgdG8gc3VjY2VlZCB3aGVuIHRoZSBxdW90YSBpcyByZWFjaGVkLCBkb3dubG9hZCBj
b21wbGV0ZXMsIHRoZSB1c2VyIGlzIHByb21wdGVkLCBhbmQgdGhleSBpbmNyZWFzZSBzdG9yYWdl
LgorYXBwbGljYXRpb25DYWNoZS5vbmNhY2hlZCA9IGZ1bmN0aW9uKCkgeyBwYXJlbnQucG9zdE1l
c3NhZ2UoIlBBU1MgLSBjYWNoZWQgaWZyYW1lIiwgIioiKTsgfTsKK2FwcGxpY2F0aW9uQ2FjaGUu
b25lcnJvciA9IGZ1bmN0aW9uKCkgeyBwYXJlbnQucG9zdE1lc3NhZ2UoIkZBSUwgLSBlcnJvciBj
YWNoaW5nIGlmcmFtZSwgZXhwZWN0ZWQgdGhpcyB0byBzdWNjZWVkIHdpdGggdGhlIHF1b3RhIGlu
Y3JlYXNlZCBhdXRvbWF0aWNhbGx5IiwgIioiKTsgfTsKK2FwcGxpY2F0aW9uQ2FjaGUub251cGRh
dGVyZWFkeSA9IGZ1bmN0aW9uKCkgeyBwYXJlbnQucG9zdE1lc3NhZ2UoIkZBSUwgLSB1cGRhdGUg
cmVhZHksIGFsbCBjYWNoZXMgc2hvdWxkIGhhdmUgYmVlbiBkZWxldGVkIGJlZm9yZSB0aGlzIHRl
c3QiLCAiKiIpOyB9OworYXBwbGljYXRpb25DYWNoZS5vbm5vdXBkYXRlID0gZnVuY3Rpb24oKSB7
IHBhcmVudC5wb3N0TWVzc2FnZSgiRkFJTCAtIG5vIHVwZGF0ZSBpZnJhbWUsIGFsbCBjYWNoZXMg
c2hvdWxkIGhhdmUgYmVlbiBkZWxldGVkIGJlZm9yZSB0aGlzIHRlc3QiLCAiKiIpOyB9OworPC9z
Y3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNh
Y2hlL3Jlc291cmNlcy9xdW90YS1vcmlnaW4tY29udGludWVkLWRvd25sb2FkLm1hbmlmZXN0IGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvcXVvdGEtb3JpZ2luLWNv
bnRpbnVlZC1kb3dubG9hZC5tYW5pZmVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5jNmNlYzQxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9h
cHBjYWNoZS9yZXNvdXJjZXMvcXVvdGEtb3JpZ2luLWNvbnRpbnVlZC1kb3dubG9hZC5tYW5pZmVz
dApAQCAtMCwwICsxLDggQEAKK0NBQ0hFIE1BTklGRVNUCisKKyMgVGhpcyBzaG91bGQgc3VjY2Vl
ZC4gVGhlIHF1b3RhIHdpbGwgYmUgcmVhY2hlZCwgYnV0IHRoZSBkZWxlZ2F0ZQorIyB3aWxsIGZp
cmUgYXQgdGhlIGVuZCwgYWxsb3dpbmcgYW4gaW5jcmVhc2UsIGFuZCB0aGVuIGEgc3VjY2Vzc2Z1
bAorIyBjYWNoZSB3aXRoIHRoZSBuZXcgcXVvdGEuCisKK0NBQ0hFOgorYWJlLnBuZwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvcXVvdGEtb3Jp
Z2luLWlmcmFtZS0zLm1hbmlmZXN0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9y
ZXNvdXJjZXMvcXVvdGEtb3JpZ2luLWlmcmFtZS0zLm1hbmlmZXN0CmluZGV4IGJjMjk4NjcuLmE3
ZTJkM2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3Vy
Y2VzL3F1b3RhLW9yaWdpbi1pZnJhbWUtMy5tYW5pZmVzdAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9xdW90YS1vcmlnaW4taWZyYW1lLTMubWFuaWZlc3QK
QEAgLTEsNiArMSw2IEBACiBDQUNIRSBNQU5JRkVTVAogCi0jIGlmcmFtZS0zIHNob3VsZCBzdWNj
ZWVkLiBUaGUgb3JpZ2luIHF1b3RhIHNodWxkIGhhdmUgYmVlbgorIyBpZnJhbWUtMyBzaG91bGQg
c3VjY2VlZC4gVGhlIG9yaWdpbiBxdW90YSBzaG91bGQgaGF2ZSBiZWVuCiAjIHJhaXNlZCB0byA0
MGtiLCB3aXRoIH4xM2tiIGFscmVhZHkgY2FjaGVkLiBDYWNoaW5nIGFiZS5wbmcKICMgYW5kIHRo
aXMgbWFuaWZlc3Qgd2lsbCBiZSB+MTNrYiwgYnJpbmdpbmcgdXMgdXAgdG8gMjZrYi4KIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMu
dHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0
CmluZGV4IDcwMmQwMGQuLjNiYjkwMzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKQEAgLTIyMTAsOCArMjIxMCw5IEBAIEJV
R0NSNDk5NzAgOiBwbGF0Zm9ybS9jaHJvbWl1bS9wbHVnaW5zL2NhbGwtYXMtZnVuY3Rpb24uaHRt
bCA9IFBBU1MgVEVYVAogLy8gRmxha3kgc2luY2UgV2ViS2l0IHI2Mzk5NAogQlVHV0s0Mjk2NCBX
SU4gTElOVVggOiB0YWJsZXMvbW96aWxsYV9leHBlY3RlZF9mYWlsdXJlcy9idWdzL2J1Zzg5MzE1
Lmh0bWwgPSBQQVNTIEZBSUwKIAotLy8gQXBwbGljYXRpb24gQ2FjaGUgUXVvdGFzCi1CVUdXSzQz
NDU5IDogaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tcXVvdGEuaHRtbCA9IFRFWFQgTUlTU0lO
RworLy8gQXBwbGljYXRpb24gQ2FjaGUgUXVvdGFzIGFyZSBOL0EgdG8gdGhlIGNocm9taXVtIHBv
cnQuCitCVUdXSzQzNDU5IFdPTlRGSVg6IGh0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLXF1b3Rh
Lmh0bWwgPSBURVhUIE1JU1NJTkcKK0JVR1dLNDM0NTkgV09OVEZJWDogaHR0cC90ZXN0cy9hcHBj
YWNoZS9vcmlnaW4tcXVvdGEtY29udGludWVkLWRvd25sb2FkLmh0bWwgPSBURVhUIE1JU1NJTkcK
IAogLy8gTmVlZCB0byBzdXBwb3J0IERldmljZU1vdGlvbi4KIEJVR0NSNTE0MTYgOiBmYXN0L2Rv
bS9EZXZpY2VNb3Rpb24vd2luZG93LXByb3BlcnR5Lmh0bWwgPSBURVhUCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0
ay9Ta2lwcGVkCmluZGV4IDIzOWVkODQuLjg5ODMzOWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lw
cGVkCkBAIC01ODQsNiArNTg0LDcgQEAgZmFzdC9qcy9pMThuLWJpbmRpbmdzLWxvY2FsZS5odG1s
CiBodHRwL3Rlc3RzL2FwcGNhY2hlL2NyYXNoLXdoZW4tbmF2aWdhdGluZy1hd2F5LXRoZW4tYmFj
ay5odG1sCiBodHRwL3Rlc3RzL2FwcGNhY2hlL2ZhbGxiYWNrLmh0bWwKIGh0dHAvdGVzdHMvYXBw
Y2FjaGUvb3JpZ2luLXF1b3RhLmh0bWwKK2h0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLXF1b3Rh
LWNvbnRpbnVlZC1kb3dubG9hZC5odG1sCiBodHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1kZWxl
dGUuaHRtbAogaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW5zLXdpdGgtYXBwY2FjaGUuaHRtbAog
IyBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YXBwbGljYXRpb25DYWNoZURpc2tVc2FnZUZvck9yaWdp
biBpc24ndCBpbXBsZW1lbnRlZCAtIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01NzEyNwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKaW5kZXggOTljZmE5Yi4uYjIwMTNmMiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAorKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCkBAIC0yOSw3ICsyOSw2IEBACiAjIC0gZmFpbGluZyBl
ZGl0aW5nL2lucHV0IHRlc3RzCiAjIC0gRmFpbGluZyBTVkcgdGVzdHMKICMgLSBmYWlsaW5nIGFu
aW1hdGlvbnMgdGVzdHMKLSMgLSBmYWlsaW5nIGFwcGxpY2F0aW9uIGNhY2hlIHF1b3RhIHRlc3Rz
CiAjIC0gRmFpbGluZyBDU1MgVGVzdHMKICMgLSBGYWlsaW5nIGRvbS94aHRtbCB0ZXN0cwogIyAt
IEZhaWxpbmcgZWRpdGluZy9kZWxldGluZyB0ZXN0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vd2luL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZApp
bmRleCBlY2JjOWJkLi4yNTQ0ODM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
aW4vU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZApAQCAtMTE1
Miw2ICsxMTUyLDcgQEAgcGVyZi8KICMgQXBwbGljYXRpb24gQ2FjaGUgUXVvdGFzCiAjIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzQ1OAogaHR0cC90ZXN0cy9hcHBj
YWNoZS9vcmlnaW4tcXVvdGEuaHRtbAoraHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tcXVvdGEt
Y29udGludWVkLWRvd25sb2FkLmh0bWwKIAogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDMzMzIKIGluc3BlY3Rvci9kZWJ1Z2dlci9kb20tYnJlYWtwb2ludHMuaHRt
bApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1NraXBwZWQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZAppbmRleCA2M2E2NzkyLi42MzhmOTIwIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS93azIvU2tpcHBlZApAQCAtMTY0Niw2ICsxNjQ2LDcgQEAgaHR0cC90ZXN0cy9hcHBj
YWNoZS91cGRhdGUtY2FjaGUuaHRtbAogIyBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIGxheW91dFRl
c3RDb250cm9sbGVyLmNsZWFyQWxsQXBwbGljYXRpb25DYWNoZXMKIGh0dHAvdGVzdHMvYXBwY2Fj
aGUvb3JpZ2luLWRlbGV0ZS5odG1sCiBodHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90YS5o
dG1sCitodHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90YS1jb250aW51ZWQtZG93bmxvYWQu
aHRtbAogaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW5zLXdpdGgtYXBwY2FjaGUuaHRtbAogCiAj
IFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgbGF5b3V0VGVzdENvbnRyb2xsZXIuY2FsbFNob3VsZENs
b3NlT25XZWJWaWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDQzNTMwOS4uYTllOWI2YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDQ0IEBACisyMDExLTA3LTA4ICBKb3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgQXBwbGljYXRpb25DYWNoZSB1cGRhdGUgc2hvdWxkIG5vdCBp
bW1lZGlhdGVseSBmYWlsIHdoZW4gcmVhY2hpbmcgcGVyLW9yaWdpbiBxdW90YQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQxNzcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL2Fw
cGNhY2hlL29yaWdpbi1xdW90YS1jb250aW51ZWQtZG93bmxvYWQuaHRtbAorCisgICAgICAgICog
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oOgorICAgICAgICAqIGxvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbGljYXRpb25DYWNoZUdyb3VwOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXApOgorICAgICAgICBJ
bml0aWFsaXplIGJvb2xlYW4gaW5zdGFuY2UgdmFyaWFibGVzLgorCisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICBDaGVj
ayB0aGUgcXVvdGEgbGltaXQgd2hpbGUgZG93bmxvYWRpbmcgc28gd2UgY2FuIGZhaWwgZWFybHkK
KyAgICAgICAgaWYgdGhlIHVzZXIgYWxyZWFkeSBkZW5pZWQgYSBxdW90YSBpbmNyZWFzZS4KKwor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRSZWFjaE9yaWdpblF1
b3RhKToKKyAgICAgICAgUGFzcyB0aGUgc3BhY2UgbmVlZGVkIGluZm9ybWF0aW9uIHRvIHRoZSBj
aHJvbWUgY2xpZW50LgorCisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6
OmNhY2hlVXBkYXRlRmFpbGVkRHVlVG9PcmlnaW5RdW90YSk6CisgICAgICAgIENvbnZlcnQgdGhp
cyB0byB1cGRhdGUgc3RhdGUgYW5kIGNvbnNvbGUgbG9nIHdoZW4gdGhlCisgICAgICAgIHBlci1v
cmlnaW4gcXVvdGEgaXMgcmVhY2hlZC4gVGhpcyBhbGxvd3MgdXMgdG8gZm9sbG93CisgICAgICAg
IHRoZSBub3JtYWwgZmFpbHVyZSBzdGVwcyBpZiB0aGUgcXVvdGEgaXMgcmVhY2hlZCBhdAorICAg
ICAgICB0aGUgZW5kIG9mIGEgZG93bmxvYWQsIGFuZCB0aGUgYWx0ZXJuYXRpdmUgc2hvcnQgcGF0
aAorICAgICAgICB3aGVuIHdlIGZhaWwgZHVyaW5nIGEgZG93bmxvYWRpbmcuCisKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6cmVjYWxjdWxhdGVBdmFpbGFibGVTcGFj
ZUluUXVvdGEpOgorICAgICAgICBFeHRyYWN0IHRvIGEgaGVscGVyIGZ1bmN0aW9uLgorCisgICAg
ICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNoZWNrSWZMb2FkSXNDb21wbGV0
ZSk6CisgICAgICAgIEFsbG93IGZvciBhIHF1b3RhIGluY3JlYXNlIGF0IHRoZSBlbmQgb2YgdGhl
IGRvd25sb2FkIG5vdyB0aGF0CisgICAgICAgIHdlIGtub3cgdGhlIHNwYWNlIG5lZWRlZC4gVGhl
biBwcm9jZWVkIHRvIGZhaWwgb3Igc3VjY2VlZAorICAgICAgICBhcyB3ZSBub3JtYWxseSB3b3Vs
ZC4KKworICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL0Vt
cHR5Q2xpZW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlDaHJvbWVDbGllbnQ6OnJlYWNo
ZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEpOgorICAgICAgICBBZGQgYSBzcGFjZSBuZWVk
ZWQgcGFyYW1ldGVyIHdoZW4gcmVhY2hpbmcgdGhlIHBlci1vcmlnaW4gcXVvdGEuCisKIDIwMTEt
MDctMDcgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMu
aAppbmRleCAzZmYyNThiLi41NTRiNWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5oCkBAIC0xODUsNyArMTg1LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKE9GRkxJTkVfV0VC
X0FQUExJQ0FUSU9OUykKICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZE1heEFwcENhY2hlU2l6ZShp
bnQ2NF90KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmln
aW5RdW90YShTZWN1cml0eU9yaWdpbiopIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBw
bGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKiwgaW50NjRfdCkgeyB9CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAppbmRleCA2
NGY3YjY4Li41YTMwMDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAtNzIsNyArNzIsOCBAQCBBcHBs
aWNhdGlvbkNhY2hlR3JvdXA6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cChjb25zdCBLVVJMJiBtYW5p
ZmVzdFVSTCwgYm9vbCBpc0NvcAogICAgICwgbV9jYWxsZWRSZWFjaGVkTWF4QXBwQ2FjaGVTaXpl
KGZhbHNlKQogICAgICwgbV9sb2FkZWRTaXplKDApCiAgICAgLCBtX2F2YWlsYWJsZVNwYWNlSW5R
dW90YShBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6dW5rbm93blF1b3RhKCkpCi0gICAgLCBtX29y
aWdpblF1b3RhUmVhY2hlZChmYWxzZSkKKyAgICAsIG1fb3JpZ2luUXVvdGFSZWFjaGVkV2hpbGVE
b3dubG9hZGluZyhmYWxzZSkKKyAgICAsIG1fb3JpZ2luUXVvdGFSZWFjaGVkUHJldmlvdXNseShm
YWxzZSkKIHsKIH0KIApAQCAtNjAwLDE4ICs2MDEsMjcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hl
R3JvdXA6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgZG91YmxlIGZp
bmkKIAogICAgIC8vIEFmdGVyIGZpbmlzaGluZyB0aGUgbG9hZGluZyBvZiBhbnkgcmVzb3VyY2Us
IHdlIGNoZWNrIGlmIGl0IHdpbGwKICAgICAvLyBmaXQgaW4gb3VyIGxhc3Qga25vd24gcXVvdGEg
bGltaXQuCi0gICAgaWYgKG1fYXZhaWxhYmxlU3BhY2VJblF1b3RhID09IEFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlOjp1bmtub3duUXVvdGEoKSkgewotICAgICAgICAvLyBGYWlsZWQgdG8gZGV0ZXJt
aW5lIHdoYXQgaXMgbGVmdCBpbiB0aGUgcXVvdGEuIEZhbGxiYWNrIHRvIGFsbG93aW5nIGFueXRo
aW5nLgotICAgICAgICBpZiAoIWNhY2hlU3RvcmFnZSgpLnJlbWFpbmluZ1NpemVGb3JPcmlnaW5F
eGNsdWRpbmdDYWNoZShtX29yaWdpbi5nZXQoKSwgbV9uZXdlc3RDYWNoZS5nZXQoKSwgbV9hdmFp
bGFibGVTcGFjZUluUXVvdGEpKQotICAgICAgICAgICAgbV9hdmFpbGFibGVTcGFjZUluUXVvdGEg
PSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bm9RdW90YSgpOwotICAgIH0KKyAgICBpZiAobV9h
dmFpbGFibGVTcGFjZUluUXVvdGEgPT0gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnVua25vd25R
dW90YSgpKQorICAgICAgICByZWNhbGN1bGF0ZUF2YWlsYWJsZVNwYWNlSW5RdW90YSgpOwogCi0g
ICAgLy8gQ2hlY2sgZWFjaCByZXNvdXJjZSwgYXMgaXQgbG9hZHMsIHRvIHNlZSBpZiBpdCB3b3Vs
ZCBmaXQgaW4gb3VyCi0gICAgLy8gaWRlYSBvZiB0aGUgYXZhaWxhYmxlIHF1b3RhIHNwYWNlLgot
ICAgIGlmIChtX2F2YWlsYWJsZVNwYWNlSW5RdW90YSA8IG1fbG9hZGVkU2l6ZSkgewotICAgICAg
ICBtX2N1cnJlbnRSZXNvdXJjZSA9IDA7Ci0gICAgICAgIGNhY2hlVXBkYXRlRmFpbGVkRHVlVG9P
cmlnaW5RdW90YSgpOwotICAgICAgICByZXR1cm47CisgICAgLy8gV2hpbGUgZG93bmxvYWRpbmcg
Y2hlY2sgdG8gc2VlIGlmIHdlIGhhdmUgZXhjZWVkZWQgdGhlIGF2YWlsYWJsZSBxdW90YS4KKyAg
ICAvLyBJZiB3ZSBoYXZlLCBzZXQgYSBmbGFnIHNvIHRoYXQgd2UgY2FuIHJlcXVlc3QgYSBxdW90
YSBpbmNyZWFzZSB3aGVuCisgICAgLy8gd2Uga25vdyB0aGUgZmluYWwgc2l6ZSBvZiB0aGUgYXBw
Y2FjaGUuCisgICAgaWYgKCFtX29yaWdpblF1b3RhUmVhY2hlZFdoaWxlRG93bmxvYWRpbmcpIHsK
KyAgICAgICAgbV9vcmlnaW5RdW90YVJlYWNoZWRXaGlsZURvd25sb2FkaW5nID0gbV9hdmFpbGFi
bGVTcGFjZUluUXVvdGEgPCBtX2xvYWRlZFNpemU7CisgICAgICAgIAorICAgICAgICAvLyBXZSBj
YW4gc3RvcCBpbW1lZGlhdGVseSBpZiB3ZSBoYXZlIGFscmVhZHkgcHJldmlvdXNseSBmYWlsZWQK
KyAgICAgICAgLy8gZHVlIHRvIGEgcXVvdGEgcmVzdHJpY3Rpb24uIFRoZSBjbGllbnQgd2FzIGFs
cmVhZHkgbm90aWZpZWQKKyAgICAgICAgLy8gb2YgdGhlIHF1b3RhIGJlaW5nIHJlYWNoZWQgYW5k
IGRlY2lkZWQgbm90IHRvIGluY3JlYXNlIGl0IHRoZW4uCisgICAgICAgIC8vIEZJWE1FOiBTaG91
bGQgd2UgYnJlYWsgZWFybGllciBhbmQgcHJldmVudCByZWRvd25sb2FkaW5nIG9uIGxhdGVyIHBh
Z2UgbG9hZHM/CisgICAgICAgIC8vIFdlIGNvdWxkIHRoZW4gYWxzbyBnZXQgcmlkIG9mIG1fbG9h
ZGVkU2l6ZSBhbmQgaW5zdGVhZCBqdXN0IHByZS1jaGVjaworICAgICAgICAvLyB0aGUgcXVvdGEg
d2hlbiB0aGUgZG93bmxvYWQgY29tcGxldGVzLgorICAgICAgICBpZiAobV9vcmlnaW5RdW90YVJl
YWNoZWRXaGlsZURvd25sb2FkaW5nICYmIG1fb3JpZ2luUXVvdGFSZWFjaGVkUHJldmlvdXNseSkg
eworICAgICAgICAgICAgbV9jdXJyZW50UmVzb3VyY2UgPSAwOworICAgICAgICAgICAgY2FjaGVV
cGRhdGVGYWlsZWREdWVUb09yaWdpblF1b3RhKCk7CisgICAgICAgICAgICBjYWNoZVVwZGF0ZUZh
aWxlZCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgfQogCiAgICAgQVNT
RVJUKG1fY3VycmVudEhhbmRsZSA9PSBoYW5kbGUpOwpAQCAtNzk1LDExICs4MDUsMTEgQEAgdm9p
ZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZFJlYWNoTWF4QXBwQ2FjaGVTaXplKCkKICAgICBj
aGVja0lmTG9hZElzQ29tcGxldGUoKTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6
OmRpZFJlYWNoT3JpZ2luUXVvdGEoUGFzc1JlZlB0cjxGcmFtZT4gZnJhbWUpCit2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDo6ZGlkUmVhY2hPcmlnaW5RdW90YShQYXNzUmVmUHRyPEZyYW1lPiBm
cmFtZSwgaW50NjRfdCBzcGFjZU5lZWRlZCkKIHsKICAgICAvLyBJbmZvcm0gdGhlIGNsaWVudCB0
aGUgb3JpZ2luIHF1b3RhIGhhcyBiZWVuIHJlYWNoZWQsCiAgICAgLy8gdGhleSBtYXkgZGVjaWRl
IHRvIGluY3JlYXNlIHRoZSBxdW90YS4KLSAgICBmcmFtZS0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xp
ZW50KCktPnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEobV9vcmlnaW4uZ2V0KCkp
OworICAgIGZyYW1lLT5wYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+cmVhY2hlZEFwcGxpY2F0
aW9uQ2FjaGVPcmlnaW5RdW90YShtX29yaWdpbi5nZXQoKSwgc3BhY2VOZWVkZWQpOwogfQogCiB2
b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2FjaGVVcGRhdGVGYWlsZWQoKQpAQCAtODE0LDE1
ICs4MjQsMTcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNhY2hlVXBkYXRlRmFpbGVk
KCkKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNhY2hlVXBkYXRlRmFpbGVkRHVlVG9P
cmlnaW5RdW90YSgpCiB7Ci0gICAgaWYgKCFtX29yaWdpblF1b3RhUmVhY2hlZCkgewotICAgICAg
ICBtX29yaWdpblF1b3RhUmVhY2hlZCA9IHRydWU7Ci0gICAgICAgIHNjaGVkdWxlUmVhY2hlZE9y
aWdpblF1b3RhQ2FsbGJhY2soKTsKLSAgICB9CisgICAgbV9vcmlnaW5RdW90YVJlYWNoZWRQcmV2
aW91c2x5ID0gdHJ1ZTsKIAogICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFk
ZE1lc3NhZ2UoT3RoZXJNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdl
TGV2ZWwsICJBcHBsaWNhdGlvbiBDYWNoZSB1cGRhdGUgZmFpbGVkLCBiZWNhdXNlIHNpemUgcXVv
dGEgd2FzIGV4Y2VlZGVkLiIsIDAsIFN0cmluZygpKTsKK30KIAotICAgIC8vIEZJWE1FOiBTaG91
bGQgbm90IGFib3J0IGNhY2hlIHVwZGF0ZSAtIHRoZSB1c2VyIG1heSBjaG9vc2UgdG8gaW5jcmVh
c2UgdGhlIHF1b3RhLgotICAgIGNhY2hlVXBkYXRlRmFpbGVkKCk7Cit2b2lkIEFwcGxpY2F0aW9u
Q2FjaGVHcm91cDo6cmVjYWxjdWxhdGVBdmFpbGFibGVTcGFjZUluUXVvdGEoKQoreworICAgIGlm
ICghY2FjaGVTdG9yYWdlKCkucmVtYWluaW5nU2l6ZUZvck9yaWdpbkV4Y2x1ZGluZ0NhY2hlKG1f
b3JpZ2luLmdldCgpLCBtX25ld2VzdENhY2hlLmdldCgpLCBtX2F2YWlsYWJsZVNwYWNlSW5RdW90
YSkpIHsKKyAgICAgICAgLy8gRmFpbGVkIHRvIGRldGVybWluZSB3aGF0IGlzIGxlZnQgaW4gdGhl
IHF1b3RhLiBGYWxsYmFjayB0byBhbGxvd2luZyBhbnl0aGluZy4KKyAgICAgICAgbV9hdmFpbGFi
bGVTcGFjZUluUXVvdGEgPSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bm9RdW90YSgpOworICAg
IH0KIH0KICAgICAKIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjptYW5pZmVzdE5vdEZvdW5k
KCkKQEAgLTg5Miw2ICs5MDQsMTEgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNoZWNr
SWZMb2FkSXNDb21wbGV0ZSgpCiAgICAgY2FzZSBDb21wbGV0ZWQ6IHsKICAgICAgICAgLy8gRklY
TUU6IEZldGNoIHRoZSByZXNvdXJjZSBmcm9tIG1hbmlmZXN0IFVSTCBhZ2FpbiwgYW5kIGNoZWNr
IHdoZXRoZXIgaXQgaXMgaWRlbnRpY2FsIHRvIHRoZSBvbmUgdXNlZCBmb3IgdXBkYXRlIChpbiBj
YXNlIHRoZSBhcHBsaWNhdGlvbiB3YXMgdXBncmFkZWQgc2VydmVyLXNpZGUgaW4gdGhlIG1lYW53
aGlsZSkuICg8cmRhcjovL3Byb2JsZW0vNjQ2NzYyNT4pCiAKKyAgICAgICAgLy8gSWYgd2UgZW5j
b3VudGVyZWQgdGhlIG9yaWdpbiBxdW90YSB3aGlsZSBkb3dubG9hZGluZyB3ZSBjYW4gcmVxdWVz
dCBhIHF1b3RhCisgICAgICAgIC8vIGluY3JlYXNlIG5vdywgYmVmb3JlIHdlIGF0dGVtcHQgdG8g
c3RvcmUgdGhlIGNhY2hlLgorICAgICAgICBpZiAobV9vcmlnaW5RdW90YVJlYWNoZWRXaGlsZURv
d25sb2FkaW5nKQorICAgICAgICAgICAgZGlkUmVhY2hPcmlnaW5RdW90YShtX2ZyYW1lLCBtX2Nh
Y2hlQmVpbmdVcGRhdGVkLT5lc3RpbWF0ZWRTaXplSW5TdG9yYWdlKCkpOworCiAgICAgICAgIEFT
U0VSVChtX2NhY2hlQmVpbmdVcGRhdGVkKTsKICAgICAgICAgaWYgKG1fbWFuaWZlc3RSZXNvdXJj
ZSkKICAgICAgICAgICAgIG1fY2FjaGVCZWluZ1VwZGF0ZWQtPnNldE1hbmlmZXN0UmVzb3VyY2Uo
bV9tYW5pZmVzdFJlc291cmNlLnJlbGVhc2UoKSk7CkBAIC05MTgsMTQgKzkzNSwxMiBAQCB2b2lk
IEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2hlY2tJZkxvYWRJc0NvbXBsZXRlKCkKICAgICAgICAg
ICAgIC8vIEZpcmUgdGhlIHN1Y2Nlc3MgZXZlbnQuCiAgICAgICAgICAgICBwb3N0TGlzdGVuZXJU
YXNrKGlzVXBncmFkZUF0dGVtcHQgPyBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6VVBEQVRFUkVBRFlf
RVZFTlQgOiBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Q0FDSEVEX0VWRU5ULCBtX2Fzc29jaWF0ZWRE
b2N1bWVudExvYWRlcnMpOwogICAgICAgICAgICAgLy8gSXQgaXMgY2xlYXIgdGhhdCB0aGUgb3Jp
Z2luIHF1b3RhIHdhcyBub3QgcmVhY2hlZCwgc28gY2xlYXIgdGhlIGZsYWcgaWYgaXQgd2FzIHNl
dC4KLSAgICAgICAgICAgIG1fb3JpZ2luUXVvdGFSZWFjaGVkID0gZmFsc2U7CisgICAgICAgICAg
ICBtX29yaWdpblF1b3RhUmVhY2hlZFByZXZpb3VzbHkgPSBmYWxzZTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIGlmIChmYWlsdXJlUmVhc29uID09IEFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjpPcmlnaW5RdW90YVJlYWNoZWQpIHsKLSAgICAgICAgICAgICAgICAvLyBXZSByYW4gb3V0
IG9mIHNwYWNlIGZvciB0aGlzIG9yaWdpbi4gUm9sbCBiYWNrIHRvIHByZXZpb3VzIHN0YXRlLgot
ICAgICAgICAgICAgICAgIGlmIChvbGROZXdlc3RDYWNoZSkKLSAgICAgICAgICAgICAgICAgICAg
c2V0TmV3ZXN0Q2FjaGUob2xkTmV3ZXN0Q2FjaGUucmVsZWFzZSgpKTsKKyAgICAgICAgICAgICAg
ICAvLyBXZSByYW4gb3V0IG9mIHNwYWNlIGZvciB0aGlzIG9yaWdpbi4gRmFsbCBkb3duIHRvIHRo
ZSBub3JtYWwgZXJyb3IgaGFuZGxpbmcKKyAgICAgICAgICAgICAgICAvLyBhZnRlciByZWNvcmRp
bmcgdGhpcyBzdGF0ZS4KICAgICAgICAgICAgICAgICBjYWNoZVVwZGF0ZUZhaWxlZER1ZVRvT3Jp
Z2luUXVvdGEoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIGlmIChmYWlsdXJlUmVhc29uID09IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpU
b3RhbFF1b3RhUmVhY2hlZCAmJiAhbV9jYWxsZWRSZWFjaGVkTWF4QXBwQ2FjaGVTaXplKSB7CkBA
IC05NzgsNiArOTkzLDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNoZWNrSWZMb2Fk
SXNDb21wbGV0ZSgpCiAgICAgc2V0VXBkYXRlU3RhdHVzKElkbGUpOwogICAgIG1fZnJhbWUgPSAw
OwogICAgIG1fbG9hZGVkU2l6ZSA9IDA7CisgICAgbV9vcmlnaW5RdW90YVJlYWNoZWRXaGlsZURv
d25sb2FkaW5nID0gZmFsc2U7CiAgICAgbV9hdmFpbGFibGVTcGFjZUluUXVvdGEgPSBBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6dW5rbm93blF1b3RhKCk7CiAgICAgbV9jYWxsZWRSZWFjaGVkTWF4
QXBwQ2FjaGVTaXplID0gZmFsc2U7CiB9CkBAIC0xMDkyLDEyICsxMTA4LDYgQEAgdm9pZCBBcHBs
aWNhdGlvbkNhY2hlR3JvdXA6OnNjaGVkdWxlUmVhY2hlZE1heEFwcENhY2hlU2l6ZUNhbGxiYWNr
KCkKICAgICAvLyBUaGUgdGltZXIgd2lsbCBkZWxldGUgaXRzZWxmIG9uY2UgaXQgZmlyZXMuCiB9
CiAKLXZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpzY2hlZHVsZVJlYWNoZWRPcmlnaW5RdW90
YUNhbGxiYWNrKCkKLXsKLSAgICAvLyBGSVhNRTogaXQgbWlnaHQgYmUgbmljZSB0byBydW4gdGhp
cyBhc3luY2hyb25vdXNseSwgYmVjYXVzZSB0aGVyZSBpcyBubyByZXR1cm4gdmFsdWUgdG8gd2Fp
dCBmb3IuCi0gICAgZGlkUmVhY2hPcmlnaW5RdW90YShtX2ZyYW1lKTsKLX0KLQogY2xhc3MgQ2Fs
bENhY2hlTGlzdGVuZXJUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sg
ewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPENhbGxDYWNoZUxpc3RlbmVyVGFzaz4g
Y3JlYXRlKFBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IGxvYWRlciwgQXBwbGljYXRpb25DYWNo
ZUhvc3Q6OkV2ZW50SUQgZXZlbnRJRCwgaW50IHByb2dyZXNzVG90YWwsIGludCBwcm9ncmVzc0Rv
bmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUdyb3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUdyb3VwLmgKaW5kZXggYWI3YjE2Yi4uMzA0MzFkZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaApAQCAt
MTAzLDcgKzEwMyw2IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgcG9zdExpc3RlbmVyVGFz
ayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6RXZlbnRJRCwgaW50IHByb2dyZXNzVG90YWwsIGludCBw
cm9ncmVzc0RvbmUsIERvY3VtZW50TG9hZGVyKik7CiAKICAgICB2b2lkIHNjaGVkdWxlUmVhY2hl
ZE1heEFwcENhY2hlU2l6ZUNhbGxiYWNrKCk7Ci0gICAgdm9pZCBzY2hlZHVsZVJlYWNoZWRPcmln
aW5RdW90YUNhbGxiYWNrKCk7CiAKICAgICBQYXNzUmVmUHRyPFJlc291cmNlSGFuZGxlPiBjcmVh
dGVSZXNvdXJjZUhhbmRsZShjb25zdCBLVVJMJiwgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiBu
ZXdlc3RDYWNoZWRSZXNvdXJjZSk7CiAKQEAgLTEyMCwxMyArMTE5LDE0IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkaWRSZWNlaXZlTWFuaWZlc3REYXRhKGNvbnN0IGNoYXIqLCBpbnQpOwogICAgIHZv
aWQgZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KCk7CiAgICAgdm9pZCBkaWRSZWFjaE1heEFwcENh
Y2hlU2l6ZSgpOwotICAgIHZvaWQgZGlkUmVhY2hPcmlnaW5RdW90YShQYXNzUmVmUHRyPEZyYW1l
PiBmcmFtZSk7CisgICAgdm9pZCBkaWRSZWFjaE9yaWdpblF1b3RhKFBhc3NSZWZQdHI8RnJhbWU+
IGZyYW1lLCBpbnQ2NF90IHNwYWNlTmVlZGVkKTsKICAgICAKICAgICB2b2lkIHN0YXJ0TG9hZGlu
Z0VudHJ5KCk7CiAgICAgdm9pZCBkZWxpdmVyRGVsYXllZE1haW5SZXNvdXJjZXMoKTsKICAgICB2
b2lkIGNoZWNrSWZMb2FkSXNDb21wbGV0ZSgpOwogICAgIHZvaWQgY2FjaGVVcGRhdGVGYWlsZWQo
KTsKICAgICB2b2lkIGNhY2hlVXBkYXRlRmFpbGVkRHVlVG9PcmlnaW5RdW90YSgpOworICAgIHZv
aWQgcmVjYWxjdWxhdGVBdmFpbGFibGVTcGFjZUluUXVvdGEoKTsKICAgICB2b2lkIG1hbmlmZXN0
Tm90Rm91bmQoKTsKICAgICAKICAgICB2b2lkIGFkZEVudHJ5KGNvbnN0IFN0cmluZyYsIHVuc2ln
bmVkIHR5cGUpOwpAQCAtMjAyLDcgKzIwMiw4IEBAIHByaXZhdGU6CiAKICAgICBpbnQ2NF90IG1f
bG9hZGVkU2l6ZTsKICAgICBpbnQ2NF90IG1fYXZhaWxhYmxlU3BhY2VJblF1b3RhOwotICAgIGJv
b2wgbV9vcmlnaW5RdW90YVJlYWNoZWQ7CisgICAgYm9vbCBtX29yaWdpblF1b3RhUmVhY2hlZFdo
aWxlRG93bmxvYWRpbmc7CisgICAgYm9vbCBtX29yaWdpblF1b3RhUmVhY2hlZFByZXZpb3VzbHk7
CiAKICAgICBmcmllbmQgY2xhc3MgQ2hyb21lQ2xpZW50Q2FsbGJhY2tUaW1lcjsKICAgICBmcmll
bmQgY2xhc3MgT3JpZ2luUXVvdGFSZWFjaGVkQ2FsbGJhY2tUaW1lcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZUNsaWVudC5oCmluZGV4IGEyN2M3NjYuLjRiMzQxZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWVDbGllbnQuaApAQCAtMTkzLDcgKzE5Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgLy8gbW9yZSB0aGFuIGFsbG93ZWQgb24gdGhpcyBvcmlnaW4uIFRoaXMgY2FsbGJhY2sgYWxs
b3dzIHRoZSBjaHJvbWUgY2xpZW50CiAgICAgICAgIC8vIHRvIHRha2UgYWN0aW9uLCBzdWNoIGFz
IHByb21wdGluZyB0aGUgdXNlciB0byBhc2sgdG8gaW5jcmVhc2UgdGhlIHF1b3RhCiAgICAgICAg
IC8vIGZvciB0aGlzIG9yaWdpbi4KLSAgICAgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRBcHBsaWNh
dGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikgPSAwOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0
eU9yaWdpbiogb3JpZ2luLCBpbnQ2NF90IHNwYWNlTmVlZGVkKSA9IDA7CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
OGNjMzE4NS4uOTRhN2Y3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NCBAQAorMjAxMS0wNy0wOCAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgor
CisgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGUgdXBkYXRlIHNob3VsZCBub3QgaW1tZWRpYXRlbHkg
ZmFpbCB3aGVuIHJlYWNoaW5nIHBlci1vcmlnaW4gcXVvdGEKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0MTc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hl
T3JpZ2luUXVvdGEpOgorICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmg6CisKIDIwMTEt
MDctMDYgIEpvaG5ueSBEaW5nICA8am5kQGNocm9taXVtLm9yZz4KIAogICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjM4NTcKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKaW5kZXggYmJiMzQwYy4uMDE4MjE3
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5j
cHAKQEAgLTY2Miw3ICs2NjIsNyBAQCB2b2lkIENocm9tZUNsaWVudEltcGw6OnJlYWNoZWRNYXhB
cHBDYWNoZVNpemUoaW50NjRfdCBzcGFjZU5lZWRlZCkKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKIH0KIAotdm9pZCBDaHJvbWVDbGllbnRJbXBsOjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9y
aWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKikKK3ZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6cmVhY2hl
ZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiosIGludDY0X3QpCiB7
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9DaHJvbWVDbGllbnRJbXBsLmgKaW5kZXggMmY3OWMwNS4uMGQ0ZGZiMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaApAQCAtMTMxLDcgKzEz
MSw3IEBAIHB1YmxpYzoKICAgICAgICAgV2ViQ29yZTo6RnJhbWUqLCBjb25zdCBXVEY6OlN0cmlu
ZyYgZGF0YWJhc2VOYW1lKTsKICNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQog
ICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3Qgc3BhY2VOZWVk
ZWQpOwotICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3Rh
KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKik7CisgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRBcHBs
aWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBpbnQ2NF90
IHNwYWNlTmVlZGVkKTsKICNlbmRpZgogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgIHZp
cnR1YWwgV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyKiBub3RpZmljYXRpb25QcmVzZW50
ZXIoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCA5OTNkZjczLi5lMDYwNjkzIDEwMDc1NQot
LS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDctMDggIEpvc2VwaCBQZWNvcmFybyAg
PGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBBcHBsaWNhdGlvbkNhY2hlIHVwZGF0ZSBz
aG91bGQgbm90IGltbWVkaWF0ZWx5IGZhaWwgd2hlbiByZWFjaGluZyBwZXItb3JpZ2luIHF1b3Rh
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDE3Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNs
aWVudEVmbDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmg6CisKIDIwMTEtMDYtMjkgIEthbmdpbCBI
YW4gIDxrYW5naWwuaGFuQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5l
dGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAKaW5kZXggNGUwMGZiMS4uM2ZkZjFiZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRF
ZmwuY3BwCkBAIC0zODMsNyArMzgzLDcgQEAgdm9pZCBDaHJvbWVDbGllbnRFZmw6OnJlYWNoZWRN
YXhBcHBDYWNoZVNpemUoaW50NjRfdCBzcGFjZU5lZWRlZCkKICAgICBub3RJbXBsZW1lbnRlZCgp
OwogfQogCi12b2lkIENocm9tZUNsaWVudEVmbDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmln
aW5RdW90YShTZWN1cml0eU9yaWdpbiopCit2b2lkIENocm9tZUNsaWVudEVmbDo6cmVhY2hlZEFw
cGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiosIGludDY0X3QpCiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmgKaW5kZXggNTc3YTZmZS4uMGY4NzRiMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmgK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmgK
QEAgLTExNCw3ICsxMTQsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQ
TElDQVRJT05TKQogICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0
X3Qgc3BhY2VOZWVkZWQpOwotICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBwbGljYXRpb25DYWNo
ZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKik7CisgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRB
cHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4qLCBpbnQ2NF90IHNwYWNl
TmVlZGVkKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VM
b2cKaW5kZXggMzU1OWEzMy4uZDNmYmE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
IEBACisyMDExLTA3LTA4ICBKb3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgQXBwbGljYXRpb25DYWNoZSB1cGRhdGUgc2hvdWxkIG5vdCBpbW1lZGlhdGVseSBm
YWlsIHdoZW4gcmVhY2hpbmcgcGVyLW9yaWdpbiBxdW90YQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQxNzcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0
ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0aW9u
Q2FjaGVPcmlnaW5RdW90YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
R3RrLmg6CisKIDIwMTEtMDctMDEgIEpvb25lIEh1ciAgPGpvb25lLmh1ckBjb2xsYWJvcmEuY28u
dWs+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29uLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKaW5kZXgg
MmE1YzRmMy4uMzlmZDg1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCkBAIC02MDIsNyArNjAyLDcgQEAgdm9pZCBDaHJv
bWVDbGllbnQ6OnJlYWNoZWRNYXhBcHBDYWNoZVNpemUoaW50NjRfdCBzcGFjZU5lZWRlZCkKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIENocm9tZUNsaWVudDo6cmVhY2hlZEFwcGxp
Y2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiopCit2b2lkIENocm9tZUNsaWVu
dDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiosIGlu
dDY0X3QpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oIGIvU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKaW5kZXggYzRiYmM3Mi4uNmI4
ZmFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50R3RrLmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50R3RrLmgKQEAgLTEyMiw3ICsxMjIsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICNlbmRp
ZgogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCiAgICAgICAgIHZpcnR1YWwg
dm9pZCByZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3Qgc3BhY2VOZWVkZWQpOwotICAgICAg
ICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbiopOworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0
aW9uQ2FjaGVPcmlnaW5RdW90YShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGludDY0X3Qgc3Bh
Y2VOZWVkZWQpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAgICAgIHZp
cnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvaGFpa3UvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cKaW5kZXgg
MThhNjQ5ZS4uODBjNTM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9oYWlrdS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxMS0wNy0wOCAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgorCisgICAg
ICAgIEFwcGxpY2F0aW9uQ2FjaGUgdXBkYXRlIHNob3VsZCBub3QgaW1tZWRpYXRlbHkgZmFpbCB3
aGVuIHJlYWNoaW5nIHBlci1vcmlnaW4gcXVvdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY0MTc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6cmVhY2hlZEFwcGxpY2F0aW9u
Q2FjaGVPcmlnaW5RdW90YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
SGFpa3UuaDoKKwogMjAxMS0wNi0xOCAgRGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmNw
cAppbmRleCA5MTU4MWQ0Li40ODdmNDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2hhaWt1
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmNwcApAQCAtMzU2LDcgKzM1
Niw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50V3g6OnJlYWNoZWRNYXhBcHBDYWNoZVNpemUoaW50NjRf
dCBzcGFjZU5lZWRlZCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIENocm9tZUNs
aWVudFd4OjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2lu
KikKK3ZvaWQgQ2hyb21lQ2xpZW50V3g6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVv
dGEoU2VjdXJpdHlPcmlnaW4qLCBpbnQ2NF90KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEhhaWt1LmggYi9Tb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEhhaWt1LmgKaW5kZXggZGE5NjNiMC4uNGJjZjliNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuaApAQCAtMTQw
LDcgKzE0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEVOQUJMRShPRkZMSU5FX1dF
Ql9BUFBMSUNBVElPTlMpCiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkTWF4QXBwQ2FjaGVT
aXplKGludDY0X3Qgc3BhY2VOZWVkZWQpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFw
cGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiopOworICAgICAgICB2aXJ0
dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdp
biosIGludDY0X3Qgc3BhY2VOZWVkZWQpOwogI2VuZGlmCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVO
VVMpCiAgICAgICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoKSB7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwppbmRleCAwYTZmNzRmLi40YjA5ZjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTggQEAKKzIwMTEtMDctMDggIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4K
KworICAgICAgICBBcHBsaWNhdGlvbkNhY2hlIHVwZGF0ZSBzaG91bGQgbm90IGltbWVkaWF0ZWx5
IGZhaWwgd2hlbiByZWFjaGluZyBwZXItb3JpZ2luIHF1b3RhCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDE3NworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJVSURlbGVnYXRlUHJpdmF0
ZS5oOgorICAgICAgICBVcGRhdGUgdGhlIGRlbGVnYXRlIHRvIGluY2x1ZGUgYSBzcGFjZSBuZWVk
ZWQgcGFyYW1ldGVyLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tOgorICAgICAg
ICAoV2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKToK
KyAgICAgICAgQ2FsbCB0aGUgZGVsZWdhdGUgd2l0aCB0aGUgbmV3IHNwYWNlIG5lZWRlZCBpbmZv
cm1hdGlvbi4KKwogMjAxMS0wNy0wNCAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgog
CiAgICAgICAgIE1vdmVkIGhhbmRsaW5nIG9mIGZyYW1lIHNpemUgY2hhbmdlcyBpbnRvIGl0cyBv
d24gbWV0aG9kLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuaAppbmRleCBkNGQ2ZWI2Li5jNjZiM2UzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMTE2LDcgKzEx
Niw3IEBAIHB1YmxpYzoKICNlbmRpZgogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElP
TlMpCiAgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRNYXhBcHBDYWNoZVNpemUoaW50NjRfdCBzcGFj
ZU5lZWRlZCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2lu
UXVvdGEoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhY2hl
ZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGlu
dDY0X3Qgc3BhY2VOZWVkZWQpOwogI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIHBvcHVsYXRlVmlz
aXRlZExpbmtzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5tbQppbmRleCA3MjE4MWM0Li4yZjlkMTliIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KKysrIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCkBAIC02
OTgsMTIgKzY5OCwxMyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6cmVhY2hlZE1heEFwcENhY2hl
U2l6ZShpbnQ2NF90IHNwYWNlTmVlZGVkKQogICAgIC8vIEZJWE1FOiBGcmVlIHNvbWUgc3BhY2Uu
CiB9CiAKLXZvaWQgV2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdp
blF1b3RhKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCit2b2lkIFdlYkNocm9tZUNsaWVudDo6cmVh
Y2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBp
bnQ2NF90IHNwYWNlTmVlZGVkKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsK
IAogICAgIFdlYlNlY3VyaXR5T3JpZ2luICp3ZWJPcmlnaW4gPSBbW1dlYlNlY3VyaXR5T3JpZ2lu
IGFsbG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46b3JpZ2luXTsKLSAgICBDYWxs
VUlEZWxlZ2F0ZShtX3dlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmV4Y2VlZGVkQXBwbGljYXRp
b25DYWNoZU9yaWdpblF1b3RhRm9yU2VjdXJpdHlPcmlnaW46KSwgd2ViT3JpZ2luKTsKKyAgICBO
U051bWJlciAqc3BhY2VOZWVkZWROdW1iZXIgPSBbTlNOdW1iZXIgbnVtYmVyV2l0aExvbmdMb25n
OnNwYWNlTmVlZGVkXTsKKyAgICBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZpZXcsIEBzZWxlY3Rvcih3
ZWJWaWV3OmV4Y2VlZGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhRm9yU2VjdXJpdHlPcmln
aW46c3BhY2VOZWVkZWQ6KSwgd2ViT3JpZ2luLCBzcGFjZU5lZWRlZE51bWJlcik7CiAgICAgW3dl
Yk9yaWdpbiByZWxlYXNlXTsKIAogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlVJRGVsZWdhdGVQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlVJRGVsZWdhdGVQcml2YXRlLmgKaW5kZXgg
OTBjZmJkZi4uNjczMzBlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJVSURlbGVnYXRlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
VUlEZWxlZ2F0ZVByaXZhdGUuaApAQCAtMTk3LDE0ICsxOTcsMTUgQEAgZXh0ZXJuIE5TU3RyaW5n
ICpXZWJDb25zb2xlTWVzc2FnZURlYnVnTWVzc2FnZUxldmVsOwogLSAodm9pZCl3ZWJWaWV3OihX
ZWJWaWV3ICopc2VuZGVyIGZyYW1lOihXZWJGcmFtZSAqKWZyYW1lIGV4Y2VlZGVkRGF0YWJhc2VR
dW90YUZvclNlY3VyaXR5T3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbiBkYXRhYmFz
ZTooTlNTdHJpbmcgKilkYXRhYmFzZUlkZW50aWZpZXI7CiAKIC8qIQotICAgIEBtZXRob2Qgd2Vi
VmlldzpleGNlZWRlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YUZvclNlY3VyaXR5T3JpZ2lu
OgorICAgIEBtZXRob2Qgd2ViVmlldzpleGNlZWRlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90
YUZvclNlY3VyaXR5T3JpZ2luOnNwYWNlTmVlZGVkOgogICAgIEBwYXJhbSBzZW5kZXIgVGhlIFdl
YlZpZXcgc2VuZGluZyB0aGUgZGVsZWdhdGUgbWV0aG9kLgotICAgIEBwYXJhbSBvcmlnaW4gVGhl
IHNlY3VyaXR5IG9yaWdpbiB0aGF0IG5lZWRzIGEgbGFyZ2VyIHF1b3RhCisgICAgQHBhcmFtIG9y
aWdpbiBUaGUgc2VjdXJpdHkgb3JpZ2luIHRoYXQgbmVlZHMgYSBsYXJnZXIgcXVvdGEuCisgICAg
QHBhcmFtIHNwYWNlTmVlZGVkIFRoZSBhbW91bnQgb2Ygc3BhY2UgbmVlZGVkIHRvIHN0b3JlIHRo
ZSBlbnRpcmUgbWFuaWZlc3QuCiAgICAgQGRpc2N1c3Npb24gVGhpcyBtZXRob2QgaXMgY2FsbGVk
IHdoZW4gYSBwYWdlIGF0dGVtcHRzIHRvIHN0b3JlIG1vcmUgaW4gdGhlIEFwcGxpY2F0aW9uIENh
Y2hlCiAgICAgZm9yIGFuIG9yaWdpbiB0aGFuIHdhcyBhbGxvd2VkIGJ5IHRoZSBxdW90YSAob3Ig
ZGVmYXVsdCkgc2V0IGZvciB0aGUgb3JpZ2luLiBUaGlzIGFsbG93cyB0aGUKICAgICBxdW90YSB0
byBiZSBpbmNyZWFzZWQgZm9yIHRoZSBzZWN1cml0eSBvcmlnaW4uCiAqLwotLSAodm9pZCl3ZWJW
aWV3OihXZWJWaWV3ICopc2VuZGVyIGV4Y2VlZGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3Rh
Rm9yU2VjdXJpdHlPcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luOworLSAodm9pZCl3
ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGV4Y2VlZGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1
b3RhRm9yU2VjdXJpdHlPcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luIHNwYWNlTmVl
ZGVkOihOU051bWJlciAqKXNwYWNlTmVlZGVkOwogCiAtIChXZWJWaWV3ICopd2ViVmlldzooV2Vi
VmlldyAqKXNlbmRlciBjcmVhdGVXZWJWaWV3V2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJl
cXVlc3Qgd2luZG93RmVhdHVyZXM6KE5TRGljdGlvbmFyeSAqKWZlYXR1cmVzOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdl
TG9nCmluZGV4IDg3ZWFkMDMuLjkzMWJjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTEtMDctMDggIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBBcHBsaWNhdGlvbkNhY2hlIHVwZGF0ZSBzaG91bGQgbm90IGltbWVkaWF0ZWx5IGZh
aWwgd2hlbiByZWFjaGluZyBwZXItb3JpZ2luIHF1b3RhCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDE3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OnJlYWNoZWRBcHBsaWNhdGlv
bkNhY2hlT3JpZ2luUXVvdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dFF0Lmg6CisKIDIwMTEtMDctMDUgIFJhZmFlbCBCcmFuZGFvICA8cmFmYWVsLmxvYm9Ab3BlbmJv
c3NhLm9yZz4KIAogICAgICAgICBbUXRdIEZpeCB0c3RfUVdlYkZyYW1lOjpzZXRIdG1sV2l0aFJl
c291cmNlKCkgQVBJIHRlc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRRdC5jcHAKaW5kZXggOWYzNTIxOS4uM2IzZDE3NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAKQEAgLTU1
NSw3ICs1NTUsNyBAQCB2b2lkIENocm9tZUNsaWVudFF0OjpyZWFjaGVkTWF4QXBwQ2FjaGVTaXpl
KGludDY0X3QpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBDaHJvbWVDbGllbnRR
dDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiogb3Jp
Z2luKQordm9pZCBDaHJvbWVDbGllbnRRdDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5R
dW90YShTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBpbnQ2NF90KQogewogICAgIGludDY0X3QgcXVv
dGE7CiAgICAgcXVpbnQ2NCBkZWZhdWx0T3JpZ2luUXVvdGEgPSBXZWJDb3JlOjpjYWNoZVN0b3Jh
Z2UoKS5kZWZhdWx0T3JpZ2luUXVvdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAppbmRleCBjN2ZiYjhhLi5iOTcxMDQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmgKKysr
IGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oCkBAIC0x
NDAsNyArMTQwLDcgQEAgcHVibGljOgogI2VuZGlmCiAjaWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQ
UExJQ0FUSU9OUykKICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2
NF90IHNwYWNlTmVlZGVkKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2Fj
aGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiopOworICAgIHZpcnR1YWwgdm9pZCByZWFjaGVk
QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKiwgaW50NjRfdCBzcGFj
ZU5lZWRlZCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICB2aXJ0dWFs
IHZvaWQgc2hvd0NvbnRleHRNZW51KCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggYjg2NzdlYy4u
YmQ2MzQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDExLTA3LTA4ICBK
b3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQXBwbGljYXRp
b25DYWNoZSB1cGRhdGUgc2hvdWxkIG5vdCBpbW1lZGlhdGVseSBmYWlsIHdoZW4gcmVhY2hpbmcg
cGVyLW9yaWdpbiBxdW90YQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjQxNzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorCiAyMDExLTA2LTMwICBB
bmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGFuIEJlcm5zdGVpbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IGNiOWJhZjEuLmRjM2M1YTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cApAQCAtNjI4LDcgKzYyOCw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkTWF4QXBw
Q2FjaGVTaXplKGludDY0X3Qgc3BhY2VOZWVkZWQpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
IAotdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVv
dGEoU2VjdXJpdHlPcmlnaW4qKQordm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRBcHBsaWNh
dGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4qLCBpbnQ2NF90KQogewogICAgIG5v
dEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IDE4Y2JiNmIuLmE1MzdkOGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0x
MjEsNyArMTIxLDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FU
SU9OUykKICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90IHNw
YWNlTmVlZGVkKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmln
aW5RdW90YShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiopOworICAgIHZpcnR1YWwgdm9pZCByZWFj
aGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwg
aW50NjRfdCBzcGFjZU5lZWRlZCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVT
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L3dpbmNlL0NoYW5nZUxvZwppbmRleCA5ZTBjNDI1Li5jNWMzNGY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDExLTA3LTA4ICBKb3NlcGggUGVjb3Jhcm8gIDxq
b2VwZWNrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQXBwbGljYXRpb25DYWNoZSB1cGRhdGUgc2hv
dWxkIG5vdCBpbW1lZGlhdGVseSBmYWlsIHdoZW4gcmVhY2hpbmcgcGVyLW9yaWdpbiBxdW90YQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQxNzcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudFdpbkNFLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xp
ZW50V2luQ0U6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFdpbkNFLmg6CisKIDIwMTEtMDYtMzAgIEtlbnRh
cm8gSGFyYSAgPGhhcmFrZW5AZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW50
IFRhbXVyYS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50V2luQ0UuY3BwIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRXaW5DRS5jcHAKaW5kZXggOWM5ZDU2NC4uNTk2MWJiZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRXaW5DRS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRX
aW5DRS5jcHAKQEAgLTMxNiw3ICszMTYsNyBAQCB2b2lkIENocm9tZUNsaWVudFdpbkNFOjpyZWFj
aGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3QpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAot
dm9pZCBDaHJvbWVDbGllbnRXaW5DRTo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90
YShTZWN1cml0eU9yaWdpbiopCit2b2lkIENocm9tZUNsaWVudFdpbkNFOjpyZWFjaGVkQXBwbGlj
YXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKiwgaW50NjRfdCkKIHsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRXaW5DRS5oIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRXaW5DRS5oCmluZGV4IDQxZGI3Y2QuLmY3ZDNkMTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
V2luQ0UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudFdpbkNFLmgKQEAgLTEzMSw3ICsxMzEsNyBAQCBwdWJsaWM6CiAgICAgLy8gbW9yZSB0aGFu
IGFsbG93ZWQgb24gdGhpcyBvcmlnaW4uIFRoaXMgY2FsbGJhY2sgYWxsb3dzIHRoZSBjaHJvbWUg
Y2xpZW50CiAgICAgLy8gdG8gdGFrZSBhY3Rpb24sIHN1Y2ggYXMgcHJvbXB0aW5nIHRoZSB1c2Vy
IHRvIGFzayB0byBpbmNyZWFzZSB0aGUgcXVvdGEKICAgICAvLyBmb3IgdGhpcyBvcmlnaW4uCi0g
ICAgdmlydHVhbCB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4qKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9u
Q2FjaGVPcmlnaW5RdW90YShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGludDY0X3Qgc3BhY2VO
ZWVkZWQpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cK
aW5kZXggNDJlN2JiNC4uYjc0NzRmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93eC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxMS0wNy0wOCAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgorCisgICAg
ICAgIEFwcGxpY2F0aW9uQ2FjaGUgdXBkYXRlIHNob3VsZCBub3QgaW1tZWRpYXRlbHkgZmFpbCB3
aGVuIHJlYWNoaW5nIHBlci1vcmlnaW4gcXVvdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY0MTc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFd4OjpyZWFjaGVkQXBwbGljYXRpb25DYWNo
ZU9yaWdpblF1b3RhKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4Lmg6
CisKIDIwMTEtMDctMDYgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+
CiAKICAgICAgICAgW3d4XSBVbnJldmlld2VkIGJ1aWxkIGZpeC4gRG9uJ3QgZXhwb3NlIHRoZSBr
aXQgZnVuY3Rpb24gdG8gdGhlIHN3aWcgd3JhcHBlcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwIGIvU291cmNlL1dlYktpdC93
eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcAppbmRleCBkMDE3MjZmLi43OTk2OTUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50
V3guY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRX
eC5jcHAKQEAgLTQ0NSw3ICs0NDUsNyBAQCB2b2lkIENocm9tZUNsaWVudFd4OjpyZWFjaGVkTWF4
QXBwQ2FjaGVTaXplKGludDY0X3Qgc3BhY2VOZWVkZWQpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
IH0KIAotdm9pZCBDaHJvbWVDbGllbnRXeDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5R
dW90YShTZWN1cml0eU9yaWdpbiopCit2b2lkIENocm9tZUNsaWVudFd4OjpyZWFjaGVkQXBwbGlj
YXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKiwgaW50NjRfdCkKIHsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93eC9XZWJLaXRT
dXBwb3J0L0Nocm9tZUNsaWVudFd4LmggYi9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQv
Q2hyb21lQ2xpZW50V3guaAppbmRleCA2NTU4N2M3Li5jMDdkNmEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaApAQCAtMTI4LDcgKzEyOCw3
IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCiAgICAg
dmlydHVhbCB2b2lkIHJlYWNoZWRNYXhBcHBDYWNoZVNpemUoaW50NjRfdCBzcGFjZU5lZWRlZCk7
Ci0gICAgdmlydHVhbCB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2Vj
dXJpdHlPcmlnaW4qKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVP
cmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiosIGludDY0X3Qgc3BhY2VOZWVkZWQpOwogI2VuZGlm
CiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBkZDY2MjAyLi5iMTY5
M2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDctMDggIEpvc2VwaCBQZWNv
cmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBBcHBsaWNhdGlvbkNhY2hlIHVw
ZGF0ZSBzaG91bGQgbm90IGltbWVkaWF0ZWx5IGZhaWwgd2hlbiByZWFjaGluZyBwZXItb3JpZ2lu
IHF1b3RhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
NDE3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVv
dGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
Lmg6CisKIDIwMTEtMDctMDYgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgogCiAg
ICAgICAgIFtRdF1bV0syXSBTcGxpdCBRdCBBUEkgaW50byB0d28gZGlmZmVyZW50IHdlYiB2aWV3
cyAodG91Y2ggYW5kIGRlc2t0b3ApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggYzhmZmU1
MS4uYjllNWVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtNTQyLDcgKzU0Miw3IEBA
IHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3QpCiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRB
cHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4qKQordm9pZCBXZWJDaHJv
bWVDbGllbnQ6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmln
aW4qLCBpbnQ2NF90KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaAppbmRleCBkMjg2NzFmLi45YjdhY2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTE0
MCw3ICsxNDAsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FU
SU9OUykKICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90IHNw
YWNlTmVlZGVkKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmln
aW5RdW90YShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiopOworICAgIHZpcnR1YWwgdm9pZCByZWFj
aGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwg
aW50NjRfdCBzcGFjZU5lZWRlZCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQ
UE9SVCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCA3MTAxMGM0Li5jOGYyZDQ3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTEtMDctMDggIEpvc2VwaCBQZWNvcmFy
byAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBBcHBsaWNhdGlvbkNhY2hlIHVwZGF0
ZSBzaG91bGQgbm90IGltbWVkaWF0ZWx5IGZhaWwgd2hlbiByZWFjaGluZyBwZXItb3JpZ2luIHF1
b3RhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDE3
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoTGF5b3V0VGVz
dENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKToKKyAgICAgICAgKGRpc2FsbG93SW5j
cmVhc2VGb3JBcHBsaWNhdGlvbkNhY2hlUXVvdGFDYWxsYmFjayk6CisgICAgICAgIChMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6
OmRpc2FsbG93SW5jcmVhc2VGb3JBcHBsaWNhdGlvbkNhY2hlUXVvdGEpOgorICAgICAgICAoTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldERpc2FsbG93SW5jcmVhc2VGb3JBcHBsaWNhdGlvbkNhY2hl
UXVvdGEpOgorICAgICAgICBFeHBvc2UgYSBmdW5jdGlvbiB0byBwcmV2ZW50IGF1dG9tYXRpY2Fs
bHkgaW5jcmVhc2luZyB0aGUgcGVyLW9yaWdpbgorICAgICAgICBxdW90YSB3aGVuIHRoZSBxdW90
YSBpcyByZWFjaGVkLiBUaGlzIGFsbG93cyB1cyB0byB0ZXN0IHdoYXQgaGFwcGVucworICAgICAg
ICB3aGVuIGEgdXNlciB3b3VsZCAiZGlzYWxsb3ciIGEgcXVvdGEgaW5jcmVhc2UuCisKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bVUlEZWxl
Z2F0ZSB3ZWJWaWV3OmV4Y2VlZGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhRm9yU2VjdXJp
dHlPcmlnaW46c3BhY2VOZWVkZWQ6XSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvRHVt
cFJlbmRlclRyZWVRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEdW1wUmVuZGVyVHJlZTo6ZHVt
cEFwcGxpY2F0aW9uQ2FjaGVRdW90YSk6CisgICAgICAgIFJlc3BlY3QgdGhlIG5ldyBkaXNhbGxv
d0luY3JlYXNlIGZsYWcgZm9yIHBvcnRzIHRoYXQgaW1wbGVtZW50CisgICAgICAgIGFwcGxpY2F0
aW9uIGNhY2hlIHF1b3Rhcy4KKwogMjAxMS0wNy0wNiAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBucnd0OiBmaXggdHlwbyBwcmV2ZW50aW5nIGh0dHAgc3Rh
cnR1cCBvbiB3aW5kb3dzCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJv
bGxlci5jcHAKaW5kZXggZGY2ZjM1MS4uOTkyMjIxOCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtNDMsNyArNDMsOCBAQAogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KIAogTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9s
bGVyKGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0UGF0aE9yVVJMLCBjb25zdCBzdGQ6OnN0cmluZyYg
ZXhwZWN0ZWRQaXhlbEhhc2gpCi0gICAgOiBtX2R1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVD
YWxsYmFja3MoZmFsc2UpCisgICAgOiBtX2Rpc2FsbG93SW5jcmVhc2VGb3JBcHBsaWNhdGlvbkNh
Y2hlUXVvdGEoZmFsc2UpCisgICAgLCBtX2R1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxs
YmFja3MoZmFsc2UpCiAgICAgLCBtX2R1bXBBc0F1ZGlvKGZhbHNlKQogICAgICwgbV9kdW1wQXNQ
REYoZmFsc2UpCiAgICAgLCBtX2R1bXBBc1RleHQoZmFsc2UpCkBAIC05OCw2ICs5OSwxMyBAQCBQ
YXNzUmVmUHRyPExheW91dFRlc3RDb250cm9sbGVyPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y3Jl
YXRlKGNvbnN0IHN0ZDo6c3RyaW5nJgogCiAvLyBTdGF0aWMgRnVuY3Rpb25zCiAKK3N0YXRpYyBK
U1ZhbHVlUmVmIGRpc2FsbG93SW5jcmVhc2VGb3JBcHBsaWNhdGlvbkNhY2hlUXVvdGFDYWxsYmFj
ayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVm
IHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3Vt
ZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgTGF5b3V0VGVzdENvbnRyb2xs
ZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2Jq
ZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+c2V0RGlzYWxsb3dJ
bmNyZWFzZUZvckFwcGxpY2F0aW9uQ2FjaGVRdW90YSh0cnVlKTsKKyAgICByZXR1cm4gSlNWYWx1
ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIGR1bXBBcHBs
aWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3NDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4
dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBh
cmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBl
eGNlcHRpb24pCiB7CiAgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0
aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2Jq
ZWN0KSk7CkBAIC0yMjYzLDYgKzIyNzEsNyBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKCkKICAgICAgICAgeyAibm9kZXNGcm9tUmVjdCIs
IG5vZGVzRnJvbVJlY3RDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJkZWNvZGVIb3N0TmFt
ZSIsIGRlY29kZUhvc3ROYW1lQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiZGlzYWJsZUlt
YWdlTG9hZGluZyIsIGRpc2FibGVJbWFnZUxvYWRpbmdDYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAg
ICB7ICJkaXNhbGxvd0luY3JlYXNlRm9yQXBwbGljYXRpb25DYWNoZVF1b3RhIiwgZGlzYWxsb3dJ
bmNyZWFzZUZvckFwcGxpY2F0aW9uQ2FjaGVRdW90YUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAg
IHsgImRpc3BhdGNoUGVuZGluZ0xvYWRSZXF1ZXN0cyIsIGRpc3BhdGNoUGVuZGluZ0xvYWRSZXF1
ZXN0c0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImRpc3BsYXkiLCBkaXNwbGF5Q2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKICAgICAgICAgeyAiZGlzcGxheUludmFsaWRhdGVkUmVnaW9uIiwgZGlzcGxh
eUludmFsaWRhdGVkUmVnaW9uQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IGRmNzViZWEuLjEzYWZhOTcgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtMTU1LDYgKzE1NSw5
IEBAIHB1YmxpYzoKICAgICBib29sIGdlbmVyYXRlUGl4ZWxSZXN1bHRzKCkgY29uc3QgeyByZXR1
cm4gbV9nZW5lcmF0ZVBpeGVsUmVzdWx0czsgfQogICAgIHZvaWQgc2V0R2VuZXJhdGVQaXhlbFJl
c3VsdHMoYm9vbCBnZW5lcmF0ZVBpeGVsUmVzdWx0cykgeyBtX2dlbmVyYXRlUGl4ZWxSZXN1bHRz
ID0gZ2VuZXJhdGVQaXhlbFJlc3VsdHM7IH0KIAorICAgIGJvb2wgZGlzYWxsb3dJbmNyZWFzZUZv
ckFwcGxpY2F0aW9uQ2FjaGVRdW90YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzYWxsb3dJbmNyZWFz
ZUZvckFwcGxpY2F0aW9uQ2FjaGVRdW90YTsgfQorICAgIHZvaWQgc2V0RGlzYWxsb3dJbmNyZWFz
ZUZvckFwcGxpY2F0aW9uQ2FjaGVRdW90YShib29sIGRpc2FsbG93SW5jcmVhc2UpIHsgbV9kaXNh
bGxvd0luY3JlYXNlRm9yQXBwbGljYXRpb25DYWNoZVF1b3RhID0gZGlzYWxsb3dJbmNyZWFzZTsg
fQorCiAgICAgYm9vbCBkdW1wQXBwbGljYXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzKCkgY29u
c3QgeyByZXR1cm4gbV9kdW1wQXBwbGljYXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzOyB9CiAg
ICAgdm9pZCBzZXREdW1wQXBwbGljYXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzKGJvb2wgZHVt
cENhbGxiYWNrcykgeyBtX2R1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3MgPSBk
dW1wQ2FsbGJhY2tzOyB9CiAKQEAgLTM1MSw2ICszNTQsNyBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCBzZXRHZW9sb2NhdGlvblBlcm1pc3Npb25Db21tb24oYm9vbCBhbGxvdyk7CiAKKyAgICBib29s
IG1fZGlzYWxsb3dJbmNyZWFzZUZvckFwcGxpY2F0aW9uQ2FjaGVRdW90YTsKICAgICBib29sIG1f
ZHVtcEFwcGxpY2F0aW9uQ2FjaGVEZWxlZ2F0ZUNhbGxiYWNrczsKICAgICBib29sIG1fZHVtcEFz
QXVkaW87CiAgICAgYm9vbCBtX2R1bXBBc1BERjsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVs
ZWdhdGUubW0KaW5kZXggNmI4NDczOC4uNGE1NDgwYiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L1VJRGVsZWdhdGUubW0KQEAgLTE2NiwxMyArMTY2LDE2IEBAIER1bXBSZW5kZXJUcmVlRHJhZ2dp
bmdJbmZvICpkcmFnZ2luZ0luZm8gPSBuaWw7CiAgICAgW1tvcmlnaW4gZGF0YWJhc2VRdW90YU1h
bmFnZXJdIHNldFF1b3RhOmRlZmF1bHRRdW90YV07CiB9CiAKLS0gKHZvaWQpd2ViVmlldzooV2Vi
VmlldyAqKXNlbmRlciBleGNlZWRlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YUZvclNlY3Vy
aXR5T3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbgorLSAodm9pZCl3ZWJWaWV3OihX
ZWJWaWV3ICopc2VuZGVyIGV4Y2VlZGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhRm9yU2Vj
dXJpdHlPcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luIHNwYWNlTmVlZGVkOihOU051
bWJlciAqKXNwYWNlTmVlZGVkCiB7CiAgICAgaWYgKCFkb25lICYmIGdMYXlvdXRUZXN0Q29udHJv
bGxlci0+ZHVtcEFwcGxpY2F0aW9uQ2FjaGVEZWxlZ2F0ZUNhbGxiYWNrcygpKSB7CiAgICAgICAg
IHByaW50ZigiVUkgREVMRUdBVEUgQVBQTElDQVRJT04gQ0FDSEUgQ0FMTEJBQ0s6IGV4Y2VlZGVk
QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhRm9yU2VjdXJpdHlPcmlnaW46eyVzLCAlcywgJWl9
XG4iLAogICAgICAgICAgICAgW1tvcmlnaW4gcHJvdG9jb2xdIFVURjhTdHJpbmddLCBbW29yaWdp
biBob3N0XSBVVEY4U3RyaW5nXSwgW29yaWdpbiBwb3J0XSk7CiAgICAgfQogCisgICAgaWYgKGdM
YXlvdXRUZXN0Q29udHJvbGxlci0+ZGlzYWxsb3dJbmNyZWFzZUZvckFwcGxpY2F0aW9uQ2FjaGVR
dW90YSgpKQorICAgICAgICByZXR1cm47CisKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9u
ZyBsb25nIGRlZmF1bHRPcmlnaW5RdW90YSA9IFtXZWJBcHBsaWNhdGlvbkNhY2hlIGRlZmF1bHRP
cmlnaW5RdW90YV07CiAgICAgW1tvcmlnaW4gYXBwbGljYXRpb25DYWNoZVF1b3RhTWFuYWdlcl0g
c2V0UXVvdGE6ZGVmYXVsdE9yaWdpblF1b3RhXTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
cXQvRHVtcFJlbmRlclRyZWVRdC5jcHAKaW5kZXggN2Y1ZjgyMi4uNzYzNmQzOCAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5jcHAKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5jcHAKQEAgLTEwNDksNiArMTA0
OSwxMCBAQCB2b2lkIER1bXBSZW5kZXJUcmVlOjpkdW1wQXBwbGljYXRpb25DYWNoZVF1b3RhKFFX
ZWJTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBxdWludAogICAgICAgICAgICBvcmlnaW4tPmhvc3Qo
KS50b1V0ZjgoKS5kYXRhKCksCiAgICAgICAgICAgIG9yaWdpbi0+cG9ydCgpCiAgICAgICAgICAg
ICk7CisKKyAgICBpZiAobV9jb250cm9sbGVyLT5kaXNhbGxvd0luY3JlYXNlRm9yQXBwbGljYXRp
b25DYWNoZVF1b3RhKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIG9yaWdpbi0+c2V0QXBwbGlj
YXRpb25DYWNoZVF1b3RhKGRlZmF1bHRPcmlnaW5RdW90YSk7CiB9CiAK
</data>
<flag name="review"
          id="94775"
          type_id="1"
          status="-"
          setter="ap"
    />
    <flag name="commit-queue"
          id="94778"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100181</attachid>
            <date>2011-07-08 16:12:19 -0700</date>
            <delta_ts>2011-07-08 18:25:57 -0700</delta_ts>
            <desc>[PATCH] Address Comments</desc>
            <filename>take2.patch</filename>
            <type>text/plain</type>
            <size>73653</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxNjI4MzIwLi42ZGEyM2FiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTEtMDct
MDggIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBBcHBs
aWNhdGlvbkNhY2hlIHVwZGF0ZSBzaG91bGQgbm90IGltbWVkaWF0ZWx5IGZhaWwgd2hlbiByZWFj
aGluZyBwZXItb3JpZ2luIHF1b3RhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02NDE3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEluY2x1ZGUgc3BhY2VOZWVkZWQgaW5mb3JtYXRpb24gaW4gdGhlIG91dHB1
dCBkdW1wZWQgZm9yIGFwcGNhY2hlIHF1b3RhIGRlbGVnYXRlcy4KKyAgICAgICAgQWRkIGFuZCB1
cGRhdGUgdGVzdHMgcmVsYXRlZCB0byBoYW5kbGluZyBvZiBwZXItb3JpZ2luIHF1b3Rhcy4KKwor
ICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLXF1b3RhLWNvbnRpbnVlZC1kb3du
bG9hZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUv
b3JpZ2luLXF1b3RhLWNvbnRpbnVlZC1kb3dubG9hZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9xdW90YS1vcmlnaW4tY29udGludWVkLWRvd25s
b2FkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2Vz
L3F1b3RhLW9yaWdpbi1jb250aW51ZWQtZG93bmxvYWQubWFuaWZlc3Q6IEFkZGVkLgorICAgICAg
ICBOZXcgdGVzdCB3aGljaCBjaGVja3MgdGhhdCB0aGVyZSB3aWxsIHN0aWxsIGJlIGEgc3VjY2Vz
c2Z1bCBjYWNoZQorICAgICAgICB3aGVuIHRoZSBwZXItb3JpZ2luIHF1b3RhIGlzIHJlYWNoZWQg
YW5kIGluY3JlYXNlZCBhdCB0aGUgZW5kIG9mIGRvd25sb2FkaW5nLgorCisgICAgICAgICogaHR0
cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tcXVvdGEtY29udGludWVkLWRvd25sb2FkLW11bHRpcGxl
LW1hbmlmZXN0cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBw
Y2FjaGUvb3JpZ2luLXF1b3RhLWNvbnRpbnVlZC1kb3dubG9hZC1tdWx0aXBsZS1tYW5pZmVzdHMu
aHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvcXVv
dGEtb3JpZ2luLWNvbnRpbnVlZC1kb3dubG9hZC1tdWx0aXBsZS1tYW5pZmVzdHMtMS5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9xdW90YS1vcmln
aW4tY29udGludWVkLWRvd25sb2FkLW11bHRpcGxlLW1hbmlmZXN0cy0xLm1hbmlmZXN0OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9xdW90YS1vcmlnaW4t
Y29udGludWVkLWRvd25sb2FkLW11bHRpcGxlLW1hbmlmZXN0cy0yLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL3F1b3RhLW9yaWdpbi1jb250aW51
ZWQtZG93bmxvYWQtbXVsdGlwbGUtbWFuaWZlc3RzLTIubWFuaWZlc3Q6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL3F1b3RhLW9yaWdpbi1jb250aW51ZWQt
ZG93bmxvYWQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNv
dXJjZXMvcXVvdGEtb3JpZ2luLWNvbnRpbnVlZC1kb3dubG9hZC5tYW5pZmVzdDogQWRkZWQuCisg
ICAgICAgIE5ldyB0ZXN0IHdoaWNoIGNoZWNrcyB0aGF0IHRoZSBzcGFjZU5lZWRlZCBhcHByb3By
aWF0ZWx5IGxpc3RzIGVub3VnaCBzcGFjZSBmb3IKKyAgICAgICAgbXVsdGlwbGUgbWFuaWZlc3Rz
IGFjcm9zcyBtdWx0aXBsZSBmcmFtZXMgZm9yIHRoZSBzYW1lIG9yaWdpbi4KKworICAgICAgICAq
IGh0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL3F1b3RhLW9yaWdpbi1pZnJhbWUtMy5tYW5p
ZmVzdDogRml4IGEgdHlwby4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1x
dW90YS5odG1sOgorICAgICAgICBVcGRhdGUgdGhlIG9sZCB0ZXN0IHRvIGRpc2FsbG93IGF1dG9t
YXRpYyBpbmNyZWFzZSBvZiB0aGUgcXVvdGEsCisgICAgICAgIHdoaWNoIGlzIHRoZSBkZWZhdWx0
IGhhbmRsaW5nIG9mIERSVCB3aGVuIHJlYWNoaW5nIHRoZSBxdW90YS4KKworICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ndGsvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Ta2lwcGVkOgorICAgICAgICAq
IHBsYXRmb3JtL3dpbi9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3drMi9Ta2lwcGVkOgor
ICAgICAgICBTa2lwIHRoZSB0ZXN0IG9uIHBvcnRzIHRoYXQgZG9uJ3QgaW1wbGVtZW50IEFwcGxp
Y2F0aW9uQ2FjaGUgcGVyLW9yaWdpbiBxdW90YXMuCisKIDIwMTEtMDctMDYgIEpvaG5ueSBEaW5n
ICA8am5kQGNocm9taXVtLm9yZz4KIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjM4NTcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
YXBwY2FjaGUvb3JpZ2luLXF1b3RhLWNvbnRpbnVlZC1kb3dubG9hZC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90YS1jb250aW51ZWQtZG93
bmxvYWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2
NTM2YTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hl
L29yaWdpbi1xdW90YS1jb250aW51ZWQtZG93bmxvYWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
NyBAQAorVUkgREVMRUdBVEUgQVBQTElDQVRJT04gQ0FDSEUgQ0FMTEJBQ0s6IGV4Y2VlZGVkQXBw
bGljYXRpb25DYWNoZU9yaWdpblF1b3RhRm9yU2VjdXJpdHlPcmlnaW46e2h0dHAsIDEyNy4wLjAu
MSwgODAwMH0gc3BhY2VOZWVkZWQ6MTU5MTgKK1RoaXMgdGVzdCBjaGVja3MgdGhhdCBwZXItb3Jp
Z2luIGFwcGxpY2F0aW9uIGNhY2hlIHF1b3RhIGRvbid0IHJlcXVpcmUgYSByZWZyZXNoIHRvIGNv
bXBsZXRlIHN1Y2Nlc3NmdWxseS4KKworVGhpcyB0ZXN0IHNldHMgdGhlIHF1b3RhIGZvciB0aGUg
b3JpZ2luIHRvIDFrYiwgYW5kIGF0dGVtcHRzIHRvIGZpbGwgaXQgdXAgd2l0aCBtb3JlIHRoYW4g
MWtiIG9mIGRhdGEuIFRoZSBkb3dubG9hZCBzaG91bGQgY29tcGxldGUgc3VjY2Vzc2Z1bGx5LCB3
aXRoIHRoZSBxdW90YSBiZWluZyBpbmNyZWFzZWQgdG8gdGhlIGRlZmF1bHQgb2YgNU1CLiBUaGUg
ZGVsZWdhdGUgc2hvdWxkIGJlIGluZm9ybWVkIGZvciB0aGUgZXhjZWVkZWQgcXVvdGEsIGluY3Jl
YXNlIGl0IHRvIGEgc2l6ZSBsYXJnZSBlbm91Z2gsIGFuZCB0aGUgZG93bmxvYWQgc3VjY2VlZC4K
KworUEFTUyAtIGNhY2hlZCBpZnJhbWUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9hcHBjYWNoZS9vcmlnaW4tcXVvdGEtY29udGludWVkLWRvd25sb2FkLW11bHRpcGxlLW1h
bmlmZXN0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL29y
aWdpbi1xdW90YS1jb250aW51ZWQtZG93bmxvYWQtbXVsdGlwbGUtbWFuaWZlc3RzLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOGQwYjhjCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tcXVvdGEt
Y29udGludWVkLWRvd25sb2FkLW11bHRpcGxlLW1hbmlmZXN0cy1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw4IEBACitVSSBERUxFR0FURSBBUFBMSUNBVElPTiBDQUNIRSBDQUxMQkFDSzogZXhjZWVk
ZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGFGb3JTZWN1cml0eU9yaWdpbjp7aHR0cCwgMTI3
LjAuMC4xLCA4MDAwfSBzcGFjZU5lZWRlZDozMjAwMQorVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IHBl
ci1vcmlnaW4gYXBwbGljYXRpb24gY2FjaGUgcXVvdGEgd29ya3MgY29ycmVjdGx5IHdpdGggbXVs
dGlwbGUgbWFuaWZlc3RzL2NhY2hlcyBwZXItb3JpZ2luLgorCitUaGlzIHRlc3Qgc2V0cyB0aGUg
cXVvdGEgZm9yIHRoZSBvcmlnaW4gdG8gMjBrYiwgYW5kIGF0dGVtcHRzIHRvIGZpbGwgaXQgdXAg
d2l0aCAyIGRpZmZlcmVudCBhcHBsaWNhdGlvbiBjYWNoZXMgYWJvdXQgMTVrYiBlYWNoLiBUaGUg
Zmlyc3QgZnJhbWUgd2lsbCBjYWNoZSBzdWNjZXNzZnVsbHkgYW5kIGZpbGwgdXAgYWJvdXQgMTVr
YiBvZiB0aGUgb3JpZ2luIHF1b3RhLiBUaGUgc2Vjb25kIGZyYW1lIHdpbGwgcmVhY2ggdGhlIHF1
b3RhLCBjYXVzZSBhIGRlbGVnYXRlIGNhbGxiYWNrLCBkdW1wIHRoZSBzcGFjZU5lZWRlZCAod2hp
Y2ggc2hvdWxkIGJlIGVub3VnaCBmb3IgYm90aCBpZnJhbWUgY2FjaGVzKSwgYW5kIHN1Y2NlZWQg
ZHVlIHRvIHRoZSBkZWZhdWx0IERSVCBiZWhhdmlvciBvciByYWlzaW5nIHRoZSBxdW90YS4KKwor
UEFTUyAtIGNhY2hlZCBpZnJhbWUKK1BBU1MgLSBjYWNoZWQgaWZyYW1lCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLXF1b3RhLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90YS1jb250aW51ZWQtZG93bmxv
YWQtbXVsdGlwbGUtbWFuaWZlc3RzLmh0bWwKc2ltaWxhcml0eSBpbmRleCA1NiUKY29weSBmcm9t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLXF1b3RhLmh0bWwKY29weSB0
byBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90YS1jb250aW51ZWQt
ZG93bmxvYWQtbXVsdGlwbGUtbWFuaWZlc3RzLmh0bWwKaW5kZXggYTczMjJmZC4uMGE0MjcyMSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tcXVvdGEu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90YS1j
b250aW51ZWQtZG93bmxvYWQtbXVsdGlwbGUtbWFuaWZlc3RzLmh0bWwKQEAgLTM3LDI1ICszNywx
NiBAQCBmdW5jdGlvbiBhZGRJRnJhbWVXaXRoQ29udGludWF0aW9uKHNyYywgY29udGludWF0aW9u
KSB7CiB9CiAKIGZ1bmN0aW9uIGFkZEZpcnN0SUZyYW1lKCkgewotICAgIC8vIEV4cGVjdGVkIHRv
IHN1Y2NlZWQuCi0gICAgYWRkSUZyYW1lV2l0aENvbnRpbnVhdGlvbigicmVzb3VyY2VzL3F1b3Rh
LW9yaWdpbi1pZnJhbWUtMS5odG1sIiwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAvLyBFeHBlY3Rl
ZCB0byBzdWNjZWVkLiBXaWxsIGJlIH4xNWtiIG91dCBvZiB0aGUgMjBrYiBsaW1pdC4KKyAgICBh
ZGRJRnJhbWVXaXRoQ29udGludWF0aW9uKCJyZXNvdXJjZXMvcXVvdGEtb3JpZ2luLWNvbnRpbnVl
ZC1kb3dubG9hZC1tdWx0aXBsZS1tYW5pZmVzdHMtMS5odG1sIiwgZnVuY3Rpb24oZXZlbnQpIHsK
ICAgICAgICAgbG9nKGV2ZW50LmRhdGEpOwogICAgICAgICBhZGRTZWNvbmRJRnJhbWUoKTsKICAg
ICB9KTsKIH0KIAogZnVuY3Rpb24gYWRkU2Vjb25kSUZyYW1lKCkgewotICAgIC8vIEV4cGVjdGVk
IHRvIGZhaWwsIHRoZW4gaW5jcmVhc2UgdGhlIHF1b3RhLgotICAgIC8vIE5PVEU6IFdoZW4gdGhp
cyBmYWlscywgdGhlIGV4Y2VlZCBjYWxsYmFjayB3aWxsIGF1dG9tYXRpY2FsbHkgaW5jcmVhc2Ug
aXQgYmFjayB0byB0aGUgZGVmYXVsdCBxdW90YSBzaXplLgotICAgIGFkZElGcmFtZVdpdGhDb250
aW51YXRpb24oInJlc291cmNlcy9xdW90YS1vcmlnaW4taWZyYW1lLTIuaHRtbCIsIGZ1bmN0aW9u
KGV2ZW50KSB7Ci0gICAgICAgIGxvZyhldmVudC5kYXRhKTsKLSAgICAgICAgYWRkVGhpcmRJRnJh
bWUoKTsKLSAgICB9KTsKLX0KLQotZnVuY3Rpb24gYWRkVGhpcmRJRnJhbWUoKSB7Ci0gICAgLy8g
RXhwZWN0ZWQgdG8gc3VjY2VlZC4KLSAgICBhZGRJRnJhbWVXaXRoQ29udGludWF0aW9uKCJyZXNv
dXJjZXMvcXVvdGEtb3JpZ2luLWlmcmFtZS0zLmh0bWwiLCBmdW5jdGlvbihldmVudCkgeworICAg
IC8vIEV4cGVjdGVkIHRvIHN1Y2NlZWQsIGR1ZSB0byBhdXRvbWF0aWNhbGx5IGluY3JlYXNpbmcg
dGhlIHF1b3RhLgorICAgIGFkZElGcmFtZVdpdGhDb250aW51YXRpb24oInJlc291cmNlcy9xdW90
YS1vcmlnaW4tY29udGludWVkLWRvd25sb2FkLW11bHRpcGxlLW1hbmlmZXN0cy0yLmh0bWwiLCBm
dW5jdGlvbihldmVudCkgewogICAgICAgICBsb2coZXZlbnQuZGF0YSk7CiAgICAgICAgIGZpbmlz
aFRlc3QoKTsKICAgICB9KTsKQEAgLTY0LDEzICs1NSwxNyBAQCBmdW5jdGlvbiBhZGRUaGlyZElG
cmFtZSgpIHsKIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHkgb25sb2FkPSJzdGFydFRlc3QoKSI+
Ci08cD5UaGlzIHRlc3QgY2hlY2tzIHRoYXQgcGVyLW9yaWdpbiBhcHBsaWNhdGlvbiBjYWNoZSBx
dW90YXMgYXJlIGVuZm9yY2VkLjwvcD4KKzxwPlRoaXMgdGVzdCBjaGVja3MgdGhhdCBwZXItb3Jp
Z2luIGFwcGxpY2F0aW9uIGNhY2hlIHF1b3RhIHdvcmtzIGNvcnJlY3RseSB3aXRoIG11bHRpcGxl
IG1hbmlmZXN0cy9jYWNoZXMgcGVyLW9yaWdpbi48L3A+CiA8cD4KICAgICBUaGlzIHRlc3Qgc2V0
cyB0aGUgcXVvdGEgZm9yIHRoZSBvcmlnaW4gdG8gMjBrYiwgYW5kIGF0dGVtcHRzIHRvIGZpbGwK
LSAgICBpdCB1cCB3aXRoIDIgaWZyYW1lcyB0aGF0IGFyZSAxM2tiIGVhY2guIFRoZSBhcHBsaWNh
dGlvbiBjYWNoZSBkb3dubG9hZAotICAgIHByb2Nlc3Mgc2hvdWxkIGZhaWwgb24gdGhlIDJuZCBp
ZnJhbWUgYW5kIHRoZSBVSSBEZWxlZ2F0ZSBzaG91bGQgYmUKLSAgICBpbmZvcm1lZCBvZiB0aGUg
ZXhjZWVkZWQgcXVvdGEuIEluY3JlYXNpbmcgdGhlIHNpemUgdG8gNDBrYi4gQSAzcmQKLSAgICBp
ZnJhbWUgaXMgYWRkZWQsIHdoaWNoIHNob3VsZCBzdWNjZWVkLgorICAgIGl0IHVwIHdpdGggMiBk
aWZmZXJlbnQgYXBwbGljYXRpb24gY2FjaGVzIGFib3V0IDE1a2IgZWFjaC4KKworICAgIFRoZSBm
aXJzdCBmcmFtZSB3aWxsIGNhY2hlIHN1Y2Nlc3NmdWxseSBhbmQgZmlsbCB1cCBhYm91dCAxNWti
IG9mCisgICAgdGhlIG9yaWdpbiBxdW90YS4KKworICAgIFRoZSBzZWNvbmQgZnJhbWUgd2lsbCBy
ZWFjaCB0aGUgcXVvdGEsIGNhdXNlIGEgZGVsZWdhdGUgY2FsbGJhY2ssCisgICAgZHVtcCB0aGUg
c3BhY2VOZWVkZWQgKHdoaWNoIHNob3VsZCBiZSBlbm91Z2ggZm9yIGJvdGggaWZyYW1lIGNhY2hl
cyksCisgICAgYW5kIHN1Y2NlZWQgZHVlIHRvIHRoZSBkZWZhdWx0IERSVCBiZWhhdmlvciBvciBy
YWlzaW5nIHRoZSBxdW90YS4KIDwvcD4KIDxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgogPC9ib2R5
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tcXVv
dGEtY29udGludWVkLWRvd25sb2FkLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNh
Y2hlL29yaWdpbi1xdW90YS1jb250aW51ZWQtZG93bmxvYWQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi44MDExOTAyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tcXVvdGEtY29udGludWVkLWRvd25sb2FkLmh0
bWwKQEAgLTAsMCArMSw2MCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisKKy8vIEhlbHBl
cnMuCisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKK30KKworLy8gU3Rh
cnQgYW5kIGVuZC4KKworZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuY2xlYXJB
bGxBcHBsaWNhdGlvbkNhY2hlcygpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXBwbGljYXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzKCk7CisgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLnNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSgxMDI0KTsKKyAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgfQorCisgICAgYWRkSUZyYW1lKCk7Cit9CisK
K2Z1bmN0aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCisv
LyBTdGFnZXMuCisKK2Z1bmN0aW9uIGFkZElGcmFtZVdpdGhDb250aW51YXRpb24oc3JjLCBjb250
aW51YXRpb24pIHsKKyAgICB3aW5kb3cub25tZXNzYWdlID0gY29udGludWF0aW9uOworICAgIHZh
ciBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICBpZnJhbWUu
c3JjID0gc3JjOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lKTsKK30KKwor
ZnVuY3Rpb24gYWRkSUZyYW1lKCkgeworICAgIC8vIEV4cGVjdGVkIHRvIHN1Y2NlZWQuIERlZmF1
bHQgaGFuZGxpbmcgd2lsbCByYWlzZSB0aGUgcXVvdGEgYmFjayB1cCB0byA1TUIgd2hpY2ggaXMg
ZW5vdWdoLgorICAgIGFkZElGcmFtZVdpdGhDb250aW51YXRpb24oInJlc291cmNlcy9xdW90YS1v
cmlnaW4tY29udGludWVkLWRvd25sb2FkLmh0bWwiLCBmdW5jdGlvbihldmVudCkgeworICAgICAg
ICBsb2coZXZlbnQuZGF0YSk7CisgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICB9KTsKK30KKwor
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InN0YXJ0VGVzdCgpIj4KKzxwPlRoaXMg
dGVzdCBjaGVja3MgdGhhdCBwZXItb3JpZ2luIGFwcGxpY2F0aW9uIGNhY2hlIHF1b3RhIGRvbid0
IHJlcXVpcmUgYSByZWZyZXNoIHRvIGNvbXBsZXRlIHN1Y2Nlc3NmdWxseS48L3A+Cis8cD4KKyAg
ICBUaGlzIHRlc3Qgc2V0cyB0aGUgcXVvdGEgZm9yIHRoZSBvcmlnaW4gdG8gMWtiLCBhbmQgYXR0
ZW1wdHMgdG8gZmlsbAorICAgIGl0IHVwIHdpdGggbW9yZSB0aGFuIDFrYiBvZiBkYXRhLiBUaGUg
ZG93bmxvYWQgc2hvdWxkIGNvbXBsZXRlCisgICAgc3VjY2Vzc2Z1bGx5LCB3aXRoIHRoZSBxdW90
YSBiZWluZyBpbmNyZWFzZWQgdG8gdGhlIGRlZmF1bHQgb2YgNU1CLiBUaGUKKyAgICBkZWxlZ2F0
ZSBzaG91bGQgYmUgaW5mb3JtZWQgZm9yIHRoZSBleGNlZWRlZCBxdW90YSwgaW5jcmVhc2UgaXQg
dG8gYSBzaXplCisgICAgbGFyZ2UgZW5vdWdoLCBhbmQgdGhlIGRvd25sb2FkIHN1Y2NlZWQuCis8
L3A+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLXF1b3RhLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLXF1b3RhLWV4cGVj
dGVkLnR4dAppbmRleCBmYzEzMmMwLi43MWU5MTZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90YS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tcXVvdGEtZXhwZWN0ZWQudHh0CkBAIC0x
LDQgKzEsNCBAQAotVUkgREVMRUdBVEUgQVBQTElDQVRJT04gQ0FDSEUgQ0FMTEJBQ0s6IGV4Y2Vl
ZGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhRm9yU2VjdXJpdHlPcmlnaW46e2h0dHAsIDEy
Ny4wLjAuMSwgODAwMH0KK1VJIERFTEVHQVRFIEFQUExJQ0FUSU9OIENBQ0hFIENBTExCQUNLOiBl
eGNlZWRlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YUZvclNlY3VyaXR5T3JpZ2luOntodHRw
LCAxMjcuMC4wLjEsIDgwMDB9IHNwYWNlTmVlZGVkOjMxMTYxCiBDT05TT0xFIE1FU1NBR0U6IGxp
bmUgMDogQXBwbGljYXRpb24gQ2FjaGUgdXBkYXRlIGZhaWxlZCwgYmVjYXVzZSBzaXplIHF1b3Rh
IHdhcyBleGNlZWRlZC4KIFRoaXMgdGVzdCBjaGVja3MgdGhhdCBwZXItb3JpZ2luIGFwcGxpY2F0
aW9uIGNhY2hlIHF1b3RhcyBhcmUgZW5mb3JjZWQuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLXF1b3RhLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90YS5odG1sCmluZGV4IGE3MzIyZmQuLmYwMDkwMGUg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLXF1b3Rh
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tcXVvdGEu
aHRtbApAQCAtMTQsNiArMTQsNyBAQCBmdW5jdGlvbiBzdGFydFRlc3QoKSB7CiAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewogICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5jbGVhckFsbEFwcGxpY2F0aW9uQ2FjaGVzKCk7CiAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3MoKTsKKyAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZGlzYWxsb3dJbmNyZWFzZUZvckFwcGxpY2F0aW9uQ2FjaGVRdW90
YSgpOwogICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRBcHBsaWNhdGlvbkNhY2hlT3Jp
Z2luUXVvdGEoMjAqMTAyNCk7CiAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwpAQCAt
NDYsOSArNDcsOSBAQCBmdW5jdGlvbiBhZGRGaXJzdElGcmFtZSgpIHsKIAogZnVuY3Rpb24gYWRk
U2Vjb25kSUZyYW1lKCkgewogICAgIC8vIEV4cGVjdGVkIHRvIGZhaWwsIHRoZW4gaW5jcmVhc2Ug
dGhlIHF1b3RhLgotICAgIC8vIE5PVEU6IFdoZW4gdGhpcyBmYWlscywgdGhlIGV4Y2VlZCBjYWxs
YmFjayB3aWxsIGF1dG9tYXRpY2FsbHkgaW5jcmVhc2UgaXQgYmFjayB0byB0aGUgZGVmYXVsdCBx
dW90YSBzaXplLgogICAgIGFkZElGcmFtZVdpdGhDb250aW51YXRpb24oInJlc291cmNlcy9xdW90
YS1vcmlnaW4taWZyYW1lLTIuaHRtbCIsIGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgIGxvZyhl
dmVudC5kYXRhKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0QXBwbGljYXRpb25D
YWNoZU9yaWdpblF1b3RhKDEwMCoxMDI0KTsKICAgICAgICAgYWRkVGhpcmRJRnJhbWUoKTsKICAg
ICB9KTsKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVz
b3VyY2VzL3F1b3RhLW9yaWdpbi1jb250aW51ZWQtZG93bmxvYWQtbXVsdGlwbGUtbWFuaWZlc3Rz
LTEuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL3F1b3Rh
LW9yaWdpbi1jb250aW51ZWQtZG93bmxvYWQtbXVsdGlwbGUtbWFuaWZlc3RzLTEuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjk2YmQyCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvcXVvdGEtb3JpZ2lu
LWNvbnRpbnVlZC1kb3dubG9hZC1tdWx0aXBsZS1tYW5pZmVzdHMtMS5odG1sCkBAIC0wLDAgKzEs
OSBAQAorPGh0bWwgbWFuaWZlc3Q9InF1b3RhLW9yaWdpbi1jb250aW51ZWQtZG93bmxvYWQtbXVs
dGlwbGUtbWFuaWZlc3RzLTEubWFuaWZlc3QiPgorPHNjcmlwdD4KKy8vIFRoaXMgaXMgZXhwZWN0
ZWQgdG8gc3VjY2VlZC4KK2FwcGxpY2F0aW9uQ2FjaGUub25jYWNoZWQgPSBmdW5jdGlvbigpIHsg
cGFyZW50LnBvc3RNZXNzYWdlKCJQQVNTIC0gY2FjaGVkIGlmcmFtZSIsICIqIik7IH07CithcHBs
aWNhdGlvbkNhY2hlLm9uZXJyb3IgPSBmdW5jdGlvbigpIHsgcGFyZW50LnBvc3RNZXNzYWdlKCJG
QUlMIC0gZXJyb3IgY2FjaGluZyBpZnJhbWUsIGV4cGVjdGVkIHRoaXMgdG8gc3VjY2VlZCBieSBm
aXR0aW5nIGluIHRoZSBxdW90YSIsICIqIik7IH07CithcHBsaWNhdGlvbkNhY2hlLm9udXBkYXRl
cmVhZHkgPSBmdW5jdGlvbigpIHsgcGFyZW50LnBvc3RNZXNzYWdlKCJGQUlMIC0gdXBkYXRlIHJl
YWR5LCBhbGwgY2FjaGVzIHNob3VsZCBoYXZlIGJlZW4gZGVsZXRlZCBiZWZvcmUgdGhpcyB0ZXN0
IiwgIioiKTsgfTsKK2FwcGxpY2F0aW9uQ2FjaGUub25ub3VwZGF0ZSA9IGZ1bmN0aW9uKCkgeyBw
YXJlbnQucG9zdE1lc3NhZ2UoIkZBSUwgLSBubyB1cGRhdGUgaWZyYW1lLCBhbGwgY2FjaGVzIHNo
b3VsZCBoYXZlIGJlZW4gZGVsZXRlZCBiZWZvcmUgdGhpcyB0ZXN0IiwgIioiKTsgfTsKKzwvc2Ny
aXB0PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNo
ZS9yZXNvdXJjZXMvcXVvdGEtb3JpZ2luLWNvbnRpbnVlZC1kb3dubG9hZC1tdWx0aXBsZS1tYW5p
ZmVzdHMtMS5tYW5pZmVzdCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3Vy
Y2VzL3F1b3RhLW9yaWdpbi1jb250aW51ZWQtZG93bmxvYWQtbXVsdGlwbGUtbWFuaWZlc3RzLTEu
bWFuaWZlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWNmZmVlZgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2Vz
L3F1b3RhLW9yaWdpbi1jb250aW51ZWQtZG93bmxvYWQtbXVsdGlwbGUtbWFuaWZlc3RzLTEubWFu
aWZlc3QKQEAgLTAsMCArMSw2IEBACitDQUNIRSBNQU5JRkVTVAorCisjIFRoaXMgc2hvdWxkIHN1
Y2NlZWQuIFRoaXMgaXMgfjE1a2IgYW5kIHRoZSBxdW90YSBzaG91bGQgYmUgMjBrYi4KKworQ0FD
SEU6CithYmUucG5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hl
L3Jlc291cmNlcy9xdW90YS1vcmlnaW4tY29udGludWVkLWRvd25sb2FkLW11bHRpcGxlLW1hbmlm
ZXN0cy0yLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9x
dW90YS1vcmlnaW4tY29udGludWVkLWRvd25sb2FkLW11bHRpcGxlLW1hbmlmZXN0cy0yLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDdmNjBhYwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL3F1b3RhLW9y
aWdpbi1jb250aW51ZWQtZG93bmxvYWQtbXVsdGlwbGUtbWFuaWZlc3RzLTIuaHRtbApAQCAtMCww
ICsxLDkgQEAKKzxodG1sIG1hbmlmZXN0PSJxdW90YS1vcmlnaW4tY29udGludWVkLWRvd25sb2Fk
LW11bHRpcGxlLW1hbmlmZXN0cy0yLm1hbmlmZXN0Ij4KKzxzY3JpcHQ+CisvLyBUaGlzIGlzIGV4
cGVjdGVkIHRvIGZhaWwgd2l0aCAic3BhY2VOZWVkZWQiIGxhcmdlIGVub3VnaCBmb3IgYm90aCBt
YW5pZmVzdCAxIGFuZCAyLgorYXBwbGljYXRpb25DYWNoZS5vbmNhY2hlZCA9IGZ1bmN0aW9uKCkg
eyBwYXJlbnQucG9zdE1lc3NhZ2UoIlBBU1MgLSBjYWNoZWQgaWZyYW1lIiwgIioiKTsgfTsKK2Fw
cGxpY2F0aW9uQ2FjaGUub25lcnJvciA9IGZ1bmN0aW9uKCkgeyBwYXJlbnQucG9zdE1lc3NhZ2Uo
IkZBSUwgLSBlcnJvciBjYWNoaW5nIGlmcmFtZSwgZXhwZWN0ZWQgdGhpcyB0byBzdWNjZWVkIGJ5
IGZpdHRpbmcgaW4gdGhlIHF1b3RhIiwgIioiKTsgfTsKK2FwcGxpY2F0aW9uQ2FjaGUub251cGRh
dGVyZWFkeSA9IGZ1bmN0aW9uKCkgeyBwYXJlbnQucG9zdE1lc3NhZ2UoIkZBSUwgLSB1cGRhdGUg
cmVhZHksIGFsbCBjYWNoZXMgc2hvdWxkIGhhdmUgYmVlbiBkZWxldGVkIGJlZm9yZSB0aGlzIHRl
c3QiLCAiKiIpOyB9OworYXBwbGljYXRpb25DYWNoZS5vbm5vdXBkYXRlID0gZnVuY3Rpb24oKSB7
IHBhcmVudC5wb3N0TWVzc2FnZSgiRkFJTCAtIG5vIHVwZGF0ZSBpZnJhbWUsIGFsbCBjYWNoZXMg
c2hvdWxkIGhhdmUgYmVlbiBkZWxldGVkIGJlZm9yZSB0aGlzIHRlc3QiLCAiKiIpOyB9OworPC9z
Y3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNh
Y2hlL3Jlc291cmNlcy9xdW90YS1vcmlnaW4tY29udGludWVkLWRvd25sb2FkLW11bHRpcGxlLW1h
bmlmZXN0cy0yLm1hbmlmZXN0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNv
dXJjZXMvcXVvdGEtb3JpZ2luLWNvbnRpbnVlZC1kb3dubG9hZC1tdWx0aXBsZS1tYW5pZmVzdHMt
Mi5tYW5pZmVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTFjZThmCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJj
ZXMvcXVvdGEtb3JpZ2luLWNvbnRpbnVlZC1kb3dubG9hZC1tdWx0aXBsZS1tYW5pZmVzdHMtMi5t
YW5pZmVzdApAQCAtMCwwICsxLDEwIEBACitDQUNIRSBNQU5JRkVTVAorCisjIFRoaXMgc2hvdWxk
IHN1Y2NlZWQuIFRoaXMgaXMgYW5vdGhlciB+MTVrYiBhbmQgdGhlIHF1b3RhIHNob3VsZCBiZSAy
MGtiCisjIGFuZCBhdXRvbWF0aWNhbGx5IGJlIGluY3JlYXNlZC4KKworIyBUaGlzIHNob3VsZCB0
cmlnZ2VyIGEgZGVsZWdhdGUgY2FsbGJhY2sgYW5kIHRoZSBzcGFjZU5lZWRlZCBzaG91bGQgYmUK
KyMgbGFyZ2UgZW5vdWdoIGZvciBib3RoIGNhY2hlcy4KKworQ0FDSEU6CithYmUucG5nCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9xdW90YS1v
cmlnaW4tY29udGludWVkLWRvd25sb2FkLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Fw
cGNhY2hlL3Jlc291cmNlcy9xdW90YS1vcmlnaW4tY29udGludWVkLWRvd25sb2FkLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGU0NGRmYgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL3F1b3RhLW9yaWdp
bi1jb250aW51ZWQtZG93bmxvYWQuaHRtbApAQCAtMCwwICsxLDkgQEAKKzxodG1sIG1hbmlmZXN0
PSJxdW90YS1vcmlnaW4tY29udGludWVkLWRvd25sb2FkLm1hbmlmZXN0Ij4KKzxzY3JpcHQ+Cisv
LyBUaGlzIGlzIGV4cGVjdGVkIHRvIHN1Y2NlZWQgd2hlbiB0aGUgcXVvdGEgaXMgcmVhY2hlZCwg
ZG93bmxvYWQgY29tcGxldGVzLCB0aGUgdXNlciBpcyBwcm9tcHRlZCwgYW5kIHRoZXkgaW5jcmVh
c2Ugc3RvcmFnZS4KK2FwcGxpY2F0aW9uQ2FjaGUub25jYWNoZWQgPSBmdW5jdGlvbigpIHsgcGFy
ZW50LnBvc3RNZXNzYWdlKCJQQVNTIC0gY2FjaGVkIGlmcmFtZSIsICIqIik7IH07CithcHBsaWNh
dGlvbkNhY2hlLm9uZXJyb3IgPSBmdW5jdGlvbigpIHsgcGFyZW50LnBvc3RNZXNzYWdlKCJGQUlM
IC0gZXJyb3IgY2FjaGluZyBpZnJhbWUsIGV4cGVjdGVkIHRoaXMgdG8gc3VjY2VlZCB3aXRoIHRo
ZSBxdW90YSBpbmNyZWFzZWQgYXV0b21hdGljYWxseSIsICIqIik7IH07CithcHBsaWNhdGlvbkNh
Y2hlLm9udXBkYXRlcmVhZHkgPSBmdW5jdGlvbigpIHsgcGFyZW50LnBvc3RNZXNzYWdlKCJGQUlM
IC0gdXBkYXRlIHJlYWR5LCBhbGwgY2FjaGVzIHNob3VsZCBoYXZlIGJlZW4gZGVsZXRlZCBiZWZv
cmUgdGhpcyB0ZXN0IiwgIioiKTsgfTsKK2FwcGxpY2F0aW9uQ2FjaGUub25ub3VwZGF0ZSA9IGZ1
bmN0aW9uKCkgeyBwYXJlbnQucG9zdE1lc3NhZ2UoIkZBSUwgLSBubyB1cGRhdGUgaWZyYW1lLCBh
bGwgY2FjaGVzIHNob3VsZCBoYXZlIGJlZW4gZGVsZXRlZCBiZWZvcmUgdGhpcyB0ZXN0IiwgIioi
KTsgfTsKKzwvc2NyaXB0PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvcXVvdGEtb3JpZ2luLWNvbnRpbnVlZC1kb3dubG9hZC5t
YW5pZmVzdCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL3F1b3Rh
LW9yaWdpbi1jb250aW51ZWQtZG93bmxvYWQubWFuaWZlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMjAyYWNlMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL3F1b3RhLW9yaWdpbi1jb250aW51ZWQtZG93bmxv
YWQubWFuaWZlc3QKQEAgLTAsMCArMSw4IEBACitDQUNIRSBNQU5JRkVTVAorCisjIFRoaXMgc2hv
dWxkIHN1Y2NlZWQuIFRoZSBxdW90YSB3aWxsIGJlIHJlYWNoZWQsIGJ1dCB0aGUgZGVsZWdhdGUK
KyMgd2lsbCBmaXJlIGF0IHRoZSBlbmQsIGFsbG93aW5nIGFuIGluY3JlYXNlLCBhbmQgdGhlbiBz
dWNjZXNzZnVsbHkKKyMgY2FjaGUgd2l0aCB0aGUgbmV3IHF1b3RhLgorCitDQUNIRToKK2FiZS5w
bmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2Vz
L3F1b3RhLW9yaWdpbi1pZnJhbWUtMy5tYW5pZmVzdCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
YXBwY2FjaGUvcmVzb3VyY2VzL3F1b3RhLW9yaWdpbi1pZnJhbWUtMy5tYW5pZmVzdAppbmRleCBi
YzI5ODY3Li5hN2UyZDNhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNh
Y2hlL3Jlc291cmNlcy9xdW90YS1vcmlnaW4taWZyYW1lLTMubWFuaWZlc3QKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvcXVvdGEtb3JpZ2luLWlmcmFtZS0z
Lm1hbmlmZXN0CkBAIC0xLDYgKzEsNiBAQAogQ0FDSEUgTUFOSUZFU1QKIAotIyBpZnJhbWUtMyBz
aG91bGQgc3VjY2VlZC4gVGhlIG9yaWdpbiBxdW90YSBzaHVsZCBoYXZlIGJlZW4KKyMgaWZyYW1l
LTMgc2hvdWxkIHN1Y2NlZWQuIFRoZSBvcmlnaW4gcXVvdGEgc2hvdWxkIGhhdmUgYmVlbgogIyBy
YWlzZWQgdG8gNDBrYiwgd2l0aCB+MTNrYiBhbHJlYWR5IGNhY2hlZC4gQ2FjaGluZyBhYmUucG5n
CiAjIGFuZCB0aGlzIG1hbmlmZXN0IHdpbGwgYmUgfjEza2IsIGJyaW5naW5nIHVzIHVwIHRvIDI2
a2IuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhw
ZWN0YXRpb25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0
YXRpb25zLnR4dAppbmRleCA3MDJkMDBkLi41NTk2ODkyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC0yMjEwLDggKzIy
MTAsMTAgQEAgQlVHQ1I0OTk3MCA6IHBsYXRmb3JtL2Nocm9taXVtL3BsdWdpbnMvY2FsbC1hcy1m
dW5jdGlvbi5odG1sID0gUEFTUyBURVhUCiAvLyBGbGFreSBzaW5jZSBXZWJLaXQgcjYzOTk0CiBC
VUdXSzQyOTY0IFdJTiBMSU5VWCA6IHRhYmxlcy9tb3ppbGxhX2V4cGVjdGVkX2ZhaWx1cmVzL2J1
Z3MvYnVnODkzMTUuaHRtbCA9IFBBU1MgRkFJTAogCi0vLyBBcHBsaWNhdGlvbiBDYWNoZSBRdW90
YXMKLUJVR1dLNDM0NTkgOiBodHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90YS5odG1sID0g
VEVYVCBNSVNTSU5HCisvLyBBcHBsaWNhdGlvbiBDYWNoZSBRdW90YXMgYXJlIE4vQSB0byB0aGUg
Y2hyb21pdW0gcG9ydC4KK0JVR1dLNDM0NTkgV09OVEZJWDogaHR0cC90ZXN0cy9hcHBjYWNoZS9v
cmlnaW4tcXVvdGEuaHRtbCA9IFRFWFQgTUlTU0lORworQlVHV0s0MzQ1OSBXT05URklYOiBodHRw
L3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90YS1jb250aW51ZWQtZG93bmxvYWQuaHRtbCA9IFRF
WFQgTUlTU0lORworQlVHV0s0MzQ1OSBXT05URklYOiBodHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdp
bi1xdW90YS1jb250aW51ZWQtZG93bmxvYWQtbXVsdGlwbGUtbWFuaWZlc3RzLmh0bWwgPSBURVhU
IE1JU1NJTkcKIAogLy8gTmVlZCB0byBzdXBwb3J0IERldmljZU1vdGlvbi4KIEJVR0NSNTE0MTYg
OiBmYXN0L2RvbS9EZXZpY2VNb3Rpb24vd2luZG93LXByb3BlcnR5Lmh0bWwgPSBURVhUCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9Ta2lwcGVkCmluZGV4IDIzOWVkODQuLjA3YjRhMmMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9Ta2lwcGVkCkBAIC01ODQsNiArNTg0LDggQEAgZmFzdC9qcy9pMThuLWJpbmRpbmdzLWxv
Y2FsZS5odG1sCiBodHRwL3Rlc3RzL2FwcGNhY2hlL2NyYXNoLXdoZW4tbmF2aWdhdGluZy1hd2F5
LXRoZW4tYmFjay5odG1sCiBodHRwL3Rlc3RzL2FwcGNhY2hlL2ZhbGxiYWNrLmh0bWwKIGh0dHAv
dGVzdHMvYXBwY2FjaGUvb3JpZ2luLXF1b3RhLmh0bWwKK2h0dHAvdGVzdHMvYXBwY2FjaGUvb3Jp
Z2luLXF1b3RhLWNvbnRpbnVlZC1kb3dubG9hZC5odG1sCitodHRwL3Rlc3RzL2FwcGNhY2hlL29y
aWdpbi1xdW90YS1jb250aW51ZWQtZG93bmxvYWQtbXVsdGlwbGUtbWFuaWZlc3RzLmh0bWwKIGh0
dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLWRlbGV0ZS5odG1sCiBodHRwL3Rlc3RzL2FwcGNhY2hl
L29yaWdpbnMtd2l0aC1hcHBjYWNoZS5odG1sCiAjIExheW91dFRlc3RDb250cm9sbGVyOjphcHBs
aWNhdGlvbkNhY2hlRGlza1VzYWdlRm9yT3JpZ2luIGlzbid0IGltcGxlbWVudGVkIC0gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3MTI3CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tp
cHBlZAppbmRleCA5OWNmYTliLi5iMjAxM2YyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9xdC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKQEAg
LTI5LDcgKzI5LDYgQEAKICMgLSBmYWlsaW5nIGVkaXRpbmcvaW5wdXQgdGVzdHMKICMgLSBGYWls
aW5nIFNWRyB0ZXN0cwogIyAtIGZhaWxpbmcgYW5pbWF0aW9ucyB0ZXN0cwotIyAtIGZhaWxpbmcg
YXBwbGljYXRpb24gY2FjaGUgcXVvdGEgdGVzdHMKICMgLSBGYWlsaW5nIENTUyBUZXN0cwogIyAt
IEZhaWxpbmcgZG9tL3hodG1sIHRlc3RzCiAjIC0gRmFpbGluZyBlZGl0aW5nL2RlbGV0aW5nIHRl
c3RzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCmluZGV4IGVjYmM5YmQuLjU1YzgyNjYgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3dpbi9Ta2lwcGVkCkBAIC0xMTUyLDYgKzExNTIsOCBAQCBwZXJmLwogIyBBcHBs
aWNhdGlvbiBDYWNoZSBRdW90YXMKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQzNDU4CiBodHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90YS5odG1sCitodHRw
L3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90YS1jb250aW51ZWQtZG93bmxvYWQuaHRtbAoraHR0
cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tcXVvdGEtY29udGludWVkLWRvd25sb2FkLW11bHRpcGxl
LW1hbmlmZXN0cy5odG1sCiAKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQzMzMyCiBpbnNwZWN0b3IvZGVidWdnZXIvZG9tLWJyZWFrcG9pbnRzLmh0bWwKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vd2syL1NraXBwZWQKaW5kZXggNjNhNjc5Mi4uMmVlMGE3ZSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2syL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2syL1NraXBwZWQKQEAgLTE2NDYsNiArMTY0Niw4IEBAIGh0dHAvdGVzdHMvYXBwY2FjaGUvdXBk
YXRlLWNhY2hlLmh0bWwKICMgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyBsYXlvdXRUZXN0Q29udHJv
bGxlci5jbGVhckFsbEFwcGxpY2F0aW9uQ2FjaGVzCiBodHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdp
bi1kZWxldGUuaHRtbAogaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tcXVvdGEuaHRtbAoraHR0
cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tcXVvdGEtY29udGludWVkLWRvd25sb2FkLmh0bWwKK2h0
dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLXF1b3RhLWNvbnRpbnVlZC1kb3dubG9hZC1tdWx0aXBs
ZS1tYW5pZmVzdHMuaHRtbAogaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW5zLXdpdGgtYXBwY2Fj
aGUuaHRtbAogCiAjIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgbGF5b3V0VGVzdENvbnRyb2xsZXIu
Y2FsbFNob3VsZENsb3NlT25XZWJWaWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDQzNTMwOS4uZjUxMWE3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDExLTA3LTA4ICBKb3NlcGggUGVjb3Jhcm8g
IDxqb2VwZWNrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQXBwbGljYXRpb25DYWNoZSB1cGRhdGUg
c2hvdWxkIG5vdCBpbW1lZGlhdGVseSBmYWlsIHdoZW4gcmVhY2hpbmcgcGVyLW9yaWdpbiBxdW90
YQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQxNzcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZXcgYmVo
YXZpb3Igb2YgaGFuZGxpbmcgQXBwbGljYXRpb25DYWNoZSBwZXItb3JpZ2luIHF1b3Rhcy4gUHJl
dmlvdXNseSwKKyAgICAgICAgaWYgdGhlIHF1b3RhIHdhcyByZWFjaGVkIHdoaWxlIGRvd25sb2Fk
aW5nIHdlIHdvdWxkIGZhaWwgdGhlIGRvd25sb2FkCisgICAgICAgIGFuZCB0aGVuIHByb21wdCB0
aGUgdXNlciBmb3IgYSBzdG9yYWdlIGluY3JlYXNlLiBUaGlzIHJlcXVpcmVkIGEgcmVmcmVzaCwK
KyAgICAgICAgYSByZWRvd25sb2FkIG9mIHJlc291cmNlcywgYW5kIHRoZSB0b3RhbCBzdG9yYWdl
IHdhcyBub3Qga25vd24gc28gdGhlCisgICAgICAgIHByb2Nlc3MgY291bGQgYmUgcmVwZWF0ZWQg
bXVsdGlwbGUgdGltZXMgYmVmb3JlIGFuIGFjY2VwdGFibGUgcXVvdGEKKyAgICAgICAgd2FzIGZv
dW5kIG9yIHRoZSB1c2VyIGRpc2FsbG93ZWQgYW4gaW5jcmVhc2UuCisgICAgICAgIAorICAgICAg
ICBUaGUgbmV3IGJlaGF2aW9yIGlzIHRvIGNvbXBsZXRlIHRoZSBkb3dubG9hZCBvZiB0aGUgZW50
aXJlIGFwcGNhY2hlLgorICAgICAgICBXaGVuIHRoZSBjYWNoZSBjb21wbGV0ZXMgZG93bmxvYWRp
bmcgYW5kIGl0IGlzIGdyZWF0ZXIgdGhhbiB0aGUgb3JpZ2luCisgICAgICAgIHF1b3RhLCBwcm9t
cHQgdGhlIHVzZXIgdG8gYWxsb3cgYSBxdW90YSBpbmNyZWFzZSB3aXRoIHRoZSBrbm93biBzcGFj
ZQorICAgICAgICBuZWVkZWQuIElmIHRoZSBxdW90YSBpcyBpbmNyZWFzZWQsIHRoZSBjYWNoZSB3
aWxsIHN1Y2NlZWQsIG90aGVyd2lzZQorICAgICAgICBpdCB3aWxsIGZhaWwgd2l0aCB0aGUgbm9y
bWFsIGZhaWx1cmUgc3RlcHMuCisKKyAgICAgICAgQW4gYWx0ZXJuYXRpdmUgYmVoYXZpb3IgaXMg
cHJvbXB0aW5nIHdoaWxlIGRvd25sb2FkaW5nIGltbWVkaWF0ZWx5CisgICAgICAgIHdoZW4gdGhl
IG9yaWdpbiBxdW90YSBpcyByZWFjaGVkLCBob3dldmVyIGF0IHRoYXQgcG9pbnQgdGhlIGVudGly
ZQorICAgICAgICBzcGFjZSBuZWVkZWQgaXMgdW5rbm93biBhbmQgc28gcXVvdGEgaW5jcmVhc2Vz
IG1pZ2h0IG5vdCBiZSBlbm91Z2gKKyAgICAgICAgYW5kIGNvdWxkIHJlc3VsdCBpbiBtdWx0aXBs
ZSBwcm9tcHRzIHRvIHRoZSB1c2VyLgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL2FwcGNh
Y2hlL29yaWdpbi1xdW90YS1jb250aW51ZWQtZG93bmxvYWQtbXVsdGlwbGUtbWFuaWZlc3RzLmh0
bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLXF1b3RhLWNvbnRp
bnVlZC1kb3dubG9hZC5odG1sCisKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUdyb3VwLmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVHcm91cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OkFw
cGxpY2F0aW9uQ2FjaGVHcm91cCk6CisgICAgICAgIFJlbmFtZSBpbnN0YW5jZSB2YXJpYWJsZSB0
byBiZSBtb3JlIGNsZWFyIG9uIGl0cyBpbnRlbnQuCisKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIENoZWNrIHRoZSBx
dW90YSBsaW1pdCB3aGlsZSBkb3dubG9hZGluZyBzbyB3ZSBjYW4gZmFpbCBlYXJseQorICAgICAg
ICBpZiB0aGUgdXNlciBhbHJlYWR5IGRlbmllZCBhIHF1b3RhIGluY3JlYXNlLgorCisgICAgICAg
IChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZFJlYWNoT3JpZ2luUXVvdGEpOgor
ICAgICAgICBQYXNzIHRoZSBzcGFjZSBuZWVkZWQgaW5mb3JtYXRpb24gdG8gdGhlIGNocm9tZSBj
bGllbnQuCisKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2FjaGVV
cGRhdGVGYWlsZWREdWVUb09yaWdpblF1b3RhKToKKyAgICAgICAgQ29udmVydCB0aGlzIHRvIHVw
ZGF0ZSBzdGF0ZSBhbmQgY29uc29sZSBsb2cgd2hlbiB0aGUKKyAgICAgICAgcGVyLW9yaWdpbiBx
dW90YSBpcyByZWFjaGVkLiBUaGlzIGFsbG93cyB1cyB0byBmb2xsb3cKKyAgICAgICAgdGhlIG5v
cm1hbCBmYWlsdXJlIHN0ZXBzIGlmIHRoZSBxdW90YSBpcyByZWFjaGVkIGF0CisgICAgICAgIHRo
ZSBlbmQgb2YgYSBkb3dubG9hZCwgYW5kIHRoZSBhbHRlcm5hdGl2ZSBzaG9ydCBwYXRoCisgICAg
ICAgIHdoZW4gd2UgZmFpbCBkdXJpbmcgYSBkb3dubG9hZGluZy4KKworICAgICAgICAoV2ViQ29y
ZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpyZWNhbGN1bGF0ZUF2YWlsYWJsZVNwYWNlSW5RdW90
YSk6CisgICAgICAgIEV4dHJhY3QgdG8gYSBoZWxwZXIgZnVuY3Rpb24uCisKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2hlY2tJZkxvYWRJc0NvbXBsZXRlKToKKyAg
ICAgICAgQWxsb3cgZm9yIGEgcXVvdGEgaW5jcmVhc2UgYXQgdGhlIGVuZCBvZiB0aGUgZG93bmxv
YWQgbm93IHRoYXQKKyAgICAgICAgd2Uga25vdyB0aGUgc3BhY2UgbmVlZGVkLiBUaGVuIHByb2Nl
ZWQgdG8gZmFpbCBvciBzdWNjZWVkCisgICAgICAgIGFzIHdlIG5vcm1hbGx5IHdvdWxkLgorCisg
ICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg6CisgICAg
ICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjaGVja09yaWdpblF1b3RhKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZU5ld2VzdENh
Y2hlKToKKyAgICAgICAgRXh0cmFjdCBjaGVja2luZyB0aGUgb3JpZ2luIHF1b3RhIGZvciB3aGVu
IGFuIEFwcGxpY2F0aW9uQ2FjaGVHcm91cAorICAgICAgICB3aWxsIGJlIHJlcGxhY2luZyBhbiBB
cHBsaWNhdGlvbkNhY2hlR3JvdXAgaW50byBhIGhlbHBlciBmdW5jdGlvbi4KKyAgICAgICAgVGhl
IGhlbHBlciBhbHNvIHByb3ZpZGVzIGFuIG91dCBwYXJhbWV0ZXIgZm9yIHRoZSBzcGFjZSBuZWVk
ZWQKKyAgICAgICAgdG8gcHJvcGVybHkgZml0IHRoZSBuZXcgY2FjaGUgZ3JvdXAgaWYgaXQgd291
bGRuJ3QgZml0LgorCisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBs
b2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUNocm9tZUNsaWVu
dDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSk6CisgICAgICAgIEFkZCBhIHNw
YWNlIG5lZWRlZCBwYXJhbWV0ZXIgd2hlbiByZWFjaGluZyB0aGUgcGVyLW9yaWdpbiBxdW90YS4K
KwogMjAxMS0wNy0wNyAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5oCmluZGV4IDNmZjI1OGIuLjU1NGI1YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1w
dHlDbGllbnRzLmgKQEAgLTE4NSw3ICsxODUsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoT0ZG
TElORV9XRUJfQVBQTElDQVRJT05TKQogICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkTWF4QXBwQ2Fj
aGVTaXplKGludDY0X3QpIHsgfQotICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBwbGljYXRpb25D
YWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKikgeyB9CisgICAgdmlydHVhbCB2b2lkIHJl
YWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4qLCBpbnQ2NF90
KSB7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3Bw
CmluZGV4IDY0ZjdiNjguLmU1M2U3MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC03Miw3ICs3Miw3
IEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6QXBwbGljYXRpb25DYWNoZUdyb3VwKGNvbnN0IEtV
UkwmIG1hbmlmZXN0VVJMLCBib29sIGlzQ29wCiAgICAgLCBtX2NhbGxlZFJlYWNoZWRNYXhBcHBD
YWNoZVNpemUoZmFsc2UpCiAgICAgLCBtX2xvYWRlZFNpemUoMCkKICAgICAsIG1fYXZhaWxhYmxl
U3BhY2VJblF1b3RhKEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjp1bmtub3duUXVvdGEoKSkKLSAg
ICAsIG1fb3JpZ2luUXVvdGFSZWFjaGVkKGZhbHNlKQorICAgICwgbV9vcmlnaW5RdW90YVJlYWNo
ZWRQcmV2aW91c2x5KGZhbHNlKQogewogfQogCkBAIC02MDAsMTcgKzYwMCwxOSBAQCB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSogaGFu
ZGxlLCBkb3VibGUgZmluaQogCiAgICAgLy8gQWZ0ZXIgZmluaXNoaW5nIHRoZSBsb2FkaW5nIG9m
IGFueSByZXNvdXJjZSwgd2UgY2hlY2sgaWYgaXQgd2lsbAogICAgIC8vIGZpdCBpbiBvdXIgbGFz
dCBrbm93biBxdW90YSBsaW1pdC4KLSAgICBpZiAobV9hdmFpbGFibGVTcGFjZUluUXVvdGEgPT0g
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnVua25vd25RdW90YSgpKSB7Ci0gICAgICAgIC8vIEZh
aWxlZCB0byBkZXRlcm1pbmUgd2hhdCBpcyBsZWZ0IGluIHRoZSBxdW90YS4gRmFsbGJhY2sgdG8g
YWxsb3dpbmcgYW55dGhpbmcuCi0gICAgICAgIGlmICghY2FjaGVTdG9yYWdlKCkucmVtYWluaW5n
U2l6ZUZvck9yaWdpbkV4Y2x1ZGluZ0NhY2hlKG1fb3JpZ2luLmdldCgpLCBtX25ld2VzdENhY2hl
LmdldCgpLCBtX2F2YWlsYWJsZVNwYWNlSW5RdW90YSkpCi0gICAgICAgICAgICBtX2F2YWlsYWJs
ZVNwYWNlSW5RdW90YSA9IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpub1F1b3RhKCk7Ci0gICAg
fQorICAgIGlmIChtX2F2YWlsYWJsZVNwYWNlSW5RdW90YSA9PSBBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTo6dW5rbm93blF1b3RhKCkpCisgICAgICAgIHJlY2FsY3VsYXRlQXZhaWxhYmxlU3BhY2VJ
blF1b3RhKCk7CiAKLSAgICAvLyBDaGVjayBlYWNoIHJlc291cmNlLCBhcyBpdCBsb2FkcywgdG8g
c2VlIGlmIGl0IHdvdWxkIGZpdCBpbiBvdXIKLSAgICAvLyBpZGVhIG9mIHRoZSBhdmFpbGFibGUg
cXVvdGEgc3BhY2UuCi0gICAgaWYgKG1fYXZhaWxhYmxlU3BhY2VJblF1b3RhIDwgbV9sb2FkZWRT
aXplKSB7CisgICAgLy8gV2hpbGUgZG93bmxvYWRpbmcgY2hlY2sgdG8gc2VlIGlmIHdlIGhhdmUg
ZXhjZWVkZWQgdGhlIGF2YWlsYWJsZSBxdW90YS4KKyAgICAvLyBXZSBjYW4gc3RvcCBpbW1lZGlh
dGVseSBpZiB3ZSBoYXZlIGFscmVhZHkgcHJldmlvdXNseSBmYWlsZWQKKyAgICAvLyBkdWUgdG8g
YW4gZWFybGllciBxdW90YSByZXN0cmljdGlvbi4gVGhlIGNsaWVudCB3YXMgYWxyZWFkeSBub3Rp
ZmllZAorICAgIC8vIG9mIHRoZSBxdW90YSBiZWluZyByZWFjaGVkIGFuZCBkZWNpZGVkIG5vdCB0
byBpbmNyZWFzZSBpdCB0aGVuLgorICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgYnJlYWsgZWFybGll
ciBhbmQgcHJldmVudCByZWRvd25sb2FkaW5nIG9uIGxhdGVyIHBhZ2UgbG9hZHM/CisgICAgLy8g
V2UgY291bGQgdGhlbiBhbHNvIGdldCByaWQgb2YgbV9sb2FkZWRTaXplLgorICAgIGlmIChtX29y
aWdpblF1b3RhUmVhY2hlZFByZXZpb3VzbHkgJiYgbV9hdmFpbGFibGVTcGFjZUluUXVvdGEgPCBt
X2xvYWRlZFNpemUpIHsKICAgICAgICAgbV9jdXJyZW50UmVzb3VyY2UgPSAwOwogICAgICAgICBj
YWNoZVVwZGF0ZUZhaWxlZER1ZVRvT3JpZ2luUXVvdGEoKTsKKyAgICAgICAgY2FjaGVVcGRhdGVG
YWlsZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzk1LDExICs3OTcsMTEgQEAg
dm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZFJlYWNoTWF4QXBwQ2FjaGVTaXplKCkKICAg
ICBjaGVja0lmTG9hZElzQ29tcGxldGUoKTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3Jv
dXA6OmRpZFJlYWNoT3JpZ2luUXVvdGEoUGFzc1JlZlB0cjxGcmFtZT4gZnJhbWUpCit2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkUmVhY2hPcmlnaW5RdW90YShpbnQ2NF90IHNwYWNlTmVl
ZGVkKQogewogICAgIC8vIEluZm9ybSB0aGUgY2xpZW50IHRoZSBvcmlnaW4gcXVvdGEgaGFzIGJl
ZW4gcmVhY2hlZCwKICAgICAvLyB0aGV5IG1heSBkZWNpZGUgdG8gaW5jcmVhc2UgdGhlIHF1b3Rh
LgotICAgIGZyYW1lLT5wYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+cmVhY2hlZEFwcGxpY2F0
aW9uQ2FjaGVPcmlnaW5RdW90YShtX29yaWdpbi5nZXQoKSk7CisgICAgbV9mcmFtZS0+cGFnZSgp
LT5jaHJvbWUoKS0+Y2xpZW50KCktPnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEo
bV9vcmlnaW4uZ2V0KCksIHNwYWNlTmVlZGVkKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hl
R3JvdXA6OmNhY2hlVXBkYXRlRmFpbGVkKCkKQEAgLTgxNCwxNSArODE2LDE3IEBAIHZvaWQgQXBw
bGljYXRpb25DYWNoZUdyb3VwOjpjYWNoZVVwZGF0ZUZhaWxlZCgpCiAKIHZvaWQgQXBwbGljYXRp
b25DYWNoZUdyb3VwOjpjYWNoZVVwZGF0ZUZhaWxlZER1ZVRvT3JpZ2luUXVvdGEoKQogewotICAg
IGlmICghbV9vcmlnaW5RdW90YVJlYWNoZWQpIHsKLSAgICAgICAgbV9vcmlnaW5RdW90YVJlYWNo
ZWQgPSB0cnVlOwotICAgICAgICBzY2hlZHVsZVJlYWNoZWRPcmlnaW5RdW90YUNhbGxiYWNrKCk7
Ci0gICAgfQorICAgIG1fb3JpZ2luUXVvdGFSZWFjaGVkUHJldmlvdXNseSA9IHRydWU7CiAKICAg
ICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKE90aGVyTWVzc2Fn
ZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiQXBwbGljYXRpb24g
Q2FjaGUgdXBkYXRlIGZhaWxlZCwgYmVjYXVzZSBzaXplIHF1b3RhIHdhcyBleGNlZWRlZC4iLCAw
LCBTdHJpbmcoKSk7Cit9CiAKLSAgICAvLyBGSVhNRTogU2hvdWxkIG5vdCBhYm9ydCBjYWNoZSB1
cGRhdGUgLSB0aGUgdXNlciBtYXkgY2hvb3NlIHRvIGluY3JlYXNlIHRoZSBxdW90YS4KLSAgICBj
YWNoZVVwZGF0ZUZhaWxlZCgpOwordm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnJlY2FsY3Vs
YXRlQXZhaWxhYmxlU3BhY2VJblF1b3RhKCkKK3sKKyAgICBpZiAoIWNhY2hlU3RvcmFnZSgpLnJl
bWFpbmluZ1NpemVGb3JPcmlnaW5FeGNsdWRpbmdDYWNoZShtX29yaWdpbi5nZXQoKSwgbV9uZXdl
c3RDYWNoZS5nZXQoKSwgbV9hdmFpbGFibGVTcGFjZUluUXVvdGEpKSB7CisgICAgICAgIC8vIEZh
aWxlZCB0byBkZXRlcm1pbmUgd2hhdCBpcyBsZWZ0IGluIHRoZSBxdW90YS4gRmFsbGJhY2sgdG8g
YWxsb3dpbmcgYW55dGhpbmcuCisgICAgICAgIG1fYXZhaWxhYmxlU3BhY2VJblF1b3RhID0gQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U6Om5vUXVvdGEoKTsKKyAgICB9CiB9CiAgICAgCiB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6bWFuaWZlc3ROb3RGb3VuZCgpCkBAIC05MDMsOCArOTA3LDE1
IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpjaGVja0lmTG9hZElzQ29tcGxldGUoKQog
ICAgICAgICAgICAgQVNTRVJUKGNhY2hlU3RvcmFnZSgpLmlzTWF4aW11bVNpemVSZWFjaGVkKCkg
JiYgbV9jYWxsZWRSZWFjaGVkTWF4QXBwQ2FjaGVTaXplKTsKICAgICAgICAgfQogCi0gICAgICAg
IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpGYWlsdXJlUmVhc29uIGZhaWx1cmVSZWFzb247CiAg
ICAgICAgIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBvbGROZXdlc3RDYWNoZSA9IChtX25ld2Vz
dENhY2hlID09IG1fY2FjaGVCZWluZ1VwZGF0ZWQpID8gUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+
KCkgOiBtX25ld2VzdENhY2hlOworCisgICAgICAgIC8vIElmIHdlIGVuY291bnRlcmVkIHRoZSBv
cmlnaW4gcXVvdGEgd2hpbGUgZG93bmxvYWRpbmcgd2UgY2FuIHJlcXVlc3QgYSBxdW90YQorICAg
ICAgICAvLyBpbmNyZWFzZSBub3csIGJlZm9yZSB3ZSBhdHRlbXB0IHRvIHN0b3JlIHRoZSBjYWNo
ZS4KKyAgICAgICAgaW50NjRfdCBzcGFjZU5lZWRlZDsKKyAgICAgICAgaWYgKCFjYWNoZVN0b3Jh
Z2UoKS5jaGVja09yaWdpblF1b3RhKHRoaXMsIG9sZE5ld2VzdENhY2hlLmdldCgpLCBtX2NhY2hl
QmVpbmdVcGRhdGVkLmdldCgpLCBzcGFjZU5lZWRlZCkpCisgICAgICAgICAgICBkaWRSZWFjaE9y
aWdpblF1b3RhKHNwYWNlTmVlZGVkKTsKKworICAgICAgICBBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6RmFpbHVyZVJlYXNvbiBmYWlsdXJlUmVhc29uOwogICAgICAgICBzZXROZXdlc3RDYWNoZSht
X2NhY2hlQmVpbmdVcGRhdGVkLnJlbGVhc2UoKSk7CiAgICAgICAgIGlmIChjYWNoZVN0b3JhZ2Uo
KS5zdG9yZU5ld2VzdENhY2hlKHRoaXMsIG9sZE5ld2VzdENhY2hlLmdldCgpLCBmYWlsdXJlUmVh
c29uKSkgewogICAgICAgICAgICAgLy8gTmV3IGNhY2hlIHN0b3JlZCwgbm93IHJlbW92ZSB0aGUg
b2xkIGNhY2hlLgpAQCAtOTE4LDE0ICs5MjksMTIgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3Jv
dXA6OmNoZWNrSWZMb2FkSXNDb21wbGV0ZSgpCiAgICAgICAgICAgICAvLyBGaXJlIHRoZSBzdWNj
ZXNzIGV2ZW50LgogICAgICAgICAgICAgcG9zdExpc3RlbmVyVGFzayhpc1VwZ3JhZGVBdHRlbXB0
ID8gQXBwbGljYXRpb25DYWNoZUhvc3Q6OlVQREFURVJFQURZX0VWRU5UIDogQXBwbGljYXRpb25D
YWNoZUhvc3Q6OkNBQ0hFRF9FVkVOVCwgbV9hc3NvY2lhdGVkRG9jdW1lbnRMb2FkZXJzKTsKICAg
ICAgICAgICAgIC8vIEl0IGlzIGNsZWFyIHRoYXQgdGhlIG9yaWdpbiBxdW90YSB3YXMgbm90IHJl
YWNoZWQsIHNvIGNsZWFyIHRoZSBmbGFnIGlmIGl0IHdhcyBzZXQuCi0gICAgICAgICAgICBtX29y
aWdpblF1b3RhUmVhY2hlZCA9IGZhbHNlOworICAgICAgICAgICAgbV9vcmlnaW5RdW90YVJlYWNo
ZWRQcmV2aW91c2x5ID0gZmFsc2U7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAo
ZmFpbHVyZVJlYXNvbiA9PSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6T3JpZ2luUXVvdGFSZWFj
aGVkKSB7Ci0gICAgICAgICAgICAgICAgLy8gV2UgcmFuIG91dCBvZiBzcGFjZSBmb3IgdGhpcyBv
cmlnaW4uIFJvbGwgYmFjayB0byBwcmV2aW91cyBzdGF0ZS4KLSAgICAgICAgICAgICAgICBpZiAo
b2xkTmV3ZXN0Q2FjaGUpCi0gICAgICAgICAgICAgICAgICAgIHNldE5ld2VzdENhY2hlKG9sZE5l
d2VzdENhY2hlLnJlbGVhc2UoKSk7CisgICAgICAgICAgICAgICAgLy8gV2UgcmFuIG91dCBvZiBz
cGFjZSBmb3IgdGhpcyBvcmlnaW4uIEZhbGwgZG93biB0byB0aGUgbm9ybWFsIGVycm9yIGhhbmRs
aW5nCisgICAgICAgICAgICAgICAgLy8gYWZ0ZXIgcmVjb3JkaW5nIHRoaXMgc3RhdGUuCiAgICAg
ICAgICAgICAgICAgY2FjaGVVcGRhdGVGYWlsZWREdWVUb09yaWdpblF1b3RhKCk7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoZmFpbHVy
ZVJlYXNvbiA9PSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6VG90YWxRdW90YVJlYWNoZWQgJiYg
IW1fY2FsbGVkUmVhY2hlZE1heEFwcENhY2hlU2l6ZSkgewpAQCAtMTA5MiwxMiArMTEwMSw2IEBA
IHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpzY2hlZHVsZVJlYWNoZWRNYXhBcHBDYWNoZVNp
emVDYWxsYmFjaygpCiAgICAgLy8gVGhlIHRpbWVyIHdpbGwgZGVsZXRlIGl0c2VsZiBvbmNlIGl0
IGZpcmVzLgogfQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2NoZWR1bGVSZWFjaGVk
T3JpZ2luUXVvdGFDYWxsYmFjaygpCi17Ci0gICAgLy8gRklYTUU6IGl0IG1pZ2h0IGJlIG5pY2Ug
dG8gcnVuIHRoaXMgYXN5bmNocm9ub3VzbHksIGJlY2F1c2UgdGhlcmUgaXMgbm8gcmV0dXJuIHZh
bHVlIHRvIHdhaXQgZm9yLgotICAgIGRpZFJlYWNoT3JpZ2luUXVvdGEobV9mcmFtZSk7Ci19Ci0K
IGNsYXNzIENhbGxDYWNoZUxpc3RlbmVyVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxDYWxsQ2FjaGVMaXN0
ZW5lclRhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBsb2FkZXIsIEFwcGxp
Y2F0aW9uQ2FjaGVIb3N0OjpFdmVudElEIGV2ZW50SUQsIGludCBwcm9ncmVzc1RvdGFsLCBpbnQg
cHJvZ3Jlc3NEb25lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCmluZGV4IGFiN2IxNmIuLjZhZDdmZGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdy
b3VwLmgKQEAgLTEwMyw3ICsxMDMsNiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIHBvc3RM
aXN0ZW5lclRhc2soQXBwbGljYXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQsIGludCBwcm9ncmVzc1Rv
dGFsLCBpbnQgcHJvZ3Jlc3NEb25lLCBEb2N1bWVudExvYWRlciopOwogCiAgICAgdm9pZCBzY2hl
ZHVsZVJlYWNoZWRNYXhBcHBDYWNoZVNpemVDYWxsYmFjaygpOwotICAgIHZvaWQgc2NoZWR1bGVS
ZWFjaGVkT3JpZ2luUXVvdGFDYWxsYmFjaygpOwogCiAgICAgUGFzc1JlZlB0cjxSZXNvdXJjZUhh
bmRsZT4gY3JlYXRlUmVzb3VyY2VIYW5kbGUoY29uc3QgS1VSTCYsIEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZSogbmV3ZXN0Q2FjaGVkUmVzb3VyY2UpOwogCkBAIC0xMjAsMTMgKzExOSwxNCBAQCBw
cml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1hbmlmZXN0RGF0YShjb25zdCBjaGFyKiwgaW50
KTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCgpOwogICAgIHZvaWQgZGlkUmVh
Y2hNYXhBcHBDYWNoZVNpemUoKTsKLSAgICB2b2lkIGRpZFJlYWNoT3JpZ2luUXVvdGEoUGFzc1Jl
ZlB0cjxGcmFtZT4gZnJhbWUpOworICAgIHZvaWQgZGlkUmVhY2hPcmlnaW5RdW90YShpbnQ2NF90
IHNwYWNlTmVlZGVkKTsKICAgICAKICAgICB2b2lkIHN0YXJ0TG9hZGluZ0VudHJ5KCk7CiAgICAg
dm9pZCBkZWxpdmVyRGVsYXllZE1haW5SZXNvdXJjZXMoKTsKICAgICB2b2lkIGNoZWNrSWZMb2Fk
SXNDb21wbGV0ZSgpOwogICAgIHZvaWQgY2FjaGVVcGRhdGVGYWlsZWQoKTsKICAgICB2b2lkIGNh
Y2hlVXBkYXRlRmFpbGVkRHVlVG9PcmlnaW5RdW90YSgpOworICAgIHZvaWQgcmVjYWxjdWxhdGVB
dmFpbGFibGVTcGFjZUluUXVvdGEoKTsKICAgICB2b2lkIG1hbmlmZXN0Tm90Rm91bmQoKTsKICAg
ICAKICAgICB2b2lkIGFkZEVudHJ5KGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIHR5cGUpOwpAQCAt
MjAyLDEwICsyMDIsOSBAQCBwcml2YXRlOgogCiAgICAgaW50NjRfdCBtX2xvYWRlZFNpemU7CiAg
ICAgaW50NjRfdCBtX2F2YWlsYWJsZVNwYWNlSW5RdW90YTsKLSAgICBib29sIG1fb3JpZ2luUXVv
dGFSZWFjaGVkOworICAgIGJvb2wgbV9vcmlnaW5RdW90YVJlYWNoZWRQcmV2aW91c2x5OwogCiAg
ICAgZnJpZW5kIGNsYXNzIENocm9tZUNsaWVudENhbGxiYWNrVGltZXI7Ci0gICAgZnJpZW5kIGNs
YXNzIE9yaWdpblF1b3RhUmVhY2hlZENhbGxiYWNrVGltZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCBhNGFlYTI5Li4yMDI0OGU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZS5jcHAKQEAgLTk1NSw2ICs5NTUsMjggQEAgYm9vbCBBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6ZW5zdXJlT3JpZ2luUmVjb3JkKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBvcmln
aW4pCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
OmNoZWNrT3JpZ2luUXVvdGEoQXBwbGljYXRpb25DYWNoZUdyb3VwKiBncm91cCwgQXBwbGljYXRp
b25DYWNoZSogb2xkQ2FjaGUsIEFwcGxpY2F0aW9uQ2FjaGUqIG5ld0NhY2hlLCBpbnQ2NF90JiBz
cGFjZU5lZWRlZCkKK3sKKyAgICAvLyBDaGVjayBpZiB0aGUgb2xkQ2FjaGUgd2l0aCB0aGUgbmV3
Q2FjaGUgd291bGQgcmVhY2ggdGhlIHBlci1vcmlnaW4gcXVvdGEuCisgICAgaW50NjRfdCByZW1h
aW5pbmdTcGFjZUluT3JpZ2luOworICAgIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSBn
cm91cC0+b3JpZ2luKCk7CisgICAgaWYgKHJlbWFpbmluZ1NpemVGb3JPcmlnaW5FeGNsdWRpbmdD
YWNoZShvcmlnaW4sIG9sZENhY2hlLCByZW1haW5pbmdTcGFjZUluT3JpZ2luKSkgeworICAgICAg
ICBpZiAocmVtYWluaW5nU3BhY2VJbk9yaWdpbiA8IG5ld0NhY2hlLT5lc3RpbWF0ZWRTaXplSW5T
dG9yYWdlKCkpIHsKKyAgICAgICAgICAgIGludDY0X3QgcXVvdGE7CisgICAgICAgICAgICBpZiAo
cXVvdGFGb3JPcmlnaW4ob3JpZ2luLCBxdW90YSkpIHsKKyAgICAgICAgICAgICAgICBzcGFjZU5l
ZWRlZCA9IHF1b3RhIC0gcmVtYWluaW5nU3BhY2VJbk9yaWdpbiArIG5ld0NhY2hlLT5lc3RpbWF0
ZWRTaXplSW5TdG9yYWdlKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAg
IHNwYWNlTmVlZGVkID0gMDsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCiBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjpzdG9yZU5ld2VzdENhY2hlKEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogZ3JvdXAsIEFwcGxp
Y2F0aW9uQ2FjaGUqIG9sZENhY2hlLCBGYWlsdXJlUmVhc29uJiBmYWlsdXJlUmVhc29uKQogewog
ICAgIG9wZW5EYXRhYmFzZSh0cnVlKTsKQEAgLTk3MCwxMiArOTkyLDEwIEBAIGJvb2wgQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlTmV3ZXN0Q2FjaGUoQXBwbGljYXRpb25DYWNoZUdyb3Vw
KiBncm91cCwgQXBwCiAgICAgc3RvcmVDYWNoZVRyYW5zYWN0aW9uLmJlZ2luKCk7CiAKICAgICAv
LyBDaGVjayBpZiB0aGlzIHdvdWxkIHJlYWNoIHRoZSBwZXItb3JpZ2luIHF1b3RhLgotICAgIGlu
dDY0X3QgcmVtYWluaW5nU3BhY2VJbk9yaWdpbjsKLSAgICBpZiAocmVtYWluaW5nU2l6ZUZvck9y
aWdpbkV4Y2x1ZGluZ0NhY2hlKGdyb3VwLT5vcmlnaW4oKSwgb2xkQ2FjaGUsIHJlbWFpbmluZ1Nw
YWNlSW5PcmlnaW4pKSB7Ci0gICAgICAgIGlmIChyZW1haW5pbmdTcGFjZUluT3JpZ2luIDwgZ3Jv
dXAtPm5ld2VzdENhY2hlKCktPmVzdGltYXRlZFNpemVJblN0b3JhZ2UoKSkgewotICAgICAgICAg
ICAgZmFpbHVyZVJlYXNvbiA9IE9yaWdpblF1b3RhUmVhY2hlZDsKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgfQorICAgIGludDY0X3Qgc3BhY2VOZWVkZWRJZ25vcmVkOworICAg
IGlmICghY2hlY2tPcmlnaW5RdW90YShncm91cCwgb2xkQ2FjaGUsIGdyb3VwLT5uZXdlc3RDYWNo
ZSgpLCBzcGFjZU5lZWRlZElnbm9yZWQpKSB7CisgICAgICAgIGZhaWx1cmVSZWFzb24gPSBPcmln
aW5RdW90YVJlYWNoZWQ7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBHcm91
cFN0b3JhZ2VJREpvdXJuYWwgZ3JvdXBTdG9yYWdlSURKb3VybmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaApp
bmRleCAwN2Y2ODU0Li5mZDBiN2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaApAQCAtNjksNiArNjksNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBxdW90YUZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbios
IGludDY0X3QmIHF1b3RhKTsKICAgICBib29sIHJlbWFpbmluZ1NpemVGb3JPcmlnaW5FeGNsdWRp
bmdDYWNoZShjb25zdCBTZWN1cml0eU9yaWdpbiosIEFwcGxpY2F0aW9uQ2FjaGUqLCBpbnQ2NF90
JiByZW1haW5pbmdTaXplKTsKICAgICBib29sIHN0b3JlVXBkYXRlZFF1b3RhRm9yT3JpZ2luKGNv
bnN0IFNlY3VyaXR5T3JpZ2luKiwgaW50NjRfdCBxdW90YSk7CisgICAgYm9vbCBjaGVja09yaWdp
blF1b3RhKEFwcGxpY2F0aW9uQ2FjaGVHcm91cCosIEFwcGxpY2F0aW9uQ2FjaGUqIG9sZENhY2hl
LCBBcHBsaWNhdGlvbkNhY2hlKiBuZXdDYWNoZSwgaW50NjRfdCYgc3BhY2VOZWVkZWQpOwogCiAg
ICAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBjYWNoZUdyb3VwRm9yVVJMKGNvbnN0IEtVUkwmKTsg
Ly8gQ2FjaGUgdG8gbG9hZCBhIG1haW4gcmVzb3VyY2UgZnJvbS4KICAgICBBcHBsaWNhdGlvbkNh
Y2hlR3JvdXAqIGZhbGxiYWNrQ2FjaGVHcm91cEZvclVSTChjb25zdCBLVVJMJik7IC8vIENhY2hl
IHRoYXQgaGFzIGEgZmFsbGJhY2sgZW50cnkgdG8gbG9hZCBhIG1haW4gcmVzb3VyY2UgZnJvbSBp
ZiBub3JtYWwgbG9hZGluZyBmYWlscy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4
IGEyN2M3NjYuLjkzMjgwOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21l
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAtMTkz
LDcgKzE5Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gbW9yZSB0aGFuIGFs
bG93ZWQgb24gdGhpcyBvcmlnaW4uIFRoaXMgY2FsbGJhY2sgYWxsb3dzIHRoZSBjaHJvbWUgY2xp
ZW50CiAgICAgICAgIC8vIHRvIHRha2UgYWN0aW9uLCBzdWNoIGFzIHByb21wdGluZyB0aGUgdXNl
ciB0byBhc2sgdG8gaW5jcmVhc2UgdGhlIHF1b3RhCiAgICAgICAgIC8vIGZvciB0aGlzIG9yaWdp
bi4KLSAgICAgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVv
dGEoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVh
Y2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiosIGludDY0X3Qg
c3BhY2VOZWVkZWQpID0gMDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JU
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA4Y2MzMTg1Li45NGE3ZjdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDExLTA3LTA4ICBKb3NlcGgg
UGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQXBwbGljYXRpb25DYWNo
ZSB1cGRhdGUgc2hvdWxkIG5vdCBpbW1lZGlhdGVseSBmYWlsIHdoZW4gcmVhY2hpbmcgcGVyLW9y
aWdpbiBxdW90YQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NjQxNzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xp
ZW50SW1wbDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSk6CisgICAgICAgICog
c3JjL0Nocm9tZUNsaWVudEltcGwuaDoKKwogMjAxMS0wNy0wNiAgSm9obm55IERpbmcgIDxqbmRA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02Mzg1NwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hy
b21lQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGll
bnRJbXBsLmNwcAppbmRleCBiYmIzNDBjLi4wMTgyMTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcApAQCAtNjYyLDcgKzY2Miw3IEBAIHZv
aWQgQ2hyb21lQ2xpZW50SW1wbDo6cmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90IHNwYWNl
TmVlZGVkKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIENocm9tZUNsaWVu
dEltcGw6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4q
KQordm9pZCBDaHJvbWVDbGllbnRJbXBsOjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1
b3RhKFNlY3VyaXR5T3JpZ2luKiwgaW50NjRfdCkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVu
dEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaApp
bmRleCAyZjc5YzA1Li4wZDRkZmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9DaHJvbWVDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
Q2hyb21lQ2xpZW50SW1wbC5oCkBAIC0xMzEsNyArMTMxLDcgQEAgcHVibGljOgogICAgICAgICBX
ZWJDb3JlOjpGcmFtZSosIGNvbnN0IFdURjo6U3RyaW5nJiBkYXRhYmFzZU5hbWUpOwogI2lmIEVO
QUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCiAgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRN
YXhBcHBDYWNoZVNpemUoaW50NjRfdCBzcGFjZU5lZWRlZCk7Ci0gICAgdmlydHVhbCB2b2lkIHJl
YWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4q
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGludDY0X3Qgc3BhY2VOZWVkZWQpOwogI2VuZGlmCiAj
aWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgdmlydHVhbCBXZWJDb3JlOjpOb3RpZmljYXRp
b25QcmVzZW50ZXIqIG5vdGlmaWNhdGlvblByZXNlbnRlcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9n
CmluZGV4IDk5M2RmNzMuLmUwNjA2OTMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBA
QAorMjAxMS0wNy0wOCAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgorCisg
ICAgICAgIEFwcGxpY2F0aW9uQ2FjaGUgdXBkYXRlIHNob3VsZCBub3QgaW1tZWRpYXRlbHkgZmFp
bCB3aGVuIHJlYWNoaW5nIHBlci1vcmlnaW4gcXVvdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0MTc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpyZWFjaGVkQXBwbGljYXRp
b25DYWNoZU9yaWdpblF1b3RhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRFZmwuaDoKKwogMjAxMS0wNi0yOSAgS2FuZ2lsIEhhbiAgPGthbmdpbC5oYW5Ac2Ftc3VuZy5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRF
ZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZs
LmNwcAppbmRleCA0ZTAwZmIxLi4zZmRmMWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAKQEAgLTM4Myw3ICszODMsNyBA
QCB2b2lkIENocm9tZUNsaWVudEVmbDo6cmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90IHNw
YWNlTmVlZGVkKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgQ2hyb21lQ2xpZW50
RWZsOjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKikK
K3ZvaWQgQ2hyb21lQ2xpZW50RWZsOjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3Rh
KFNlY3VyaXR5T3JpZ2luKiwgaW50NjRfdCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
RWZsLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwu
aAppbmRleCA1NzdhNmZlLi4wZjg3NGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaApAQCAtMTE0LDcgKzExNCw3IEBAIHB1Ymxp
YzoKIAogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCiAgICAgdmlydHVhbCB2
b2lkIHJlYWNoZWRNYXhBcHBDYWNoZVNpemUoaW50NjRfdCBzcGFjZU5lZWRlZCk7Ci0gICAgdmly
dHVhbCB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmln
aW4qKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90
YShTZWN1cml0eU9yaWdpbiosIGludDY0X3Qgc3BhY2VOZWVkZWQpOwogI2VuZGlmCiAKICNpZiBF
TkFCTEUoQ09OVEVYVF9NRU5VUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCAzNTU5YTMzLi5kM2ZiYThh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDctMDggIEpvc2VwaCBQ
ZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBBcHBsaWNhdGlvbkNhY2hl
IHVwZGF0ZSBzaG91bGQgbm90IGltbWVkaWF0ZWx5IGZhaWwgd2hlbiByZWFjaGluZyBwZXItb3Jp
Z2luIHF1b3RhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02NDE3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
Q2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaDoKKwogMjAxMS0wNy0wMSAgSm9v
bmUgSHVyICA8am9vbmUuaHVyQGNvbGxhYm9yYS5jby51az4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBNYXJ0aW4gUm9iaW5zb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAppbmRleCAyYTVjNGYzLi4zOWZkODUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5j
cHAKQEAgLTYwMiw3ICs2MDIsNyBAQCB2b2lkIENocm9tZUNsaWVudDo6cmVhY2hlZE1heEFwcENh
Y2hlU2l6ZShpbnQ2NF90IHNwYWNlTmVlZGVkKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAK
LXZvaWQgQ2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNl
Y3VyaXR5T3JpZ2luKikKK3ZvaWQgQ2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwbGljYXRpb25DYWNo
ZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKiwgaW50NjRfdCkKIHsKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50R3RrLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRHdGsuaAppbmRleCBjNGJiYzcyLi42YjhmYWMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaApAQCAtMTIyLDcgKzEy
Miw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogI2VuZGlmCiAjaWYgRU5BQkxFKE9GRkxJTkVfV0VC
X0FQUExJQ0FUSU9OUykKICAgICAgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRNYXhBcHBDYWNoZVNp
emUoaW50NjRfdCBzcGFjZU5lZWRlZCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBw
bGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKik7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luKiwgaW50NjRfdCBzcGFjZU5lZWRlZCk7CiAjZW5kaWYKICNpZiBF
TkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICAgICAgdmlydHVhbCB2b2lkIHNob3dDb250ZXh0TWVu
dSgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwppbmRleCAxOGE2NDllLi44MGM1MzUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2hh
aWt1L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDExLTA3LTA4ICBKb3NlcGggUGVjb3Jh
cm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQXBwbGljYXRpb25DYWNoZSB1cGRh
dGUgc2hvdWxkIG5vdCBpbW1lZGlhdGVseSBmYWlsIHdoZW4gcmVhY2hpbmcgcGVyLW9yaWdpbiBx
dW90YQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQx
NzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNo
cm9tZUNsaWVudFd4OjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5oOgorCiAyMDExLTA2LTE4ICBE
aW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmNwcCBiL1NvdXJjZS9XZWJLaXQvaGFpa3UvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuY3BwCmluZGV4IDkxNTgxZDQuLjQ4N2Y0NDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50SGFpa3UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50SGFpa3UuY3BwCkBAIC0zNTYsNyArMzU2LDcgQEAgdm9pZCBDaHJvbWVDbGllbnRX
eDo6cmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90IHNwYWNlTmVlZGVkKQogICAgIG5vdElt
cGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgQ2hyb21lQ2xpZW50V3g6OnJlYWNoZWRBcHBsaWNhdGlv
bkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4qKQordm9pZCBDaHJvbWVDbGllbnRXeDo6
cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiosIGludDY0
X3QpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuaCBiL1NvdXJjZS9XZWJL
aXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuaAppbmRleCBkYTk2M2Iw
Li40YmNmOWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudEhhaWt1LmgKKysrIGIvU291cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRIYWlrdS5oCkBAIC0xNDAsNyArMTQwLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAjaWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykKICAgICAgICAg
dmlydHVhbCB2b2lkIHJlYWNoZWRNYXhBcHBDYWNoZVNpemUoaW50NjRfdCBzcGFjZU5lZWRlZCk7
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3Rh
KFNlY3VyaXR5T3JpZ2luKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBwbGljYXRp
b25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKiwgaW50NjRfdCBzcGFjZU5lZWRlZCk7
CiAjZW5kaWYKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICAgICAgdmlydHVhbCB2b2lk
IHNob3dDb250ZXh0TWVudSgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDBhNmY3NGYuLjc0NzBh
OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMS0wNy0wOCAgSm9zZXBo
IFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgorCisgICAgICAgIEFwcGxpY2F0aW9uQ2Fj
aGUgdXBkYXRlIHNob3VsZCBub3QgaW1tZWRpYXRlbHkgZmFpbCB3aGVuIHJlYWNoaW5nIHBlci1v
cmlnaW4gcXVvdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY0MTc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYlVJRGVsZWdhdGVQcml2YXRlLmg6CisgICAgICAgICogRGVmYXVsdERl
bGVnYXRlcy9XZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tOgorICAgICAgICAoLVtXZWJEZWZhdWx0VUlE
ZWxlZ2F0ZSB3ZWJWaWV3OmV4Y2VlZGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhRm9yU2Vj
dXJpdHlPcmlnaW46c3BhY2VOZWVkZWQ6XSk6CisgICAgICAgIFVwZGF0ZSB0aGUgZGVsZWdhdGUg
dG8gaW5jbHVkZSBhIHNwYWNlIG5lZWRlZCBwYXJhbWV0ZXIuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQubW06CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRBcHBsaWNh
dGlvbkNhY2hlT3JpZ2luUXVvdGEpOgorICAgICAgICBDYWxsIHRoZSBkZWxlZ2F0ZSB3aXRoIHRo
ZSBuZXcgc3BhY2UgbmVlZGVkIGluZm9ybWF0aW9uLgorCiAyMDExLTA3LTA0ICBEYW4gQmVybnN0
ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZWQgaGFuZGxpbmcgb2YgZnJhbWUg
c2l6ZSBjaGFuZ2VzIGludG8gaXRzIG93biBtZXRob2QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRVSURlbGVnYXRlLm0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRVSURlbGVnYXRlLm0KaW5kZXgg
YTMyN2ZkNC4uYzRkYjIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvRGVmYXVsdERl
bGVnYXRlcy9XZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0Rl
ZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdFVJRGVsZWdhdGUubQpAQCAtMjI3LDcgKzIyNyw3IEBA
IC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBjb250ZXh0TWVudUl0ZW1TZWxlY3Rl
ZDooTlNNZW51SXRlbSAqKWl0ZW0gZm9yCiB7CiB9CiAKLS0gKHZvaWQpd2ViVmlldzooV2ViVmll
dyAqKXNlbmRlciBleGNlZWRlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YUZvclNlY3VyaXR5
T3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbgorLSAodm9pZCl3ZWJWaWV3OihXZWJW
aWV3ICopc2VuZGVyIGV4Y2VlZGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhRm9yU2VjdXJp
dHlPcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luIHNwYWNlTmVlZGVkOihOU1VJbnRl
Z2VyKXNwYWNlTmVlZGVkCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggZDRkNmViNi4uYzY2YjNlMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgK
QEAgLTExNiw3ICsxMTYsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICNpZiBFTkFCTEUoT0ZGTElORV9X
RUJfQVBQTElDQVRJT05TKQogICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkTWF4QXBwQ2FjaGVTaXpl
KGludDY0X3Qgc3BhY2VOZWVkZWQpOwotICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBwbGljYXRp
b25DYWNoZU9yaWdpblF1b3RhKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKik7CisgICAgdmlydHVh
bCB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4qLCBpbnQ2NF90IHNwYWNlTmVlZGVkKTsKICNlbmRpZgogICAgIHZpcnR1YWwgdm9p
ZCBwb3B1bGF0ZVZpc2l0ZWRMaW5rcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KaW5kZXggNzIxODFjNC4uNmNmNzVjMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5tbQpAQCAtNjk4LDEyICs2OTgsMTIgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJlYWNo
ZWRNYXhBcHBDYWNoZVNpemUoaW50NjRfdCBzcGFjZU5lZWRlZCkKICAgICAvLyBGSVhNRTogRnJl
ZSBzb21lIHNwYWNlLgogfQogCi12b2lkIFdlYkNocm9tZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0
aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiogb3JpZ2luKQordm9pZCBXZWJDaHJv
bWVDbGllbnQ6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmln
aW4qIG9yaWdpbiwgaW50NjRfdCBzcGFjZU5lZWRlZCkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpD
X0VYQ0VQVElPTlM7CiAKICAgICBXZWJTZWN1cml0eU9yaWdpbiAqd2ViT3JpZ2luID0gW1tXZWJT
ZWN1cml0eU9yaWdpbiBhbGxvY10gX2luaXRXaXRoV2ViQ29yZVNlY3VyaXR5T3JpZ2luOm9yaWdp
bl07Ci0gICAgQ2FsbFVJRGVsZWdhdGUobV93ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpleGNl
ZWRlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YUZvclNlY3VyaXR5T3JpZ2luOiksIHdlYk9y
aWdpbik7CisgICAgQ2FsbFVJRGVsZWdhdGUobV93ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpl
eGNlZWRlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YUZvclNlY3VyaXR5T3JpZ2luOnNwYWNl
TmVlZGVkOiksIHdlYk9yaWdpbiwgc3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4oc3BhY2VOZWVkZWQp
KTsKICAgICBbd2ViT3JpZ2luIHJlbGVhc2VdOwogCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVUlEZWxlZ2F0
ZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZh
dGUuaAppbmRleCA5MGNmYmRmLi41NjkyMzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlVJRGVsZWdhdGVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJVSURlbGVnYXRlUHJpdmF0ZS5oCkBAIC0xOTcsMTQgKzE5NywxNiBAQCBleHRl
cm4gTlNTdHJpbmcgKldlYkNvbnNvbGVNZXNzYWdlRGVidWdNZXNzYWdlTGV2ZWw7CiAtICh2b2lk
KXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZnJhbWU6KFdlYkZyYW1lICopZnJhbWUgZXhjZWVk
ZWREYXRhYmFzZVF1b3RhRm9yU2VjdXJpdHlPcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3Jp
Z2luIGRhdGFiYXNlOihOU1N0cmluZyAqKWRhdGFiYXNlSWRlbnRpZmllcjsKIAogLyohCi0gICAg
QG1ldGhvZCB3ZWJWaWV3OmV4Y2VlZGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhRm9yU2Vj
dXJpdHlPcmlnaW46CisgICAgQG1ldGhvZCB3ZWJWaWV3OmV4Y2VlZGVkQXBwbGljYXRpb25DYWNo
ZU9yaWdpblF1b3RhRm9yU2VjdXJpdHlPcmlnaW46c3BhY2VOZWVkZWQ6CiAgICAgQHBhcmFtIHNl
bmRlciBUaGUgV2ViVmlldyBzZW5kaW5nIHRoZSBkZWxlZ2F0ZSBtZXRob2QuCi0gICAgQHBhcmFt
IG9yaWdpbiBUaGUgc2VjdXJpdHkgb3JpZ2luIHRoYXQgbmVlZHMgYSBsYXJnZXIgcXVvdGEKKyAg
ICBAcGFyYW0gb3JpZ2luIFRoZSBzZWN1cml0eSBvcmlnaW4gdGhhdCBuZWVkcyBhIGxhcmdlciBx
dW90YS4KKyAgICBAcGFyYW0gc3BhY2VOZWVkZWQgVGhlIGFtb3VudCBvZiBzcGFjZSBuZWVkZWQg
dG8gc3RvcmUgdGhlIG5ldyBtYW5pZmVzdCBhbmQga2VlcCBhbGwgb3RoZXIKKyAgICBwcmV2aW91
c2x5IHN0b3JlZCBjYWNoZXMgZm9yIHRoaXMgb3JpZ2luLgogICAgIEBkaXNjdXNzaW9uIFRoaXMg
bWV0aG9kIGlzIGNhbGxlZCB3aGVuIGEgcGFnZSBhdHRlbXB0cyB0byBzdG9yZSBtb3JlIGluIHRo
ZSBBcHBsaWNhdGlvbiBDYWNoZQogICAgIGZvciBhbiBvcmlnaW4gdGhhbiB3YXMgYWxsb3dlZCBi
eSB0aGUgcXVvdGEgKG9yIGRlZmF1bHQpIHNldCBmb3IgdGhlIG9yaWdpbi4gVGhpcyBhbGxvd3Mg
dGhlCiAgICAgcXVvdGEgdG8gYmUgaW5jcmVhc2VkIGZvciB0aGUgc2VjdXJpdHkgb3JpZ2luLgog
Ki8KLS0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBleGNlZWRlZEFwcGxpY2F0aW9u
Q2FjaGVPcmlnaW5RdW90YUZvclNlY3VyaXR5T3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9y
aWdpbjsKKy0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBleGNlZWRlZEFwcGxpY2F0
aW9uQ2FjaGVPcmlnaW5RdW90YUZvclNlY3VyaXR5T3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAq
KW9yaWdpbiBzcGFjZU5lZWRlZDooTlNVSW50ZWdlcilzcGFjZU5lZWRlZDsKIAogLSAoV2ViVmll
dyAqKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgY3JlYXRlV2ViVmlld1dpdGhSZXF1ZXN0OihO
U1VSTFJlcXVlc3QgKilyZXF1ZXN0IHdpbmRvd0ZlYXR1cmVzOihOU0RpY3Rpb25hcnkgKilmZWF0
dXJlczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwIGIv
U291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCmluZGV4IGU4ZThmYmUuLmVlNDk4ZWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKQEAgLTQxODAsNyArNDE4MCw3IEBAIHF1aW50
NjQgUVdlYlBhZ2U6OmJ5dGVzUmVjZWl2ZWQoKSBjb25zdAogICAgIFxzYSBRV2ViRGF0YWJhc2UK
ICovCiAvKiEKLSAgICBcZm4gdm9pZCBRV2ViUGFnZTo6YXBwbGljYXRpb25DYWNoZVF1b3RhRXhj
ZWVkZWQoUVdlYlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIHF1aW50NjQgZGVmYXVsdE9yaWdpblF1
b3RhKTsKKyAgICBcZm4gdm9pZCBRV2ViUGFnZTo6YXBwbGljYXRpb25DYWNoZVF1b3RhRXhjZWVk
ZWQoUVdlYlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIHF1aW50NjQgZGVmYXVsdE9yaWdpblF1b3Rh
LCBxdWludDY0IHNwYWNlTmVlZGVkKTsKIAogICAgIFRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQgd2hl
bmV2ZXIgdGhlIHdlYiBzaXRlIGlzIGFza2luZyB0byBzdG9yZSBkYXRhIHRvIHRoZSBhcHBsaWNh
dGlvbiBjYWNoZQogICAgIGRhdGFiYXNlIGRhdGFiYXNlTmFtZSBhbmQgdGhlIHF1b3RhIGFsbG9j
YXRlZCB0byB0aGF0IHdlYiBzaXRlIGlzIGV4Y2VlZGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9xdC9BcGkvcXdlYnBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmgK
aW5kZXggZjFmNDgxYi4uYjkxODllNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9BcGkv
cXdlYnBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5oCkBAIC0zOTQs
NyArMzk0LDcgQEAgUV9TSUdOQUxTOgogICAgIHZvaWQgbWljcm9Gb2N1c0NoYW5nZWQoKTsKICAg
ICB2b2lkIGNvbnRlbnRzQ2hhbmdlZCgpOwogICAgIHZvaWQgZGF0YWJhc2VRdW90YUV4Y2VlZGVk
KFFXZWJGcmFtZSogZnJhbWUsIFFTdHJpbmcgZGF0YWJhc2VOYW1lKTsKLSAgICB2b2lkIGFwcGxp
Y2F0aW9uQ2FjaGVRdW90YUV4Y2VlZGVkKFFXZWJTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBxdWlu
dDY0IGRlZmF1bHRPcmlnaW5RdW90YSk7CisgICAgdm9pZCBhcHBsaWNhdGlvbkNhY2hlUXVvdGFF
eGNlZWRlZChRV2ViU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgcXVpbnQ2NCBkZWZhdWx0T3JpZ2lu
UXVvdGEsIHF1aW50NjQgc3BhY2VOZWVkZWQpOwogCiAgICAgdm9pZCBzYXZlRnJhbWVTdGF0ZVJl
cXVlc3RlZChRV2ViRnJhbWUqIGZyYW1lLCBRV2ViSGlzdG9yeUl0ZW0qIGl0ZW0pOwogICAgIHZv
aWQgcmVzdG9yZUZyYW1lU3RhdGVSZXF1ZXN0ZWQoUVdlYkZyYW1lKiBmcmFtZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdl
TG9nCmluZGV4IDg3ZWFkMDMuLmViYmQ5NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTEtMDctMDggIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBBcHBsaWNhdGlvbkNhY2hlIHVwZGF0ZSBzaG91bGQgbm90IGltbWVkaWF0ZWx5IGZh
aWwgd2hlbiByZWFjaGluZyBwZXItb3JpZ2luIHF1b3RhCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDE3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKiBB
cGkvcXdlYnBhZ2UuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6cmVhY2hlZEFwcGxpY2F0aW9u
Q2FjaGVPcmlnaW5RdW90YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
UXQuaDoKKyAgICAgICAgUGFzcyB0aGUgc3BhY2VOZWVkZWQgdmFsdWUgdGhyb3VnaCB0byB0aGUg
YXBwbGljYXRpb25DYWNoZVF1b3RhRXhjZWVkZWQgc2lnbmFsLgorCiAyMDExLTA3LTA1ICBSYWZh
ZWwgQnJhbmRhbyAgPHJhZmFlbC5sb2JvQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgW1F0XSBG
aXggdHN0X1FXZWJGcmFtZTo6c2V0SHRtbFdpdGhSZXNvdXJjZSgpIEFQSSB0ZXN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCmluZGV4
IDlmMzUyMTkuLmVkMzk5ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCkBAIC01NTUsNyArNTU1LDcgQEAgdm9pZCBDaHJvbWVD
bGllbnRRdDo6cmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90KQogICAgIG5vdEltcGxlbWVu
dGVkKCk7CiB9CiAKLXZvaWQgQ2hyb21lQ2xpZW50UXQ6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hl
T3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKK3ZvaWQgQ2hyb21lQ2xpZW50UXQ6
OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4qIG9yaWdp
biwgaW50NjRfdCBzcGFjZU5lZWRlZCkKIHsKICAgICBpbnQ2NF90IHF1b3RhOwogICAgIHF1aW50
NjQgZGVmYXVsdE9yaWdpblF1b3RhID0gV2ViQ29yZTo6Y2FjaGVTdG9yYWdlKCkuZGVmYXVsdE9y
aWdpblF1b3RhKCk7CkBAIC01NjYsNyArNTY2LDcgQEAgdm9pZCBDaHJvbWVDbGllbnRRdDo6cmVh
Y2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiogb3JpZ2luKQog
ICAgIGlmICghV2ViQ29yZTo6Y2FjaGVTdG9yYWdlKCkucXVvdGFGb3JPcmlnaW4ob3JpZ2luLCBx
dW90YSkpCiAgICAgICAgV2ViQ29yZTo6Y2FjaGVTdG9yYWdlKCkuc3RvcmVVcGRhdGVkUXVvdGFG
b3JPcmlnaW4ob3JpZ2luLCBkZWZhdWx0T3JpZ2luUXVvdGEpOwogCi0gICAgZW1pdCBtX3dlYlBh
Z2UtPmFwcGxpY2F0aW9uQ2FjaGVRdW90YUV4Y2VlZGVkKHNlY3VyaXR5T3JpZ2luLCBkZWZhdWx0
T3JpZ2luUXVvdGEpOworICAgIGVtaXQgbV93ZWJQYWdlLT5hcHBsaWNhdGlvbkNhY2hlUXVvdGFF
eGNlZWRlZChzZWN1cml0eU9yaWdpbiwgZGVmYXVsdE9yaWdpblF1b3RhLCBzdGF0aWNfY2FzdDxx
dWludDY0PihzcGFjZU5lZWRlZCkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaCBiL1NvdXJjZS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAppbmRleCBjN2ZiYjhhLi5iOTcxMDQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dFF0LmgKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRR
dC5oCkBAIC0xNDAsNyArMTQwLDcgQEAgcHVibGljOgogI2VuZGlmCiAjaWYgRU5BQkxFKE9GRkxJ
TkVfV0VCX0FQUExJQ0FUSU9OUykKICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZE1heEFwcENhY2hl
U2l6ZShpbnQ2NF90IHNwYWNlTmVlZGVkKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxp
Y2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiopOworICAgIHZpcnR1YWwgdm9p
ZCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKiwgaW50
NjRfdCBzcGFjZU5lZWRlZCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAg
ICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51KCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXgg
Yjg2NzdlYy4uYmQ2MzQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEx
LTA3LTA4ICBKb3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
QXBwbGljYXRpb25DYWNoZSB1cGRhdGUgc2hvdWxkIG5vdCBpbW1lZGlhdGVseSBmYWlsIHdoZW4g
cmVhY2hpbmcgcGVyLW9yaWdpbiBxdW90YQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjQxNzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVv
dGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorCiAyMDEx
LTA2LTMwICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IGNiOWJhZjEuLmRjM2M1YTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcApAQCAtNjI4LDcgKzYyOCw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpyZWFj
aGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3Qgc3BhY2VOZWVkZWQpCiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKIH0KIAotdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hl
T3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4qKQordm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJlYWNo
ZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4qLCBpbnQ2NF90KQog
ewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IDE4Y2JiNmIuLmE1MzdkOGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oCkBAIC0xMjEsNyArMTIxLDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKE9GRkxJTkVfV0VC
X0FQUExJQ0FUSU9OUykKICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZE1heEFwcENhY2hlU2l6ZShp
bnQ2NF90IHNwYWNlTmVlZGVkKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9u
Q2FjaGVPcmlnaW5RdW90YShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiopOworICAgIHZpcnR1YWwg
dm9pZCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luKiwgaW50NjRfdCBzcGFjZU5lZWRlZCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05U
RVhUX01FTlVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwppbmRleCA5ZTBjNDI1Li5jNWMzNGY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L3dpbmNlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDExLTA3LTA4ICBKb3NlcGggUGVj
b3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQXBwbGljYXRpb25DYWNoZSB1
cGRhdGUgc2hvdWxkIG5vdCBpbW1lZGlhdGVseSBmYWlsIHdoZW4gcmVhY2hpbmcgcGVyLW9yaWdp
biBxdW90YQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjQxNzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFdpbkNFLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
Q2hyb21lQ2xpZW50V2luQ0U6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEpOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFdpbkNFLmg6CisKIDIwMTEtMDYt
MzAgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBLZW50IFRhbXVyYS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50V2luQ0UuY3BwIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRXaW5DRS5jcHAKaW5kZXggOWM5ZDU2NC4uNTk2MWJiZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRXaW5DRS5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRXaW5DRS5jcHAKQEAgLTMxNiw3ICszMTYsNyBAQCB2b2lkIENocm9tZUNsaWVudFdp
bkNFOjpyZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3QpCiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KIAotdm9pZCBDaHJvbWVDbGllbnRXaW5DRTo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVP
cmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiopCit2b2lkIENocm9tZUNsaWVudFdpbkNFOjpyZWFj
aGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKiwgaW50NjRfdCkK
IHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
aW5jZS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRXaW5DRS5oIGIvU291cmNlL1dlYktpdC93
aW5jZS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRXaW5DRS5oCmluZGV4IDQxZGI3Y2QuLmY3
ZDNkMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50V2luQ0UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudFdpbkNFLmgKQEAgLTEzMSw3ICsxMzEsNyBAQCBwdWJsaWM6CiAgICAgLy8g
bW9yZSB0aGFuIGFsbG93ZWQgb24gdGhpcyBvcmlnaW4uIFRoaXMgY2FsbGJhY2sgYWxsb3dzIHRo
ZSBjaHJvbWUgY2xpZW50CiAgICAgLy8gdG8gdGFrZSBhY3Rpb24sIHN1Y2ggYXMgcHJvbXB0aW5n
IHRoZSB1c2VyIHRvIGFzayB0byBpbmNyZWFzZSB0aGUgcXVvdGEKICAgICAvLyBmb3IgdGhpcyBv
cmlnaW4uCi0gICAgdmlydHVhbCB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVv
dGEoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFw
cGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGludDY0
X3Qgc3BhY2VOZWVkZWQpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93eC9D
aGFuZ2VMb2cKaW5kZXggNDJlN2JiNC4uYjc0NzRmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC93eC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNCBAQAorMjAxMS0wNy0wOCAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3Jn
PgorCisgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGUgdXBkYXRlIHNob3VsZCBub3QgaW1tZWRpYXRl
bHkgZmFpbCB3aGVuIHJlYWNoaW5nIHBlci1vcmlnaW4gcXVvdGEKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0MTc3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVu
dFd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFd4OjpyZWFjaGVkQXBwbGlj
YXRpb25DYWNoZU9yaWdpblF1b3RhKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNs
aWVudFd4Lmg6CisKIDIwMTEtMDctMDYgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2
aWVycy5jb20+CiAKICAgICAgICAgW3d4XSBVbnJldmlld2VkIGJ1aWxkIGZpeC4gRG9uJ3QgZXhw
b3NlIHRoZSBraXQgZnVuY3Rpb24gdG8gdGhlIHN3aWcgd3JhcHBlcnMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwIGIvU291cmNl
L1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcAppbmRleCBkMDE3MjZm
Li43OTk2OTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hy
b21lQ2xpZW50V3guY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJv
bWVDbGllbnRXeC5jcHAKQEAgLTQ0NSw3ICs0NDUsNyBAQCB2b2lkIENocm9tZUNsaWVudFd4Ojpy
ZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3Qgc3BhY2VOZWVkZWQpCiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0KIAotdm9pZCBDaHJvbWVDbGllbnRXeDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2Fj
aGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiopCit2b2lkIENocm9tZUNsaWVudFd4OjpyZWFj
aGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKiwgaW50NjRfdCkK
IHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmggYi9Tb3VyY2UvV2ViS2l0L3d4L1dlYktp
dFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaAppbmRleCA2NTU4N2M3Li5jMDdkNmEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaApAQCAtMTI4
LDcgKzEyOCw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElP
TlMpCiAgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRNYXhBcHBDYWNoZVNpemUoaW50NjRfdCBzcGFj
ZU5lZWRlZCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2lu
UXVvdGEoU2VjdXJpdHlPcmlnaW4qKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0
aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiosIGludDY0X3Qgc3BhY2VOZWVkZWQp
OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBkZDY2
MjAyLi5iMTY5M2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDctMDggIEpv
c2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBBcHBsaWNhdGlv
bkNhY2hlIHVwZGF0ZSBzaG91bGQgbm90IGltbWVkaWF0ZWx5IGZhaWwgd2hlbiByZWFjaGluZyBw
ZXItb3JpZ2luIHF1b3RhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02NDE3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hl
T3JpZ2luUXVvdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50Lmg6CisKIDIwMTEtMDctMDYgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQu
b3JnPgogCiAgICAgICAgIFtRdF1bV0syXSBTcGxpdCBRdCBBUEkgaW50byB0d28gZGlmZmVyZW50
IHdlYiB2aWV3cyAodG91Y2ggYW5kIGRlc2t0b3ApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5k
ZXggYzhmZmU1MS4uYjllNWVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtNTQyLDcg
KzU0Miw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGlu
dDY0X3QpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJDaHJvbWVDbGllbnQ6
OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4qKQordm9p
ZCBXZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2Vj
dXJpdHlPcmlnaW4qLCBpbnQ2NF90KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuaAppbmRleCBkMjg2NzFmLi45YjdhY2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmgKQEAgLTE0MCw3ICsxNDAsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKE9GRkxJTkVfV0VC
X0FQUExJQ0FUSU9OUykKICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZE1heEFwcENhY2hlU2l6ZShp
bnQ2NF90IHNwYWNlTmVlZGVkKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9u
Q2FjaGVPcmlnaW5RdW90YShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiopOworICAgIHZpcnR1YWwg
dm9pZCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luKiwgaW50NjRfdCBzcGFjZU5lZWRlZCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShEQVNI
Qk9BUkRfU1VQUE9SVCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCA3MTAxMGM0Li5jNTI2MGRlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMTEtMDctMDggIEpvc2Vw
aCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBBcHBsaWNhdGlvbkNh
Y2hlIHVwZGF0ZSBzaG91bGQgbm90IGltbWVkaWF0ZWx5IGZhaWwgd2hlbiByZWFjaGluZyBwZXIt
b3JpZ2luIHF1b3RhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02NDE3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZCBsYXlvdXRUZXN0Q29udHJvbGxlci5kaXNhbGxvd0luY3JlYXNlRm9yQXBwbGljYXRp
b25DYWNoZVF1b3RhKCkKKyAgICAgICAgdG8gZGlzYWJsZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBv
ZiByYWlzaW5nIHRoZSBkZWZhdWx0IHBlci1vcmlnaW4KKyAgICAgICAgcXVvdGEgdG8gNU1CIHdo
ZW4gcmVhY2hlZC4gVGhpcyBhbGxvd3MgdXMgdG8gdGVzdCB3aGF0IGhhcHBlbnMKKyAgICAgICAg
d2hlbiB0aGUgcXVvdGEgaXMgcmVhY2hlZCBhbmQgbm90IGluY3JlYXNlZC4KKworICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKExheW91
dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcik6CisgICAgICAgIChkaXNhbGxv
d0luY3JlYXNlRm9yQXBwbGljYXRpb25DYWNoZVF1b3RhQ2FsbGJhY2spOgorICAgICAgICAoTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9s
bGVyOjpkaXNhbGxvd0luY3JlYXNlRm9yQXBwbGljYXRpb25DYWNoZVF1b3RhKToKKyAgICAgICAg
KExheW91dFRlc3RDb250cm9sbGVyOjpzZXREaXNhbGxvd0luY3JlYXNlRm9yQXBwbGljYXRpb25D
YWNoZVF1b3RhKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJv
bGxlclF0LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpyZXNldCk6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oOgorICAgICAg
ICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmRpc2FsbG93SW5jcmVhc2VGb3JBcHBsaWNhdGlvbkNh
Y2hlUXVvdGEpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmR1bXBBcHBsaWNhdGlv
bkNhY2hlRGVsZWdhdGVDYWxsYmFja3MpOgorICAgICAgICBFeHBvc2UgYSBmdW5jdGlvbiB0byBw
cmV2ZW50IGF1dG9tYXRpY2FsbHkgaW5jcmVhc2luZyB0aGUgcGVyLW9yaWdpbgorICAgICAgICBx
dW90YSB3aGVuIHRoZSBxdW90YSBpcyByZWFjaGVkLiBUaGlzIGFsbG93cyB1cyB0byB0ZXN0IHdo
YXQgaGFwcGVucworICAgICAgICB3aGVuIGEgdXNlciB3b3VsZCAiZGlzYWxsb3ciIGEgcXVvdGEg
aW5jcmVhc2UuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbToK
KyAgICAgICAgKC1bVUlEZWxlZ2F0ZSB3ZWJWaWV3OmV4Y2VlZGVkQXBwbGljYXRpb25DYWNoZU9y
aWdpblF1b3RhRm9yU2VjdXJpdHlPcmlnaW46c3BhY2VOZWVkZWQ6XSk6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
dW1wUmVuZGVyVHJlZTo6ZHVtcEFwcGxpY2F0aW9uQ2FjaGVRdW90YSk6CisgICAgICAgIFJlc3Bl
Y3QgdGhlIG5ldyBkaXNhbGxvd0luY3JlYXNlIGZsYWcgYW5kIGR1bXAgdGhlIHNwYWNlTmVlZGVk
IHZhbHVlcworICAgICAgICBmb3IgcG9ydHMgdGhhdCBpbXBsZW1lbnQgYXBwbGljYXRpb24gY2Fj
aGUgcXVvdGFzLgorCiAyMDExLTA3LTA2ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIG5yd3Q6IGZpeCB0eXBvIHByZXZlbnRpbmcgaHR0cCBzdGFydHVwIG9u
IHdpbmRvd3MKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cAppbmRleCBkZjZmMzUxLi45OTIyMjE4IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5
b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC00Myw3ICs0Myw4IEBACiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgogCiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsZXIoY29u
c3Qgc3RkOjpzdHJpbmcmIHRlc3RQYXRoT3JVUkwsIGNvbnN0IHN0ZDo6c3RyaW5nJiBleHBlY3Rl
ZFBpeGVsSGFzaCkKLSAgICA6IG1fZHVtcEFwcGxpY2F0aW9uQ2FjaGVEZWxlZ2F0ZUNhbGxiYWNr
cyhmYWxzZSkKKyAgICA6IG1fZGlzYWxsb3dJbmNyZWFzZUZvckFwcGxpY2F0aW9uQ2FjaGVRdW90
YShmYWxzZSkKKyAgICAsIG1fZHVtcEFwcGxpY2F0aW9uQ2FjaGVEZWxlZ2F0ZUNhbGxiYWNrcyhm
YWxzZSkKICAgICAsIG1fZHVtcEFzQXVkaW8oZmFsc2UpCiAgICAgLCBtX2R1bXBBc1BERihmYWxz
ZSkKICAgICAsIG1fZHVtcEFzVGV4dChmYWxzZSkKQEAgLTk4LDYgKzk5LDEzIEBAIFBhc3NSZWZQ
dHI8TGF5b3V0VGVzdENvbnRyb2xsZXI+IExheW91dFRlc3RDb250cm9sbGVyOjpjcmVhdGUoY29u
c3Qgc3RkOjpzdHJpbmcmCiAKIC8vIFN0YXRpYyBGdW5jdGlvbnMKIAorc3RhdGljIEpTVmFsdWVS
ZWYgZGlzYWxsb3dJbmNyZWFzZUZvckFwcGxpY2F0aW9uQ2FjaGVRdW90YUNhbGxiYWNrKEpTQ29u
dGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09i
amVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10s
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29u
dHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQ
cml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5zZXREaXNhbGxvd0luY3JlYXNl
Rm9yQXBwbGljYXRpb25DYWNoZVF1b3RhKHRydWUpOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVu
ZGVmaW5lZChjb250ZXh0KTsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYgZHVtcEFwcGxpY2F0aW9u
Q2FjaGVEZWxlZ2F0ZUNhbGxiYWNrc0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09i
amVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50
Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlv
bikKIHsKICAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0
PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsK
QEAgLTIyNjMsNiArMjI3MSw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91dFRlc3RDb250cm9s
bGVyOjpzdGF0aWNGdW5jdGlvbnMoKQogICAgICAgICB7ICJub2Rlc0Zyb21SZWN0Iiwgbm9kZXNG
cm9tUmVjdENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImRlY29kZUhvc3ROYW1lIiwgZGVj
b2RlSG9zdE5hbWVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJkaXNhYmxlSW1hZ2VMb2Fk
aW5nIiwgZGlzYWJsZUltYWdlTG9hZGluZ0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgImRp
c2FsbG93SW5jcmVhc2VGb3JBcHBsaWNhdGlvbkNhY2hlUXVvdGEiLCBkaXNhbGxvd0luY3JlYXNl
Rm9yQXBwbGljYXRpb25DYWNoZVF1b3RhQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiZGlz
cGF0Y2hQZW5kaW5nTG9hZFJlcXVlc3RzIiwgZGlzcGF0Y2hQZW5kaW5nTG9hZFJlcXVlc3RzQ2Fs
bGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiZGlzcGxheSIsIGRpc3BsYXlDYWxsYmFjaywga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LAogICAgICAgICB7ICJkaXNwbGF5SW52YWxpZGF0ZWRSZWdpb24iLCBkaXNwbGF5SW52YWxp
ZGF0ZWRSZWdpb25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91
dFRlc3RDb250cm9sbGVyLmgKaW5kZXggZGY3NWJlYS4uMTNhZmE5NyAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCkBAIC0xNTUsNiArMTU1LDkgQEAgcHVi
bGljOgogICAgIGJvb2wgZ2VuZXJhdGVQaXhlbFJlc3VsdHMoKSBjb25zdCB7IHJldHVybiBtX2dl
bmVyYXRlUGl4ZWxSZXN1bHRzOyB9CiAgICAgdm9pZCBzZXRHZW5lcmF0ZVBpeGVsUmVzdWx0cyhi
b29sIGdlbmVyYXRlUGl4ZWxSZXN1bHRzKSB7IG1fZ2VuZXJhdGVQaXhlbFJlc3VsdHMgPSBnZW5l
cmF0ZVBpeGVsUmVzdWx0czsgfQogCisgICAgYm9vbCBkaXNhbGxvd0luY3JlYXNlRm9yQXBwbGlj
YXRpb25DYWNoZVF1b3RhKCkgY29uc3QgeyByZXR1cm4gbV9kaXNhbGxvd0luY3JlYXNlRm9yQXBw
bGljYXRpb25DYWNoZVF1b3RhOyB9CisgICAgdm9pZCBzZXREaXNhbGxvd0luY3JlYXNlRm9yQXBw
bGljYXRpb25DYWNoZVF1b3RhKGJvb2wgZGlzYWxsb3dJbmNyZWFzZSkgeyBtX2Rpc2FsbG93SW5j
cmVhc2VGb3JBcHBsaWNhdGlvbkNhY2hlUXVvdGEgPSBkaXNhbGxvd0luY3JlYXNlOyB9CisKICAg
ICBib29sIGR1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3MoKSBjb25zdCB7IHJl
dHVybiBtX2R1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3M7IH0KICAgICB2b2lk
IHNldER1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3MoYm9vbCBkdW1wQ2FsbGJh
Y2tzKSB7IG1fZHVtcEFwcGxpY2F0aW9uQ2FjaGVEZWxlZ2F0ZUNhbGxiYWNrcyA9IGR1bXBDYWxs
YmFja3M7IH0KIApAQCAtMzUxLDYgKzM1NCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldEdl
b2xvY2F0aW9uUGVybWlzc2lvbkNvbW1vbihib29sIGFsbG93KTsKIAorICAgIGJvb2wgbV9kaXNh
bGxvd0luY3JlYXNlRm9yQXBwbGljYXRpb25DYWNoZVF1b3RhOwogICAgIGJvb2wgbV9kdW1wQXBw
bGljYXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzOwogICAgIGJvb2wgbV9kdW1wQXNBdWRpbzsK
ICAgICBib29sIG1fZHVtcEFzUERGOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL1VJRGVsZWdhdGUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5t
bQppbmRleCA2Yjg0NzM4Li5lYmU4NzYyIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvVUlEZWxlZ2F0ZS5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxl
Z2F0ZS5tbQpAQCAtMTY2LDEzICsxNjYsMTYgQEAgRHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8g
KmRyYWdnaW5nSW5mbyA9IG5pbDsKICAgICBbW29yaWdpbiBkYXRhYmFzZVF1b3RhTWFuYWdlcl0g
c2V0UXVvdGE6ZGVmYXVsdFF1b3RhXTsKIH0KIAotLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICop
c2VuZGVyIGV4Y2VlZGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhRm9yU2VjdXJpdHlPcmln
aW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luCistICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcg
KilzZW5kZXIgZXhjZWVkZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGFGb3JTZWN1cml0eU9y
aWdpbjooV2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4gc3BhY2VOZWVkZWQ6KE5TVUludGVnZXIp
c3BhY2VOZWVkZWQKIHsKICAgICBpZiAoIWRvbmUgJiYgZ0xheW91dFRlc3RDb250cm9sbGVyLT5k
dW1wQXBwbGljYXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzKCkpIHsKLSAgICAgICAgcHJpbnRm
KCJVSSBERUxFR0FURSBBUFBMSUNBVElPTiBDQUNIRSBDQUxMQkFDSzogZXhjZWVkZWRBcHBsaWNh
dGlvbkNhY2hlT3JpZ2luUXVvdGFGb3JTZWN1cml0eU9yaWdpbjp7JXMsICVzLCAlaX1cbiIsCi0g
ICAgICAgICAgICBbW29yaWdpbiBwcm90b2NvbF0gVVRGOFN0cmluZ10sIFtbb3JpZ2luIGhvc3Rd
IFVURjhTdHJpbmddLCBbb3JpZ2luIHBvcnRdKTsKKyAgICAgICAgcHJpbnRmKCJVSSBERUxFR0FU
RSBBUFBMSUNBVElPTiBDQUNIRSBDQUxMQkFDSzogZXhjZWVkZWRBcHBsaWNhdGlvbkNhY2hlT3Jp
Z2luUXVvdGFGb3JTZWN1cml0eU9yaWdpbjp7JXMsICVzLCAlaX0gc3BhY2VOZWVkZWQ6JWx1XG4i
LAorICAgICAgICAgICAgW1tvcmlnaW4gcHJvdG9jb2xdIFVURjhTdHJpbmddLCBbW29yaWdpbiBo
b3N0XSBVVEY4U3RyaW5nXSwgW29yaWdpbiBwb3J0XSwgc3BhY2VOZWVkZWQpOwogICAgIH0KIAor
ICAgIGlmIChnTGF5b3V0VGVzdENvbnRyb2xsZXItPmRpc2FsbG93SW5jcmVhc2VGb3JBcHBsaWNh
dGlvbkNhY2hlUXVvdGEoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIGxvbmcgbG9uZyBkZWZhdWx0T3JpZ2luUXVvdGEgPSBbV2ViQXBwbGljYXRpb25DYWNo
ZSBkZWZhdWx0T3JpZ2luUXVvdGFdOwogICAgIFtbb3JpZ2luIGFwcGxpY2F0aW9uQ2FjaGVRdW90
YU1hbmFnZXJdIHNldFF1b3RhOmRlZmF1bHRPcmlnaW5RdW90YV07CiB9CmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNwcCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuY3BwCmluZGV4IDdmNWY4MjIuLmVmOWVhODEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuY3Bw
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuY3BwCkBAIC00
NTksOCArNDU5LDggQEAgRHVtcFJlbmRlclRyZWU6OkR1bXBSZW5kZXJUcmVlKCkKICAgICAgICAg
ICAgIFNMT1QodGl0bGVDaGFuZ2VkKGNvbnN0IFFTdHJpbmcmKSkpOwogICAgIGNvbm5lY3QobV9w
YWdlLCBTSUdOQUwoZGF0YWJhc2VRdW90YUV4Y2VlZGVkKFFXZWJGcmFtZSosUVN0cmluZykpLAog
ICAgICAgICAgICAgdGhpcywgU0xPVChkdW1wRGF0YWJhc2VRdW90YShRV2ViRnJhbWUqLFFTdHJp
bmcpKSk7Ci0gICAgY29ubmVjdChtX3BhZ2UsIFNJR05BTChhcHBsaWNhdGlvbkNhY2hlUXVvdGFF
eGNlZWRlZChRV2ViU2VjdXJpdHlPcmlnaW4gKiwgcXVpbnQ2NCkpLAotICAgICAgICAgICAgdGhp
cywgU0xPVChkdW1wQXBwbGljYXRpb25DYWNoZVF1b3RhKFFXZWJTZWN1cml0eU9yaWdpbiAqLCBx
dWludDY0KSkpOworICAgIGNvbm5lY3QobV9wYWdlLCBTSUdOQUwoYXBwbGljYXRpb25DYWNoZVF1
b3RhRXhjZWVkZWQoUVdlYlNlY3VyaXR5T3JpZ2luICosIHF1aW50NjQsIHF1aW50NjQpKSwKKyAg
ICAgICAgICAgIHRoaXMsIFNMT1QoZHVtcEFwcGxpY2F0aW9uQ2FjaGVRdW90YShRV2ViU2VjdXJp
dHlPcmlnaW4gKiwgcXVpbnQ2NCwgcXVpbnQ2NCkpKTsKICAgICBjb25uZWN0KG1fcGFnZSwgU0lH
TkFMKHN0YXR1c0Jhck1lc3NhZ2UoY29uc3QgUVN0cmluZyYpKSwKICAgICAgICAgICAgIHRoaXMs
IFNMT1Qoc3RhdHVzQmFyTWVzc2FnZShjb25zdCBRU3RyaW5nJikpKTsKIApAQCAtMTAzOSwxNiAr
MTAzOSwyMSBAQCB2b2lkIER1bXBSZW5kZXJUcmVlOjpkdW1wRGF0YWJhc2VRdW90YShRV2ViRnJh
bWUqIGZyYW1lLCBjb25zdCBRU3RyaW5nJiBkYk5hbWUpCiAgICAgb3JpZ2luLnNldERhdGFiYXNl
UXVvdGEoZGF0YWJhc2VEZWZhdWx0UXVvdGEpOwogfQogCi12b2lkIER1bXBSZW5kZXJUcmVlOjpk
dW1wQXBwbGljYXRpb25DYWNoZVF1b3RhKFFXZWJTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBxdWlu
dDY0IGRlZmF1bHRPcmlnaW5RdW90YSkKK3ZvaWQgRHVtcFJlbmRlclRyZWU6OmR1bXBBcHBsaWNh
dGlvbkNhY2hlUXVvdGEoUVdlYlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIHF1aW50NjQgZGVmYXVs
dE9yaWdpblF1b3RhLCBxdWludDY0IHNwYWNlTmVlZGVkKQogewogICAgIGlmICghbV9jb250cm9s
bGVyLT5zaG91bGREdW1wQXBwbGljYXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIHByaW50ZigiVUkgREVMRUdBVEUgQVBQTElDQVRJT04gQ0FDSEUg
Q0FMTEJBQ0s6IGV4Y2VlZGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhRm9yU2VjdXJpdHlP
cmlnaW46eyVzLCAlcywgJWl9XG4iLAorICAgIHByaW50ZigiVUkgREVMRUdBVEUgQVBQTElDQVRJ
T04gQ0FDSEUgQ0FMTEJBQ0s6IGV4Y2VlZGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhRm9y
U2VjdXJpdHlPcmlnaW46eyVzLCAlcywgJWl9XG4gc3BhY2VOZWVkZWQ6JWx1IiwKICAgICAgICAg
ICAgb3JpZ2luLT5zY2hlbWUoKS50b1V0ZjgoKS5kYXRhKCksCiAgICAgICAgICAgIG9yaWdpbi0+
aG9zdCgpLnRvVXRmOCgpLmRhdGEoKSwKLSAgICAgICAgICAgb3JpZ2luLT5wb3J0KCkKKyAgICAg
ICAgICAgb3JpZ2luLT5wb3J0KCksCisgICAgICAgICAgIHNwYWNlTmVlZGVkCiAgICAgICAgICAg
ICk7CisKKyAgICBpZiAobV9jb250cm9sbGVyLT5kaXNhbGxvd0luY3JlYXNlRm9yQXBwbGljYXRp
b25DYWNoZVF1b3RhKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIG9yaWdpbi0+c2V0QXBwbGlj
YXRpb25DYWNoZVF1b3RhKGRlZmF1bHRPcmlnaW5RdW90YSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuaCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuaAppbmRleCBjYjY2Mjk2Li5hMWIyYWFkIDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmgKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5oCkBAIC0xMTksNyArMTE5
LDcgQEAgcHVibGljIFFfU0xPVFM6CiAgICAgdm9pZCB0aXRsZUNoYW5nZWQoY29uc3QgUVN0cmlu
ZyAmcyk7CiAgICAgdm9pZCBjb25uZWN0RnJhbWUoUVdlYkZyYW1lICpmcmFtZSk7CiAgICAgdm9p
ZCBkdW1wRGF0YWJhc2VRdW90YShRV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBRU3RyaW5nJiBkYk5h
bWUpOwotICAgIHZvaWQgZHVtcEFwcGxpY2F0aW9uQ2FjaGVRdW90YShRV2ViU2VjdXJpdHlPcmln
aW4qIG9yaWdpbiwgcXVpbnQ2NCBkZWZhdWx0T3JpZ2luUXVvdGEpOworICAgIHZvaWQgZHVtcEFw
cGxpY2F0aW9uQ2FjaGVRdW90YShRV2ViU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgcXVpbnQ2NCBk
ZWZhdWx0T3JpZ2luUXVvdGEsIHF1aW50NjQgc3BhY2VOZWVkZWQpOwogICAgIHZvaWQgc3RhdHVz
QmFyTWVzc2FnZShjb25zdCBRU3RyaW5nJiBtZXNzYWdlKTsKICAgICB2b2lkIHdpbmRvd0Nsb3Nl
UmVxdWVzdGVkKCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91
dFRlc3RDb250cm9sbGVyUXQuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVz
dENvbnRyb2xsZXJRdC5jcHAKaW5kZXggNmJmMTBlNy4uMjQ0YTk0YSAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAKQEAgLTU2LDYg
KzU2LDcgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cmVzZXQoKQogICAgIG1fZHVtcENo
aWxkRnJhbWVTY3JvbGxQb3NpdGlvbnMgPSBmYWxzZTsKICAgICBtX2Nhbk9wZW5XaW5kb3dzID0g
ZmFsc2U7CiAgICAgbV93YWl0Rm9yRG9uZSA9IGZhbHNlOworICAgIG1fZGlzYWxsb3dJbmNyZWFz
ZUZvckFwcGxpY2F0aW9uQ2FjaGVRdW90YSA9IGZhbHNlOwogICAgIG1fZHVtcFRpdGxlQ2hhbmdl
cyA9IGZhbHNlOwogICAgIG1fZHVtcERhdGFiYXNlQ2FsbGJhY2tzID0gZmFsc2U7CiAgICAgbV9k
dW1wQXBwbGljYXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzID0gZmFsc2U7CmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmggYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgKaW5kZXggM2UzZTc2
OS4uNWM5ZGVhYiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVz
dENvbnRyb2xsZXJRdC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RD
b250cm9sbGVyUXQuaApAQCAtNTksNiArNTksNyBAQCBjbGFzcyBMYXlvdXRUZXN0Q29udHJvbGxl
ciA6IHB1YmxpYyBRT2JqZWN0IHsKIHB1YmxpYzoKICAgICBMYXlvdXRUZXN0Q29udHJvbGxlcihX
ZWJDb3JlOjpEdW1wUmVuZGVyVHJlZSogZHJ0KTsKIAorICAgIGJvb2wgZGlzYWxsb3dJbmNyZWFz
ZUZvckFwcGxpY2F0aW9uQ2FjaGVRdW90YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzYWxsb3dJbmNy
ZWFzZUZvckFwcGxpY2F0aW9uQ2FjaGVRdW90YTsgfQogICAgIGJvb2wgc2hvdWxkRHVtcEFzVGV4
dCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dER1bXA7IH0KICAgICBib29sIHNob3VsZER1bXBCYWNr
Rm9yd2FyZExpc3QoKSBjb25zdCB7IHJldHVybiBtX2R1bXBCYWNrRm9yd2FyZExpc3Q7IH0KICAg
ICBib29sIHNob3VsZER1bXBDaGlsZHJlbkFzVGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fZHVtcENo
aWxkcmVuQXNUZXh0OyB9CkBAIC05MSwxMSArOTIsMTIgQEAgc2lnbmFsczoKIAogcHVibGljIHNs
b3RzOgogICAgIHZvaWQgbWF5YmVEdW1wKGJvb2wgb2spOworICAgIHZvaWQgZGlzYWxsb3dJbmNy
ZWFzZUZvckFwcGxpY2F0aW9uQ2FjaGVRdW90YSgpIHsgbV9kaXNhbGxvd0luY3JlYXNlRm9yQXBw
bGljYXRpb25DYWNoZVF1b3RhID0gdHJ1ZTsgfQogICAgIHZvaWQgZHVtcEFzVGV4dCgpIHsgbV90
ZXh0RHVtcCA9IHRydWU7IH0KICAgICB2b2lkIGR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpIHsgbV9k
dW1wQ2hpbGRyZW5Bc1RleHQgPSB0cnVlOyB9CiAgICAgdm9pZCBkdW1wQ2hpbGRGcmFtZVNjcm9s
bFBvc2l0aW9ucygpIHsgbV9kdW1wQ2hpbGRGcmFtZVNjcm9sbFBvc2l0aW9ucyA9IHRydWU7IH0K
ICAgICB2b2lkIGR1bXBEYXRhYmFzZUNhbGxiYWNrcygpIHsgbV9kdW1wRGF0YWJhc2VDYWxsYmFj
a3MgPSB0cnVlOyB9Ci0gICAgdm9pZCBkdW1wQXBwbGljYXRpb25DYWNoZURlbGVnYXRlQ2FsbGJh
Y2tzKCkgeyBtX2R1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3MgPSB0cnVlO30K
KyAgICB2b2lkIGR1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3MoKSB7IG1fZHVt
cEFwcGxpY2F0aW9uQ2FjaGVEZWxlZ2F0ZUNhbGxiYWNrcyA9IHRydWU7IH0KICAgICB2b2lkIGR1
bXBTdGF0dXNDYWxsYmFja3MoKSB7IG1fZHVtcFN0YXR1c0NhbGxiYWNrcyA9IHRydWU7IH0KICAg
ICB2b2lkIHNldENhbk9wZW5XaW5kb3dzKCkgeyBtX2Nhbk9wZW5XaW5kb3dzID0gdHJ1ZTsgfQog
ICAgIHZvaWQgc2V0UHJpbnRpbmcoKSB7IG1faXNQcmludGluZyA9IHRydWU7IH0KQEAgLTI4NSw2
ICsyODcsNyBAQCBwcml2YXRlOgogcHJpdmF0ZToKICAgICBib29sIG1faGFzRHVtcGVkOwogICAg
IGJvb2wgbV90ZXh0RHVtcDsKKyAgICBib29sIG1fZGlzYWxsb3dJbmNyZWFzZUZvckFwcGxpY2F0
aW9uQ2FjaGVRdW90YTsKICAgICBib29sIG1fZHVtcEJhY2tGb3J3YXJkTGlzdDsKICAgICBib29s
IG1fZHVtcENoaWxkcmVuQXNUZXh0OwogICAgIGJvb2wgbV9kdW1wQ2hpbGRGcmFtZVNjcm9sbFBv
c2l0aW9uczsK
</data>
<flag name="commit-queue"
          id="94827"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100196</attachid>
            <date>2011-07-08 18:25:57 -0700</date>
            <delta_ts>2011-07-12 14:41:22 -0700</delta_ts>
            <desc>[PATCH] Attempt to Fix Qt Build</desc>
            <filename>try-to-fix-qt.patch</filename>
            <type>text/plain</type>
            <size>73666</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxNjI4MzIwLi42ZGEyM2FiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTEtMDct
MDggIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBBcHBs
aWNhdGlvbkNhY2hlIHVwZGF0ZSBzaG91bGQgbm90IGltbWVkaWF0ZWx5IGZhaWwgd2hlbiByZWFj
aGluZyBwZXItb3JpZ2luIHF1b3RhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02NDE3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEluY2x1ZGUgc3BhY2VOZWVkZWQgaW5mb3JtYXRpb24gaW4gdGhlIG91dHB1
dCBkdW1wZWQgZm9yIGFwcGNhY2hlIHF1b3RhIGRlbGVnYXRlcy4KKyAgICAgICAgQWRkIGFuZCB1
cGRhdGUgdGVzdHMgcmVsYXRlZCB0byBoYW5kbGluZyBvZiBwZXItb3JpZ2luIHF1b3Rhcy4KKwor
ICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLXF1b3RhLWNvbnRpbnVlZC1kb3du
bG9hZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUv
b3JpZ2luLXF1b3RhLWNvbnRpbnVlZC1kb3dubG9hZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9xdW90YS1vcmlnaW4tY29udGludWVkLWRvd25s
b2FkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2Vz
L3F1b3RhLW9yaWdpbi1jb250aW51ZWQtZG93bmxvYWQubWFuaWZlc3Q6IEFkZGVkLgorICAgICAg
ICBOZXcgdGVzdCB3aGljaCBjaGVja3MgdGhhdCB0aGVyZSB3aWxsIHN0aWxsIGJlIGEgc3VjY2Vz
c2Z1bCBjYWNoZQorICAgICAgICB3aGVuIHRoZSBwZXItb3JpZ2luIHF1b3RhIGlzIHJlYWNoZWQg
YW5kIGluY3JlYXNlZCBhdCB0aGUgZW5kIG9mIGRvd25sb2FkaW5nLgorCisgICAgICAgICogaHR0
cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tcXVvdGEtY29udGludWVkLWRvd25sb2FkLW11bHRpcGxl
LW1hbmlmZXN0cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBw
Y2FjaGUvb3JpZ2luLXF1b3RhLWNvbnRpbnVlZC1kb3dubG9hZC1tdWx0aXBsZS1tYW5pZmVzdHMu
aHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvcXVv
dGEtb3JpZ2luLWNvbnRpbnVlZC1kb3dubG9hZC1tdWx0aXBsZS1tYW5pZmVzdHMtMS5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9xdW90YS1vcmln
aW4tY29udGludWVkLWRvd25sb2FkLW11bHRpcGxlLW1hbmlmZXN0cy0xLm1hbmlmZXN0OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9xdW90YS1vcmlnaW4t
Y29udGludWVkLWRvd25sb2FkLW11bHRpcGxlLW1hbmlmZXN0cy0yLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL3F1b3RhLW9yaWdpbi1jb250aW51
ZWQtZG93bmxvYWQtbXVsdGlwbGUtbWFuaWZlc3RzLTIubWFuaWZlc3Q6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL3F1b3RhLW9yaWdpbi1jb250aW51ZWQt
ZG93bmxvYWQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNv
dXJjZXMvcXVvdGEtb3JpZ2luLWNvbnRpbnVlZC1kb3dubG9hZC5tYW5pZmVzdDogQWRkZWQuCisg
ICAgICAgIE5ldyB0ZXN0IHdoaWNoIGNoZWNrcyB0aGF0IHRoZSBzcGFjZU5lZWRlZCBhcHByb3By
aWF0ZWx5IGxpc3RzIGVub3VnaCBzcGFjZSBmb3IKKyAgICAgICAgbXVsdGlwbGUgbWFuaWZlc3Rz
IGFjcm9zcyBtdWx0aXBsZSBmcmFtZXMgZm9yIHRoZSBzYW1lIG9yaWdpbi4KKworICAgICAgICAq
IGh0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL3F1b3RhLW9yaWdpbi1pZnJhbWUtMy5tYW5p
ZmVzdDogRml4IGEgdHlwby4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1x
dW90YS5odG1sOgorICAgICAgICBVcGRhdGUgdGhlIG9sZCB0ZXN0IHRvIGRpc2FsbG93IGF1dG9t
YXRpYyBpbmNyZWFzZSBvZiB0aGUgcXVvdGEsCisgICAgICAgIHdoaWNoIGlzIHRoZSBkZWZhdWx0
IGhhbmRsaW5nIG9mIERSVCB3aGVuIHJlYWNoaW5nIHRoZSBxdW90YS4KKworICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ndGsvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Ta2lwcGVkOgorICAgICAgICAq
IHBsYXRmb3JtL3dpbi9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3drMi9Ta2lwcGVkOgor
ICAgICAgICBTa2lwIHRoZSB0ZXN0IG9uIHBvcnRzIHRoYXQgZG9uJ3QgaW1wbGVtZW50IEFwcGxp
Y2F0aW9uQ2FjaGUgcGVyLW9yaWdpbiBxdW90YXMuCisKIDIwMTEtMDctMDYgIEpvaG5ueSBEaW5n
ICA8am5kQGNocm9taXVtLm9yZz4KIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjM4NTcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
YXBwY2FjaGUvb3JpZ2luLXF1b3RhLWNvbnRpbnVlZC1kb3dubG9hZC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90YS1jb250aW51ZWQtZG93
bmxvYWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2
NTM2YTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hl
L29yaWdpbi1xdW90YS1jb250aW51ZWQtZG93bmxvYWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
NyBAQAorVUkgREVMRUdBVEUgQVBQTElDQVRJT04gQ0FDSEUgQ0FMTEJBQ0s6IGV4Y2VlZGVkQXBw
bGljYXRpb25DYWNoZU9yaWdpblF1b3RhRm9yU2VjdXJpdHlPcmlnaW46e2h0dHAsIDEyNy4wLjAu
MSwgODAwMH0gc3BhY2VOZWVkZWQ6MTU5MTgKK1RoaXMgdGVzdCBjaGVja3MgdGhhdCBwZXItb3Jp
Z2luIGFwcGxpY2F0aW9uIGNhY2hlIHF1b3RhIGRvbid0IHJlcXVpcmUgYSByZWZyZXNoIHRvIGNv
bXBsZXRlIHN1Y2Nlc3NmdWxseS4KKworVGhpcyB0ZXN0IHNldHMgdGhlIHF1b3RhIGZvciB0aGUg
b3JpZ2luIHRvIDFrYiwgYW5kIGF0dGVtcHRzIHRvIGZpbGwgaXQgdXAgd2l0aCBtb3JlIHRoYW4g
MWtiIG9mIGRhdGEuIFRoZSBkb3dubG9hZCBzaG91bGQgY29tcGxldGUgc3VjY2Vzc2Z1bGx5LCB3
aXRoIHRoZSBxdW90YSBiZWluZyBpbmNyZWFzZWQgdG8gdGhlIGRlZmF1bHQgb2YgNU1CLiBUaGUg
ZGVsZWdhdGUgc2hvdWxkIGJlIGluZm9ybWVkIGZvciB0aGUgZXhjZWVkZWQgcXVvdGEsIGluY3Jl
YXNlIGl0IHRvIGEgc2l6ZSBsYXJnZSBlbm91Z2gsIGFuZCB0aGUgZG93bmxvYWQgc3VjY2VlZC4K
KworUEFTUyAtIGNhY2hlZCBpZnJhbWUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9hcHBjYWNoZS9vcmlnaW4tcXVvdGEtY29udGludWVkLWRvd25sb2FkLW11bHRpcGxlLW1h
bmlmZXN0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL29y
aWdpbi1xdW90YS1jb250aW51ZWQtZG93bmxvYWQtbXVsdGlwbGUtbWFuaWZlc3RzLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOGQwYjhjCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tcXVvdGEt
Y29udGludWVkLWRvd25sb2FkLW11bHRpcGxlLW1hbmlmZXN0cy1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw4IEBACitVSSBERUxFR0FURSBBUFBMSUNBVElPTiBDQUNIRSBDQUxMQkFDSzogZXhjZWVk
ZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGFGb3JTZWN1cml0eU9yaWdpbjp7aHR0cCwgMTI3
LjAuMC4xLCA4MDAwfSBzcGFjZU5lZWRlZDozMjAwMQorVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IHBl
ci1vcmlnaW4gYXBwbGljYXRpb24gY2FjaGUgcXVvdGEgd29ya3MgY29ycmVjdGx5IHdpdGggbXVs
dGlwbGUgbWFuaWZlc3RzL2NhY2hlcyBwZXItb3JpZ2luLgorCitUaGlzIHRlc3Qgc2V0cyB0aGUg
cXVvdGEgZm9yIHRoZSBvcmlnaW4gdG8gMjBrYiwgYW5kIGF0dGVtcHRzIHRvIGZpbGwgaXQgdXAg
d2l0aCAyIGRpZmZlcmVudCBhcHBsaWNhdGlvbiBjYWNoZXMgYWJvdXQgMTVrYiBlYWNoLiBUaGUg
Zmlyc3QgZnJhbWUgd2lsbCBjYWNoZSBzdWNjZXNzZnVsbHkgYW5kIGZpbGwgdXAgYWJvdXQgMTVr
YiBvZiB0aGUgb3JpZ2luIHF1b3RhLiBUaGUgc2Vjb25kIGZyYW1lIHdpbGwgcmVhY2ggdGhlIHF1
b3RhLCBjYXVzZSBhIGRlbGVnYXRlIGNhbGxiYWNrLCBkdW1wIHRoZSBzcGFjZU5lZWRlZCAod2hp
Y2ggc2hvdWxkIGJlIGVub3VnaCBmb3IgYm90aCBpZnJhbWUgY2FjaGVzKSwgYW5kIHN1Y2NlZWQg
ZHVlIHRvIHRoZSBkZWZhdWx0IERSVCBiZWhhdmlvciBvciByYWlzaW5nIHRoZSBxdW90YS4KKwor
UEFTUyAtIGNhY2hlZCBpZnJhbWUKK1BBU1MgLSBjYWNoZWQgaWZyYW1lCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLXF1b3RhLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90YS1jb250aW51ZWQtZG93bmxv
YWQtbXVsdGlwbGUtbWFuaWZlc3RzLmh0bWwKc2ltaWxhcml0eSBpbmRleCA1NiUKY29weSBmcm9t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLXF1b3RhLmh0bWwKY29weSB0
byBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90YS1jb250aW51ZWQt
ZG93bmxvYWQtbXVsdGlwbGUtbWFuaWZlc3RzLmh0bWwKaW5kZXggYTczMjJmZC4uMGE0MjcyMSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tcXVvdGEu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90YS1j
b250aW51ZWQtZG93bmxvYWQtbXVsdGlwbGUtbWFuaWZlc3RzLmh0bWwKQEAgLTM3LDI1ICszNywx
NiBAQCBmdW5jdGlvbiBhZGRJRnJhbWVXaXRoQ29udGludWF0aW9uKHNyYywgY29udGludWF0aW9u
KSB7CiB9CiAKIGZ1bmN0aW9uIGFkZEZpcnN0SUZyYW1lKCkgewotICAgIC8vIEV4cGVjdGVkIHRv
IHN1Y2NlZWQuCi0gICAgYWRkSUZyYW1lV2l0aENvbnRpbnVhdGlvbigicmVzb3VyY2VzL3F1b3Rh
LW9yaWdpbi1pZnJhbWUtMS5odG1sIiwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAvLyBFeHBlY3Rl
ZCB0byBzdWNjZWVkLiBXaWxsIGJlIH4xNWtiIG91dCBvZiB0aGUgMjBrYiBsaW1pdC4KKyAgICBh
ZGRJRnJhbWVXaXRoQ29udGludWF0aW9uKCJyZXNvdXJjZXMvcXVvdGEtb3JpZ2luLWNvbnRpbnVl
ZC1kb3dubG9hZC1tdWx0aXBsZS1tYW5pZmVzdHMtMS5odG1sIiwgZnVuY3Rpb24oZXZlbnQpIHsK
ICAgICAgICAgbG9nKGV2ZW50LmRhdGEpOwogICAgICAgICBhZGRTZWNvbmRJRnJhbWUoKTsKICAg
ICB9KTsKIH0KIAogZnVuY3Rpb24gYWRkU2Vjb25kSUZyYW1lKCkgewotICAgIC8vIEV4cGVjdGVk
IHRvIGZhaWwsIHRoZW4gaW5jcmVhc2UgdGhlIHF1b3RhLgotICAgIC8vIE5PVEU6IFdoZW4gdGhp
cyBmYWlscywgdGhlIGV4Y2VlZCBjYWxsYmFjayB3aWxsIGF1dG9tYXRpY2FsbHkgaW5jcmVhc2Ug
aXQgYmFjayB0byB0aGUgZGVmYXVsdCBxdW90YSBzaXplLgotICAgIGFkZElGcmFtZVdpdGhDb250
aW51YXRpb24oInJlc291cmNlcy9xdW90YS1vcmlnaW4taWZyYW1lLTIuaHRtbCIsIGZ1bmN0aW9u
KGV2ZW50KSB7Ci0gICAgICAgIGxvZyhldmVudC5kYXRhKTsKLSAgICAgICAgYWRkVGhpcmRJRnJh
bWUoKTsKLSAgICB9KTsKLX0KLQotZnVuY3Rpb24gYWRkVGhpcmRJRnJhbWUoKSB7Ci0gICAgLy8g
RXhwZWN0ZWQgdG8gc3VjY2VlZC4KLSAgICBhZGRJRnJhbWVXaXRoQ29udGludWF0aW9uKCJyZXNv
dXJjZXMvcXVvdGEtb3JpZ2luLWlmcmFtZS0zLmh0bWwiLCBmdW5jdGlvbihldmVudCkgeworICAg
IC8vIEV4cGVjdGVkIHRvIHN1Y2NlZWQsIGR1ZSB0byBhdXRvbWF0aWNhbGx5IGluY3JlYXNpbmcg
dGhlIHF1b3RhLgorICAgIGFkZElGcmFtZVdpdGhDb250aW51YXRpb24oInJlc291cmNlcy9xdW90
YS1vcmlnaW4tY29udGludWVkLWRvd25sb2FkLW11bHRpcGxlLW1hbmlmZXN0cy0yLmh0bWwiLCBm
dW5jdGlvbihldmVudCkgewogICAgICAgICBsb2coZXZlbnQuZGF0YSk7CiAgICAgICAgIGZpbmlz
aFRlc3QoKTsKICAgICB9KTsKQEAgLTY0LDEzICs1NSwxNyBAQCBmdW5jdGlvbiBhZGRUaGlyZElG
cmFtZSgpIHsKIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHkgb25sb2FkPSJzdGFydFRlc3QoKSI+
Ci08cD5UaGlzIHRlc3QgY2hlY2tzIHRoYXQgcGVyLW9yaWdpbiBhcHBsaWNhdGlvbiBjYWNoZSBx
dW90YXMgYXJlIGVuZm9yY2VkLjwvcD4KKzxwPlRoaXMgdGVzdCBjaGVja3MgdGhhdCBwZXItb3Jp
Z2luIGFwcGxpY2F0aW9uIGNhY2hlIHF1b3RhIHdvcmtzIGNvcnJlY3RseSB3aXRoIG11bHRpcGxl
IG1hbmlmZXN0cy9jYWNoZXMgcGVyLW9yaWdpbi48L3A+CiA8cD4KICAgICBUaGlzIHRlc3Qgc2V0
cyB0aGUgcXVvdGEgZm9yIHRoZSBvcmlnaW4gdG8gMjBrYiwgYW5kIGF0dGVtcHRzIHRvIGZpbGwK
LSAgICBpdCB1cCB3aXRoIDIgaWZyYW1lcyB0aGF0IGFyZSAxM2tiIGVhY2guIFRoZSBhcHBsaWNh
dGlvbiBjYWNoZSBkb3dubG9hZAotICAgIHByb2Nlc3Mgc2hvdWxkIGZhaWwgb24gdGhlIDJuZCBp
ZnJhbWUgYW5kIHRoZSBVSSBEZWxlZ2F0ZSBzaG91bGQgYmUKLSAgICBpbmZvcm1lZCBvZiB0aGUg
ZXhjZWVkZWQgcXVvdGEuIEluY3JlYXNpbmcgdGhlIHNpemUgdG8gNDBrYi4gQSAzcmQKLSAgICBp
ZnJhbWUgaXMgYWRkZWQsIHdoaWNoIHNob3VsZCBzdWNjZWVkLgorICAgIGl0IHVwIHdpdGggMiBk
aWZmZXJlbnQgYXBwbGljYXRpb24gY2FjaGVzIGFib3V0IDE1a2IgZWFjaC4KKworICAgIFRoZSBm
aXJzdCBmcmFtZSB3aWxsIGNhY2hlIHN1Y2Nlc3NmdWxseSBhbmQgZmlsbCB1cCBhYm91dCAxNWti
IG9mCisgICAgdGhlIG9yaWdpbiBxdW90YS4KKworICAgIFRoZSBzZWNvbmQgZnJhbWUgd2lsbCBy
ZWFjaCB0aGUgcXVvdGEsIGNhdXNlIGEgZGVsZWdhdGUgY2FsbGJhY2ssCisgICAgZHVtcCB0aGUg
c3BhY2VOZWVkZWQgKHdoaWNoIHNob3VsZCBiZSBlbm91Z2ggZm9yIGJvdGggaWZyYW1lIGNhY2hl
cyksCisgICAgYW5kIHN1Y2NlZWQgZHVlIHRvIHRoZSBkZWZhdWx0IERSVCBiZWhhdmlvciBvciBy
YWlzaW5nIHRoZSBxdW90YS4KIDwvcD4KIDxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgogPC9ib2R5
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tcXVv
dGEtY29udGludWVkLWRvd25sb2FkLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNh
Y2hlL29yaWdpbi1xdW90YS1jb250aW51ZWQtZG93bmxvYWQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi44MDExOTAyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tcXVvdGEtY29udGludWVkLWRvd25sb2FkLmh0
bWwKQEAgLTAsMCArMSw2MCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisKKy8vIEhlbHBl
cnMuCisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKK30KKworLy8gU3Rh
cnQgYW5kIGVuZC4KKworZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuY2xlYXJB
bGxBcHBsaWNhdGlvbkNhY2hlcygpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXBwbGljYXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzKCk7CisgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLnNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSgxMDI0KTsKKyAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgfQorCisgICAgYWRkSUZyYW1lKCk7Cit9CisK
K2Z1bmN0aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCisv
LyBTdGFnZXMuCisKK2Z1bmN0aW9uIGFkZElGcmFtZVdpdGhDb250aW51YXRpb24oc3JjLCBjb250
aW51YXRpb24pIHsKKyAgICB3aW5kb3cub25tZXNzYWdlID0gY29udGludWF0aW9uOworICAgIHZh
ciBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICBpZnJhbWUu
c3JjID0gc3JjOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lKTsKK30KKwor
ZnVuY3Rpb24gYWRkSUZyYW1lKCkgeworICAgIC8vIEV4cGVjdGVkIHRvIHN1Y2NlZWQuIERlZmF1
bHQgaGFuZGxpbmcgd2lsbCByYWlzZSB0aGUgcXVvdGEgYmFjayB1cCB0byA1TUIgd2hpY2ggaXMg
ZW5vdWdoLgorICAgIGFkZElGcmFtZVdpdGhDb250aW51YXRpb24oInJlc291cmNlcy9xdW90YS1v
cmlnaW4tY29udGludWVkLWRvd25sb2FkLmh0bWwiLCBmdW5jdGlvbihldmVudCkgeworICAgICAg
ICBsb2coZXZlbnQuZGF0YSk7CisgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICB9KTsKK30KKwor
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InN0YXJ0VGVzdCgpIj4KKzxwPlRoaXMg
dGVzdCBjaGVja3MgdGhhdCBwZXItb3JpZ2luIGFwcGxpY2F0aW9uIGNhY2hlIHF1b3RhIGRvbid0
IHJlcXVpcmUgYSByZWZyZXNoIHRvIGNvbXBsZXRlIHN1Y2Nlc3NmdWxseS48L3A+Cis8cD4KKyAg
ICBUaGlzIHRlc3Qgc2V0cyB0aGUgcXVvdGEgZm9yIHRoZSBvcmlnaW4gdG8gMWtiLCBhbmQgYXR0
ZW1wdHMgdG8gZmlsbAorICAgIGl0IHVwIHdpdGggbW9yZSB0aGFuIDFrYiBvZiBkYXRhLiBUaGUg
ZG93bmxvYWQgc2hvdWxkIGNvbXBsZXRlCisgICAgc3VjY2Vzc2Z1bGx5LCB3aXRoIHRoZSBxdW90
YSBiZWluZyBpbmNyZWFzZWQgdG8gdGhlIGRlZmF1bHQgb2YgNU1CLiBUaGUKKyAgICBkZWxlZ2F0
ZSBzaG91bGQgYmUgaW5mb3JtZWQgZm9yIHRoZSBleGNlZWRlZCBxdW90YSwgaW5jcmVhc2UgaXQg
dG8gYSBzaXplCisgICAgbGFyZ2UgZW5vdWdoLCBhbmQgdGhlIGRvd25sb2FkIHN1Y2NlZWQuCis8
L3A+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLXF1b3RhLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLXF1b3RhLWV4cGVj
dGVkLnR4dAppbmRleCBmYzEzMmMwLi43MWU5MTZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90YS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tcXVvdGEtZXhwZWN0ZWQudHh0CkBAIC0x
LDQgKzEsNCBAQAotVUkgREVMRUdBVEUgQVBQTElDQVRJT04gQ0FDSEUgQ0FMTEJBQ0s6IGV4Y2Vl
ZGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhRm9yU2VjdXJpdHlPcmlnaW46e2h0dHAsIDEy
Ny4wLjAuMSwgODAwMH0KK1VJIERFTEVHQVRFIEFQUExJQ0FUSU9OIENBQ0hFIENBTExCQUNLOiBl
eGNlZWRlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YUZvclNlY3VyaXR5T3JpZ2luOntodHRw
LCAxMjcuMC4wLjEsIDgwMDB9IHNwYWNlTmVlZGVkOjMxMTYxCiBDT05TT0xFIE1FU1NBR0U6IGxp
bmUgMDogQXBwbGljYXRpb24gQ2FjaGUgdXBkYXRlIGZhaWxlZCwgYmVjYXVzZSBzaXplIHF1b3Rh
IHdhcyBleGNlZWRlZC4KIFRoaXMgdGVzdCBjaGVja3MgdGhhdCBwZXItb3JpZ2luIGFwcGxpY2F0
aW9uIGNhY2hlIHF1b3RhcyBhcmUgZW5mb3JjZWQuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLXF1b3RhLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90YS5odG1sCmluZGV4IGE3MzIyZmQuLmYwMDkwMGUg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLXF1b3Rh
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tcXVvdGEu
aHRtbApAQCAtMTQsNiArMTQsNyBAQCBmdW5jdGlvbiBzdGFydFRlc3QoKSB7CiAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewogICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5jbGVhckFsbEFwcGxpY2F0aW9uQ2FjaGVzKCk7CiAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3MoKTsKKyAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZGlzYWxsb3dJbmNyZWFzZUZvckFwcGxpY2F0aW9uQ2FjaGVRdW90
YSgpOwogICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRBcHBsaWNhdGlvbkNhY2hlT3Jp
Z2luUXVvdGEoMjAqMTAyNCk7CiAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwpAQCAt
NDYsOSArNDcsOSBAQCBmdW5jdGlvbiBhZGRGaXJzdElGcmFtZSgpIHsKIAogZnVuY3Rpb24gYWRk
U2Vjb25kSUZyYW1lKCkgewogICAgIC8vIEV4cGVjdGVkIHRvIGZhaWwsIHRoZW4gaW5jcmVhc2Ug
dGhlIHF1b3RhLgotICAgIC8vIE5PVEU6IFdoZW4gdGhpcyBmYWlscywgdGhlIGV4Y2VlZCBjYWxs
YmFjayB3aWxsIGF1dG9tYXRpY2FsbHkgaW5jcmVhc2UgaXQgYmFjayB0byB0aGUgZGVmYXVsdCBx
dW90YSBzaXplLgogICAgIGFkZElGcmFtZVdpdGhDb250aW51YXRpb24oInJlc291cmNlcy9xdW90
YS1vcmlnaW4taWZyYW1lLTIuaHRtbCIsIGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgIGxvZyhl
dmVudC5kYXRhKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0QXBwbGljYXRpb25D
YWNoZU9yaWdpblF1b3RhKDEwMCoxMDI0KTsKICAgICAgICAgYWRkVGhpcmRJRnJhbWUoKTsKICAg
ICB9KTsKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVz
b3VyY2VzL3F1b3RhLW9yaWdpbi1jb250aW51ZWQtZG93bmxvYWQtbXVsdGlwbGUtbWFuaWZlc3Rz
LTEuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL3F1b3Rh
LW9yaWdpbi1jb250aW51ZWQtZG93bmxvYWQtbXVsdGlwbGUtbWFuaWZlc3RzLTEuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjk2YmQyCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvcXVvdGEtb3JpZ2lu
LWNvbnRpbnVlZC1kb3dubG9hZC1tdWx0aXBsZS1tYW5pZmVzdHMtMS5odG1sCkBAIC0wLDAgKzEs
OSBAQAorPGh0bWwgbWFuaWZlc3Q9InF1b3RhLW9yaWdpbi1jb250aW51ZWQtZG93bmxvYWQtbXVs
dGlwbGUtbWFuaWZlc3RzLTEubWFuaWZlc3QiPgorPHNjcmlwdD4KKy8vIFRoaXMgaXMgZXhwZWN0
ZWQgdG8gc3VjY2VlZC4KK2FwcGxpY2F0aW9uQ2FjaGUub25jYWNoZWQgPSBmdW5jdGlvbigpIHsg
cGFyZW50LnBvc3RNZXNzYWdlKCJQQVNTIC0gY2FjaGVkIGlmcmFtZSIsICIqIik7IH07CithcHBs
aWNhdGlvbkNhY2hlLm9uZXJyb3IgPSBmdW5jdGlvbigpIHsgcGFyZW50LnBvc3RNZXNzYWdlKCJG
QUlMIC0gZXJyb3IgY2FjaGluZyBpZnJhbWUsIGV4cGVjdGVkIHRoaXMgdG8gc3VjY2VlZCBieSBm
aXR0aW5nIGluIHRoZSBxdW90YSIsICIqIik7IH07CithcHBsaWNhdGlvbkNhY2hlLm9udXBkYXRl
cmVhZHkgPSBmdW5jdGlvbigpIHsgcGFyZW50LnBvc3RNZXNzYWdlKCJGQUlMIC0gdXBkYXRlIHJl
YWR5LCBhbGwgY2FjaGVzIHNob3VsZCBoYXZlIGJlZW4gZGVsZXRlZCBiZWZvcmUgdGhpcyB0ZXN0
IiwgIioiKTsgfTsKK2FwcGxpY2F0aW9uQ2FjaGUub25ub3VwZGF0ZSA9IGZ1bmN0aW9uKCkgeyBw
YXJlbnQucG9zdE1lc3NhZ2UoIkZBSUwgLSBubyB1cGRhdGUgaWZyYW1lLCBhbGwgY2FjaGVzIHNo
b3VsZCBoYXZlIGJlZW4gZGVsZXRlZCBiZWZvcmUgdGhpcyB0ZXN0IiwgIioiKTsgfTsKKzwvc2Ny
aXB0PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNo
ZS9yZXNvdXJjZXMvcXVvdGEtb3JpZ2luLWNvbnRpbnVlZC1kb3dubG9hZC1tdWx0aXBsZS1tYW5p
ZmVzdHMtMS5tYW5pZmVzdCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3Vy
Y2VzL3F1b3RhLW9yaWdpbi1jb250aW51ZWQtZG93bmxvYWQtbXVsdGlwbGUtbWFuaWZlc3RzLTEu
bWFuaWZlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWNmZmVlZgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2Vz
L3F1b3RhLW9yaWdpbi1jb250aW51ZWQtZG93bmxvYWQtbXVsdGlwbGUtbWFuaWZlc3RzLTEubWFu
aWZlc3QKQEAgLTAsMCArMSw2IEBACitDQUNIRSBNQU5JRkVTVAorCisjIFRoaXMgc2hvdWxkIHN1
Y2NlZWQuIFRoaXMgaXMgfjE1a2IgYW5kIHRoZSBxdW90YSBzaG91bGQgYmUgMjBrYi4KKworQ0FD
SEU6CithYmUucG5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hl
L3Jlc291cmNlcy9xdW90YS1vcmlnaW4tY29udGludWVkLWRvd25sb2FkLW11bHRpcGxlLW1hbmlm
ZXN0cy0yLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9x
dW90YS1vcmlnaW4tY29udGludWVkLWRvd25sb2FkLW11bHRpcGxlLW1hbmlmZXN0cy0yLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDdmNjBhYwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL3F1b3RhLW9y
aWdpbi1jb250aW51ZWQtZG93bmxvYWQtbXVsdGlwbGUtbWFuaWZlc3RzLTIuaHRtbApAQCAtMCww
ICsxLDkgQEAKKzxodG1sIG1hbmlmZXN0PSJxdW90YS1vcmlnaW4tY29udGludWVkLWRvd25sb2Fk
LW11bHRpcGxlLW1hbmlmZXN0cy0yLm1hbmlmZXN0Ij4KKzxzY3JpcHQ+CisvLyBUaGlzIGlzIGV4
cGVjdGVkIHRvIGZhaWwgd2l0aCAic3BhY2VOZWVkZWQiIGxhcmdlIGVub3VnaCBmb3IgYm90aCBt
YW5pZmVzdCAxIGFuZCAyLgorYXBwbGljYXRpb25DYWNoZS5vbmNhY2hlZCA9IGZ1bmN0aW9uKCkg
eyBwYXJlbnQucG9zdE1lc3NhZ2UoIlBBU1MgLSBjYWNoZWQgaWZyYW1lIiwgIioiKTsgfTsKK2Fw
cGxpY2F0aW9uQ2FjaGUub25lcnJvciA9IGZ1bmN0aW9uKCkgeyBwYXJlbnQucG9zdE1lc3NhZ2Uo
IkZBSUwgLSBlcnJvciBjYWNoaW5nIGlmcmFtZSwgZXhwZWN0ZWQgdGhpcyB0byBzdWNjZWVkIGJ5
IGZpdHRpbmcgaW4gdGhlIHF1b3RhIiwgIioiKTsgfTsKK2FwcGxpY2F0aW9uQ2FjaGUub251cGRh
dGVyZWFkeSA9IGZ1bmN0aW9uKCkgeyBwYXJlbnQucG9zdE1lc3NhZ2UoIkZBSUwgLSB1cGRhdGUg
cmVhZHksIGFsbCBjYWNoZXMgc2hvdWxkIGhhdmUgYmVlbiBkZWxldGVkIGJlZm9yZSB0aGlzIHRl
c3QiLCAiKiIpOyB9OworYXBwbGljYXRpb25DYWNoZS5vbm5vdXBkYXRlID0gZnVuY3Rpb24oKSB7
IHBhcmVudC5wb3N0TWVzc2FnZSgiRkFJTCAtIG5vIHVwZGF0ZSBpZnJhbWUsIGFsbCBjYWNoZXMg
c2hvdWxkIGhhdmUgYmVlbiBkZWxldGVkIGJlZm9yZSB0aGlzIHRlc3QiLCAiKiIpOyB9OworPC9z
Y3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNh
Y2hlL3Jlc291cmNlcy9xdW90YS1vcmlnaW4tY29udGludWVkLWRvd25sb2FkLW11bHRpcGxlLW1h
bmlmZXN0cy0yLm1hbmlmZXN0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNv
dXJjZXMvcXVvdGEtb3JpZ2luLWNvbnRpbnVlZC1kb3dubG9hZC1tdWx0aXBsZS1tYW5pZmVzdHMt
Mi5tYW5pZmVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTFjZThmCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJj
ZXMvcXVvdGEtb3JpZ2luLWNvbnRpbnVlZC1kb3dubG9hZC1tdWx0aXBsZS1tYW5pZmVzdHMtMi5t
YW5pZmVzdApAQCAtMCwwICsxLDEwIEBACitDQUNIRSBNQU5JRkVTVAorCisjIFRoaXMgc2hvdWxk
IHN1Y2NlZWQuIFRoaXMgaXMgYW5vdGhlciB+MTVrYiBhbmQgdGhlIHF1b3RhIHNob3VsZCBiZSAy
MGtiCisjIGFuZCBhdXRvbWF0aWNhbGx5IGJlIGluY3JlYXNlZC4KKworIyBUaGlzIHNob3VsZCB0
cmlnZ2VyIGEgZGVsZWdhdGUgY2FsbGJhY2sgYW5kIHRoZSBzcGFjZU5lZWRlZCBzaG91bGQgYmUK
KyMgbGFyZ2UgZW5vdWdoIGZvciBib3RoIGNhY2hlcy4KKworQ0FDSEU6CithYmUucG5nCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9xdW90YS1v
cmlnaW4tY29udGludWVkLWRvd25sb2FkLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Fw
cGNhY2hlL3Jlc291cmNlcy9xdW90YS1vcmlnaW4tY29udGludWVkLWRvd25sb2FkLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGU0NGRmYgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL3F1b3RhLW9yaWdp
bi1jb250aW51ZWQtZG93bmxvYWQuaHRtbApAQCAtMCwwICsxLDkgQEAKKzxodG1sIG1hbmlmZXN0
PSJxdW90YS1vcmlnaW4tY29udGludWVkLWRvd25sb2FkLm1hbmlmZXN0Ij4KKzxzY3JpcHQ+Cisv
LyBUaGlzIGlzIGV4cGVjdGVkIHRvIHN1Y2NlZWQgd2hlbiB0aGUgcXVvdGEgaXMgcmVhY2hlZCwg
ZG93bmxvYWQgY29tcGxldGVzLCB0aGUgdXNlciBpcyBwcm9tcHRlZCwgYW5kIHRoZXkgaW5jcmVh
c2Ugc3RvcmFnZS4KK2FwcGxpY2F0aW9uQ2FjaGUub25jYWNoZWQgPSBmdW5jdGlvbigpIHsgcGFy
ZW50LnBvc3RNZXNzYWdlKCJQQVNTIC0gY2FjaGVkIGlmcmFtZSIsICIqIik7IH07CithcHBsaWNh
dGlvbkNhY2hlLm9uZXJyb3IgPSBmdW5jdGlvbigpIHsgcGFyZW50LnBvc3RNZXNzYWdlKCJGQUlM
IC0gZXJyb3IgY2FjaGluZyBpZnJhbWUsIGV4cGVjdGVkIHRoaXMgdG8gc3VjY2VlZCB3aXRoIHRo
ZSBxdW90YSBpbmNyZWFzZWQgYXV0b21hdGljYWxseSIsICIqIik7IH07CithcHBsaWNhdGlvbkNh
Y2hlLm9udXBkYXRlcmVhZHkgPSBmdW5jdGlvbigpIHsgcGFyZW50LnBvc3RNZXNzYWdlKCJGQUlM
IC0gdXBkYXRlIHJlYWR5LCBhbGwgY2FjaGVzIHNob3VsZCBoYXZlIGJlZW4gZGVsZXRlZCBiZWZv
cmUgdGhpcyB0ZXN0IiwgIioiKTsgfTsKK2FwcGxpY2F0aW9uQ2FjaGUub25ub3VwZGF0ZSA9IGZ1
bmN0aW9uKCkgeyBwYXJlbnQucG9zdE1lc3NhZ2UoIkZBSUwgLSBubyB1cGRhdGUgaWZyYW1lLCBh
bGwgY2FjaGVzIHNob3VsZCBoYXZlIGJlZW4gZGVsZXRlZCBiZWZvcmUgdGhpcyB0ZXN0IiwgIioi
KTsgfTsKKzwvc2NyaXB0PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvcXVvdGEtb3JpZ2luLWNvbnRpbnVlZC1kb3dubG9hZC5t
YW5pZmVzdCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL3F1b3Rh
LW9yaWdpbi1jb250aW51ZWQtZG93bmxvYWQubWFuaWZlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMjAyYWNlMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL3F1b3RhLW9yaWdpbi1jb250aW51ZWQtZG93bmxv
YWQubWFuaWZlc3QKQEAgLTAsMCArMSw4IEBACitDQUNIRSBNQU5JRkVTVAorCisjIFRoaXMgc2hv
dWxkIHN1Y2NlZWQuIFRoZSBxdW90YSB3aWxsIGJlIHJlYWNoZWQsIGJ1dCB0aGUgZGVsZWdhdGUK
KyMgd2lsbCBmaXJlIGF0IHRoZSBlbmQsIGFsbG93aW5nIGFuIGluY3JlYXNlLCBhbmQgdGhlbiBz
dWNjZXNzZnVsbHkKKyMgY2FjaGUgd2l0aCB0aGUgbmV3IHF1b3RhLgorCitDQUNIRToKK2FiZS5w
bmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2Vz
L3F1b3RhLW9yaWdpbi1pZnJhbWUtMy5tYW5pZmVzdCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
YXBwY2FjaGUvcmVzb3VyY2VzL3F1b3RhLW9yaWdpbi1pZnJhbWUtMy5tYW5pZmVzdAppbmRleCBi
YzI5ODY3Li5hN2UyZDNhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNh
Y2hlL3Jlc291cmNlcy9xdW90YS1vcmlnaW4taWZyYW1lLTMubWFuaWZlc3QKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvcXVvdGEtb3JpZ2luLWlmcmFtZS0z
Lm1hbmlmZXN0CkBAIC0xLDYgKzEsNiBAQAogQ0FDSEUgTUFOSUZFU1QKIAotIyBpZnJhbWUtMyBz
aG91bGQgc3VjY2VlZC4gVGhlIG9yaWdpbiBxdW90YSBzaHVsZCBoYXZlIGJlZW4KKyMgaWZyYW1l
LTMgc2hvdWxkIHN1Y2NlZWQuIFRoZSBvcmlnaW4gcXVvdGEgc2hvdWxkIGhhdmUgYmVlbgogIyBy
YWlzZWQgdG8gNDBrYiwgd2l0aCB+MTNrYiBhbHJlYWR5IGNhY2hlZC4gQ2FjaGluZyBhYmUucG5n
CiAjIGFuZCB0aGlzIG1hbmlmZXN0IHdpbGwgYmUgfjEza2IsIGJyaW5naW5nIHVzIHVwIHRvIDI2
a2IuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhw
ZWN0YXRpb25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0
YXRpb25zLnR4dAppbmRleCA3MDJkMDBkLi41NTk2ODkyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC0yMjEwLDggKzIy
MTAsMTAgQEAgQlVHQ1I0OTk3MCA6IHBsYXRmb3JtL2Nocm9taXVtL3BsdWdpbnMvY2FsbC1hcy1m
dW5jdGlvbi5odG1sID0gUEFTUyBURVhUCiAvLyBGbGFreSBzaW5jZSBXZWJLaXQgcjYzOTk0CiBC
VUdXSzQyOTY0IFdJTiBMSU5VWCA6IHRhYmxlcy9tb3ppbGxhX2V4cGVjdGVkX2ZhaWx1cmVzL2J1
Z3MvYnVnODkzMTUuaHRtbCA9IFBBU1MgRkFJTAogCi0vLyBBcHBsaWNhdGlvbiBDYWNoZSBRdW90
YXMKLUJVR1dLNDM0NTkgOiBodHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90YS5odG1sID0g
VEVYVCBNSVNTSU5HCisvLyBBcHBsaWNhdGlvbiBDYWNoZSBRdW90YXMgYXJlIE4vQSB0byB0aGUg
Y2hyb21pdW0gcG9ydC4KK0JVR1dLNDM0NTkgV09OVEZJWDogaHR0cC90ZXN0cy9hcHBjYWNoZS9v
cmlnaW4tcXVvdGEuaHRtbCA9IFRFWFQgTUlTU0lORworQlVHV0s0MzQ1OSBXT05URklYOiBodHRw
L3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90YS1jb250aW51ZWQtZG93bmxvYWQuaHRtbCA9IFRF
WFQgTUlTU0lORworQlVHV0s0MzQ1OSBXT05URklYOiBodHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdp
bi1xdW90YS1jb250aW51ZWQtZG93bmxvYWQtbXVsdGlwbGUtbWFuaWZlc3RzLmh0bWwgPSBURVhU
IE1JU1NJTkcKIAogLy8gTmVlZCB0byBzdXBwb3J0IERldmljZU1vdGlvbi4KIEJVR0NSNTE0MTYg
OiBmYXN0L2RvbS9EZXZpY2VNb3Rpb24vd2luZG93LXByb3BlcnR5Lmh0bWwgPSBURVhUCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9Ta2lwcGVkCmluZGV4IDIzOWVkODQuLjA3YjRhMmMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9Ta2lwcGVkCkBAIC01ODQsNiArNTg0LDggQEAgZmFzdC9qcy9pMThuLWJpbmRpbmdzLWxv
Y2FsZS5odG1sCiBodHRwL3Rlc3RzL2FwcGNhY2hlL2NyYXNoLXdoZW4tbmF2aWdhdGluZy1hd2F5
LXRoZW4tYmFjay5odG1sCiBodHRwL3Rlc3RzL2FwcGNhY2hlL2ZhbGxiYWNrLmh0bWwKIGh0dHAv
dGVzdHMvYXBwY2FjaGUvb3JpZ2luLXF1b3RhLmh0bWwKK2h0dHAvdGVzdHMvYXBwY2FjaGUvb3Jp
Z2luLXF1b3RhLWNvbnRpbnVlZC1kb3dubG9hZC5odG1sCitodHRwL3Rlc3RzL2FwcGNhY2hlL29y
aWdpbi1xdW90YS1jb250aW51ZWQtZG93bmxvYWQtbXVsdGlwbGUtbWFuaWZlc3RzLmh0bWwKIGh0
dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLWRlbGV0ZS5odG1sCiBodHRwL3Rlc3RzL2FwcGNhY2hl
L29yaWdpbnMtd2l0aC1hcHBjYWNoZS5odG1sCiAjIExheW91dFRlc3RDb250cm9sbGVyOjphcHBs
aWNhdGlvbkNhY2hlRGlza1VzYWdlRm9yT3JpZ2luIGlzbid0IGltcGxlbWVudGVkIC0gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3MTI3CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tp
cHBlZAppbmRleCA5OWNmYTliLi5iMjAxM2YyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9xdC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKQEAg
LTI5LDcgKzI5LDYgQEAKICMgLSBmYWlsaW5nIGVkaXRpbmcvaW5wdXQgdGVzdHMKICMgLSBGYWls
aW5nIFNWRyB0ZXN0cwogIyAtIGZhaWxpbmcgYW5pbWF0aW9ucyB0ZXN0cwotIyAtIGZhaWxpbmcg
YXBwbGljYXRpb24gY2FjaGUgcXVvdGEgdGVzdHMKICMgLSBGYWlsaW5nIENTUyBUZXN0cwogIyAt
IEZhaWxpbmcgZG9tL3hodG1sIHRlc3RzCiAjIC0gRmFpbGluZyBlZGl0aW5nL2RlbGV0aW5nIHRl
c3RzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCmluZGV4IGVjYmM5YmQuLjU1YzgyNjYgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3dpbi9Ta2lwcGVkCkBAIC0xMTUyLDYgKzExNTIsOCBAQCBwZXJmLwogIyBBcHBs
aWNhdGlvbiBDYWNoZSBRdW90YXMKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQzNDU4CiBodHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90YS5odG1sCitodHRw
L3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90YS1jb250aW51ZWQtZG93bmxvYWQuaHRtbAoraHR0
cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tcXVvdGEtY29udGludWVkLWRvd25sb2FkLW11bHRpcGxl
LW1hbmlmZXN0cy5odG1sCiAKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQzMzMyCiBpbnNwZWN0b3IvZGVidWdnZXIvZG9tLWJyZWFrcG9pbnRzLmh0bWwKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vd2syL1NraXBwZWQKaW5kZXggNjNhNjc5Mi4uMmVlMGE3ZSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2syL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2syL1NraXBwZWQKQEAgLTE2NDYsNiArMTY0Niw4IEBAIGh0dHAvdGVzdHMvYXBwY2FjaGUvdXBk
YXRlLWNhY2hlLmh0bWwKICMgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyBsYXlvdXRUZXN0Q29udHJv
bGxlci5jbGVhckFsbEFwcGxpY2F0aW9uQ2FjaGVzCiBodHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdp
bi1kZWxldGUuaHRtbAogaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tcXVvdGEuaHRtbAoraHR0
cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tcXVvdGEtY29udGludWVkLWRvd25sb2FkLmh0bWwKK2h0
dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLXF1b3RhLWNvbnRpbnVlZC1kb3dubG9hZC1tdWx0aXBs
ZS1tYW5pZmVzdHMuaHRtbAogaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW5zLXdpdGgtYXBwY2Fj
aGUuaHRtbAogCiAjIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgbGF5b3V0VGVzdENvbnRyb2xsZXIu
Y2FsbFNob3VsZENsb3NlT25XZWJWaWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDQzNTMwOS4uZjUxMWE3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDExLTA3LTA4ICBKb3NlcGggUGVjb3Jhcm8g
IDxqb2VwZWNrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQXBwbGljYXRpb25DYWNoZSB1cGRhdGUg
c2hvdWxkIG5vdCBpbW1lZGlhdGVseSBmYWlsIHdoZW4gcmVhY2hpbmcgcGVyLW9yaWdpbiBxdW90
YQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQxNzcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZXcgYmVo
YXZpb3Igb2YgaGFuZGxpbmcgQXBwbGljYXRpb25DYWNoZSBwZXItb3JpZ2luIHF1b3Rhcy4gUHJl
dmlvdXNseSwKKyAgICAgICAgaWYgdGhlIHF1b3RhIHdhcyByZWFjaGVkIHdoaWxlIGRvd25sb2Fk
aW5nIHdlIHdvdWxkIGZhaWwgdGhlIGRvd25sb2FkCisgICAgICAgIGFuZCB0aGVuIHByb21wdCB0
aGUgdXNlciBmb3IgYSBzdG9yYWdlIGluY3JlYXNlLiBUaGlzIHJlcXVpcmVkIGEgcmVmcmVzaCwK
KyAgICAgICAgYSByZWRvd25sb2FkIG9mIHJlc291cmNlcywgYW5kIHRoZSB0b3RhbCBzdG9yYWdl
IHdhcyBub3Qga25vd24gc28gdGhlCisgICAgICAgIHByb2Nlc3MgY291bGQgYmUgcmVwZWF0ZWQg
bXVsdGlwbGUgdGltZXMgYmVmb3JlIGFuIGFjY2VwdGFibGUgcXVvdGEKKyAgICAgICAgd2FzIGZv
dW5kIG9yIHRoZSB1c2VyIGRpc2FsbG93ZWQgYW4gaW5jcmVhc2UuCisgICAgICAgIAorICAgICAg
ICBUaGUgbmV3IGJlaGF2aW9yIGlzIHRvIGNvbXBsZXRlIHRoZSBkb3dubG9hZCBvZiB0aGUgZW50
aXJlIGFwcGNhY2hlLgorICAgICAgICBXaGVuIHRoZSBjYWNoZSBjb21wbGV0ZXMgZG93bmxvYWRp
bmcgYW5kIGl0IGlzIGdyZWF0ZXIgdGhhbiB0aGUgb3JpZ2luCisgICAgICAgIHF1b3RhLCBwcm9t
cHQgdGhlIHVzZXIgdG8gYWxsb3cgYSBxdW90YSBpbmNyZWFzZSB3aXRoIHRoZSBrbm93biBzcGFj
ZQorICAgICAgICBuZWVkZWQuIElmIHRoZSBxdW90YSBpcyBpbmNyZWFzZWQsIHRoZSBjYWNoZSB3
aWxsIHN1Y2NlZWQsIG90aGVyd2lzZQorICAgICAgICBpdCB3aWxsIGZhaWwgd2l0aCB0aGUgbm9y
bWFsIGZhaWx1cmUgc3RlcHMuCisKKyAgICAgICAgQW4gYWx0ZXJuYXRpdmUgYmVoYXZpb3IgaXMg
cHJvbXB0aW5nIHdoaWxlIGRvd25sb2FkaW5nIGltbWVkaWF0ZWx5CisgICAgICAgIHdoZW4gdGhl
IG9yaWdpbiBxdW90YSBpcyByZWFjaGVkLCBob3dldmVyIGF0IHRoYXQgcG9pbnQgdGhlIGVudGly
ZQorICAgICAgICBzcGFjZSBuZWVkZWQgaXMgdW5rbm93biBhbmQgc28gcXVvdGEgaW5jcmVhc2Vz
IG1pZ2h0IG5vdCBiZSBlbm91Z2gKKyAgICAgICAgYW5kIGNvdWxkIHJlc3VsdCBpbiBtdWx0aXBs
ZSBwcm9tcHRzIHRvIHRoZSB1c2VyLgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL2FwcGNh
Y2hlL29yaWdpbi1xdW90YS1jb250aW51ZWQtZG93bmxvYWQtbXVsdGlwbGUtbWFuaWZlc3RzLmh0
bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLXF1b3RhLWNvbnRp
bnVlZC1kb3dubG9hZC5odG1sCisKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUdyb3VwLmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVHcm91cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OkFw
cGxpY2F0aW9uQ2FjaGVHcm91cCk6CisgICAgICAgIFJlbmFtZSBpbnN0YW5jZSB2YXJpYWJsZSB0
byBiZSBtb3JlIGNsZWFyIG9uIGl0cyBpbnRlbnQuCisKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIENoZWNrIHRoZSBx
dW90YSBsaW1pdCB3aGlsZSBkb3dubG9hZGluZyBzbyB3ZSBjYW4gZmFpbCBlYXJseQorICAgICAg
ICBpZiB0aGUgdXNlciBhbHJlYWR5IGRlbmllZCBhIHF1b3RhIGluY3JlYXNlLgorCisgICAgICAg
IChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZFJlYWNoT3JpZ2luUXVvdGEpOgor
ICAgICAgICBQYXNzIHRoZSBzcGFjZSBuZWVkZWQgaW5mb3JtYXRpb24gdG8gdGhlIGNocm9tZSBj
bGllbnQuCisKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2FjaGVV
cGRhdGVGYWlsZWREdWVUb09yaWdpblF1b3RhKToKKyAgICAgICAgQ29udmVydCB0aGlzIHRvIHVw
ZGF0ZSBzdGF0ZSBhbmQgY29uc29sZSBsb2cgd2hlbiB0aGUKKyAgICAgICAgcGVyLW9yaWdpbiBx
dW90YSBpcyByZWFjaGVkLiBUaGlzIGFsbG93cyB1cyB0byBmb2xsb3cKKyAgICAgICAgdGhlIG5v
cm1hbCBmYWlsdXJlIHN0ZXBzIGlmIHRoZSBxdW90YSBpcyByZWFjaGVkIGF0CisgICAgICAgIHRo
ZSBlbmQgb2YgYSBkb3dubG9hZCwgYW5kIHRoZSBhbHRlcm5hdGl2ZSBzaG9ydCBwYXRoCisgICAg
ICAgIHdoZW4gd2UgZmFpbCBkdXJpbmcgYSBkb3dubG9hZGluZy4KKworICAgICAgICAoV2ViQ29y
ZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpyZWNhbGN1bGF0ZUF2YWlsYWJsZVNwYWNlSW5RdW90
YSk6CisgICAgICAgIEV4dHJhY3QgdG8gYSBoZWxwZXIgZnVuY3Rpb24uCisKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2hlY2tJZkxvYWRJc0NvbXBsZXRlKToKKyAg
ICAgICAgQWxsb3cgZm9yIGEgcXVvdGEgaW5jcmVhc2UgYXQgdGhlIGVuZCBvZiB0aGUgZG93bmxv
YWQgbm93IHRoYXQKKyAgICAgICAgd2Uga25vdyB0aGUgc3BhY2UgbmVlZGVkLiBUaGVuIHByb2Nl
ZWQgdG8gZmFpbCBvciBzdWNjZWVkCisgICAgICAgIGFzIHdlIG5vcm1hbGx5IHdvdWxkLgorCisg
ICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg6CisgICAg
ICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjaGVja09yaWdpblF1b3RhKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZU5ld2VzdENh
Y2hlKToKKyAgICAgICAgRXh0cmFjdCBjaGVja2luZyB0aGUgb3JpZ2luIHF1b3RhIGZvciB3aGVu
IGFuIEFwcGxpY2F0aW9uQ2FjaGVHcm91cAorICAgICAgICB3aWxsIGJlIHJlcGxhY2luZyBhbiBB
cHBsaWNhdGlvbkNhY2hlR3JvdXAgaW50byBhIGhlbHBlciBmdW5jdGlvbi4KKyAgICAgICAgVGhl
IGhlbHBlciBhbHNvIHByb3ZpZGVzIGFuIG91dCBwYXJhbWV0ZXIgZm9yIHRoZSBzcGFjZSBuZWVk
ZWQKKyAgICAgICAgdG8gcHJvcGVybHkgZml0IHRoZSBuZXcgY2FjaGUgZ3JvdXAgaWYgaXQgd291
bGRuJ3QgZml0LgorCisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBs
b2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUNocm9tZUNsaWVu
dDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSk6CisgICAgICAgIEFkZCBhIHNw
YWNlIG5lZWRlZCBwYXJhbWV0ZXIgd2hlbiByZWFjaGluZyB0aGUgcGVyLW9yaWdpbiBxdW90YS4K
KwogMjAxMS0wNy0wNyAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5oCmluZGV4IDNmZjI1OGIuLjU1NGI1YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1w
dHlDbGllbnRzLmgKQEAgLTE4NSw3ICsxODUsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoT0ZG
TElORV9XRUJfQVBQTElDQVRJT05TKQogICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkTWF4QXBwQ2Fj
aGVTaXplKGludDY0X3QpIHsgfQotICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBwbGljYXRpb25D
YWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKikgeyB9CisgICAgdmlydHVhbCB2b2lkIHJl
YWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4qLCBpbnQ2NF90
KSB7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3Bw
CmluZGV4IDY0ZjdiNjguLmU1M2U3MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC03Miw3ICs3Miw3
IEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6QXBwbGljYXRpb25DYWNoZUdyb3VwKGNvbnN0IEtV
UkwmIG1hbmlmZXN0VVJMLCBib29sIGlzQ29wCiAgICAgLCBtX2NhbGxlZFJlYWNoZWRNYXhBcHBD
YWNoZVNpemUoZmFsc2UpCiAgICAgLCBtX2xvYWRlZFNpemUoMCkKICAgICAsIG1fYXZhaWxhYmxl
U3BhY2VJblF1b3RhKEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjp1bmtub3duUXVvdGEoKSkKLSAg
ICAsIG1fb3JpZ2luUXVvdGFSZWFjaGVkKGZhbHNlKQorICAgICwgbV9vcmlnaW5RdW90YVJlYWNo
ZWRQcmV2aW91c2x5KGZhbHNlKQogewogfQogCkBAIC02MDAsMTcgKzYwMCwxOSBAQCB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSogaGFu
ZGxlLCBkb3VibGUgZmluaQogCiAgICAgLy8gQWZ0ZXIgZmluaXNoaW5nIHRoZSBsb2FkaW5nIG9m
IGFueSByZXNvdXJjZSwgd2UgY2hlY2sgaWYgaXQgd2lsbAogICAgIC8vIGZpdCBpbiBvdXIgbGFz
dCBrbm93biBxdW90YSBsaW1pdC4KLSAgICBpZiAobV9hdmFpbGFibGVTcGFjZUluUXVvdGEgPT0g
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnVua25vd25RdW90YSgpKSB7Ci0gICAgICAgIC8vIEZh
aWxlZCB0byBkZXRlcm1pbmUgd2hhdCBpcyBsZWZ0IGluIHRoZSBxdW90YS4gRmFsbGJhY2sgdG8g
YWxsb3dpbmcgYW55dGhpbmcuCi0gICAgICAgIGlmICghY2FjaGVTdG9yYWdlKCkucmVtYWluaW5n
U2l6ZUZvck9yaWdpbkV4Y2x1ZGluZ0NhY2hlKG1fb3JpZ2luLmdldCgpLCBtX25ld2VzdENhY2hl
LmdldCgpLCBtX2F2YWlsYWJsZVNwYWNlSW5RdW90YSkpCi0gICAgICAgICAgICBtX2F2YWlsYWJs
ZVNwYWNlSW5RdW90YSA9IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpub1F1b3RhKCk7Ci0gICAg
fQorICAgIGlmIChtX2F2YWlsYWJsZVNwYWNlSW5RdW90YSA9PSBBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTo6dW5rbm93blF1b3RhKCkpCisgICAgICAgIHJlY2FsY3VsYXRlQXZhaWxhYmxlU3BhY2VJ
blF1b3RhKCk7CiAKLSAgICAvLyBDaGVjayBlYWNoIHJlc291cmNlLCBhcyBpdCBsb2FkcywgdG8g
c2VlIGlmIGl0IHdvdWxkIGZpdCBpbiBvdXIKLSAgICAvLyBpZGVhIG9mIHRoZSBhdmFpbGFibGUg
cXVvdGEgc3BhY2UuCi0gICAgaWYgKG1fYXZhaWxhYmxlU3BhY2VJblF1b3RhIDwgbV9sb2FkZWRT
aXplKSB7CisgICAgLy8gV2hpbGUgZG93bmxvYWRpbmcgY2hlY2sgdG8gc2VlIGlmIHdlIGhhdmUg
ZXhjZWVkZWQgdGhlIGF2YWlsYWJsZSBxdW90YS4KKyAgICAvLyBXZSBjYW4gc3RvcCBpbW1lZGlh
dGVseSBpZiB3ZSBoYXZlIGFscmVhZHkgcHJldmlvdXNseSBmYWlsZWQKKyAgICAvLyBkdWUgdG8g
YW4gZWFybGllciBxdW90YSByZXN0cmljdGlvbi4gVGhlIGNsaWVudCB3YXMgYWxyZWFkeSBub3Rp
ZmllZAorICAgIC8vIG9mIHRoZSBxdW90YSBiZWluZyByZWFjaGVkIGFuZCBkZWNpZGVkIG5vdCB0
byBpbmNyZWFzZSBpdCB0aGVuLgorICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgYnJlYWsgZWFybGll
ciBhbmQgcHJldmVudCByZWRvd25sb2FkaW5nIG9uIGxhdGVyIHBhZ2UgbG9hZHM/CisgICAgLy8g
V2UgY291bGQgdGhlbiBhbHNvIGdldCByaWQgb2YgbV9sb2FkZWRTaXplLgorICAgIGlmIChtX29y
aWdpblF1b3RhUmVhY2hlZFByZXZpb3VzbHkgJiYgbV9hdmFpbGFibGVTcGFjZUluUXVvdGEgPCBt
X2xvYWRlZFNpemUpIHsKICAgICAgICAgbV9jdXJyZW50UmVzb3VyY2UgPSAwOwogICAgICAgICBj
YWNoZVVwZGF0ZUZhaWxlZER1ZVRvT3JpZ2luUXVvdGEoKTsKKyAgICAgICAgY2FjaGVVcGRhdGVG
YWlsZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzk1LDExICs3OTcsMTEgQEAg
dm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZFJlYWNoTWF4QXBwQ2FjaGVTaXplKCkKICAg
ICBjaGVja0lmTG9hZElzQ29tcGxldGUoKTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3Jv
dXA6OmRpZFJlYWNoT3JpZ2luUXVvdGEoUGFzc1JlZlB0cjxGcmFtZT4gZnJhbWUpCit2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkUmVhY2hPcmlnaW5RdW90YShpbnQ2NF90IHNwYWNlTmVl
ZGVkKQogewogICAgIC8vIEluZm9ybSB0aGUgY2xpZW50IHRoZSBvcmlnaW4gcXVvdGEgaGFzIGJl
ZW4gcmVhY2hlZCwKICAgICAvLyB0aGV5IG1heSBkZWNpZGUgdG8gaW5jcmVhc2UgdGhlIHF1b3Rh
LgotICAgIGZyYW1lLT5wYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+cmVhY2hlZEFwcGxpY2F0
aW9uQ2FjaGVPcmlnaW5RdW90YShtX29yaWdpbi5nZXQoKSk7CisgICAgbV9mcmFtZS0+cGFnZSgp
LT5jaHJvbWUoKS0+Y2xpZW50KCktPnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEo
bV9vcmlnaW4uZ2V0KCksIHNwYWNlTmVlZGVkKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hl
R3JvdXA6OmNhY2hlVXBkYXRlRmFpbGVkKCkKQEAgLTgxNCwxNSArODE2LDE3IEBAIHZvaWQgQXBw
bGljYXRpb25DYWNoZUdyb3VwOjpjYWNoZVVwZGF0ZUZhaWxlZCgpCiAKIHZvaWQgQXBwbGljYXRp
b25DYWNoZUdyb3VwOjpjYWNoZVVwZGF0ZUZhaWxlZER1ZVRvT3JpZ2luUXVvdGEoKQogewotICAg
IGlmICghbV9vcmlnaW5RdW90YVJlYWNoZWQpIHsKLSAgICAgICAgbV9vcmlnaW5RdW90YVJlYWNo
ZWQgPSB0cnVlOwotICAgICAgICBzY2hlZHVsZVJlYWNoZWRPcmlnaW5RdW90YUNhbGxiYWNrKCk7
Ci0gICAgfQorICAgIG1fb3JpZ2luUXVvdGFSZWFjaGVkUHJldmlvdXNseSA9IHRydWU7CiAKICAg
ICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKE90aGVyTWVzc2Fn
ZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiQXBwbGljYXRpb24g
Q2FjaGUgdXBkYXRlIGZhaWxlZCwgYmVjYXVzZSBzaXplIHF1b3RhIHdhcyBleGNlZWRlZC4iLCAw
LCBTdHJpbmcoKSk7Cit9CiAKLSAgICAvLyBGSVhNRTogU2hvdWxkIG5vdCBhYm9ydCBjYWNoZSB1
cGRhdGUgLSB0aGUgdXNlciBtYXkgY2hvb3NlIHRvIGluY3JlYXNlIHRoZSBxdW90YS4KLSAgICBj
YWNoZVVwZGF0ZUZhaWxlZCgpOwordm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnJlY2FsY3Vs
YXRlQXZhaWxhYmxlU3BhY2VJblF1b3RhKCkKK3sKKyAgICBpZiAoIWNhY2hlU3RvcmFnZSgpLnJl
bWFpbmluZ1NpemVGb3JPcmlnaW5FeGNsdWRpbmdDYWNoZShtX29yaWdpbi5nZXQoKSwgbV9uZXdl
c3RDYWNoZS5nZXQoKSwgbV9hdmFpbGFibGVTcGFjZUluUXVvdGEpKSB7CisgICAgICAgIC8vIEZh
aWxlZCB0byBkZXRlcm1pbmUgd2hhdCBpcyBsZWZ0IGluIHRoZSBxdW90YS4gRmFsbGJhY2sgdG8g
YWxsb3dpbmcgYW55dGhpbmcuCisgICAgICAgIG1fYXZhaWxhYmxlU3BhY2VJblF1b3RhID0gQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U6Om5vUXVvdGEoKTsKKyAgICB9CiB9CiAgICAgCiB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6bWFuaWZlc3ROb3RGb3VuZCgpCkBAIC05MDMsOCArOTA3LDE1
IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpjaGVja0lmTG9hZElzQ29tcGxldGUoKQog
ICAgICAgICAgICAgQVNTRVJUKGNhY2hlU3RvcmFnZSgpLmlzTWF4aW11bVNpemVSZWFjaGVkKCkg
JiYgbV9jYWxsZWRSZWFjaGVkTWF4QXBwQ2FjaGVTaXplKTsKICAgICAgICAgfQogCi0gICAgICAg
IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpGYWlsdXJlUmVhc29uIGZhaWx1cmVSZWFzb247CiAg
ICAgICAgIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBvbGROZXdlc3RDYWNoZSA9IChtX25ld2Vz
dENhY2hlID09IG1fY2FjaGVCZWluZ1VwZGF0ZWQpID8gUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+
KCkgOiBtX25ld2VzdENhY2hlOworCisgICAgICAgIC8vIElmIHdlIGVuY291bnRlcmVkIHRoZSBv
cmlnaW4gcXVvdGEgd2hpbGUgZG93bmxvYWRpbmcgd2UgY2FuIHJlcXVlc3QgYSBxdW90YQorICAg
ICAgICAvLyBpbmNyZWFzZSBub3csIGJlZm9yZSB3ZSBhdHRlbXB0IHRvIHN0b3JlIHRoZSBjYWNo
ZS4KKyAgICAgICAgaW50NjRfdCBzcGFjZU5lZWRlZDsKKyAgICAgICAgaWYgKCFjYWNoZVN0b3Jh
Z2UoKS5jaGVja09yaWdpblF1b3RhKHRoaXMsIG9sZE5ld2VzdENhY2hlLmdldCgpLCBtX2NhY2hl
QmVpbmdVcGRhdGVkLmdldCgpLCBzcGFjZU5lZWRlZCkpCisgICAgICAgICAgICBkaWRSZWFjaE9y
aWdpblF1b3RhKHNwYWNlTmVlZGVkKTsKKworICAgICAgICBBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6RmFpbHVyZVJlYXNvbiBmYWlsdXJlUmVhc29uOwogICAgICAgICBzZXROZXdlc3RDYWNoZSht
X2NhY2hlQmVpbmdVcGRhdGVkLnJlbGVhc2UoKSk7CiAgICAgICAgIGlmIChjYWNoZVN0b3JhZ2Uo
KS5zdG9yZU5ld2VzdENhY2hlKHRoaXMsIG9sZE5ld2VzdENhY2hlLmdldCgpLCBmYWlsdXJlUmVh
c29uKSkgewogICAgICAgICAgICAgLy8gTmV3IGNhY2hlIHN0b3JlZCwgbm93IHJlbW92ZSB0aGUg
b2xkIGNhY2hlLgpAQCAtOTE4LDE0ICs5MjksMTIgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3Jv
dXA6OmNoZWNrSWZMb2FkSXNDb21wbGV0ZSgpCiAgICAgICAgICAgICAvLyBGaXJlIHRoZSBzdWNj
ZXNzIGV2ZW50LgogICAgICAgICAgICAgcG9zdExpc3RlbmVyVGFzayhpc1VwZ3JhZGVBdHRlbXB0
ID8gQXBwbGljYXRpb25DYWNoZUhvc3Q6OlVQREFURVJFQURZX0VWRU5UIDogQXBwbGljYXRpb25D
YWNoZUhvc3Q6OkNBQ0hFRF9FVkVOVCwgbV9hc3NvY2lhdGVkRG9jdW1lbnRMb2FkZXJzKTsKICAg
ICAgICAgICAgIC8vIEl0IGlzIGNsZWFyIHRoYXQgdGhlIG9yaWdpbiBxdW90YSB3YXMgbm90IHJl
YWNoZWQsIHNvIGNsZWFyIHRoZSBmbGFnIGlmIGl0IHdhcyBzZXQuCi0gICAgICAgICAgICBtX29y
aWdpblF1b3RhUmVhY2hlZCA9IGZhbHNlOworICAgICAgICAgICAgbV9vcmlnaW5RdW90YVJlYWNo
ZWRQcmV2aW91c2x5ID0gZmFsc2U7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAo
ZmFpbHVyZVJlYXNvbiA9PSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6T3JpZ2luUXVvdGFSZWFj
aGVkKSB7Ci0gICAgICAgICAgICAgICAgLy8gV2UgcmFuIG91dCBvZiBzcGFjZSBmb3IgdGhpcyBv
cmlnaW4uIFJvbGwgYmFjayB0byBwcmV2aW91cyBzdGF0ZS4KLSAgICAgICAgICAgICAgICBpZiAo
b2xkTmV3ZXN0Q2FjaGUpCi0gICAgICAgICAgICAgICAgICAgIHNldE5ld2VzdENhY2hlKG9sZE5l
d2VzdENhY2hlLnJlbGVhc2UoKSk7CisgICAgICAgICAgICAgICAgLy8gV2UgcmFuIG91dCBvZiBz
cGFjZSBmb3IgdGhpcyBvcmlnaW4uIEZhbGwgZG93biB0byB0aGUgbm9ybWFsIGVycm9yIGhhbmRs
aW5nCisgICAgICAgICAgICAgICAgLy8gYWZ0ZXIgcmVjb3JkaW5nIHRoaXMgc3RhdGUuCiAgICAg
ICAgICAgICAgICAgY2FjaGVVcGRhdGVGYWlsZWREdWVUb09yaWdpblF1b3RhKCk7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoZmFpbHVy
ZVJlYXNvbiA9PSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6VG90YWxRdW90YVJlYWNoZWQgJiYg
IW1fY2FsbGVkUmVhY2hlZE1heEFwcENhY2hlU2l6ZSkgewpAQCAtMTA5MiwxMiArMTEwMSw2IEBA
IHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpzY2hlZHVsZVJlYWNoZWRNYXhBcHBDYWNoZVNp
emVDYWxsYmFjaygpCiAgICAgLy8gVGhlIHRpbWVyIHdpbGwgZGVsZXRlIGl0c2VsZiBvbmNlIGl0
IGZpcmVzLgogfQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2NoZWR1bGVSZWFjaGVk
T3JpZ2luUXVvdGFDYWxsYmFjaygpCi17Ci0gICAgLy8gRklYTUU6IGl0IG1pZ2h0IGJlIG5pY2Ug
dG8gcnVuIHRoaXMgYXN5bmNocm9ub3VzbHksIGJlY2F1c2UgdGhlcmUgaXMgbm8gcmV0dXJuIHZh
bHVlIHRvIHdhaXQgZm9yLgotICAgIGRpZFJlYWNoT3JpZ2luUXVvdGEobV9mcmFtZSk7Ci19Ci0K
IGNsYXNzIENhbGxDYWNoZUxpc3RlbmVyVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxDYWxsQ2FjaGVMaXN0
ZW5lclRhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBsb2FkZXIsIEFwcGxp
Y2F0aW9uQ2FjaGVIb3N0OjpFdmVudElEIGV2ZW50SUQsIGludCBwcm9ncmVzc1RvdGFsLCBpbnQg
cHJvZ3Jlc3NEb25lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCmluZGV4IGFiN2IxNmIuLjZhZDdmZGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdy
b3VwLmgKQEAgLTEwMyw3ICsxMDMsNiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIHBvc3RM
aXN0ZW5lclRhc2soQXBwbGljYXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQsIGludCBwcm9ncmVzc1Rv
dGFsLCBpbnQgcHJvZ3Jlc3NEb25lLCBEb2N1bWVudExvYWRlciopOwogCiAgICAgdm9pZCBzY2hl
ZHVsZVJlYWNoZWRNYXhBcHBDYWNoZVNpemVDYWxsYmFjaygpOwotICAgIHZvaWQgc2NoZWR1bGVS
ZWFjaGVkT3JpZ2luUXVvdGFDYWxsYmFjaygpOwogCiAgICAgUGFzc1JlZlB0cjxSZXNvdXJjZUhh
bmRsZT4gY3JlYXRlUmVzb3VyY2VIYW5kbGUoY29uc3QgS1VSTCYsIEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZSogbmV3ZXN0Q2FjaGVkUmVzb3VyY2UpOwogCkBAIC0xMjAsMTMgKzExOSwxNCBAQCBw
cml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1hbmlmZXN0RGF0YShjb25zdCBjaGFyKiwgaW50
KTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCgpOwogICAgIHZvaWQgZGlkUmVh
Y2hNYXhBcHBDYWNoZVNpemUoKTsKLSAgICB2b2lkIGRpZFJlYWNoT3JpZ2luUXVvdGEoUGFzc1Jl
ZlB0cjxGcmFtZT4gZnJhbWUpOworICAgIHZvaWQgZGlkUmVhY2hPcmlnaW5RdW90YShpbnQ2NF90
IHNwYWNlTmVlZGVkKTsKICAgICAKICAgICB2b2lkIHN0YXJ0TG9hZGluZ0VudHJ5KCk7CiAgICAg
dm9pZCBkZWxpdmVyRGVsYXllZE1haW5SZXNvdXJjZXMoKTsKICAgICB2b2lkIGNoZWNrSWZMb2Fk
SXNDb21wbGV0ZSgpOwogICAgIHZvaWQgY2FjaGVVcGRhdGVGYWlsZWQoKTsKICAgICB2b2lkIGNh
Y2hlVXBkYXRlRmFpbGVkRHVlVG9PcmlnaW5RdW90YSgpOworICAgIHZvaWQgcmVjYWxjdWxhdGVB
dmFpbGFibGVTcGFjZUluUXVvdGEoKTsKICAgICB2b2lkIG1hbmlmZXN0Tm90Rm91bmQoKTsKICAg
ICAKICAgICB2b2lkIGFkZEVudHJ5KGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIHR5cGUpOwpAQCAt
MjAyLDEwICsyMDIsOSBAQCBwcml2YXRlOgogCiAgICAgaW50NjRfdCBtX2xvYWRlZFNpemU7CiAg
ICAgaW50NjRfdCBtX2F2YWlsYWJsZVNwYWNlSW5RdW90YTsKLSAgICBib29sIG1fb3JpZ2luUXVv
dGFSZWFjaGVkOworICAgIGJvb2wgbV9vcmlnaW5RdW90YVJlYWNoZWRQcmV2aW91c2x5OwogCiAg
ICAgZnJpZW5kIGNsYXNzIENocm9tZUNsaWVudENhbGxiYWNrVGltZXI7Ci0gICAgZnJpZW5kIGNs
YXNzIE9yaWdpblF1b3RhUmVhY2hlZENhbGxiYWNrVGltZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCBhNGFlYTI5Li4yMDI0OGU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZS5jcHAKQEAgLTk1NSw2ICs5NTUsMjggQEAgYm9vbCBBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6ZW5zdXJlT3JpZ2luUmVjb3JkKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBvcmln
aW4pCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
OmNoZWNrT3JpZ2luUXVvdGEoQXBwbGljYXRpb25DYWNoZUdyb3VwKiBncm91cCwgQXBwbGljYXRp
b25DYWNoZSogb2xkQ2FjaGUsIEFwcGxpY2F0aW9uQ2FjaGUqIG5ld0NhY2hlLCBpbnQ2NF90JiBz
cGFjZU5lZWRlZCkKK3sKKyAgICAvLyBDaGVjayBpZiB0aGUgb2xkQ2FjaGUgd2l0aCB0aGUgbmV3
Q2FjaGUgd291bGQgcmVhY2ggdGhlIHBlci1vcmlnaW4gcXVvdGEuCisgICAgaW50NjRfdCByZW1h
aW5pbmdTcGFjZUluT3JpZ2luOworICAgIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSBn
cm91cC0+b3JpZ2luKCk7CisgICAgaWYgKHJlbWFpbmluZ1NpemVGb3JPcmlnaW5FeGNsdWRpbmdD
YWNoZShvcmlnaW4sIG9sZENhY2hlLCByZW1haW5pbmdTcGFjZUluT3JpZ2luKSkgeworICAgICAg
ICBpZiAocmVtYWluaW5nU3BhY2VJbk9yaWdpbiA8IG5ld0NhY2hlLT5lc3RpbWF0ZWRTaXplSW5T
dG9yYWdlKCkpIHsKKyAgICAgICAgICAgIGludDY0X3QgcXVvdGE7CisgICAgICAgICAgICBpZiAo
cXVvdGFGb3JPcmlnaW4ob3JpZ2luLCBxdW90YSkpIHsKKyAgICAgICAgICAgICAgICBzcGFjZU5l
ZWRlZCA9IHF1b3RhIC0gcmVtYWluaW5nU3BhY2VJbk9yaWdpbiArIG5ld0NhY2hlLT5lc3RpbWF0
ZWRTaXplSW5TdG9yYWdlKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAg
IHNwYWNlTmVlZGVkID0gMDsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCiBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjpzdG9yZU5ld2VzdENhY2hlKEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogZ3JvdXAsIEFwcGxp
Y2F0aW9uQ2FjaGUqIG9sZENhY2hlLCBGYWlsdXJlUmVhc29uJiBmYWlsdXJlUmVhc29uKQogewog
ICAgIG9wZW5EYXRhYmFzZSh0cnVlKTsKQEAgLTk3MCwxMiArOTkyLDEwIEBAIGJvb2wgQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlTmV3ZXN0Q2FjaGUoQXBwbGljYXRpb25DYWNoZUdyb3Vw
KiBncm91cCwgQXBwCiAgICAgc3RvcmVDYWNoZVRyYW5zYWN0aW9uLmJlZ2luKCk7CiAKICAgICAv
LyBDaGVjayBpZiB0aGlzIHdvdWxkIHJlYWNoIHRoZSBwZXItb3JpZ2luIHF1b3RhLgotICAgIGlu
dDY0X3QgcmVtYWluaW5nU3BhY2VJbk9yaWdpbjsKLSAgICBpZiAocmVtYWluaW5nU2l6ZUZvck9y
aWdpbkV4Y2x1ZGluZ0NhY2hlKGdyb3VwLT5vcmlnaW4oKSwgb2xkQ2FjaGUsIHJlbWFpbmluZ1Nw
YWNlSW5PcmlnaW4pKSB7Ci0gICAgICAgIGlmIChyZW1haW5pbmdTcGFjZUluT3JpZ2luIDwgZ3Jv
dXAtPm5ld2VzdENhY2hlKCktPmVzdGltYXRlZFNpemVJblN0b3JhZ2UoKSkgewotICAgICAgICAg
ICAgZmFpbHVyZVJlYXNvbiA9IE9yaWdpblF1b3RhUmVhY2hlZDsKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgfQorICAgIGludDY0X3Qgc3BhY2VOZWVkZWRJZ25vcmVkOworICAg
IGlmICghY2hlY2tPcmlnaW5RdW90YShncm91cCwgb2xkQ2FjaGUsIGdyb3VwLT5uZXdlc3RDYWNo
ZSgpLCBzcGFjZU5lZWRlZElnbm9yZWQpKSB7CisgICAgICAgIGZhaWx1cmVSZWFzb24gPSBPcmln
aW5RdW90YVJlYWNoZWQ7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBHcm91
cFN0b3JhZ2VJREpvdXJuYWwgZ3JvdXBTdG9yYWdlSURKb3VybmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaApp
bmRleCAwN2Y2ODU0Li5mZDBiN2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaApAQCAtNjksNiArNjksNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBxdW90YUZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbios
IGludDY0X3QmIHF1b3RhKTsKICAgICBib29sIHJlbWFpbmluZ1NpemVGb3JPcmlnaW5FeGNsdWRp
bmdDYWNoZShjb25zdCBTZWN1cml0eU9yaWdpbiosIEFwcGxpY2F0aW9uQ2FjaGUqLCBpbnQ2NF90
JiByZW1haW5pbmdTaXplKTsKICAgICBib29sIHN0b3JlVXBkYXRlZFF1b3RhRm9yT3JpZ2luKGNv
bnN0IFNlY3VyaXR5T3JpZ2luKiwgaW50NjRfdCBxdW90YSk7CisgICAgYm9vbCBjaGVja09yaWdp
blF1b3RhKEFwcGxpY2F0aW9uQ2FjaGVHcm91cCosIEFwcGxpY2F0aW9uQ2FjaGUqIG9sZENhY2hl
LCBBcHBsaWNhdGlvbkNhY2hlKiBuZXdDYWNoZSwgaW50NjRfdCYgc3BhY2VOZWVkZWQpOwogCiAg
ICAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBjYWNoZUdyb3VwRm9yVVJMKGNvbnN0IEtVUkwmKTsg
Ly8gQ2FjaGUgdG8gbG9hZCBhIG1haW4gcmVzb3VyY2UgZnJvbS4KICAgICBBcHBsaWNhdGlvbkNh
Y2hlR3JvdXAqIGZhbGxiYWNrQ2FjaGVHcm91cEZvclVSTChjb25zdCBLVVJMJik7IC8vIENhY2hl
IHRoYXQgaGFzIGEgZmFsbGJhY2sgZW50cnkgdG8gbG9hZCBhIG1haW4gcmVzb3VyY2UgZnJvbSBp
ZiBub3JtYWwgbG9hZGluZyBmYWlscy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4
IGEyN2M3NjYuLjkzMjgwOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21l
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAtMTkz
LDcgKzE5Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gbW9yZSB0aGFuIGFs
bG93ZWQgb24gdGhpcyBvcmlnaW4uIFRoaXMgY2FsbGJhY2sgYWxsb3dzIHRoZSBjaHJvbWUgY2xp
ZW50CiAgICAgICAgIC8vIHRvIHRha2UgYWN0aW9uLCBzdWNoIGFzIHByb21wdGluZyB0aGUgdXNl
ciB0byBhc2sgdG8gaW5jcmVhc2UgdGhlIHF1b3RhCiAgICAgICAgIC8vIGZvciB0aGlzIG9yaWdp
bi4KLSAgICAgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVv
dGEoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVh
Y2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiosIGludDY0X3Qg
c3BhY2VOZWVkZWQpID0gMDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JU
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA4Y2MzMTg1Li45NGE3ZjdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDExLTA3LTA4ICBKb3NlcGgg
UGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQXBwbGljYXRpb25DYWNo
ZSB1cGRhdGUgc2hvdWxkIG5vdCBpbW1lZGlhdGVseSBmYWlsIHdoZW4gcmVhY2hpbmcgcGVyLW9y
aWdpbiBxdW90YQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NjQxNzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xp
ZW50SW1wbDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSk6CisgICAgICAgICog
c3JjL0Nocm9tZUNsaWVudEltcGwuaDoKKwogMjAxMS0wNy0wNiAgSm9obm55IERpbmcgIDxqbmRA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02Mzg1NwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hy
b21lQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGll
bnRJbXBsLmNwcAppbmRleCBiYmIzNDBjLi4wMTgyMTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcApAQCAtNjYyLDcgKzY2Miw3IEBAIHZv
aWQgQ2hyb21lQ2xpZW50SW1wbDo6cmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90IHNwYWNl
TmVlZGVkKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIENocm9tZUNsaWVu
dEltcGw6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4q
KQordm9pZCBDaHJvbWVDbGllbnRJbXBsOjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1
b3RhKFNlY3VyaXR5T3JpZ2luKiwgaW50NjRfdCkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVu
dEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaApp
bmRleCAyZjc5YzA1Li4wZDRkZmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9DaHJvbWVDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
Q2hyb21lQ2xpZW50SW1wbC5oCkBAIC0xMzEsNyArMTMxLDcgQEAgcHVibGljOgogICAgICAgICBX
ZWJDb3JlOjpGcmFtZSosIGNvbnN0IFdURjo6U3RyaW5nJiBkYXRhYmFzZU5hbWUpOwogI2lmIEVO
QUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCiAgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRN
YXhBcHBDYWNoZVNpemUoaW50NjRfdCBzcGFjZU5lZWRlZCk7Ci0gICAgdmlydHVhbCB2b2lkIHJl
YWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4q
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGludDY0X3Qgc3BhY2VOZWVkZWQpOwogI2VuZGlmCiAj
aWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgdmlydHVhbCBXZWJDb3JlOjpOb3RpZmljYXRp
b25QcmVzZW50ZXIqIG5vdGlmaWNhdGlvblByZXNlbnRlcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9n
CmluZGV4IDk5M2RmNzMuLmUwNjA2OTMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBA
QAorMjAxMS0wNy0wOCAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgorCisg
ICAgICAgIEFwcGxpY2F0aW9uQ2FjaGUgdXBkYXRlIHNob3VsZCBub3QgaW1tZWRpYXRlbHkgZmFp
bCB3aGVuIHJlYWNoaW5nIHBlci1vcmlnaW4gcXVvdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0MTc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpyZWFjaGVkQXBwbGljYXRp
b25DYWNoZU9yaWdpblF1b3RhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRFZmwuaDoKKwogMjAxMS0wNi0yOSAgS2FuZ2lsIEhhbiAgPGthbmdpbC5oYW5Ac2Ftc3VuZy5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRF
ZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZs
LmNwcAppbmRleCA0ZTAwZmIxLi4zZmRmMWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAKQEAgLTM4Myw3ICszODMsNyBA
QCB2b2lkIENocm9tZUNsaWVudEVmbDo6cmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90IHNw
YWNlTmVlZGVkKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgQ2hyb21lQ2xpZW50
RWZsOjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKikK
K3ZvaWQgQ2hyb21lQ2xpZW50RWZsOjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3Rh
KFNlY3VyaXR5T3JpZ2luKiwgaW50NjRfdCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
RWZsLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwu
aAppbmRleCA1NzdhNmZlLi4wZjg3NGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaApAQCAtMTE0LDcgKzExNCw3IEBAIHB1Ymxp
YzoKIAogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCiAgICAgdmlydHVhbCB2
b2lkIHJlYWNoZWRNYXhBcHBDYWNoZVNpemUoaW50NjRfdCBzcGFjZU5lZWRlZCk7Ci0gICAgdmly
dHVhbCB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmln
aW4qKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90
YShTZWN1cml0eU9yaWdpbiosIGludDY0X3Qgc3BhY2VOZWVkZWQpOwogI2VuZGlmCiAKICNpZiBF
TkFCTEUoQ09OVEVYVF9NRU5VUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCAzNTU5YTMzLi5kM2ZiYThh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDctMDggIEpvc2VwaCBQ
ZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBBcHBsaWNhdGlvbkNhY2hl
IHVwZGF0ZSBzaG91bGQgbm90IGltbWVkaWF0ZWx5IGZhaWwgd2hlbiByZWFjaGluZyBwZXItb3Jp
Z2luIHF1b3RhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02NDE3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
Q2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaDoKKwogMjAxMS0wNy0wMSAgSm9v
bmUgSHVyICA8am9vbmUuaHVyQGNvbGxhYm9yYS5jby51az4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBNYXJ0aW4gUm9iaW5zb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAppbmRleCAyYTVjNGYzLi4zOWZkODUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5j
cHAKQEAgLTYwMiw3ICs2MDIsNyBAQCB2b2lkIENocm9tZUNsaWVudDo6cmVhY2hlZE1heEFwcENh
Y2hlU2l6ZShpbnQ2NF90IHNwYWNlTmVlZGVkKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAK
LXZvaWQgQ2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNl
Y3VyaXR5T3JpZ2luKikKK3ZvaWQgQ2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwbGljYXRpb25DYWNo
ZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKiwgaW50NjRfdCkKIHsKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50R3RrLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRHdGsuaAppbmRleCBjNGJiYzcyLi42YjhmYWMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaApAQCAtMTIyLDcgKzEy
Miw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogI2VuZGlmCiAjaWYgRU5BQkxFKE9GRkxJTkVfV0VC
X0FQUExJQ0FUSU9OUykKICAgICAgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRNYXhBcHBDYWNoZVNp
emUoaW50NjRfdCBzcGFjZU5lZWRlZCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBw
bGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKik7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luKiwgaW50NjRfdCBzcGFjZU5lZWRlZCk7CiAjZW5kaWYKICNpZiBF
TkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICAgICAgdmlydHVhbCB2b2lkIHNob3dDb250ZXh0TWVu
dSgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwppbmRleCAxOGE2NDllLi44MGM1MzUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2hh
aWt1L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDExLTA3LTA4ICBKb3NlcGggUGVjb3Jh
cm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQXBwbGljYXRpb25DYWNoZSB1cGRh
dGUgc2hvdWxkIG5vdCBpbW1lZGlhdGVseSBmYWlsIHdoZW4gcmVhY2hpbmcgcGVyLW9yaWdpbiBx
dW90YQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQx
NzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNo
cm9tZUNsaWVudFd4OjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5oOgorCiAyMDExLTA2LTE4ICBE
aW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmNwcCBiL1NvdXJjZS9XZWJLaXQvaGFpa3UvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuY3BwCmluZGV4IDkxNTgxZDQuLjQ4N2Y0NDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50SGFpa3UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50SGFpa3UuY3BwCkBAIC0zNTYsNyArMzU2LDcgQEAgdm9pZCBDaHJvbWVDbGllbnRX
eDo6cmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90IHNwYWNlTmVlZGVkKQogICAgIG5vdElt
cGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgQ2hyb21lQ2xpZW50V3g6OnJlYWNoZWRBcHBsaWNhdGlv
bkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4qKQordm9pZCBDaHJvbWVDbGllbnRXeDo6
cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiosIGludDY0
X3QpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuaCBiL1NvdXJjZS9XZWJL
aXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuaAppbmRleCBkYTk2M2Iw
Li40YmNmOWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudEhhaWt1LmgKKysrIGIvU291cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRIYWlrdS5oCkBAIC0xNDAsNyArMTQwLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAjaWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykKICAgICAgICAg
dmlydHVhbCB2b2lkIHJlYWNoZWRNYXhBcHBDYWNoZVNpemUoaW50NjRfdCBzcGFjZU5lZWRlZCk7
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3Rh
KFNlY3VyaXR5T3JpZ2luKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBwbGljYXRp
b25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKiwgaW50NjRfdCBzcGFjZU5lZWRlZCk7
CiAjZW5kaWYKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICAgICAgdmlydHVhbCB2b2lk
IHNob3dDb250ZXh0TWVudSgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDBhNmY3NGYuLjc0NzBh
OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMS0wNy0wOCAgSm9zZXBo
IFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgorCisgICAgICAgIEFwcGxpY2F0aW9uQ2Fj
aGUgdXBkYXRlIHNob3VsZCBub3QgaW1tZWRpYXRlbHkgZmFpbCB3aGVuIHJlYWNoaW5nIHBlci1v
cmlnaW4gcXVvdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY0MTc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYlVJRGVsZWdhdGVQcml2YXRlLmg6CisgICAgICAgICogRGVmYXVsdERl
bGVnYXRlcy9XZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tOgorICAgICAgICAoLVtXZWJEZWZhdWx0VUlE
ZWxlZ2F0ZSB3ZWJWaWV3OmV4Y2VlZGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhRm9yU2Vj
dXJpdHlPcmlnaW46c3BhY2VOZWVkZWQ6XSk6CisgICAgICAgIFVwZGF0ZSB0aGUgZGVsZWdhdGUg
dG8gaW5jbHVkZSBhIHNwYWNlIG5lZWRlZCBwYXJhbWV0ZXIuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQubW06CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRBcHBsaWNh
dGlvbkNhY2hlT3JpZ2luUXVvdGEpOgorICAgICAgICBDYWxsIHRoZSBkZWxlZ2F0ZSB3aXRoIHRo
ZSBuZXcgc3BhY2UgbmVlZGVkIGluZm9ybWF0aW9uLgorCiAyMDExLTA3LTA0ICBEYW4gQmVybnN0
ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZWQgaGFuZGxpbmcgb2YgZnJhbWUg
c2l6ZSBjaGFuZ2VzIGludG8gaXRzIG93biBtZXRob2QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRVSURlbGVnYXRlLm0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRVSURlbGVnYXRlLm0KaW5kZXgg
YTMyN2ZkNC4uYzRkYjIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvRGVmYXVsdERl
bGVnYXRlcy9XZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0Rl
ZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdFVJRGVsZWdhdGUubQpAQCAtMjI3LDcgKzIyNyw3IEBA
IC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBjb250ZXh0TWVudUl0ZW1TZWxlY3Rl
ZDooTlNNZW51SXRlbSAqKWl0ZW0gZm9yCiB7CiB9CiAKLS0gKHZvaWQpd2ViVmlldzooV2ViVmll
dyAqKXNlbmRlciBleGNlZWRlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YUZvclNlY3VyaXR5
T3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbgorLSAodm9pZCl3ZWJWaWV3OihXZWJW
aWV3ICopc2VuZGVyIGV4Y2VlZGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhRm9yU2VjdXJp
dHlPcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luIHNwYWNlTmVlZGVkOihOU1VJbnRl
Z2VyKXNwYWNlTmVlZGVkCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggZDRkNmViNi4uYzY2YjNlMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgK
QEAgLTExNiw3ICsxMTYsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICNpZiBFTkFCTEUoT0ZGTElORV9X
RUJfQVBQTElDQVRJT05TKQogICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkTWF4QXBwQ2FjaGVTaXpl
KGludDY0X3Qgc3BhY2VOZWVkZWQpOwotICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBwbGljYXRp
b25DYWNoZU9yaWdpblF1b3RhKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKik7CisgICAgdmlydHVh
bCB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4qLCBpbnQ2NF90IHNwYWNlTmVlZGVkKTsKICNlbmRpZgogICAgIHZpcnR1YWwgdm9p
ZCBwb3B1bGF0ZVZpc2l0ZWRMaW5rcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KaW5kZXggNzIxODFjNC4uNmNmNzVjMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5tbQpAQCAtNjk4LDEyICs2OTgsMTIgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJlYWNo
ZWRNYXhBcHBDYWNoZVNpemUoaW50NjRfdCBzcGFjZU5lZWRlZCkKICAgICAvLyBGSVhNRTogRnJl
ZSBzb21lIHNwYWNlLgogfQogCi12b2lkIFdlYkNocm9tZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0
aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiogb3JpZ2luKQordm9pZCBXZWJDaHJv
bWVDbGllbnQ6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmln
aW4qIG9yaWdpbiwgaW50NjRfdCBzcGFjZU5lZWRlZCkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpD
X0VYQ0VQVElPTlM7CiAKICAgICBXZWJTZWN1cml0eU9yaWdpbiAqd2ViT3JpZ2luID0gW1tXZWJT
ZWN1cml0eU9yaWdpbiBhbGxvY10gX2luaXRXaXRoV2ViQ29yZVNlY3VyaXR5T3JpZ2luOm9yaWdp
bl07Ci0gICAgQ2FsbFVJRGVsZWdhdGUobV93ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpleGNl
ZWRlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YUZvclNlY3VyaXR5T3JpZ2luOiksIHdlYk9y
aWdpbik7CisgICAgQ2FsbFVJRGVsZWdhdGUobV93ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpl
eGNlZWRlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YUZvclNlY3VyaXR5T3JpZ2luOnNwYWNl
TmVlZGVkOiksIHdlYk9yaWdpbiwgc3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4oc3BhY2VOZWVkZWQp
KTsKICAgICBbd2ViT3JpZ2luIHJlbGVhc2VdOwogCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVUlEZWxlZ2F0
ZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZh
dGUuaAppbmRleCA5MGNmYmRmLi41NjkyMzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlVJRGVsZWdhdGVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJVSURlbGVnYXRlUHJpdmF0ZS5oCkBAIC0xOTcsMTQgKzE5NywxNiBAQCBleHRl
cm4gTlNTdHJpbmcgKldlYkNvbnNvbGVNZXNzYWdlRGVidWdNZXNzYWdlTGV2ZWw7CiAtICh2b2lk
KXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZnJhbWU6KFdlYkZyYW1lICopZnJhbWUgZXhjZWVk
ZWREYXRhYmFzZVF1b3RhRm9yU2VjdXJpdHlPcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3Jp
Z2luIGRhdGFiYXNlOihOU1N0cmluZyAqKWRhdGFiYXNlSWRlbnRpZmllcjsKIAogLyohCi0gICAg
QG1ldGhvZCB3ZWJWaWV3OmV4Y2VlZGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhRm9yU2Vj
dXJpdHlPcmlnaW46CisgICAgQG1ldGhvZCB3ZWJWaWV3OmV4Y2VlZGVkQXBwbGljYXRpb25DYWNo
ZU9yaWdpblF1b3RhRm9yU2VjdXJpdHlPcmlnaW46c3BhY2VOZWVkZWQ6CiAgICAgQHBhcmFtIHNl
bmRlciBUaGUgV2ViVmlldyBzZW5kaW5nIHRoZSBkZWxlZ2F0ZSBtZXRob2QuCi0gICAgQHBhcmFt
IG9yaWdpbiBUaGUgc2VjdXJpdHkgb3JpZ2luIHRoYXQgbmVlZHMgYSBsYXJnZXIgcXVvdGEKKyAg
ICBAcGFyYW0gb3JpZ2luIFRoZSBzZWN1cml0eSBvcmlnaW4gdGhhdCBuZWVkcyBhIGxhcmdlciBx
dW90YS4KKyAgICBAcGFyYW0gc3BhY2VOZWVkZWQgVGhlIGFtb3VudCBvZiBzcGFjZSBuZWVkZWQg
dG8gc3RvcmUgdGhlIG5ldyBtYW5pZmVzdCBhbmQga2VlcCBhbGwgb3RoZXIKKyAgICBwcmV2aW91
c2x5IHN0b3JlZCBjYWNoZXMgZm9yIHRoaXMgb3JpZ2luLgogICAgIEBkaXNjdXNzaW9uIFRoaXMg
bWV0aG9kIGlzIGNhbGxlZCB3aGVuIGEgcGFnZSBhdHRlbXB0cyB0byBzdG9yZSBtb3JlIGluIHRo
ZSBBcHBsaWNhdGlvbiBDYWNoZQogICAgIGZvciBhbiBvcmlnaW4gdGhhbiB3YXMgYWxsb3dlZCBi
eSB0aGUgcXVvdGEgKG9yIGRlZmF1bHQpIHNldCBmb3IgdGhlIG9yaWdpbi4gVGhpcyBhbGxvd3Mg
dGhlCiAgICAgcXVvdGEgdG8gYmUgaW5jcmVhc2VkIGZvciB0aGUgc2VjdXJpdHkgb3JpZ2luLgog
Ki8KLS0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBleGNlZWRlZEFwcGxpY2F0aW9u
Q2FjaGVPcmlnaW5RdW90YUZvclNlY3VyaXR5T3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9y
aWdpbjsKKy0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBleGNlZWRlZEFwcGxpY2F0
aW9uQ2FjaGVPcmlnaW5RdW90YUZvclNlY3VyaXR5T3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAq
KW9yaWdpbiBzcGFjZU5lZWRlZDooTlNVSW50ZWdlcilzcGFjZU5lZWRlZDsKIAogLSAoV2ViVmll
dyAqKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgY3JlYXRlV2ViVmlld1dpdGhSZXF1ZXN0OihO
U1VSTFJlcXVlc3QgKilyZXF1ZXN0IHdpbmRvd0ZlYXR1cmVzOihOU0RpY3Rpb25hcnkgKilmZWF0
dXJlczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwIGIv
U291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCmluZGV4IGU4ZThmYmUuLmVlNDk4ZWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKQEAgLTQxODAsNyArNDE4MCw3IEBAIHF1aW50
NjQgUVdlYlBhZ2U6OmJ5dGVzUmVjZWl2ZWQoKSBjb25zdAogICAgIFxzYSBRV2ViRGF0YWJhc2UK
ICovCiAvKiEKLSAgICBcZm4gdm9pZCBRV2ViUGFnZTo6YXBwbGljYXRpb25DYWNoZVF1b3RhRXhj
ZWVkZWQoUVdlYlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIHF1aW50NjQgZGVmYXVsdE9yaWdpblF1
b3RhKTsKKyAgICBcZm4gdm9pZCBRV2ViUGFnZTo6YXBwbGljYXRpb25DYWNoZVF1b3RhRXhjZWVk
ZWQoUVdlYlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIHF1aW50NjQgZGVmYXVsdE9yaWdpblF1b3Rh
LCBxdWludDY0IHNwYWNlTmVlZGVkKTsKIAogICAgIFRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQgd2hl
bmV2ZXIgdGhlIHdlYiBzaXRlIGlzIGFza2luZyB0byBzdG9yZSBkYXRhIHRvIHRoZSBhcHBsaWNh
dGlvbiBjYWNoZQogICAgIGRhdGFiYXNlIGRhdGFiYXNlTmFtZSBhbmQgdGhlIHF1b3RhIGFsbG9j
YXRlZCB0byB0aGF0IHdlYiBzaXRlIGlzIGV4Y2VlZGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9xdC9BcGkvcXdlYnBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmgK
aW5kZXggZjFmNDgxYi4uYjkxODllNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9BcGkv
cXdlYnBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5oCkBAIC0zOTQs
NyArMzk0LDcgQEAgUV9TSUdOQUxTOgogICAgIHZvaWQgbWljcm9Gb2N1c0NoYW5nZWQoKTsKICAg
ICB2b2lkIGNvbnRlbnRzQ2hhbmdlZCgpOwogICAgIHZvaWQgZGF0YWJhc2VRdW90YUV4Y2VlZGVk
KFFXZWJGcmFtZSogZnJhbWUsIFFTdHJpbmcgZGF0YWJhc2VOYW1lKTsKLSAgICB2b2lkIGFwcGxp
Y2F0aW9uQ2FjaGVRdW90YUV4Y2VlZGVkKFFXZWJTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBxdWlu
dDY0IGRlZmF1bHRPcmlnaW5RdW90YSk7CisgICAgdm9pZCBhcHBsaWNhdGlvbkNhY2hlUXVvdGFF
eGNlZWRlZChRV2ViU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgcXVpbnQ2NCBkZWZhdWx0T3JpZ2lu
UXVvdGEsIHF1aW50NjQgc3BhY2VOZWVkZWQpOwogCiAgICAgdm9pZCBzYXZlRnJhbWVTdGF0ZVJl
cXVlc3RlZChRV2ViRnJhbWUqIGZyYW1lLCBRV2ViSGlzdG9yeUl0ZW0qIGl0ZW0pOwogICAgIHZv
aWQgcmVzdG9yZUZyYW1lU3RhdGVSZXF1ZXN0ZWQoUVdlYkZyYW1lKiBmcmFtZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdl
TG9nCmluZGV4IDg3ZWFkMDMuLmViYmQ5NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTEtMDctMDggIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBBcHBsaWNhdGlvbkNhY2hlIHVwZGF0ZSBzaG91bGQgbm90IGltbWVkaWF0ZWx5IGZh
aWwgd2hlbiByZWFjaGluZyBwZXItb3JpZ2luIHF1b3RhCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDE3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKiBB
cGkvcXdlYnBhZ2UuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6cmVhY2hlZEFwcGxpY2F0aW9u
Q2FjaGVPcmlnaW5RdW90YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
UXQuaDoKKyAgICAgICAgUGFzcyB0aGUgc3BhY2VOZWVkZWQgdmFsdWUgdGhyb3VnaCB0byB0aGUg
YXBwbGljYXRpb25DYWNoZVF1b3RhRXhjZWVkZWQgc2lnbmFsLgorCiAyMDExLTA3LTA1ICBSYWZh
ZWwgQnJhbmRhbyAgPHJhZmFlbC5sb2JvQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgW1F0XSBG
aXggdHN0X1FXZWJGcmFtZTo6c2V0SHRtbFdpdGhSZXNvdXJjZSgpIEFQSSB0ZXN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCmluZGV4
IDlmMzUyMTkuLmVkMzk5ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCkBAIC01NTUsNyArNTU1LDcgQEAgdm9pZCBDaHJvbWVD
bGllbnRRdDo6cmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90KQogICAgIG5vdEltcGxlbWVu
dGVkKCk7CiB9CiAKLXZvaWQgQ2hyb21lQ2xpZW50UXQ6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hl
T3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKK3ZvaWQgQ2hyb21lQ2xpZW50UXQ6
OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4qIG9yaWdp
biwgaW50NjRfdCBzcGFjZU5lZWRlZCkKIHsKICAgICBpbnQ2NF90IHF1b3RhOwogICAgIHF1aW50
NjQgZGVmYXVsdE9yaWdpblF1b3RhID0gV2ViQ29yZTo6Y2FjaGVTdG9yYWdlKCkuZGVmYXVsdE9y
aWdpblF1b3RhKCk7CkBAIC01NjYsNyArNTY2LDcgQEAgdm9pZCBDaHJvbWVDbGllbnRRdDo6cmVh
Y2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiogb3JpZ2luKQog
ICAgIGlmICghV2ViQ29yZTo6Y2FjaGVTdG9yYWdlKCkucXVvdGFGb3JPcmlnaW4ob3JpZ2luLCBx
dW90YSkpCiAgICAgICAgV2ViQ29yZTo6Y2FjaGVTdG9yYWdlKCkuc3RvcmVVcGRhdGVkUXVvdGFG
b3JPcmlnaW4ob3JpZ2luLCBkZWZhdWx0T3JpZ2luUXVvdGEpOwogCi0gICAgZW1pdCBtX3dlYlBh
Z2UtPmFwcGxpY2F0aW9uQ2FjaGVRdW90YUV4Y2VlZGVkKHNlY3VyaXR5T3JpZ2luLCBkZWZhdWx0
T3JpZ2luUXVvdGEpOworICAgIGVtaXQgbV93ZWJQYWdlLT5hcHBsaWNhdGlvbkNhY2hlUXVvdGFF
eGNlZWRlZChzZWN1cml0eU9yaWdpbiwgZGVmYXVsdE9yaWdpblF1b3RhLCBzdGF0aWNfY2FzdDxx
dWludDY0PihzcGFjZU5lZWRlZCkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaCBiL1NvdXJjZS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAppbmRleCBjN2ZiYjhhLi5iOTcxMDQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dFF0LmgKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRR
dC5oCkBAIC0xNDAsNyArMTQwLDcgQEAgcHVibGljOgogI2VuZGlmCiAjaWYgRU5BQkxFKE9GRkxJ
TkVfV0VCX0FQUExJQ0FUSU9OUykKICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZE1heEFwcENhY2hl
U2l6ZShpbnQ2NF90IHNwYWNlTmVlZGVkKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxp
Y2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiopOworICAgIHZpcnR1YWwgdm9p
ZCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKiwgaW50
NjRfdCBzcGFjZU5lZWRlZCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAg
ICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51KCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXgg
Yjg2NzdlYy4uYmQ2MzQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEx
LTA3LTA4ICBKb3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
QXBwbGljYXRpb25DYWNoZSB1cGRhdGUgc2hvdWxkIG5vdCBpbW1lZGlhdGVseSBmYWlsIHdoZW4g
cmVhY2hpbmcgcGVyLW9yaWdpbiBxdW90YQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjQxNzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVv
dGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorCiAyMDEx
LTA2LTMwICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IGNiOWJhZjEuLmRjM2M1YTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcApAQCAtNjI4LDcgKzYyOCw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpyZWFj
aGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3Qgc3BhY2VOZWVkZWQpCiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKIH0KIAotdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hl
T3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4qKQordm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJlYWNo
ZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4qLCBpbnQ2NF90KQog
ewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IDE4Y2JiNmIuLmE1MzdkOGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oCkBAIC0xMjEsNyArMTIxLDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKE9GRkxJTkVfV0VC
X0FQUExJQ0FUSU9OUykKICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZE1heEFwcENhY2hlU2l6ZShp
bnQ2NF90IHNwYWNlTmVlZGVkKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9u
Q2FjaGVPcmlnaW5RdW90YShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiopOworICAgIHZpcnR1YWwg
dm9pZCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luKiwgaW50NjRfdCBzcGFjZU5lZWRlZCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05U
RVhUX01FTlVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwppbmRleCA5ZTBjNDI1Li5jNWMzNGY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L3dpbmNlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDExLTA3LTA4ICBKb3NlcGggUGVj
b3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQXBwbGljYXRpb25DYWNoZSB1
cGRhdGUgc2hvdWxkIG5vdCBpbW1lZGlhdGVseSBmYWlsIHdoZW4gcmVhY2hpbmcgcGVyLW9yaWdp
biBxdW90YQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjQxNzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFdpbkNFLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
Q2hyb21lQ2xpZW50V2luQ0U6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEpOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFdpbkNFLmg6CisKIDIwMTEtMDYt
MzAgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBLZW50IFRhbXVyYS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50V2luQ0UuY3BwIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRXaW5DRS5jcHAKaW5kZXggOWM5ZDU2NC4uNTk2MWJiZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRXaW5DRS5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRXaW5DRS5jcHAKQEAgLTMxNiw3ICszMTYsNyBAQCB2b2lkIENocm9tZUNsaWVudFdp
bkNFOjpyZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3QpCiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KIAotdm9pZCBDaHJvbWVDbGllbnRXaW5DRTo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVP
cmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiopCit2b2lkIENocm9tZUNsaWVudFdpbkNFOjpyZWFj
aGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKiwgaW50NjRfdCkK
IHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
aW5jZS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRXaW5DRS5oIGIvU291cmNlL1dlYktpdC93
aW5jZS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRXaW5DRS5oCmluZGV4IDQxZGI3Y2QuLmY3
ZDNkMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50V2luQ0UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudFdpbkNFLmgKQEAgLTEzMSw3ICsxMzEsNyBAQCBwdWJsaWM6CiAgICAgLy8g
bW9yZSB0aGFuIGFsbG93ZWQgb24gdGhpcyBvcmlnaW4uIFRoaXMgY2FsbGJhY2sgYWxsb3dzIHRo
ZSBjaHJvbWUgY2xpZW50CiAgICAgLy8gdG8gdGFrZSBhY3Rpb24sIHN1Y2ggYXMgcHJvbXB0aW5n
IHRoZSB1c2VyIHRvIGFzayB0byBpbmNyZWFzZSB0aGUgcXVvdGEKICAgICAvLyBmb3IgdGhpcyBv
cmlnaW4uCi0gICAgdmlydHVhbCB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVv
dGEoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFw
cGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGludDY0
X3Qgc3BhY2VOZWVkZWQpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93eC9D
aGFuZ2VMb2cKaW5kZXggNDJlN2JiNC4uYjc0NzRmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC93eC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNCBAQAorMjAxMS0wNy0wOCAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3Jn
PgorCisgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGUgdXBkYXRlIHNob3VsZCBub3QgaW1tZWRpYXRl
bHkgZmFpbCB3aGVuIHJlYWNoaW5nIHBlci1vcmlnaW4gcXVvdGEKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0MTc3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVu
dFd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFd4OjpyZWFjaGVkQXBwbGlj
YXRpb25DYWNoZU9yaWdpblF1b3RhKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNs
aWVudFd4Lmg6CisKIDIwMTEtMDctMDYgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2
aWVycy5jb20+CiAKICAgICAgICAgW3d4XSBVbnJldmlld2VkIGJ1aWxkIGZpeC4gRG9uJ3QgZXhw
b3NlIHRoZSBraXQgZnVuY3Rpb24gdG8gdGhlIHN3aWcgd3JhcHBlcnMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwIGIvU291cmNl
L1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcAppbmRleCBkMDE3MjZm
Li43OTk2OTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hy
b21lQ2xpZW50V3guY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJv
bWVDbGllbnRXeC5jcHAKQEAgLTQ0NSw3ICs0NDUsNyBAQCB2b2lkIENocm9tZUNsaWVudFd4Ojpy
ZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3Qgc3BhY2VOZWVkZWQpCiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0KIAotdm9pZCBDaHJvbWVDbGllbnRXeDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2Fj
aGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiopCit2b2lkIENocm9tZUNsaWVudFd4OjpyZWFj
aGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKiwgaW50NjRfdCkK
IHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmggYi9Tb3VyY2UvV2ViS2l0L3d4L1dlYktp
dFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaAppbmRleCA2NTU4N2M3Li5jMDdkNmEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaApAQCAtMTI4
LDcgKzEyOCw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElP
TlMpCiAgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRNYXhBcHBDYWNoZVNpemUoaW50NjRfdCBzcGFj
ZU5lZWRlZCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2lu
UXVvdGEoU2VjdXJpdHlPcmlnaW4qKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0
aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiosIGludDY0X3Qgc3BhY2VOZWVkZWQp
OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBkZDY2
MjAyLi5iMTY5M2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDctMDggIEpv
c2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBBcHBsaWNhdGlv
bkNhY2hlIHVwZGF0ZSBzaG91bGQgbm90IGltbWVkaWF0ZWx5IGZhaWwgd2hlbiByZWFjaGluZyBw
ZXItb3JpZ2luIHF1b3RhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02NDE3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hl
T3JpZ2luUXVvdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50Lmg6CisKIDIwMTEtMDctMDYgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQu
b3JnPgogCiAgICAgICAgIFtRdF1bV0syXSBTcGxpdCBRdCBBUEkgaW50byB0d28gZGlmZmVyZW50
IHdlYiB2aWV3cyAodG91Y2ggYW5kIGRlc2t0b3ApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5k
ZXggYzhmZmU1MS4uYjllNWVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtNTQyLDcg
KzU0Miw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGlu
dDY0X3QpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJDaHJvbWVDbGllbnQ6
OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4qKQordm9p
ZCBXZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2Vj
dXJpdHlPcmlnaW4qLCBpbnQ2NF90KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuaAppbmRleCBkMjg2NzFmLi45YjdhY2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmgKQEAgLTE0MCw3ICsxNDAsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKE9GRkxJTkVfV0VC
X0FQUExJQ0FUSU9OUykKICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZE1heEFwcENhY2hlU2l6ZShp
bnQ2NF90IHNwYWNlTmVlZGVkKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9u
Q2FjaGVPcmlnaW5RdW90YShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiopOworICAgIHZpcnR1YWwg
dm9pZCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luKiwgaW50NjRfdCBzcGFjZU5lZWRlZCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShEQVNI
Qk9BUkRfU1VQUE9SVCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCA3MTAxMGM0Li5jNTI2MGRlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMTEtMDctMDggIEpvc2Vw
aCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBBcHBsaWNhdGlvbkNh
Y2hlIHVwZGF0ZSBzaG91bGQgbm90IGltbWVkaWF0ZWx5IGZhaWwgd2hlbiByZWFjaGluZyBwZXIt
b3JpZ2luIHF1b3RhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02NDE3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZCBsYXlvdXRUZXN0Q29udHJvbGxlci5kaXNhbGxvd0luY3JlYXNlRm9yQXBwbGljYXRp
b25DYWNoZVF1b3RhKCkKKyAgICAgICAgdG8gZGlzYWJsZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBv
ZiByYWlzaW5nIHRoZSBkZWZhdWx0IHBlci1vcmlnaW4KKyAgICAgICAgcXVvdGEgdG8gNU1CIHdo
ZW4gcmVhY2hlZC4gVGhpcyBhbGxvd3MgdXMgdG8gdGVzdCB3aGF0IGhhcHBlbnMKKyAgICAgICAg
d2hlbiB0aGUgcXVvdGEgaXMgcmVhY2hlZCBhbmQgbm90IGluY3JlYXNlZC4KKworICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKExheW91
dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcik6CisgICAgICAgIChkaXNhbGxv
d0luY3JlYXNlRm9yQXBwbGljYXRpb25DYWNoZVF1b3RhQ2FsbGJhY2spOgorICAgICAgICAoTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9s
bGVyOjpkaXNhbGxvd0luY3JlYXNlRm9yQXBwbGljYXRpb25DYWNoZVF1b3RhKToKKyAgICAgICAg
KExheW91dFRlc3RDb250cm9sbGVyOjpzZXREaXNhbGxvd0luY3JlYXNlRm9yQXBwbGljYXRpb25D
YWNoZVF1b3RhKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJv
bGxlclF0LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpyZXNldCk6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oOgorICAgICAg
ICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmRpc2FsbG93SW5jcmVhc2VGb3JBcHBsaWNhdGlvbkNh
Y2hlUXVvdGEpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmR1bXBBcHBsaWNhdGlv
bkNhY2hlRGVsZWdhdGVDYWxsYmFja3MpOgorICAgICAgICBFeHBvc2UgYSBmdW5jdGlvbiB0byBw
cmV2ZW50IGF1dG9tYXRpY2FsbHkgaW5jcmVhc2luZyB0aGUgcGVyLW9yaWdpbgorICAgICAgICBx
dW90YSB3aGVuIHRoZSBxdW90YSBpcyByZWFjaGVkLiBUaGlzIGFsbG93cyB1cyB0byB0ZXN0IHdo
YXQgaGFwcGVucworICAgICAgICB3aGVuIGEgdXNlciB3b3VsZCAiZGlzYWxsb3ciIGEgcXVvdGEg
aW5jcmVhc2UuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbToK
KyAgICAgICAgKC1bVUlEZWxlZ2F0ZSB3ZWJWaWV3OmV4Y2VlZGVkQXBwbGljYXRpb25DYWNoZU9y
aWdpblF1b3RhRm9yU2VjdXJpdHlPcmlnaW46c3BhY2VOZWVkZWQ6XSk6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
dW1wUmVuZGVyVHJlZTo6ZHVtcEFwcGxpY2F0aW9uQ2FjaGVRdW90YSk6CisgICAgICAgIFJlc3Bl
Y3QgdGhlIG5ldyBkaXNhbGxvd0luY3JlYXNlIGZsYWcgYW5kIGR1bXAgdGhlIHNwYWNlTmVlZGVk
IHZhbHVlcworICAgICAgICBmb3IgcG9ydHMgdGhhdCBpbXBsZW1lbnQgYXBwbGljYXRpb24gY2Fj
aGUgcXVvdGFzLgorCiAyMDExLTA3LTA2ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIG5yd3Q6IGZpeCB0eXBvIHByZXZlbnRpbmcgaHR0cCBzdGFydHVwIG9u
IHdpbmRvd3MKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cAppbmRleCBkZjZmMzUxLi45OTIyMjE4IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5
b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC00Myw3ICs0Myw4IEBACiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgogCiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsZXIoY29u
c3Qgc3RkOjpzdHJpbmcmIHRlc3RQYXRoT3JVUkwsIGNvbnN0IHN0ZDo6c3RyaW5nJiBleHBlY3Rl
ZFBpeGVsSGFzaCkKLSAgICA6IG1fZHVtcEFwcGxpY2F0aW9uQ2FjaGVEZWxlZ2F0ZUNhbGxiYWNr
cyhmYWxzZSkKKyAgICA6IG1fZGlzYWxsb3dJbmNyZWFzZUZvckFwcGxpY2F0aW9uQ2FjaGVRdW90
YShmYWxzZSkKKyAgICAsIG1fZHVtcEFwcGxpY2F0aW9uQ2FjaGVEZWxlZ2F0ZUNhbGxiYWNrcyhm
YWxzZSkKICAgICAsIG1fZHVtcEFzQXVkaW8oZmFsc2UpCiAgICAgLCBtX2R1bXBBc1BERihmYWxz
ZSkKICAgICAsIG1fZHVtcEFzVGV4dChmYWxzZSkKQEAgLTk4LDYgKzk5LDEzIEBAIFBhc3NSZWZQ
dHI8TGF5b3V0VGVzdENvbnRyb2xsZXI+IExheW91dFRlc3RDb250cm9sbGVyOjpjcmVhdGUoY29u
c3Qgc3RkOjpzdHJpbmcmCiAKIC8vIFN0YXRpYyBGdW5jdGlvbnMKIAorc3RhdGljIEpTVmFsdWVS
ZWYgZGlzYWxsb3dJbmNyZWFzZUZvckFwcGxpY2F0aW9uQ2FjaGVRdW90YUNhbGxiYWNrKEpTQ29u
dGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09i
amVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10s
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29u
dHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQ
cml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5zZXREaXNhbGxvd0luY3JlYXNl
Rm9yQXBwbGljYXRpb25DYWNoZVF1b3RhKHRydWUpOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVu
ZGVmaW5lZChjb250ZXh0KTsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYgZHVtcEFwcGxpY2F0aW9u
Q2FjaGVEZWxlZ2F0ZUNhbGxiYWNrc0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09i
amVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50
Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlv
bikKIHsKICAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0
PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsK
QEAgLTIyNjMsNiArMjI3MSw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91dFRlc3RDb250cm9s
bGVyOjpzdGF0aWNGdW5jdGlvbnMoKQogICAgICAgICB7ICJub2Rlc0Zyb21SZWN0Iiwgbm9kZXNG
cm9tUmVjdENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImRlY29kZUhvc3ROYW1lIiwgZGVj
b2RlSG9zdE5hbWVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJkaXNhYmxlSW1hZ2VMb2Fk
aW5nIiwgZGlzYWJsZUltYWdlTG9hZGluZ0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgImRp
c2FsbG93SW5jcmVhc2VGb3JBcHBsaWNhdGlvbkNhY2hlUXVvdGEiLCBkaXNhbGxvd0luY3JlYXNl
Rm9yQXBwbGljYXRpb25DYWNoZVF1b3RhQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiZGlz
cGF0Y2hQZW5kaW5nTG9hZFJlcXVlc3RzIiwgZGlzcGF0Y2hQZW5kaW5nTG9hZFJlcXVlc3RzQ2Fs
bGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiZGlzcGxheSIsIGRpc3BsYXlDYWxsYmFjaywga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LAogICAgICAgICB7ICJkaXNwbGF5SW52YWxpZGF0ZWRSZWdpb24iLCBkaXNwbGF5SW52YWxp
ZGF0ZWRSZWdpb25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91
dFRlc3RDb250cm9sbGVyLmgKaW5kZXggZGY3NWJlYS4uMTNhZmE5NyAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCkBAIC0xNTUsNiArMTU1LDkgQEAgcHVi
bGljOgogICAgIGJvb2wgZ2VuZXJhdGVQaXhlbFJlc3VsdHMoKSBjb25zdCB7IHJldHVybiBtX2dl
bmVyYXRlUGl4ZWxSZXN1bHRzOyB9CiAgICAgdm9pZCBzZXRHZW5lcmF0ZVBpeGVsUmVzdWx0cyhi
b29sIGdlbmVyYXRlUGl4ZWxSZXN1bHRzKSB7IG1fZ2VuZXJhdGVQaXhlbFJlc3VsdHMgPSBnZW5l
cmF0ZVBpeGVsUmVzdWx0czsgfQogCisgICAgYm9vbCBkaXNhbGxvd0luY3JlYXNlRm9yQXBwbGlj
YXRpb25DYWNoZVF1b3RhKCkgY29uc3QgeyByZXR1cm4gbV9kaXNhbGxvd0luY3JlYXNlRm9yQXBw
bGljYXRpb25DYWNoZVF1b3RhOyB9CisgICAgdm9pZCBzZXREaXNhbGxvd0luY3JlYXNlRm9yQXBw
bGljYXRpb25DYWNoZVF1b3RhKGJvb2wgZGlzYWxsb3dJbmNyZWFzZSkgeyBtX2Rpc2FsbG93SW5j
cmVhc2VGb3JBcHBsaWNhdGlvbkNhY2hlUXVvdGEgPSBkaXNhbGxvd0luY3JlYXNlOyB9CisKICAg
ICBib29sIGR1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3MoKSBjb25zdCB7IHJl
dHVybiBtX2R1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3M7IH0KICAgICB2b2lk
IHNldER1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3MoYm9vbCBkdW1wQ2FsbGJh
Y2tzKSB7IG1fZHVtcEFwcGxpY2F0aW9uQ2FjaGVEZWxlZ2F0ZUNhbGxiYWNrcyA9IGR1bXBDYWxs
YmFja3M7IH0KIApAQCAtMzUxLDYgKzM1NCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldEdl
b2xvY2F0aW9uUGVybWlzc2lvbkNvbW1vbihib29sIGFsbG93KTsKIAorICAgIGJvb2wgbV9kaXNh
bGxvd0luY3JlYXNlRm9yQXBwbGljYXRpb25DYWNoZVF1b3RhOwogICAgIGJvb2wgbV9kdW1wQXBw
bGljYXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzOwogICAgIGJvb2wgbV9kdW1wQXNBdWRpbzsK
ICAgICBib29sIG1fZHVtcEFzUERGOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL1VJRGVsZWdhdGUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5t
bQppbmRleCA2Yjg0NzM4Li5lYmU4NzYyIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvVUlEZWxlZ2F0ZS5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxl
Z2F0ZS5tbQpAQCAtMTY2LDEzICsxNjYsMTYgQEAgRHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8g
KmRyYWdnaW5nSW5mbyA9IG5pbDsKICAgICBbW29yaWdpbiBkYXRhYmFzZVF1b3RhTWFuYWdlcl0g
c2V0UXVvdGE6ZGVmYXVsdFF1b3RhXTsKIH0KIAotLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICop
c2VuZGVyIGV4Y2VlZGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhRm9yU2VjdXJpdHlPcmln
aW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luCistICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcg
KilzZW5kZXIgZXhjZWVkZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGFGb3JTZWN1cml0eU9y
aWdpbjooV2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4gc3BhY2VOZWVkZWQ6KE5TVUludGVnZXIp
c3BhY2VOZWVkZWQKIHsKICAgICBpZiAoIWRvbmUgJiYgZ0xheW91dFRlc3RDb250cm9sbGVyLT5k
dW1wQXBwbGljYXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzKCkpIHsKLSAgICAgICAgcHJpbnRm
KCJVSSBERUxFR0FURSBBUFBMSUNBVElPTiBDQUNIRSBDQUxMQkFDSzogZXhjZWVkZWRBcHBsaWNh
dGlvbkNhY2hlT3JpZ2luUXVvdGFGb3JTZWN1cml0eU9yaWdpbjp7JXMsICVzLCAlaX1cbiIsCi0g
ICAgICAgICAgICBbW29yaWdpbiBwcm90b2NvbF0gVVRGOFN0cmluZ10sIFtbb3JpZ2luIGhvc3Rd
IFVURjhTdHJpbmddLCBbb3JpZ2luIHBvcnRdKTsKKyAgICAgICAgcHJpbnRmKCJVSSBERUxFR0FU
RSBBUFBMSUNBVElPTiBDQUNIRSBDQUxMQkFDSzogZXhjZWVkZWRBcHBsaWNhdGlvbkNhY2hlT3Jp
Z2luUXVvdGFGb3JTZWN1cml0eU9yaWdpbjp7JXMsICVzLCAlaX0gc3BhY2VOZWVkZWQ6JWx1XG4i
LAorICAgICAgICAgICAgW1tvcmlnaW4gcHJvdG9jb2xdIFVURjhTdHJpbmddLCBbW29yaWdpbiBo
b3N0XSBVVEY4U3RyaW5nXSwgW29yaWdpbiBwb3J0XSwgc3BhY2VOZWVkZWQpOwogICAgIH0KIAor
ICAgIGlmIChnTGF5b3V0VGVzdENvbnRyb2xsZXItPmRpc2FsbG93SW5jcmVhc2VGb3JBcHBsaWNh
dGlvbkNhY2hlUXVvdGEoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIGxvbmcgbG9uZyBkZWZhdWx0T3JpZ2luUXVvdGEgPSBbV2ViQXBwbGljYXRpb25DYWNo
ZSBkZWZhdWx0T3JpZ2luUXVvdGFdOwogICAgIFtbb3JpZ2luIGFwcGxpY2F0aW9uQ2FjaGVRdW90
YU1hbmFnZXJdIHNldFF1b3RhOmRlZmF1bHRPcmlnaW5RdW90YV07CiB9CmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNwcCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuY3BwCmluZGV4IDdmNWY4MjIuLmY0Mjc4NmQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuY3Bw
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuY3BwCkBAIC00
NTksOCArNDU5LDggQEAgRHVtcFJlbmRlclRyZWU6OkR1bXBSZW5kZXJUcmVlKCkKICAgICAgICAg
ICAgIFNMT1QodGl0bGVDaGFuZ2VkKGNvbnN0IFFTdHJpbmcmKSkpOwogICAgIGNvbm5lY3QobV9w
YWdlLCBTSUdOQUwoZGF0YWJhc2VRdW90YUV4Y2VlZGVkKFFXZWJGcmFtZSosUVN0cmluZykpLAog
ICAgICAgICAgICAgdGhpcywgU0xPVChkdW1wRGF0YWJhc2VRdW90YShRV2ViRnJhbWUqLFFTdHJp
bmcpKSk7Ci0gICAgY29ubmVjdChtX3BhZ2UsIFNJR05BTChhcHBsaWNhdGlvbkNhY2hlUXVvdGFF
eGNlZWRlZChRV2ViU2VjdXJpdHlPcmlnaW4gKiwgcXVpbnQ2NCkpLAotICAgICAgICAgICAgdGhp
cywgU0xPVChkdW1wQXBwbGljYXRpb25DYWNoZVF1b3RhKFFXZWJTZWN1cml0eU9yaWdpbiAqLCBx
dWludDY0KSkpOworICAgIGNvbm5lY3QobV9wYWdlLCBTSUdOQUwoYXBwbGljYXRpb25DYWNoZVF1
b3RhRXhjZWVkZWQoUVdlYlNlY3VyaXR5T3JpZ2luICosIHF1aW50NjQsIHF1aW50NjQpKSwKKyAg
ICAgICAgICAgIHRoaXMsIFNMT1QoZHVtcEFwcGxpY2F0aW9uQ2FjaGVRdW90YShRV2ViU2VjdXJp
dHlPcmlnaW4gKiwgcXVpbnQ2NCwgcXVpbnQ2NCkpKTsKICAgICBjb25uZWN0KG1fcGFnZSwgU0lH
TkFMKHN0YXR1c0Jhck1lc3NhZ2UoY29uc3QgUVN0cmluZyYpKSwKICAgICAgICAgICAgIHRoaXMs
IFNMT1Qoc3RhdHVzQmFyTWVzc2FnZShjb25zdCBRU3RyaW5nJikpKTsKIApAQCAtMTAzOSwxNiAr
MTAzOSwyMSBAQCB2b2lkIER1bXBSZW5kZXJUcmVlOjpkdW1wRGF0YWJhc2VRdW90YShRV2ViRnJh
bWUqIGZyYW1lLCBjb25zdCBRU3RyaW5nJiBkYk5hbWUpCiAgICAgb3JpZ2luLnNldERhdGFiYXNl
UXVvdGEoZGF0YWJhc2VEZWZhdWx0UXVvdGEpOwogfQogCi12b2lkIER1bXBSZW5kZXJUcmVlOjpk
dW1wQXBwbGljYXRpb25DYWNoZVF1b3RhKFFXZWJTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBxdWlu
dDY0IGRlZmF1bHRPcmlnaW5RdW90YSkKK3ZvaWQgRHVtcFJlbmRlclRyZWU6OmR1bXBBcHBsaWNh
dGlvbkNhY2hlUXVvdGEoUVdlYlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIHF1aW50NjQgZGVmYXVs
dE9yaWdpblF1b3RhLCBxdWludDY0IHNwYWNlTmVlZGVkKQogewogICAgIGlmICghbV9jb250cm9s
bGVyLT5zaG91bGREdW1wQXBwbGljYXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIHByaW50ZigiVUkgREVMRUdBVEUgQVBQTElDQVRJT04gQ0FDSEUg
Q0FMTEJBQ0s6IGV4Y2VlZGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhRm9yU2VjdXJpdHlP
cmlnaW46eyVzLCAlcywgJWl9XG4iLAorICAgIHByaW50ZigiVUkgREVMRUdBVEUgQVBQTElDQVRJ
T04gQ0FDSEUgQ0FMTEJBQ0s6IGV4Y2VlZGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhRm9y
U2VjdXJpdHlPcmlnaW46eyVzLCAlcywgJWl9XG4gc3BhY2VOZWVkZWQ6JWxsdSIsCiAgICAgICAg
ICAgIG9yaWdpbi0+c2NoZW1lKCkudG9VdGY4KCkuZGF0YSgpLAogICAgICAgICAgICBvcmlnaW4t
Pmhvc3QoKS50b1V0ZjgoKS5kYXRhKCksCi0gICAgICAgICAgIG9yaWdpbi0+cG9ydCgpCisgICAg
ICAgICAgIG9yaWdpbi0+cG9ydCgpLAorICAgICAgICAgICBzcGFjZU5lZWRlZAogICAgICAgICAg
ICApOworCisgICAgaWYgKG1fY29udHJvbGxlci0+c2hvdWxkRGlzYWxsb3dJbmNyZWFzZUZvckFw
cGxpY2F0aW9uQ2FjaGVRdW90YSgpKQorICAgICAgICByZXR1cm47CisKICAgICBvcmlnaW4tPnNl
dEFwcGxpY2F0aW9uQ2FjaGVRdW90YShkZWZhdWx0T3JpZ2luUXVvdGEpOwogfQogCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmggYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmgKaW5kZXggY2I2NjI5Ni4uYTFiMmFh
ZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5o
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuaApAQCAtMTE5
LDcgKzExOSw3IEBAIHB1YmxpYyBRX1NMT1RTOgogICAgIHZvaWQgdGl0bGVDaGFuZ2VkKGNvbnN0
IFFTdHJpbmcgJnMpOwogICAgIHZvaWQgY29ubmVjdEZyYW1lKFFXZWJGcmFtZSAqZnJhbWUpOwog
ICAgIHZvaWQgZHVtcERhdGFiYXNlUXVvdGEoUVdlYkZyYW1lKiBmcmFtZSwgY29uc3QgUVN0cmlu
ZyYgZGJOYW1lKTsKLSAgICB2b2lkIGR1bXBBcHBsaWNhdGlvbkNhY2hlUXVvdGEoUVdlYlNlY3Vy
aXR5T3JpZ2luKiBvcmlnaW4sIHF1aW50NjQgZGVmYXVsdE9yaWdpblF1b3RhKTsKKyAgICB2b2lk
IGR1bXBBcHBsaWNhdGlvbkNhY2hlUXVvdGEoUVdlYlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIHF1
aW50NjQgZGVmYXVsdE9yaWdpblF1b3RhLCBxdWludDY0IHNwYWNlTmVlZGVkKTsKICAgICB2b2lk
IHN0YXR1c0Jhck1lc3NhZ2UoY29uc3QgUVN0cmluZyYgbWVzc2FnZSk7CiAgICAgdm9pZCB3aW5k
b3dDbG9zZVJlcXVlc3RlZCgpOwogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9x
dC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xh
eW91dFRlc3RDb250cm9sbGVyUXQuY3BwCmluZGV4IDZiZjEwZTcuLjI0NGE5NGEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCkBA
IC01Niw2ICs1Niw3IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnJlc2V0KCkKICAgICBt
X2R1bXBDaGlsZEZyYW1lU2Nyb2xsUG9zaXRpb25zID0gZmFsc2U7CiAgICAgbV9jYW5PcGVuV2lu
ZG93cyA9IGZhbHNlOwogICAgIG1fd2FpdEZvckRvbmUgPSBmYWxzZTsKKyAgICBtX2Rpc2FsbG93
SW5jcmVhc2VGb3JBcHBsaWNhdGlvbkNhY2hlUXVvdGEgPSBmYWxzZTsKICAgICBtX2R1bXBUaXRs
ZUNoYW5nZXMgPSBmYWxzZTsKICAgICBtX2R1bXBEYXRhYmFzZUNhbGxiYWNrcyA9IGZhbHNlOwog
ICAgIG1fZHVtcEFwcGxpY2F0aW9uQ2FjaGVEZWxlZ2F0ZUNhbGxiYWNrcyA9IGZhbHNlOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5o
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCmluZGV4
IDNlM2U3NjkuLjIwNTM5MjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xh
eW91dFRlc3RDb250cm9sbGVyUXQuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlv
dXRUZXN0Q29udHJvbGxlclF0LmgKQEAgLTU5LDYgKzU5LDcgQEAgY2xhc3MgTGF5b3V0VGVzdENv
bnRyb2xsZXIgOiBwdWJsaWMgUU9iamVjdCB7CiBwdWJsaWM6CiAgICAgTGF5b3V0VGVzdENvbnRy
b2xsZXIoV2ViQ29yZTo6RHVtcFJlbmRlclRyZWUqIGRydCk7CiAKKyAgICBib29sIHNob3VsZERp
c2FsbG93SW5jcmVhc2VGb3JBcHBsaWNhdGlvbkNhY2hlUXVvdGEoKSBjb25zdCB7IHJldHVybiBt
X2Rpc2FsbG93SW5jcmVhc2VGb3JBcHBsaWNhdGlvbkNhY2hlUXVvdGE7IH0KICAgICBib29sIHNo
b3VsZER1bXBBc1RleHQoKSBjb25zdCB7IHJldHVybiBtX3RleHREdW1wOyB9CiAgICAgYm9vbCBz
aG91bGREdW1wQmFja0ZvcndhcmRMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9kdW1wQmFja0Zvcndh
cmRMaXN0OyB9CiAgICAgYm9vbCBzaG91bGREdW1wQ2hpbGRyZW5Bc1RleHQoKSBjb25zdCB7IHJl
dHVybiBtX2R1bXBDaGlsZHJlbkFzVGV4dDsgfQpAQCAtOTEsMTEgKzkyLDEyIEBAIHNpZ25hbHM6
CiAKIHB1YmxpYyBzbG90czoKICAgICB2b2lkIG1heWJlRHVtcChib29sIG9rKTsKKyAgICB2b2lk
IGRpc2FsbG93SW5jcmVhc2VGb3JBcHBsaWNhdGlvbkNhY2hlUXVvdGEoKSB7IG1fZGlzYWxsb3dJ
bmNyZWFzZUZvckFwcGxpY2F0aW9uQ2FjaGVRdW90YSA9IHRydWU7IH0KICAgICB2b2lkIGR1bXBB
c1RleHQoKSB7IG1fdGV4dER1bXAgPSB0cnVlOyB9CiAgICAgdm9pZCBkdW1wQ2hpbGRGcmFtZXNB
c1RleHQoKSB7IG1fZHVtcENoaWxkcmVuQXNUZXh0ID0gdHJ1ZTsgfQogICAgIHZvaWQgZHVtcENo
aWxkRnJhbWVTY3JvbGxQb3NpdGlvbnMoKSB7IG1fZHVtcENoaWxkRnJhbWVTY3JvbGxQb3NpdGlv
bnMgPSB0cnVlOyB9CiAgICAgdm9pZCBkdW1wRGF0YWJhc2VDYWxsYmFja3MoKSB7IG1fZHVtcERh
dGFiYXNlQ2FsbGJhY2tzID0gdHJ1ZTsgfQotICAgIHZvaWQgZHVtcEFwcGxpY2F0aW9uQ2FjaGVE
ZWxlZ2F0ZUNhbGxiYWNrcygpIHsgbV9kdW1wQXBwbGljYXRpb25DYWNoZURlbGVnYXRlQ2FsbGJh
Y2tzID0gdHJ1ZTt9CisgICAgdm9pZCBkdW1wQXBwbGljYXRpb25DYWNoZURlbGVnYXRlQ2FsbGJh
Y2tzKCkgeyBtX2R1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3MgPSB0cnVlOyB9
CiAgICAgdm9pZCBkdW1wU3RhdHVzQ2FsbGJhY2tzKCkgeyBtX2R1bXBTdGF0dXNDYWxsYmFja3Mg
PSB0cnVlOyB9CiAgICAgdm9pZCBzZXRDYW5PcGVuV2luZG93cygpIHsgbV9jYW5PcGVuV2luZG93
cyA9IHRydWU7IH0KICAgICB2b2lkIHNldFByaW50aW5nKCkgeyBtX2lzUHJpbnRpbmcgPSB0cnVl
OyB9CkBAIC0yODUsNiArMjg3LDcgQEAgcHJpdmF0ZToKIHByaXZhdGU6CiAgICAgYm9vbCBtX2hh
c0R1bXBlZDsKICAgICBib29sIG1fdGV4dER1bXA7CisgICAgYm9vbCBtX2Rpc2FsbG93SW5jcmVh
c2VGb3JBcHBsaWNhdGlvbkNhY2hlUXVvdGE7CiAgICAgYm9vbCBtX2R1bXBCYWNrRm9yd2FyZExp
c3Q7CiAgICAgYm9vbCBtX2R1bXBDaGlsZHJlbkFzVGV4dDsKICAgICBib29sIG1fZHVtcENoaWxk
RnJhbWVTY3JvbGxQb3NpdGlvbnM7Cg==
</data>
<flag name="review"
          id="94843"
          type_id="1"
          status="+"
          setter="ap"
    />
    <flag name="commit-queue"
          id="94844"
          type_id="3"
          status="-"
          setter="joepeck"
    />
          </attachment>
      

    </bug>

</bugzilla>