<?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>238068</bug_id>
          
          <creation_ts>2022-03-18 00:24:48 -0700</creation_ts>
          <short_desc>Remove push subscriptions when permissions are reset</short_desc>
          <delta_ts>2022-03-31 08:09: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>New Bugs</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>237983</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ben Nham">nham</reporter>
          <assigned_to name="Ben Nham">nham</assigned_to>
          <cc>beidson</cc>
    
    <cc>nham</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1852633</commentid>
    <comment_count>0</comment_count>
    <who name="Ben Nham">nham</who>
    <bug_when>2022-03-18 00:24:48 -0700</bug_when>
    <thetext>Remove push subscriptions when permissions are reset</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852637</commentid>
    <comment_count>1</comment_count>
      <attachid>455073</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2022-03-18 00:40:39 -0700</bug_when>
    <thetext>Created attachment 455073
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852638</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-18 00:41:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/90475499&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852839</commentid>
    <comment_count>3</comment_count>
      <attachid>455136</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2022-03-18 14:31:47 -0700</bug_when>
    <thetext>Created attachment 455136
rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854515</commentid>
    <comment_count>4</comment_count>
      <attachid>455586</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2022-03-23 17:33:11 -0700</bug_when>
    <thetext>Created attachment 455586
rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854626</commentid>
    <comment_count>5</comment_count>
      <attachid>455586</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-24 02:50:21 -0700</bug_when>
    <thetext>Comment on attachment 455586
rebase

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Avoid firing the push event if it has no chance of actually displaying a user notification.

It seems to be late to do this after having started the service worker.
Can we do that check directly in UIProcess?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855029</commentid>
    <comment_count>6</comment_count>
    <who name="Ben Nham">nham</who>
    <bug_when>2022-03-25 00:02:30 -0700</bug_when>
    <thetext>I think I want to get the message to at least NetworkProcess, because in the event that we lack permissions to display the notification, then I probably want to either trigger the silent push logic or remove the subscription entirely. Both require communicating with webpushd, which requires going through NetworkProcess.

But yes, I think it&apos;s a good idea to avoid having NetworkProcess spawn a WebProcess that just early-exits with the permissions error. Let me look into moving the logic up one level to NetworkProcess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855043</commentid>
    <comment_count>7</comment_count>
      <attachid>455740</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2022-03-25 01:44:23 -0700</bug_when>
    <thetext>Created attachment 455740
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855095</commentid>
    <comment_count>8</comment_count>
      <attachid>455765</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2022-03-25 08:33:55 -0700</bug_when>
    <thetext>Created attachment 455765
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855107</commentid>
    <comment_count>9</comment_count>
      <attachid>455765</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-25 08:58:31 -0700</bug_when>
    <thetext>Comment on attachment 455765
Patch

Overall, looks good to me.
Some suggestions below and an interrogation about whether we need to special case denied vs. prompt.

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

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:2284
&gt; +    //    topics list in webpushd to prevent unnecessary pushes from being received at all.

I am not sure why we should be more tolerant with denied than with prompt.
If user sets it to deny, I would expect it to stay like this for a while if not forever, in which case deleting the subscription seems good, no?

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:2292
&gt; +        if (permissionState == PushPermissionState::Prompt) {

Can we do this check in NetworkProcessProxy.
Then if denied, we bail out early and directly call callback(false).
If prompt, we could either reuse an existing IPC message if we have the right granularity with NetworkProcessProxy::deleteWebsiteDataForOrigins or create a new message (clearPushSubscriptionsForOrigin maybe?).

&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:1775
&gt; +    auto permissions = WebNotificationManagerProxy::sharedServiceWorkerManager().notificationPermissions();

It is not great we have to create an entirely new map just to query one value.
Could we introduce a permission getter, something like WebNotificationManagerProxy::sharedServiceWorkerManager().permissionForOrigin(origin)?
That will also allow to centralise the default value there.

&gt; Source/WebKit/UIProcess/Notifications/WebNotificationManagerProxy.cpp:310
&gt; +        removePushSubscriptionsForOrigins(securityOrigins);

We are creating securityOrigins only for one of the code path. Should we contemplate doing only if needed?

&gt; Source/WebKit/UIProcess/Notifications/WebNotificationManagerProxy.cpp:311
&gt; +        WebProcessPool::sendToAllRemoteWorkerProcesses(Messages::WebNotificationManager::DidRemoveNotificationDecisions(originStrings));

From a style prospective, we tend to return early in that case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855111</commentid>
    <comment_count>10</comment_count>
    <who name="Ben Nham">nham</who>
    <bug_when>2022-03-25 09:10:38 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #9)
&gt; Comment on attachment 455765 [details]
&gt; Patch
&gt; 
&gt; Overall, looks good to me.
&gt; Some suggestions below and an interrogation about whether we need to special
&gt; case denied vs. prompt.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=455765&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:2284
&gt; &gt; +    //    topics list in webpushd to prevent unnecessary pushes from being received at all.
&gt; 
&gt; I am not sure why we should be more tolerant with denied than with prompt.
&gt; If user sets it to deny, I would expect it to stay like this for a while if
&gt; not forever, in which case deleting the subscription seems good, no?

Right, so another option is that if you set to deny, then eventually the subscription gets deleted (e.g. via the incrementSilentPushCount logic).

I wrote it this way because in the ideal case, changing the permission state to Denied would not increment silent push count or delete the push sub. Instead it would just move the associated push topic to the ignore list, which essentially puts the subscription in a paused state which causes the server to not deliver us any pushes for that topic. We could then remove that topic from the ignore list when the user toggles the preference back to on.

However, the state synchronization between the browser process and System Preferences for the allow/deny state change is pretty wonky right now and I don&apos;t feel super comfortable about committing that ideal change.

So maybe the right thing to do for now is to have the Denied case increment the silent push count. Let me see what Brady thinks as well.

&gt; &gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:2292
&gt; &gt; +        if (permissionState == PushPermissionState::Prompt) {
&gt; 
&gt; Can we do this check in NetworkProcessProxy.
&gt; Then if denied, we bail out early and directly call callback(false).
&gt; If prompt, we could either reuse an existing IPC message if we have the
&gt; right granularity with NetworkProcessProxy::deleteWebsiteDataForOrigins or
&gt; create a new message (clearPushSubscriptionsForOrigin maybe?).

I will look into this depending on whether we decide to make the Denied case increment the silent push count or not.

&gt; &gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:1775
&gt; &gt; +    auto permissions = WebNotificationManagerProxy::sharedServiceWorkerManager().notificationPermissions();
&gt; 
&gt; It is not great we have to create an entirely new map just to query one
&gt; value.
&gt; Could we introduce a permission getter, something like
&gt; WebNotificationManagerProxy::sharedServiceWorkerManager().
&gt; permissionForOrigin(origin)?
&gt; That will also allow to centralise the default value there.

That&apos;s a good idea. I might want to do it in a different patch since it requires an API change and I&apos;m not sure how involved that is yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855124</commentid>
    <comment_count>11</comment_count>
    <who name="Ben Nham">nham</who>
    <bug_when>2022-03-25 09:30:39 -0700</bug_when>
    <thetext>After thinking it through a bit more, I think we can get the Denied case to do the right thing, although it is a bit more of an involved patch involving some state sync between the browser process and webpushd. I think it&apos;s best for me to do that in a separate patch since it will be semi-involved. I will change the ChangeLog comment though to explain the new thinking there.

In terms of how we want to handle the Denied case in processPushMessage, I think I will keep the handling of that branch in NetworkProcess rather than NetworkProcessProxy since what we&apos;ll eventually do in that branch is send a message to webpushd to move the associated push topic to the ignore list. I&apos;ll add a FIXME to that branch in this patch.

I think we should also update the notification manager to allow for more granular querying of permission state, although again I&apos;ll probably do that in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855150</commentid>
    <comment_count>12</comment_count>
      <attachid>455778</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2022-03-25 10:19:22 -0700</bug_when>
    <thetext>Created attachment 455778
patch feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856011</commentid>
    <comment_count>13</comment_count>
      <attachid>455778</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-29 07:22:10 -0700</bug_when>
    <thetext>Comment on attachment 455778
patch feedback

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

&gt; Source/WebKit/ChangeLog:20
&gt; +        back on. We want the subscription object to stay the same after the preference is toggled

I am not 100% sure about this policy but I can live with it.
As a user, I sometimes change back from Allow to Prompt some permissions.
I would not expect Prompt to remove the subscriptions while Denied would keep them.

&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:1779
&gt; +        permission = it-&gt;value ? PushPermissionState::Granted : PushPermissionState::Denied;

In case permission is denied, I would exit early, it does not seem worth to start the network process proxy for no good reason.

&gt; Source/WebKit/UIProcess/Notifications/WebNotificationManagerProxy.cpp:278
&gt; +        if (!networkProcess &amp;&amp; dataStore.isPersistent()) {

It is a bit weird to do this only for the first persistent session, can you explain?
I would be tempted to do this for all session IDs.

&gt; Source/WebKit/UIProcess/Notifications/WebNotificationManagerProxy.cpp:288
&gt; +        networkProcess-&gt;deletePushAndNotificationRegistration(sessionID, origin, [originString = origin.toString()](auto&amp;&amp;) { });

Should we add a deletePushAndNotificationRegistration taking a vector of origins to remove the multiple IPC dance?
Also, why do we need originString in the lambda?

&gt; Source/WebKit/webpushd/WebPushDaemon.mm:502
&gt; +    connection-&gt;enqueueAppBundleRequest(makeUnique&lt;AppBundleDeletionRequest&gt;(*connection, originString, [this, originString = String { originString }, replySender = WTFMove(replySender), bundleIdentifier = connection-&gt;hostAppCodeSigningIdentifier()](const String&amp; result) mutable {

s/const String&amp;/auto/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856293</commentid>
    <comment_count>14</comment_count>
    <who name="Ben Nham">nham</who>
    <bug_when>2022-03-29 23:03:28 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #13)
&gt; Comment on attachment 455778 [details]
&gt; patch feedback
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=455778&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/ChangeLog:20
&gt; &gt; +        back on. We want the subscription object to stay the same after the preference is toggled
&gt; 
&gt; I am not 100% sure about this policy but I can live with it.
&gt; As a user, I sometimes change back from Allow to Prompt some permissions.
&gt; I would not expect Prompt to remove the subscriptions while Denied would
&gt; keep them.

I agree it&apos;s a bit confusing. We did discuss this at the very beginning in the xfunc and we decided to this way because it mirrors what we do when a user toggles notifications on/off for native apps. But let me bring it up again in the next xfunc to make sure that everyone is on board with this behavior.

&gt; &gt; Source/WebKit/UIProcess/Notifications/WebNotificationManagerProxy.cpp:278
&gt; &gt; +        if (!networkProcess &amp;&amp; dataStore.isPersistent()) {
&gt; 
&gt; It is a bit weird to do this only for the first persistent session, can you
&gt; explain?
&gt; I would be tempted to do this for all session IDs.

We&apos;re basically just using NetworkProcess as a proxy to webpushd. Any persistent NetworkProcess session for a given UIProcess looks the same to webpushd, so we just arbitrarily choose the first one. In the case that there is no persistent session when this logic runs (which doesn&apos;t happen with our current browser implementation, but could happen in theory), we can fall back on the failsafe logic elsewhere in this patch that removes a subscription at push reception time if the notification policy doesn&apos;t exist.

&gt; &gt; Source/WebKit/UIProcess/Notifications/WebNotificationManagerProxy.cpp:288
&gt; &gt; +        networkProcess-&gt;deletePushAndNotificationRegistration(sessionID, origin, [originString = origin.toString()](auto&amp;&amp;) { });
&gt; 
&gt; Should we add a deletePushAndNotificationRegistration taking a vector of
&gt; origins to remove the multiple IPC dance?
&gt; Also, why do we need originString in the lambda?

I originally wrote another IPC that took a vector of origins. But it seems like our browser only removes one origin at a time in practice, so I decided to remove that and reuse the existing deletePushAndNotificationRegistration IPC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856302</commentid>
    <comment_count>15</comment_count>
      <attachid>456096</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2022-03-29 23:20:07 -0700</bug_when>
    <thetext>Created attachment 456096
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856304</commentid>
    <comment_count>16</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-29 23:21:12 -0700</bug_when>
    <thetext>ChangeLog entry in LayoutTests/ChangeLog contains OOPS!.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856490</commentid>
    <comment_count>17</comment_count>
      <attachid>456154</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2022-03-30 11:21:16 -0700</bug_when>
    <thetext>Created attachment 456154
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856544</commentid>
    <comment_count>18</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-30 13:23:39 -0700</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 456154 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856634</commentid>
    <comment_count>19</comment_count>
      <attachid>456192</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2022-03-30 18:36:38 -0700</bug_when>
    <thetext>Created attachment 456192
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856806</commentid>
    <comment_count>20</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-31 08:09:27 -0700</bug_when>
    <thetext>Committed r292158 (249065@main): &lt;https://commits.webkit.org/249065@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 456192.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455073</attachid>
            <date>2022-03-18 00:40:39 -0700</date>
            <delta_ts>2022-03-18 14:31:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238068-20220318004039.patch</filename>
            <type>text/plain</type>
            <size>16533</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNDI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmU1ZWRhYTc1ZDJiYjY2
MzRhM2Q5OTIyMmFmZGQwOTlmMmU4ODU5OC4uNTBhMzYyZDMxNDJjMGZhYTdmYzdhNGU3MTY0N2U3
NWNmYmM2N2ExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIyLTAzLTE4ICBCZW4g
TmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBwdXNoIHN1YnNjcmlwdGlv
bnMgd2hlbiBwZXJtaXNzaW9ucyBhcmUgcmVzZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODA2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgIEF2
b2lkIGZpcmluZyB0aGUgcHVzaCBldmVudCBpZiBpdCBoYXMgbm8gY2hhbmNlIG9mIGFjdHVhbGx5
IGRpc3BsYXlpbmcgYSB1c2VyIG5vdGlmaWNhdGlvbi4KKyAgICAgICAgVGhpcyBhY3RzIGFzIGEg
YmFja3N0b3AgaW4gY2FzZXMgd2hlcmUgdGhlIG5vdGlmaWNhdGlvbiBwZXJtaXNzaW9uIGZvciBh
biBvcmlnaW4gaXMgcmV2b2tlZAorICAgICAgICBidXQgYXNzb2NpYXRlZCBwdXNoIHN1YnNjcmlw
dGlvbnMgaGF2ZW4ndCB5ZXQgYmVlbiByZW1vdmVkIGluIHdlYnB1c2hkLgorCisgICAgICAgICog
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpxdWV1ZVRhc2tUb0ZpcmVQdXNoRXZlbnQp
OgorCiAyMDIyLTAzLTE3ICBFbGxpZSBFcHNrYW1wLUh1bnQgIDxlZXBza2FtcGh1bnRAYXBwbGUu
Y29tPgogCiAgICAgICAgIFdoZW4gYSDigJxhdXRvZmlsbGVkIGFuZCBvYnNjdXJlZOKAnSBmaWVs
ZCBiZWNvbWVzIGVtcHR5LCB0dXJuIOKAnGF1dG9maWxsZWQgYW5kIG9ic2N1cmVk4oCdIG9mZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCA1NjIzZDZhZTlhNTNkNjZlMDgxY2Q1ZTlmYjFjMDRjMmYyMmZiN2MzLi5hMzRm
NjM0MmM0MGJiOWRkMTc4YTcyZWJkNWI1MWI0MmM3NjkyYWFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI3IEBACisyMDIyLTAzLTE4ICBCZW4gTmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAg
IFJlbW92ZSBwdXNoIHN1YnNjcmlwdGlvbnMgd2hlbiBwZXJtaXNzaW9ucyBhcmUgcmVzZXQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODA2OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gdGhlIG5v
dGlmaWNhdGlvbiBwZXJtaXNzaW9uIGZvciBhbiBvcmlnaW4gaXMgcmVzZXQgKGkuZS4gaXMgc2V0
IHRvCisgICAgICAgIE5vdGlmaWNhdGlvblBlcm1pc3Npb246OkRlZmF1bHQpLCB3ZSBzaG91bGQg
ZGVsZXRlIGFueSBQdXNoU3Vic2NyaXB0aW9ucyBhc3NvY2lhdGVkIHdpdGgKKyAgICAgICAgdGhh
dCBvcmlnaW4uIFdlIGRvIHRoaXMgYnkgaGF2aW5nIHRoZSBwcm92aWRlckRpZFJlbW92ZU5vdGlm
aWNhdGlvblBvbGljaWVzIEFQSSBjYWxsCisgICAgICAgIGRlbGV0ZVB1c2hBbmROb3RpZmljYXRp
b25SZWdpc3RyYXRpb24gaW4gd2VicHVzaGQuCisKKyAgICAgICAgTm90ZSB0aGF0IHdlIGRvbid0
IGRlbGV0ZSB0aGUgc3Vic2NyaXB0aW9uIGlmIHRoZSBwZXJtaXNzaW9uIGlzIHNpbXBseSB0b2dn
bGVkIG9mZiAodmlhCisgICAgICAgIHByb3ZpZGVyRGlkVXBkYXRlTm90aWZpY2F0aW9uUG9saWN5
KS4gSW4gdGhhdCBjYXNlLCB0aGUgdXNlciBjYW4gZWFzaWx5IHRvZ2dsZSB0aGUKKyAgICAgICAg
cGVybWlzc2lvbiBiYWNrIG9uLiBFdmVudHVhbGx5IHdlIHdhbnQgdG8gaG9vayB1cCB0aGF0IEFQ
SSB0byBhZGQgYXNzb2NpYXRlZCBzdWJzY3JpcHRpb25zCisgICAgICAgIHRvIGFuIGlnbm9yZSBs
aXN0IGluIHdlYnB1c2hkLiBCdXQgYWZ0ZXIgc29tZSBkaXNjdXNzaW9uIHdlIGRlY2lkZWQgdGhh
dCB3YXNuJ3QgbmVjZXNzYXJ5CisgICAgICAgIHRvIGltcGxlbWVudCBmb3IgdGhlIG1vbWVudC4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OnJlbW92ZVB1c2hTdWJzY3JpcHRpb25zRm9y
T3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6
cHJvdmlkZXJEaWRSZW1vdmVOb3RpZmljYXRpb25Qb2xpY2llcyk6CisgICAgICAgICogd2VicHVz
aGQvV2ViUHVzaERhZW1vbi5tbToKKyAgICAgICAgKFdlYlB1c2hEOjpEYWVtb246OmRlbGV0ZVB1
c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb24pOgorCiAyMDIyLTAzLTE2ICBCZW4gTmhhbSAg
PG5oYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBwdXNoIHN1YnNjcmlwdGlvbnMgd2hl
biBhc3NvY2lhdGVkIHNlcnZpY2Ugd29ya2VyIHJlZ2lzdHJhdGlvbnMgYXJlIHJlbW92ZWQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlclRocmVhZC5jcHAKaW5kZXggMzBhOTgzNTEwNGE5YTcyZDE3MzQwOWM4NmJl
MDAwMzljNTEwNjhjNi4uYjBlYjk0N2M0ZjY4MTgyM2MwZmRiY2VkNTk0NTQxNTRmZjlkNTAzMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKQEAgLTIyMiw2ICsyMjIsMTggQEAgdm9pZCBT
ZXJ2aWNlV29ya2VyVGhyZWFkOjpxdWV1ZVRhc2tUb0ZpcmVQdXNoRXZlbnQoc3RkOjpvcHRpb25h
bDxWZWN0b3I8dWludDhfdD4KIHsKICAgICBhdXRvJiBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUg
PSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KCpnbG9iYWxTY29wZSgpKTsKICAg
ICBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3Vy
Y2U6OkRPTU1hbmlwdWxhdGlvbiwgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHNlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZSA9IFJlZiB7IHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSB9LCBk
YXRhID0gV1RGTW92ZShkYXRhKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRh
YmxlIHsKKyAgICAgICAgYXV0byBwZXJtaXNzaW9uID0gTm90aWZpY2F0aW9uUGVybWlzc2lvbjo6
RGVmYXVsdDsKKyAgICAgICAgaWYgKGF1dG8gbm90aWZpY2F0aW9uQ2xpZW50ID0gc3RhdGljX2Nh
c3Q8U2NyaXB0RXhlY3V0aW9uQ29udGV4dCY+KHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5nZXQo
KSkubm90aWZpY2F0aW9uQ2xpZW50KCkpCisgICAgICAgICAgICBwZXJtaXNzaW9uID0gbm90aWZp
Y2F0aW9uQ2xpZW50LT5jaGVja1Blcm1pc3Npb24oc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLnB0
cigpKTsKKworICAgICAgICAvLyBBbGwgUHVzaFN1YnNjcmlwdGlvbnMgYXJlIGNyZWF0ZWQgd2l0
aCB0aGUgdXNlclZpc2libGVPbmx5IGZsYWcgc2V0LCBzbyBkb24ndCBib3RoZXIgZmlyaW5nCisg
ICAgICAgIC8vIHRoZSBwdXNoIGV2ZW50IGlmIHRoZXJlJ3Mgbm8gd2F5IGZvciBhIG5vdGlmaWNh
dGlvbiB0byBhY3R1YWxseSBiZSBkaXNwbGF5ZWQuCisgICAgICAgIGlmIChwZXJtaXNzaW9uICE9
IE5vdGlmaWNhdGlvblBlcm1pc3Npb246OkdyYW50ZWQpIHsKKyAgICAgICAgICAgIFJFTEVBU0Vf
TE9HKFNlcnZpY2VXb3JrZXIsICJTZXJ2aWNlV29ya2VyVGhyZWFkOjpxdWV1ZVRhc2tUb0ZpcmVQ
dXNoRXZlbnQgc2tpcHBpbmcgcHVzaCBldmVudCBmb3Igd29ya2VyICUiIFBSSXU2NCAiIGJlY2F1
c2Ugbm90aWZpY2F0aW9uIHBlcm1pc3Npb24gaXMgJWQiIFBSSXU2NCwgc2VydmljZVdvcmtlckds
b2JhbFNjb3BlLT50aHJlYWQoKS5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwgc3RhdGljX2Nhc3Q8
aW50PihwZXJtaXNzaW9uKSk7CisgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29y
a2VyLCAiU2VydmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNrVG9GaXJlUHVzaEV2ZW50IGZpcmlu
ZyBldmVudCBmb3Igd29ya2VyICUiIFBSSXU2NCwgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLT50
aHJlYWQoKS5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiAKICAgICAgICAgc2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlLT5zZXRIYXNQZW5kaW5nU2lsZW50UHVzaEV2ZW50KHRydWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9u
cy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCmluZGV4IGIzYWM3MmI1ZjZjYjgxOWZk
OWEyYzA3NmIwZDY5MjYxY2JlNTE4MGEuLjIxNGQ4NjFmYjEzZDIwMzA5NWZiYjZlYTA3MmRkOTE2
MzYwNTRiMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlv
bnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKQEAg
LTM0LDcgKzM0LDkgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQ
cm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgorI2luY2x1ZGUgIldl
YnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05vdGlmaWNhdGlvbkRhdGEuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMjY3LDI1ICsyNjksNDggQEAgdm9p
ZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkVXBkYXRlTm90aWZpY2F0
aW9uUG9saWN5KGNvbnN0IEFQSToKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9BbGxQcm9jZXNz
ZXMoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZFVwZGF0ZU5vdGlmaWNhdGlv
bkRlY2lzaW9uKG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKS50b1N0cmluZygpLCBhbGxvd2VkKSk7
CiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZFJlbW92
ZU5vdGlmaWNhdGlvblBvbGljaWVzKEFQSTo6QXJyYXkqIG9yaWdpbnMpCitzdGF0aWMgdm9pZCBy
ZW1vdmVQdXNoU3Vic2NyaXB0aW9uc0Zvck9yaWdpbnMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdpbnMpCiB7Ci0gICAgaWYgKCFwcm9jZXNzUG9vbCgpKQor
ICAgIFJlZlB0cjxOZXR3b3JrUHJvY2Vzc1Byb3h5PiBuZXR3b3JrUHJvY2VzczsKKyAgICBhdXRv
IHNlc3Npb25JRCA9IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCk7CisKKyAgICBX
ZWJzaXRlRGF0YVN0b3JlOjpmb3JFYWNoV2Vic2l0ZURhdGFTdG9yZShbJm5ldHdvcmtQcm9jZXNz
LCAmc2Vzc2lvbklEXShXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpIHsKKyAgICAgICAgaWYg
KCFuZXR3b3JrUHJvY2VzcyAmJiBkYXRhU3RvcmUuaXNQZXJzaXN0ZW50KCkpIHsKKyAgICAgICAg
ICAgIG5ldHdvcmtQcm9jZXNzID0gJmRhdGFTdG9yZS5uZXR3b3JrUHJvY2VzcygpOworICAgICAg
ICAgICAgc2Vzc2lvbklEID0gZGF0YVN0b3JlLnNlc3Npb25JRCgpOworICAgICAgICB9CisgICAg
fSk7CisKKyAgICBpZiAoIW5ldHdvcmtQcm9jZXNzKQogICAgICAgICByZXR1cm47CiAKKyAgICBm
b3IgKGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpCisgICAgICAgIG5ldHdvcmtQcm9jZXNzLT5kZWxl
dGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKHNlc3Npb25JRCwgb3JpZ2luLCBbb3Jp
Z2luU3RyaW5nID0gb3JpZ2luLnRvU3RyaW5nKCldKGF1dG8mJikgeyB9KTsKK30KKwordm9pZCBX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkUmVtb3ZlTm90aWZpY2F0aW9u
UG9saWNpZXMoQVBJOjpBcnJheSogb3JpZ2lucykKK3sKICAgICBzaXplX3Qgc2l6ZSA9IG9yaWdp
bnMtPnNpemUoKTsKICAgICBpZiAoIXNpemUpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAg
IFZlY3RvcjxTdHJpbmc+IG9yaWdpblN0cmluZ3M7CisgICAgVmVjdG9yPFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YT4gc2VjdXJpdHlPcmlnaW5zOworCiAgICAgb3JpZ2luU3RyaW5ncy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6
ZTsgKytpKQotICAgICAgICBvcmlnaW5TdHJpbmdzLnVuY2hlY2tlZEFwcGVuZChvcmlnaW5zLT5h
dDxBUEk6OlNlY3VyaXR5T3JpZ2luPihpKS0+c2VjdXJpdHlPcmlnaW4oKS50b1N0cmluZygpKTsK
KyAgICBzZWN1cml0eU9yaWdpbnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXplKTsKIAotICAg
IFdlYlByb2Nlc3NQb29sOjpzZW5kVG9BbGxSZW1vdGVXb3JrZXJQcm9jZXNzZXMoTWVzc2FnZXM6
OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZFJlbW92ZU5vdGlmaWNhdGlvbkRlY2lzaW9ucyhv
cmlnaW5TdHJpbmdzKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsK
KyAgICAgICAgYXV0byBzZWN1cml0eU9yaWdpbiA9IG9yaWdpbnMtPmF0PEFQSTo6U2VjdXJpdHlP
cmlnaW4+KGkpLT5zZWN1cml0eU9yaWdpbigpOworICAgICAgICBvcmlnaW5TdHJpbmdzLnVuY2hl
Y2tlZEFwcGVuZChzZWN1cml0eU9yaWdpbi50b1N0cmluZygpKTsKKyAgICAgICAgc2VjdXJpdHlP
cmlnaW5zLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSk7CisgICAgfQog
Ci0gICAgaWYgKCFwcm9jZXNzUG9vbCgpKQotICAgICAgICByZXR1cm47Ci0gICAgcHJvY2Vzc1Bv
b2woKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
OjpEaWRSZW1vdmVOb3RpZmljYXRpb25EZWNpc2lvbnMob3JpZ2luU3RyaW5ncykpOworICAgIGlm
ICh0aGlzID09ICZzaGFyZWRTZXJ2aWNlV29ya2VyTWFuYWdlcigpKSB7CisgICAgICAgIHJlbW92
ZVB1c2hTdWJzY3JpcHRpb25zRm9yT3JpZ2lucyhzZWN1cml0eU9yaWdpbnMpOworICAgICAgICBX
ZWJQcm9jZXNzUG9vbDo6c2VuZFRvQWxsUmVtb3RlV29ya2VyUHJvY2Vzc2VzKE1lc3NhZ2VzOjpX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpEaWRSZW1vdmVOb3RpZmljYXRpb25EZWNpc2lvbnMob3Jp
Z2luU3RyaW5ncykpOworICAgIH0gZWxzZSBpZiAocHJvY2Vzc1Bvb2woKSkKKyAgICAgICAgcHJv
Y2Vzc1Bvb2woKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25N
YW5hZ2VyOjpEaWRSZW1vdmVOb3RpZmljYXRpb25EZWNpc2lvbnMob3JpZ2luU3RyaW5ncykpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2Vi
cHVzaGQvV2ViUHVzaERhZW1vbi5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERh
ZW1vbi5tbQppbmRleCBjYmQxMjcwM2I1OWVjZjVmMjUwN2M4MGRhYTAwM2JmZTJjOTczNGU0Li44
ODYzNzZjNjc5Mjk2ZDc3MGMwNWUyMDgyY2ZhNGJjODI2YTBjZWQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24ubW0KKysrIGIvU291cmNlL1dlYktpdC93
ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tCkBAIC00OTksNyArNDk5LDE4IEBAIHZvaWQgRGFlbW9u
OjpkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKENsaWVudENvbm5lY3Rpb24q
IGNvbm5lY3Rpb24sCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjb25uZWN0aW9uLT5l
bnF1ZXVlQXBwQnVuZGxlUmVxdWVzdChtYWtlVW5pcXVlPEFwcEJ1bmRsZURlbGV0aW9uUmVxdWVz
dD4oKmNvbm5lY3Rpb24sIG9yaWdpblN0cmluZywgV1RGTW92ZShyZXBseVNlbmRlcikpKTsKKyAg
ICBjb25uZWN0aW9uLT5lbnF1ZXVlQXBwQnVuZGxlUmVxdWVzdChtYWtlVW5pcXVlPEFwcEJ1bmRs
ZURlbGV0aW9uUmVxdWVzdD4oKmNvbm5lY3Rpb24sIG9yaWdpblN0cmluZywgW3RoaXMsIG9yaWdp
blN0cmluZyA9IFN0cmluZyB7IG9yaWdpblN0cmluZyB9LCByZXBseVNlbmRlciA9IFdURk1vdmUo
cmVwbHlTZW5kZXIpLCBidW5kbGVJZGVudGlmaWVyID0gY29ubmVjdGlvbi0+aG9zdEFwcENvZGVT
aWduaW5nSWRlbnRpZmllcigpXShjb25zdCBTdHJpbmcmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAg
ICAgIHJ1bkFmdGVyU3RhcnRpbmdQdXNoU2VydmljZShbdGhpcywgYnVuZGxlSWRlbnRpZmllciA9
IFdURk1vdmUoYnVuZGxlSWRlbnRpZmllciksIG9yaWdpblN0cmluZyA9IFdURk1vdmUob3JpZ2lu
U3RyaW5nKSwgcmVwbHlTZW5kZXIgPSBXVEZNb3ZlKHJlcGx5U2VuZGVyKSwgcmVzdWx0XSgpIG11
dGFibGUgeworICAgICAgICAgICAgaWYgKCFtX3B1c2hTZXJ2aWNlKSB7CisgICAgICAgICAgICAg
ICAgcmVwbHlTZW5kZXIocmVzdWx0KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIG1fcHVzaFNlcnZpY2UtPnJlbW92ZVJlY29yZHNGb3JCdW5k
bGVJZGVudGlmaWVyQW5kT3JpZ2luKGJ1bmRsZUlkZW50aWZpZXIsIG9yaWdpblN0cmluZywgW3Jl
cGx5U2VuZGVyID0gV1RGTW92ZShyZXBseVNlbmRlciksIHJlc3VsdF0oYXV0byYmKSBtdXRhYmxl
IHsKKyAgICAgICAgICAgICAgICByZXBseVNlbmRlcihyZXN1bHQpOworICAgICAgICAgICAgfSk7
CisgICAgICAgIH0pOworICAgIH0pKTsKIH0KIAogdm9pZCBEYWVtb246OnNldERlYnVnTW9kZUlz
RW5hYmxlZChDbGllbnRDb25uZWN0aW9uKiBjbGllbnRDb25uZWN0aW9uLCBib29sIGVuYWJsZWQp
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNGEw
M2YzYTY4Mzg2N2JiNTVmMjk4NWMxY2Y0ZTM0NTUyOTFmMGNhNS4uNmU4MTBhMzg2MDAxOWYyZGEx
YTBiODEyNTJkYjdjM2Y3MDZiNDhjOSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIyLTAzLTE4ICBCZW4gTmhhbSAg
PG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBwdXNoIHN1YnNjcmlwdGlvbnMgd2hl
biBwZXJtaXNzaW9ucyBhcmUgcmVzZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzODA2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBhIHRlc3QgdG8gbWFrZSBzdXJlIHB1c2ggc3Vic2NyaXB0aW9u
cyBhcmUgcmVtb3ZlZCB3aGVuIHRoZSBub3RpZmljYXRpb24gcG9saWN5IGZvciBhCisgICAgICAg
IHdlYnNpdGUgaXMgcmVzZXQuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3ROb3RpZmlj
YXRpb25Qcm92aWRlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0Tm90aWZpY2F0
aW9uUHJvdmlkZXI6OlRlc3ROb3RpZmljYXRpb25Qcm92aWRlcik6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXI6Om5vdGlmaWNhdGlvblBlcm1pc3Npb25z
IGNvbnN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3ROb3RpZmljYXRpb25Qcm92aWRl
cjo6c2V0UGVybWlzc2lvbik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0Tm90aWZpY2F0
aW9uUHJvdmlkZXI6OnJlc2V0UGVybWlzc2lvbik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24ubW06CisKIDIwMjItMDMtMTYgIEJlbiBOaGFtICA8
bmhhbUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHB1c2ggc3Vic2NyaXB0aW9ucyB3aGVu
IGFzc29jaWF0ZWQgc2VydmljZSB3b3JrZXIgcmVnaXN0cmF0aW9ucyBhcmUgcmVtb3ZlZApkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwCmluZGV4
IDA4MGYwNmE5OGNjOTE1NWU0ZWI5ZWYyNGIwNTg2Nzk4ODk2YzNmYWYuLmViMzg2OTgyYWVmZGJj
OGE1M2E0NGI1MzE0NzgxMDM3NzQ5ZTQ0NGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3ROb3RpZmljYXRpb25Qcm92aWRlci5jcHAKQEAgLTI3LDYgKzI3LDggQEAKICNpbmNsdWRl
ICJUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuaCIKIAogI2luY2x1ZGUgIldURlN0cmluZ1V0aWxp
dGllcy5oIgorI2luY2x1ZGUgPFdlYktpdC9XS0FycmF5Lmg+CisjaW5jbHVkZSA8V2ViS2l0L1dL
TXV0YWJsZURpY3Rpb25hcnkuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tOb3RpZmljYXRpb25NYW5h
Z2VyLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLTnVtYmVyLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dL
U2VjdXJpdHlPcmlnaW5SZWYuaD4KQEAgLTQyLDcgKzQ0LDYgQEAgc3RhdGljIFdLRGljdGlvbmFy
eVJlZiBub3RpZmljYXRpb25QZXJtaXNzaW9ucyhjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogCiBU
ZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXI6OlRlc3ROb3RpZmljYXRpb25Qcm92aWRlcihWZWN0b3I8
V0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmPiYmIG1hbmFnZXJzKQogICAgIDogbV9tYW5hZ2VycyhX
VEZNb3ZlKG1hbmFnZXJzKSkKLSAgICAsIG1fcGVybWlzc2lvbnMoYWRvcHRXSyhXS011dGFibGVE
aWN0aW9uYXJ5Q3JlYXRlKCkpKQogewogICAgIG1fcHJvdmlkZXIgPSB7CiAgICAgICAgIHsgMCwg
dGhpcyB9LApAQCAtNjcsMTkgKzY4LDM5IEBAIFRlc3ROb3RpZmljYXRpb25Qcm92aWRlcjo6flRl
c3ROb3RpZmljYXRpb25Qcm92aWRlcigpCiAKIFdLRGljdGlvbmFyeVJlZiBUZXN0Tm90aWZpY2F0
aW9uUHJvdmlkZXI6Om5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCkgY29uc3QKIHsKLSAgICBXS1Jl
dGFpbihtX3Blcm1pc3Npb25zLmdldCgpKTsKLSAgICByZXR1cm4gbV9wZXJtaXNzaW9ucy5nZXQo
KTsKKyAgICBhdXRvIHBlcm1pc3Npb25zID0gV0tNdXRhYmxlRGljdGlvbmFyeUNyZWF0ZSgpOwor
CisgICAgZm9yIChhdXRvJiBbb3JpZ2luLCBhbGxvd2VkXSA6IG1fcGVybWlzc2lvbnMpIHsKKyAg
ICAgICAgYXV0byB3a09yaWdpblN0cmluZyA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcob3JpZ2luLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgYXV0byB3a0FsbG93ZWQg
PSBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShhbGxvd2VkKSk7CisgICAgICAgIFdLRGljdGlvbmFy
eVNldEl0ZW0ocGVybWlzc2lvbnMsIHdrT3JpZ2luU3RyaW5nLmdldCgpLCB3a0FsbG93ZWQuZ2V0
KCkpOworICAgIH0KKworICAgIHJldHVybiBwZXJtaXNzaW9uczsKIH0KIAogdm9pZCBUZXN0Tm90
aWZpY2F0aW9uUHJvdmlkZXI6OnNldFBlcm1pc3Npb24oY29uc3QgU3RyaW5nJiBvcmlnaW4sIGJv
b2wgYWxsb3dlZCkKIHsKLSAgICBhdXRvIHdrQWxsb3dlZCA9IGFkb3B0V0soV0tCb29sZWFuQ3Jl
YXRlKGFsbG93ZWQpKTsKLSAgICBhdXRvIHdrT3JpZ2luU3RyaW5nID0gYWRvcHRXSyhXS1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhvcmlnaW4udXRmOCgpLmRhdGEoKSkpOwotICAgIFdLRGlj
dGlvbmFyeVNldEl0ZW0obV9wZXJtaXNzaW9ucy5nZXQoKSwgd2tPcmlnaW5TdHJpbmcuZ2V0KCks
IHdrQWxsb3dlZC5nZXQoKSk7CisgICAgbV9wZXJtaXNzaW9ucy5zZXQob3JpZ2luLCBhbGxvd2Vk
KTsKIAorICAgIGF1dG8gd2tPcmlnaW5TdHJpbmcgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKG9yaWdpbi51dGY4KCkuZGF0YSgpKSk7CiAgICAgYXV0byB3a09yaWdpbiA9
IGFkb3B0V0soV0tTZWN1cml0eU9yaWdpbkNyZWF0ZUZyb21TdHJpbmcod2tPcmlnaW5TdHJpbmcu
Z2V0KCkpKTsKKwogICAgIGZvciAoYXV0byYgbWFuYWdlciA6IG1fbWFuYWdlcnMpCiAgICAgICAg
IFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkVXBkYXRlTm90aWZpY2F0aW9uUG9saWN5
KG1hbmFnZXIsIHdrT3JpZ2luLmdldCgpLCBhbGxvd2VkKTsKIH0KIAordm9pZCBUZXN0Tm90aWZp
Y2F0aW9uUHJvdmlkZXI6OnJlc2V0UGVybWlzc2lvbihjb25zdCBTdHJpbmcmIG9yaWdpbikKK3sK
KyAgICBtX3Blcm1pc3Npb25zLnJlbW92ZShvcmlnaW4pOworCisgICAgYXV0byB3a09yaWdpblN0
cmluZyA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcob3JpZ2luLnV0Zjgo
KS5kYXRhKCkpKTsKKyAgICBhdXRvIHdrT3JpZ2luID0gYWRvcHRXSyhXS1NlY3VyaXR5T3JpZ2lu
Q3JlYXRlRnJvbVN0cmluZyh3a09yaWdpblN0cmluZy5nZXQoKSkpOworICAgIGF1dG8gd2tPcmln
aW5UeXBlUmVmID0gc3RhdGljX2Nhc3Q8V0tUeXBlUmVmPih3a09yaWdpbi5nZXQoKSk7CisgICAg
YXV0byB3a09yaWdpbkFycmF5ID0gYWRvcHRXSyhXS0FycmF5Q3JlYXRlKCZ3a09yaWdpblR5cGVS
ZWYsIDEpKTsKKworICAgIGZvciAoYXV0byYgbWFuYWdlciA6IG1fbWFuYWdlcnMpCisgICAgICAg
IFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkUmVtb3ZlTm90aWZpY2F0aW9uUG9saWNp
ZXMobWFuYWdlciwgd2tPcmlnaW5BcnJheS5nZXQoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdE5vdGlmaWNh
dGlvblByb3ZpZGVyLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3ROb3RpZmljYXRpb25Qcm92
aWRlci5oCmluZGV4IGJlMDQ4YmY5YTJkODNkOGU0MmQ1ODZjMTZhMTJlMWVkMzYxNDMxMGMuLmU0
ODVlZGFiMTEzNWE3ZGU2Njk3ODYxZGNlM2MzNDYxNzhjN2NhZTMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyLmgKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuaApAQCAtMjUsMTEgKzI1LDExIEBA
CiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSA8V2ViS2l0L1dLTXV0YWJsZURpY3Rpb25hcnku
aD4KICNpbmNsdWRlIDxXZWJLaXQvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmg+CiAjaW5jbHVkZSA8
V2ViS2l0L1dLTm90aWZpY2F0aW9uUHJvdmlkZXIuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tSZXRh
aW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SSB7CkBAIC00MiwxMCArNDIsMTEgQEAgcHVibGljOgogCiAgICAgV0tEaWN0aW9uYXJ5UmVmIG5v
dGlmaWNhdGlvblBlcm1pc3Npb25zKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRQZXJtaXNzaW9uKGNv
bnN0IFN0cmluZyYgb3JpZ2luLCBib29sIGFsbG93ZWQpOworICAgIHZvaWQgcmVzZXRQZXJtaXNz
aW9uKGNvbnN0IFN0cmluZyYgb3JpZ2luKTsKIAogcHJpdmF0ZToKICAgICBWZWN0b3I8V0tOb3Rp
ZmljYXRpb25NYW5hZ2VyUmVmPiBtX21hbmFnZXJzOwotICAgIFdLUmV0YWluUHRyPFdLTXV0YWJs
ZURpY3Rpb25hcnlSZWY+IG1fcGVybWlzc2lvbnM7CisgICAgSGFzaE1hcDxTdHJpbmcsIGJvb2w+
IG1fcGVybWlzc2lvbnM7CiAgICAgV0tOb3RpZmljYXRpb25Qcm92aWRlclYwIG1fcHJvdmlkZXI7
CiB9OwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1dlYlB1c2hEYWVtb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1dlYlB1c2hEYWVtb24ubW0KaW5kZXggOTdhNWJkYTc2OWNlZWUwZGQzYzU2MjhlNzM0MjA5ZTA4
MDEyMjRkOS4uYTQ0MzJjOTQ3OWVhZjA5N2I0NDdjNjE0OGUxMjE2YTRlZDNkOWZlNiAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNoRGFlbW9u
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2ViUHVzaERh
ZW1vbi5tbQpAQCAtODY5LDYgKzg2OSw1NiBAQCBURVNUX0YoV2ViUHVzaERUZXN0LCBVbnN1YnNj
cmliZXNPbkNsZWFyaW5nV2Vic2l0ZURhdGFGb3JPcmlnaW4pCiAgICAgQVNTRVJUX0ZBTFNFKGhh
c1B1c2hTdWJzY3JpcHRpb24oKSk7CiB9CiAKK1RFU1RfRihXZWJQdXNoRFRlc3QsIFVuc3Vic2Ny
aWJlc09uUGVybWlzc2lvblJlc2V0KQoreworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzb3VyY2Ug
PSBSIkhUTUwoCisgICAgPHNjcmlwdCBzcmM9Ii9jb25zdGFudHMuanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQ+CisgICAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycp
LnRoZW4oYXN5bmMgKCkgPT4geworICAgICAgICBjb25zdCByZWdpc3RyYXRpb24gPSBhd2FpdCBu
YXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWFkeTsKKyAgICAgICAgbGV0IHJlc3VsdCA9IG51bGw7
CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBsZXQgc3Vic2NyaXB0aW9uID0gYXdhaXQgcmVn
aXN0cmF0aW9uLnB1c2hNYW5hZ2VyLnN1YnNjcmliZSh7CisgICAgICAgICAgICAgICAgdXNlclZp
c2libGVPbmx5OiB0cnVlLAorICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uU2VydmVyS2V5OiBW
QUxJRF9TRVJWRVJfS0VZCisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJlc3VsdCA9ICJT
dWJzY3JpYmVkIjsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgcmVzdWx0ID0g
IkVycm9yOiAiICsgZTsKKyAgICAgICAgfQorICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VI
YW5kbGVycy5ub3RlLnBvc3RNZXNzYWdlKHJlc3VsdCk7CisgICAgfSk7CisgICAgPC9zY3JpcHQ+
CisgICAgKUhUTUwiOworCisgICAgX19ibG9jayBSZXRhaW5QdHI8aWQ+IHJlc3VsdCA9IG5pbDsK
KyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIFttX25vdGlmaWNhdGlvbk1lc3Nh
Z2VIYW5kbGVyIHNldE1lc3NhZ2VIYW5kbGVyOl4oaWQgbWVzc2FnZSkgeworICAgICAgICByZXN1
bHQgPSBtZXNzYWdlOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIGxvYWRS
ZXF1ZXN0KHNvdXJjZSwgIiIpOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7
CisKKyAgICBBU1NFUlRfVFJVRShbcmVzdWx0IGlzRXF1YWxUb1N0cmluZzpAIlN1YnNjcmliZWQi
XSk7CisgICAgQVNTRVJUX1RSVUUoaGFzUHVzaFN1YnNjcmlwdGlvbigpKTsKKworICAgIG1fbm90
aWZpY2F0aW9uUHJvdmlkZXItPnJlc2V0UGVybWlzc2lvbihtX3NlcnZlci0+b3JpZ2luKCkpOwor
CisgICAgYm9vbCBpc1N1YnNjcmliZWQgPSB0cnVlOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OndhaXRGb3JDb25kaXRpb25XaXRoTG9nZ2luZyhbdGhpcywgJmlzU3Vic2NyaWJlZF0geworICAg
ICAgICBpc1N1YnNjcmliZWQgPSBoYXNQdXNoU3Vic2NyaXB0aW9uKCk7CisgICAgICAgIGlmICgh
aXNTdWJzY3JpYmVkKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgc2xlZXAo
MSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9LCA1LCBAIlRpbWVkIG91dCB3YWl0aW5n
IGZvciBwdXNoIHN1YnNjcmlwdGlvbiB0byBiZSByZW1vdmVkLiIpOworCisgICAgQVNTRVJUX0ZB
TFNFKGlzU3Vic2NyaWJlZCk7Cit9CisKICNpZiBFTkFCTEUoSU5TVEFMTF9DT09SRElOQVRJT05f
QlVORExFUykKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogc3RhdGljIHZvaWQgZGVsZXRl
QWxsUmVnaXN0cmF0aW9uc0ZvckRhdGFTdG9yZShXS1dlYnNpdGVEYXRhU3RvcmUgKmRhdGFTdG9y
ZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455136</attachid>
            <date>2022-03-18 14:31:47 -0700</date>
            <delta_ts>2022-03-23 17:33:09 -0700</delta_ts>
            <desc>rebase</desc>
            <filename>bug-238068-20220318143146.patch</filename>
            <type>text/plain</type>
            <size>16453</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTVjMDM1YTdmZDdiZmEx
NDRkNGM5MGY4ZGI1N2NjYzE1NjczNGI0ZS4uZjVhODQ5ZmJiNjcyZDY4OTQwNmQ1OTFmYjg5OTkx
ZGQxZjgyNjQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIyLTAzLTE4ICBCZW4g
TmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBwdXNoIHN1YnNjcmlwdGlv
bnMgd2hlbiBwZXJtaXNzaW9ucyBhcmUgcmVzZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODA2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEF2b2lkIGZpcmluZyB0aGUgcHVzaCBldmVudCBpZiBpdCBo
YXMgbm8gY2hhbmNlIG9mIGFjdHVhbGx5IGRpc3BsYXlpbmcgYSB1c2VyIG5vdGlmaWNhdGlvbi4K
KyAgICAgICAgVGhpcyBhY3RzIGFzIGEgYmFja3N0b3AgaW4gY2FzZXMgd2hlcmUgdGhlIG5vdGlm
aWNhdGlvbiBwZXJtaXNzaW9uIGZvciBhbiBvcmlnaW4gaXMgcmV2b2tlZAorICAgICAgICBidXQg
YXNzb2NpYXRlZCBwdXNoIHN1YnNjcmlwdGlvbnMgaGF2ZW4ndCB5ZXQgYmVlbiByZW1vdmVkIGlu
IHdlYnB1c2hkLgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpx
dWV1ZVRhc2tUb0ZpcmVQdXNoRXZlbnQpOgorCiAyMDIyLTAzLTE4ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQXZvaWQgZXh0cmEgcG9pbnRlciBkZXJlZmVyZW5j
ZSBpbiBFdmVudExpc3RlbmVyTWFwOjptX2VudHJpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNzEzNzg5NDViMTll
MDNmZGM4MjMzNzY1NWRlOTAwYjg4ZDc1N2VkYy4uZWJmOGRkMDE3ZDlkZGM2MTk0NDRmYjIzMDIz
MDNmMWQ0MGQ0YjI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAyMi0wMy0xOCAgQmVu
IE5oYW0gIDxuaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgcHVzaCBzdWJzY3JpcHRp
b25zIHdoZW4gcGVybWlzc2lvbnMgYXJlIHJlc2V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgwNjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIHRoZSBub3RpZmljYXRpb24gcGVybWlzc2lvbiBm
b3IgYW4gb3JpZ2luIGlzIHJlc2V0IChpLmUuIGlzIHNldCB0bworICAgICAgICBOb3RpZmljYXRp
b25QZXJtaXNzaW9uOjpEZWZhdWx0KSwgd2Ugc2hvdWxkIGRlbGV0ZSBhbnkgUHVzaFN1YnNjcmlw
dGlvbnMgYXNzb2NpYXRlZCB3aXRoCisgICAgICAgIHRoYXQgb3JpZ2luLiBXZSBkbyB0aGlzIGJ5
IGhhdmluZyB0aGUgcHJvdmlkZXJEaWRSZW1vdmVOb3RpZmljYXRpb25Qb2xpY2llcyBBUEkgY2Fs
bAorICAgICAgICBkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uIGluIHdlYnB1
c2hkLgorCisgICAgICAgIE5vdGUgdGhhdCB3ZSBkb24ndCBkZWxldGUgdGhlIHN1YnNjcmlwdGlv
biBpZiB0aGUgcGVybWlzc2lvbiBpcyBzaW1wbHkgdG9nZ2xlZCBvZmYgKHZpYQorICAgICAgICBw
cm92aWRlckRpZFVwZGF0ZU5vdGlmaWNhdGlvblBvbGljeSkuIEluIHRoYXQgY2FzZSwgdGhlIHVz
ZXIgY2FuIGVhc2lseSB0b2dnbGUgdGhlCisgICAgICAgIHBlcm1pc3Npb24gYmFjayBvbi4gRXZl
bnR1YWxseSB3ZSB3YW50IHRvIGhvb2sgdXAgdGhhdCBBUEkgdG8gYWRkIGFzc29jaWF0ZWQgc3Vi
c2NyaXB0aW9ucworICAgICAgICB0byBhbiBpZ25vcmUgbGlzdCBpbiB3ZWJwdXNoZC4gQnV0IGFm
dGVyIHNvbWUgZGlzY3Vzc2lvbiB3ZSBkZWNpZGVkIHRoYXQgd2Fzbid0IG5lY2Vzc2FyeQorICAg
ICAgICB0byBpbXBsZW1lbnQgZm9yIHRoZSBtb21lbnQuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpyZW1vdmVQdXNoU3Vic2NyaXB0aW9uc0Zvck9yaWdpbnMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkUmVtb3ZlTm90aWZp
Y2F0aW9uUG9saWNpZXMpOgorICAgICAgICAqIHdlYnB1c2hkL1dlYlB1c2hEYWVtb24ubW06Cisg
ICAgICAgIChXZWJQdXNoRDo6RGFlbW9uOjpkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0
cmF0aW9uKToKKwogMjAyMi0wMy0xOCAgQmVuIE5oYW0gIDxuaGFtQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZW1vdmUgcHVzaCBzdWJzY3JpcHRpb25zIHdoZW4gYXNzb2NpYXRlZCBzZXJ2aWNlIHdv
cmtlciByZWdpc3RyYXRpb25zIGFyZSByZW1vdmVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3Bw
CmluZGV4IDMwYTk4MzUxMDRhOWE3MmQxNzM0MDljODZiZTAwMDM5YzUxMDY4YzYuLmIwZWI5NDdj
NGY2ODE4MjNjMGZkYmNlZDU5NDU0MTU0ZmY5ZDUwMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJl
YWQuY3BwCkBAIC0yMjIsNiArMjIyLDE4IEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6cXVl
dWVUYXNrVG9GaXJlUHVzaEV2ZW50KHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+CiB7CiAg
ICAgYXV0byYgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlID0gZG93bmNhc3Q8U2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlPigqZ2xvYmFsU2NvcGUoKSk7CiAgICAgc2VydmljZVdvcmtlckdsb2JhbFNj
b3BlLmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFt3
ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBS
ZWYgeyBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgfSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gcGVy
bWlzc2lvbiA9IE5vdGlmaWNhdGlvblBlcm1pc3Npb246OkRlZmF1bHQ7CisgICAgICAgIGlmIChh
dXRvIG5vdGlmaWNhdGlvbkNsaWVudCA9IHN0YXRpY19jYXN0PFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmPihzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuZ2V0KCkpLm5vdGlmaWNhdGlvbkNsaWVudCgp
KQorICAgICAgICAgICAgcGVybWlzc2lvbiA9IG5vdGlmaWNhdGlvbkNsaWVudC0+Y2hlY2tQZXJt
aXNzaW9uKHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5wdHIoKSk7CisKKyAgICAgICAgLy8gQWxs
IFB1c2hTdWJzY3JpcHRpb25zIGFyZSBjcmVhdGVkIHdpdGggdGhlIHVzZXJWaXNpYmxlT25seSBm
bGFnIHNldCwgc28gZG9uJ3QgYm90aGVyIGZpcmluZworICAgICAgICAvLyB0aGUgcHVzaCBldmVu
dCBpZiB0aGVyZSdzIG5vIHdheSBmb3IgYSBub3RpZmljYXRpb24gdG8gYWN0dWFsbHkgYmUgZGlz
cGxheWVkLgorICAgICAgICBpZiAocGVybWlzc2lvbiAhPSBOb3RpZmljYXRpb25QZXJtaXNzaW9u
OjpHcmFudGVkKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiU2Vy
dmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNrVG9GaXJlUHVzaEV2ZW50IHNraXBwaW5nIHB1c2gg
ZXZlbnQgZm9yIHdvcmtlciAlIiBQUkl1NjQgIiBiZWNhdXNlIG5vdGlmaWNhdGlvbiBwZXJtaXNz
aW9uIGlzICVkIiBQUkl1NjQsIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS0+dGhyZWFkKCkuaWRl
bnRpZmllcigpLnRvVUludDY0KCksIHN0YXRpY19jYXN0PGludD4ocGVybWlzc2lvbikpOworICAg
ICAgICAgICAgY2FsbGJhY2soZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKICAgICAgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIlNlcnZpY2VXb3JrZXJUaHJl
YWQ6OnF1ZXVlVGFza1RvRmlyZVB1c2hFdmVudCBmaXJpbmcgZXZlbnQgZm9yIHdvcmtlciAlIiBQ
Ukl1NjQsIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS0+dGhyZWFkKCkuaWRlbnRpZmllcigpLnRv
VUludDY0KCkpOwogCiAgICAgICAgIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS0+c2V0SGFzUGVu
ZGluZ1NpbGVudFB1c2hFdmVudCh0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5LmNwcAppbmRleCBiM2FjNzJiNWY2Y2I4MTlmZDlhMmMwNzZiMGQ2OTI2MWNiZTUxODBh
Li4yMTRkODYxZmIxM2QyMDMwOTVmYmI2ZWEwNzJkZDkxNjM2MDU0YjMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCkBAIC0zNCw3ICszNCw5IEBACiAjaW5jbHVk
ZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzUHJveHkuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9Ob3RpZmljYXRpb25EYXRhLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZWN1
cml0eU9yaWdpbkRhdGEuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKQEAgLTI2NywyNSArMjY5LDQ4IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5Ojpwcm92aWRlckRpZFVwZGF0ZU5vdGlmaWNhdGlvblBvbGljeShjb25zdCBBUEk6CiAg
ICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyOjpEaWRVcGRhdGVOb3RpZmljYXRpb25EZWNpc2lvbihvcmlnaW4tPnNlY3Vy
aXR5T3JpZ2luKCkudG9TdHJpbmcoKSwgYWxsb3dlZCkpOwogfQogCi12b2lkIFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRSZW1vdmVOb3RpZmljYXRpb25Qb2xpY2llcyhB
UEk6OkFycmF5KiBvcmlnaW5zKQorc3RhdGljIHZvaWQgcmVtb3ZlUHVzaFN1YnNjcmlwdGlvbnNG
b3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmln
aW5zKQogewotICAgIGlmICghcHJvY2Vzc1Bvb2woKSkKKyAgICBSZWZQdHI8TmV0d29ya1Byb2Nl
c3NQcm94eT4gbmV0d29ya1Byb2Nlc3M7CisgICAgYXV0byBzZXNzaW9uSUQgPSBQQUw6OlNlc3Np
b25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOworCisgICAgV2Vic2l0ZURhdGFTdG9yZTo6Zm9yRWFj
aFdlYnNpdGVEYXRhU3RvcmUoWyZuZXR3b3JrUHJvY2VzcywgJnNlc3Npb25JRF0oV2Vic2l0ZURh
dGFTdG9yZSYgZGF0YVN0b3JlKSB7CisgICAgICAgIGlmICghbmV0d29ya1Byb2Nlc3MgJiYgZGF0
YVN0b3JlLmlzUGVyc2lzdGVudCgpKSB7CisgICAgICAgICAgICBuZXR3b3JrUHJvY2VzcyA9ICZk
YXRhU3RvcmUubmV0d29ya1Byb2Nlc3MoKTsKKyAgICAgICAgICAgIHNlc3Npb25JRCA9IGRhdGFT
dG9yZS5zZXNzaW9uSUQoKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgaWYgKCFuZXR3b3Jr
UHJvY2VzcykKICAgICAgICAgcmV0dXJuOwogCisgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBvcmln
aW5zKQorICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+ZGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJl
Z2lzdHJhdGlvbihzZXNzaW9uSUQsIG9yaWdpbiwgW29yaWdpblN0cmluZyA9IG9yaWdpbi50b1N0
cmluZygpXShhdXRvJiYpIHsgfSk7Cit9CisKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5Ojpwcm92aWRlckRpZFJlbW92ZU5vdGlmaWNhdGlvblBvbGljaWVzKEFQSTo6QXJyYXkqIG9y
aWdpbnMpCit7CiAgICAgc2l6ZV90IHNpemUgPSBvcmlnaW5zLT5zaXplKCk7CiAgICAgaWYgKCFz
aXplKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBWZWN0b3I8U3RyaW5nPiBvcmlnaW5T
dHJpbmdzOworICAgIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IHNlY3VyaXR5
T3JpZ2luczsKKwogICAgIG9yaWdpblN0cmluZ3MucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXpl
KTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgb3JpZ2lu
U3RyaW5ncy51bmNoZWNrZWRBcHBlbmQob3JpZ2lucy0+YXQ8QVBJOjpTZWN1cml0eU9yaWdpbj4o
aSktPnNlY3VyaXR5T3JpZ2luKCkudG9TdHJpbmcoKSk7CisgICAgc2VjdXJpdHlPcmlnaW5zLnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSk7CiAKLSAgICBXZWJQcm9jZXNzUG9vbDo6c2VuZFRv
QWxsUmVtb3RlV29ya2VyUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
OjpEaWRSZW1vdmVOb3RpZmljYXRpb25EZWNpc2lvbnMob3JpZ2luU3RyaW5ncykpOworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIGF1dG8gc2VjdXJpdHlP
cmlnaW4gPSBvcmlnaW5zLT5hdDxBUEk6OlNlY3VyaXR5T3JpZ2luPihpKS0+c2VjdXJpdHlPcmln
aW4oKTsKKyAgICAgICAgb3JpZ2luU3RyaW5ncy51bmNoZWNrZWRBcHBlbmQoc2VjdXJpdHlPcmln
aW4udG9TdHJpbmcoKSk7CisgICAgICAgIHNlY3VyaXR5T3JpZ2lucy51bmNoZWNrZWRBcHBlbmQo
V1RGTW92ZShzZWN1cml0eU9yaWdpbikpOworICAgIH0KIAotICAgIGlmICghcHJvY2Vzc1Bvb2wo
KSkKLSAgICAgICAgcmV0dXJuOwotICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb0FsbFByb2Nlc3Nl
cyhNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6RGlkUmVtb3ZlTm90aWZpY2F0aW9u
RGVjaXNpb25zKG9yaWdpblN0cmluZ3MpKTsKKyAgICBpZiAodGhpcyA9PSAmc2hhcmVkU2Vydmlj
ZVdvcmtlck1hbmFnZXIoKSkgeworICAgICAgICByZW1vdmVQdXNoU3Vic2NyaXB0aW9uc0Zvck9y
aWdpbnMoc2VjdXJpdHlPcmlnaW5zKTsKKyAgICAgICAgV2ViUHJvY2Vzc1Bvb2w6OnNlbmRUb0Fs
bFJlbW90ZVdvcmtlclByb2Nlc3NlcyhNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6
RGlkUmVtb3ZlTm90aWZpY2F0aW9uRGVjaXNpb25zKG9yaWdpblN0cmluZ3MpKTsKKyAgICB9IGVs
c2UgaWYgKHByb2Nlc3NQb29sKCkpCisgICAgICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb0FsbFBy
b2Nlc3NlcyhNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6RGlkUmVtb3ZlTm90aWZp
Y2F0aW9uRGVjaXNpb25zKG9yaWdpblN0cmluZ3MpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24ubW0g
Yi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24ubW0KaW5kZXggY2JkMTI3MDNi
NTllY2Y1ZjI1MDdjODBkYWEwMDNiZmUyYzk3MzRlNC4uODg2Mzc2YzY3OTI5NmQ3NzBjMDVlMjA4
MmNmYTRiYzgyNmEwY2VkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQ
dXNoRGFlbW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5t
bQpAQCAtNDk5LDcgKzQ5OSwxOCBAQCB2b2lkIERhZW1vbjo6ZGVsZXRlUHVzaEFuZE5vdGlmaWNh
dGlvblJlZ2lzdHJhdGlvbihDbGllbnRDb25uZWN0aW9uKiBjb25uZWN0aW9uLAogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgY29ubmVjdGlvbi0+ZW5xdWV1ZUFwcEJ1bmRsZVJlcXVlc3Qo
bWFrZVVuaXF1ZTxBcHBCdW5kbGVEZWxldGlvblJlcXVlc3Q+KCpjb25uZWN0aW9uLCBvcmlnaW5T
dHJpbmcsIFdURk1vdmUocmVwbHlTZW5kZXIpKSk7CisgICAgY29ubmVjdGlvbi0+ZW5xdWV1ZUFw
cEJ1bmRsZVJlcXVlc3QobWFrZVVuaXF1ZTxBcHBCdW5kbGVEZWxldGlvblJlcXVlc3Q+KCpjb25u
ZWN0aW9uLCBvcmlnaW5TdHJpbmcsIFt0aGlzLCBvcmlnaW5TdHJpbmcgPSBTdHJpbmcgeyBvcmln
aW5TdHJpbmcgfSwgcmVwbHlTZW5kZXIgPSBXVEZNb3ZlKHJlcGx5U2VuZGVyKSwgYnVuZGxlSWRl
bnRpZmllciA9IGNvbm5lY3Rpb24tPmhvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIoKV0oY29u
c3QgU3RyaW5nJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBydW5BZnRlclN0YXJ0aW5nUHVz
aFNlcnZpY2UoW3RoaXMsIGJ1bmRsZUlkZW50aWZpZXIgPSBXVEZNb3ZlKGJ1bmRsZUlkZW50aWZp
ZXIpLCBvcmlnaW5TdHJpbmcgPSBXVEZNb3ZlKG9yaWdpblN0cmluZyksIHJlcGx5U2VuZGVyID0g
V1RGTW92ZShyZXBseVNlbmRlciksIHJlc3VsdF0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlm
ICghbV9wdXNoU2VydmljZSkgeworICAgICAgICAgICAgICAgIHJlcGx5U2VuZGVyKHJlc3VsdCk7
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBt
X3B1c2hTZXJ2aWNlLT5yZW1vdmVSZWNvcmRzRm9yQnVuZGxlSWRlbnRpZmllckFuZE9yaWdpbihi
dW5kbGVJZGVudGlmaWVyLCBvcmlnaW5TdHJpbmcsIFtyZXBseVNlbmRlciA9IFdURk1vdmUocmVw
bHlTZW5kZXIpLCByZXN1bHRdKGF1dG8mJikgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgcmVw
bHlTZW5kZXIocmVzdWx0KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9KSk7
CiB9CiAKIHZvaWQgRGFlbW9uOjpzZXREZWJ1Z01vZGVJc0VuYWJsZWQoQ2xpZW50Q29ubmVjdGlv
biogY2xpZW50Q29ubmVjdGlvbiwgYm9vbCBlbmFibGVkKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDI4ZjM0MDg3MjNkNDI5N2M2MTI3ODRhNDlj
YzQ0MWIwNTA3NDZiZjMuLjI2OGFkODgyMTFmMjM3NjM5MGRmNzEwMmRkMTQ3NTIyMjBiYzRhZDIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAyMi0wMy0xOCAgQmVuIE5oYW0gIDxuaGFtQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZW1vdmUgcHVzaCBzdWJzY3JpcHRpb25zIHdoZW4gcGVybWlzc2lvbnMgYXJlIHJlc2V0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgwNjgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSB0
ZXN0IHRvIG1ha2Ugc3VyZSBwdXNoIHN1YnNjcmlwdGlvbnMgYXJlIHJlbW92ZWQgd2hlbiB0aGUg
bm90aWZpY2F0aW9uIHBvbGljeSBmb3IgYQorICAgICAgICB3ZWJzaXRlIGlzIHJlc2V0LgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyOjpUZXN0Tm90aWZp
Y2F0aW9uUHJvdmlkZXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdE5vdGlmaWNhdGlv
blByb3ZpZGVyOjpub3RpZmljYXRpb25QZXJtaXNzaW9ucyBjb25zdCk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXI6OnNldFBlcm1pc3Npb24pOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyOjpyZXNldFBlcm1p
c3Npb24pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVy
Lmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNoRGFl
bW9uLm1tOgorCiAyMDIyLTAzLTE4ICBCZW4gTmhhbSAgPG5oYW1AYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlbW92ZSBwdXNoIHN1YnNjcmlwdGlvbnMgd2hlbiBhc3NvY2lhdGVkIHNlcnZpY2Ugd29y
a2VyIHJlZ2lzdHJhdGlvbnMgYXJlIHJlbW92ZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcAppbmRleCAwODBmMDZhOThjYzkxNTVlNGViOWVm
MjRiMDU4Njc5ODg5NmMzZmFmLi5lYjM4Njk4MmFlZmRiYzhhNTNhNDRiNTMxNDc4MTAzNzc0OWU0
NDRkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3ROb3RpZmljYXRpb25Qcm92
aWRlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0Tm90aWZpY2F0aW9uUHJvdmlk
ZXIuY3BwCkBAIC0yNyw2ICsyNyw4IEBACiAjaW5jbHVkZSAiVGVzdE5vdGlmaWNhdGlvblByb3Zp
ZGVyLmgiCiAKICNpbmNsdWRlICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIKKyNpbmNsdWRlIDxXZWJL
aXQvV0tBcnJheS5oPgorI2luY2x1ZGUgPFdlYktpdC9XS011dGFibGVEaWN0aW9uYXJ5Lmg+CiAj
aW5jbHVkZSA8V2ViS2l0L1dLTm90aWZpY2F0aW9uTWFuYWdlci5oPgogI2luY2x1ZGUgPFdlYktp
dC9XS051bWJlci5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1NlY3VyaXR5T3JpZ2luUmVmLmg+CkBA
IC00Miw3ICs0NCw2IEBAIHN0YXRpYyBXS0RpY3Rpb25hcnlSZWYgbm90aWZpY2F0aW9uUGVybWlz
c2lvbnMoY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIAogVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVy
OjpUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIoVmVjdG9yPFdLTm90aWZpY2F0aW9uTWFuYWdlclJl
Zj4mJiBtYW5hZ2VycykKICAgICA6IG1fbWFuYWdlcnMoV1RGTW92ZShtYW5hZ2VycykpCi0gICAg
LCBtX3Blcm1pc3Npb25zKGFkb3B0V0soV0tNdXRhYmxlRGljdGlvbmFyeUNyZWF0ZSgpKSkKIHsK
ICAgICBtX3Byb3ZpZGVyID0gewogICAgICAgICB7IDAsIHRoaXMgfSwKQEAgLTY3LDE5ICs2OCwz
OSBAQCBUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXI6On5UZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIo
KQogCiBXS0RpY3Rpb25hcnlSZWYgVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyOjpub3RpZmljYXRp
b25QZXJtaXNzaW9ucygpIGNvbnN0CiB7Ci0gICAgV0tSZXRhaW4obV9wZXJtaXNzaW9ucy5nZXQo
KSk7Ci0gICAgcmV0dXJuIG1fcGVybWlzc2lvbnMuZ2V0KCk7CisgICAgYXV0byBwZXJtaXNzaW9u
cyA9IFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKTsKKworICAgIGZvciAoYXV0byYgW29yaWdp
biwgYWxsb3dlZF0gOiBtX3Blcm1pc3Npb25zKSB7CisgICAgICAgIGF1dG8gd2tPcmlnaW5TdHJp
bmcgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKG9yaWdpbi51dGY4KCku
ZGF0YSgpKSk7CisgICAgICAgIGF1dG8gd2tBbGxvd2VkID0gYWRvcHRXSyhXS0Jvb2xlYW5DcmVh
dGUoYWxsb3dlZCkpOworICAgICAgICBXS0RpY3Rpb25hcnlTZXRJdGVtKHBlcm1pc3Npb25zLCB3
a09yaWdpblN0cmluZy5nZXQoKSwgd2tBbGxvd2VkLmdldCgpKTsKKyAgICB9CisKKyAgICByZXR1
cm4gcGVybWlzc2lvbnM7CiB9CiAKIHZvaWQgVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyOjpzZXRQ
ZXJtaXNzaW9uKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBib29sIGFsbG93ZWQpCiB7Ci0gICAgYXV0
byB3a0FsbG93ZWQgPSBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShhbGxvd2VkKSk7Ci0gICAgYXV0
byB3a09yaWdpblN0cmluZyA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
b3JpZ2luLnV0ZjgoKS5kYXRhKCkpKTsKLSAgICBXS0RpY3Rpb25hcnlTZXRJdGVtKG1fcGVybWlz
c2lvbnMuZ2V0KCksIHdrT3JpZ2luU3RyaW5nLmdldCgpLCB3a0FsbG93ZWQuZ2V0KCkpOworICAg
IG1fcGVybWlzc2lvbnMuc2V0KG9yaWdpbiwgYWxsb3dlZCk7CiAKKyAgICBhdXRvIHdrT3JpZ2lu
U3RyaW5nID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhvcmlnaW4udXRm
OCgpLmRhdGEoKSkpOwogICAgIGF1dG8gd2tPcmlnaW4gPSBhZG9wdFdLKFdLU2VjdXJpdHlPcmln
aW5DcmVhdGVGcm9tU3RyaW5nKHdrT3JpZ2luU3RyaW5nLmdldCgpKSk7CisKICAgICBmb3IgKGF1
dG8mIG1hbmFnZXIgOiBtX21hbmFnZXJzKQogICAgICAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJQ
cm92aWRlckRpZFVwZGF0ZU5vdGlmaWNhdGlvblBvbGljeShtYW5hZ2VyLCB3a09yaWdpbi5nZXQo
KSwgYWxsb3dlZCk7CiB9CiAKK3ZvaWQgVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyOjpyZXNldFBl
cm1pc3Npb24oY29uc3QgU3RyaW5nJiBvcmlnaW4pCit7CisgICAgbV9wZXJtaXNzaW9ucy5yZW1v
dmUob3JpZ2luKTsKKworICAgIGF1dG8gd2tPcmlnaW5TdHJpbmcgPSBhZG9wdFdLKFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKG9yaWdpbi51dGY4KCkuZGF0YSgpKSk7CisgICAgYXV0byB3
a09yaWdpbiA9IGFkb3B0V0soV0tTZWN1cml0eU9yaWdpbkNyZWF0ZUZyb21TdHJpbmcod2tPcmln
aW5TdHJpbmcuZ2V0KCkpKTsKKyAgICBhdXRvIHdrT3JpZ2luVHlwZVJlZiA9IHN0YXRpY19jYXN0
PFdLVHlwZVJlZj4od2tPcmlnaW4uZ2V0KCkpOworICAgIGF1dG8gd2tPcmlnaW5BcnJheSA9IGFk
b3B0V0soV0tBcnJheUNyZWF0ZSgmd2tPcmlnaW5UeXBlUmVmLCAxKSk7CisKKyAgICBmb3IgKGF1
dG8mIG1hbmFnZXIgOiBtX21hbmFnZXJzKQorICAgICAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJQ
cm92aWRlckRpZFJlbW92ZU5vdGlmaWNhdGlvblBvbGljaWVzKG1hbmFnZXIsIHdrT3JpZ2luQXJy
YXkuZ2V0KCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3ROb3RpZmljYXRpb25Qcm92aWRlci5oIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuaAppbmRleCBiZTA0OGJmOWEy
ZDgzZDhlNDJkNTg2YzE2YTEyZTFlZDM2MTQzMTBjLi5lNDg1ZWRhYjExMzVhN2RlNjY5Nzg2MWRj
ZTNjMzQ2MTc4YzdjYWUzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3ROb3Rp
ZmljYXRpb25Qcm92aWRlci5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdE5vdGlmaWNh
dGlvblByb3ZpZGVyLmgKQEAgLTI1LDExICsyNSwxMSBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lu
Y2x1ZGUgPFdlYktpdC9XS011dGFibGVEaWN0aW9uYXJ5Lmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dL
Tm90aWZpY2F0aW9uTWFuYWdlci5oPgogI2luY2x1ZGUgPFdlYktpdC9XS05vdGlmaWNhdGlvblBy
b3ZpZGVyLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewpAQCAtNDIsMTAgKzQyLDExIEBA
IHB1YmxpYzoKIAogICAgIFdLRGljdGlvbmFyeVJlZiBub3RpZmljYXRpb25QZXJtaXNzaW9ucygp
IGNvbnN0OwogICAgIHZvaWQgc2V0UGVybWlzc2lvbihjb25zdCBTdHJpbmcmIG9yaWdpbiwgYm9v
bCBhbGxvd2VkKTsKKyAgICB2b2lkIHJlc2V0UGVybWlzc2lvbihjb25zdCBTdHJpbmcmIG9yaWdp
bik7CiAKIHByaXZhdGU6CiAgICAgVmVjdG9yPFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZj4gbV9t
YW5hZ2VyczsKLSAgICBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiBtX3Blcm1p
c3Npb25zOworICAgIEhhc2hNYXA8U3RyaW5nLCBib29sPiBtX3Blcm1pc3Npb25zOwogICAgIFdL
Tm90aWZpY2F0aW9uUHJvdmlkZXJWMCBtX3Byb3ZpZGVyOwogfTsKIApkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNoRGFlbW9uLm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNoRGFlbW9uLm1tCmluZGV4
IDk3YTViZGE3NjljZWVlMGRkM2M1NjI4ZTczNDIwOWUwODAxMjI0ZDkuLmE0NDMyYzk0NzllYWYw
OTdiNDQ3YzYxNDhlMTIxNmE0ZWQzZDlmZTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvV2ViUHVzaERhZW1vbi5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24ubW0KQEAgLTg2OSw2ICs4Njks
NTYgQEAgVEVTVF9GKFdlYlB1c2hEVGVzdCwgVW5zdWJzY3JpYmVzT25DbGVhcmluZ1dlYnNpdGVE
YXRhRm9yT3JpZ2luKQogICAgIEFTU0VSVF9GQUxTRShoYXNQdXNoU3Vic2NyaXB0aW9uKCkpOwog
fQogCitURVNUX0YoV2ViUHVzaERUZXN0LCBVbnN1YnNjcmliZXNPblBlcm1pc3Npb25SZXNldCkK
K3sKKyAgICBzdGF0aWMgY29uc3QgY2hhciogc291cmNlID0gUiJIVE1MKAorICAgIDxzY3JpcHQg
c3JjPSIvY29uc3RhbnRzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgIG5hdmlnYXRv
ci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKS50aGVuKGFzeW5jICgpID0+IHsKKyAg
ICAgICAgY29uc3QgcmVnaXN0cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIu
cmVhZHk7CisgICAgICAgIGxldCByZXN1bHQgPSBudWxsOworICAgICAgICB0cnkgeworICAgICAg
ICAgICAgbGV0IHN1YnNjcmlwdGlvbiA9IGF3YWl0IHJlZ2lzdHJhdGlvbi5wdXNoTWFuYWdlci5z
dWJzY3JpYmUoeworICAgICAgICAgICAgICAgIHVzZXJWaXNpYmxlT25seTogdHJ1ZSwKKyAgICAg
ICAgICAgICAgICBhcHBsaWNhdGlvblNlcnZlcktleTogVkFMSURfU0VSVkVSX0tFWQorICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICByZXN1bHQgPSAiU3Vic2NyaWJlZCI7CisgICAgICAgIH0g
Y2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9ICJFcnJvcjogIiArIGU7CisgICAgICAg
IH0KKyAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMubm90ZS5wb3N0TWVzc2Fn
ZShyZXN1bHQpOworICAgIH0pOworICAgIDwvc2NyaXB0PgorICAgIClIVE1MIjsKKworICAgIF9f
YmxvY2sgUmV0YWluUHRyPGlkPiByZXN1bHQgPSBuaWw7CisgICAgX19ibG9jayBib29sIGRvbmUg
PSBmYWxzZTsKKyAgICBbbV9ub3RpZmljYXRpb25NZXNzYWdlSGFuZGxlciBzZXRNZXNzYWdlSGFu
ZGxlcjpeKGlkIG1lc3NhZ2UpIHsKKyAgICAgICAgcmVzdWx0ID0gbWVzc2FnZTsKKyAgICAgICAg
ZG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBsb2FkUmVxdWVzdChzb3VyY2UsICIiKTsKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisgICAgQVNTRVJUX1RSVUUoW3Jl
c3VsdCBpc0VxdWFsVG9TdHJpbmc6QCJTdWJzY3JpYmVkIl0pOworICAgIEFTU0VSVF9UUlVFKGhh
c1B1c2hTdWJzY3JpcHRpb24oKSk7CisKKyAgICBtX25vdGlmaWNhdGlvblByb3ZpZGVyLT5yZXNl
dFBlcm1pc3Npb24obV9zZXJ2ZXItPm9yaWdpbigpKTsKKworICAgIGJvb2wgaXNTdWJzY3JpYmVk
ID0gdHJ1ZTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjp3YWl0Rm9yQ29uZGl0aW9uV2l0aExv
Z2dpbmcoW3RoaXMsICZpc1N1YnNjcmliZWRdIHsKKyAgICAgICAgaXNTdWJzY3JpYmVkID0gaGFz
UHVzaFN1YnNjcmlwdGlvbigpOworICAgICAgICBpZiAoIWlzU3Vic2NyaWJlZCkKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgICAgIHNsZWVwKDEpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfSwgNSwgQCJUaW1lZCBvdXQgd2FpdGluZyBmb3IgcHVzaCBzdWJzY3JpcHRpb24g
dG8gYmUgcmVtb3ZlZC4iKTsKKworICAgIEFTU0VSVF9GQUxTRShpc1N1YnNjcmliZWQpOworfQor
CiAjaWYgRU5BQkxFKElOU1RBTExfQ09PUkRJTkFUSU9OX0JVTkRMRVMpCiAjaWYgVVNFKEFQUExF
X0lOVEVSTkFMX1NESykKIHN0YXRpYyB2b2lkIGRlbGV0ZUFsbFJlZ2lzdHJhdGlvbnNGb3JEYXRh
U3RvcmUoV0tXZWJzaXRlRGF0YVN0b3JlICpkYXRhU3RvcmUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455586</attachid>
            <date>2022-03-23 17:33:11 -0700</date>
            <delta_ts>2022-03-25 01:44:21 -0700</delta_ts>
            <desc>rebase</desc>
            <filename>bug-238068-20220323173310.patch</filename>
            <type>text/plain</type>
            <size>19004</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTFjNjk1NDcwODU4OTMx
YjZkMmMyY2MzNWM2NDQ2NmJlNmY2OTQ0Mi4uNjYxOWQwYTExNWY4MDMwNzViZWJhNTRjZTMxMDJj
YWJjNmY3Nzk4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIyLTAzLTE4ICBCZW4g
TmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBwdXNoIHN1YnNjcmlwdGlv
bnMgd2hlbiBwZXJtaXNzaW9ucyBhcmUgcmVzZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODA2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEF2b2lkIGZpcmluZyB0aGUgcHVzaCBldmVudCBpZiBpdCBo
YXMgbm8gY2hhbmNlIG9mIGFjdHVhbGx5IGRpc3BsYXlpbmcgYSB1c2VyIG5vdGlmaWNhdGlvbi4K
KyAgICAgICAgVGhpcyBhY3RzIGFzIGEgYmFja3N0b3AgaW4gY2FzZXMgd2hlcmUgdGhlIG5vdGlm
aWNhdGlvbiBwZXJtaXNzaW9uIGZvciBhbiBvcmlnaW4gaXMgcmV2b2tlZAorICAgICAgICBidXQg
YXNzb2NpYXRlZCBwdXNoIHN1YnNjcmlwdGlvbnMgaGF2ZW4ndCB5ZXQgYmVlbiByZW1vdmVkIGlu
IHdlYnB1c2hkLgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpx
dWV1ZVRhc2tUb0ZpcmVQdXNoRXZlbnQpOgorCiAyMDIyLTAzLTE4ICBKb25hdGhhbiBCZWRhcmQg
IDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TIDE1LjRdIEZpeCB1bnVzZWQgdmFy
aWFibGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IGU1ZjgyZDI0ZjM4MTc2ZGVlNjExNDhkMGQ3Nzg2Zjc4M2JhMmZl
NTkuLjU0OTA5OTJjZmMwNWNhNmU5NmYzZmI0OWUzMTk4YjI0MjIzZDJhZjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMjItMDMtMTggIEJlbiBOaGFtICA8bmhhbUBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVtb3ZlIHB1c2ggc3Vic2NyaXB0aW9ucyB3aGVuIHBlcm1pc3Npb25zIGFyZSBy
ZXNldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4
MDY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hl
biB0aGUgbm90aWZpY2F0aW9uIHBlcm1pc3Npb24gZm9yIGFuIG9yaWdpbiBpcyByZXNldCAoaS5l
LiBpcyBzZXQgdG8KKyAgICAgICAgTm90aWZpY2F0aW9uUGVybWlzc2lvbjo6RGVmYXVsdCksIHdl
IHNob3VsZCBkZWxldGUgYW55IFB1c2hTdWJzY3JpcHRpb25zIGFzc29jaWF0ZWQgd2l0aAorICAg
ICAgICB0aGF0IG9yaWdpbi4gV2UgZG8gdGhpcyBieSBoYXZpbmcgdGhlIHByb3ZpZGVyRGlkUmVt
b3ZlTm90aWZpY2F0aW9uUG9saWNpZXMgQVBJIGNhbGwKKyAgICAgICAgZGVsZXRlUHVzaEFuZE5v
dGlmaWNhdGlvblJlZ2lzdHJhdGlvbiBpbiB3ZWJwdXNoZC4KKworICAgICAgICBOb3RlIHRoYXQg
d2UgZG9uJ3QgZGVsZXRlIHRoZSBzdWJzY3JpcHRpb24gaWYgdGhlIHBlcm1pc3Npb24gaXMgc2lt
cGx5IHRvZ2dsZWQgb2ZmICh2aWEKKyAgICAgICAgcHJvdmlkZXJEaWRVcGRhdGVOb3RpZmljYXRp
b25Qb2xpY3kpLiBJbiB0aGF0IGNhc2UsIHRoZSB1c2VyIGNhbiBlYXNpbHkgdG9nZ2xlIHRoZQor
ICAgICAgICBwZXJtaXNzaW9uIGJhY2sgb24uIEV2ZW50dWFsbHkgd2Ugd2FudCB0byBob29rIHVw
IHRoYXQgQVBJIHRvIGFkZCBhc3NvY2lhdGVkIHN1YnNjcmlwdGlvbnMKKyAgICAgICAgdG8gYW4g
aWdub3JlIGxpc3QgaW4gd2VicHVzaGQuIEJ1dCBhZnRlciBzb21lIGRpc2N1c3Npb24gd2UgZGVj
aWRlZCB0aGF0IHdhc24ndCBuZWNlc3NhcnkKKyAgICAgICAgdG8gaW1wbGVtZW50IGZvciB0aGUg
bW9tZW50LgorCisgICAgICAgICogVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6cmVtb3ZlUHVzaFN1YnNjcmlw
dGlvbnNGb3JPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5Ojpwcm92aWRlckRpZFJlbW92ZU5vdGlmaWNhdGlvblBvbGljaWVzKToKKyAgICAgICAg
KiB3ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tOgorICAgICAgICAoV2ViUHVzaEQ6OkRhZW1vbjo6
ZGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbik6CisKIDIwMjItMDMtMTggIEpv
bmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1MgMTUuNF0g
Rml4IHVudXNlZCB2YXJpYWJsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKaW5kZXggMzBh
OTgzNTEwNGE5YTcyZDE3MzQwOWM4NmJlMDAwMzljNTEwNjhjNi4uYjBlYjk0N2M0ZjY4MTgyM2Mw
ZmRiY2VkNTk0NTQxNTRmZjlkNTAzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKQEAg
LTIyMiw2ICsyMjIsMTggQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpxdWV1ZVRhc2tUb0Zp
cmVQdXNoRXZlbnQoc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4KIHsKICAgICBhdXRvJiBz
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGU+KCpnbG9iYWxTY29wZSgpKTsKICAgICBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuZXZlbnRM
b29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3dlYWtUaGlzID0g
V2Vha1B0ciB7ICp0aGlzIH0sIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSA9IFJlZiB7IHNlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZSB9LCBkYXRhID0gV1RGTW92ZShkYXRhKSwgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBwZXJtaXNzaW9uID0g
Tm90aWZpY2F0aW9uUGVybWlzc2lvbjo6RGVmYXVsdDsKKyAgICAgICAgaWYgKGF1dG8gbm90aWZp
Y2F0aW9uQ2xpZW50ID0gc3RhdGljX2Nhc3Q8U2NyaXB0RXhlY3V0aW9uQ29udGV4dCY+KHNlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZS5nZXQoKSkubm90aWZpY2F0aW9uQ2xpZW50KCkpCisgICAgICAg
ICAgICBwZXJtaXNzaW9uID0gbm90aWZpY2F0aW9uQ2xpZW50LT5jaGVja1Blcm1pc3Npb24oc2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlLnB0cigpKTsKKworICAgICAgICAvLyBBbGwgUHVzaFN1YnNj
cmlwdGlvbnMgYXJlIGNyZWF0ZWQgd2l0aCB0aGUgdXNlclZpc2libGVPbmx5IGZsYWcgc2V0LCBz
byBkb24ndCBib3RoZXIgZmlyaW5nCisgICAgICAgIC8vIHRoZSBwdXNoIGV2ZW50IGlmIHRoZXJl
J3Mgbm8gd2F5IGZvciBhIG5vdGlmaWNhdGlvbiB0byBhY3R1YWxseSBiZSBkaXNwbGF5ZWQuCisg
ICAgICAgIGlmIChwZXJtaXNzaW9uICE9IE5vdGlmaWNhdGlvblBlcm1pc3Npb246OkdyYW50ZWQp
IHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJTZXJ2aWNlV29ya2Vy
VGhyZWFkOjpxdWV1ZVRhc2tUb0ZpcmVQdXNoRXZlbnQgc2tpcHBpbmcgcHVzaCBldmVudCBmb3Ig
d29ya2VyICUiIFBSSXU2NCAiIGJlY2F1c2Ugbm90aWZpY2F0aW9uIHBlcm1pc3Npb24gaXMgJWQi
IFBSSXU2NCwgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLT50aHJlYWQoKS5pZGVudGlmaWVyKCku
dG9VSW50NjQoKSwgc3RhdGljX2Nhc3Q8aW50PihwZXJtaXNzaW9uKSk7CisgICAgICAgICAgICBj
YWxsYmFjayhmYWxzZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAg
ICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiU2VydmljZVdvcmtlclRocmVhZDo6cXVldWVU
YXNrVG9GaXJlUHVzaEV2ZW50IGZpcmluZyBldmVudCBmb3Igd29ya2VyICUiIFBSSXU2NCwgc2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlLT50aHJlYWQoKS5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7
CiAKICAgICAgICAgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLT5zZXRIYXNQZW5kaW5nU2lsZW50
UHVzaEV2ZW50KHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90
aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3Bw
CmluZGV4IGIzYWM3MmI1ZjZjYjgxOWZkOWEyYzA3NmIwZDY5MjYxY2JlNTE4MGEuLjIxNGQ4NjFm
YjEzZDIwMzA5NWZiYjZlYTA3MmRkOTE2MzYwNTRiMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eS5jcHAKQEAgLTM0LDcgKzM0LDkgQEAKICNpbmNsdWRlICJXZWJQYWdl
UHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYlByb2Nl
c3NQcm94eS5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL05vdGlmaWNhdGlvbkRhdGEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2lu
RGF0YS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpA
QCAtMjY3LDI1ICsyNjksNDggQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnBy
b3ZpZGVyRGlkVXBkYXRlTm90aWZpY2F0aW9uUG9saWN5KGNvbnN0IEFQSToKICAgICBwcm9jZXNz
UG9vbCgpLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFn
ZXI6OkRpZFVwZGF0ZU5vdGlmaWNhdGlvbkRlY2lzaW9uKG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4o
KS50b1N0cmluZygpLCBhbGxvd2VkKSk7CiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5Ojpwcm92aWRlckRpZFJlbW92ZU5vdGlmaWNhdGlvblBvbGljaWVzKEFQSTo6QXJyYXkq
IG9yaWdpbnMpCitzdGF0aWMgdm9pZCByZW1vdmVQdXNoU3Vic2NyaXB0aW9uc0Zvck9yaWdpbnMo
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdpbnMpCiB7Ci0g
ICAgaWYgKCFwcm9jZXNzUG9vbCgpKQorICAgIFJlZlB0cjxOZXR3b3JrUHJvY2Vzc1Byb3h5PiBu
ZXR3b3JrUHJvY2VzczsKKyAgICBhdXRvIHNlc3Npb25JRCA9IFBBTDo6U2Vzc2lvbklEOjpkZWZh
dWx0U2Vzc2lvbklEKCk7CisKKyAgICBXZWJzaXRlRGF0YVN0b3JlOjpmb3JFYWNoV2Vic2l0ZURh
dGFTdG9yZShbJm5ldHdvcmtQcm9jZXNzLCAmc2Vzc2lvbklEXShXZWJzaXRlRGF0YVN0b3JlJiBk
YXRhU3RvcmUpIHsKKyAgICAgICAgaWYgKCFuZXR3b3JrUHJvY2VzcyAmJiBkYXRhU3RvcmUuaXNQ
ZXJzaXN0ZW50KCkpIHsKKyAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzID0gJmRhdGFTdG9yZS5u
ZXR3b3JrUHJvY2VzcygpOworICAgICAgICAgICAgc2Vzc2lvbklEID0gZGF0YVN0b3JlLnNlc3Np
b25JRCgpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBpZiAoIW5ldHdvcmtQcm9jZXNzKQog
ICAgICAgICByZXR1cm47CiAKKyAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpCisgICAg
ICAgIG5ldHdvcmtQcm9jZXNzLT5kZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9u
KHNlc3Npb25JRCwgb3JpZ2luLCBbb3JpZ2luU3RyaW5nID0gb3JpZ2luLnRvU3RyaW5nKCldKGF1
dG8mJikgeyB9KTsKK30KKwordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3Zp
ZGVyRGlkUmVtb3ZlTm90aWZpY2F0aW9uUG9saWNpZXMoQVBJOjpBcnJheSogb3JpZ2lucykKK3sK
ICAgICBzaXplX3Qgc2l6ZSA9IG9yaWdpbnMtPnNpemUoKTsKICAgICBpZiAoIXNpemUpCiAgICAg
ICAgIHJldHVybjsKLSAgICAKKwogICAgIFZlY3RvcjxTdHJpbmc+IG9yaWdpblN0cmluZ3M7Cisg
ICAgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gc2VjdXJpdHlPcmlnaW5zOwor
CiAgICAgb3JpZ2luU3RyaW5ncy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBvcmlnaW5TdHJpbmdzLnVu
Y2hlY2tlZEFwcGVuZChvcmlnaW5zLT5hdDxBUEk6OlNlY3VyaXR5T3JpZ2luPihpKS0+c2VjdXJp
dHlPcmlnaW4oKS50b1N0cmluZygpKTsKKyAgICBzZWN1cml0eU9yaWdpbnMucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShzaXplKTsKIAotICAgIFdlYlByb2Nlc3NQb29sOjpzZW5kVG9BbGxSZW1vdGVX
b3JrZXJQcm9jZXNzZXMoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZFJlbW92
ZU5vdGlmaWNhdGlvbkRlY2lzaW9ucyhvcmlnaW5TdHJpbmdzKSk7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgYXV0byBzZWN1cml0eU9yaWdpbiA9IG9y
aWdpbnMtPmF0PEFQSTo6U2VjdXJpdHlPcmlnaW4+KGkpLT5zZWN1cml0eU9yaWdpbigpOworICAg
ICAgICBvcmlnaW5TdHJpbmdzLnVuY2hlY2tlZEFwcGVuZChzZWN1cml0eU9yaWdpbi50b1N0cmlu
ZygpKTsKKyAgICAgICAgc2VjdXJpdHlPcmlnaW5zLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKHNl
Y3VyaXR5T3JpZ2luKSk7CisgICAgfQogCi0gICAgaWYgKCFwcm9jZXNzUG9vbCgpKQotICAgICAg
ICByZXR1cm47Ci0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2Vz
OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpEaWRSZW1vdmVOb3RpZmljYXRpb25EZWNpc2lvbnMo
b3JpZ2luU3RyaW5ncykpOworICAgIGlmICh0aGlzID09ICZzaGFyZWRTZXJ2aWNlV29ya2VyTWFu
YWdlcigpKSB7CisgICAgICAgIHJlbW92ZVB1c2hTdWJzY3JpcHRpb25zRm9yT3JpZ2lucyhzZWN1
cml0eU9yaWdpbnMpOworICAgICAgICBXZWJQcm9jZXNzUG9vbDo6c2VuZFRvQWxsUmVtb3RlV29y
a2VyUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpEaWRSZW1vdmVO
b3RpZmljYXRpb25EZWNpc2lvbnMob3JpZ2luU3RyaW5ncykpOworICAgIH0gZWxzZSBpZiAocHJv
Y2Vzc1Bvb2woKSkKKyAgICAgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1l
c3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpEaWRSZW1vdmVOb3RpZmljYXRpb25EZWNp
c2lvbnMob3JpZ2luU3RyaW5ncykpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbSBiL1NvdXJjZS9X
ZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbQppbmRleCBjYmQxMjcwM2I1OWVjZjVmMjUw
N2M4MGRhYTAwM2JmZTJjOTczNGU0Li44ODYzNzZjNjc5Mjk2ZDc3MGMwNWUyMDgyY2ZhNGJjODI2
YTBjZWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24u
bW0KKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tCkBAIC00OTks
NyArNDk5LDE4IEBAIHZvaWQgRGFlbW9uOjpkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0
cmF0aW9uKENsaWVudENvbm5lY3Rpb24qIGNvbm5lY3Rpb24sCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBjb25uZWN0aW9uLT5lbnF1ZXVlQXBwQnVuZGxlUmVxdWVzdChtYWtlVW5pcXVl
PEFwcEJ1bmRsZURlbGV0aW9uUmVxdWVzdD4oKmNvbm5lY3Rpb24sIG9yaWdpblN0cmluZywgV1RG
TW92ZShyZXBseVNlbmRlcikpKTsKKyAgICBjb25uZWN0aW9uLT5lbnF1ZXVlQXBwQnVuZGxlUmVx
dWVzdChtYWtlVW5pcXVlPEFwcEJ1bmRsZURlbGV0aW9uUmVxdWVzdD4oKmNvbm5lY3Rpb24sIG9y
aWdpblN0cmluZywgW3RoaXMsIG9yaWdpblN0cmluZyA9IFN0cmluZyB7IG9yaWdpblN0cmluZyB9
LCByZXBseVNlbmRlciA9IFdURk1vdmUocmVwbHlTZW5kZXIpLCBidW5kbGVJZGVudGlmaWVyID0g
Y29ubmVjdGlvbi0+aG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllcigpXShjb25zdCBTdHJpbmcm
IHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIHJ1bkFmdGVyU3RhcnRpbmdQdXNoU2VydmljZShb
dGhpcywgYnVuZGxlSWRlbnRpZmllciA9IFdURk1vdmUoYnVuZGxlSWRlbnRpZmllciksIG9yaWdp
blN0cmluZyA9IFdURk1vdmUob3JpZ2luU3RyaW5nKSwgcmVwbHlTZW5kZXIgPSBXVEZNb3ZlKHJl
cGx5U2VuZGVyKSwgcmVzdWx0XSgpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCFtX3B1c2hT
ZXJ2aWNlKSB7CisgICAgICAgICAgICAgICAgcmVwbHlTZW5kZXIocmVzdWx0KTsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1fcHVzaFNlcnZp
Y2UtPnJlbW92ZVJlY29yZHNGb3JCdW5kbGVJZGVudGlmaWVyQW5kT3JpZ2luKGJ1bmRsZUlkZW50
aWZpZXIsIG9yaWdpblN0cmluZywgW3JlcGx5U2VuZGVyID0gV1RGTW92ZShyZXBseVNlbmRlciks
IHJlc3VsdF0oYXV0byYmKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICByZXBseVNlbmRlcihy
ZXN1bHQpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pKTsKIH0KIAogdm9p
ZCBEYWVtb246OnNldERlYnVnTW9kZUlzRW5hYmxlZChDbGllbnRDb25uZWN0aW9uKiBjbGllbnRD
b25uZWN0aW9uLCBib29sIGVuYWJsZWQpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggMTU0MzJjNDdiYWU3Nzg3OGI1MWEwNzg1YzYzOWJlMzhkZGMy
YzAzOS4uYTU4ZTIxZDAzNDdjZDkxOTc1NzY3YmEwNDQwMzBkYTljZGZkNGFlZiAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBA
CisyMDIyLTAzLTE4ICBCZW4gTmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92
ZSBwdXNoIHN1YnNjcmlwdGlvbnMgd2hlbiBwZXJtaXNzaW9ucyBhcmUgcmVzZXQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODA2OAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHRlc3QgdG8gbWFr
ZSBzdXJlIHB1c2ggc3Vic2NyaXB0aW9ucyBhcmUgcmVtb3ZlZCB3aGVuIHRoZSBub3RpZmljYXRp
b24gcG9saWN5IGZvciBhCisgICAgICAgIHdlYnNpdGUgaXMgcmVzZXQuCisKKyAgICAgICAgQWxz
byBmaXhlZCBhbiBpc3N1ZSB3aXRoIGEgUHVzaEFQSSB0ZXN0IHRoYXQgZGlkbid0IHByb3Blcmx5
IHJlZ2lzdGVyIGZvciBub3RpZmljYXRpb24gcGVybWlzc2lvbnMuCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3ROb3RpZmljYXRpb25Qcm92aWRlci5jcHA6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXI6OlRlc3ROb3RpZmljYXRpb25Qcm92aWRl
cik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXI6Om5v
dGlmaWNhdGlvblBlcm1pc3Npb25zIGNvbnN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRl
c3ROb3RpZmljYXRpb25Qcm92aWRlcjo6c2V0UGVybWlzc2lvbik6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXI6OnJlc2V0UGVybWlzc2lvbik6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuaDoKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1B1c2hBUEkubW06CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNoRGFlbW9uLm1tOgorCiAyMDIy
LTAzLTE4ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBG
aXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJsaW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBO
ZXR3b3JrIHByb2Nlc3MKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdE5vdGlm
aWNhdGlvblByb3ZpZGVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdE5vdGlmaWNhdGlv
blByb3ZpZGVyLmNwcAppbmRleCAwODBmMDZhOThjYzkxNTVlNGViOWVmMjRiMDU4Njc5ODg5NmMz
ZmFmLi5lYjM4Njk4MmFlZmRiYzhhNTNhNDRiNTMxNDc4MTAzNzc0OWU0NDRkIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3ROb3RpZmljYXRpb25Qcm92aWRlci5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwCkBAIC0yNyw2
ICsyNyw4IEBACiAjaW5jbHVkZSAiVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyLmgiCiAKICNpbmNs
dWRlICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIKKyNpbmNsdWRlIDxXZWJLaXQvV0tBcnJheS5oPgor
I2luY2x1ZGUgPFdlYktpdC9XS011dGFibGVEaWN0aW9uYXJ5Lmg+CiAjaW5jbHVkZSA8V2ViS2l0
L1dLTm90aWZpY2F0aW9uTWFuYWdlci5oPgogI2luY2x1ZGUgPFdlYktpdC9XS051bWJlci5oPgog
I2luY2x1ZGUgPFdlYktpdC9XS1NlY3VyaXR5T3JpZ2luUmVmLmg+CkBAIC00Miw3ICs0NCw2IEBA
IHN0YXRpYyBXS0RpY3Rpb25hcnlSZWYgbm90aWZpY2F0aW9uUGVybWlzc2lvbnMoY29uc3Qgdm9p
ZCogY2xpZW50SW5mbykKIAogVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyOjpUZXN0Tm90aWZpY2F0
aW9uUHJvdmlkZXIoVmVjdG9yPFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZj4mJiBtYW5hZ2VycykK
ICAgICA6IG1fbWFuYWdlcnMoV1RGTW92ZShtYW5hZ2VycykpCi0gICAgLCBtX3Blcm1pc3Npb25z
KGFkb3B0V0soV0tNdXRhYmxlRGljdGlvbmFyeUNyZWF0ZSgpKSkKIHsKICAgICBtX3Byb3ZpZGVy
ID0gewogICAgICAgICB7IDAsIHRoaXMgfSwKQEAgLTY3LDE5ICs2OCwzOSBAQCBUZXN0Tm90aWZp
Y2F0aW9uUHJvdmlkZXI6On5UZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIoKQogCiBXS0RpY3Rpb25h
cnlSZWYgVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyOjpub3RpZmljYXRpb25QZXJtaXNzaW9ucygp
IGNvbnN0CiB7Ci0gICAgV0tSZXRhaW4obV9wZXJtaXNzaW9ucy5nZXQoKSk7Ci0gICAgcmV0dXJu
IG1fcGVybWlzc2lvbnMuZ2V0KCk7CisgICAgYXV0byBwZXJtaXNzaW9ucyA9IFdLTXV0YWJsZURp
Y3Rpb25hcnlDcmVhdGUoKTsKKworICAgIGZvciAoYXV0byYgW29yaWdpbiwgYWxsb3dlZF0gOiBt
X3Blcm1pc3Npb25zKSB7CisgICAgICAgIGF1dG8gd2tPcmlnaW5TdHJpbmcgPSBhZG9wdFdLKFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKG9yaWdpbi51dGY4KCkuZGF0YSgpKSk7CisgICAg
ICAgIGF1dG8gd2tBbGxvd2VkID0gYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoYWxsb3dlZCkpOwor
ICAgICAgICBXS0RpY3Rpb25hcnlTZXRJdGVtKHBlcm1pc3Npb25zLCB3a09yaWdpblN0cmluZy5n
ZXQoKSwgd2tBbGxvd2VkLmdldCgpKTsKKyAgICB9CisKKyAgICByZXR1cm4gcGVybWlzc2lvbnM7
CiB9CiAKIHZvaWQgVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyOjpzZXRQZXJtaXNzaW9uKGNvbnN0
IFN0cmluZyYgb3JpZ2luLCBib29sIGFsbG93ZWQpCiB7Ci0gICAgYXV0byB3a0FsbG93ZWQgPSBh
ZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShhbGxvd2VkKSk7Ci0gICAgYXV0byB3a09yaWdpblN0cmlu
ZyA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcob3JpZ2luLnV0ZjgoKS5k
YXRhKCkpKTsKLSAgICBXS0RpY3Rpb25hcnlTZXRJdGVtKG1fcGVybWlzc2lvbnMuZ2V0KCksIHdr
T3JpZ2luU3RyaW5nLmdldCgpLCB3a0FsbG93ZWQuZ2V0KCkpOworICAgIG1fcGVybWlzc2lvbnMu
c2V0KG9yaWdpbiwgYWxsb3dlZCk7CiAKKyAgICBhdXRvIHdrT3JpZ2luU3RyaW5nID0gYWRvcHRX
SyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhvcmlnaW4udXRmOCgpLmRhdGEoKSkpOwog
ICAgIGF1dG8gd2tPcmlnaW4gPSBhZG9wdFdLKFdLU2VjdXJpdHlPcmlnaW5DcmVhdGVGcm9tU3Ry
aW5nKHdrT3JpZ2luU3RyaW5nLmdldCgpKSk7CisKICAgICBmb3IgKGF1dG8mIG1hbmFnZXIgOiBt
X21hbmFnZXJzKQogICAgICAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZFVwZGF0
ZU5vdGlmaWNhdGlvblBvbGljeShtYW5hZ2VyLCB3a09yaWdpbi5nZXQoKSwgYWxsb3dlZCk7CiB9
CiAKK3ZvaWQgVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyOjpyZXNldFBlcm1pc3Npb24oY29uc3Qg
U3RyaW5nJiBvcmlnaW4pCit7CisgICAgbV9wZXJtaXNzaW9ucy5yZW1vdmUob3JpZ2luKTsKKwor
ICAgIGF1dG8gd2tPcmlnaW5TdHJpbmcgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKG9yaWdpbi51dGY4KCkuZGF0YSgpKSk7CisgICAgYXV0byB3a09yaWdpbiA9IGFkb3B0
V0soV0tTZWN1cml0eU9yaWdpbkNyZWF0ZUZyb21TdHJpbmcod2tPcmlnaW5TdHJpbmcuZ2V0KCkp
KTsKKyAgICBhdXRvIHdrT3JpZ2luVHlwZVJlZiA9IHN0YXRpY19jYXN0PFdLVHlwZVJlZj4od2tP
cmlnaW4uZ2V0KCkpOworICAgIGF1dG8gd2tPcmlnaW5BcnJheSA9IGFkb3B0V0soV0tBcnJheUNy
ZWF0ZSgmd2tPcmlnaW5UeXBlUmVmLCAxKSk7CisKKyAgICBmb3IgKGF1dG8mIG1hbmFnZXIgOiBt
X21hbmFnZXJzKQorICAgICAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZFJlbW92
ZU5vdGlmaWNhdGlvblBvbGljaWVzKG1hbmFnZXIsIHdrT3JpZ2luQXJyYXkuZ2V0KCkpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3ROb3RpZmljYXRpb25Qcm92aWRlci5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuaAppbmRleCBiZTA0OGJmOWEyZDgzZDhlNDJkNTg2YzE2
YTEyZTFlZDM2MTQzMTBjLi5lNDg1ZWRhYjExMzVhN2RlNjY5Nzg2MWRjZTNjMzQ2MTc4YzdjYWUz
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3ROb3RpZmljYXRpb25Qcm92aWRl
ci5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyLmgK
QEAgLTI1LDExICsyNSwxMSBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgPFdlYktpdC9X
S011dGFibGVEaWN0aW9uYXJ5Lmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLTm90aWZpY2F0aW9uTWFu
YWdlci5oPgogI2luY2x1ZGUgPFdlYktpdC9XS05vdGlmaWNhdGlvblByb3ZpZGVyLmg+CiAjaW5j
bHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4K
KyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkgewpAQCAtNDIsMTAgKzQyLDExIEBAIHB1YmxpYzoKIAogICAg
IFdLRGljdGlvbmFyeVJlZiBub3RpZmljYXRpb25QZXJtaXNzaW9ucygpIGNvbnN0OwogICAgIHZv
aWQgc2V0UGVybWlzc2lvbihjb25zdCBTdHJpbmcmIG9yaWdpbiwgYm9vbCBhbGxvd2VkKTsKKyAg
ICB2b2lkIHJlc2V0UGVybWlzc2lvbihjb25zdCBTdHJpbmcmIG9yaWdpbik7CiAKIHByaXZhdGU6
CiAgICAgVmVjdG9yPFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZj4gbV9tYW5hZ2VyczsKLSAgICBX
S1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiBtX3Blcm1pc3Npb25zOworICAgIEhh
c2hNYXA8U3RyaW5nLCBib29sPiBtX3Blcm1pc3Npb25zOwogICAgIFdLTm90aWZpY2F0aW9uUHJv
dmlkZXJWMCBtX3Byb3ZpZGVyOwogfTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9QdXNoQVBJLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9QdXNoQVBJLm1tCmluZGV4IDU2ZWExOTE5MTdjYmU5NGJkZmEyNzc3NjEy
MDA5NjMxMzVhMjZjODYuLjg5YjRjOWY3YmQ3ODVhZjg0MWJkNWUyOGM4NjFjMTZlZThlNDVlMWMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHVzaEFQ
SS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1B1c2hBUEku
bW0KQEAgLTMzMyw2ICszMzMsOSBAQCBURVNUKFB1c2hBUEksIGZpcmVQdXNoRXZlbnRXaXRoTm9Q
YWdlc1RpbWVvdXQpCiAgICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0g
ZGF0YVN0b3JlLmdldCgpOwogICAgIGNsZWFyV2Vic2l0ZURhdGFTdG9yZShbY29uZmlndXJhdGlv
biB3ZWJzaXRlRGF0YVN0b3JlXSk7CiAKKyAgICBhdXRvIHByb3ZpZGVyID0gVGVzdFdlYktpdEFQ
STo6VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyKHsgW1tjb25maWd1cmF0aW9uIHByb2Nlc3NQb29s
XSBfbm90aWZpY2F0aW9uTWFuYWdlckZvclRlc3RpbmddLCBXS05vdGlmaWNhdGlvbk1hbmFnZXJH
ZXRTaGFyZWRTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uTWFuYWdlcigpIH0pOworICAgIHByb3Zp
ZGVyLnNldFBlcm1pc3Npb24oc2VydmVyLm9yaWdpbigpLCB0cnVlKTsKKwogICAgIGF1dG8gbWVz
c2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbUHVzaEFQSU1lc3NhZ2VIYW5kbGVyV2l0aEV4cGVjdGVk
TWVzc2FnZSBhbGxvY10gaW5pdF0pOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENv
bnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5h
bWU6QCJzdyJdOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dlYlB1c2hEYWVtb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dlYlB1c2hEYWVtb24ubW0KaW5kZXggOTdhNWJkYTc2OWNlZWUwZGQzYzU2MjhlNzM0
MjA5ZTA4MDEyMjRkOS4uYTQ0MzJjOTQ3OWVhZjA5N2I0NDdjNjE0OGUxMjE2YTRlZDNkOWZlNiAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNo
RGFlbW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vi
UHVzaERhZW1vbi5tbQpAQCAtODY5LDYgKzg2OSw1NiBAQCBURVNUX0YoV2ViUHVzaERUZXN0LCBV
bnN1YnNjcmliZXNPbkNsZWFyaW5nV2Vic2l0ZURhdGFGb3JPcmlnaW4pCiAgICAgQVNTRVJUX0ZB
TFNFKGhhc1B1c2hTdWJzY3JpcHRpb24oKSk7CiB9CiAKK1RFU1RfRihXZWJQdXNoRFRlc3QsIFVu
c3Vic2NyaWJlc09uUGVybWlzc2lvblJlc2V0KQoreworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBz
b3VyY2UgPSBSIkhUTUwoCisgICAgPHNjcmlwdCBzcmM9Ii9jb25zdGFudHMuanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQ+CisgICAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9z
dy5qcycpLnRoZW4oYXN5bmMgKCkgPT4geworICAgICAgICBjb25zdCByZWdpc3RyYXRpb24gPSBh
d2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWFkeTsKKyAgICAgICAgbGV0IHJlc3VsdCA9
IG51bGw7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBsZXQgc3Vic2NyaXB0aW9uID0gYXdh
aXQgcmVnaXN0cmF0aW9uLnB1c2hNYW5hZ2VyLnN1YnNjcmliZSh7CisgICAgICAgICAgICAgICAg
dXNlclZpc2libGVPbmx5OiB0cnVlLAorICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uU2VydmVy
S2V5OiBWQUxJRF9TRVJWRVJfS0VZCisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJlc3Vs
dCA9ICJTdWJzY3JpYmVkIjsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgcmVz
dWx0ID0gIkVycm9yOiAiICsgZTsKKyAgICAgICAgfQorICAgICAgICB3aW5kb3cud2Via2l0Lm1l
c3NhZ2VIYW5kbGVycy5ub3RlLnBvc3RNZXNzYWdlKHJlc3VsdCk7CisgICAgfSk7CisgICAgPC9z
Y3JpcHQ+CisgICAgKUhUTUwiOworCisgICAgX19ibG9jayBSZXRhaW5QdHI8aWQ+IHJlc3VsdCA9
IG5pbDsKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIFttX25vdGlmaWNhdGlv
bk1lc3NhZ2VIYW5kbGVyIHNldE1lc3NhZ2VIYW5kbGVyOl4oaWQgbWVzc2FnZSkgeworICAgICAg
ICByZXN1bHQgPSBtZXNzYWdlOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAg
IGxvYWRSZXF1ZXN0KHNvdXJjZSwgIiIpOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZG9uZSk7CisKKyAgICBBU1NFUlRfVFJVRShbcmVzdWx0IGlzRXF1YWxUb1N0cmluZzpAIlN1YnNj
cmliZWQiXSk7CisgICAgQVNTRVJUX1RSVUUoaGFzUHVzaFN1YnNjcmlwdGlvbigpKTsKKworICAg
IG1fbm90aWZpY2F0aW9uUHJvdmlkZXItPnJlc2V0UGVybWlzc2lvbihtX3NlcnZlci0+b3JpZ2lu
KCkpOworCisgICAgYm9vbCBpc1N1YnNjcmliZWQgPSB0cnVlOworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OndhaXRGb3JDb25kaXRpb25XaXRoTG9nZ2luZyhbdGhpcywgJmlzU3Vic2NyaWJlZF0g
eworICAgICAgICBpc1N1YnNjcmliZWQgPSBoYXNQdXNoU3Vic2NyaXB0aW9uKCk7CisgICAgICAg
IGlmICghaXNTdWJzY3JpYmVkKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAg
c2xlZXAoMSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9LCA1LCBAIlRpbWVkIG91dCB3
YWl0aW5nIGZvciBwdXNoIHN1YnNjcmlwdGlvbiB0byBiZSByZW1vdmVkLiIpOworCisgICAgQVNT
RVJUX0ZBTFNFKGlzU3Vic2NyaWJlZCk7Cit9CisKICNpZiBFTkFCTEUoSU5TVEFMTF9DT09SRElO
QVRJT05fQlVORExFUykKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogc3RhdGljIHZvaWQg
ZGVsZXRlQWxsUmVnaXN0cmF0aW9uc0ZvckRhdGFTdG9yZShXS1dlYnNpdGVEYXRhU3RvcmUgKmRh
dGFTdG9yZSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCBkOGQ4YjU1MDBiNzIxOTAxNWIzOGViZWIzMjJjYzMzNjVjMzBiZTJj
Li4wODkxNDFiYzg3OTYxZTVlMzQ2MWJlNTQzZDliYTljMzhjNDM3MTIzIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMjItMDMtMjMgIEJlbiBOaGFtICA8bmhhbUBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVtb3ZlIHB1c2ggc3Vic2NyaXB0aW9ucyB3aGVuIHBlcm1pc3Npb25zIGFyZSByZXNldAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MDY4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IGFuIGlz
c3VlIHdpdGggYSBsYXlvdXQgdGVzdCB0aGF0IGRpZG4ndCByZWdpc3RlciBmb3Igbm90aWZpY2F0
aW9uIHBlcm1pc3Npb25zLgorCisgICAgICAgICogaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Nl
cnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2guaHR0cHMuaHRtbDoKKwogMjAyMi0wMy0xOCAgUnlh
biBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1MgYXJtNjRd
IHdlYnJ0Yy92cDktcHJvZmlsZTIuaHRtbCBpcyBjb25zaXN0ZW50bHkgdGltaW5nIG91dApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29y
a2VyLXNwaW5uaW5nLXB1c2guaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZp
Y2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1wdXNoLmh0dHBzLmh0bWwKaW5kZXgg
ZmVjNDU3Yzc4NGZmZTRlYmNhMjkwNzkzZmFlOTQ2YTJkNTBmNGRlNi4uZjM4ZDBlNGJlNjVlMGVh
ZDc5YjMyNmUxZjJkYmVkZGExNGU5ZTNjNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93
cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2guaHR0cHMuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3Jr
ZXItc3Bpbm5pbmctcHVzaC5odHRwcy5odG1sCkBAIC03LDYgKzcsOSBAQAogPC9oZWFkPgogPGJv
ZHk+CiA8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZ3Jh
bnRXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKHdpbmRvdy5vcmlnaW4pOworCiBwcm9taXNlX3Rl
c3QoYXN5bmMgKHRlc3QpID0+IHsKICAgICBjb25zdCByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZp
Z2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rlcigic2VydmljZS13b3JrZXItc3Bpbm5pbmctd29y
a2VyLmpzIiwgeyBzY29wZSA6ICJzcGluLXB1c2giIH0pOwogICAgIGNvbnN0IHdvcmtlciA9IHJl
Z2lzdHJhdGlvbi5pbnN0YWxsaW5nOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455740</attachid>
            <date>2022-03-25 01:44:23 -0700</date>
            <delta_ts>2022-03-25 08:33:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238068-20220325014422.patch</filename>
            <type>text/plain</type>
            <size>24486</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxODQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDExN2M3OTQzZjE3MGU2NmE4
MjY3NzI2YzE2YWFiMmI4NzU1YmFhNDMuLjg0ZTdkNmZkN2UyNWEyOGVhOWM1MDFlNGFiOGM0MmJh
ZmM1ZmVhN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMjItMDMtMTggIEJlbiBOaGFt
ICA8bmhhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHB1c2ggc3Vic2NyaXB0aW9ucyB3
aGVuIHBlcm1pc3Npb25zIGFyZSByZXNldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MDY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgV2hlbiB0aGUgbm90aWZpY2F0aW9uIHBlcm1pc3Npb24gZm9yIGFu
IG9yaWdpbiBpcyByZXNldCAoaS5lLiBpcyBpbiB0aGUgcHJvbXB0IHN0YXRlKSwgd2UKKyAgICAg
ICAgc2hvdWxkIGRlbGV0ZSBhbnkgcHVzaCBzdWJzY3JpcHRpb25zIGFzc29jaWF0ZWQgd2l0aCB0
aGF0IG9yaWdpbi4gV2UgZG8gdGhpcyBieSBoYXZpbmcgdGhlCisgICAgICAgIHByb3ZpZGVyRGlk
UmVtb3ZlTm90aWZpY2F0aW9uUG9saWNpZXMgQVBJIGNhbGwgZGVsZXRlUHVzaEFuZE5vdGlmaWNh
dGlvblJlZ2lzdHJhdGlvbiBpbgorICAgICAgICB3ZWJwdXNoZC4KKworICAgICAgICBXZSBhbHNv
IGRvIHRoaXMgd2hlbiBwcm9jZXNzaW5nIGEgcHVzaCBtZXNzYWdlLCBzaW5jZSBpdCdzIHBvc3Np
YmxlIGZvciB0aGUgc3RhdGUgdG8gZ2V0IG91dAorICAgICAgICBvZiBzeW5jIGR1ZSB0byB0aGUg
bnVtYmVyIG9mIHByb2Nlc3NlcyBpbnZvbHZlZC4gRm9yIGluc3RhbmNlLCByZW1vdmluZyB0aGUg
cG9saWN5IGZyb20KKyAgICAgICAgU3lzdGVtIFByZWZlcmVuY2VzIHJhdGhlciB0aGFuIHRoZSBi
cm93c2VyJ3Mgbm90aWZpY2F0aW9uIHByZWZlcmVuY2UgcGFuZSBjYW4gcmVzdWx0IGluIHRoZQor
ICAgICAgICBwcm92aWRlckRpZFJlbW92ZU5vdGlmaWNhdGlvblBvbGljaWVzIGNhbGwgaW4gdGhl
IGJyb3dzZXIgdG8gYmUgZGVsYXllZCBvciBvbWl0dGVkLgorCisgICAgICAgIE5vdGUgdGhhdCB3
ZSBkb24ndCBkZWxldGUgdGhlIHN1YnNjcmlwdGlvbiBpZiB0aGUgcGVybWlzc2lvbiBpcyBzaW1w
bHkgdG9nZ2xlZCBvZmYgKGkuZS4gdGhlCisgICAgICAgIHBlcm1pc3Npb24gaXMgaW4gdGhlIERl
bmllZCBzdGF0ZSkuIEluIHRoYXQgY2FzZSwgdGhlIHVzZXIgY2FuIGVhc2lseSB0b2dnbGUgdGhl
IHBlcm1pc3Npb24KKyAgICAgICAgYmFjayBvbi4gV2Ugd2FudCB0aGUgc3Vic2NyaXB0aW9uIG9i
amVjdCB0byBzdGF5IHRoZSBzYW1lIGFmdGVyIHRoZSBwcmVmZXJlbmNlIGlzIHRvZ2dsZWQKKyAg
ICAgICAgYmFjayBvbiBzbyB0aGF0IHRoZSBzZXJ2ZXIgY2FuIHN0aWxsIHNlbmQgcHVzaGVzIHRv
IHRoYXQgcHVzaCBlbmRwb2ludC4gRXZlbnR1YWxseSB3ZSdsbAorICAgICAgICBjb25zaWRlciBh
ZGRpbmcgc3Vic2NyaXB0aW9ucyBpbiB0aGlzIHN0YXRlIHRvIHRoZSBpZ25vcmVkIHRvcGljcyBs
aXN0IGluIHdlYnB1c2hkLCB3aGljaAorICAgICAgICB3aWxsIHByZXZlbnQgcHVzaGVzIGZvciB0
aG9zZSBzdWJzY3JpcHRpb25zIGZyb20gYmVpbmcgZGVsaXZlcmVkIHRvIHRoZSBkZXZpY2Ugd2l0
aG91dAorICAgICAgICBhY3R1YWxseSB1bnN1YnNjcmliaW5nLgorCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6cHJvY2Vzc1B1c2hNZXNzYWdlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1l
c3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzUHVz
aE1lc3NhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OnJlbW92ZVB1c2hTdWJzY3Jp
cHRpb25zRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJQcm94eTo6cHJvdmlkZXJEaWRSZW1vdmVOb3RpZmljYXRpb25Qb2xpY2llcyk6CisgICAgICAg
ICogd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbToKKyAgICAgICAgKFdlYlB1c2hEOjpEYWVtb246
OmRlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb24pOgorCiAyMDIyLTAzLTI0ICBE
b24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgTm9uLXVuaWZp
ZWQgYnVpbGQgZml4ZXMsIGxhdGUgTWFyY2ggMjAyMiBlZGl0aW9uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDgzNGQxOWE1YjYzZDBl
NTNhOGJmMjM3MmE5NTMxYzRhMWNlZjY4ZjIuLmI2ZjgxOGNjNmVkOTkyZTQ1MTA4MmRkMWYxYzhi
NTJmMzhjNmExNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCkBAIC0yMjcyLDExICsyMjcyLDM5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmdldFBlbmRpbmdQdXNoTWVzc2FnZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0
aW9uCiAgICAgICAgIExPRyhOb3RpZmljYXRpb25zLCAiTmV0d29ya1Byb2Nlc3MgY291bGQgbm90
IGZpbmQgc2Vzc2lvbiBmb3IgSUQgJWxsdSB0byBnZXQgcGVuZGluZyBwdXNoIG1lc3NhZ2VzIiwg
c2Vzc2lvbklELnRvVUludDY0KCkpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpwcm9jZXNz
UHVzaE1lc3NhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQdXNoTWVzc2FnZSYmIHB1
c2hNZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQotewor
dm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1B1c2hNZXNzYWdlKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgV2ViUHVzaE1lc3NhZ2UmJiBwdXNoTWVzc2FnZSwgUHVzaFBlcm1pc3Npb25TdGF0
ZSBwZXJtaXNzaW9uU3RhdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJh
Y2spCit7CisgICAgLy8gUGVybWlzc2lvbiBzdGF0ZSBoYW5kbGluZyB1cG9uIHJlY2VpdmluZyBh
IHB1c2ggbWVzc2FnZToKKyAgICAvLworICAgIC8vIDEuIEdyYW50ZWQ6IHBhc3MgdGhlIGluY29t
aW5nIG1lc3NhZ2UgdG8gdGhlIGFwcHJvcHJpYXRlIHNlcnZpY2Ugd29ya2VyLgorICAgIC8vIDIu
IERlbmllZDogdXNlciBoYXMgdG9nZ2xlZCBvZmYgdGhlIGFiaWxpdHkgZm9yIHRoaXMgcHVzaCBz
dWJzY3JpcHRpb24gdG8gc2hvdyBub3RpZmljYXRpb25zLAorICAgIC8vICAgIGJ1dCBtaWdodCB0
b2dnbGUgaXQgb24gYWdhaW4uIFdlIGRvbid0IGFjdHVhbGx5IHJlbW92ZSB0aGUgc3Vic2NyaXB0
aW9uIGluIHRoaXMgY2FzZSBzaW5jZQorICAgIC8vICAgIHRoZSBwcmVmZXJlbmNlIG1pZ2h0IGJl
IHRvZ2dsZWQgb24gYWdhaW4sIGFuZCB3ZSdkIGxpa2UgdGhlIHN1YnNjcmlwdGlvbiBlbmRwb2lu
dCB0byBzdGF5CisgICAgLy8gICAgdGhlIHNhbWUgaW4gdGhhdCBjYXNlLiBJbiB0aGUgZnV0dXJl
IHdlIGNvdWxkIHBvc3NpYmx5IGFkZCB0aGlzIHRvcGljIHRvIHRoZSBpZ25vcmVkCisgICAgLy8g
ICAgdG9waWNzIGxpc3QgaW4gd2VicHVzaGQgdG8gcHJldmVudCB1bm5lY2Vzc2FyeSBwdXNoZXMg
ZnJvbSBiZWluZyByZWNlaXZlZCBhdCBhbGwuCisgICAgLy8gMy4gUHJvbXB0OiB1c2VyIGhhcyBy
ZW1vdmVkIHRoZSBvcmlnaW4gZnJvbSB0aGUgbm90aWZpY2F0aW9ucyBVSS4gSW4gdGhpcyBjYXNl
LCB0aGUgbmV4dAorICAgIC8vICAgIHN1YnNjcmlwdGlvbiBhdHRlbXB0IHNob3VsZCByZXN1bHQg
aW4gYSBuZXcgc3Vic2NyaXB0aW9uIGVuZHBvaW50LCBzbyB3ZSByZW1vdmUgdGhlCisgICAgLy8g
ICAgc3Vic2NyaXB0aW9uIGluIHRoaXMgY2FzZS4KICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5l
dHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgTE9HKFB1c2gsICJOZXR3b3JraW5n
IHByb2Nlc3MgaGFuZGxpbmcgYSBwdXNoIG1lc3NhZ2UgZnJvbSBVSSBwcm9jZXNzIGluIHNlc3Np
b24gJWxsdSIsIHNlc3Npb25JRC50b1VJbnQ2NCgpKTsKICAgICAgICAgYXV0byBvcmlnaW4gPSBT
ZWN1cml0eU9yaWdpbkRhdGE6OmZyb21VUkwocHVzaE1lc3NhZ2UucmVnaXN0cmF0aW9uVVJMKTsK
KworICAgICAgICBpZiAocGVybWlzc2lvblN0YXRlID09IFB1c2hQZXJtaXNzaW9uU3RhdGU6OlBy
b21wdCkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0coUHVzaCwgIlB1c2ggbWVzc2FnZSBmcm9t
ICUiIFBSSVZBVEVfTE9HX1NUUklORyAiIHdvbid0IGJlIHByb2Nlc3NlZCBzaW5jZSBwZXJtaXNz
aW9uIGlzIGluIHRoZSBwcm9tcHQgc3RhdGU7IHJlbW92aW5nIHB1c2ggc3Vic2NyaXB0aW9uIiwg
b3JpZ2luLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBzZXNzaW9uLT5u
b3RpZmljYXRpb25NYW5hZ2VyKCkucmVtb3ZlUHVzaFN1YnNjcmlwdGlvbnNGb3JPcmlnaW4oU2Vj
dXJpdHlPcmlnaW5EYXRhIHsgb3JpZ2luIH0sIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XShhdXRvJiYpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChwZXJtaXNzaW9uU3RhdGUgPT0gUHVzaFBlcm1p
c3Npb25TdGF0ZTo6RGVuaWVkKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPRyhQdXNoLCAiUHVz
aCBtZXNzYWdlIGZyb20gJSIgUFJJVkFURV9MT0dfU1RSSU5HICIgd29uJ3QgYmUgcHJvY2Vzc2Vk
IHNpbmNlIHBlcm1pc3Npb24gaXMgaW4gdGhlIGRlbmllZCBzdGF0ZSIsIG9yaWdpbi50b1N0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUKHBlcm1pc3Npb25TdGF0
ZSA9PSBQdXNoUGVybWlzc2lvblN0YXRlOjpHcmFudGVkKTsKICAgICAgICAgc2Vzc2lvbi0+ZW5z
dXJlU1dTZXJ2ZXIoKS5wcm9jZXNzUHVzaE1lc3NhZ2UoV1RGTW92ZShwdXNoTWVzc2FnZS5wdXNo
RGF0YSksIFdURk1vdmUocHVzaE1lc3NhZ2UucmVnaXN0cmF0aW9uVVJMKSwgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBzZXNzaW9uSUQsIG9yaWdpbiA9IFdURk1vdmUob3Jp
Z2luKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCByZXN1bHQpIG11dGFibGUg
ewogICAgICAgICAgICAgTmV0d29ya1Nlc3Npb24qIHNlc3Npb247CiAgICAgICAgICAgICBpZiAo
IXJlc3VsdCAmJiAoc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggZDkzNWY0
NmNjYzk5Y2E4Njc4NGY1ZjE0ZTgwZGQ3MGI1MDM4M2IyOS4uMGU1Yzg1ZmJkN2RhZDk2ZTZjMGIx
MmVmMTNiMzlkZGI0ZDE4NjUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTWVz
c2FnZVBvcnRDaGFubmVsUmVnaXN0cnkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlm
aWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvUHVzaFBlcm1pc3Npb25TdGF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4KQEAgLTM3
Miw3ICszNzMsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAg
dm9pZCBnZXRQZW5kaW5nUHVzaE1lc3NhZ2VzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJQdXNoTWVzc2FnZT4mKT4mJik7Ci0gICAgdm9pZCBw
cm9jZXNzUHVzaE1lc3NhZ2UoUEFMOjpTZXNzaW9uSUQsIFdlYlB1c2hNZXNzYWdlJiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgcHJvY2Vzc1B1c2hNZXNzYWdl
KFBBTDo6U2Vzc2lvbklELCBXZWJQdXNoTWVzc2FnZSYmLCBXZWJDb3JlOjpQdXNoUGVybWlzc2lv
blN0YXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICNlbmRpZgogCiAgICAg
dm9pZCBkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDY3ODhkNjVjYzZhOGNj
ZDNmMTFmOTBiMmQ2Nzc5ZTIxYWJkMWNkYzYuLjQ3N2NmN2ZiOTAwYmZjZGM4NTUyNjExNDgxMTg4
Y2VjYWQ1NzlkMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjExLDcgKzIxMSw3IEBAIG1lc3NhZ2Vz
IC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKIAogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKICAgICBHZXRQZW5kaW5nUHVzaE1lc3NhZ2VzKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCkgLT4gKFZlY3RvcjxXZWJLaXQ6OldlYlB1c2hNZXNzYWdlPiBtZXNzYWdlcykKLSAgICBQ
cm9jZXNzUHVzaE1lc3NhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViS2l0
OjpXZWJQdXNoTWVzc2FnZSBwdXNoTWVzc2FnZSkgLT4gKGJvb2wgZGlkU3VjY2VlZCkKKyAgICBQ
cm9jZXNzUHVzaE1lc3NhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViS2l0
OjpXZWJQdXNoTWVzc2FnZSBwdXNoTWVzc2FnZSwgZW51bTp1aW50OF90IFdlYkNvcmU6OlB1c2hQ
ZXJtaXNzaW9uU3RhdGUgcHVzaFBlcm1pc3Npb25TdGF0ZSkgLT4gKGJvb2wgZGlkU3VjY2VlZCkK
ICNlbmRpZgogICAgIERlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb24oUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIG9y
aWdpbikgLT4gKFN0cmluZyBlcnJvck1lc3NhZ2UpCiAgICAgR2V0T3JpZ2luc1dpdGhQdXNoQW5k
Tm90aWZpY2F0aW9uUGVybWlzc2lvbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoVmVj
dG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2lucykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmlu
ZGV4IDVhYjQ0ODliMzBjYjFmZTgxY2FhMTAxZjlhNTk2ZmI3ZTkyODVmY2IuLjhkM2U0ZDIwZTQy
YTJlOTQwYzg5MGViNmMyZThiMmVjMDhjZWFmZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtNTAsNiAr
NTAsNyBAQAogI2luY2x1ZGUgIlN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCIKICNpbmNsdWRlICJXZWJD
b21waWxlZENvbnRlbnRSdWxlTGlzdC5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94
eS5oIgorI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUg
IldlYlBhZ2VNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3NNZXNzYWdlcy5oIgpAQCAtNjIsNiArNjMsNyBAQAogI2luY2x1ZGUgIldlYnNp
dGVEYXRhU3RvcmVDbGllbnQuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVy
cy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ2xpZW50T3JpZ2luLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9QdXNoUGVybWlzc2lvblN0YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURv
bWFpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPHd0
Zi9DYWxsYmFja0FnZ3JlZ2F0b3IuaD4KQEAgLTE3NjksNyArMTc3MSwxNCBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OmdldFBlbmRpbmdQdXNoTWVzc2FnZXMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBDb21wbAogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnByb2Nlc3NQdXNoTWVz
c2FnZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFdlYlB1c2hNZXNzYWdlJiBwdXNo
TWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHdhc1Byb2Nlc3NlZCk+JiYgY2Fs
bGJhY2spCiB7Ci0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
czo6UHJvY2Vzc1B1c2hNZXNzYWdlIHsgc2Vzc2lvbklELCBwdXNoTWVzc2FnZSB9LCBXVEZNb3Zl
KGNhbGxiYWNrKSk7CisgICAgYXV0byBwZXJtaXNzaW9uID0gUHVzaFBlcm1pc3Npb25TdGF0ZTo6
UHJvbXB0OworICAgIGF1dG8gcGVybWlzc2lvbnMgPSBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHk6OnNoYXJlZFNlcnZpY2VXb3JrZXJNYW5hZ2VyKCkubm90aWZpY2F0aW9uUGVybWlzc2lvbnMo
KTsKKyAgICBhdXRvIG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVVSTChwdXNoTWVz
c2FnZS5yZWdpc3RyYXRpb25VUkwpLnRvU3RyaW5nKCk7CisKKyAgICBpZiAoYXV0byBpdCA9IHBl
cm1pc3Npb25zLmZpbmQob3JpZ2luKTsgaXQgIT0gcGVybWlzc2lvbnMuZW5kKCkpCisgICAgICAg
IHBlcm1pc3Npb24gPSBpdC0+dmFsdWUgPyBQdXNoUGVybWlzc2lvblN0YXRlOjpHcmFudGVkIDog
UHVzaFBlcm1pc3Npb25TdGF0ZTo6RGVuaWVkOworCisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UHJvY2Vzc1B1c2hNZXNzYWdlIHsgc2Vzc2lvbklELCBw
dXNoTWVzc2FnZSwgcGVybWlzc2lvbiB9LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAjZW5kaWYg
Ly8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJQcm94eS5jcHAKaW5kZXggYjNhYzcyYjVmNmNiODE5ZmQ5YTJjMDc2YjBkNjkyNjFjYmU1MTgw
YS4uMjE0ZDg2MWZiMTNkMjAzMDk1ZmJiNmVhMDcyZGQ5MTYzNjA1NGIzMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcApAQCAtMzQsNyArMzQsOSBAQAogI2luY2x1
ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTm90aWZpY2F0aW9uRGF0YS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2Vj
dXJpdHlPcmlnaW5EYXRhLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CkBAIC0yNjcsMjUgKzI2OSw0OCBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJQcm94eTo6cHJvdmlkZXJEaWRVcGRhdGVOb3RpZmljYXRpb25Qb2xpY3koY29uc3QgQVBJOgog
ICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViTm90aWZp
Y2F0aW9uTWFuYWdlcjo6RGlkVXBkYXRlTm90aWZpY2F0aW9uRGVjaXNpb24ob3JpZ2luLT5zZWN1
cml0eU9yaWdpbigpLnRvU3RyaW5nKCksIGFsbG93ZWQpKTsKIH0KIAotdm9pZCBXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkUmVtb3ZlTm90aWZpY2F0aW9uUG9saWNpZXMo
QVBJOjpBcnJheSogb3JpZ2lucykKK3N0YXRpYyB2b2lkIHJlbW92ZVB1c2hTdWJzY3JpcHRpb25z
Rm9yT3JpZ2lucyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3Jp
Z2lucykKIHsKLSAgICBpZiAoIXByb2Nlc3NQb29sKCkpCisgICAgUmVmUHRyPE5ldHdvcmtQcm9j
ZXNzUHJveHk+IG5ldHdvcmtQcm9jZXNzOworICAgIGF1dG8gc2Vzc2lvbklEID0gUEFMOjpTZXNz
aW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsKKworICAgIFdlYnNpdGVEYXRhU3RvcmU6OmZvckVh
Y2hXZWJzaXRlRGF0YVN0b3JlKFsmbmV0d29ya1Byb2Nlc3MsICZzZXNzaW9uSURdKFdlYnNpdGVE
YXRhU3RvcmUmIGRhdGFTdG9yZSkgeworICAgICAgICBpZiAoIW5ldHdvcmtQcm9jZXNzICYmIGRh
dGFTdG9yZS5pc1BlcnNpc3RlbnQoKSkgeworICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MgPSAm
ZGF0YVN0b3JlLm5ldHdvcmtQcm9jZXNzKCk7CisgICAgICAgICAgICBzZXNzaW9uSUQgPSBkYXRh
U3RvcmUuc2Vzc2lvbklEKCk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIGlmICghbmV0d29y
a1Byb2Nlc3MpCiAgICAgICAgIHJldHVybjsKIAorICAgIGZvciAoYXV0byYgb3JpZ2luIDogb3Jp
Z2lucykKKyAgICAgICAgbmV0d29ya1Byb2Nlc3MtPmRlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25S
ZWdpc3RyYXRpb24oc2Vzc2lvbklELCBvcmlnaW4sIFtvcmlnaW5TdHJpbmcgPSBvcmlnaW4udG9T
dHJpbmcoKV0oYXV0byYmKSB7IH0pOworfQorCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eTo6cHJvdmlkZXJEaWRSZW1vdmVOb3RpZmljYXRpb25Qb2xpY2llcyhBUEk6OkFycmF5KiBv
cmlnaW5zKQorewogICAgIHNpemVfdCBzaXplID0gb3JpZ2lucy0+c2l6ZSgpOwogICAgIGlmICgh
c2l6ZSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgVmVjdG9yPFN0cmluZz4gb3JpZ2lu
U3RyaW5nczsKKyAgICBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBzZWN1cml0
eU9yaWdpbnM7CisKICAgICBvcmlnaW5TdHJpbmdzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6
ZSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIG9yaWdp
blN0cmluZ3MudW5jaGVja2VkQXBwZW5kKG9yaWdpbnMtPmF0PEFQSTo6U2VjdXJpdHlPcmlnaW4+
KGkpLT5zZWN1cml0eU9yaWdpbigpLnRvU3RyaW5nKCkpOworICAgIHNlY3VyaXR5T3JpZ2lucy5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOwogCi0gICAgV2ViUHJvY2Vzc1Bvb2w6OnNlbmRU
b0FsbFJlbW90ZVdvcmtlclByb2Nlc3NlcyhNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdl
cjo6RGlkUmVtb3ZlTm90aWZpY2F0aW9uRGVjaXNpb25zKG9yaWdpblN0cmluZ3MpKTsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBhdXRvIHNlY3VyaXR5
T3JpZ2luID0gb3JpZ2lucy0+YXQ8QVBJOjpTZWN1cml0eU9yaWdpbj4oaSktPnNlY3VyaXR5T3Jp
Z2luKCk7CisgICAgICAgIG9yaWdpblN0cmluZ3MudW5jaGVja2VkQXBwZW5kKHNlY3VyaXR5T3Jp
Z2luLnRvU3RyaW5nKCkpOworICAgICAgICBzZWN1cml0eU9yaWdpbnMudW5jaGVja2VkQXBwZW5k
KFdURk1vdmUoc2VjdXJpdHlPcmlnaW4pKTsKKyAgICB9CiAKLSAgICBpZiAoIXByb2Nlc3NQb29s
KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9BbGxQcm9jZXNz
ZXMoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZFJlbW92ZU5vdGlmaWNhdGlv
bkRlY2lzaW9ucyhvcmlnaW5TdHJpbmdzKSk7CisgICAgaWYgKHRoaXMgPT0gJnNoYXJlZFNlcnZp
Y2VXb3JrZXJNYW5hZ2VyKCkpIHsKKyAgICAgICAgcmVtb3ZlUHVzaFN1YnNjcmlwdGlvbnNGb3JP
cmlnaW5zKHNlY3VyaXR5T3JpZ2lucyk7CisgICAgICAgIFdlYlByb2Nlc3NQb29sOjpzZW5kVG9B
bGxSZW1vdGVXb3JrZXJQcm9jZXNzZXMoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6
OkRpZFJlbW92ZU5vdGlmaWNhdGlvbkRlY2lzaW9ucyhvcmlnaW5TdHJpbmdzKSk7CisgICAgfSBl
bHNlIGlmIChwcm9jZXNzUG9vbCgpKQorICAgICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9BbGxQ
cm9jZXNzZXMoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZFJlbW92ZU5vdGlm
aWNhdGlvbkRlY2lzaW9ucyhvcmlnaW5TdHJpbmdzKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1t
IGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tCmluZGV4IGNiZDEyNzAz
YjU5ZWNmNWYyNTA3YzgwZGFhMDAzYmZlMmM5NzM0ZTQuLjg4NjM3NmM2NzkyOTZkNzcwYzA1ZTIw
ODJjZmE0YmM4MjZhMGNlZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2Vi
UHVzaERhZW1vbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24u
bW0KQEAgLTQ5OSw3ICs0OTksMTggQEAgdm9pZCBEYWVtb246OmRlbGV0ZVB1c2hBbmROb3RpZmlj
YXRpb25SZWdpc3RyYXRpb24oQ2xpZW50Q29ubmVjdGlvbiogY29ubmVjdGlvbiwKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGNvbm5lY3Rpb24tPmVucXVldWVBcHBCdW5kbGVSZXF1ZXN0
KG1ha2VVbmlxdWU8QXBwQnVuZGxlRGVsZXRpb25SZXF1ZXN0PigqY29ubmVjdGlvbiwgb3JpZ2lu
U3RyaW5nLCBXVEZNb3ZlKHJlcGx5U2VuZGVyKSkpOworICAgIGNvbm5lY3Rpb24tPmVucXVldWVB
cHBCdW5kbGVSZXF1ZXN0KG1ha2VVbmlxdWU8QXBwQnVuZGxlRGVsZXRpb25SZXF1ZXN0PigqY29u
bmVjdGlvbiwgb3JpZ2luU3RyaW5nLCBbdGhpcywgb3JpZ2luU3RyaW5nID0gU3RyaW5nIHsgb3Jp
Z2luU3RyaW5nIH0sIHJlcGx5U2VuZGVyID0gV1RGTW92ZShyZXBseVNlbmRlciksIGJ1bmRsZUlk
ZW50aWZpZXIgPSBjb25uZWN0aW9uLT5ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyKCldKGNv
bnN0IFN0cmluZyYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgcnVuQWZ0ZXJTdGFydGluZ1B1
c2hTZXJ2aWNlKFt0aGlzLCBidW5kbGVJZGVudGlmaWVyID0gV1RGTW92ZShidW5kbGVJZGVudGlm
aWVyKSwgb3JpZ2luU3RyaW5nID0gV1RGTW92ZShvcmlnaW5TdHJpbmcpLCByZXBseVNlbmRlciA9
IFdURk1vdmUocmVwbHlTZW5kZXIpLCByZXN1bHRdKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBp
ZiAoIW1fcHVzaFNlcnZpY2UpIHsKKyAgICAgICAgICAgICAgICByZXBseVNlbmRlcihyZXN1bHQp
OworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
bV9wdXNoU2VydmljZS0+cmVtb3ZlUmVjb3Jkc0ZvckJ1bmRsZUlkZW50aWZpZXJBbmRPcmlnaW4o
YnVuZGxlSWRlbnRpZmllciwgb3JpZ2luU3RyaW5nLCBbcmVwbHlTZW5kZXIgPSBXVEZNb3ZlKHJl
cGx5U2VuZGVyKSwgcmVzdWx0XShhdXRvJiYpIG11dGFibGUgeworICAgICAgICAgICAgICAgIHJl
cGx5U2VuZGVyKHJlc3VsdCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSkp
OwogfQogCiB2b2lkIERhZW1vbjo6c2V0RGVidWdNb2RlSXNFbmFibGVkKENsaWVudENvbm5lY3Rp
b24qIGNsaWVudENvbm5lY3Rpb24sIGJvb2wgZW5hYmxlZCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkNzI1MDJmNDBiMjlmYjc0NWRmMjcyYTc3
NmJhOTdhZTQ2MWUxNjExLi5hNmIxNzRhMjEzZjMxYmMwMjllMWY5MDA0NDRkZTUxYWE2OWIzZTkw
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjQgQEAKKzIwMjItMDMtMTggIEJlbiBOaGFtICA8bmhhbUBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmVtb3ZlIHB1c2ggc3Vic2NyaXB0aW9ucyB3aGVuIHBlcm1pc3Npb25zIGFyZSByZXNl
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MDY4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEg
dGVzdCB0byBtYWtlIHN1cmUgcHVzaCBzdWJzY3JpcHRpb25zIGFyZSByZW1vdmVkIHdoZW4gdGhl
IG5vdGlmaWNhdGlvbiBwb2xpY3kgZm9yIGEKKyAgICAgICAgd2Vic2l0ZSBpcyByZXNldC4KKwor
ICAgICAgICBBbHNvIGZpeGVkIGFuIGlzc3VlIHdpdGggYSBQdXNoQVBJIHRlc3QgdGhhdCBkaWRu
J3QgcHJvcGVybHkgcmVnaXN0ZXIgZm9yIG5vdGlmaWNhdGlvbiBwZXJtaXNzaW9ucy4KKworICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcDoKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRlc3ROb3RpZmljYXRpb25Qcm92aWRlcjo6VGVzdE5vdGlmaWNh
dGlvblByb3ZpZGVyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3ROb3RpZmljYXRpb25Q
cm92aWRlcjo6bm90aWZpY2F0aW9uUGVybWlzc2lvbnMgY29uc3QpOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyOjpzZXRQZXJtaXNzaW9uKToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRlc3ROb3RpZmljYXRpb25Qcm92aWRlcjo6cmVzZXRQZXJtaXNz
aW9uKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3ROb3RpZmljYXRpb25Qcm92aWRlci5o
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHVzaEFQSS5tbToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24u
bW06CisKIDIwMjItMDMtMjQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoKSBzaG91bGQgdGFrZSBp
biBTdHJpbmdWaWV3cyBpbnN0ZWFkIG9mIFN0cmluZ3MKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcAppbmRleCAwODBmMDZhOThjYzkxNTVlNGVi
OWVmMjRiMDU4Njc5ODg5NmMzZmFmLi5lYjM4Njk4MmFlZmRiYzhhNTNhNDRiNTMxNDc4MTAzNzc0
OWU0NDRkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3ROb3RpZmljYXRpb25Q
cm92aWRlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0Tm90aWZpY2F0aW9uUHJv
dmlkZXIuY3BwCkBAIC0yNyw2ICsyNyw4IEBACiAjaW5jbHVkZSAiVGVzdE5vdGlmaWNhdGlvblBy
b3ZpZGVyLmgiCiAKICNpbmNsdWRlICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIKKyNpbmNsdWRlIDxX
ZWJLaXQvV0tBcnJheS5oPgorI2luY2x1ZGUgPFdlYktpdC9XS011dGFibGVEaWN0aW9uYXJ5Lmg+
CiAjaW5jbHVkZSA8V2ViS2l0L1dLTm90aWZpY2F0aW9uTWFuYWdlci5oPgogI2luY2x1ZGUgPFdl
YktpdC9XS051bWJlci5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1NlY3VyaXR5T3JpZ2luUmVmLmg+
CkBAIC00Miw3ICs0NCw2IEBAIHN0YXRpYyBXS0RpY3Rpb25hcnlSZWYgbm90aWZpY2F0aW9uUGVy
bWlzc2lvbnMoY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIAogVGVzdE5vdGlmaWNhdGlvblByb3Zp
ZGVyOjpUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIoVmVjdG9yPFdLTm90aWZpY2F0aW9uTWFuYWdl
clJlZj4mJiBtYW5hZ2VycykKICAgICA6IG1fbWFuYWdlcnMoV1RGTW92ZShtYW5hZ2VycykpCi0g
ICAgLCBtX3Blcm1pc3Npb25zKGFkb3B0V0soV0tNdXRhYmxlRGljdGlvbmFyeUNyZWF0ZSgpKSkK
IHsKICAgICBtX3Byb3ZpZGVyID0gewogICAgICAgICB7IDAsIHRoaXMgfSwKQEAgLTY3LDE5ICs2
OCwzOSBAQCBUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXI6On5UZXN0Tm90aWZpY2F0aW9uUHJvdmlk
ZXIoKQogCiBXS0RpY3Rpb25hcnlSZWYgVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyOjpub3RpZmlj
YXRpb25QZXJtaXNzaW9ucygpIGNvbnN0CiB7Ci0gICAgV0tSZXRhaW4obV9wZXJtaXNzaW9ucy5n
ZXQoKSk7Ci0gICAgcmV0dXJuIG1fcGVybWlzc2lvbnMuZ2V0KCk7CisgICAgYXV0byBwZXJtaXNz
aW9ucyA9IFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKTsKKworICAgIGZvciAoYXV0byYgW29y
aWdpbiwgYWxsb3dlZF0gOiBtX3Blcm1pc3Npb25zKSB7CisgICAgICAgIGF1dG8gd2tPcmlnaW5T
dHJpbmcgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKG9yaWdpbi51dGY4
KCkuZGF0YSgpKSk7CisgICAgICAgIGF1dG8gd2tBbGxvd2VkID0gYWRvcHRXSyhXS0Jvb2xlYW5D
cmVhdGUoYWxsb3dlZCkpOworICAgICAgICBXS0RpY3Rpb25hcnlTZXRJdGVtKHBlcm1pc3Npb25z
LCB3a09yaWdpblN0cmluZy5nZXQoKSwgd2tBbGxvd2VkLmdldCgpKTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gcGVybWlzc2lvbnM7CiB9CiAKIHZvaWQgVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyOjpz
ZXRQZXJtaXNzaW9uKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBib29sIGFsbG93ZWQpCiB7Ci0gICAg
YXV0byB3a0FsbG93ZWQgPSBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShhbGxvd2VkKSk7Ci0gICAg
YXV0byB3a09yaWdpblN0cmluZyA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcob3JpZ2luLnV0ZjgoKS5kYXRhKCkpKTsKLSAgICBXS0RpY3Rpb25hcnlTZXRJdGVtKG1fcGVy
bWlzc2lvbnMuZ2V0KCksIHdrT3JpZ2luU3RyaW5nLmdldCgpLCB3a0FsbG93ZWQuZ2V0KCkpOwor
ICAgIG1fcGVybWlzc2lvbnMuc2V0KG9yaWdpbiwgYWxsb3dlZCk7CiAKKyAgICBhdXRvIHdrT3Jp
Z2luU3RyaW5nID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhvcmlnaW4u
dXRmOCgpLmRhdGEoKSkpOwogICAgIGF1dG8gd2tPcmlnaW4gPSBhZG9wdFdLKFdLU2VjdXJpdHlP
cmlnaW5DcmVhdGVGcm9tU3RyaW5nKHdrT3JpZ2luU3RyaW5nLmdldCgpKSk7CisKICAgICBmb3Ig
KGF1dG8mIG1hbmFnZXIgOiBtX21hbmFnZXJzKQogICAgICAgICBXS05vdGlmaWNhdGlvbk1hbmFn
ZXJQcm92aWRlckRpZFVwZGF0ZU5vdGlmaWNhdGlvblBvbGljeShtYW5hZ2VyLCB3a09yaWdpbi5n
ZXQoKSwgYWxsb3dlZCk7CiB9CiAKK3ZvaWQgVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyOjpyZXNl
dFBlcm1pc3Npb24oY29uc3QgU3RyaW5nJiBvcmlnaW4pCit7CisgICAgbV9wZXJtaXNzaW9ucy5y
ZW1vdmUob3JpZ2luKTsKKworICAgIGF1dG8gd2tPcmlnaW5TdHJpbmcgPSBhZG9wdFdLKFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKG9yaWdpbi51dGY4KCkuZGF0YSgpKSk7CisgICAgYXV0
byB3a09yaWdpbiA9IGFkb3B0V0soV0tTZWN1cml0eU9yaWdpbkNyZWF0ZUZyb21TdHJpbmcod2tP
cmlnaW5TdHJpbmcuZ2V0KCkpKTsKKyAgICBhdXRvIHdrT3JpZ2luVHlwZVJlZiA9IHN0YXRpY19j
YXN0PFdLVHlwZVJlZj4od2tPcmlnaW4uZ2V0KCkpOworICAgIGF1dG8gd2tPcmlnaW5BcnJheSA9
IGFkb3B0V0soV0tBcnJheUNyZWF0ZSgmd2tPcmlnaW5UeXBlUmVmLCAxKSk7CisKKyAgICBmb3Ig
KGF1dG8mIG1hbmFnZXIgOiBtX21hbmFnZXJzKQorICAgICAgICBXS05vdGlmaWNhdGlvbk1hbmFn
ZXJQcm92aWRlckRpZFJlbW92ZU5vdGlmaWNhdGlvblBvbGljaWVzKG1hbmFnZXIsIHdrT3JpZ2lu
QXJyYXkuZ2V0KCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3ROb3RpZmljYXRpb25Qcm92aWRlci5oIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuaAppbmRleCBiZTA0OGJm
OWEyZDgzZDhlNDJkNTg2YzE2YTEyZTFlZDM2MTQzMTBjLi5lNDg1ZWRhYjExMzVhN2RlNjY5Nzg2
MWRjZTNjMzQ2MTc4YzdjYWUzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RO
b3RpZmljYXRpb25Qcm92aWRlci5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdE5vdGlm
aWNhdGlvblByb3ZpZGVyLmgKQEAgLTI1LDExICsyNSwxMSBAQAogCiAjcHJhZ21hIG9uY2UKIAot
I2luY2x1ZGUgPFdlYktpdC9XS011dGFibGVEaWN0aW9uYXJ5Lmg+CiAjaW5jbHVkZSA8V2ViS2l0
L1dLTm90aWZpY2F0aW9uTWFuYWdlci5oPgogI2luY2x1ZGUgPFdlYktpdC9XS05vdGlmaWNhdGlv
blByb3ZpZGVyLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewpAQCAtNDIsMTAgKzQyLDEx
IEBAIHB1YmxpYzoKIAogICAgIFdLRGljdGlvbmFyeVJlZiBub3RpZmljYXRpb25QZXJtaXNzaW9u
cygpIGNvbnN0OwogICAgIHZvaWQgc2V0UGVybWlzc2lvbihjb25zdCBTdHJpbmcmIG9yaWdpbiwg
Ym9vbCBhbGxvd2VkKTsKKyAgICB2b2lkIHJlc2V0UGVybWlzc2lvbihjb25zdCBTdHJpbmcmIG9y
aWdpbik7CiAKIHByaXZhdGU6CiAgICAgVmVjdG9yPFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZj4g
bV9tYW5hZ2VyczsKLSAgICBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiBtX3Bl
cm1pc3Npb25zOworICAgIEhhc2hNYXA8U3RyaW5nLCBib29sPiBtX3Blcm1pc3Npb25zOwogICAg
IFdLTm90aWZpY2F0aW9uUHJvdmlkZXJWMCBtX3Byb3ZpZGVyOwogfTsKIApkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QdXNoQVBJLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QdXNoQVBJLm1tCmluZGV4IDJkOTEzZGMy
NTk4NDNhNzBjNDQyNTYwOTZmMDQxMmEzZjM1NWJiZTAuLjIxNDJkMjdhZjBkZDUzZDU4ODI2NzU0
NjM4ZDRiNWYyZDYwNTQyMWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvUHVzaEFQSS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1B1c2hBUEkubW0KQEAgLTMzNiw2ICszMzYsOSBAQCBURVNUKFB1c2hBUEksIGZp
cmVQdXNoRXZlbnRXaXRoTm9QYWdlc1RpbWVvdXQpCiAgICAgY29uZmlndXJhdGlvbi5nZXQoKS53
ZWJzaXRlRGF0YVN0b3JlID0gZGF0YVN0b3JlLmdldCgpOwogICAgIGNsZWFyV2Vic2l0ZURhdGFT
dG9yZShbY29uZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXSk7CiAKKyAgICBhdXRvIHByb3Zp
ZGVyID0gVGVzdFdlYktpdEFQSTo6VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyKHsgW1tjb25maWd1
cmF0aW9uIHByb2Nlc3NQb29sXSBfbm90aWZpY2F0aW9uTWFuYWdlckZvclRlc3RpbmddLCBXS05v
dGlmaWNhdGlvbk1hbmFnZXJHZXRTaGFyZWRTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uTWFuYWdl
cigpIH0pOworICAgIHByb3ZpZGVyLnNldFBlcm1pc3Npb24oc2VydmVyLm9yaWdpbigpLCB0cnVl
KTsKKwogICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbUHVzaEFQSU1lc3NhZ2VI
YW5kbGVyV2l0aEV4cGVjdGVkTWVzc2FnZSBhbGxvY10gaW5pdF0pOwogICAgIFtbY29uZmlndXJh
dGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3Nh
Z2VIYW5kbGVyLmdldCgpIG5hbWU6QCJzdyJdOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24ubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24ubW0KaW5kZXggOTdhNWJkYTc2
OWNlZWUwZGQzYzU2MjhlNzM0MjA5ZTA4MDEyMjRkOS4uYTQ0MzJjOTQ3OWVhZjA5N2I0NDdjNjE0
OGUxMjE2YTRlZDNkOWZlNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XZWJQdXNoRGFlbW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvV2ViUHVzaERhZW1vbi5tbQpAQCAtODY5LDYgKzg2OSw1NiBAQCBURVNU
X0YoV2ViUHVzaERUZXN0LCBVbnN1YnNjcmliZXNPbkNsZWFyaW5nV2Vic2l0ZURhdGFGb3JPcmln
aW4pCiAgICAgQVNTRVJUX0ZBTFNFKGhhc1B1c2hTdWJzY3JpcHRpb24oKSk7CiB9CiAKK1RFU1Rf
RihXZWJQdXNoRFRlc3QsIFVuc3Vic2NyaWJlc09uUGVybWlzc2lvblJlc2V0KQoreworICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBzb3VyY2UgPSBSIkhUTUwoCisgICAgPHNjcmlwdCBzcmM9Ii9jb25z
dGFudHMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgbmF2aWdhdG9yLnNlcnZpY2VX
b3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oYXN5bmMgKCkgPT4geworICAgICAgICBjb25z
dCByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWFkeTsKKyAg
ICAgICAgbGV0IHJlc3VsdCA9IG51bGw7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBsZXQg
c3Vic2NyaXB0aW9uID0gYXdhaXQgcmVnaXN0cmF0aW9uLnB1c2hNYW5hZ2VyLnN1YnNjcmliZSh7
CisgICAgICAgICAgICAgICAgdXNlclZpc2libGVPbmx5OiB0cnVlLAorICAgICAgICAgICAgICAg
IGFwcGxpY2F0aW9uU2VydmVyS2V5OiBWQUxJRF9TRVJWRVJfS0VZCisgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIHJlc3VsdCA9ICJTdWJzY3JpYmVkIjsKKyAgICAgICAgfSBjYXRjaCAoZSkg
eworICAgICAgICAgICAgcmVzdWx0ID0gIkVycm9yOiAiICsgZTsKKyAgICAgICAgfQorICAgICAg
ICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5ub3RlLnBvc3RNZXNzYWdlKHJlc3VsdCk7
CisgICAgfSk7CisgICAgPC9zY3JpcHQ+CisgICAgKUhUTUwiOworCisgICAgX19ibG9jayBSZXRh
aW5QdHI8aWQ+IHJlc3VsdCA9IG5pbDsKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOwor
ICAgIFttX25vdGlmaWNhdGlvbk1lc3NhZ2VIYW5kbGVyIHNldE1lc3NhZ2VIYW5kbGVyOl4oaWQg
bWVzc2FnZSkgeworICAgICAgICByZXN1bHQgPSBtZXNzYWdlOworICAgICAgICBkb25lID0gdHJ1
ZTsKKyAgICB9XTsKKworICAgIGxvYWRSZXF1ZXN0KHNvdXJjZSwgIiIpOworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICBBU1NFUlRfVFJVRShbcmVzdWx0IGlzRXF1
YWxUb1N0cmluZzpAIlN1YnNjcmliZWQiXSk7CisgICAgQVNTRVJUX1RSVUUoaGFzUHVzaFN1YnNj
cmlwdGlvbigpKTsKKworICAgIG1fbm90aWZpY2F0aW9uUHJvdmlkZXItPnJlc2V0UGVybWlzc2lv
bihtX3NlcnZlci0+b3JpZ2luKCkpOworCisgICAgYm9vbCBpc1N1YnNjcmliZWQgPSB0cnVlOwor
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OndhaXRGb3JDb25kaXRpb25XaXRoTG9nZ2luZyhbdGhp
cywgJmlzU3Vic2NyaWJlZF0geworICAgICAgICBpc1N1YnNjcmliZWQgPSBoYXNQdXNoU3Vic2Ny
aXB0aW9uKCk7CisgICAgICAgIGlmICghaXNTdWJzY3JpYmVkKQorICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICAgICAgc2xlZXAoMSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
LCA1LCBAIlRpbWVkIG91dCB3YWl0aW5nIGZvciBwdXNoIHN1YnNjcmlwdGlvbiB0byBiZSByZW1v
dmVkLiIpOworCisgICAgQVNTRVJUX0ZBTFNFKGlzU3Vic2NyaWJlZCk7Cit9CisKICNpZiBFTkFC
TEUoSU5TVEFMTF9DT09SRElOQVRJT05fQlVORExFUykKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxf
U0RLKQogc3RhdGljIHZvaWQgZGVsZXRlQWxsUmVnaXN0cmF0aW9uc0ZvckRhdGFTdG9yZShXS1dl
YnNpdGVEYXRhU3RvcmUgKmRhdGFTdG9yZSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlNThmNzIyMWM4ODNhMzJlOWIyNmFh
OTkyY2IwMTA1YzhiZjVhMDE4Li42OGM2MmQzZGNhOTU5OTkwYzRjOTAwM2NmZGUxOWU0NTIyMmI1
ODlhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjItMDMtMjMgIEJlbiBOaGFtICA8bmhhbUBh
cHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHB1c2ggc3Vic2NyaXB0aW9ucyB3aGVuIHBlcm1p
c3Npb25zIGFyZSByZXNldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM4MDY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRml4IGFuIGlzc3VlIHdpdGggYSBsYXlvdXQgdGVzdCB0aGF0IGRpZG4ndCByZWdp
c3RlciBmb3Igbm90aWZpY2F0aW9uIHBlcm1pc3Npb25zLgorCisgICAgICAgICogaHR0cC93cHQv
c2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2guaHR0cHMuaHRtbDoK
KwogMjAyMi0wMy0yNCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgog
CiAgICAgICAgIFtDb2NvYV0gUkVHUkVTU0lPTihyMjgxMjkxKTogV2hlbiBhY2Nlc3NpYmlsaXR5
IGJvbGQgaXMgZW5hYmxlZCwgZm9udC1mYW1pbHk6c3lzdGVtLXVpIGlzIHN1cHBvc2VkIHRvIGJl
IGJvbGQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9z
ZXJ2aWNlLXdvcmtlci1zcGlubmluZy1wdXNoLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctcHVzaC5odHRwcy5o
dG1sCmluZGV4IGZlYzQ1N2M3ODRmZmU0ZWJjYTI5MDc5M2ZhZTk0NmEyZDUwZjRkZTYuLmYzOGQw
ZTRiZTY1ZTBlYWQ3OWIzMjZlMWYyZGJlZGRhMTRlOWUzYzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1wdXNo
Lmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Nl
cnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2guaHR0cHMuaHRtbApAQCAtNyw2ICs3LDkgQEAKIDwv
aGVhZD4KIDxib2R5PgogPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0
UnVubmVyLmdyYW50V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbih3aW5kb3cub3JpZ2luKTsKKwog
cHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CiAgICAgY29uc3QgcmVnaXN0cmF0aW9uID0g
YXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoInNlcnZpY2Utd29ya2VyLXNw
aW5uaW5nLXdvcmtlci5qcyIsIHsgc2NvcGUgOiAic3Bpbi1wdXNoIiB9KTsKICAgICBjb25zdCB3
b3JrZXIgPSByZWdpc3RyYXRpb24uaW5zdGFsbGluZzsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455765</attachid>
            <date>2022-03-25 08:33:55 -0700</date>
            <delta_ts>2022-03-25 10:19:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238068-20220325083354.patch</filename>
            <type>text/plain</type>
            <size>24897</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxODQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDExN2M3OTQzZjE3MGU2NmE4
MjY3NzI2YzE2YWFiMmI4NzU1YmFhNDMuLjg0ZTdkNmZkN2UyNWEyOGVhOWM1MDFlNGFiOGM0MmJh
ZmM1ZmVhN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMjItMDMtMTggIEJlbiBOaGFt
ICA8bmhhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHB1c2ggc3Vic2NyaXB0aW9ucyB3
aGVuIHBlcm1pc3Npb25zIGFyZSByZXNldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MDY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgV2hlbiB0aGUgbm90aWZpY2F0aW9uIHBlcm1pc3Npb24gZm9yIGFu
IG9yaWdpbiBpcyByZXNldCAoaS5lLiBpcyBpbiB0aGUgcHJvbXB0IHN0YXRlKSwgd2UKKyAgICAg
ICAgc2hvdWxkIGRlbGV0ZSBhbnkgcHVzaCBzdWJzY3JpcHRpb25zIGFzc29jaWF0ZWQgd2l0aCB0
aGF0IG9yaWdpbi4gV2UgZG8gdGhpcyBieSBoYXZpbmcgdGhlCisgICAgICAgIHByb3ZpZGVyRGlk
UmVtb3ZlTm90aWZpY2F0aW9uUG9saWNpZXMgQVBJIGNhbGwgZGVsZXRlUHVzaEFuZE5vdGlmaWNh
dGlvblJlZ2lzdHJhdGlvbiBpbgorICAgICAgICB3ZWJwdXNoZC4KKworICAgICAgICBXZSBhbHNv
IGRvIHRoaXMgd2hlbiBwcm9jZXNzaW5nIGEgcHVzaCBtZXNzYWdlLCBzaW5jZSBpdCdzIHBvc3Np
YmxlIGZvciB0aGUgc3RhdGUgdG8gZ2V0IG91dAorICAgICAgICBvZiBzeW5jIGR1ZSB0byB0aGUg
bnVtYmVyIG9mIHByb2Nlc3NlcyBpbnZvbHZlZC4gRm9yIGluc3RhbmNlLCByZW1vdmluZyB0aGUg
cG9saWN5IGZyb20KKyAgICAgICAgU3lzdGVtIFByZWZlcmVuY2VzIHJhdGhlciB0aGFuIHRoZSBi
cm93c2VyJ3Mgbm90aWZpY2F0aW9uIHByZWZlcmVuY2UgcGFuZSBjYW4gcmVzdWx0IGluIHRoZQor
ICAgICAgICBwcm92aWRlckRpZFJlbW92ZU5vdGlmaWNhdGlvblBvbGljaWVzIGNhbGwgaW4gdGhl
IGJyb3dzZXIgdG8gYmUgZGVsYXllZCBvciBvbWl0dGVkLgorCisgICAgICAgIE5vdGUgdGhhdCB3
ZSBkb24ndCBkZWxldGUgdGhlIHN1YnNjcmlwdGlvbiBpZiB0aGUgcGVybWlzc2lvbiBpcyBzaW1w
bHkgdG9nZ2xlZCBvZmYgKGkuZS4gdGhlCisgICAgICAgIHBlcm1pc3Npb24gaXMgaW4gdGhlIERl
bmllZCBzdGF0ZSkuIEluIHRoYXQgY2FzZSwgdGhlIHVzZXIgY2FuIGVhc2lseSB0b2dnbGUgdGhl
IHBlcm1pc3Npb24KKyAgICAgICAgYmFjayBvbi4gV2Ugd2FudCB0aGUgc3Vic2NyaXB0aW9uIG9i
amVjdCB0byBzdGF5IHRoZSBzYW1lIGFmdGVyIHRoZSBwcmVmZXJlbmNlIGlzIHRvZ2dsZWQKKyAg
ICAgICAgYmFjayBvbiBzbyB0aGF0IHRoZSBzZXJ2ZXIgY2FuIHN0aWxsIHNlbmQgcHVzaGVzIHRv
IHRoYXQgcHVzaCBlbmRwb2ludC4gRXZlbnR1YWxseSB3ZSdsbAorICAgICAgICBjb25zaWRlciBh
ZGRpbmcgc3Vic2NyaXB0aW9ucyBpbiB0aGlzIHN0YXRlIHRvIHRoZSBpZ25vcmVkIHRvcGljcyBs
aXN0IGluIHdlYnB1c2hkLCB3aGljaAorICAgICAgICB3aWxsIHByZXZlbnQgcHVzaGVzIGZvciB0
aG9zZSBzdWJzY3JpcHRpb25zIGZyb20gYmVpbmcgZGVsaXZlcmVkIHRvIHRoZSBkZXZpY2Ugd2l0
aG91dAorICAgICAgICBhY3R1YWxseSB1bnN1YnNjcmliaW5nLgorCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6cHJvY2Vzc1B1c2hNZXNzYWdlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1l
c3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzUHVz
aE1lc3NhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OnJlbW92ZVB1c2hTdWJzY3Jp
cHRpb25zRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJQcm94eTo6cHJvdmlkZXJEaWRSZW1vdmVOb3RpZmljYXRpb25Qb2xpY2llcyk6CisgICAgICAg
ICogd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbToKKyAgICAgICAgKFdlYlB1c2hEOjpEYWVtb246
OmRlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb24pOgorCiAyMDIyLTAzLTI0ICBE
b24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgTm9uLXVuaWZp
ZWQgYnVpbGQgZml4ZXMsIGxhdGUgTWFyY2ggMjAyMiBlZGl0aW9uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDgzNGQxOWE1YjYzZDBl
NTNhOGJmMjM3MmE5NTMxYzRhMWNlZjY4ZjIuLmUwOTM2N2Y0OGRmNzA1MWJmMGQ3YjM4NzIyNWEx
YjViY2VmZjNiZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCkBAIC0yMjcyLDExICsyMjcyLDM5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmdldFBlbmRpbmdQdXNoTWVzc2FnZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0
aW9uCiAgICAgICAgIExPRyhOb3RpZmljYXRpb25zLCAiTmV0d29ya1Byb2Nlc3MgY291bGQgbm90
IGZpbmQgc2Vzc2lvbiBmb3IgSUQgJWxsdSB0byBnZXQgcGVuZGluZyBwdXNoIG1lc3NhZ2VzIiwg
c2Vzc2lvbklELnRvVUludDY0KCkpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpwcm9jZXNz
UHVzaE1lc3NhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQdXNoTWVzc2FnZSYmIHB1
c2hNZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQotewor
dm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1B1c2hNZXNzYWdlKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgV2ViUHVzaE1lc3NhZ2UmJiBwdXNoTWVzc2FnZSwgUHVzaFBlcm1pc3Npb25TdGF0
ZSBwZXJtaXNzaW9uU3RhdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJh
Y2spCit7CisgICAgLy8gUGVybWlzc2lvbiBzdGF0ZSBoYW5kbGluZyB1cG9uIHJlY2VpdmluZyBh
IHB1c2ggbWVzc2FnZToKKyAgICAvLworICAgIC8vIDEuIEdyYW50ZWQ6IHBhc3MgdGhlIGluY29t
aW5nIG1lc3NhZ2UgdG8gdGhlIGFwcHJvcHJpYXRlIHNlcnZpY2Ugd29ya2VyLgorICAgIC8vIDIu
IERlbmllZDogdXNlciBoYXMgdG9nZ2xlZCBvZmYgdGhlIGFiaWxpdHkgZm9yIHRoaXMgcHVzaCBz
dWJzY3JpcHRpb24gdG8gc2hvdyBub3RpZmljYXRpb25zLAorICAgIC8vICAgIGJ1dCBtaWdodCB0
b2dnbGUgaXQgb24gYWdhaW4uIFdlIGRvbid0IGFjdHVhbGx5IHJlbW92ZSB0aGUgc3Vic2NyaXB0
aW9uIGluIHRoaXMgY2FzZSBzaW5jZQorICAgIC8vICAgIHRoZSBwcmVmZXJlbmNlIG1pZ2h0IGJl
IHRvZ2dsZWQgb24gYWdhaW4sIGFuZCB3ZSdkIGxpa2UgdGhlIHN1YnNjcmlwdGlvbiBlbmRwb2lu
dCB0byBzdGF5CisgICAgLy8gICAgdGhlIHNhbWUgaW4gdGhhdCBjYXNlLiBJbiB0aGUgZnV0dXJl
IHdlIGNvdWxkIHBvc3NpYmx5IGFkZCB0aGlzIHRvcGljIHRvIHRoZSBpZ25vcmVkCisgICAgLy8g
ICAgdG9waWNzIGxpc3QgaW4gd2VicHVzaGQgdG8gcHJldmVudCB1bm5lY2Vzc2FyeSBwdXNoZXMg
ZnJvbSBiZWluZyByZWNlaXZlZCBhdCBhbGwuCisgICAgLy8gMy4gUHJvbXB0OiB1c2VyIGhhcyBy
ZW1vdmVkIHRoZSBvcmlnaW4gZnJvbSB0aGUgbm90aWZpY2F0aW9ucyBVSS4gSW4gdGhpcyBjYXNl
LCB0aGUgbmV4dAorICAgIC8vICAgIHN1YnNjcmlwdGlvbiBhdHRlbXB0IHNob3VsZCByZXN1bHQg
aW4gYSBuZXcgc3Vic2NyaXB0aW9uIGVuZHBvaW50LCBzbyB3ZSByZW1vdmUgdGhlCisgICAgLy8g
ICAgc3Vic2NyaXB0aW9uIGluIHRoaXMgY2FzZS4KICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5l
dHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgTE9HKFB1c2gsICJOZXR3b3JraW5n
IHByb2Nlc3MgaGFuZGxpbmcgYSBwdXNoIG1lc3NhZ2UgZnJvbSBVSSBwcm9jZXNzIGluIHNlc3Np
b24gJWxsdSIsIHNlc3Npb25JRC50b1VJbnQ2NCgpKTsKICAgICAgICAgYXV0byBvcmlnaW4gPSBT
ZWN1cml0eU9yaWdpbkRhdGE6OmZyb21VUkwocHVzaE1lc3NhZ2UucmVnaXN0cmF0aW9uVVJMKTsK
KworICAgICAgICBpZiAocGVybWlzc2lvblN0YXRlID09IFB1c2hQZXJtaXNzaW9uU3RhdGU6OlBy
b21wdCkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0coUHVzaCwgIlB1c2ggbWVzc2FnZSBmcm9t
ICUiIFBSSVZBVEVfTE9HX1NUUklORyAiIHdvbid0IGJlIHByb2Nlc3NlZCBzaW5jZSBwZXJtaXNz
aW9uIGlzIGluIHRoZSBwcm9tcHQgc3RhdGU7IHJlbW92aW5nIHB1c2ggc3Vic2NyaXB0aW9uIiwg
b3JpZ2luLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBzZXNzaW9uLT5u
b3RpZmljYXRpb25NYW5hZ2VyKCkucmVtb3ZlUHVzaFN1YnNjcmlwdGlvbnNGb3JPcmlnaW4oU2Vj
dXJpdHlPcmlnaW5EYXRhIHsgb3JpZ2luIH0sIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XShhdXRvJiYpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChwZXJtaXNzaW9uU3RhdGUgPT0gUHVzaFBlcm1p
c3Npb25TdGF0ZTo6RGVuaWVkKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPRyhQdXNoLCAiUHVz
aCBtZXNzYWdlIGZyb20gJSIgUFJJVkFURV9MT0dfU1RSSU5HICIgd29uJ3QgYmUgcHJvY2Vzc2Vk
IHNpbmNlIHBlcm1pc3Npb24gaXMgaW4gdGhlIGRlbmllZCBzdGF0ZSIsIG9yaWdpbi50b1N0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUKHBlcm1pc3Npb25TdGF0
ZSA9PSBQdXNoUGVybWlzc2lvblN0YXRlOjpHcmFudGVkKTsKICAgICAgICAgc2Vzc2lvbi0+ZW5z
dXJlU1dTZXJ2ZXIoKS5wcm9jZXNzUHVzaE1lc3NhZ2UoV1RGTW92ZShwdXNoTWVzc2FnZS5wdXNo
RGF0YSksIFdURk1vdmUocHVzaE1lc3NhZ2UucmVnaXN0cmF0aW9uVVJMKSwgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBzZXNzaW9uSUQsIG9yaWdpbiA9IFdURk1vdmUob3Jp
Z2luKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCByZXN1bHQpIG11dGFibGUg
ewogICAgICAgICAgICAgTmV0d29ya1Nlc3Npb24qIHNlc3Npb247CiAgICAgICAgICAgICBpZiAo
IXJlc3VsdCAmJiAoc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpKSB7CkBAIC0y
Mjk5LDcgKzIzMjcsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXRQZW5kaW5nUHVzaE1lc3Nh
Z2VzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2bwogICAgIGNhbGxiYWNrKHsg
fSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnByb2Nlc3NQdXNoTWVzc2FnZShQQUw6OlNl
c3Npb25JRCwgV2ViUHVzaE1lc3NhZ2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjYWxsYmFjaykKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnByb2Nlc3NQdXNoTWVzc2FnZShQQUw6
OlNlc3Npb25JRCwgV2ViUHVzaE1lc3NhZ2UmJiwgUHVzaFBlcm1pc3Npb25TdGF0ZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKIHsKICAgICBjYWxsYmFjayhmYWxz
ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgK
aW5kZXggZDkzNWY0NmNjYzk5Y2E4Njc4NGY1ZjE0ZTgwZGQ3MGI1MDM4M2IyOS4uMGU1Yzg1ZmJk
N2RhZDk2ZTZjMGIxMmVmMTNiMzlkZGI0ZDE4NjUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvTWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUHVzaFBlcm1pc3Npb25TdGF0ZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlw
ZXMuaD4KQEAgLTM3Miw3ICszNzMsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCiAgICAgdm9pZCBnZXRQZW5kaW5nUHVzaE1lc3NhZ2VzKFBBTDo6U2Vzc2lvbklELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJQdXNoTWVzc2FnZT4mKT4mJik7
Ci0gICAgdm9pZCBwcm9jZXNzUHVzaE1lc3NhZ2UoUEFMOjpTZXNzaW9uSUQsIFdlYlB1c2hNZXNz
YWdlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgcHJvY2Vz
c1B1c2hNZXNzYWdlKFBBTDo6U2Vzc2lvbklELCBXZWJQdXNoTWVzc2FnZSYmLCBXZWJDb3JlOjpQ
dXNoUGVybWlzc2lvblN0YXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICNl
bmRpZgogCiAgICAgdm9pZCBkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDY3
ODhkNjVjYzZhOGNjZDNmMTFmOTBiMmQ2Nzc5ZTIxYWJkMWNkYzYuLjQ3N2NmN2ZiOTAwYmZjZGM4
NTUyNjExNDgxMTg4Y2VjYWQ1NzlkMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjExLDcgKzIxMSw3
IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKIAogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKICAgICBHZXRQZW5kaW5nUHVzaE1lc3NhZ2VzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkgLT4gKFZlY3RvcjxXZWJLaXQ6OldlYlB1c2hNZXNzYWdlPiBtZXNz
YWdlcykKLSAgICBQcm9jZXNzUHVzaE1lc3NhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBz
dHJ1Y3QgV2ViS2l0OjpXZWJQdXNoTWVzc2FnZSBwdXNoTWVzc2FnZSkgLT4gKGJvb2wgZGlkU3Vj
Y2VlZCkKKyAgICBQcm9jZXNzUHVzaE1lc3NhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBz
dHJ1Y3QgV2ViS2l0OjpXZWJQdXNoTWVzc2FnZSBwdXNoTWVzc2FnZSwgZW51bTp1aW50OF90IFdl
YkNvcmU6OlB1c2hQZXJtaXNzaW9uU3RhdGUgcHVzaFBlcm1pc3Npb25TdGF0ZSkgLT4gKGJvb2wg
ZGlkU3VjY2VlZCkKICNlbmRpZgogICAgIERlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3Ry
YXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhIG9yaWdpbikgLT4gKFN0cmluZyBlcnJvck1lc3NhZ2UpCiAgICAgR2V0T3JpZ2lu
c1dpdGhQdXNoQW5kTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKSAtPiAoVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2lucykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwCmluZGV4IDVhYjQ0ODliMzBjYjFmZTgxY2FhMTAxZjlhNTk2ZmI3ZTkyODVmY2Iu
LjhkM2U0ZDIwZTQyYTJlOTQwYzg5MGViNmMyZThiMmVjMDhjZWFmZGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cApAQCAtNTAsNiArNTAsNyBAQAogI2luY2x1ZGUgIlN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCIKICNp
bmNsdWRlICJXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdC5oIgogI2luY2x1ZGUgIldlYkNvb2tp
ZU1hbmFnZXJQcm94eS5oIgorI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5o
IgogI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5o
IgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgpAQCAtNjIsNiArNjMsNyBAQAogI2lu
Y2x1ZGUgIldlYnNpdGVEYXRhU3RvcmVDbGllbnQuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0
b3JlUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ2xpZW50T3JpZ2luLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9QdXNoUGVybWlzc2lvblN0YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgog
I2luY2x1ZGUgPHd0Zi9DYWxsYmFja0FnZ3JlZ2F0b3IuaD4KQEAgLTE3NjksNyArMTc3MSwxNCBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmdldFBlbmRpbmdQdXNoTWVzc2FnZXMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbAogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnBy
b2Nlc3NQdXNoTWVzc2FnZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFdlYlB1c2hN
ZXNzYWdlJiBwdXNoTWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHdhc1Byb2Nl
c3NlZCk+JiYgY2FsbGJhY2spCiB7Ci0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzczo6UHJvY2Vzc1B1c2hNZXNzYWdlIHsgc2Vzc2lvbklELCBwdXNoTWVzc2Fn
ZSB9LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgYXV0byBwZXJtaXNzaW9uID0gUHVzaFBlcm1p
c3Npb25TdGF0ZTo6UHJvbXB0OworICAgIGF1dG8gcGVybWlzc2lvbnMgPSBXZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHk6OnNoYXJlZFNlcnZpY2VXb3JrZXJNYW5hZ2VyKCkubm90aWZpY2F0aW9u
UGVybWlzc2lvbnMoKTsKKyAgICBhdXRvIG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJv
bVVSTChwdXNoTWVzc2FnZS5yZWdpc3RyYXRpb25VUkwpLnRvU3RyaW5nKCk7CisKKyAgICBpZiAo
YXV0byBpdCA9IHBlcm1pc3Npb25zLmZpbmQob3JpZ2luKTsgaXQgIT0gcGVybWlzc2lvbnMuZW5k
KCkpCisgICAgICAgIHBlcm1pc3Npb24gPSBpdC0+dmFsdWUgPyBQdXNoUGVybWlzc2lvblN0YXRl
OjpHcmFudGVkIDogUHVzaFBlcm1pc3Npb25TdGF0ZTo6RGVuaWVkOworCisgICAgc2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UHJvY2Vzc1B1c2hNZXNzYWdlIHsg
c2Vzc2lvbklELCBwdXNoTWVzc2FnZSwgcGVybWlzc2lvbiB9LCBXVEZNb3ZlKGNhbGxiYWNrKSk7
CiB9CiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKaW5kZXggYjNhYzcyYjVmNmNiODE5ZmQ5YTJjMDc2YjBk
NjkyNjFjYmU1MTgwYS4uMjE0ZDg2MWZiMTNkMjAzMDk1ZmJiNmVhMDcyZGQ5MTYzNjA1NGIzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05v
dGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcApAQCAtMzQsNyArMzQs
OSBAQAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29s
LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFT
dG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTm90aWZpY2F0aW9uRGF0YS5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0yNjcsMjUgKzI2OSw0OCBAQCB2b2lkIFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRVcGRhdGVOb3RpZmljYXRpb25Qb2xpY3ko
Y29uc3QgQVBJOgogICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdl
czo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6RGlkVXBkYXRlTm90aWZpY2F0aW9uRGVjaXNpb24o
b3JpZ2luLT5zZWN1cml0eU9yaWdpbigpLnRvU3RyaW5nKCksIGFsbG93ZWQpKTsKIH0KIAotdm9p
ZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkUmVtb3ZlTm90aWZpY2F0
aW9uUG9saWNpZXMoQVBJOjpBcnJheSogb3JpZ2lucykKK3N0YXRpYyB2b2lkIHJlbW92ZVB1c2hT
dWJzY3JpcHRpb25zRm9yT3JpZ2lucyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhPiYgb3JpZ2lucykKIHsKLSAgICBpZiAoIXByb2Nlc3NQb29sKCkpCisgICAgUmVmUHRy
PE5ldHdvcmtQcm9jZXNzUHJveHk+IG5ldHdvcmtQcm9jZXNzOworICAgIGF1dG8gc2Vzc2lvbklE
ID0gUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsKKworICAgIFdlYnNpdGVEYXRh
U3RvcmU6OmZvckVhY2hXZWJzaXRlRGF0YVN0b3JlKFsmbmV0d29ya1Byb2Nlc3MsICZzZXNzaW9u
SURdKFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkgeworICAgICAgICBpZiAoIW5ldHdvcmtQ
cm9jZXNzICYmIGRhdGFTdG9yZS5pc1BlcnNpc3RlbnQoKSkgeworICAgICAgICAgICAgbmV0d29y
a1Byb2Nlc3MgPSAmZGF0YVN0b3JlLm5ldHdvcmtQcm9jZXNzKCk7CisgICAgICAgICAgICBzZXNz
aW9uSUQgPSBkYXRhU3RvcmUuc2Vzc2lvbklEKCk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAg
IGlmICghbmV0d29ya1Byb2Nlc3MpCiAgICAgICAgIHJldHVybjsKIAorICAgIGZvciAoYXV0byYg
b3JpZ2luIDogb3JpZ2lucykKKyAgICAgICAgbmV0d29ya1Byb2Nlc3MtPmRlbGV0ZVB1c2hBbmRO
b3RpZmljYXRpb25SZWdpc3RyYXRpb24oc2Vzc2lvbklELCBvcmlnaW4sIFtvcmlnaW5TdHJpbmcg
PSBvcmlnaW4udG9TdHJpbmcoKV0oYXV0byYmKSB7IH0pOworfQorCit2b2lkIFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRSZW1vdmVOb3RpZmljYXRpb25Qb2xpY2llcyhB
UEk6OkFycmF5KiBvcmlnaW5zKQorewogICAgIHNpemVfdCBzaXplID0gb3JpZ2lucy0+c2l6ZSgp
OwogICAgIGlmICghc2l6ZSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgVmVjdG9yPFN0
cmluZz4gb3JpZ2luU3RyaW5nczsKKyAgICBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhPiBzZWN1cml0eU9yaWdpbnM7CisKICAgICBvcmlnaW5TdHJpbmdzLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoc2l6ZSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0g
ICAgICAgIG9yaWdpblN0cmluZ3MudW5jaGVja2VkQXBwZW5kKG9yaWdpbnMtPmF0PEFQSTo6U2Vj
dXJpdHlPcmlnaW4+KGkpLT5zZWN1cml0eU9yaWdpbigpLnRvU3RyaW5nKCkpOworICAgIHNlY3Vy
aXR5T3JpZ2lucy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOwogCi0gICAgV2ViUHJvY2Vz
c1Bvb2w6OnNlbmRUb0FsbFJlbW90ZVdvcmtlclByb2Nlc3NlcyhNZXNzYWdlczo6V2ViTm90aWZp
Y2F0aW9uTWFuYWdlcjo6RGlkUmVtb3ZlTm90aWZpY2F0aW9uRGVjaXNpb25zKG9yaWdpblN0cmlu
Z3MpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBh
dXRvIHNlY3VyaXR5T3JpZ2luID0gb3JpZ2lucy0+YXQ8QVBJOjpTZWN1cml0eU9yaWdpbj4oaSkt
PnNlY3VyaXR5T3JpZ2luKCk7CisgICAgICAgIG9yaWdpblN0cmluZ3MudW5jaGVja2VkQXBwZW5k
KHNlY3VyaXR5T3JpZ2luLnRvU3RyaW5nKCkpOworICAgICAgICBzZWN1cml0eU9yaWdpbnMudW5j
aGVja2VkQXBwZW5kKFdURk1vdmUoc2VjdXJpdHlPcmlnaW4pKTsKKyAgICB9CiAKLSAgICBpZiAo
IXByb2Nlc3NQb29sKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBwcm9jZXNzUG9vbCgpLT5zZW5k
VG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZFJlbW92
ZU5vdGlmaWNhdGlvbkRlY2lzaW9ucyhvcmlnaW5TdHJpbmdzKSk7CisgICAgaWYgKHRoaXMgPT0g
JnNoYXJlZFNlcnZpY2VXb3JrZXJNYW5hZ2VyKCkpIHsKKyAgICAgICAgcmVtb3ZlUHVzaFN1YnNj
cmlwdGlvbnNGb3JPcmlnaW5zKHNlY3VyaXR5T3JpZ2lucyk7CisgICAgICAgIFdlYlByb2Nlc3NQ
b29sOjpzZW5kVG9BbGxSZW1vdGVXb3JrZXJQcm9jZXNzZXMoTWVzc2FnZXM6OldlYk5vdGlmaWNh
dGlvbk1hbmFnZXI6OkRpZFJlbW92ZU5vdGlmaWNhdGlvbkRlY2lzaW9ucyhvcmlnaW5TdHJpbmdz
KSk7CisgICAgfSBlbHNlIGlmIChwcm9jZXNzUG9vbCgpKQorICAgICAgICBwcm9jZXNzUG9vbCgp
LT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRp
ZFJlbW92ZU5vdGlmaWNhdGlvbkRlY2lzaW9ucyhvcmlnaW5TdHJpbmdzKSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQ
dXNoRGFlbW9uLm1tIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tCmlu
ZGV4IGNiZDEyNzAzYjU5ZWNmNWYyNTA3YzgwZGFhMDAzYmZlMmM5NzM0ZTQuLjg4NjM3NmM2Nzky
OTZkNzcwYzA1ZTIwODJjZmE0YmM4MjZhMGNlZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
d2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dl
YlB1c2hEYWVtb24ubW0KQEAgLTQ5OSw3ICs0OTksMTggQEAgdm9pZCBEYWVtb246OmRlbGV0ZVB1
c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb24oQ2xpZW50Q29ubmVjdGlvbiogY29ubmVjdGlv
biwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNvbm5lY3Rpb24tPmVucXVldWVBcHBC
dW5kbGVSZXF1ZXN0KG1ha2VVbmlxdWU8QXBwQnVuZGxlRGVsZXRpb25SZXF1ZXN0PigqY29ubmVj
dGlvbiwgb3JpZ2luU3RyaW5nLCBXVEZNb3ZlKHJlcGx5U2VuZGVyKSkpOworICAgIGNvbm5lY3Rp
b24tPmVucXVldWVBcHBCdW5kbGVSZXF1ZXN0KG1ha2VVbmlxdWU8QXBwQnVuZGxlRGVsZXRpb25S
ZXF1ZXN0PigqY29ubmVjdGlvbiwgb3JpZ2luU3RyaW5nLCBbdGhpcywgb3JpZ2luU3RyaW5nID0g
U3RyaW5nIHsgb3JpZ2luU3RyaW5nIH0sIHJlcGx5U2VuZGVyID0gV1RGTW92ZShyZXBseVNlbmRl
ciksIGJ1bmRsZUlkZW50aWZpZXIgPSBjb25uZWN0aW9uLT5ob3N0QXBwQ29kZVNpZ25pbmdJZGVu
dGlmaWVyKCldKGNvbnN0IFN0cmluZyYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgcnVuQWZ0
ZXJTdGFydGluZ1B1c2hTZXJ2aWNlKFt0aGlzLCBidW5kbGVJZGVudGlmaWVyID0gV1RGTW92ZShi
dW5kbGVJZGVudGlmaWVyKSwgb3JpZ2luU3RyaW5nID0gV1RGTW92ZShvcmlnaW5TdHJpbmcpLCBy
ZXBseVNlbmRlciA9IFdURk1vdmUocmVwbHlTZW5kZXIpLCByZXN1bHRdKCkgbXV0YWJsZSB7Cisg
ICAgICAgICAgICBpZiAoIW1fcHVzaFNlcnZpY2UpIHsKKyAgICAgICAgICAgICAgICByZXBseVNl
bmRlcihyZXN1bHQpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgbV9wdXNoU2VydmljZS0+cmVtb3ZlUmVjb3Jkc0ZvckJ1bmRsZUlkZW50aWZp
ZXJBbmRPcmlnaW4oYnVuZGxlSWRlbnRpZmllciwgb3JpZ2luU3RyaW5nLCBbcmVwbHlTZW5kZXIg
PSBXVEZNb3ZlKHJlcGx5U2VuZGVyKSwgcmVzdWx0XShhdXRvJiYpIG11dGFibGUgeworICAgICAg
ICAgICAgICAgIHJlcGx5U2VuZGVyKHJlc3VsdCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fSk7CisgICAgfSkpOwogfQogCiB2b2lkIERhZW1vbjo6c2V0RGVidWdNb2RlSXNFbmFibGVkKENs
aWVudENvbm5lY3Rpb24qIGNsaWVudENvbm5lY3Rpb24sIGJvb2wgZW5hYmxlZCkKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkNzI1MDJmNDBiMjlm
Yjc0NWRmMjcyYTc3NmJhOTdhZTQ2MWUxNjExLi5hNmIxNzRhMjEzZjMxYmMwMjllMWY5MDA0NDRk
ZTUxYWE2OWIzZTkwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjItMDMtMTggIEJlbiBOaGFtICA8bmhhbUBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHB1c2ggc3Vic2NyaXB0aW9ucyB3aGVuIHBlcm1pc3Np
b25zIGFyZSByZXNldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM4MDY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIGEgdGVzdCB0byBtYWtlIHN1cmUgcHVzaCBzdWJzY3JpcHRpb25zIGFyZSByZW1v
dmVkIHdoZW4gdGhlIG5vdGlmaWNhdGlvbiBwb2xpY3kgZm9yIGEKKyAgICAgICAgd2Vic2l0ZSBp
cyByZXNldC4KKworICAgICAgICBBbHNvIGZpeGVkIGFuIGlzc3VlIHdpdGggYSBQdXNoQVBJIHRl
c3QgdGhhdCBkaWRuJ3QgcHJvcGVybHkgcmVnaXN0ZXIgZm9yIG5vdGlmaWNhdGlvbiBwZXJtaXNz
aW9ucy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVy
LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3ROb3RpZmljYXRpb25Qcm92aWRlcjo6
VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RO
b3RpZmljYXRpb25Qcm92aWRlcjo6bm90aWZpY2F0aW9uUGVybWlzc2lvbnMgY29uc3QpOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyOjpzZXRQZXJtaXNz
aW9uKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3ROb3RpZmljYXRpb25Qcm92aWRlcjo6
cmVzZXRQZXJtaXNzaW9uKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3ROb3RpZmljYXRp
b25Qcm92aWRlci5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UHVzaEFQSS5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dl
YlB1c2hEYWVtb24ubW06CisKIDIwMjItMDMtMjQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAogICAgICAgICBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoKSBz
aG91bGQgdGFrZSBpbiBTdHJpbmdWaWV3cyBpbnN0ZWFkIG9mIFN0cmluZ3MKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcAppbmRleCAwODBmMDZh
OThjYzkxNTVlNGViOWVmMjRiMDU4Njc5ODg5NmMzZmFmLi5lYjM4Njk4MmFlZmRiYzhhNTNhNDRi
NTMxNDc4MTAzNzc0OWU0NDRkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RO
b3RpZmljYXRpb25Qcm92aWRlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0Tm90
aWZpY2F0aW9uUHJvdmlkZXIuY3BwCkBAIC0yNyw2ICsyNyw4IEBACiAjaW5jbHVkZSAiVGVzdE5v
dGlmaWNhdGlvblByb3ZpZGVyLmgiCiAKICNpbmNsdWRlICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIK
KyNpbmNsdWRlIDxXZWJLaXQvV0tBcnJheS5oPgorI2luY2x1ZGUgPFdlYktpdC9XS011dGFibGVE
aWN0aW9uYXJ5Lmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLTm90aWZpY2F0aW9uTWFuYWdlci5oPgog
I2luY2x1ZGUgPFdlYktpdC9XS051bWJlci5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1NlY3VyaXR5
T3JpZ2luUmVmLmg+CkBAIC00Miw3ICs0NCw2IEBAIHN0YXRpYyBXS0RpY3Rpb25hcnlSZWYgbm90
aWZpY2F0aW9uUGVybWlzc2lvbnMoY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIAogVGVzdE5vdGlm
aWNhdGlvblByb3ZpZGVyOjpUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIoVmVjdG9yPFdLTm90aWZp
Y2F0aW9uTWFuYWdlclJlZj4mJiBtYW5hZ2VycykKICAgICA6IG1fbWFuYWdlcnMoV1RGTW92ZSht
YW5hZ2VycykpCi0gICAgLCBtX3Blcm1pc3Npb25zKGFkb3B0V0soV0tNdXRhYmxlRGljdGlvbmFy
eUNyZWF0ZSgpKSkKIHsKICAgICBtX3Byb3ZpZGVyID0gewogICAgICAgICB7IDAsIHRoaXMgfSwK
QEAgLTY3LDE5ICs2OCwzOSBAQCBUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXI6On5UZXN0Tm90aWZp
Y2F0aW9uUHJvdmlkZXIoKQogCiBXS0RpY3Rpb25hcnlSZWYgVGVzdE5vdGlmaWNhdGlvblByb3Zp
ZGVyOjpub3RpZmljYXRpb25QZXJtaXNzaW9ucygpIGNvbnN0CiB7Ci0gICAgV0tSZXRhaW4obV9w
ZXJtaXNzaW9ucy5nZXQoKSk7Ci0gICAgcmV0dXJuIG1fcGVybWlzc2lvbnMuZ2V0KCk7CisgICAg
YXV0byBwZXJtaXNzaW9ucyA9IFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKTsKKworICAgIGZv
ciAoYXV0byYgW29yaWdpbiwgYWxsb3dlZF0gOiBtX3Blcm1pc3Npb25zKSB7CisgICAgICAgIGF1
dG8gd2tPcmlnaW5TdHJpbmcgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KG9yaWdpbi51dGY4KCkuZGF0YSgpKSk7CisgICAgICAgIGF1dG8gd2tBbGxvd2VkID0gYWRvcHRX
SyhXS0Jvb2xlYW5DcmVhdGUoYWxsb3dlZCkpOworICAgICAgICBXS0RpY3Rpb25hcnlTZXRJdGVt
KHBlcm1pc3Npb25zLCB3a09yaWdpblN0cmluZy5nZXQoKSwgd2tBbGxvd2VkLmdldCgpKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gcGVybWlzc2lvbnM7CiB9CiAKIHZvaWQgVGVzdE5vdGlmaWNhdGlv
blByb3ZpZGVyOjpzZXRQZXJtaXNzaW9uKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBib29sIGFsbG93
ZWQpCiB7Ci0gICAgYXV0byB3a0FsbG93ZWQgPSBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShhbGxv
d2VkKSk7Ci0gICAgYXV0byB3a09yaWdpblN0cmluZyA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcob3JpZ2luLnV0ZjgoKS5kYXRhKCkpKTsKLSAgICBXS0RpY3Rpb25hcnlT
ZXRJdGVtKG1fcGVybWlzc2lvbnMuZ2V0KCksIHdrT3JpZ2luU3RyaW5nLmdldCgpLCB3a0FsbG93
ZWQuZ2V0KCkpOworICAgIG1fcGVybWlzc2lvbnMuc2V0KG9yaWdpbiwgYWxsb3dlZCk7CiAKKyAg
ICBhdXRvIHdrT3JpZ2luU3RyaW5nID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZyhvcmlnaW4udXRmOCgpLmRhdGEoKSkpOwogICAgIGF1dG8gd2tPcmlnaW4gPSBhZG9wdFdL
KFdLU2VjdXJpdHlPcmlnaW5DcmVhdGVGcm9tU3RyaW5nKHdrT3JpZ2luU3RyaW5nLmdldCgpKSk7
CisKICAgICBmb3IgKGF1dG8mIG1hbmFnZXIgOiBtX21hbmFnZXJzKQogICAgICAgICBXS05vdGlm
aWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZFVwZGF0ZU5vdGlmaWNhdGlvblBvbGljeShtYW5hZ2Vy
LCB3a09yaWdpbi5nZXQoKSwgYWxsb3dlZCk7CiB9CiAKK3ZvaWQgVGVzdE5vdGlmaWNhdGlvblBy
b3ZpZGVyOjpyZXNldFBlcm1pc3Npb24oY29uc3QgU3RyaW5nJiBvcmlnaW4pCit7CisgICAgbV9w
ZXJtaXNzaW9ucy5yZW1vdmUob3JpZ2luKTsKKworICAgIGF1dG8gd2tPcmlnaW5TdHJpbmcgPSBh
ZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKG9yaWdpbi51dGY4KCkuZGF0YSgp
KSk7CisgICAgYXV0byB3a09yaWdpbiA9IGFkb3B0V0soV0tTZWN1cml0eU9yaWdpbkNyZWF0ZUZy
b21TdHJpbmcod2tPcmlnaW5TdHJpbmcuZ2V0KCkpKTsKKyAgICBhdXRvIHdrT3JpZ2luVHlwZVJl
ZiA9IHN0YXRpY19jYXN0PFdLVHlwZVJlZj4od2tPcmlnaW4uZ2V0KCkpOworICAgIGF1dG8gd2tP
cmlnaW5BcnJheSA9IGFkb3B0V0soV0tBcnJheUNyZWF0ZSgmd2tPcmlnaW5UeXBlUmVmLCAxKSk7
CisKKyAgICBmb3IgKGF1dG8mIG1hbmFnZXIgOiBtX21hbmFnZXJzKQorICAgICAgICBXS05vdGlm
aWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZFJlbW92ZU5vdGlmaWNhdGlvblBvbGljaWVzKG1hbmFn
ZXIsIHdrT3JpZ2luQXJyYXkuZ2V0KCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3ROb3RpZmljYXRpb25Qcm92
aWRlci5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuaApp
bmRleCBiZTA0OGJmOWEyZDgzZDhlNDJkNTg2YzE2YTEyZTFlZDM2MTQzMTBjLi5lNDg1ZWRhYjEx
MzVhN2RlNjY5Nzg2MWRjZTNjMzQ2MTc4YzdjYWUzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3ROb3RpZmljYXRpb25Qcm92aWRlci5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyLmgKQEAgLTI1LDExICsyNSwxMSBAQAogCiAjcHJh
Z21hIG9uY2UKIAotI2luY2x1ZGUgPFdlYktpdC9XS011dGFibGVEaWN0aW9uYXJ5Lmg+CiAjaW5j
bHVkZSA8V2ViS2l0L1dLTm90aWZpY2F0aW9uTWFuYWdlci5oPgogI2luY2x1ZGUgPFdlYktpdC9X
S05vdGlmaWNhdGlvblByb3ZpZGVyLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewpAQCAt
NDIsMTAgKzQyLDExIEBAIHB1YmxpYzoKIAogICAgIFdLRGljdGlvbmFyeVJlZiBub3RpZmljYXRp
b25QZXJtaXNzaW9ucygpIGNvbnN0OwogICAgIHZvaWQgc2V0UGVybWlzc2lvbihjb25zdCBTdHJp
bmcmIG9yaWdpbiwgYm9vbCBhbGxvd2VkKTsKKyAgICB2b2lkIHJlc2V0UGVybWlzc2lvbihjb25z
dCBTdHJpbmcmIG9yaWdpbik7CiAKIHByaXZhdGU6CiAgICAgVmVjdG9yPFdLTm90aWZpY2F0aW9u
TWFuYWdlclJlZj4gbV9tYW5hZ2VyczsKLSAgICBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9u
YXJ5UmVmPiBtX3Blcm1pc3Npb25zOworICAgIEhhc2hNYXA8U3RyaW5nLCBib29sPiBtX3Blcm1p
c3Npb25zOwogICAgIFdLTm90aWZpY2F0aW9uUHJvdmlkZXJWMCBtX3Byb3ZpZGVyOwogfTsKIApk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QdXNoQVBJ
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QdXNoQVBJLm1tCmlu
ZGV4IDJkOTEzZGMyNTk4NDNhNzBjNDQyNTYwOTZmMDQxMmEzZjM1NWJiZTAuLjIxNDJkMjdhZjBk
ZDUzZDU4ODI2NzU0NjM4ZDRiNWYyZDYwNTQyMWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHVzaEFQSS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1B1c2hBUEkubW0KQEAgLTMzNiw2ICszMzYsOSBAQCBURVNU
KFB1c2hBUEksIGZpcmVQdXNoRXZlbnRXaXRoTm9QYWdlc1RpbWVvdXQpCiAgICAgY29uZmlndXJh
dGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gZGF0YVN0b3JlLmdldCgpOwogICAgIGNsZWFy
V2Vic2l0ZURhdGFTdG9yZShbY29uZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXSk7CiAKKyAg
ICBhdXRvIHByb3ZpZGVyID0gVGVzdFdlYktpdEFQSTo6VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVy
KHsgW1tjb25maWd1cmF0aW9uIHByb2Nlc3NQb29sXSBfbm90aWZpY2F0aW9uTWFuYWdlckZvclRl
c3RpbmddLCBXS05vdGlmaWNhdGlvbk1hbmFnZXJHZXRTaGFyZWRTZXJ2aWNlV29ya2VyTm90aWZp
Y2F0aW9uTWFuYWdlcigpIH0pOworICAgIHByb3ZpZGVyLnNldFBlcm1pc3Npb24oc2VydmVyLm9y
aWdpbigpLCB0cnVlKTsKKwogICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbUHVz
aEFQSU1lc3NhZ2VIYW5kbGVyV2l0aEV4cGVjdGVkTWVzc2FnZSBhbGxvY10gaW5pdF0pOwogICAg
IFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VI
YW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJzdyJdOwogCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24ubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24ubW0KaW5k
ZXggOTdhNWJkYTc2OWNlZWUwZGQzYzU2MjhlNzM0MjA5ZTA4MDEyMjRkOS4uYTQ0MzJjOTQ3OWVh
ZjA5N2I0NDdjNjE0OGUxMjE2YTRlZDNkOWZlNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNoRGFlbW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2ViUHVzaERhZW1vbi5tbQpAQCAtODY5LDYgKzg2
OSw1NiBAQCBURVNUX0YoV2ViUHVzaERUZXN0LCBVbnN1YnNjcmliZXNPbkNsZWFyaW5nV2Vic2l0
ZURhdGFGb3JPcmlnaW4pCiAgICAgQVNTRVJUX0ZBTFNFKGhhc1B1c2hTdWJzY3JpcHRpb24oKSk7
CiB9CiAKK1RFU1RfRihXZWJQdXNoRFRlc3QsIFVuc3Vic2NyaWJlc09uUGVybWlzc2lvblJlc2V0
KQoreworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzb3VyY2UgPSBSIkhUTUwoCisgICAgPHNjcmlw
dCBzcmM9Ii9jb25zdGFudHMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgbmF2aWdh
dG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oYXN5bmMgKCkgPT4gewor
ICAgICAgICBjb25zdCByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtl
ci5yZWFkeTsKKyAgICAgICAgbGV0IHJlc3VsdCA9IG51bGw7CisgICAgICAgIHRyeSB7CisgICAg
ICAgICAgICBsZXQgc3Vic2NyaXB0aW9uID0gYXdhaXQgcmVnaXN0cmF0aW9uLnB1c2hNYW5hZ2Vy
LnN1YnNjcmliZSh7CisgICAgICAgICAgICAgICAgdXNlclZpc2libGVPbmx5OiB0cnVlLAorICAg
ICAgICAgICAgICAgIGFwcGxpY2F0aW9uU2VydmVyS2V5OiBWQUxJRF9TRVJWRVJfS0VZCisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgIHJlc3VsdCA9ICJTdWJzY3JpYmVkIjsKKyAgICAgICAg
fSBjYXRjaCAoZSkgeworICAgICAgICAgICAgcmVzdWx0ID0gIkVycm9yOiAiICsgZTsKKyAgICAg
ICAgfQorICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5ub3RlLnBvc3RNZXNz
YWdlKHJlc3VsdCk7CisgICAgfSk7CisgICAgPC9zY3JpcHQ+CisgICAgKUhUTUwiOworCisgICAg
X19ibG9jayBSZXRhaW5QdHI8aWQ+IHJlc3VsdCA9IG5pbDsKKyAgICBfX2Jsb2NrIGJvb2wgZG9u
ZSA9IGZhbHNlOworICAgIFttX25vdGlmaWNhdGlvbk1lc3NhZ2VIYW5kbGVyIHNldE1lc3NhZ2VI
YW5kbGVyOl4oaWQgbWVzc2FnZSkgeworICAgICAgICByZXN1bHQgPSBtZXNzYWdlOworICAgICAg
ICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIGxvYWRSZXF1ZXN0KHNvdXJjZSwgIiIpOwor
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICBBU1NFUlRfVFJVRShb
cmVzdWx0IGlzRXF1YWxUb1N0cmluZzpAIlN1YnNjcmliZWQiXSk7CisgICAgQVNTRVJUX1RSVUUo
aGFzUHVzaFN1YnNjcmlwdGlvbigpKTsKKworICAgIG1fbm90aWZpY2F0aW9uUHJvdmlkZXItPnJl
c2V0UGVybWlzc2lvbihtX3NlcnZlci0+b3JpZ2luKCkpOworCisgICAgYm9vbCBpc1N1YnNjcmli
ZWQgPSB0cnVlOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OndhaXRGb3JDb25kaXRpb25XaXRo
TG9nZ2luZyhbdGhpcywgJmlzU3Vic2NyaWJlZF0geworICAgICAgICBpc1N1YnNjcmliZWQgPSBo
YXNQdXNoU3Vic2NyaXB0aW9uKCk7CisgICAgICAgIGlmICghaXNTdWJzY3JpYmVkKQorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgc2xlZXAoMSk7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9LCA1LCBAIlRpbWVkIG91dCB3YWl0aW5nIGZvciBwdXNoIHN1YnNjcmlwdGlv
biB0byBiZSByZW1vdmVkLiIpOworCisgICAgQVNTRVJUX0ZBTFNFKGlzU3Vic2NyaWJlZCk7Cit9
CisKICNpZiBFTkFCTEUoSU5TVEFMTF9DT09SRElOQVRJT05fQlVORExFUykKICNpZiBVU0UoQVBQ
TEVfSU5URVJOQUxfU0RLKQogc3RhdGljIHZvaWQgZGVsZXRlQWxsUmVnaXN0cmF0aW9uc0ZvckRh
dGFTdG9yZShXS1dlYnNpdGVEYXRhU3RvcmUgKmRhdGFTdG9yZSkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlNThmNzIyMWM4
ODNhMzJlOWIyNmFhOTkyY2IwMTA1YzhiZjVhMDE4Li42OGM2MmQzZGNhOTU5OTkwYzRjOTAwM2Nm
ZGUxOWU0NTIyMmI1ODlhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjItMDMtMjMgIEJlbiBO
aGFtICA8bmhhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHB1c2ggc3Vic2NyaXB0aW9u
cyB3aGVuIHBlcm1pc3Npb25zIGFyZSByZXNldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MDY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgRml4IGFuIGlzc3VlIHdpdGggYSBsYXlvdXQgdGVzdCB0aGF0
IGRpZG4ndCByZWdpc3RlciBmb3Igbm90aWZpY2F0aW9uIHBlcm1pc3Npb25zLgorCisgICAgICAg
ICogaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2gu
aHR0cHMuaHRtbDoKKwogMjAyMi0wMy0yNCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRA
YXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gUkVHUkVTU0lPTihyMjgxMjkxKTogV2hlbiBh
Y2Nlc3NpYmlsaXR5IGJvbGQgaXMgZW5hYmxlZCwgZm9udC1mYW1pbHk6c3lzdGVtLXVpIGlzIHN1
cHBvc2VkIHRvIGJlIGJvbGQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZp
Y2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1wdXNoLmh0dHBzLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmct
cHVzaC5odHRwcy5odG1sCmluZGV4IGZlYzQ1N2M3ODRmZmU0ZWJjYTI5MDc5M2ZhZTk0NmEyZDUw
ZjRkZTYuLmYzOGQwZTRiZTY1ZTBlYWQ3OWIzMjZlMWYyZGJlZGRhMTRlOWUzYzYgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1z
cGlubmluZy1wdXNoLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2Vydmlj
ZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2guaHR0cHMuaHRtbApAQCAtNyw2
ICs3LDkgQEAKIDwvaGVhZD4KIDxib2R5PgogPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICB0ZXN0UnVubmVyLmdyYW50V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbih3aW5kb3cu
b3JpZ2luKTsKKwogcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CiAgICAgY29uc3QgcmVn
aXN0cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoInNlcnZp
Y2Utd29ya2VyLXNwaW5uaW5nLXdvcmtlci5qcyIsIHsgc2NvcGUgOiAic3Bpbi1wdXNoIiB9KTsK
ICAgICBjb25zdCB3b3JrZXIgPSByZWdpc3RyYXRpb24uaW5zdGFsbGluZzsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455778</attachid>
            <date>2022-03-25 10:19:22 -0700</date>
            <delta_ts>2022-03-29 23:20:04 -0700</delta_ts>
            <desc>patch feedback</desc>
            <filename>bug-238068-20220325101921.patch</filename>
            <type>text/plain</type>
            <size>24470</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxODQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDExN2M3OTQzZjE3MGU2NmE4
MjY3NzI2YzE2YWFiMmI4NzU1YmFhNDMuLmYwNDZkOGI0ZjEyOGFhM2JhZGUxZDg3Y2JlZTAwZWY4
ODY4OWRhNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMjItMDMtMTggIEJlbiBOaGFt
ICA8bmhhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHB1c2ggc3Vic2NyaXB0aW9ucyB3
aGVuIHBlcm1pc3Npb25zIGFyZSByZXNldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MDY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgV2hlbiB0aGUgbm90aWZpY2F0aW9uIHBlcm1pc3Npb24gZm9yIGFu
IG9yaWdpbiBpcyByZXNldCAoaS5lLiBpcyBpbiB0aGUgcHJvbXB0IHN0YXRlKSwgd2UKKyAgICAg
ICAgc2hvdWxkIGRlbGV0ZSBhbnkgcHVzaCBzdWJzY3JpcHRpb25zIGFzc29jaWF0ZWQgd2l0aCB0
aGF0IG9yaWdpbi4gV2UgZG8gdGhpcyBieSBoYXZpbmcgdGhlCisgICAgICAgIHByb3ZpZGVyRGlk
UmVtb3ZlTm90aWZpY2F0aW9uUG9saWNpZXMgQVBJIGNhbGwgZGVsZXRlUHVzaEFuZE5vdGlmaWNh
dGlvblJlZ2lzdHJhdGlvbiBpbgorICAgICAgICB3ZWJwdXNoZC4KKworICAgICAgICBXZSBhbHNv
IGRvIHRoaXMgd2hlbiBwcm9jZXNzaW5nIGEgcHVzaCBtZXNzYWdlLCBzaW5jZSBpdCdzIHBvc3Np
YmxlIGZvciB0aGUgc3RhdGUgdG8gZ2V0IG91dAorICAgICAgICBvZiBzeW5jIGR1ZSB0byB0aGUg
bnVtYmVyIG9mIHByb2Nlc3NlcyBpbnZvbHZlZC4gRm9yIGluc3RhbmNlLCByZW1vdmluZyB0aGUg
cG9saWN5IGZyb20KKyAgICAgICAgU3lzdGVtIFByZWZlcmVuY2VzIHJhdGhlciB0aGFuIHRoZSBi
cm93c2VyJ3Mgbm90aWZpY2F0aW9uIHByZWZlcmVuY2UgcGFuZSBjYW4gcmVzdWx0IGluIHRoZQor
ICAgICAgICBwcm92aWRlckRpZFJlbW92ZU5vdGlmaWNhdGlvblBvbGljaWVzIGNhbGwgaW4gdGhl
IGJyb3dzZXIgdG8gYmUgZGVsYXllZCBvciBkcm9wcGVkLgorCisgICAgICAgIE5vdGUgdGhhdCB3
ZSBkb24ndCBkZWxldGUgdGhlIHN1YnNjcmlwdGlvbiBpZiB0aGUgcGVybWlzc2lvbiBpcyBzaW1w
bHkgdG9nZ2xlZCBvZmYgKGkuZS4gdGhlCisgICAgICAgIHBlcm1pc3Npb24gaXMgaW4gdGhlIERl
bmllZCBzdGF0ZSkuIEluIHRoYXQgY2FzZSwgdGhlIHVzZXIgY2FuIGVhc2lseSB0b2dnbGUgdGhl
IHBlcm1pc3Npb24KKyAgICAgICAgYmFjayBvbi4gV2Ugd2FudCB0aGUgc3Vic2NyaXB0aW9uIG9i
amVjdCB0byBzdGF5IHRoZSBzYW1lIGFmdGVyIHRoZSBwcmVmZXJlbmNlIGlzIHRvZ2dsZWQKKyAg
ICAgICAgYmFjayBvbiBzbyB0aGF0IHRoZSBzZXJ2ZXIgY2FuIHN0aWxsIHNlbmQgcHVzaGVzIHRv
IHRoYXQgcHVzaCBlbmRwb2ludC4gSW4gYSBmdXR1cmUgcGF0Y2gKKyAgICAgICAgd2UnbGwgYWRk
IHN1YnNjcmlwdGlvbnMgaW4gdGhpcyBzdGF0ZSB0byB0aGUgaWdub3JlZCB0b3BpY3MgbGlzdCBp
biB3ZWJwdXNoZCwgd2hpY2ggd2lsbAorICAgICAgICBwcmV2ZW50IHB1c2hlcyBmb3IgdGhvc2Ug
c3Vic2NyaXB0aW9ucyBmcm9tIGJlaW5nIGRlbGl2ZXJlZCB0byB0aGUgZGV2aWNlIHdpdGhvdXQg
YWN0dWFsbHkKKyAgICAgICAgdW5zdWJzY3JpYmluZy4KKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OnByb2Nlc3NQdXNoTWVzc2FnZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6cHJvY2Vzc1B1c2hNZXNz
YWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpyZW1vdmVQdXNoU3Vic2NyaXB0aW9u
c0Zvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHk6OnByb3ZpZGVyRGlkUmVtb3ZlTm90aWZpY2F0aW9uUG9saWNpZXMpOgorICAgICAgICAqIHdl
YnB1c2hkL1dlYlB1c2hEYWVtb24ubW06CisgICAgICAgIChXZWJQdXNoRDo6RGFlbW9uOjpkZWxl
dGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKToKKwogMjAyMi0wMy0yNCAgRG9uIE9s
bXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIE5vbi11bmlmaWVkIGJ1
aWxkIGZpeGVzLCBsYXRlIE1hcmNoIDIwMjIgZWRpdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA4MzRkMTlhNWI2M2QwZTUzYThi
ZjIzNzJhOTUzMWM0YTFjZWY2OGYyLi44MjA5ZWYwMDBhOWNkZjQwMjdjOGI4YmYzZjQ5ZWRmYTQ5
ZjVhOTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcApAQCAtMjI3MiwxMSArMjI3MiwyOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXRQ
ZW5kaW5nUHVzaE1lc3NhZ2VzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbgog
ICAgICAgICBMT0coTm90aWZpY2F0aW9ucywgIk5ldHdvcmtQcm9jZXNzIGNvdWxkIG5vdCBmaW5k
IHNlc3Npb24gZm9yIElEICVsbHUgdG8gZ2V0IHBlbmRpbmcgcHVzaCBtZXNzYWdlcyIsIHNlc3Np
b25JRC50b1VJbnQ2NCgpKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1B1c2hN
ZXNzYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUHVzaE1lc3NhZ2UmJiBwdXNoTWVz
c2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKK3ZvaWQgTmV0
d29ya1Byb2Nlc3M6OnByb2Nlc3NQdXNoTWVzc2FnZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFdlYlB1c2hNZXNzYWdlJiYgcHVzaE1lc3NhZ2UsIFB1c2hQZXJtaXNzaW9uU3RhdGUgcGVybWlz
c2lvblN0YXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQogewog
ICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAg
ICAgICBMT0coUHVzaCwgIk5ldHdvcmtpbmcgcHJvY2VzcyBoYW5kbGluZyBhIHB1c2ggbWVzc2Fn
ZSBmcm9tIFVJIHByb2Nlc3MgaW4gc2Vzc2lvbiAlbGx1Iiwgc2Vzc2lvbklELnRvVUludDY0KCkp
OwogICAgICAgICBhdXRvIG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVVSTChwdXNo
TWVzc2FnZS5yZWdpc3RyYXRpb25VUkwpOworCisgICAgICAgIGlmIChwZXJtaXNzaW9uU3RhdGUg
PT0gUHVzaFBlcm1pc3Npb25TdGF0ZTo6UHJvbXB0KSB7CisgICAgICAgICAgICBSRUxFQVNFX0xP
RyhQdXNoLCAiUHVzaCBtZXNzYWdlIGZyb20gJSIgUFJJVkFURV9MT0dfU1RSSU5HICIgd29uJ3Qg
YmUgcHJvY2Vzc2VkIHNpbmNlIHBlcm1pc3Npb24gaXMgaW4gdGhlIHByb21wdCBzdGF0ZTsgcmVt
b3ZpbmcgcHVzaCBzdWJzY3JpcHRpb24iLCBvcmlnaW4udG9TdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKKyAgICAgICAgICAgIHNlc3Npb24tPm5vdGlmaWNhdGlvbk1hbmFnZXIoKS5yZW1vdmVQdXNo
U3Vic2NyaXB0aW9uc0Zvck9yaWdpbihTZWN1cml0eU9yaWdpbkRhdGEgeyBvcmlnaW4gfSwgW2Nh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mJikgbXV0YWJsZSB7CisgICAgICAgICAg
ICAgICAgY2FsbGJhY2soZmFsc2UpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHBl
cm1pc3Npb25TdGF0ZSA9PSBQdXNoUGVybWlzc2lvblN0YXRlOjpEZW5pZWQpIHsKKyAgICAgICAg
ICAgIFJFTEVBU0VfTE9HKFB1c2gsICJQdXNoIG1lc3NhZ2UgZnJvbSAlIiBQUklWQVRFX0xPR19T
VFJJTkcgIiB3b24ndCBiZSBwcm9jZXNzZWQgc2luY2UgcGVybWlzc2lvbiBpcyBpbiB0aGUgZGVu
aWVkIHN0YXRlIiwgb3JpZ2luLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAg
ICAvLyBGSVhNRTogbW92ZSB0b3BpYyB0byBpZ25vcmUgbGlzdCBpbiB3ZWJwdXNoZCBpZiBwZXJt
aXNzaW9uIGlzIGRlbmllZC4KKyAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVChwZXJtaXNzaW9uU3RhdGUg
PT0gUHVzaFBlcm1pc3Npb25TdGF0ZTo6R3JhbnRlZCk7CiAgICAgICAgIHNlc3Npb24tPmVuc3Vy
ZVNXU2VydmVyKCkucHJvY2Vzc1B1c2hNZXNzYWdlKFdURk1vdmUocHVzaE1lc3NhZ2UucHVzaERh
dGEpLCBXVEZNb3ZlKHB1c2hNZXNzYWdlLnJlZ2lzdHJhdGlvblVSTCksIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgc2Vzc2lvbklELCBvcmlnaW4gPSBXVEZNb3ZlKG9yaWdp
biksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgcmVzdWx0KSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIE5ldHdvcmtTZXNzaW9uKiBzZXNzaW9uOwogICAgICAgICAgICAgaWYgKCFy
ZXN1bHQgJiYgKHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSkgewpAQCAtMjI5
OSw3ICsyMzE3LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Z2V0UGVuZGluZ1B1c2hNZXNzYWdl
cyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm8KICAgICBjYWxsYmFjayh7IH0p
OwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzUHVzaE1lc3NhZ2UoUEFMOjpTZXNz
aW9uSUQsIFdlYlB1c2hNZXNzYWdlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y2FsbGJhY2spCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzUHVzaE1lc3NhZ2UoUEFMOjpT
ZXNzaW9uSUQsIFdlYlB1c2hNZXNzYWdlJiYsIFB1c2hQZXJtaXNzaW9uU3RhdGUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCiB7CiAgICAgY2FsbGJhY2soZmFsc2Up
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmlu
ZGV4IGQ5MzVmNDZjY2M5OWNhODY3ODRmNWYxNGU4MGRkNzBiNTAzODNiMjkuLjBlNWM4NWZiZDdk
YWQ5NmU2YzBiMTJlZjEzYjM5ZGRiNGQxODY1MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL01lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Q
YWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1B1c2hQZXJtaXNzaW9uU3RhdGUuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNl
V29ya2VySWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVz
Lmg+CkBAIC0zNzIsNyArMzczLDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQogICAgIHZvaWQgZ2V0UGVuZGluZ1B1c2hNZXNzYWdlcyhQQUw6OlNlc3Npb25JRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViUHVzaE1lc3NhZ2U+Jik+JiYpOwot
ICAgIHZvaWQgcHJvY2Vzc1B1c2hNZXNzYWdlKFBBTDo6U2Vzc2lvbklELCBXZWJQdXNoTWVzc2Fn
ZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHByb2Nlc3NQ
dXNoTWVzc2FnZShQQUw6OlNlc3Npb25JRCwgV2ViUHVzaE1lc3NhZ2UmJiwgV2ViQ29yZTo6UHVz
aFBlcm1pc3Npb25TdGF0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAjZW5k
aWYKIAogICAgIHZvaWQgZGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbihQQUw6
OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA2Nzg4
ZDY1Y2M2YThjY2QzZjExZjkwYjJkNjc3OWUyMWFiZDFjZGM2Li40NzdjZjdmYjkwMGJmY2RjODU1
MjYxMTQ4MTE4OGNlY2FkNTc5ZDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTIxMSw3ICsyMTEsNyBA
QCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAKICNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCiAgICAgR2V0UGVuZGluZ1B1c2hNZXNzYWdlcyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQpIC0+IChWZWN0b3I8V2ViS2l0OjpXZWJQdXNoTWVzc2FnZT4gbWVzc2Fn
ZXMpCi0gICAgUHJvY2Vzc1B1c2hNZXNzYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3Ry
dWN0IFdlYktpdDo6V2ViUHVzaE1lc3NhZ2UgcHVzaE1lc3NhZ2UpIC0+IChib29sIGRpZFN1Y2Nl
ZWQpCisgICAgUHJvY2Vzc1B1c2hNZXNzYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3Ry
dWN0IFdlYktpdDo6V2ViUHVzaE1lc3NhZ2UgcHVzaE1lc3NhZ2UsIGVudW06dWludDhfdCBXZWJD
b3JlOjpQdXNoUGVybWlzc2lvblN0YXRlIHB1c2hQZXJtaXNzaW9uU3RhdGUpIC0+IChib29sIGRp
ZFN1Y2NlZWQpCiAjZW5kaWYKICAgICBEZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0
aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSBvcmlnaW4pIC0+IChTdHJpbmcgZXJyb3JNZXNzYWdlKQogICAgIEdldE9yaWdpbnNX
aXRoUHVzaEFuZE5vdGlmaWNhdGlvblBlcm1pc3Npb25zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcAppbmRleCA1YWI0NDg5YjMwY2IxZmU4MWNhYTEwMWY5YTU5NmZiN2U5Mjg1ZmNiLi44
ZDNlNGQyMGU0MmEyZTk0MGM4OTBlYjZjMmU4YjJlYzA4Y2VhZmRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAK
QEAgLTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlICJTdG9yYWdlQWNjZXNzU3RhdHVzLmgiCiAjaW5j
bHVkZSAiV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3QuaCIKICNpbmNsdWRlICJXZWJDb29raWVN
YW5hZ2VyUHJveHkuaCIKKyNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaCIK
ICNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIK
ICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKQEAgLTYyLDYgKzYzLDcgQEAKICNpbmNs
dWRlICJXZWJzaXRlRGF0YVN0b3JlQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9y
ZVBhcmFtZXRlcnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NsaWVudE9yaWdpbi5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvUHVzaFBlcm1pc3Npb25TdGF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVn
aXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNp
bmNsdWRlIDx3dGYvQ2FsbGJhY2tBZ2dyZWdhdG9yLmg+CkBAIC0xNzY5LDcgKzE3NzEsMTQgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXRQZW5kaW5nUHVzaE1lc3NhZ2VzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgQ29tcGwKIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpwcm9j
ZXNzUHVzaE1lc3NhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBXZWJQdXNoTWVz
c2FnZSYgcHVzaE1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCB3YXNQcm9jZXNz
ZWQpPiYmIGNhbGxiYWNrKQogewotICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3M6OlByb2Nlc3NQdXNoTWVzc2FnZSB7IHNlc3Npb25JRCwgcHVzaE1lc3NhZ2Ug
fSwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIGF1dG8gcGVybWlzc2lvbiA9IFB1c2hQZXJtaXNz
aW9uU3RhdGU6OlByb21wdDsKKyAgICBhdXRvIHBlcm1pc3Npb25zID0gV2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5OjpzaGFyZWRTZXJ2aWNlV29ya2VyTWFuYWdlcigpLm5vdGlmaWNhdGlvblBl
cm1pc3Npb25zKCk7CisgICAgYXV0byBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21V
UkwocHVzaE1lc3NhZ2UucmVnaXN0cmF0aW9uVVJMKS50b1N0cmluZygpOworCisgICAgaWYgKGF1
dG8gaXQgPSBwZXJtaXNzaW9ucy5maW5kKG9yaWdpbik7IGl0ICE9IHBlcm1pc3Npb25zLmVuZCgp
KQorICAgICAgICBwZXJtaXNzaW9uID0gaXQtPnZhbHVlID8gUHVzaFBlcm1pc3Npb25TdGF0ZTo6
R3JhbnRlZCA6IFB1c2hQZXJtaXNzaW9uU3RhdGU6OkRlbmllZDsKKworICAgIHNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlByb2Nlc3NQdXNoTWVzc2FnZSB7IHNl
c3Npb25JRCwgcHVzaE1lc3NhZ2UsIHBlcm1pc3Npb24gfSwgV1RGTW92ZShjYWxsYmFjaykpOwog
fQogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHkuY3BwCmluZGV4IGIzYWM3MmI1ZjZjYjgxOWZkOWEyYzA3NmIwZDY5
MjYxY2JlNTE4MGEuLmM0N2M0YjIyMTk3Y2U5MjU2MzgwZDEwZWRhNDg3YWE1NmVlMmY3ZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZp
Y2F0aW9uTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKQEAgLTM0LDcgKzM0LDkg
QEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5o
IgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3Rv
cmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05vdGlmaWNhdGlvbkRhdGEuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMjY3LDI1ICsyNjksNjkgQEAgdm9pZCBXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkVXBkYXRlTm90aWZpY2F0aW9uUG9saWN5KGNv
bnN0IEFQSToKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6
OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZFVwZGF0ZU5vdGlmaWNhdGlvbkRlY2lzaW9uKG9y
aWdpbi0+c2VjdXJpdHlPcmlnaW4oKS50b1N0cmluZygpLCBhbGxvd2VkKSk7CiB9CiAKLXZvaWQg
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZFJlbW92ZU5vdGlmaWNhdGlv
blBvbGljaWVzKEFQSTo6QXJyYXkqIG9yaWdpbnMpCitzdGF0aWMgdm9pZCByZW1vdmVQdXNoU3Vi
c2NyaXB0aW9uc0Zvck9yaWdpbnMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YT4mIG9yaWdpbnMpCiB7Ci0gICAgaWYgKCFwcm9jZXNzUG9vbCgpKQorICAgIFJlZlB0cjxO
ZXR3b3JrUHJvY2Vzc1Byb3h5PiBuZXR3b3JrUHJvY2VzczsKKyAgICBhdXRvIHNlc3Npb25JRCA9
IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCk7CisKKyAgICBXZWJzaXRlRGF0YVN0
b3JlOjpmb3JFYWNoV2Vic2l0ZURhdGFTdG9yZShbJm5ldHdvcmtQcm9jZXNzLCAmc2Vzc2lvbklE
XShXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpIHsKKyAgICAgICAgaWYgKCFuZXR3b3JrUHJv
Y2VzcyAmJiBkYXRhU3RvcmUuaXNQZXJzaXN0ZW50KCkpIHsKKyAgICAgICAgICAgIG5ldHdvcmtQ
cm9jZXNzID0gJmRhdGFTdG9yZS5uZXR3b3JrUHJvY2VzcygpOworICAgICAgICAgICAgc2Vzc2lv
bklEID0gZGF0YVN0b3JlLnNlc3Npb25JRCgpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBp
ZiAoIW5ldHdvcmtQcm9jZXNzKQogICAgICAgICByZXR1cm47CiAKKyAgICBmb3IgKGF1dG8mIG9y
aWdpbiA6IG9yaWdpbnMpCisgICAgICAgIG5ldHdvcmtQcm9jZXNzLT5kZWxldGVQdXNoQW5kTm90
aWZpY2F0aW9uUmVnaXN0cmF0aW9uKHNlc3Npb25JRCwgb3JpZ2luLCBbb3JpZ2luU3RyaW5nID0g
b3JpZ2luLnRvU3RyaW5nKCldKGF1dG8mJikgeyB9KTsKK30KKworc3RhdGljIFZlY3RvcjxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IGFwaUFycmF5VG9TZWN1cml0eU9yaWdpbnMoQVBJOjpB
cnJheSogb3JpZ2lucykKK3sKKyAgICBpZiAoIW9yaWdpbnMpCisgICAgICAgIHJldHVybiB7IH07
CisKKyAgICBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBzZWN1cml0eU9yaWdp
bnM7CiAgICAgc2l6ZV90IHNpemUgPSBvcmlnaW5zLT5zaXplKCk7Ci0gICAgaWYgKCFzaXplKQot
ICAgICAgICByZXR1cm47Ci0gICAgCisgICAgc2VjdXJpdHlPcmlnaW5zLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoc2l6ZSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkK
KyAgICAgICAgc2VjdXJpdHlPcmlnaW5zLnVuY2hlY2tlZEFwcGVuZChvcmlnaW5zLT5hdDxBUEk6
OlNlY3VyaXR5T3JpZ2luPihpKS0+c2VjdXJpdHlPcmlnaW4oKSk7CisKKyAgICByZXR1cm4gc2Vj
dXJpdHlPcmlnaW5zOworfQorCitzdGF0aWMgVmVjdG9yPFN0cmluZz4gYXBpQXJyYXlUb1NlY3Vy
aXR5T3JpZ2luU3RyaW5ncyhBUEk6OkFycmF5KiBvcmlnaW5zKQoreworICAgIGlmICghb3JpZ2lu
cykKKyAgICAgICAgcmV0dXJuIHsgfTsKKwogICAgIFZlY3RvcjxTdHJpbmc+IG9yaWdpblN0cmlu
Z3M7CisgICAgc2l6ZV90IHNpemUgPSBvcmlnaW5zLT5zaXplKCk7CiAgICAgb3JpZ2luU3RyaW5n
cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOworCiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzaXplOyArK2kpCiAgICAgICAgIG9yaWdpblN0cmluZ3MudW5jaGVja2VkQXBwZW5kKG9y
aWdpbnMtPmF0PEFQSTo6U2VjdXJpdHlPcmlnaW4+KGkpLT5zZWN1cml0eU9yaWdpbigpLnRvU3Ry
aW5nKCkpOwogCi0gICAgV2ViUHJvY2Vzc1Bvb2w6OnNlbmRUb0FsbFJlbW90ZVdvcmtlclByb2Nl
c3NlcyhNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6RGlkUmVtb3ZlTm90aWZpY2F0
aW9uRGVjaXNpb25zKG9yaWdpblN0cmluZ3MpKTsKKyAgICByZXR1cm4gb3JpZ2luU3RyaW5nczsK
K30KIAotICAgIGlmICghcHJvY2Vzc1Bvb2woKSkKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5Ojpwcm92aWRlckRpZFJlbW92ZU5vdGlmaWNhdGlvblBvbGljaWVzKEFQSTo6QXJyYXkq
IG9yaWdpbnMpCit7CisgICAgc2l6ZV90IHNpemUgPSBvcmlnaW5zLT5zaXplKCk7CisgICAgaWYg
KCFzaXplKQogICAgICAgICByZXR1cm47Ci0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvQWxsUHJv
Y2Vzc2VzKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpEaWRSZW1vdmVOb3RpZmlj
YXRpb25EZWNpc2lvbnMob3JpZ2luU3RyaW5ncykpOworCisgICAgaWYgKHRoaXMgPT0gJnNoYXJl
ZFNlcnZpY2VXb3JrZXJNYW5hZ2VyKCkpIHsKKyAgICAgICAgcmVtb3ZlUHVzaFN1YnNjcmlwdGlv
bnNGb3JPcmlnaW5zKGFwaUFycmF5VG9TZWN1cml0eU9yaWdpbnMob3JpZ2lucykpOworICAgICAg
ICBXZWJQcm9jZXNzUG9vbDo6c2VuZFRvQWxsUmVtb3RlV29ya2VyUHJvY2Vzc2VzKE1lc3NhZ2Vz
OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpEaWRSZW1vdmVOb3RpZmljYXRpb25EZWNpc2lvbnMo
YXBpQXJyYXlUb1NlY3VyaXR5T3JpZ2luU3RyaW5ncyhvcmlnaW5zKSkpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgaWYgKHByb2Nlc3NQb29sKCkpCisgICAgICAgIHByb2Nlc3NQb29s
KCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6
RGlkUmVtb3ZlTm90aWZpY2F0aW9uRGVjaXNpb25zKGFwaUFycmF5VG9TZWN1cml0eU9yaWdpblN0
cmluZ3Mob3JpZ2lucykpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24ubW0gYi9Tb3VyY2UvV2ViS2l0
L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24ubW0KaW5kZXggY2JkMTI3MDNiNTllY2Y1ZjI1MDdjODBk
YWEwMDNiZmUyYzk3MzRlNC4uODg2Mzc2YzY3OTI5NmQ3NzBjMDVlMjA4MmNmYTRiYzgyNmEwY2Vk
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbQpAQCAtNDk5LDcgKzQ5
OSwxOCBAQCB2b2lkIERhZW1vbjo6ZGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlv
bihDbGllbnRDb25uZWN0aW9uKiBjb25uZWN0aW9uLAogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgY29ubmVjdGlvbi0+ZW5xdWV1ZUFwcEJ1bmRsZVJlcXVlc3QobWFrZVVuaXF1ZTxBcHBC
dW5kbGVEZWxldGlvblJlcXVlc3Q+KCpjb25uZWN0aW9uLCBvcmlnaW5TdHJpbmcsIFdURk1vdmUo
cmVwbHlTZW5kZXIpKSk7CisgICAgY29ubmVjdGlvbi0+ZW5xdWV1ZUFwcEJ1bmRsZVJlcXVlc3Qo
bWFrZVVuaXF1ZTxBcHBCdW5kbGVEZWxldGlvblJlcXVlc3Q+KCpjb25uZWN0aW9uLCBvcmlnaW5T
dHJpbmcsIFt0aGlzLCBvcmlnaW5TdHJpbmcgPSBTdHJpbmcgeyBvcmlnaW5TdHJpbmcgfSwgcmVw
bHlTZW5kZXIgPSBXVEZNb3ZlKHJlcGx5U2VuZGVyKSwgYnVuZGxlSWRlbnRpZmllciA9IGNvbm5l
Y3Rpb24tPmhvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIoKV0oY29uc3QgU3RyaW5nJiByZXN1
bHQpIG11dGFibGUgeworICAgICAgICBydW5BZnRlclN0YXJ0aW5nUHVzaFNlcnZpY2UoW3RoaXMs
IGJ1bmRsZUlkZW50aWZpZXIgPSBXVEZNb3ZlKGJ1bmRsZUlkZW50aWZpZXIpLCBvcmlnaW5TdHJp
bmcgPSBXVEZNb3ZlKG9yaWdpblN0cmluZyksIHJlcGx5U2VuZGVyID0gV1RGTW92ZShyZXBseVNl
bmRlciksIHJlc3VsdF0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghbV9wdXNoU2Vydmlj
ZSkgeworICAgICAgICAgICAgICAgIHJlcGx5U2VuZGVyKHJlc3VsdCk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtX3B1c2hTZXJ2aWNlLT5y
ZW1vdmVSZWNvcmRzRm9yQnVuZGxlSWRlbnRpZmllckFuZE9yaWdpbihidW5kbGVJZGVudGlmaWVy
LCBvcmlnaW5TdHJpbmcsIFtyZXBseVNlbmRlciA9IFdURk1vdmUocmVwbHlTZW5kZXIpLCByZXN1
bHRdKGF1dG8mJikgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgcmVwbHlTZW5kZXIocmVzdWx0
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9KSk7CiB9CiAKIHZvaWQgRGFl
bW9uOjpzZXREZWJ1Z01vZGVJc0VuYWJsZWQoQ2xpZW50Q29ubmVjdGlvbiogY2xpZW50Q29ubmVj
dGlvbiwgYm9vbCBlbmFibGVkKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IGQ3MjUwMmY0MGIyOWZiNzQ1ZGYyNzJhNzc2YmE5N2FlNDYxZTE2MTEu
LmE2YjE3NGEyMTNmMzFiYzAyOWUxZjkwMDQ0NGRlNTFhYTY5YjNlOTAgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAy
Mi0wMy0xOCAgQmVuIE5oYW0gIDxuaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgcHVz
aCBzdWJzY3JpcHRpb25zIHdoZW4gcGVybWlzc2lvbnMgYXJlIHJlc2V0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgwNjgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSB0ZXN0IHRvIG1ha2Ugc3Vy
ZSBwdXNoIHN1YnNjcmlwdGlvbnMgYXJlIHJlbW92ZWQgd2hlbiB0aGUgbm90aWZpY2F0aW9uIHBv
bGljeSBmb3IgYQorICAgICAgICB3ZWJzaXRlIGlzIHJlc2V0LgorCisgICAgICAgIEFsc28gZml4
ZWQgYW4gaXNzdWUgd2l0aCBhIFB1c2hBUEkgdGVzdCB0aGF0IGRpZG4ndCBwcm9wZXJseSByZWdp
c3RlciBmb3Igbm90aWZpY2F0aW9uIHBlcm1pc3Npb25zLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyOjpUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyOjpub3RpZmlj
YXRpb25QZXJtaXNzaW9ucyBjb25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0Tm90
aWZpY2F0aW9uUHJvdmlkZXI6OnNldFBlcm1pc3Npb24pOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyOjpyZXNldFBlcm1pc3Npb24pOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyLmg6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QdXNoQVBJLm1tOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2ViUHVzaERhZW1vbi5tbToKKwogMjAyMi0wMy0y
NCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCgpIHNob3VsZCB0YWtlIGluIFN0cmluZ1ZpZXdzIGlu
c3RlYWQgb2YgU3RyaW5ncwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0Tm90
aWZpY2F0aW9uUHJvdmlkZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0Tm90aWZpY2F0
aW9uUHJvdmlkZXIuY3BwCmluZGV4IDA4MGYwNmE5OGNjOTE1NWU0ZWI5ZWYyNGIwNTg2Nzk4ODk2
YzNmYWYuLmViMzg2OTgyYWVmZGJjOGE1M2E0NGI1MzE0NzgxMDM3NzQ5ZTQ0NGQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3ROb3RpZmljYXRpb25Qcm92aWRlci5jcHAKQEAgLTI3
LDYgKzI3LDggQEAKICNpbmNsdWRlICJUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuaCIKIAogI2lu
Y2x1ZGUgIldURlN0cmluZ1V0aWxpdGllcy5oIgorI2luY2x1ZGUgPFdlYktpdC9XS0FycmF5Lmg+
CisjaW5jbHVkZSA8V2ViS2l0L1dLTXV0YWJsZURpY3Rpb25hcnkuaD4KICNpbmNsdWRlIDxXZWJL
aXQvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLTnVtYmVyLmg+
CiAjaW5jbHVkZSA8V2ViS2l0L1dLU2VjdXJpdHlPcmlnaW5SZWYuaD4KQEAgLTQyLDcgKzQ0LDYg
QEAgc3RhdGljIFdLRGljdGlvbmFyeVJlZiBub3RpZmljYXRpb25QZXJtaXNzaW9ucyhjb25zdCB2
b2lkKiBjbGllbnRJbmZvKQogCiBUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXI6OlRlc3ROb3RpZmlj
YXRpb25Qcm92aWRlcihWZWN0b3I8V0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmPiYmIG1hbmFnZXJz
KQogICAgIDogbV9tYW5hZ2VycyhXVEZNb3ZlKG1hbmFnZXJzKSkKLSAgICAsIG1fcGVybWlzc2lv
bnMoYWRvcHRXSyhXS011dGFibGVEaWN0aW9uYXJ5Q3JlYXRlKCkpKQogewogICAgIG1fcHJvdmlk
ZXIgPSB7CiAgICAgICAgIHsgMCwgdGhpcyB9LApAQCAtNjcsMTkgKzY4LDM5IEBAIFRlc3ROb3Rp
ZmljYXRpb25Qcm92aWRlcjo6flRlc3ROb3RpZmljYXRpb25Qcm92aWRlcigpCiAKIFdLRGljdGlv
bmFyeVJlZiBUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXI6Om5vdGlmaWNhdGlvblBlcm1pc3Npb25z
KCkgY29uc3QKIHsKLSAgICBXS1JldGFpbihtX3Blcm1pc3Npb25zLmdldCgpKTsKLSAgICByZXR1
cm4gbV9wZXJtaXNzaW9ucy5nZXQoKTsKKyAgICBhdXRvIHBlcm1pc3Npb25zID0gV0tNdXRhYmxl
RGljdGlvbmFyeUNyZWF0ZSgpOworCisgICAgZm9yIChhdXRvJiBbb3JpZ2luLCBhbGxvd2VkXSA6
IG1fcGVybWlzc2lvbnMpIHsKKyAgICAgICAgYXV0byB3a09yaWdpblN0cmluZyA9IGFkb3B0V0so
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcob3JpZ2luLnV0ZjgoKS5kYXRhKCkpKTsKKyAg
ICAgICAgYXV0byB3a0FsbG93ZWQgPSBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShhbGxvd2VkKSk7
CisgICAgICAgIFdLRGljdGlvbmFyeVNldEl0ZW0ocGVybWlzc2lvbnMsIHdrT3JpZ2luU3RyaW5n
LmdldCgpLCB3a0FsbG93ZWQuZ2V0KCkpOworICAgIH0KKworICAgIHJldHVybiBwZXJtaXNzaW9u
czsKIH0KIAogdm9pZCBUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXI6OnNldFBlcm1pc3Npb24oY29u
c3QgU3RyaW5nJiBvcmlnaW4sIGJvb2wgYWxsb3dlZCkKIHsKLSAgICBhdXRvIHdrQWxsb3dlZCA9
IGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKGFsbG93ZWQpKTsKLSAgICBhdXRvIHdrT3JpZ2luU3Ry
aW5nID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhvcmlnaW4udXRmOCgp
LmRhdGEoKSkpOwotICAgIFdLRGljdGlvbmFyeVNldEl0ZW0obV9wZXJtaXNzaW9ucy5nZXQoKSwg
d2tPcmlnaW5TdHJpbmcuZ2V0KCksIHdrQWxsb3dlZC5nZXQoKSk7CisgICAgbV9wZXJtaXNzaW9u
cy5zZXQob3JpZ2luLCBhbGxvd2VkKTsKIAorICAgIGF1dG8gd2tPcmlnaW5TdHJpbmcgPSBhZG9w
dFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKG9yaWdpbi51dGY4KCkuZGF0YSgpKSk7
CiAgICAgYXV0byB3a09yaWdpbiA9IGFkb3B0V0soV0tTZWN1cml0eU9yaWdpbkNyZWF0ZUZyb21T
dHJpbmcod2tPcmlnaW5TdHJpbmcuZ2V0KCkpKTsKKwogICAgIGZvciAoYXV0byYgbWFuYWdlciA6
IG1fbWFuYWdlcnMpCiAgICAgICAgIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkVXBk
YXRlTm90aWZpY2F0aW9uUG9saWN5KG1hbmFnZXIsIHdrT3JpZ2luLmdldCgpLCBhbGxvd2VkKTsK
IH0KIAordm9pZCBUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXI6OnJlc2V0UGVybWlzc2lvbihjb25z
dCBTdHJpbmcmIG9yaWdpbikKK3sKKyAgICBtX3Blcm1pc3Npb25zLnJlbW92ZShvcmlnaW4pOwor
CisgICAgYXV0byB3a09yaWdpblN0cmluZyA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcob3JpZ2luLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICBhdXRvIHdrT3JpZ2luID0gYWRv
cHRXSyhXS1NlY3VyaXR5T3JpZ2luQ3JlYXRlRnJvbVN0cmluZyh3a09yaWdpblN0cmluZy5nZXQo
KSkpOworICAgIGF1dG8gd2tPcmlnaW5UeXBlUmVmID0gc3RhdGljX2Nhc3Q8V0tUeXBlUmVmPih3
a09yaWdpbi5nZXQoKSk7CisgICAgYXV0byB3a09yaWdpbkFycmF5ID0gYWRvcHRXSyhXS0FycmF5
Q3JlYXRlKCZ3a09yaWdpblR5cGVSZWYsIDEpKTsKKworICAgIGZvciAoYXV0byYgbWFuYWdlciA6
IG1fbWFuYWdlcnMpCisgICAgICAgIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkUmVt
b3ZlTm90aWZpY2F0aW9uUG9saWNpZXMobWFuYWdlciwgd2tPcmlnaW5BcnJheS5nZXQoKSk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3ROb3RpZmljYXRpb25Qcm92aWRlci5oCmluZGV4IGJlMDQ4YmY5YTJkODNkOGU0MmQ1ODZj
MTZhMTJlMWVkMzYxNDMxMGMuLmU0ODVlZGFiMTEzNWE3ZGU2Njk3ODYxZGNlM2MzNDYxNzhjN2Nh
ZTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdE5vdGlmaWNhdGlvblByb3Zp
ZGVyLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIu
aApAQCAtMjUsMTEgKzI1LDExIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSA8V2ViS2l0
L1dLTXV0YWJsZURpY3Rpb25hcnkuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tOb3RpZmljYXRpb25N
YW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLTm90aWZpY2F0aW9uUHJvdmlkZXIuaD4KICNp
bmNsdWRlIDxXZWJLaXQvV0tSZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5o
PgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CkBAIC00MiwxMCArNDIsMTEgQEAgcHVibGljOgogCiAg
ICAgV0tEaWN0aW9uYXJ5UmVmIG5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCkgY29uc3Q7CiAgICAg
dm9pZCBzZXRQZXJtaXNzaW9uKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBib29sIGFsbG93ZWQpOwor
ICAgIHZvaWQgcmVzZXRQZXJtaXNzaW9uKGNvbnN0IFN0cmluZyYgb3JpZ2luKTsKIAogcHJpdmF0
ZToKICAgICBWZWN0b3I8V0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmPiBtX21hbmFnZXJzOwotICAg
IFdLUmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+IG1fcGVybWlzc2lvbnM7CisgICAg
SGFzaE1hcDxTdHJpbmcsIGJvb2w+IG1fcGVybWlzc2lvbnM7CiAgICAgV0tOb3RpZmljYXRpb25Q
cm92aWRlclYwIG1fcHJvdmlkZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1B1c2hBUEkubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1B1c2hBUEkubW0KaW5kZXggMmQ5MTNkYzI1OTg0M2E3MGM0NDI1NjA5
NmYwNDEyYTNmMzU1YmJlMC4uMjE0MmQyN2FmMGRkNTNkNTg4MjY3NTQ2MzhkNGI1ZjJkNjA1NDIx
ZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QdXNo
QVBJLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHVzaEFQ
SS5tbQpAQCAtMzM2LDYgKzMzNiw5IEBAIFRFU1QoUHVzaEFQSSwgZmlyZVB1c2hFdmVudFdpdGhO
b1BhZ2VzVGltZW91dCkKICAgICBjb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUg
PSBkYXRhU3RvcmUuZ2V0KCk7CiAgICAgY2xlYXJXZWJzaXRlRGF0YVN0b3JlKFtjb25maWd1cmF0
aW9uIHdlYnNpdGVEYXRhU3RvcmVdKTsKIAorICAgIGF1dG8gcHJvdmlkZXIgPSBUZXN0V2ViS2l0
QVBJOjpUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIoeyBbW2NvbmZpZ3VyYXRpb24gcHJvY2Vzc1Bv
b2xdIF9ub3RpZmljYXRpb25NYW5hZ2VyRm9yVGVzdGluZ10sIFdLTm90aWZpY2F0aW9uTWFuYWdl
ckdldFNoYXJlZFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25NYW5hZ2VyKCkgfSk7CisgICAgcHJv
dmlkZXIuc2V0UGVybWlzc2lvbihzZXJ2ZXIub3JpZ2luKCksIHRydWUpOworCiAgICAgYXV0byBt
ZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tQdXNoQVBJTWVzc2FnZUhhbmRsZXJXaXRoRXhwZWN0
ZWRNZXNzYWdlIGFsbG9jXSBpbml0XSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50
Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkg
bmFtZTpAInN3Il07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV2ViUHVzaERhZW1vbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV2ViUHVzaERhZW1vbi5tbQppbmRleCA5N2E1YmRhNzY5Y2VlZTBkZDNjNTYyOGU3
MzQyMDllMDgwMTIyNGQ5Li5hNDQzMmM5NDc5ZWFmMDk3YjQ0N2M2MTQ4ZTEyMTZhNGVkM2Q5ZmU2
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1
c2hEYWVtb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
ZWJQdXNoRGFlbW9uLm1tCkBAIC04NjksNiArODY5LDU2IEBAIFRFU1RfRihXZWJQdXNoRFRlc3Qs
IFVuc3Vic2NyaWJlc09uQ2xlYXJpbmdXZWJzaXRlRGF0YUZvck9yaWdpbikKICAgICBBU1NFUlRf
RkFMU0UoaGFzUHVzaFN1YnNjcmlwdGlvbigpKTsKIH0KIAorVEVTVF9GKFdlYlB1c2hEVGVzdCwg
VW5zdWJzY3JpYmVzT25QZXJtaXNzaW9uUmVzZXQpCit7CisgICAgc3RhdGljIGNvbnN0IGNoYXIq
IHNvdXJjZSA9IFIiSFRNTCgKKyAgICA8c2NyaXB0IHNyYz0iL2NvbnN0YW50cy5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdD4KKyAgICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rlcign
L3N3LmpzJykudGhlbihhc3luYyAoKSA9PiB7CisgICAgICAgIGNvbnN0IHJlZ2lzdHJhdGlvbiA9
IGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlYWR5OworICAgICAgICBsZXQgcmVzdWx0
ID0gbnVsbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGxldCBzdWJzY3JpcHRpb24gPSBh
d2FpdCByZWdpc3RyYXRpb24ucHVzaE1hbmFnZXIuc3Vic2NyaWJlKHsKKyAgICAgICAgICAgICAg
ICB1c2VyVmlzaWJsZU9ubHk6IHRydWUsCisgICAgICAgICAgICAgICAgYXBwbGljYXRpb25TZXJ2
ZXJLZXk6IFZBTElEX1NFUlZFUl9LRVkKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcmVz
dWx0ID0gIlN1YnNjcmliZWQiOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBy
ZXN1bHQgPSAiRXJyb3I6ICIgKyBlOworICAgICAgICB9CisgICAgICAgIHdpbmRvdy53ZWJraXQu
bWVzc2FnZUhhbmRsZXJzLm5vdGUucG9zdE1lc3NhZ2UocmVzdWx0KTsKKyAgICB9KTsKKyAgICA8
L3NjcmlwdD4KKyAgICApSFRNTCI7CisKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxpZD4gcmVzdWx0
ID0gbmlsOworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgW21fbm90aWZpY2F0
aW9uTWVzc2FnZUhhbmRsZXIgc2V0TWVzc2FnZUhhbmRsZXI6XihpZCBtZXNzYWdlKSB7CisgICAg
ICAgIHJlc3VsdCA9IG1lc3NhZ2U7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworCisg
ICAgbG9hZFJlcXVlc3Qoc291cmNlLCAiIik7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZkb25lKTsKKworICAgIEFTU0VSVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvU3RyaW5nOkAiU3Vi
c2NyaWJlZCJdKTsKKyAgICBBU1NFUlRfVFJVRShoYXNQdXNoU3Vic2NyaXB0aW9uKCkpOworCisg
ICAgbV9ub3RpZmljYXRpb25Qcm92aWRlci0+cmVzZXRQZXJtaXNzaW9uKG1fc2VydmVyLT5vcmln
aW4oKSk7CisKKyAgICBib29sIGlzU3Vic2NyaWJlZCA9IHRydWU7CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6d2FpdEZvckNvbmRpdGlvbldpdGhMb2dnaW5nKFt0aGlzLCAmaXNTdWJzY3JpYmVk
XSB7CisgICAgICAgIGlzU3Vic2NyaWJlZCA9IGhhc1B1c2hTdWJzY3JpcHRpb24oKTsKKyAgICAg
ICAgaWYgKCFpc1N1YnNjcmliZWQpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAg
ICBzbGVlcCgxKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0sIDUsIEAiVGltZWQgb3V0
IHdhaXRpbmcgZm9yIHB1c2ggc3Vic2NyaXB0aW9uIHRvIGJlIHJlbW92ZWQuIik7CisKKyAgICBB
U1NFUlRfRkFMU0UoaXNTdWJzY3JpYmVkKTsKK30KKwogI2lmIEVOQUJMRShJTlNUQUxMX0NPT1JE
SU5BVElPTl9CVU5ETEVTKQogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiBzdGF0aWMgdm9p
ZCBkZWxldGVBbGxSZWdpc3RyYXRpb25zRm9yRGF0YVN0b3JlKFdLV2Vic2l0ZURhdGFTdG9yZSAq
ZGF0YVN0b3JlKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IGU1OGY3MjIxYzg4M2EzMmU5YjI2YWE5OTJjYjAxMDVjOGJmNWEw
MTguLjY4YzYyZDNkY2E5NTk5OTBjNGM5MDAzY2ZkZTE5ZTQ1MjIyYjU4OWEgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAyMi0wMy0yMyAgQmVuIE5oYW0gIDxuaGFtQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZW1vdmUgcHVzaCBzdWJzY3JpcHRpb25zIHdoZW4gcGVybWlzc2lvbnMgYXJlIHJlc2V0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgwNjgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggYW4g
aXNzdWUgd2l0aCBhIGxheW91dCB0ZXN0IHRoYXQgZGlkbid0IHJlZ2lzdGVyIGZvciBub3RpZmlj
YXRpb24gcGVybWlzc2lvbnMuCisKKyAgICAgICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMv
c2VydmljZS13b3JrZXItc3Bpbm5pbmctcHVzaC5odHRwcy5odG1sOgorCiAyMDIyLTAzLTI0ICBN
eWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29h
XSBSRUdSRVNTSU9OKHIyODEyOTEpOiBXaGVuIGFjY2Vzc2liaWxpdHkgYm9sZCBpcyBlbmFibGVk
LCBmb250LWZhbWlseTpzeXN0ZW0tdWkgaXMgc3VwcG9zZWQgdG8gYmUgYm9sZApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNw
aW5uaW5nLXB1c2guaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29y
a2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1wdXNoLmh0dHBzLmh0bWwKaW5kZXggZmVjNDU3
Yzc4NGZmZTRlYmNhMjkwNzkzZmFlOTQ2YTJkNTBmNGRlNi4uZjM4ZDBlNGJlNjVlMGVhZDc5YjMy
NmUxZjJkYmVkZGExNGU5ZTNjNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2Vy
dmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2guaHR0cHMuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bp
bm5pbmctcHVzaC5odHRwcy5odG1sCkBAIC03LDYgKzcsOSBAQAogPC9oZWFkPgogPGJvZHk+CiA8
c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZ3JhbnRXZWJO
b3RpZmljYXRpb25QZXJtaXNzaW9uKHdpbmRvdy5vcmlnaW4pOworCiBwcm9taXNlX3Rlc3QoYXN5
bmMgKHRlc3QpID0+IHsKICAgICBjb25zdCByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iu
c2VydmljZVdvcmtlci5yZWdpc3Rlcigic2VydmljZS13b3JrZXItc3Bpbm5pbmctd29ya2VyLmpz
IiwgeyBzY29wZSA6ICJzcGluLXB1c2giIH0pOwogICAgIGNvbnN0IHdvcmtlciA9IHJlZ2lzdHJh
dGlvbi5pbnN0YWxsaW5nOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456096</attachid>
            <date>2022-03-29 23:20:07 -0700</date>
            <delta_ts>2022-03-30 11:21:14 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-238068-20220329232006.patch</filename>
            <type>text/plain</type>
            <size>24586</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMDk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFiM2QzNjlkYmMyYWYwNjkx
M2EwZjkwYzM4NWQyMzMyYmVhM2MzNDIuLmMzOWY0MDM1YzQ5ZTM5ZWU0MzUzYTNlZDBhMGFmOThh
ZGZlMzhkODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMjItMDMtMTggIEJlbiBOaGFt
ICA8bmhhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHB1c2ggc3Vic2NyaXB0aW9ucyB3
aGVuIHBlcm1pc3Npb25zIGFyZSByZXNldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MDY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgV2hlbiB0aGUgbm90aWZpY2F0aW9uIHBlcm1pc3Npb24gZm9yIGFu
IG9yaWdpbiBpcyByZXNldCAoaS5lLiBpcyBpbiB0aGUgcHJvbXB0IHN0YXRlKSwgd2UKKyAgICAg
ICAgc2hvdWxkIGRlbGV0ZSBhbnkgcHVzaCBzdWJzY3JpcHRpb25zIGFzc29jaWF0ZWQgd2l0aCB0
aGF0IG9yaWdpbi4gV2UgZG8gdGhpcyBieSBoYXZpbmcgdGhlCisgICAgICAgIHByb3ZpZGVyRGlk
UmVtb3ZlTm90aWZpY2F0aW9uUG9saWNpZXMgQVBJIGNhbGwgZGVsZXRlUHVzaEFuZE5vdGlmaWNh
dGlvblJlZ2lzdHJhdGlvbiBpbgorICAgICAgICB3ZWJwdXNoZC4KKworICAgICAgICBXZSBhbHNv
IGRvIHRoaXMgd2hlbiBwcm9jZXNzaW5nIGEgcHVzaCBtZXNzYWdlLCBzaW5jZSBpdCdzIHBvc3Np
YmxlIGZvciB0aGUgc3RhdGUgdG8gZ2V0IG91dAorICAgICAgICBvZiBzeW5jIGR1ZSB0byB0aGUg
bnVtYmVyIG9mIHByb2Nlc3NlcyBpbnZvbHZlZC4gRm9yIGluc3RhbmNlLCByZW1vdmluZyB0aGUg
cG9saWN5IGZyb20KKyAgICAgICAgU3lzdGVtIFByZWZlcmVuY2VzIHJhdGhlciB0aGFuIHRoZSBi
cm93c2VyJ3Mgbm90aWZpY2F0aW9uIHByZWZlcmVuY2UgcGFuZSBjYW4gcmVzdWx0IGluIHRoZQor
ICAgICAgICBwcm92aWRlckRpZFJlbW92ZU5vdGlmaWNhdGlvblBvbGljaWVzIGNhbGwgaW4gdGhl
IGJyb3dzZXIgdG8gYmUgZGVsYXllZCBvciBkcm9wcGVkLgorCisgICAgICAgIE5vdGUgdGhhdCB3
ZSBkb24ndCBkZWxldGUgdGhlIHN1YnNjcmlwdGlvbiBpZiB0aGUgcGVybWlzc2lvbiBpcyBzaW1w
bHkgdG9nZ2xlZCBvZmYgKGkuZS4gdGhlCisgICAgICAgIHBlcm1pc3Npb24gaXMgaW4gdGhlIERl
bmllZCBzdGF0ZSkuIEluIHRoYXQgY2FzZSwgdGhlIHVzZXIgY2FuIGVhc2lseSB0b2dnbGUgdGhl
IHBlcm1pc3Npb24KKyAgICAgICAgYmFjayBvbi4gV2Ugd2FudCB0aGUgc3Vic2NyaXB0aW9uIG9i
amVjdCB0byBzdGF5IHRoZSBzYW1lIGFmdGVyIHRoZSBwcmVmZXJlbmNlIGlzIHRvZ2dsZWQKKyAg
ICAgICAgYmFjayBvbiBzbyB0aGF0IHRoZSBzZXJ2ZXIgY2FuIHN0aWxsIHNlbmQgcHVzaGVzIHRv
IHRoYXQgcHVzaCBlbmRwb2ludC4gSW4gYSBmdXR1cmUgcGF0Y2gKKyAgICAgICAgd2UnbGwgYWRk
IHN1YnNjcmlwdGlvbnMgaW4gdGhpcyBzdGF0ZSB0byB0aGUgaWdub3JlZCB0b3BpY3MgbGlzdCBp
biB3ZWJwdXNoZCwgd2hpY2ggd2lsbAorICAgICAgICBwcmV2ZW50IHB1c2hlcyBmb3IgdGhvc2Ug
c3Vic2NyaXB0aW9ucyBmcm9tIGJlaW5nIGRlbGl2ZXJlZCB0byB0aGUgZGV2aWNlIHdpdGhvdXQg
YWN0dWFsbHkKKyAgICAgICAgdW5zdWJzY3JpYmluZy4KKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OnByb2Nlc3NQdXNoTWVzc2FnZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6cHJvY2Vzc1B1c2hNZXNz
YWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpyZW1vdmVQdXNoU3Vic2NyaXB0aW9u
c0Zvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHk6OnByb3ZpZGVyRGlkUmVtb3ZlTm90aWZpY2F0aW9uUG9saWNpZXMpOgorICAgICAgICAqIHdl
YnB1c2hkL1dlYlB1c2hEYWVtb24ubW06CisgICAgICAgIChXZWJQdXNoRDo6RGFlbW9uOjpkZWxl
dGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKToKKwogMjAyMi0wMy0yOSAgRGV2aW4g
Um91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogU291
cmNlczogYWxsb3cgUmVzcG9uc2UgTG9jYWwgT3ZlcnJpZGVzIHRvIG1hcCB0byBhIGZpbGUgb24g
ZGlzawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cAppbmRleCBlNjZjODQ3M2Q4MmUzYWMyYzAyZTQ3ZmJhZGYzYjA2OWFhZGNiNDE2Li43NjhlZDNm
ZDY4MDZjZDEzODdkYWMxZGIyOGIzMzgwOTRkM2RjMzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMjMwMiwxMSArMjMwMiwyOSBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXRQZW5kaW5nUHVzaE1lc3NhZ2VzKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgQ29tcGxldGlvbgogICAgICAgICBMT0coTm90aWZpY2F0aW9ucywgIk5l
dHdvcmtQcm9jZXNzIGNvdWxkIG5vdCBmaW5kIHNlc3Npb24gZm9yIElEICVsbHUgdG8gZ2V0IHBl
bmRpbmcgcHVzaCBtZXNzYWdlcyIsIHNlc3Npb25JRC50b1VJbnQ2NCgpKTsKIH0KIAotdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1B1c2hNZXNzYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2ViUHVzaE1lc3NhZ2UmJiBwdXNoTWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjYWxsYmFjaykKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnByb2Nlc3NQdXNoTWVzc2Fn
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYlB1c2hNZXNzYWdlJiYgcHVzaE1lc3NhZ2Us
IFB1c2hQZXJtaXNzaW9uU3RhdGUgcGVybWlzc2lvblN0YXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQogewogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29y
a1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBMT0coUHVzaCwgIk5ldHdvcmtpbmcgcHJv
Y2VzcyBoYW5kbGluZyBhIHB1c2ggbWVzc2FnZSBmcm9tIFVJIHByb2Nlc3MgaW4gc2Vzc2lvbiAl
bGx1Iiwgc2Vzc2lvbklELnRvVUludDY0KCkpOwogICAgICAgICBhdXRvIG9yaWdpbiA9IFNlY3Vy
aXR5T3JpZ2luRGF0YTo6ZnJvbVVSTChwdXNoTWVzc2FnZS5yZWdpc3RyYXRpb25VUkwpOworCisg
ICAgICAgIGlmIChwZXJtaXNzaW9uU3RhdGUgPT0gUHVzaFBlcm1pc3Npb25TdGF0ZTo6UHJvbXB0
KSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPRyhQdXNoLCAiUHVzaCBtZXNzYWdlIGZyb20gJSIg
UFJJVkFURV9MT0dfU1RSSU5HICIgd29uJ3QgYmUgcHJvY2Vzc2VkIHNpbmNlIHBlcm1pc3Npb24g
aXMgaW4gdGhlIHByb21wdCBzdGF0ZTsgcmVtb3ZpbmcgcHVzaCBzdWJzY3JpcHRpb24iLCBvcmln
aW4udG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHNlc3Npb24tPm5vdGlm
aWNhdGlvbk1hbmFnZXIoKS5yZW1vdmVQdXNoU3Vic2NyaXB0aW9uc0Zvck9yaWdpbihTZWN1cml0
eU9yaWdpbkRhdGEgeyBvcmlnaW4gfSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1
dG8mJikgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UpOworICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKHBlcm1pc3Npb25TdGF0ZSA9PSBQdXNoUGVybWlzc2lv
blN0YXRlOjpEZW5pZWQpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HKFB1c2gsICJQdXNoIG1l
c3NhZ2UgZnJvbSAlIiBQUklWQVRFX0xPR19TVFJJTkcgIiB3b24ndCBiZSBwcm9jZXNzZWQgc2lu
Y2UgcGVybWlzc2lvbiBpcyBpbiB0aGUgZGVuaWVkIHN0YXRlIiwgb3JpZ2luLnRvU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICAvLyBGSVhNRTogbW92ZSB0b3BpYyB0byBpZ25v
cmUgbGlzdCBpbiB3ZWJwdXNoZCBpZiBwZXJtaXNzaW9uIGlzIGRlbmllZC4KKyAgICAgICAgICAg
IGNhbGxiYWNrKGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIEFTU0VSVChwZXJtaXNzaW9uU3RhdGUgPT0gUHVzaFBlcm1pc3Npb25TdGF0ZTo6R3JhbnRl
ZCk7CiAgICAgICAgIHNlc3Npb24tPmVuc3VyZVNXU2VydmVyKCkucHJvY2Vzc1B1c2hNZXNzYWdl
KFdURk1vdmUocHVzaE1lc3NhZ2UucHVzaERhdGEpLCBXVEZNb3ZlKHB1c2hNZXNzYWdlLnJlZ2lz
dHJhdGlvblVSTCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgc2Vzc2lv
bklELCBvcmlnaW4gPSBXVEZNb3ZlKG9yaWdpbiksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayldKGJvb2wgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIE5ldHdvcmtTZXNzaW9uKiBz
ZXNzaW9uOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQgJiYgKHNlc3Npb24gPSBuZXR3b3JrU2Vz
c2lvbihzZXNzaW9uSUQpKSkgewpAQCAtMjMyOSw3ICsyMzQ3LDcgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6Z2V0UGVuZGluZ1B1c2hNZXNzYWdlcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm8KICAgICBjYWxsYmFjayh7IH0pOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpw
cm9jZXNzUHVzaE1lc3NhZ2UoUEFMOjpTZXNzaW9uSUQsIFdlYlB1c2hNZXNzYWdlJiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCit2b2lkIE5ldHdvcmtQcm9jZXNz
Ojpwcm9jZXNzUHVzaE1lc3NhZ2UoUEFMOjpTZXNzaW9uSUQsIFdlYlB1c2hNZXNzYWdlJiYsIFB1
c2hQZXJtaXNzaW9uU3RhdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJh
Y2spCiB7CiAgICAgY2FsbGJhY2soZmFsc2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDZhOTAwZmQxYmIyOTM3MGM4YzkwZmYyYmZh
OWFiMGVjM2U2ZTk0ZWUuLjUxMDBkZWEzZjIwNDk1YjRmNTgxZWIxMDEyZWI5YzkxOTM3MGE3MjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAg
LTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lz
dHJ5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1B1c2hQ
ZXJtaXNzaW9uU3RhdGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VySWRlbnRpZmllci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+CkBAIC0zNzMsNyArMzc0LDcgQEAgcHVibGlj
OgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHZvaWQgZ2V0UGVuZGluZ1B1c2hN
ZXNzYWdlcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0
b3I8V2ViUHVzaE1lc3NhZ2U+Jik+JiYpOwotICAgIHZvaWQgcHJvY2Vzc1B1c2hNZXNzYWdlKFBB
TDo6U2Vzc2lvbklELCBXZWJQdXNoTWVzc2FnZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKKyAgICB2b2lkIHByb2Nlc3NQdXNoTWVzc2FnZShQQUw6OlNlc3Npb25JRCwgV2Vi
UHVzaE1lc3NhZ2UmJiwgV2ViQ29yZTo6UHVzaFBlcm1pc3Npb25TdGF0ZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJik7CiAjZW5kaWYKIAogICAgIHZvaWQgZGVsZXRlUHVzaEFuZE5v
dGlmaWNhdGlvblJlZ2lzdHJhdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4m
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5tZXNzYWdlcy5pbgppbmRleCBiNWEwMzI4YjBiNDQ1NzYwOTdjODczYzBkNjRiZTIxNGFh
ODhlYWJhLi5iOGY0ODM2N2ZiNmQyMTIwYzlhZjY2MTM4MzBmZjQzY2ZjNWJhYmM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVz
c2FnZXMuaW4KQEAgLTIxMiw3ICsyMTIsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBM
ZWdhY3lSZWNlaXZlciB7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgR2V0UGVu
ZGluZ1B1c2hNZXNzYWdlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChWZWN0b3I8V2Vi
S2l0OjpXZWJQdXNoTWVzc2FnZT4gbWVzc2FnZXMpCi0gICAgUHJvY2Vzc1B1c2hNZXNzYWdlKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RydWN0IFdlYktpdDo6V2ViUHVzaE1lc3NhZ2UgcHVz
aE1lc3NhZ2UpIC0+IChib29sIGRpZFN1Y2NlZWQpCisgICAgUHJvY2Vzc1B1c2hNZXNzYWdlKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RydWN0IFdlYktpdDo6V2ViUHVzaE1lc3NhZ2UgcHVz
aE1lc3NhZ2UsIGVudW06dWludDhfdCBXZWJDb3JlOjpQdXNoUGVybWlzc2lvblN0YXRlIHB1c2hQ
ZXJtaXNzaW9uU3RhdGUpIC0+IChib29sIGRpZFN1Y2NlZWQpCiAjZW5kaWYKICAgICBEZWxldGVQ
dXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
c3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBvcmlnaW4pIC0+IChTdHJpbmcgZXJy
b3JNZXNzYWdlKQogICAgIEdldE9yaWdpbnNXaXRoUHVzaEFuZE5vdGlmaWNhdGlvblBlcm1pc3Np
b25zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGE+IG9yaWdpbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAyOWJhNmUzMTQ5NmNjZjM5
Zjc4YmIyODNiZjNiNjRjMmFhZTJmYTM4Li5lNGFmYjU5YWM1MzMzMTNiMjZlNGMwZTcxYmNmOWNi
YTI0ZGU2OTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlICJT
dG9yYWdlQWNjZXNzU3RhdHVzLmgiCiAjaW5jbHVkZSAiV2ViQ29tcGlsZWRDb250ZW50UnVsZUxp
c3QuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHkuaCIKKyNpbmNsdWRlICJXZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMu
aCIKQEAgLTYyLDYgKzYzLDcgQEAKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0NsaWVudE9yaWdpbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUHVzaFBlcm1pc3Npb25TdGF0
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRlIDx3dGYvQ2FsbGJhY2tBZ2dyZWdhdG9y
Lmg+CkBAIC0xNzYxLDcgKzE3NjMsMTkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXRQ
ZW5kaW5nUHVzaE1lc3NhZ2VzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGwKIAogdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzUHVzaE1lc3NhZ2UoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBXZWJQdXNoTWVzc2FnZSYgcHVzaE1lc3NhZ2UsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCB3YXNQcm9jZXNzZWQpPiYmIGNhbGxiYWNrKQogewotICAgIHNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlByb2Nlc3NQdXNoTWVzc2Fn
ZSB7IHNlc3Npb25JRCwgcHVzaE1lc3NhZ2UgfSwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIGF1
dG8gcGVybWlzc2lvbiA9IFB1c2hQZXJtaXNzaW9uU3RhdGU6OlByb21wdDsKKyAgICBhdXRvIHBl
cm1pc3Npb25zID0gV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpzaGFyZWRTZXJ2aWNlV29y
a2VyTWFuYWdlcigpLm5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCk7CisgICAgYXV0byBvcmlnaW4g
PSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21VUkwocHVzaE1lc3NhZ2UucmVnaXN0cmF0aW9uVVJM
KS50b1N0cmluZygpOworCisgICAgaWYgKGF1dG8gaXQgPSBwZXJtaXNzaW9ucy5maW5kKG9yaWdp
bik7IGl0ICE9IHBlcm1pc3Npb25zLmVuZCgpKQorICAgICAgICBwZXJtaXNzaW9uID0gaXQtPnZh
bHVlID8gUHVzaFBlcm1pc3Npb25TdGF0ZTo6R3JhbnRlZCA6IFB1c2hQZXJtaXNzaW9uU3RhdGU6
OkRlbmllZDsKKworICAgIGlmIChwZXJtaXNzaW9uID09IFB1c2hQZXJtaXNzaW9uU3RhdGU6OkRl
bmllZCkgeworICAgICAgICBjYWxsYmFjayhmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpQcm9j
ZXNzUHVzaE1lc3NhZ2UgeyBzZXNzaW9uSUQsIHB1c2hNZXNzYWdlLCBwZXJtaXNzaW9uIH0sIFdU
Rk1vdmUoY2FsbGJhY2spKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlm
aWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcAppbmRleCBiM2FjNzJiNWY2
Y2I4MTlmZDlhMmMwNzZiMGQ2OTI2MWNiZTUxODBhLi5jNDdjNGIyMjE5N2NlOTI1NjM4MGQxMGVk
YTQ4N2FhNTZlZTJmN2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHku
Y3BwCkBAIC0zNCw3ICszNCw5IEBACiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKKyNpbmNs
dWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RpZmljYXRpb25E
YXRhLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KIAogbmFtZXNw
YWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTI2NywyNSArMjY5LDY5
IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZFVwZGF0ZU5v
dGlmaWNhdGlvblBvbGljeShjb25zdCBBUEk6CiAgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvQWxs
UHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpEaWRVcGRhdGVOb3Rp
ZmljYXRpb25EZWNpc2lvbihvcmlnaW4tPnNlY3VyaXR5T3JpZ2luKCkudG9TdHJpbmcoKSwgYWxs
b3dlZCkpOwogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJE
aWRSZW1vdmVOb3RpZmljYXRpb25Qb2xpY2llcyhBUEk6OkFycmF5KiBvcmlnaW5zKQorc3RhdGlj
IHZvaWQgcmVtb3ZlUHVzaFN1YnNjcmlwdGlvbnNGb3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5zKQogewotICAgIGlmICghcHJvY2Vzc1Bv
b2woKSkKKyAgICBSZWZQdHI8TmV0d29ya1Byb2Nlc3NQcm94eT4gbmV0d29ya1Byb2Nlc3M7Cisg
ICAgYXV0byBzZXNzaW9uSUQgPSBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOwor
CisgICAgV2Vic2l0ZURhdGFTdG9yZTo6Zm9yRWFjaFdlYnNpdGVEYXRhU3RvcmUoWyZuZXR3b3Jr
UHJvY2VzcywgJnNlc3Npb25JRF0oV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlKSB7CisgICAg
ICAgIGlmICghbmV0d29ya1Byb2Nlc3MgJiYgZGF0YVN0b3JlLmlzUGVyc2lzdGVudCgpKSB7Cisg
ICAgICAgICAgICBuZXR3b3JrUHJvY2VzcyA9ICZkYXRhU3RvcmUubmV0d29ya1Byb2Nlc3MoKTsK
KyAgICAgICAgICAgIHNlc3Npb25JRCA9IGRhdGFTdG9yZS5zZXNzaW9uSUQoKTsKKyAgICAgICAg
fQorICAgIH0pOworCisgICAgaWYgKCFuZXR3b3JrUHJvY2VzcykKICAgICAgICAgcmV0dXJuOwog
CisgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBvcmlnaW5zKQorICAgICAgICBuZXR3b3JrUHJvY2Vz
cy0+ZGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbihzZXNzaW9uSUQsIG9yaWdp
biwgW29yaWdpblN0cmluZyA9IG9yaWdpbi50b1N0cmluZygpXShhdXRvJiYpIHsgfSk7Cit9CisK
K3N0YXRpYyBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBhcGlBcnJheVRvU2Vj
dXJpdHlPcmlnaW5zKEFQSTo6QXJyYXkqIG9yaWdpbnMpCit7CisgICAgaWYgKCFvcmlnaW5zKQor
ICAgICAgICByZXR1cm4geyB9OworCisgICAgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YT4gc2VjdXJpdHlPcmlnaW5zOwogICAgIHNpemVfdCBzaXplID0gb3JpZ2lucy0+c2l6ZSgp
OwotICAgIGlmICghc2l6ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIAorICAgIHNlY3VyaXR5T3Jp
Z2lucy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOworCisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgIHNlY3VyaXR5T3JpZ2lucy51bmNoZWNrZWRBcHBl
bmQob3JpZ2lucy0+YXQ8QVBJOjpTZWN1cml0eU9yaWdpbj4oaSktPnNlY3VyaXR5T3JpZ2luKCkp
OworCisgICAgcmV0dXJuIHNlY3VyaXR5T3JpZ2luczsKK30KKworc3RhdGljIFZlY3RvcjxTdHJp
bmc+IGFwaUFycmF5VG9TZWN1cml0eU9yaWdpblN0cmluZ3MoQVBJOjpBcnJheSogb3JpZ2lucykK
K3sKKyAgICBpZiAoIW9yaWdpbnMpCisgICAgICAgIHJldHVybiB7IH07CisKICAgICBWZWN0b3I8
U3RyaW5nPiBvcmlnaW5TdHJpbmdzOworICAgIHNpemVfdCBzaXplID0gb3JpZ2lucy0+c2l6ZSgp
OwogICAgIG9yaWdpblN0cmluZ3MucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXplKTsKKwogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQogICAgICAgICBvcmlnaW5TdHJpbmdz
LnVuY2hlY2tlZEFwcGVuZChvcmlnaW5zLT5hdDxBUEk6OlNlY3VyaXR5T3JpZ2luPihpKS0+c2Vj
dXJpdHlPcmlnaW4oKS50b1N0cmluZygpKTsKIAotICAgIFdlYlByb2Nlc3NQb29sOjpzZW5kVG9B
bGxSZW1vdGVXb3JrZXJQcm9jZXNzZXMoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6
OkRpZFJlbW92ZU5vdGlmaWNhdGlvbkRlY2lzaW9ucyhvcmlnaW5TdHJpbmdzKSk7CisgICAgcmV0
dXJuIG9yaWdpblN0cmluZ3M7Cit9CiAKLSAgICBpZiAoIXByb2Nlc3NQb29sKCkpCit2b2lkIFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRSZW1vdmVOb3RpZmljYXRpb25Q
b2xpY2llcyhBUEk6OkFycmF5KiBvcmlnaW5zKQoreworICAgIHNpemVfdCBzaXplID0gb3JpZ2lu
cy0+c2l6ZSgpOworICAgIGlmICghc2l6ZSkKICAgICAgICAgcmV0dXJuOwotICAgIHByb2Nlc3NQ
b29sKCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdl
cjo6RGlkUmVtb3ZlTm90aWZpY2F0aW9uRGVjaXNpb25zKG9yaWdpblN0cmluZ3MpKTsKKworICAg
IGlmICh0aGlzID09ICZzaGFyZWRTZXJ2aWNlV29ya2VyTWFuYWdlcigpKSB7CisgICAgICAgIHJl
bW92ZVB1c2hTdWJzY3JpcHRpb25zRm9yT3JpZ2lucyhhcGlBcnJheVRvU2VjdXJpdHlPcmlnaW5z
KG9yaWdpbnMpKTsKKyAgICAgICAgV2ViUHJvY2Vzc1Bvb2w6OnNlbmRUb0FsbFJlbW90ZVdvcmtl
clByb2Nlc3NlcyhNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6RGlkUmVtb3ZlTm90
aWZpY2F0aW9uRGVjaXNpb25zKGFwaUFycmF5VG9TZWN1cml0eU9yaWdpblN0cmluZ3Mob3JpZ2lu
cykpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChwcm9jZXNzUG9vbCgpKQor
ICAgICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYk5v
dGlmaWNhdGlvbk1hbmFnZXI6OkRpZFJlbW92ZU5vdGlmaWNhdGlvbkRlY2lzaW9ucyhhcGlBcnJh
eVRvU2VjdXJpdHlPcmlnaW5TdHJpbmdzKG9yaWdpbnMpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9u
Lm1tIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tCmluZGV4IGNiZDEy
NzAzYjU5ZWNmNWYyNTA3YzgwZGFhMDAzYmZlMmM5NzM0ZTQuLjZmOTZhZWI4YWVjNmEwZTE0ZDQ2
N2U0ZmNiYmY2MGNiOWUyOWNhYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQv
V2ViUHVzaERhZW1vbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVt
b24ubW0KQEAgLTQ5OSw3ICs0OTksMTggQEAgdm9pZCBEYWVtb246OmRlbGV0ZVB1c2hBbmROb3Rp
ZmljYXRpb25SZWdpc3RyYXRpb24oQ2xpZW50Q29ubmVjdGlvbiogY29ubmVjdGlvbiwKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNvbm5lY3Rpb24tPmVucXVldWVBcHBCdW5kbGVSZXF1
ZXN0KG1ha2VVbmlxdWU8QXBwQnVuZGxlRGVsZXRpb25SZXF1ZXN0PigqY29ubmVjdGlvbiwgb3Jp
Z2luU3RyaW5nLCBXVEZNb3ZlKHJlcGx5U2VuZGVyKSkpOworICAgIGNvbm5lY3Rpb24tPmVucXVl
dWVBcHBCdW5kbGVSZXF1ZXN0KG1ha2VVbmlxdWU8QXBwQnVuZGxlRGVsZXRpb25SZXF1ZXN0Pigq
Y29ubmVjdGlvbiwgb3JpZ2luU3RyaW5nLCBbdGhpcywgb3JpZ2luU3RyaW5nID0gU3RyaW5nIHsg
b3JpZ2luU3RyaW5nIH0sIHJlcGx5U2VuZGVyID0gV1RGTW92ZShyZXBseVNlbmRlciksIGJ1bmRs
ZUlkZW50aWZpZXIgPSBjb25uZWN0aW9uLT5ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyKCld
KGF1dG8gcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgcnVuQWZ0ZXJTdGFydGluZ1B1c2hTZXJ2
aWNlKFt0aGlzLCBidW5kbGVJZGVudGlmaWVyID0gV1RGTW92ZShidW5kbGVJZGVudGlmaWVyKSwg
b3JpZ2luU3RyaW5nID0gV1RGTW92ZShvcmlnaW5TdHJpbmcpLCByZXBseVNlbmRlciA9IFdURk1v
dmUocmVwbHlTZW5kZXIpLCByZXN1bHRdKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIW1f
cHVzaFNlcnZpY2UpIHsKKyAgICAgICAgICAgICAgICByZXBseVNlbmRlcihyZXN1bHQpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbV9wdXNo
U2VydmljZS0+cmVtb3ZlUmVjb3Jkc0ZvckJ1bmRsZUlkZW50aWZpZXJBbmRPcmlnaW4oYnVuZGxl
SWRlbnRpZmllciwgb3JpZ2luU3RyaW5nLCBbcmVwbHlTZW5kZXIgPSBXVEZNb3ZlKHJlcGx5U2Vu
ZGVyKSwgcmVzdWx0XShhdXRvJiYpIG11dGFibGUgeworICAgICAgICAgICAgICAgIHJlcGx5U2Vu
ZGVyKHJlc3VsdCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSkpOwogfQog
CiB2b2lkIERhZW1vbjo6c2V0RGVidWdNb2RlSXNFbmFibGVkKENsaWVudENvbm5lY3Rpb24qIGNs
aWVudENvbm5lY3Rpb24sIGJvb2wgZW5hYmxlZCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3MTc5ZTkzN2MzZDBhMTkwZGU2YjAwYjM5YjU4ZjY0
MjgwOWMxMDJiLi5hZjJkOTMwNjFlMzczMjk4NGE0MzBiNDYzYmM3MWZmN2Q4M2E3YzYzIDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjQgQEAKKzIwMjItMDMtMTggIEJlbiBOaGFtICA8bmhhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVtb3ZlIHB1c2ggc3Vic2NyaXB0aW9ucyB3aGVuIHBlcm1pc3Npb25zIGFyZSByZXNldAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MDY4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgdGVzdCB0
byBtYWtlIHN1cmUgcHVzaCBzdWJzY3JpcHRpb25zIGFyZSByZW1vdmVkIHdoZW4gdGhlIG5vdGlm
aWNhdGlvbiBwb2xpY3kgZm9yIGEKKyAgICAgICAgd2Vic2l0ZSBpcyByZXNldC4KKworICAgICAg
ICBBbHNvIGZpeGVkIGFuIGlzc3VlIHdpdGggYSBQdXNoQVBJIHRlc3QgdGhhdCBkaWRuJ3QgcHJv
cGVybHkgcmVnaXN0ZXIgZm9yIG5vdGlmaWNhdGlvbiBwZXJtaXNzaW9ucy4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRlc3ROb3RpZmljYXRpb25Qcm92aWRlcjo6VGVzdE5vdGlmaWNhdGlvblBy
b3ZpZGVyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3ROb3RpZmljYXRpb25Qcm92aWRl
cjo6bm90aWZpY2F0aW9uUGVybWlzc2lvbnMgY29uc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyOjpzZXRQZXJtaXNzaW9uKToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRlc3ROb3RpZmljYXRpb25Qcm92aWRlcjo6cmVzZXRQZXJtaXNzaW9uKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3ROb3RpZmljYXRpb25Qcm92aWRlci5oOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHVzaEFQSS5tbToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24ubW06CisK
IDIwMjItMDMtMjkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBEb24ndCBjcmVhdGUgZGlyZWN0b3JpZXMgb24gaU9TIGlmIHdlIGFyZSBvbmx5
IHVzaW5nIGVwaGVtZXJhbCBzdG9yYWdlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
Tm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwCmluZGV4IDA4MGYwNmE5OGNjOTE1NWU0ZWI5ZWYyNGIw
NTg2Nzk4ODk2YzNmYWYuLmViMzg2OTgyYWVmZGJjOGE1M2E0NGI1MzE0NzgxMDM3NzQ5ZTQ0NGQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVy
LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3ROb3RpZmljYXRpb25Qcm92aWRlci5j
cHAKQEAgLTI3LDYgKzI3LDggQEAKICNpbmNsdWRlICJUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIu
aCIKIAogI2luY2x1ZGUgIldURlN0cmluZ1V0aWxpdGllcy5oIgorI2luY2x1ZGUgPFdlYktpdC9X
S0FycmF5Lmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLTXV0YWJsZURpY3Rpb25hcnkuaD4KICNpbmNs
dWRlIDxXZWJLaXQvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dL
TnVtYmVyLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLU2VjdXJpdHlPcmlnaW5SZWYuaD4KQEAgLTQy
LDcgKzQ0LDYgQEAgc3RhdGljIFdLRGljdGlvbmFyeVJlZiBub3RpZmljYXRpb25QZXJtaXNzaW9u
cyhjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogCiBUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXI6OlRl
c3ROb3RpZmljYXRpb25Qcm92aWRlcihWZWN0b3I8V0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmPiYm
IG1hbmFnZXJzKQogICAgIDogbV9tYW5hZ2VycyhXVEZNb3ZlKG1hbmFnZXJzKSkKLSAgICAsIG1f
cGVybWlzc2lvbnMoYWRvcHRXSyhXS011dGFibGVEaWN0aW9uYXJ5Q3JlYXRlKCkpKQogewogICAg
IG1fcHJvdmlkZXIgPSB7CiAgICAgICAgIHsgMCwgdGhpcyB9LApAQCAtNjcsMTkgKzY4LDM5IEBA
IFRlc3ROb3RpZmljYXRpb25Qcm92aWRlcjo6flRlc3ROb3RpZmljYXRpb25Qcm92aWRlcigpCiAK
IFdLRGljdGlvbmFyeVJlZiBUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXI6Om5vdGlmaWNhdGlvblBl
cm1pc3Npb25zKCkgY29uc3QKIHsKLSAgICBXS1JldGFpbihtX3Blcm1pc3Npb25zLmdldCgpKTsK
LSAgICByZXR1cm4gbV9wZXJtaXNzaW9ucy5nZXQoKTsKKyAgICBhdXRvIHBlcm1pc3Npb25zID0g
V0tNdXRhYmxlRGljdGlvbmFyeUNyZWF0ZSgpOworCisgICAgZm9yIChhdXRvJiBbb3JpZ2luLCBh
bGxvd2VkXSA6IG1fcGVybWlzc2lvbnMpIHsKKyAgICAgICAgYXV0byB3a09yaWdpblN0cmluZyA9
IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcob3JpZ2luLnV0ZjgoKS5kYXRh
KCkpKTsKKyAgICAgICAgYXV0byB3a0FsbG93ZWQgPSBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShh
bGxvd2VkKSk7CisgICAgICAgIFdLRGljdGlvbmFyeVNldEl0ZW0ocGVybWlzc2lvbnMsIHdrT3Jp
Z2luU3RyaW5nLmdldCgpLCB3a0FsbG93ZWQuZ2V0KCkpOworICAgIH0KKworICAgIHJldHVybiBw
ZXJtaXNzaW9uczsKIH0KIAogdm9pZCBUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXI6OnNldFBlcm1p
c3Npb24oY29uc3QgU3RyaW5nJiBvcmlnaW4sIGJvb2wgYWxsb3dlZCkKIHsKLSAgICBhdXRvIHdr
QWxsb3dlZCA9IGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKGFsbG93ZWQpKTsKLSAgICBhdXRvIHdr
T3JpZ2luU3RyaW5nID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhvcmln
aW4udXRmOCgpLmRhdGEoKSkpOwotICAgIFdLRGljdGlvbmFyeVNldEl0ZW0obV9wZXJtaXNzaW9u
cy5nZXQoKSwgd2tPcmlnaW5TdHJpbmcuZ2V0KCksIHdrQWxsb3dlZC5nZXQoKSk7CisgICAgbV9w
ZXJtaXNzaW9ucy5zZXQob3JpZ2luLCBhbGxvd2VkKTsKIAorICAgIGF1dG8gd2tPcmlnaW5TdHJp
bmcgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKG9yaWdpbi51dGY4KCku
ZGF0YSgpKSk7CiAgICAgYXV0byB3a09yaWdpbiA9IGFkb3B0V0soV0tTZWN1cml0eU9yaWdpbkNy
ZWF0ZUZyb21TdHJpbmcod2tPcmlnaW5TdHJpbmcuZ2V0KCkpKTsKKwogICAgIGZvciAoYXV0byYg
bWFuYWdlciA6IG1fbWFuYWdlcnMpCiAgICAgICAgIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3Zp
ZGVyRGlkVXBkYXRlTm90aWZpY2F0aW9uUG9saWN5KG1hbmFnZXIsIHdrT3JpZ2luLmdldCgpLCBh
bGxvd2VkKTsKIH0KIAordm9pZCBUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXI6OnJlc2V0UGVybWlz
c2lvbihjb25zdCBTdHJpbmcmIG9yaWdpbikKK3sKKyAgICBtX3Blcm1pc3Npb25zLnJlbW92ZShv
cmlnaW4pOworCisgICAgYXV0byB3a09yaWdpblN0cmluZyA9IGFkb3B0V0soV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcob3JpZ2luLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICBhdXRvIHdrT3Jp
Z2luID0gYWRvcHRXSyhXS1NlY3VyaXR5T3JpZ2luQ3JlYXRlRnJvbVN0cmluZyh3a09yaWdpblN0
cmluZy5nZXQoKSkpOworICAgIGF1dG8gd2tPcmlnaW5UeXBlUmVmID0gc3RhdGljX2Nhc3Q8V0tU
eXBlUmVmPih3a09yaWdpbi5nZXQoKSk7CisgICAgYXV0byB3a09yaWdpbkFycmF5ID0gYWRvcHRX
SyhXS0FycmF5Q3JlYXRlKCZ3a09yaWdpblR5cGVSZWYsIDEpKTsKKworICAgIGZvciAoYXV0byYg
bWFuYWdlciA6IG1fbWFuYWdlcnMpCisgICAgICAgIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3Zp
ZGVyRGlkUmVtb3ZlTm90aWZpY2F0aW9uUG9saWNpZXMobWFuYWdlciwgd2tPcmlnaW5BcnJheS5n
ZXQoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyLmggYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3ROb3RpZmljYXRpb25Qcm92aWRlci5oCmluZGV4IGJlMDQ4YmY5YTJkODNk
OGU0MmQ1ODZjMTZhMTJlMWVkMzYxNDMxMGMuLmU0ODVlZGFiMTEzNWE3ZGU2Njk3ODYxZGNlM2Mz
NDYxNzhjN2NhZTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdE5vdGlmaWNh
dGlvblByb3ZpZGVyLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0Tm90aWZpY2F0aW9u
UHJvdmlkZXIuaApAQCAtMjUsMTEgKzI1LDExIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVk
ZSA8V2ViS2l0L1dLTXV0YWJsZURpY3Rpb25hcnkuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tOb3Rp
ZmljYXRpb25NYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLTm90aWZpY2F0aW9uUHJvdmlk
ZXIuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tSZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvRmFz
dE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CkBAIC00MiwxMCArNDIsMTEgQEAgcHVi
bGljOgogCiAgICAgV0tEaWN0aW9uYXJ5UmVmIG5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCkgY29u
c3Q7CiAgICAgdm9pZCBzZXRQZXJtaXNzaW9uKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBib29sIGFs
bG93ZWQpOworICAgIHZvaWQgcmVzZXRQZXJtaXNzaW9uKGNvbnN0IFN0cmluZyYgb3JpZ2luKTsK
IAogcHJpdmF0ZToKICAgICBWZWN0b3I8V0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmPiBtX21hbmFn
ZXJzOwotICAgIFdLUmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+IG1fcGVybWlzc2lv
bnM7CisgICAgSGFzaE1hcDxTdHJpbmcsIGJvb2w+IG1fcGVybWlzc2lvbnM7CiAgICAgV0tOb3Rp
ZmljYXRpb25Qcm92aWRlclYwIG1fcHJvdmlkZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1B1c2hBUEkubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1B1c2hBUEkubW0KaW5kZXggMmQ5MTNkYzI1OTg0M2E3
MGM0NDI1NjA5NmYwNDEyYTNmMzU1YmJlMC4uMjE0MmQyN2FmMGRkNTNkNTg4MjY3NTQ2MzhkNGI1
ZjJkNjA1NDIxZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9QdXNoQVBJLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvUHVzaEFQSS5tbQpAQCAtMzM2LDYgKzMzNiw5IEBAIFRFU1QoUHVzaEFQSSwgZmlyZVB1c2hF
dmVudFdpdGhOb1BhZ2VzVGltZW91dCkKICAgICBjb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVE
YXRhU3RvcmUgPSBkYXRhU3RvcmUuZ2V0KCk7CiAgICAgY2xlYXJXZWJzaXRlRGF0YVN0b3JlKFtj
b25maWd1cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVdKTsKIAorICAgIGF1dG8gcHJvdmlkZXIgPSBU
ZXN0V2ViS2l0QVBJOjpUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIoeyBbW2NvbmZpZ3VyYXRpb24g
cHJvY2Vzc1Bvb2xdIF9ub3RpZmljYXRpb25NYW5hZ2VyRm9yVGVzdGluZ10sIFdLTm90aWZpY2F0
aW9uTWFuYWdlckdldFNoYXJlZFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25NYW5hZ2VyKCkgfSk7
CisgICAgcHJvdmlkZXIuc2V0UGVybWlzc2lvbihzZXJ2ZXIub3JpZ2luKCksIHRydWUpOworCiAg
ICAgYXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tQdXNoQVBJTWVzc2FnZUhhbmRsZXJX
aXRoRXhwZWN0ZWRNZXNzYWdlIGFsbG9jXSBpbml0XSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVz
ZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRs
ZXIuZ2V0KCkgbmFtZTpAInN3Il07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvV2ViUHVzaERhZW1vbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvV2ViUHVzaERhZW1vbi5tbQppbmRleCA5N2E1YmRhNzY5Y2VlZTBk
ZDNjNTYyOGU3MzQyMDllMDgwMTIyNGQ5Li5hNDQzMmM5NDc5ZWFmMDk3YjQ0N2M2MTQ4ZTEyMTZh
NGVkM2Q5ZmU2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1dlYlB1c2hEYWVtb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XZWJQdXNoRGFlbW9uLm1tCkBAIC04NjksNiArODY5LDU2IEBAIFRFU1RfRihXZWJQ
dXNoRFRlc3QsIFVuc3Vic2NyaWJlc09uQ2xlYXJpbmdXZWJzaXRlRGF0YUZvck9yaWdpbikKICAg
ICBBU1NFUlRfRkFMU0UoaGFzUHVzaFN1YnNjcmlwdGlvbigpKTsKIH0KIAorVEVTVF9GKFdlYlB1
c2hEVGVzdCwgVW5zdWJzY3JpYmVzT25QZXJtaXNzaW9uUmVzZXQpCit7CisgICAgc3RhdGljIGNv
bnN0IGNoYXIqIHNvdXJjZSA9IFIiSFRNTCgKKyAgICA8c2NyaXB0IHNyYz0iL2NvbnN0YW50cy5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5y
ZWdpc3RlcignL3N3LmpzJykudGhlbihhc3luYyAoKSA9PiB7CisgICAgICAgIGNvbnN0IHJlZ2lz
dHJhdGlvbiA9IGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlYWR5OworICAgICAgICBs
ZXQgcmVzdWx0ID0gbnVsbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGxldCBzdWJzY3Jp
cHRpb24gPSBhd2FpdCByZWdpc3RyYXRpb24ucHVzaE1hbmFnZXIuc3Vic2NyaWJlKHsKKyAgICAg
ICAgICAgICAgICB1c2VyVmlzaWJsZU9ubHk6IHRydWUsCisgICAgICAgICAgICAgICAgYXBwbGlj
YXRpb25TZXJ2ZXJLZXk6IFZBTElEX1NFUlZFUl9LRVkKKyAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgcmVzdWx0ID0gIlN1YnNjcmliZWQiOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAg
ICAgICAgICByZXN1bHQgPSAiRXJyb3I6ICIgKyBlOworICAgICAgICB9CisgICAgICAgIHdpbmRv
dy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLm5vdGUucG9zdE1lc3NhZ2UocmVzdWx0KTsKKyAgICB9
KTsKKyAgICA8L3NjcmlwdD4KKyAgICApSFRNTCI7CisKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxp
ZD4gcmVzdWx0ID0gbmlsOworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgW21f
bm90aWZpY2F0aW9uTWVzc2FnZUhhbmRsZXIgc2V0TWVzc2FnZUhhbmRsZXI6XihpZCBtZXNzYWdl
KSB7CisgICAgICAgIHJlc3VsdCA9IG1lc3NhZ2U7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAg
IH1dOworCisgICAgbG9hZFJlcXVlc3Qoc291cmNlLCAiIik7CisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZkb25lKTsKKworICAgIEFTU0VSVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvU3Ry
aW5nOkAiU3Vic2NyaWJlZCJdKTsKKyAgICBBU1NFUlRfVFJVRShoYXNQdXNoU3Vic2NyaXB0aW9u
KCkpOworCisgICAgbV9ub3RpZmljYXRpb25Qcm92aWRlci0+cmVzZXRQZXJtaXNzaW9uKG1fc2Vy
dmVyLT5vcmlnaW4oKSk7CisKKyAgICBib29sIGlzU3Vic2NyaWJlZCA9IHRydWU7CisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6d2FpdEZvckNvbmRpdGlvbldpdGhMb2dnaW5nKFt0aGlzLCAmaXNT
dWJzY3JpYmVkXSB7CisgICAgICAgIGlzU3Vic2NyaWJlZCA9IGhhc1B1c2hTdWJzY3JpcHRpb24o
KTsKKyAgICAgICAgaWYgKCFpc1N1YnNjcmliZWQpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KworICAgICAgICBzbGVlcCgxKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0sIDUsIEAi
VGltZWQgb3V0IHdhaXRpbmcgZm9yIHB1c2ggc3Vic2NyaXB0aW9uIHRvIGJlIHJlbW92ZWQuIik7
CisKKyAgICBBU1NFUlRfRkFMU0UoaXNTdWJzY3JpYmVkKTsKK30KKwogI2lmIEVOQUJMRShJTlNU
QUxMX0NPT1JESU5BVElPTl9CVU5ETEVTKQogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiBz
dGF0aWMgdm9pZCBkZWxldGVBbGxSZWdpc3RyYXRpb25zRm9yRGF0YVN0b3JlKFdLV2Vic2l0ZURh
dGFTdG9yZSAqZGF0YVN0b3JlKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDhkZTM0Nzc3OTliZTBlZmRlZDMwZTQ4Y2EyY2Ey
MTJkYjU1MDBlNzYuLjgxNTI2OTQ0MzUyMTM3ZmI1MzQxYThiMjYzZmYyNzgzNGRkZjQ4ZmIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMi0wMy0yMyAgQmVuIE5oYW0gIDxuaGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBSZW1vdmUgcHVzaCBzdWJzY3JpcHRpb25zIHdoZW4gcGVybWlzc2lvbnMg
YXJlIHJlc2V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzgwNjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBGaXggYW4gaXNzdWUgd2l0aCBhIGxheW91dCB0ZXN0IHRoYXQgZGlkbid0IHJlZ2lzdGVyIGZv
ciBub3RpZmljYXRpb24gcGVybWlzc2lvbnMuCisKKyAgICAgICAgKiBodHRwL3dwdC9zZXJ2aWNl
LXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctcHVzaC5odHRwcy5odG1sOgorCiAyMDIy
LTAzLTI5ICBUeWxlciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CiAKICAgICAgICAgQVg6
IERvbid0IGRldGFjaCBjaGlsZHJlbiBpbiBBWElzb2xhdGVkVHJlZTo6YXBwbHlQZW5kaW5nQ2hh
bmdlcyBmb3Igbm9kZXMgYmVpbmcgdXBkYXRlZCAocmVtb3ZlZCBhbmQgYWRkZWQpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIt
c3Bpbm5pbmctcHVzaC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13
b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2guaHR0cHMuaHRtbAppbmRleCBmZWM0
NTdjNzg0ZmZlNGViY2EyOTA3OTNmYWU5NDZhMmQ1MGY0ZGU2Li5mMzhkMGU0YmU2NWUwZWFkNzli
MzI2ZTFmMmRiZWRkYTE0ZTllM2M2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9z
ZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctcHVzaC5odHRwcy5odG1sCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1z
cGlubmluZy1wdXNoLmh0dHBzLmh0bWwKQEAgLTcsNiArNyw5IEBACiA8L2hlYWQ+CiA8Ym9keT4K
IDxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5ncmFudFdl
Yk5vdGlmaWNhdGlvblBlcm1pc3Npb24od2luZG93Lm9yaWdpbik7CisKIHByb21pc2VfdGVzdChh
c3luYyAodGVzdCkgPT4gewogICAgIGNvbnN0IHJlZ2lzdHJhdGlvbiA9IGF3YWl0IG5hdmlnYXRv
ci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCJzZXJ2aWNlLXdvcmtlci1zcGlubmluZy13b3JrZXIu
anMiLCB7IHNjb3BlIDogInNwaW4tcHVzaCIgfSk7CiAgICAgY29uc3Qgd29ya2VyID0gcmVnaXN0
cmF0aW9uLmluc3RhbGxpbmc7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456154</attachid>
            <date>2022-03-30 11:21:16 -0700</date>
            <delta_ts>2022-03-30 18:36:36 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-238068-20220330112116.patch</filename>
            <type>text/plain</type>
            <size>24583</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMDk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFiM2QzNjlkYmMyYWYwNjkx
M2EwZjkwYzM4NWQyMzMyYmVhM2MzNDIuLmU0ZmVlYTc3Yjk1MmNiNDUzMzBhMWFjZmY5N2Y1ODlk
YjVjOThhZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMjItMDMtMTggIEJlbiBOaGFt
ICA8bmhhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHB1c2ggc3Vic2NyaXB0aW9ucyB3
aGVuIHBlcm1pc3Npb25zIGFyZSByZXNldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MDY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZh
YmxldC4KKworICAgICAgICBXaGVuIHRoZSBub3RpZmljYXRpb24gcGVybWlzc2lvbiBmb3IgYW4g
b3JpZ2luIGlzIHJlc2V0IChpLmUuIGlzIGluIHRoZSBwcm9tcHQgc3RhdGUpLCB3ZQorICAgICAg
ICBzaG91bGQgZGVsZXRlIGFueSBwdXNoIHN1YnNjcmlwdGlvbnMgYXNzb2NpYXRlZCB3aXRoIHRo
YXQgb3JpZ2luLiBXZSBkbyB0aGlzIGJ5IGhhdmluZyB0aGUKKyAgICAgICAgcHJvdmlkZXJEaWRS
ZW1vdmVOb3RpZmljYXRpb25Qb2xpY2llcyBBUEkgY2FsbCBkZWxldGVQdXNoQW5kTm90aWZpY2F0
aW9uUmVnaXN0cmF0aW9uIGluCisgICAgICAgIHdlYnB1c2hkLgorCisgICAgICAgIFdlIGFsc28g
ZG8gdGhpcyB3aGVuIHByb2Nlc3NpbmcgYSBwdXNoIG1lc3NhZ2UsIHNpbmNlIGl0J3MgcG9zc2li
bGUgZm9yIHRoZSBzdGF0ZSB0byBnZXQgb3V0CisgICAgICAgIG9mIHN5bmMgZHVlIHRvIHRoZSBu
dW1iZXIgb2YgcHJvY2Vzc2VzIGludm9sdmVkLiBGb3IgaW5zdGFuY2UsIHJlbW92aW5nIHRoZSBw
b2xpY3kgZnJvbQorICAgICAgICBTeXN0ZW0gUHJlZmVyZW5jZXMgcmF0aGVyIHRoYW4gdGhlIGJy
b3dzZXIncyBub3RpZmljYXRpb24gcHJlZmVyZW5jZSBwYW5lIGNhbiByZXN1bHQgaW4gdGhlCisg
ICAgICAgIHByb3ZpZGVyRGlkUmVtb3ZlTm90aWZpY2F0aW9uUG9saWNpZXMgY2FsbCBpbiB0aGUg
YnJvd3NlciB0byBiZSBkZWxheWVkIG9yIGRyb3BwZWQuCisKKyAgICAgICAgTm90ZSB0aGF0IHdl
IGRvbid0IGRlbGV0ZSB0aGUgc3Vic2NyaXB0aW9uIGlmIHRoZSBwZXJtaXNzaW9uIGlzIHNpbXBs
eSB0b2dnbGVkIG9mZiAoaS5lLiB0aGUKKyAgICAgICAgcGVybWlzc2lvbiBpcyBpbiB0aGUgRGVu
aWVkIHN0YXRlKS4gSW4gdGhhdCBjYXNlLCB0aGUgdXNlciBjYW4gZWFzaWx5IHRvZ2dsZSB0aGUg
cGVybWlzc2lvbgorICAgICAgICBiYWNrIG9uLiBXZSB3YW50IHRoZSBzdWJzY3JpcHRpb24gb2Jq
ZWN0IHRvIHN0YXkgdGhlIHNhbWUgYWZ0ZXIgdGhlIHByZWZlcmVuY2UgaXMgdG9nZ2xlZAorICAg
ICAgICBiYWNrIG9uIHNvIHRoYXQgdGhlIHNlcnZlciBjYW4gc3RpbGwgc2VuZCBwdXNoZXMgdG8g
dGhhdCBwdXNoIGVuZHBvaW50LiBJbiBhIGZ1dHVyZSBwYXRjaAorICAgICAgICB3ZSdsbCBhZGQg
c3Vic2NyaXB0aW9ucyBpbiB0aGlzIHN0YXRlIHRvIHRoZSBpZ25vcmVkIHRvcGljcyBsaXN0IGlu
IHdlYnB1c2hkLCB3aGljaCB3aWxsCisgICAgICAgIHByZXZlbnQgcHVzaGVzIGZvciB0aG9zZSBz
dWJzY3JpcHRpb25zIGZyb20gYmVpbmcgZGVsaXZlcmVkIHRvIHRoZSBkZXZpY2Ugd2l0aG91dCBh
Y3R1YWxseQorICAgICAgICB1bnN1YnNjcmliaW5nLgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
cHJvY2Vzc1B1c2hNZXNzYWdlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzUHVzaE1lc3Nh
Z2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OnJlbW92ZVB1c2hTdWJzY3JpcHRpb25z
Rm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eTo6cHJvdmlkZXJEaWRSZW1vdmVOb3RpZmljYXRpb25Qb2xpY2llcyk6CisgICAgICAgICogd2Vi
cHVzaGQvV2ViUHVzaERhZW1vbi5tbToKKyAgICAgICAgKFdlYlB1c2hEOjpEYWVtb246OmRlbGV0
ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb24pOgorCiAyMDIyLTAzLTI5ICBEZXZpbiBS
b3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBTb3Vy
Y2VzOiBhbGxvdyBSZXNwb25zZSBMb2NhbCBPdmVycmlkZXMgdG8gbWFwIHRvIGEgZmlsZSBvbiBk
aXNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CmluZGV4IGU2NmM4NDczZDgyZTNhYzJjMDJlNDdmYmFkZjNiMDY5YWFkY2I0MTYuLjc2OGVkM2Zk
NjgwNmNkMTM4N2RhYzFkYjI4YjMzODA5NGQzZGMzMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0yMzAyLDExICsyMzAyLDI5IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OmdldFBlbmRpbmdQdXNoTWVzc2FnZXMoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBDb21wbGV0aW9uCiAgICAgICAgIExPRyhOb3RpZmljYXRpb25zLCAiTmV0
d29ya1Byb2Nlc3MgY291bGQgbm90IGZpbmQgc2Vzc2lvbiBmb3IgSUQgJWxsdSB0byBnZXQgcGVu
ZGluZyBwdXNoIG1lc3NhZ2VzIiwgc2Vzc2lvbklELnRvVUludDY0KCkpOwogfQogCi12b2lkIE5l
dHdvcmtQcm9jZXNzOjpwcm9jZXNzUHVzaE1lc3NhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBXZWJQdXNoTWVzc2FnZSYmIHB1c2hNZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNhbGxiYWNrKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1B1c2hNZXNzYWdl
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUHVzaE1lc3NhZ2UmJiBwdXNoTWVzc2FnZSwg
UHVzaFBlcm1pc3Npb25TdGF0ZSBwZXJtaXNzaW9uU3RhdGUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3Jr
U2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIExPRyhQdXNoLCAiTmV0d29ya2luZyBwcm9j
ZXNzIGhhbmRsaW5nIGEgcHVzaCBtZXNzYWdlIGZyb20gVUkgcHJvY2VzcyBpbiBzZXNzaW9uICVs
bHUiLCBzZXNzaW9uSUQudG9VSW50NjQoKSk7CiAgICAgICAgIGF1dG8gb3JpZ2luID0gU2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tVVJMKHB1c2hNZXNzYWdlLnJlZ2lzdHJhdGlvblVSTCk7CisKKyAg
ICAgICAgaWYgKHBlcm1pc3Npb25TdGF0ZSA9PSBQdXNoUGVybWlzc2lvblN0YXRlOjpQcm9tcHQp
IHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HKFB1c2gsICJQdXNoIG1lc3NhZ2UgZnJvbSAlIiBQ
UklWQVRFX0xPR19TVFJJTkcgIiB3b24ndCBiZSBwcm9jZXNzZWQgc2luY2UgcGVybWlzc2lvbiBp
cyBpbiB0aGUgcHJvbXB0IHN0YXRlOyByZW1vdmluZyBwdXNoIHN1YnNjcmlwdGlvbiIsIG9yaWdp
bi50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgc2Vzc2lvbi0+bm90aWZp
Y2F0aW9uTWFuYWdlcigpLnJlbW92ZVB1c2hTdWJzY3JpcHRpb25zRm9yT3JpZ2luKFNlY3VyaXR5
T3JpZ2luRGF0YSB7IG9yaWdpbiB9LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0
byYmKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAocGVybWlzc2lvblN0YXRlID09IFB1c2hQZXJtaXNzaW9u
U3RhdGU6OkRlbmllZCkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0coUHVzaCwgIlB1c2ggbWVz
c2FnZSBmcm9tICUiIFBSSVZBVEVfTE9HX1NUUklORyAiIHdvbid0IGJlIHByb2Nlc3NlZCBzaW5j
ZSBwZXJtaXNzaW9uIGlzIGluIHRoZSBkZW5pZWQgc3RhdGUiLCBvcmlnaW4udG9TdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBtb3ZlIHRvcGljIHRvIGlnbm9y
ZSBsaXN0IGluIHdlYnB1c2hkIGlmIHBlcm1pc3Npb24gaXMgZGVuaWVkLgorICAgICAgICAgICAg
Y2FsbGJhY2soZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgQVNTRVJUKHBlcm1pc3Npb25TdGF0ZSA9PSBQdXNoUGVybWlzc2lvblN0YXRlOjpHcmFudGVk
KTsKICAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2ZXIoKS5wcm9jZXNzUHVzaE1lc3NhZ2Uo
V1RGTW92ZShwdXNoTWVzc2FnZS5wdXNoRGF0YSksIFdURk1vdmUocHVzaE1lc3NhZ2UucmVnaXN0
cmF0aW9uVVJMKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBzZXNzaW9u
SUQsIG9yaWdpbiA9IFdURk1vdmUob3JpZ2luKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0oYm9vbCByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgTmV0d29ya1Nlc3Npb24qIHNl
c3Npb247CiAgICAgICAgICAgICBpZiAoIXJlc3VsdCAmJiAoc2Vzc2lvbiA9IG5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCkpKSB7CkBAIC0yMzI5LDcgKzIzNDcsNyBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpnZXRQZW5kaW5nUHVzaE1lc3NhZ2VzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFu
ZGxlcjx2bwogICAgIGNhbGxiYWNrKHsgfSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnBy
b2Nlc3NQdXNoTWVzc2FnZShQQUw6OlNlc3Npb25JRCwgV2ViUHVzaE1lc3NhZ2UmJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6
OnByb2Nlc3NQdXNoTWVzc2FnZShQQUw6OlNlc3Npb25JRCwgV2ViUHVzaE1lc3NhZ2UmJiwgUHVz
aFBlcm1pc3Npb25TdGF0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFj
aykKIHsKICAgICBjYWxsYmFjayhmYWxzZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggNmE5MDBmZDFiYjI5MzcwYzhjOTBmZjJiZmE5
YWIwZWMzZTZlOTRlZS4uNTEwMGRlYTNmMjA0OTViNGY1ODFlYjEwMTJlYjljOTE5MzcwYTcyNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAt
NDgsNiArNDgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0
cnkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUHVzaFBl
cm1pc3Npb25TdGF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4KQEAgLTM3Myw3ICszNzQsNyBAQCBwdWJsaWM6
CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBnZXRQZW5kaW5nUHVzaE1l
c3NhZ2VzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3Rv
cjxXZWJQdXNoTWVzc2FnZT4mKT4mJik7Ci0gICAgdm9pZCBwcm9jZXNzUHVzaE1lc3NhZ2UoUEFM
OjpTZXNzaW9uSUQsIFdlYlB1c2hNZXNzYWdlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpOworICAgIHZvaWQgcHJvY2Vzc1B1c2hNZXNzYWdlKFBBTDo6U2Vzc2lvbklELCBXZWJQ
dXNoTWVzc2FnZSYmLCBXZWJDb3JlOjpQdXNoUGVybWlzc2lvblN0YXRlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKTsKICNlbmRpZgogCiAgICAgdm9pZCBkZWxldGVQdXNoQW5kTm90
aWZpY2F0aW9uUmVnaXN0cmF0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLm1lc3NhZ2VzLmluCmluZGV4IGI1YTAzMjhiMGI0NDU3NjA5N2M4NzNjMGQ2NGJlMjE0YWE4
OGVhYmEuLmI4ZjQ4MzY3ZmI2ZDIxMjBjOWFmNjYxMzgzMGZmNDNjZmM1YmFiYzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNz
YWdlcy5pbgpAQCAtMjEyLDcgKzIxMiw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExl
Z2FjeVJlY2VpdmVyIHsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBHZXRQZW5k
aW5nUHVzaE1lc3NhZ2VzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKFZlY3RvcjxXZWJL
aXQ6OldlYlB1c2hNZXNzYWdlPiBtZXNzYWdlcykKLSAgICBQcm9jZXNzUHVzaE1lc3NhZ2UoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQdXNoTWVzc2FnZSBwdXNo
TWVzc2FnZSkgLT4gKGJvb2wgZGlkU3VjY2VlZCkKKyAgICBQcm9jZXNzUHVzaE1lc3NhZ2UoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQdXNoTWVzc2FnZSBwdXNo
TWVzc2FnZSwgZW51bTp1aW50OF90IFdlYkNvcmU6OlB1c2hQZXJtaXNzaW9uU3RhdGUgcHVzaFBl
cm1pc3Npb25TdGF0ZSkgLT4gKGJvb2wgZGlkU3VjY2VlZCkKICNlbmRpZgogICAgIERlbGV0ZVB1
c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBz
dHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIG9yaWdpbikgLT4gKFN0cmluZyBlcnJv
ck1lc3NhZ2UpCiAgICAgR2V0T3JpZ2luc1dpdGhQdXNoQW5kTm90aWZpY2F0aW9uUGVybWlzc2lv
bnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YT4gb3JpZ2lucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDI5YmE2ZTMxNDk2Y2NmMzlm
NzhiYjI4M2JmM2I2NGMyYWFlMmZhMzguLmU0YWZiNTlhYzUzMzMxM2IyNmU0YzBlNzFiY2Y5Y2Jh
MjRkZTY5MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtNTAsNiArNTAsNyBAQAogI2luY2x1ZGUgIlN0
b3JhZ2VBY2Nlc3NTdGF0dXMuaCIKICNpbmNsdWRlICJXZWJDb21waWxlZENvbnRlbnRSdWxlTGlz
dC5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eS5oIgorI2luY2x1ZGUgIldlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5o
IgpAQCAtNjIsNiArNjMsNyBAQAogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmVDbGllbnQuaCIK
ICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvQ2xpZW50T3JpZ2luLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QdXNoUGVybWlzc2lvblN0YXRl
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPHd0Zi9DYWxsYmFja0FnZ3JlZ2F0b3Iu
aD4KQEAgLTE3NjEsNyArMTc2MywxOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmdldFBl
bmRpbmdQdXNoTWVzc2FnZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbAogCiB2b2lk
IE5ldHdvcmtQcm9jZXNzUHJveHk6OnByb2Nlc3NQdXNoTWVzc2FnZShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFdlYlB1c2hNZXNzYWdlJiBwdXNoTWVzc2FnZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sIHdhc1Byb2Nlc3NlZCk+JiYgY2FsbGJhY2spCiB7Ci0gICAgc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UHJvY2Vzc1B1c2hNZXNzYWdl
IHsgc2Vzc2lvbklELCBwdXNoTWVzc2FnZSB9LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgYXV0
byBwZXJtaXNzaW9uID0gUHVzaFBlcm1pc3Npb25TdGF0ZTo6UHJvbXB0OworICAgIGF1dG8gcGVy
bWlzc2lvbnMgPSBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNoYXJlZFNlcnZpY2VXb3Jr
ZXJNYW5hZ2VyKCkubm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKTsKKyAgICBhdXRvIG9yaWdpbiA9
IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVVSTChwdXNoTWVzc2FnZS5yZWdpc3RyYXRpb25VUkwp
LnRvU3RyaW5nKCk7CisKKyAgICBpZiAoYXV0byBpdCA9IHBlcm1pc3Npb25zLmZpbmQob3JpZ2lu
KTsgaXQgIT0gcGVybWlzc2lvbnMuZW5kKCkpCisgICAgICAgIHBlcm1pc3Npb24gPSBpdC0+dmFs
dWUgPyBQdXNoUGVybWlzc2lvblN0YXRlOjpHcmFudGVkIDogUHVzaFBlcm1pc3Npb25TdGF0ZTo6
RGVuaWVkOworCisgICAgaWYgKHBlcm1pc3Npb24gPT0gUHVzaFBlcm1pc3Npb25TdGF0ZTo6RGVu
aWVkKSB7CisgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlByb2Nl
c3NQdXNoTWVzc2FnZSB7IHNlc3Npb25JRCwgcHVzaE1lc3NhZ2UsIHBlcm1pc3Npb24gfSwgV1RG
TW92ZShjYWxsYmFjaykpOwogfQogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZp
Y2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCmluZGV4IGIzYWM3MmI1ZjZj
YjgxOWZkOWEyYzA3NmIwZDY5MjYxY2JlNTE4MGEuLmM0N2M0YjIyMTk3Y2U5MjU2MzgwZDEwZWRh
NDg3YWE1NmVlMmY3ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlm
aWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5j
cHAKQEAgLTM0LDcgKzM0LDkgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgorI2luY2x1
ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05vdGlmaWNhdGlvbkRh
dGEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMjY3LDI1ICsyNjksNjkg
QEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkVXBkYXRlTm90
aWZpY2F0aW9uUG9saWN5KGNvbnN0IEFQSToKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9BbGxQ
cm9jZXNzZXMoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZFVwZGF0ZU5vdGlm
aWNhdGlvbkRlY2lzaW9uKG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKS50b1N0cmluZygpLCBhbGxv
d2VkKSk7CiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRp
ZFJlbW92ZU5vdGlmaWNhdGlvblBvbGljaWVzKEFQSTo6QXJyYXkqIG9yaWdpbnMpCitzdGF0aWMg
dm9pZCByZW1vdmVQdXNoU3Vic2NyaXB0aW9uc0Zvck9yaWdpbnMoY29uc3QgVmVjdG9yPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdpbnMpCiB7Ci0gICAgaWYgKCFwcm9jZXNzUG9v
bCgpKQorICAgIFJlZlB0cjxOZXR3b3JrUHJvY2Vzc1Byb3h5PiBuZXR3b3JrUHJvY2VzczsKKyAg
ICBhdXRvIHNlc3Npb25JRCA9IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCk7CisK
KyAgICBXZWJzaXRlRGF0YVN0b3JlOjpmb3JFYWNoV2Vic2l0ZURhdGFTdG9yZShbJm5ldHdvcmtQ
cm9jZXNzLCAmc2Vzc2lvbklEXShXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpIHsKKyAgICAg
ICAgaWYgKCFuZXR3b3JrUHJvY2VzcyAmJiBkYXRhU3RvcmUuaXNQZXJzaXN0ZW50KCkpIHsKKyAg
ICAgICAgICAgIG5ldHdvcmtQcm9jZXNzID0gJmRhdGFTdG9yZS5uZXR3b3JrUHJvY2VzcygpOwor
ICAgICAgICAgICAgc2Vzc2lvbklEID0gZGF0YVN0b3JlLnNlc3Npb25JRCgpOworICAgICAgICB9
CisgICAgfSk7CisKKyAgICBpZiAoIW5ldHdvcmtQcm9jZXNzKQogICAgICAgICByZXR1cm47CiAK
KyAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpCisgICAgICAgIG5ldHdvcmtQcm9jZXNz
LT5kZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKHNlc3Npb25JRCwgb3JpZ2lu
LCBbb3JpZ2luU3RyaW5nID0gb3JpZ2luLnRvU3RyaW5nKCldKGF1dG8mJikgeyB9KTsKK30KKwor
c3RhdGljIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IGFwaUFycmF5VG9TZWN1
cml0eU9yaWdpbnMoQVBJOjpBcnJheSogb3JpZ2lucykKK3sKKyAgICBpZiAoIW9yaWdpbnMpCisg
ICAgICAgIHJldHVybiB7IH07CisKKyAgICBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhPiBzZWN1cml0eU9yaWdpbnM7CiAgICAgc2l6ZV90IHNpemUgPSBvcmlnaW5zLT5zaXplKCk7
Ci0gICAgaWYgKCFzaXplKQotICAgICAgICByZXR1cm47Ci0gICAgCisgICAgc2VjdXJpdHlPcmln
aW5zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgc2VjdXJpdHlPcmlnaW5zLnVuY2hlY2tlZEFwcGVu
ZChvcmlnaW5zLT5hdDxBUEk6OlNlY3VyaXR5T3JpZ2luPihpKS0+c2VjdXJpdHlPcmlnaW4oKSk7
CisKKyAgICByZXR1cm4gc2VjdXJpdHlPcmlnaW5zOworfQorCitzdGF0aWMgVmVjdG9yPFN0cmlu
Zz4gYXBpQXJyYXlUb1NlY3VyaXR5T3JpZ2luU3RyaW5ncyhBUEk6OkFycmF5KiBvcmlnaW5zKQor
eworICAgIGlmICghb3JpZ2lucykKKyAgICAgICAgcmV0dXJuIHsgfTsKKwogICAgIFZlY3RvcjxT
dHJpbmc+IG9yaWdpblN0cmluZ3M7CisgICAgc2l6ZV90IHNpemUgPSBvcmlnaW5zLT5zaXplKCk7
CiAgICAgb3JpZ2luU3RyaW5ncy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOworCiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCiAgICAgICAgIG9yaWdpblN0cmluZ3Mu
dW5jaGVja2VkQXBwZW5kKG9yaWdpbnMtPmF0PEFQSTo6U2VjdXJpdHlPcmlnaW4+KGkpLT5zZWN1
cml0eU9yaWdpbigpLnRvU3RyaW5nKCkpOwogCi0gICAgV2ViUHJvY2Vzc1Bvb2w6OnNlbmRUb0Fs
bFJlbW90ZVdvcmtlclByb2Nlc3NlcyhNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6
RGlkUmVtb3ZlTm90aWZpY2F0aW9uRGVjaXNpb25zKG9yaWdpblN0cmluZ3MpKTsKKyAgICByZXR1
cm4gb3JpZ2luU3RyaW5nczsKK30KIAotICAgIGlmICghcHJvY2Vzc1Bvb2woKSkKK3ZvaWQgV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZFJlbW92ZU5vdGlmaWNhdGlvblBv
bGljaWVzKEFQSTo6QXJyYXkqIG9yaWdpbnMpCit7CisgICAgc2l6ZV90IHNpemUgPSBvcmlnaW5z
LT5zaXplKCk7CisgICAgaWYgKCFzaXplKQogICAgICAgICByZXR1cm47Ci0gICAgcHJvY2Vzc1Bv
b2woKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
OjpEaWRSZW1vdmVOb3RpZmljYXRpb25EZWNpc2lvbnMob3JpZ2luU3RyaW5ncykpOworCisgICAg
aWYgKHRoaXMgPT0gJnNoYXJlZFNlcnZpY2VXb3JrZXJNYW5hZ2VyKCkpIHsKKyAgICAgICAgcmVt
b3ZlUHVzaFN1YnNjcmlwdGlvbnNGb3JPcmlnaW5zKGFwaUFycmF5VG9TZWN1cml0eU9yaWdpbnMo
b3JpZ2lucykpOworICAgICAgICBXZWJQcm9jZXNzUG9vbDo6c2VuZFRvQWxsUmVtb3RlV29ya2Vy
UHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpEaWRSZW1vdmVOb3Rp
ZmljYXRpb25EZWNpc2lvbnMoYXBpQXJyYXlUb1NlY3VyaXR5T3JpZ2luU3RyaW5ncyhvcmlnaW5z
KSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHByb2Nlc3NQb29sKCkpCisg
ICAgICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViTm90
aWZpY2F0aW9uTWFuYWdlcjo6RGlkUmVtb3ZlTm90aWZpY2F0aW9uRGVjaXNpb25zKGFwaUFycmF5
VG9TZWN1cml0eU9yaWdpblN0cmluZ3Mob3JpZ2lucykpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24u
bW0gYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24ubW0KaW5kZXggY2JkMTI3
MDNiNTllY2Y1ZjI1MDdjODBkYWEwMDNiZmUyYzk3MzRlNC4uNmY5NmFlYjhhZWM2YTBlMTRkNDY3
ZTRmY2JiZjYwY2I5ZTI5Y2FiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9X
ZWJQdXNoRGFlbW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1v
bi5tbQpAQCAtNDk5LDcgKzQ5OSwxOCBAQCB2b2lkIERhZW1vbjo6ZGVsZXRlUHVzaEFuZE5vdGlm
aWNhdGlvblJlZ2lzdHJhdGlvbihDbGllbnRDb25uZWN0aW9uKiBjb25uZWN0aW9uLAogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgY29ubmVjdGlvbi0+ZW5xdWV1ZUFwcEJ1bmRsZVJlcXVl
c3QobWFrZVVuaXF1ZTxBcHBCdW5kbGVEZWxldGlvblJlcXVlc3Q+KCpjb25uZWN0aW9uLCBvcmln
aW5TdHJpbmcsIFdURk1vdmUocmVwbHlTZW5kZXIpKSk7CisgICAgY29ubmVjdGlvbi0+ZW5xdWV1
ZUFwcEJ1bmRsZVJlcXVlc3QobWFrZVVuaXF1ZTxBcHBCdW5kbGVEZWxldGlvblJlcXVlc3Q+KCpj
b25uZWN0aW9uLCBvcmlnaW5TdHJpbmcsIFt0aGlzLCBvcmlnaW5TdHJpbmcgPSBTdHJpbmcgeyBv
cmlnaW5TdHJpbmcgfSwgcmVwbHlTZW5kZXIgPSBXVEZNb3ZlKHJlcGx5U2VuZGVyKSwgYnVuZGxl
SWRlbnRpZmllciA9IGNvbm5lY3Rpb24tPmhvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIoKV0o
YXV0byByZXN1bHQpIG11dGFibGUgeworICAgICAgICBydW5BZnRlclN0YXJ0aW5nUHVzaFNlcnZp
Y2UoW3RoaXMsIGJ1bmRsZUlkZW50aWZpZXIgPSBXVEZNb3ZlKGJ1bmRsZUlkZW50aWZpZXIpLCBv
cmlnaW5TdHJpbmcgPSBXVEZNb3ZlKG9yaWdpblN0cmluZyksIHJlcGx5U2VuZGVyID0gV1RGTW92
ZShyZXBseVNlbmRlciksIHJlc3VsdF0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghbV9w
dXNoU2VydmljZSkgeworICAgICAgICAgICAgICAgIHJlcGx5U2VuZGVyKHJlc3VsdCk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtX3B1c2hT
ZXJ2aWNlLT5yZW1vdmVSZWNvcmRzRm9yQnVuZGxlSWRlbnRpZmllckFuZE9yaWdpbihidW5kbGVJ
ZGVudGlmaWVyLCBvcmlnaW5TdHJpbmcsIFtyZXBseVNlbmRlciA9IFdURk1vdmUocmVwbHlTZW5k
ZXIpLCByZXN1bHRdKGF1dG8mJikgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgcmVwbHlTZW5k
ZXIocmVzdWx0KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9KSk7CiB9CiAK
IHZvaWQgRGFlbW9uOjpzZXREZWJ1Z01vZGVJc0VuYWJsZWQoQ2xpZW50Q29ubmVjdGlvbiogY2xp
ZW50Q29ubmVjdGlvbiwgYm9vbCBlbmFibGVkKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDcxNzllOTM3YzNkMGExOTBkZTZiMDBiMzliNThmNjQy
ODA5YzEwMmIuLmI2NDMxYWRkYjhkMTc0ZWJjNzQ1YjgxNzY4ZThmYWI2YTA2MjViYmQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NCBAQAorMjAyMi0wMy0xOCAgQmVuIE5oYW0gIDxuaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZW1vdmUgcHVzaCBzdWJzY3JpcHRpb25zIHdoZW4gcGVybWlzc2lvbnMgYXJlIHJlc2V0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgwNjgKKworICAg
ICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIEFkZCBhIHRlc3QgdG8g
bWFrZSBzdXJlIHB1c2ggc3Vic2NyaXB0aW9ucyBhcmUgcmVtb3ZlZCB3aGVuIHRoZSBub3RpZmlj
YXRpb24gcG9saWN5IGZvciBhCisgICAgICAgIHdlYnNpdGUgaXMgcmVzZXQuCisKKyAgICAgICAg
QWxzbyBmaXhlZCBhbiBpc3N1ZSB3aXRoIGEgUHVzaEFQSSB0ZXN0IHRoYXQgZGlkbid0IHByb3Bl
cmx5IHJlZ2lzdGVyIGZvciBub3RpZmljYXRpb24gcGVybWlzc2lvbnMuCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3ROb3RpZmljYXRpb25Qcm92aWRlci5jcHA6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXI6OlRlc3ROb3RpZmljYXRpb25Qcm92
aWRlcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXI6
Om5vdGlmaWNhdGlvblBlcm1pc3Npb25zIGNvbnN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRlc3ROb3RpZmljYXRpb25Qcm92aWRlcjo6c2V0UGVybWlzc2lvbik6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXI6OnJlc2V0UGVybWlzc2lvbik6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuaDoKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1B1c2hBUEkubW06CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNoRGFlbW9uLm1tOgorCiAy
MDIyLTAzLTI5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgRG9uJ3QgY3JlYXRlIGRpcmVjdG9yaWVzIG9uIGlPUyBpZiB3ZSBhcmUgb25seSB1
c2luZyBlcGhlbWVyYWwgc3RvcmFnZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdE5v
dGlmaWNhdGlvblByb3ZpZGVyLmNwcAppbmRleCAwODBmMDZhOThjYzkxNTVlNGViOWVmMjRiMDU4
Njc5ODg5NmMzZmFmLi5lYjM4Njk4MmFlZmRiYzhhNTNhNDRiNTMxNDc4MTAzNzc0OWU0NDRkIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3ROb3RpZmljYXRpb25Qcm92aWRlci5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuY3Bw
CkBAIC0yNyw2ICsyNyw4IEBACiAjaW5jbHVkZSAiVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyLmgi
CiAKICNpbmNsdWRlICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIKKyNpbmNsdWRlIDxXZWJLaXQvV0tB
cnJheS5oPgorI2luY2x1ZGUgPFdlYktpdC9XS011dGFibGVEaWN0aW9uYXJ5Lmg+CiAjaW5jbHVk
ZSA8V2ViS2l0L1dLTm90aWZpY2F0aW9uTWFuYWdlci5oPgogI2luY2x1ZGUgPFdlYktpdC9XS051
bWJlci5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1NlY3VyaXR5T3JpZ2luUmVmLmg+CkBAIC00Miw3
ICs0NCw2IEBAIHN0YXRpYyBXS0RpY3Rpb25hcnlSZWYgbm90aWZpY2F0aW9uUGVybWlzc2lvbnMo
Y29uc3Qgdm9pZCogY2xpZW50SW5mbykKIAogVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyOjpUZXN0
Tm90aWZpY2F0aW9uUHJvdmlkZXIoVmVjdG9yPFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZj4mJiBt
YW5hZ2VycykKICAgICA6IG1fbWFuYWdlcnMoV1RGTW92ZShtYW5hZ2VycykpCi0gICAgLCBtX3Bl
cm1pc3Npb25zKGFkb3B0V0soV0tNdXRhYmxlRGljdGlvbmFyeUNyZWF0ZSgpKSkKIHsKICAgICBt
X3Byb3ZpZGVyID0gewogICAgICAgICB7IDAsIHRoaXMgfSwKQEAgLTY3LDE5ICs2OCwzOSBAQCBU
ZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXI6On5UZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIoKQogCiBX
S0RpY3Rpb25hcnlSZWYgVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyOjpub3RpZmljYXRpb25QZXJt
aXNzaW9ucygpIGNvbnN0CiB7Ci0gICAgV0tSZXRhaW4obV9wZXJtaXNzaW9ucy5nZXQoKSk7Ci0g
ICAgcmV0dXJuIG1fcGVybWlzc2lvbnMuZ2V0KCk7CisgICAgYXV0byBwZXJtaXNzaW9ucyA9IFdL
TXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKTsKKworICAgIGZvciAoYXV0byYgW29yaWdpbiwgYWxs
b3dlZF0gOiBtX3Blcm1pc3Npb25zKSB7CisgICAgICAgIGF1dG8gd2tPcmlnaW5TdHJpbmcgPSBh
ZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKG9yaWdpbi51dGY4KCkuZGF0YSgp
KSk7CisgICAgICAgIGF1dG8gd2tBbGxvd2VkID0gYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoYWxs
b3dlZCkpOworICAgICAgICBXS0RpY3Rpb25hcnlTZXRJdGVtKHBlcm1pc3Npb25zLCB3a09yaWdp
blN0cmluZy5nZXQoKSwgd2tBbGxvd2VkLmdldCgpKTsKKyAgICB9CisKKyAgICByZXR1cm4gcGVy
bWlzc2lvbnM7CiB9CiAKIHZvaWQgVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyOjpzZXRQZXJtaXNz
aW9uKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBib29sIGFsbG93ZWQpCiB7Ci0gICAgYXV0byB3a0Fs
bG93ZWQgPSBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShhbGxvd2VkKSk7Ci0gICAgYXV0byB3a09y
aWdpblN0cmluZyA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcob3JpZ2lu
LnV0ZjgoKS5kYXRhKCkpKTsKLSAgICBXS0RpY3Rpb25hcnlTZXRJdGVtKG1fcGVybWlzc2lvbnMu
Z2V0KCksIHdrT3JpZ2luU3RyaW5nLmdldCgpLCB3a0FsbG93ZWQuZ2V0KCkpOworICAgIG1fcGVy
bWlzc2lvbnMuc2V0KG9yaWdpbiwgYWxsb3dlZCk7CiAKKyAgICBhdXRvIHdrT3JpZ2luU3RyaW5n
ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhvcmlnaW4udXRmOCgpLmRh
dGEoKSkpOwogICAgIGF1dG8gd2tPcmlnaW4gPSBhZG9wdFdLKFdLU2VjdXJpdHlPcmlnaW5DcmVh
dGVGcm9tU3RyaW5nKHdrT3JpZ2luU3RyaW5nLmdldCgpKSk7CisKICAgICBmb3IgKGF1dG8mIG1h
bmFnZXIgOiBtX21hbmFnZXJzKQogICAgICAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRl
ckRpZFVwZGF0ZU5vdGlmaWNhdGlvblBvbGljeShtYW5hZ2VyLCB3a09yaWdpbi5nZXQoKSwgYWxs
b3dlZCk7CiB9CiAKK3ZvaWQgVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyOjpyZXNldFBlcm1pc3Np
b24oY29uc3QgU3RyaW5nJiBvcmlnaW4pCit7CisgICAgbV9wZXJtaXNzaW9ucy5yZW1vdmUob3Jp
Z2luKTsKKworICAgIGF1dG8gd2tPcmlnaW5TdHJpbmcgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKG9yaWdpbi51dGY4KCkuZGF0YSgpKSk7CisgICAgYXV0byB3a09yaWdp
biA9IGFkb3B0V0soV0tTZWN1cml0eU9yaWdpbkNyZWF0ZUZyb21TdHJpbmcod2tPcmlnaW5TdHJp
bmcuZ2V0KCkpKTsKKyAgICBhdXRvIHdrT3JpZ2luVHlwZVJlZiA9IHN0YXRpY19jYXN0PFdLVHlw
ZVJlZj4od2tPcmlnaW4uZ2V0KCkpOworICAgIGF1dG8gd2tPcmlnaW5BcnJheSA9IGFkb3B0V0so
V0tBcnJheUNyZWF0ZSgmd2tPcmlnaW5UeXBlUmVmLCAxKSk7CisKKyAgICBmb3IgKGF1dG8mIG1h
bmFnZXIgOiBtX21hbmFnZXJzKQorICAgICAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRl
ckRpZFJlbW92ZU5vdGlmaWNhdGlvblBvbGljaWVzKG1hbmFnZXIsIHdrT3JpZ2luQXJyYXkuZ2V0
KCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3ROb3RpZmljYXRpb25Qcm92aWRlci5oIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuaAppbmRleCBiZTA0OGJmOWEyZDgzZDhl
NDJkNTg2YzE2YTEyZTFlZDM2MTQzMTBjLi5lNDg1ZWRhYjExMzVhN2RlNjY5Nzg2MWRjZTNjMzQ2
MTc4YzdjYWUzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3ROb3RpZmljYXRp
b25Qcm92aWRlci5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdE5vdGlmaWNhdGlvblBy
b3ZpZGVyLmgKQEAgLTI1LDExICsyNSwxMSBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUg
PFdlYktpdC9XS011dGFibGVEaWN0aW9uYXJ5Lmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLTm90aWZp
Y2F0aW9uTWFuYWdlci5oPgogI2luY2x1ZGUgPFdlYktpdC9XS05vdGlmaWNhdGlvblByb3ZpZGVy
Lmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RN
YWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewpAQCAtNDIsMTAgKzQyLDExIEBAIHB1Ymxp
YzoKIAogICAgIFdLRGljdGlvbmFyeVJlZiBub3RpZmljYXRpb25QZXJtaXNzaW9ucygpIGNvbnN0
OwogICAgIHZvaWQgc2V0UGVybWlzc2lvbihjb25zdCBTdHJpbmcmIG9yaWdpbiwgYm9vbCBhbGxv
d2VkKTsKKyAgICB2b2lkIHJlc2V0UGVybWlzc2lvbihjb25zdCBTdHJpbmcmIG9yaWdpbik7CiAK
IHByaXZhdGU6CiAgICAgVmVjdG9yPFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZj4gbV9tYW5hZ2Vy
czsKLSAgICBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiBtX3Blcm1pc3Npb25z
OworICAgIEhhc2hNYXA8U3RyaW5nLCBib29sPiBtX3Blcm1pc3Npb25zOwogICAgIFdLTm90aWZp
Y2F0aW9uUHJvdmlkZXJWMCBtX3Byb3ZpZGVyOwogfTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QdXNoQVBJLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QdXNoQVBJLm1tCmluZGV4IDJkOTEzZGMyNTk4NDNhNzBj
NDQyNTYwOTZmMDQxMmEzZjM1NWJiZTAuLjIxNDJkMjdhZjBkZDUzZDU4ODI2NzU0NjM4ZDRiNWYy
ZDYwNTQyMWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvUHVzaEFQSS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1B1c2hBUEkubW0KQEAgLTMzNiw2ICszMzYsOSBAQCBURVNUKFB1c2hBUEksIGZpcmVQdXNoRXZl
bnRXaXRoTm9QYWdlc1RpbWVvdXQpCiAgICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0
YVN0b3JlID0gZGF0YVN0b3JlLmdldCgpOwogICAgIGNsZWFyV2Vic2l0ZURhdGFTdG9yZShbY29u
ZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXSk7CiAKKyAgICBhdXRvIHByb3ZpZGVyID0gVGVz
dFdlYktpdEFQSTo6VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyKHsgW1tjb25maWd1cmF0aW9uIHBy
b2Nlc3NQb29sXSBfbm90aWZpY2F0aW9uTWFuYWdlckZvclRlc3RpbmddLCBXS05vdGlmaWNhdGlv
bk1hbmFnZXJHZXRTaGFyZWRTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uTWFuYWdlcigpIH0pOwor
ICAgIHByb3ZpZGVyLnNldFBlcm1pc3Npb24oc2VydmVyLm9yaWdpbigpLCB0cnVlKTsKKwogICAg
IGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbUHVzaEFQSU1lc3NhZ2VIYW5kbGVyV2l0
aEV4cGVjdGVkTWVzc2FnZSBhbGxvY10gaW5pdF0pOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2Vy
Q29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVy
LmdldCgpIG5hbWU6QCJzdyJdOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24ubW0KaW5kZXggOTdhNWJkYTc2OWNlZWUwZGQz
YzU2MjhlNzM0MjA5ZTA4MDEyMjRkOS4uYTQ0MzJjOTQ3OWVhZjA5N2I0NDdjNjE0OGUxMjE2YTRl
ZDNkOWZlNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9XZWJQdXNoRGFlbW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV2ViUHVzaERhZW1vbi5tbQpAQCAtODY5LDYgKzg2OSw1NiBAQCBURVNUX0YoV2ViUHVz
aERUZXN0LCBVbnN1YnNjcmliZXNPbkNsZWFyaW5nV2Vic2l0ZURhdGFGb3JPcmlnaW4pCiAgICAg
QVNTRVJUX0ZBTFNFKGhhc1B1c2hTdWJzY3JpcHRpb24oKSk7CiB9CiAKK1RFU1RfRihXZWJQdXNo
RFRlc3QsIFVuc3Vic2NyaWJlc09uUGVybWlzc2lvblJlc2V0KQoreworICAgIHN0YXRpYyBjb25z
dCBjaGFyKiBzb3VyY2UgPSBSIkhUTUwoCisgICAgPHNjcmlwdCBzcmM9Ii9jb25zdGFudHMuanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVn
aXN0ZXIoJy9zdy5qcycpLnRoZW4oYXN5bmMgKCkgPT4geworICAgICAgICBjb25zdCByZWdpc3Ry
YXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWFkeTsKKyAgICAgICAgbGV0
IHJlc3VsdCA9IG51bGw7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBsZXQgc3Vic2NyaXB0
aW9uID0gYXdhaXQgcmVnaXN0cmF0aW9uLnB1c2hNYW5hZ2VyLnN1YnNjcmliZSh7CisgICAgICAg
ICAgICAgICAgdXNlclZpc2libGVPbmx5OiB0cnVlLAorICAgICAgICAgICAgICAgIGFwcGxpY2F0
aW9uU2VydmVyS2V5OiBWQUxJRF9TRVJWRVJfS0VZCisgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgIHJlc3VsdCA9ICJTdWJzY3JpYmVkIjsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAg
ICAgICAgcmVzdWx0ID0gIkVycm9yOiAiICsgZTsKKyAgICAgICAgfQorICAgICAgICB3aW5kb3cu
d2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5ub3RlLnBvc3RNZXNzYWdlKHJlc3VsdCk7CisgICAgfSk7
CisgICAgPC9zY3JpcHQ+CisgICAgKUhUTUwiOworCisgICAgX19ibG9jayBSZXRhaW5QdHI8aWQ+
IHJlc3VsdCA9IG5pbDsKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIFttX25v
dGlmaWNhdGlvbk1lc3NhZ2VIYW5kbGVyIHNldE1lc3NhZ2VIYW5kbGVyOl4oaWQgbWVzc2FnZSkg
eworICAgICAgICByZXN1bHQgPSBtZXNzYWdlOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9
XTsKKworICAgIGxvYWRSZXF1ZXN0KHNvdXJjZSwgIiIpOworICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmZG9uZSk7CisKKyAgICBBU1NFUlRfVFJVRShbcmVzdWx0IGlzRXF1YWxUb1N0cmlu
ZzpAIlN1YnNjcmliZWQiXSk7CisgICAgQVNTRVJUX1RSVUUoaGFzUHVzaFN1YnNjcmlwdGlvbigp
KTsKKworICAgIG1fbm90aWZpY2F0aW9uUHJvdmlkZXItPnJlc2V0UGVybWlzc2lvbihtX3NlcnZl
ci0+b3JpZ2luKCkpOworCisgICAgYm9vbCBpc1N1YnNjcmliZWQgPSB0cnVlOworICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OndhaXRGb3JDb25kaXRpb25XaXRoTG9nZ2luZyhbdGhpcywgJmlzU3Vi
c2NyaWJlZF0geworICAgICAgICBpc1N1YnNjcmliZWQgPSBoYXNQdXNoU3Vic2NyaXB0aW9uKCk7
CisgICAgICAgIGlmICghaXNTdWJzY3JpYmVkKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICAgICAgc2xlZXAoMSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9LCA1LCBAIlRp
bWVkIG91dCB3YWl0aW5nIGZvciBwdXNoIHN1YnNjcmlwdGlvbiB0byBiZSByZW1vdmVkLiIpOwor
CisgICAgQVNTRVJUX0ZBTFNFKGlzU3Vic2NyaWJlZCk7Cit9CisKICNpZiBFTkFCTEUoSU5TVEFM
TF9DT09SRElOQVRJT05fQlVORExFUykKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogc3Rh
dGljIHZvaWQgZGVsZXRlQWxsUmVnaXN0cmF0aW9uc0ZvckRhdGFTdG9yZShXS1dlYnNpdGVEYXRh
U3RvcmUgKmRhdGFTdG9yZSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4ZGUzNDc3Nzk5YmUwZWZkZWQzMGU0OGNhMmNhMjEy
ZGI1NTAwZTc2Li5lY2Q4YjdlYjMzZTcyMzc1YzNlYjE4OTM1MjIxZDIzZTQ3MGVlN2U3IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTQgQEAKKzIwMjItMDMtMjMgIEJlbiBOaGFtICA8bmhhbUBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVtb3ZlIHB1c2ggc3Vic2NyaXB0aW9ucyB3aGVuIHBlcm1pc3Npb25zIGFy
ZSByZXNldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM4MDY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBG
aXggYW4gaXNzdWUgd2l0aCBhIGxheW91dCB0ZXN0IHRoYXQgZGlkbid0IHJlZ2lzdGVyIGZvciBu
b3RpZmljYXRpb24gcGVybWlzc2lvbnMuCisKKyAgICAgICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdv
cmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctcHVzaC5odHRwcy5odG1sOgorCiAyMDIyLTAz
LTI5ICBUeWxlciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IERv
bid0IGRldGFjaCBjaGlsZHJlbiBpbiBBWElzb2xhdGVkVHJlZTo6YXBwbHlQZW5kaW5nQ2hhbmdl
cyBmb3Igbm9kZXMgYmVpbmcgdXBkYXRlZCAocmVtb3ZlZCBhbmQgYWRkZWQpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bp
bm5pbmctcHVzaC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3Jr
ZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2guaHR0cHMuaHRtbAppbmRleCBmZWM0NTdj
Nzg0ZmZlNGViY2EyOTA3OTNmYWU5NDZhMmQ1MGY0ZGU2Li5mMzhkMGU0YmU2NWUwZWFkNzliMzI2
ZTFmMmRiZWRkYTE0ZTllM2M2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2
aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctcHVzaC5odHRwcy5odG1sCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlu
bmluZy1wdXNoLmh0dHBzLmh0bWwKQEAgLTcsNiArNyw5IEBACiA8L2hlYWQ+CiA8Ym9keT4KIDxz
Y3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5ncmFudFdlYk5v
dGlmaWNhdGlvblBlcm1pc3Npb24od2luZG93Lm9yaWdpbik7CisKIHByb21pc2VfdGVzdChhc3lu
YyAodGVzdCkgPT4gewogICAgIGNvbnN0IHJlZ2lzdHJhdGlvbiA9IGF3YWl0IG5hdmlnYXRvci5z
ZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCJzZXJ2aWNlLXdvcmtlci1zcGlubmluZy13b3JrZXIuanMi
LCB7IHNjb3BlIDogInNwaW4tcHVzaCIgfSk7CiAgICAgY29uc3Qgd29ya2VyID0gcmVnaXN0cmF0
aW9uLmluc3RhbGxpbmc7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456192</attachid>
            <date>2022-03-30 18:36:38 -0700</date>
            <delta_ts>2022-03-31 08:09:29 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-238068-20220330183637.patch</filename>
            <type>text/plain</type>
            <size>24586</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDVkMTJhMWYzZjAwMGRmZDY3
YzA5ODk2Y2RmY2M4YWY3MjFkZTBjZDIuLjQyOGJkYWUwOGYyYjkyZmRkODk4Y2IyY2FhM2RmOTZi
OWMxNTAzZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMjItMDMtMTggIEJlbiBOaGFt
ICA8bmhhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHB1c2ggc3Vic2NyaXB0aW9ucyB3
aGVuIHBlcm1pc3Npb25zIGFyZSByZXNldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MDY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZh
YmxldC4KKworICAgICAgICBXaGVuIHRoZSBub3RpZmljYXRpb24gcGVybWlzc2lvbiBmb3IgYW4g
b3JpZ2luIGlzIHJlc2V0IChpLmUuIGlzIGluIHRoZSBwcm9tcHQgc3RhdGUpLCB3ZQorICAgICAg
ICBzaG91bGQgZGVsZXRlIGFueSBwdXNoIHN1YnNjcmlwdGlvbnMgYXNzb2NpYXRlZCB3aXRoIHRo
YXQgb3JpZ2luLiBXZSBkbyB0aGlzIGJ5IGhhdmluZyB0aGUKKyAgICAgICAgcHJvdmlkZXJEaWRS
ZW1vdmVOb3RpZmljYXRpb25Qb2xpY2llcyBBUEkgY2FsbCBkZWxldGVQdXNoQW5kTm90aWZpY2F0
aW9uUmVnaXN0cmF0aW9uIGluCisgICAgICAgIHdlYnB1c2hkLgorCisgICAgICAgIFdlIGFsc28g
ZG8gdGhpcyB3aGVuIHByb2Nlc3NpbmcgYSBwdXNoIG1lc3NhZ2UsIHNpbmNlIGl0J3MgcG9zc2li
bGUgZm9yIHRoZSBzdGF0ZSB0byBnZXQgb3V0CisgICAgICAgIG9mIHN5bmMgZHVlIHRvIHRoZSBu
dW1iZXIgb2YgcHJvY2Vzc2VzIGludm9sdmVkLiBGb3IgaW5zdGFuY2UsIHJlbW92aW5nIHRoZSBw
b2xpY3kgZnJvbQorICAgICAgICBTeXN0ZW0gUHJlZmVyZW5jZXMgcmF0aGVyIHRoYW4gdGhlIGJy
b3dzZXIncyBub3RpZmljYXRpb24gcHJlZmVyZW5jZSBwYW5lIGNhbiByZXN1bHQgaW4gdGhlCisg
ICAgICAgIHByb3ZpZGVyRGlkUmVtb3ZlTm90aWZpY2F0aW9uUG9saWNpZXMgY2FsbCBpbiB0aGUg
YnJvd3NlciB0byBiZSBkZWxheWVkIG9yIGRyb3BwZWQuCisKKyAgICAgICAgTm90ZSB0aGF0IHdl
IGRvbid0IGRlbGV0ZSB0aGUgc3Vic2NyaXB0aW9uIGlmIHRoZSBwZXJtaXNzaW9uIGlzIHNpbXBs
eSB0b2dnbGVkIG9mZiAoaS5lLiB0aGUKKyAgICAgICAgcGVybWlzc2lvbiBpcyBpbiB0aGUgRGVu
aWVkIHN0YXRlKS4gSW4gdGhhdCBjYXNlLCB0aGUgdXNlciBjYW4gZWFzaWx5IHRvZ2dsZSB0aGUg
cGVybWlzc2lvbgorICAgICAgICBiYWNrIG9uLiBXZSB3YW50IHRoZSBzdWJzY3JpcHRpb24gb2Jq
ZWN0IHRvIHN0YXkgdGhlIHNhbWUgYWZ0ZXIgdGhlIHByZWZlcmVuY2UgaXMgdG9nZ2xlZAorICAg
ICAgICBiYWNrIG9uIHNvIHRoYXQgdGhlIHNlcnZlciBjYW4gc3RpbGwgc2VuZCBwdXNoZXMgdG8g
dGhhdCBwdXNoIGVuZHBvaW50LiBJbiBhIGZ1dHVyZSBwYXRjaAorICAgICAgICB3ZSdsbCBhZGQg
c3Vic2NyaXB0aW9ucyBpbiB0aGlzIHN0YXRlIHRvIHRoZSBpZ25vcmVkIHRvcGljcyBsaXN0IGlu
IHdlYnB1c2hkLCB3aGljaCB3aWxsCisgICAgICAgIHByZXZlbnQgcHVzaGVzIGZvciB0aG9zZSBz
dWJzY3JpcHRpb25zIGZyb20gYmVpbmcgZGVsaXZlcmVkIHRvIHRoZSBkZXZpY2Ugd2l0aG91dCBh
Y3R1YWxseQorICAgICAgICB1bnN1YnNjcmliaW5nLgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
cHJvY2Vzc1B1c2hNZXNzYWdlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzUHVzaE1lc3Nh
Z2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OnJlbW92ZVB1c2hTdWJzY3JpcHRpb25z
Rm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eTo6cHJvdmlkZXJEaWRSZW1vdmVOb3RpZmljYXRpb25Qb2xpY2llcyk6CisgICAgICAgICogd2Vi
cHVzaGQvV2ViUHVzaERhZW1vbi5tbToKKyAgICAgICAgKFdlYlB1c2hEOjpEYWVtb246OmRlbGV0
ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb24pOgorCiAyMDIyLTAzLTMwICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIGRpc3BhdGNoX3NvdXJjZV9j
cmVhdGUoRElTUEFUQ0hfU09VUkNFX1RZUEVfU0lHTkFMLCBTSUdURVJNKSBpbiBzZXRPU1RyYW5z
YWN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAKaW5kZXggNzg4ZWRjZTY5MGJjOGRkMDFmNTNlN2YzZmNkMGQ5ZDQzNGVlMDE5Ni4uNGFh
NjNkYzBlMzg0YTlmNmIyOTVhMThkNjM5MWRhMmVlZTljODBmYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTIzMDksMTEgKzIzMDks
MjkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Z2V0UGVuZGluZ1B1c2hNZXNzYWdlcyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb24KICAgICAgICAgTE9HKE5vdGlmaWNhdGlvbnMs
ICJOZXR3b3JrUHJvY2VzcyBjb3VsZCBub3QgZmluZCBzZXNzaW9uIGZvciBJRCAlbGx1IHRvIGdl
dCBwZW5kaW5nIHB1c2ggbWVzc2FnZXMiLCBzZXNzaW9uSUQudG9VSW50NjQoKSk7CiB9CiAKLXZv
aWQgTmV0d29ya1Byb2Nlc3M6OnByb2Nlc3NQdXNoTWVzc2FnZShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFdlYlB1c2hNZXNzYWdlJiYgcHVzaE1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY2FsbGJhY2spCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzUHVzaE1l
c3NhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQdXNoTWVzc2FnZSYmIHB1c2hNZXNz
YWdlLCBQdXNoUGVybWlzc2lvblN0YXRlIHBlcm1pc3Npb25TdGF0ZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5l
dHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgTE9HKFB1c2gsICJOZXR3b3JraW5n
IHByb2Nlc3MgaGFuZGxpbmcgYSBwdXNoIG1lc3NhZ2UgZnJvbSBVSSBwcm9jZXNzIGluIHNlc3Np
b24gJWxsdSIsIHNlc3Npb25JRC50b1VJbnQ2NCgpKTsKICAgICAgICAgYXV0byBvcmlnaW4gPSBT
ZWN1cml0eU9yaWdpbkRhdGE6OmZyb21VUkwocHVzaE1lc3NhZ2UucmVnaXN0cmF0aW9uVVJMKTsK
KworICAgICAgICBpZiAocGVybWlzc2lvblN0YXRlID09IFB1c2hQZXJtaXNzaW9uU3RhdGU6OlBy
b21wdCkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0coUHVzaCwgIlB1c2ggbWVzc2FnZSBmcm9t
ICUiIFBSSVZBVEVfTE9HX1NUUklORyAiIHdvbid0IGJlIHByb2Nlc3NlZCBzaW5jZSBwZXJtaXNz
aW9uIGlzIGluIHRoZSBwcm9tcHQgc3RhdGU7IHJlbW92aW5nIHB1c2ggc3Vic2NyaXB0aW9uIiwg
b3JpZ2luLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBzZXNzaW9uLT5u
b3RpZmljYXRpb25NYW5hZ2VyKCkucmVtb3ZlUHVzaFN1YnNjcmlwdGlvbnNGb3JPcmlnaW4oU2Vj
dXJpdHlPcmlnaW5EYXRhIHsgb3JpZ2luIH0sIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XShhdXRvJiYpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChwZXJtaXNzaW9uU3RhdGUgPT0gUHVzaFBlcm1p
c3Npb25TdGF0ZTo6RGVuaWVkKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPRyhQdXNoLCAiUHVz
aCBtZXNzYWdlIGZyb20gJSIgUFJJVkFURV9MT0dfU1RSSU5HICIgd29uJ3QgYmUgcHJvY2Vzc2Vk
IHNpbmNlIHBlcm1pc3Npb24gaXMgaW4gdGhlIGRlbmllZCBzdGF0ZSIsIG9yaWdpbi50b1N0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgLy8gRklYTUU6IG1vdmUgdG9waWMgdG8g
aWdub3JlIGxpc3QgaW4gd2VicHVzaGQgaWYgcGVybWlzc2lvbiBpcyBkZW5pZWQuCisgICAgICAg
ICAgICBjYWxsYmFjayhmYWxzZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBBU1NFUlQocGVybWlzc2lvblN0YXRlID09IFB1c2hQZXJtaXNzaW9uU3RhdGU6Okdy
YW50ZWQpOwogICAgICAgICBzZXNzaW9uLT5lbnN1cmVTV1NlcnZlcigpLnByb2Nlc3NQdXNoTWVz
c2FnZShXVEZNb3ZlKHB1c2hNZXNzYWdlLnB1c2hEYXRhKSwgV1RGTW92ZShwdXNoTWVzc2FnZS5y
ZWdpc3RyYXRpb25VUkwpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHNl
c3Npb25JRCwgb3JpZ2luID0gV1RGTW92ZShvcmlnaW4pLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spXShib29sIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBOZXR3b3JrU2Vzc2lv
biogc2Vzc2lvbjsKICAgICAgICAgICAgIGlmICghcmVzdWx0ICYmIChzZXNzaW9uID0gbmV0d29y
a1Nlc3Npb24oc2Vzc2lvbklEKSkpIHsKQEAgLTIzMzYsNyArMjM1NCw3IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OmdldFBlbmRpbmdQdXNoTWVzc2FnZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvCiAgICAgY2FsbGJhY2soeyB9KTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vz
czo6cHJvY2Vzc1B1c2hNZXNzYWdlKFBBTDo6U2Vzc2lvbklELCBXZWJQdXNoTWVzc2FnZSYmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQordm9pZCBOZXR3b3JrUHJv
Y2Vzczo6cHJvY2Vzc1B1c2hNZXNzYWdlKFBBTDo6U2Vzc2lvbklELCBXZWJQdXNoTWVzc2FnZSYm
LCBQdXNoUGVybWlzc2lvblN0YXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNh
bGxiYWNrKQogewogICAgIGNhbGxiYWNrKGZhbHNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCBhMjY4ZDhmZTQxNTI4OTk0ZWRlNzBk
ZmRjNWVkZmM2MjM5MzFkNzA3Li44ZTkyZmMyYzEzNTcxNGExNmRmYmM2MzVjNzUzOTMxYTY0YmFh
OWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
CkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RpZmljYXRpb25FdmVudFR5
cGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUHVzaFBl
cm1pc3Npb25TdGF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4KQEAgLTM3NSw3ICszNzYsNyBAQCBwdWJsaWM6
CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBnZXRQZW5kaW5nUHVzaE1l
c3NhZ2VzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3Rv
cjxXZWJQdXNoTWVzc2FnZT4mKT4mJik7Ci0gICAgdm9pZCBwcm9jZXNzUHVzaE1lc3NhZ2UoUEFM
OjpTZXNzaW9uSUQsIFdlYlB1c2hNZXNzYWdlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpOworICAgIHZvaWQgcHJvY2Vzc1B1c2hNZXNzYWdlKFBBTDo6U2Vzc2lvbklELCBXZWJQ
dXNoTWVzc2FnZSYmLCBXZWJDb3JlOjpQdXNoUGVybWlzc2lvblN0YXRlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIHByb2Nlc3NOb3RpZmljYXRpb25FdmVudChX
ZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJiYsIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkV2ZW50VHlw
ZSk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMjZjNGViNzMyM2ZiZGU4MGJiN2FiYjlj
MDgxMjkyNTVhMzMwMzcxYi4uNDVlNzU1OWU2Y2ZhYjJiYzE0ZDBjNTkxODA0MGNlNDQ4MzQ0ODg3
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0yMTIsNyArMjEyLDcgQEAgbWVzc2FnZXMgLT4gTmV0d29y
a1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQog
ICAgIEdldFBlbmRpbmdQdXNoTWVzc2FnZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAo
VmVjdG9yPFdlYktpdDo6V2ViUHVzaE1lc3NhZ2U+IG1lc3NhZ2VzKQotICAgIFByb2Nlc3NQdXNo
TWVzc2FnZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJLaXQ6OldlYlB1c2hN
ZXNzYWdlIHB1c2hNZXNzYWdlKSAtPiAoYm9vbCBkaWRTdWNjZWVkKQorICAgIFByb2Nlc3NQdXNo
TWVzc2FnZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJLaXQ6OldlYlB1c2hN
ZXNzYWdlIHB1c2hNZXNzYWdlLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6UHVzaFBlcm1pc3Npb25T
dGF0ZSBwdXNoUGVybWlzc2lvblN0YXRlKSAtPiAoYm9vbCBkaWRTdWNjZWVkKQogICAgIFByb2Nl
c3NOb3RpZmljYXRpb25FdmVudChzdHJ1Y3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSBkYXRh
LCBlbnVtOmJvb2wgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRXZlbnRUeXBlIGV2ZW50VHlwZSkKICNl
bmRpZgogICAgIERlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb24oUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIG9yaWdp
bikgLT4gKFN0cmluZyBlcnJvck1lc3NhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA1MjhmMGQ0YzA3
YjE2MmE0ZDdmNDcxMzgyYjNkZDA1NGIwNzY4MDExLi44OWJkMTZlYWQwOWY3YTM5OTM2NjBiN2Yx
NThhZDg3YzM2NzkzMDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNs
dWRlICJTdG9yYWdlQWNjZXNzU3RhdHVzLmgiCiAjaW5jbHVkZSAiV2ViQ29tcGlsZWRDb250ZW50
UnVsZUxpc3QuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHkuaCIKKyNpbmNsdWRl
ICJXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJQYWdlTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVz
c2FnZXMuaCIKQEAgLTYyLDYgKzYzLDcgQEAKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0NsaWVudE9yaWdpbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUHVzaFBlcm1pc3Np
b25TdGF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRlIDx3dGYvQ2FsbGJhY2tBZ2dy
ZWdhdG9yLmg+CkBAIC0xNzYxLDcgKzE3NjMsMTkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpnZXRQZW5kaW5nUHVzaE1lc3NhZ2VzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGwK
IAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzUHVzaE1lc3NhZ2UoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBXZWJQdXNoTWVzc2FnZSYgcHVzaE1lc3NhZ2UsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCB3YXNQcm9jZXNzZWQpPiYmIGNhbGxiYWNrKQogewotICAg
IHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlByb2Nlc3NQdXNo
TWVzc2FnZSB7IHNlc3Npb25JRCwgcHVzaE1lc3NhZ2UgfSwgV1RGTW92ZShjYWxsYmFjaykpOwor
ICAgIGF1dG8gcGVybWlzc2lvbiA9IFB1c2hQZXJtaXNzaW9uU3RhdGU6OlByb21wdDsKKyAgICBh
dXRvIHBlcm1pc3Npb25zID0gV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpzaGFyZWRTZXJ2
aWNlV29ya2VyTWFuYWdlcigpLm5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCk7CisgICAgYXV0byBv
cmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21VUkwocHVzaE1lc3NhZ2UucmVnaXN0cmF0
aW9uVVJMKS50b1N0cmluZygpOworCisgICAgaWYgKGF1dG8gaXQgPSBwZXJtaXNzaW9ucy5maW5k
KG9yaWdpbik7IGl0ICE9IHBlcm1pc3Npb25zLmVuZCgpKQorICAgICAgICBwZXJtaXNzaW9uID0g
aXQtPnZhbHVlID8gUHVzaFBlcm1pc3Npb25TdGF0ZTo6R3JhbnRlZCA6IFB1c2hQZXJtaXNzaW9u
U3RhdGU6OkRlbmllZDsKKworICAgIGlmIChwZXJtaXNzaW9uID09IFB1c2hQZXJtaXNzaW9uU3Rh
dGU6OkRlbmllZCkgeworICAgICAgICBjYWxsYmFjayhmYWxzZSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
OjpQcm9jZXNzUHVzaE1lc3NhZ2UgeyBzZXNzaW9uSUQsIHB1c2hNZXNzYWdlLCBwZXJtaXNzaW9u
IH0sIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpw
cm9jZXNzTm90aWZpY2F0aW9uRXZlbnQoY29uc3QgTm90aWZpY2F0aW9uRGF0YSYgZGF0YSwgTm90
aWZpY2F0aW9uRXZlbnRUeXBlIGV2ZW50VHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5LmNwcAppbmRleCBmZDE5NmQzMGY0N2U4ZWNjN2RiMGZjMGNkYjI3NjM3MzMwYjNl
MWIzLi4wNmUwMWEyOTA1YmEzYjdkNWQ5MzBmNDMzMzA5M2U5MTkwZDJjZjE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9u
cy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCkBAIC0zNCw3ICszNCw5IEBACiAjaW5j
bHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzUHJveHkuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9Ob3RpZmljYXRpb25EYXRhLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9T
ZWN1cml0eU9yaWdpbkRhdGEuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKQEAgLTI4MCwyNSArMjgyLDY5IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5Ojpwcm92aWRlckRpZFVwZGF0ZU5vdGlmaWNhdGlvblBvbGljeShjb25zdCBBUEk6
CiAgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyOjpEaWRVcGRhdGVOb3RpZmljYXRpb25EZWNpc2lvbihvcmlnaW4tPnNl
Y3VyaXR5T3JpZ2luKCkudG9TdHJpbmcoKSwgYWxsb3dlZCkpOwogfQogCi12b2lkIFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRSZW1vdmVOb3RpZmljYXRpb25Qb2xpY2ll
cyhBUEk6OkFycmF5KiBvcmlnaW5zKQorc3RhdGljIHZvaWQgcmVtb3ZlUHVzaFN1YnNjcmlwdGlv
bnNGb3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiBv
cmlnaW5zKQogewotICAgIGlmICghcHJvY2Vzc1Bvb2woKSkKKyAgICBSZWZQdHI8TmV0d29ya1By
b2Nlc3NQcm94eT4gbmV0d29ya1Byb2Nlc3M7CisgICAgYXV0byBzZXNzaW9uSUQgPSBQQUw6OlNl
c3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOworCisgICAgV2Vic2l0ZURhdGFTdG9yZTo6Zm9y
RWFjaFdlYnNpdGVEYXRhU3RvcmUoWyZuZXR3b3JrUHJvY2VzcywgJnNlc3Npb25JRF0oV2Vic2l0
ZURhdGFTdG9yZSYgZGF0YVN0b3JlKSB7CisgICAgICAgIGlmICghbmV0d29ya1Byb2Nlc3MgJiYg
ZGF0YVN0b3JlLmlzUGVyc2lzdGVudCgpKSB7CisgICAgICAgICAgICBuZXR3b3JrUHJvY2VzcyA9
ICZkYXRhU3RvcmUubmV0d29ya1Byb2Nlc3MoKTsKKyAgICAgICAgICAgIHNlc3Npb25JRCA9IGRh
dGFTdG9yZS5zZXNzaW9uSUQoKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgaWYgKCFuZXR3
b3JrUHJvY2VzcykKICAgICAgICAgcmV0dXJuOwogCisgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBv
cmlnaW5zKQorICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+ZGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlv
blJlZ2lzdHJhdGlvbihzZXNzaW9uSUQsIG9yaWdpbiwgW29yaWdpblN0cmluZyA9IG9yaWdpbi50
b1N0cmluZygpXShhdXRvJiYpIHsgfSk7Cit9CisKK3N0YXRpYyBWZWN0b3I8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhPiBhcGlBcnJheVRvU2VjdXJpdHlPcmlnaW5zKEFQSTo6QXJyYXkqIG9y
aWdpbnMpCit7CisgICAgaWYgKCFvcmlnaW5zKQorICAgICAgICByZXR1cm4geyB9OworCisgICAg
VmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gc2VjdXJpdHlPcmlnaW5zOwogICAg
IHNpemVfdCBzaXplID0gb3JpZ2lucy0+c2l6ZSgpOwotICAgIGlmICghc2l6ZSkKLSAgICAgICAg
cmV0dXJuOwotICAgIAorICAgIHNlY3VyaXR5T3JpZ2lucy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KHNpemUpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAg
IHNlY3VyaXR5T3JpZ2lucy51bmNoZWNrZWRBcHBlbmQob3JpZ2lucy0+YXQ8QVBJOjpTZWN1cml0
eU9yaWdpbj4oaSktPnNlY3VyaXR5T3JpZ2luKCkpOworCisgICAgcmV0dXJuIHNlY3VyaXR5T3Jp
Z2luczsKK30KKworc3RhdGljIFZlY3RvcjxTdHJpbmc+IGFwaUFycmF5VG9TZWN1cml0eU9yaWdp
blN0cmluZ3MoQVBJOjpBcnJheSogb3JpZ2lucykKK3sKKyAgICBpZiAoIW9yaWdpbnMpCisgICAg
ICAgIHJldHVybiB7IH07CisKICAgICBWZWN0b3I8U3RyaW5nPiBvcmlnaW5TdHJpbmdzOworICAg
IHNpemVfdCBzaXplID0gb3JpZ2lucy0+c2l6ZSgpOwogICAgIG9yaWdpblN0cmluZ3MucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShzaXplKTsKKwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6
ZTsgKytpKQogICAgICAgICBvcmlnaW5TdHJpbmdzLnVuY2hlY2tlZEFwcGVuZChvcmlnaW5zLT5h
dDxBUEk6OlNlY3VyaXR5T3JpZ2luPihpKS0+c2VjdXJpdHlPcmlnaW4oKS50b1N0cmluZygpKTsK
IAotICAgIFdlYlByb2Nlc3NQb29sOjpzZW5kVG9BbGxSZW1vdGVXb3JrZXJQcm9jZXNzZXMoTWVz
c2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZFJlbW92ZU5vdGlmaWNhdGlvbkRlY2lz
aW9ucyhvcmlnaW5TdHJpbmdzKSk7CisgICAgcmV0dXJuIG9yaWdpblN0cmluZ3M7Cit9CiAKLSAg
ICBpZiAoIXByb2Nlc3NQb29sKCkpCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6
cHJvdmlkZXJEaWRSZW1vdmVOb3RpZmljYXRpb25Qb2xpY2llcyhBUEk6OkFycmF5KiBvcmlnaW5z
KQoreworICAgIHNpemVfdCBzaXplID0gb3JpZ2lucy0+c2l6ZSgpOworICAgIGlmICghc2l6ZSkK
ICAgICAgICAgcmV0dXJuOwotICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb0FsbFByb2Nlc3NlcyhN
ZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6RGlkUmVtb3ZlTm90aWZpY2F0aW9uRGVj
aXNpb25zKG9yaWdpblN0cmluZ3MpKTsKKworICAgIGlmICh0aGlzID09ICZzaGFyZWRTZXJ2aWNl
V29ya2VyTWFuYWdlcigpKSB7CisgICAgICAgIHJlbW92ZVB1c2hTdWJzY3JpcHRpb25zRm9yT3Jp
Z2lucyhhcGlBcnJheVRvU2VjdXJpdHlPcmlnaW5zKG9yaWdpbnMpKTsKKyAgICAgICAgV2ViUHJv
Y2Vzc1Bvb2w6OnNlbmRUb0FsbFJlbW90ZVdvcmtlclByb2Nlc3NlcyhNZXNzYWdlczo6V2ViTm90
aWZpY2F0aW9uTWFuYWdlcjo6RGlkUmVtb3ZlTm90aWZpY2F0aW9uRGVjaXNpb25zKGFwaUFycmF5
VG9TZWN1cml0eU9yaWdpblN0cmluZ3Mob3JpZ2lucykpKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGlmIChwcm9jZXNzUG9vbCgpKQorICAgICAgICBwcm9jZXNzUG9vbCgpLT5zZW5k
VG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZFJlbW92
ZU5vdGlmaWNhdGlvbkRlY2lzaW9ucyhhcGlBcnJheVRvU2VjdXJpdHlPcmlnaW5TdHJpbmdzKG9y
aWdpbnMpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tIGIvU291cmNlL1dlYktpdC93ZWJwdXNo
ZC9XZWJQdXNoRGFlbW9uLm1tCmluZGV4IGNiZDEyNzAzYjU5ZWNmNWYyNTA3YzgwZGFhMDAzYmZl
MmM5NzM0ZTQuLjZmOTZhZWI4YWVjNmEwZTE0ZDQ2N2U0ZmNiYmY2MGNiOWUyOWNhYjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24ubW0KQEAgLTQ5OSw3ICs0OTksMTggQEAg
dm9pZCBEYWVtb246OmRlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb24oQ2xpZW50
Q29ubmVjdGlvbiogY29ubmVjdGlvbiwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNv
bm5lY3Rpb24tPmVucXVldWVBcHBCdW5kbGVSZXF1ZXN0KG1ha2VVbmlxdWU8QXBwQnVuZGxlRGVs
ZXRpb25SZXF1ZXN0PigqY29ubmVjdGlvbiwgb3JpZ2luU3RyaW5nLCBXVEZNb3ZlKHJlcGx5U2Vu
ZGVyKSkpOworICAgIGNvbm5lY3Rpb24tPmVucXVldWVBcHBCdW5kbGVSZXF1ZXN0KG1ha2VVbmlx
dWU8QXBwQnVuZGxlRGVsZXRpb25SZXF1ZXN0PigqY29ubmVjdGlvbiwgb3JpZ2luU3RyaW5nLCBb
dGhpcywgb3JpZ2luU3RyaW5nID0gU3RyaW5nIHsgb3JpZ2luU3RyaW5nIH0sIHJlcGx5U2VuZGVy
ID0gV1RGTW92ZShyZXBseVNlbmRlciksIGJ1bmRsZUlkZW50aWZpZXIgPSBjb25uZWN0aW9uLT5o
b3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyKCldKGF1dG8gcmVzdWx0KSBtdXRhYmxlIHsKKyAg
ICAgICAgcnVuQWZ0ZXJTdGFydGluZ1B1c2hTZXJ2aWNlKFt0aGlzLCBidW5kbGVJZGVudGlmaWVy
ID0gV1RGTW92ZShidW5kbGVJZGVudGlmaWVyKSwgb3JpZ2luU3RyaW5nID0gV1RGTW92ZShvcmln
aW5TdHJpbmcpLCByZXBseVNlbmRlciA9IFdURk1vdmUocmVwbHlTZW5kZXIpLCByZXN1bHRdKCkg
bXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIW1fcHVzaFNlcnZpY2UpIHsKKyAgICAgICAgICAg
ICAgICByZXBseVNlbmRlcihyZXN1bHQpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgbV9wdXNoU2VydmljZS0+cmVtb3ZlUmVjb3Jkc0ZvckJ1
bmRsZUlkZW50aWZpZXJBbmRPcmlnaW4oYnVuZGxlSWRlbnRpZmllciwgb3JpZ2luU3RyaW5nLCBb
cmVwbHlTZW5kZXIgPSBXVEZNb3ZlKHJlcGx5U2VuZGVyKSwgcmVzdWx0XShhdXRvJiYpIG11dGFi
bGUgeworICAgICAgICAgICAgICAgIHJlcGx5U2VuZGVyKHJlc3VsdCk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfSk7CisgICAgfSkpOwogfQogCiB2b2lkIERhZW1vbjo6c2V0RGVidWdNb2Rl
SXNFbmFibGVkKENsaWVudENvbm5lY3Rpb24qIGNsaWVudENvbm5lY3Rpb24sIGJvb2wgZW5hYmxl
ZCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBi
ZWE3N2M0YmZjOGVhNjk0OWY1MmZhNzE4NzU2ODEzN2I4MDdkN2IyLi43ZmVhOWQ5OWNhYTk3Zjk3
ZDU0YmFjZDgxMjEyYWUyNGFlMTExYjRhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjItMDMtMTggIEJlbiBOaGFt
ICA8bmhhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHB1c2ggc3Vic2NyaXB0aW9ucyB3
aGVuIHBlcm1pc3Npb25zIGFyZSByZXNldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MDY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZh
YmxldC4KKworICAgICAgICBBZGQgYSB0ZXN0IHRvIG1ha2Ugc3VyZSBwdXNoIHN1YnNjcmlwdGlv
bnMgYXJlIHJlbW92ZWQgd2hlbiB0aGUgbm90aWZpY2F0aW9uIHBvbGljeSBmb3IgYQorICAgICAg
ICB3ZWJzaXRlIGlzIHJlc2V0LgorCisgICAgICAgIEFsc28gZml4ZWQgYW4gaXNzdWUgd2l0aCBh
IFB1c2hBUEkgdGVzdCB0aGF0IGRpZG4ndCBwcm9wZXJseSByZWdpc3RlciBmb3Igbm90aWZpY2F0
aW9uIHBlcm1pc3Npb25zLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0Tm90aWZpY2F0
aW9uUHJvdmlkZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdE5vdGlmaWNhdGlv
blByb3ZpZGVyOjpUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyOjpub3RpZmljYXRpb25QZXJtaXNzaW9ucyBj
b25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXI6
OnNldFBlcm1pc3Npb24pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdE5vdGlmaWNhdGlv
blByb3ZpZGVyOjpyZXNldFBlcm1pc3Npb24pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dE5vdGlmaWNhdGlvblByb3ZpZGVyLmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9QdXNoQVBJLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV2ViUHVzaERhZW1vbi5tbToKKwogMjAyMi0wMy0zMCAgSm9uYXRoYW4gQmVkYXJk
ICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgW3dlYmtpdGJ1Z3NweV0gR2V0IGFuZCBz
ZXQgaXNzdWUgY29tcG9uZW50IGRhdGEKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdE5v
dGlmaWNhdGlvblByb3ZpZGVyLmNwcAppbmRleCAwODBmMDZhOThjYzkxNTVlNGViOWVmMjRiMDU4
Njc5ODg5NmMzZmFmLi5lYjM4Njk4MmFlZmRiYzhhNTNhNDRiNTMxNDc4MTAzNzc0OWU0NDRkIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3ROb3RpZmljYXRpb25Qcm92aWRlci5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuY3Bw
CkBAIC0yNyw2ICsyNyw4IEBACiAjaW5jbHVkZSAiVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyLmgi
CiAKICNpbmNsdWRlICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIKKyNpbmNsdWRlIDxXZWJLaXQvV0tB
cnJheS5oPgorI2luY2x1ZGUgPFdlYktpdC9XS011dGFibGVEaWN0aW9uYXJ5Lmg+CiAjaW5jbHVk
ZSA8V2ViS2l0L1dLTm90aWZpY2F0aW9uTWFuYWdlci5oPgogI2luY2x1ZGUgPFdlYktpdC9XS051
bWJlci5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1NlY3VyaXR5T3JpZ2luUmVmLmg+CkBAIC00Miw3
ICs0NCw2IEBAIHN0YXRpYyBXS0RpY3Rpb25hcnlSZWYgbm90aWZpY2F0aW9uUGVybWlzc2lvbnMo
Y29uc3Qgdm9pZCogY2xpZW50SW5mbykKIAogVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyOjpUZXN0
Tm90aWZpY2F0aW9uUHJvdmlkZXIoVmVjdG9yPFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZj4mJiBt
YW5hZ2VycykKICAgICA6IG1fbWFuYWdlcnMoV1RGTW92ZShtYW5hZ2VycykpCi0gICAgLCBtX3Bl
cm1pc3Npb25zKGFkb3B0V0soV0tNdXRhYmxlRGljdGlvbmFyeUNyZWF0ZSgpKSkKIHsKICAgICBt
X3Byb3ZpZGVyID0gewogICAgICAgICB7IDAsIHRoaXMgfSwKQEAgLTY3LDE5ICs2OCwzOSBAQCBU
ZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXI6On5UZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIoKQogCiBX
S0RpY3Rpb25hcnlSZWYgVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyOjpub3RpZmljYXRpb25QZXJt
aXNzaW9ucygpIGNvbnN0CiB7Ci0gICAgV0tSZXRhaW4obV9wZXJtaXNzaW9ucy5nZXQoKSk7Ci0g
ICAgcmV0dXJuIG1fcGVybWlzc2lvbnMuZ2V0KCk7CisgICAgYXV0byBwZXJtaXNzaW9ucyA9IFdL
TXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKTsKKworICAgIGZvciAoYXV0byYgW29yaWdpbiwgYWxs
b3dlZF0gOiBtX3Blcm1pc3Npb25zKSB7CisgICAgICAgIGF1dG8gd2tPcmlnaW5TdHJpbmcgPSBh
ZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKG9yaWdpbi51dGY4KCkuZGF0YSgp
KSk7CisgICAgICAgIGF1dG8gd2tBbGxvd2VkID0gYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoYWxs
b3dlZCkpOworICAgICAgICBXS0RpY3Rpb25hcnlTZXRJdGVtKHBlcm1pc3Npb25zLCB3a09yaWdp
blN0cmluZy5nZXQoKSwgd2tBbGxvd2VkLmdldCgpKTsKKyAgICB9CisKKyAgICByZXR1cm4gcGVy
bWlzc2lvbnM7CiB9CiAKIHZvaWQgVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyOjpzZXRQZXJtaXNz
aW9uKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBib29sIGFsbG93ZWQpCiB7Ci0gICAgYXV0byB3a0Fs
bG93ZWQgPSBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShhbGxvd2VkKSk7Ci0gICAgYXV0byB3a09y
aWdpblN0cmluZyA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcob3JpZ2lu
LnV0ZjgoKS5kYXRhKCkpKTsKLSAgICBXS0RpY3Rpb25hcnlTZXRJdGVtKG1fcGVybWlzc2lvbnMu
Z2V0KCksIHdrT3JpZ2luU3RyaW5nLmdldCgpLCB3a0FsbG93ZWQuZ2V0KCkpOworICAgIG1fcGVy
bWlzc2lvbnMuc2V0KG9yaWdpbiwgYWxsb3dlZCk7CiAKKyAgICBhdXRvIHdrT3JpZ2luU3RyaW5n
ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhvcmlnaW4udXRmOCgpLmRh
dGEoKSkpOwogICAgIGF1dG8gd2tPcmlnaW4gPSBhZG9wdFdLKFdLU2VjdXJpdHlPcmlnaW5DcmVh
dGVGcm9tU3RyaW5nKHdrT3JpZ2luU3RyaW5nLmdldCgpKSk7CisKICAgICBmb3IgKGF1dG8mIG1h
bmFnZXIgOiBtX21hbmFnZXJzKQogICAgICAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRl
ckRpZFVwZGF0ZU5vdGlmaWNhdGlvblBvbGljeShtYW5hZ2VyLCB3a09yaWdpbi5nZXQoKSwgYWxs
b3dlZCk7CiB9CiAKK3ZvaWQgVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyOjpyZXNldFBlcm1pc3Np
b24oY29uc3QgU3RyaW5nJiBvcmlnaW4pCit7CisgICAgbV9wZXJtaXNzaW9ucy5yZW1vdmUob3Jp
Z2luKTsKKworICAgIGF1dG8gd2tPcmlnaW5TdHJpbmcgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKG9yaWdpbi51dGY4KCkuZGF0YSgpKSk7CisgICAgYXV0byB3a09yaWdp
biA9IGFkb3B0V0soV0tTZWN1cml0eU9yaWdpbkNyZWF0ZUZyb21TdHJpbmcod2tPcmlnaW5TdHJp
bmcuZ2V0KCkpKTsKKyAgICBhdXRvIHdrT3JpZ2luVHlwZVJlZiA9IHN0YXRpY19jYXN0PFdLVHlw
ZVJlZj4od2tPcmlnaW4uZ2V0KCkpOworICAgIGF1dG8gd2tPcmlnaW5BcnJheSA9IGFkb3B0V0so
V0tBcnJheUNyZWF0ZSgmd2tPcmlnaW5UeXBlUmVmLCAxKSk7CisKKyAgICBmb3IgKGF1dG8mIG1h
bmFnZXIgOiBtX21hbmFnZXJzKQorICAgICAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRl
ckRpZFJlbW92ZU5vdGlmaWNhdGlvblBvbGljaWVzKG1hbmFnZXIsIHdrT3JpZ2luQXJyYXkuZ2V0
KCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3ROb3RpZmljYXRpb25Qcm92aWRlci5oIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuaAppbmRleCBiZTA0OGJmOWEyZDgzZDhl
NDJkNTg2YzE2YTEyZTFlZDM2MTQzMTBjLi5lNDg1ZWRhYjExMzVhN2RlNjY5Nzg2MWRjZTNjMzQ2
MTc4YzdjYWUzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3ROb3RpZmljYXRp
b25Qcm92aWRlci5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdE5vdGlmaWNhdGlvblBy
b3ZpZGVyLmgKQEAgLTI1LDExICsyNSwxMSBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUg
PFdlYktpdC9XS011dGFibGVEaWN0aW9uYXJ5Lmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLTm90aWZp
Y2F0aW9uTWFuYWdlci5oPgogI2luY2x1ZGUgPFdlYktpdC9XS05vdGlmaWNhdGlvblByb3ZpZGVy
Lmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RN
YWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewpAQCAtNDIsMTAgKzQyLDExIEBAIHB1Ymxp
YzoKIAogICAgIFdLRGljdGlvbmFyeVJlZiBub3RpZmljYXRpb25QZXJtaXNzaW9ucygpIGNvbnN0
OwogICAgIHZvaWQgc2V0UGVybWlzc2lvbihjb25zdCBTdHJpbmcmIG9yaWdpbiwgYm9vbCBhbGxv
d2VkKTsKKyAgICB2b2lkIHJlc2V0UGVybWlzc2lvbihjb25zdCBTdHJpbmcmIG9yaWdpbik7CiAK
IHByaXZhdGU6CiAgICAgVmVjdG9yPFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZj4gbV9tYW5hZ2Vy
czsKLSAgICBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiBtX3Blcm1pc3Npb25z
OworICAgIEhhc2hNYXA8U3RyaW5nLCBib29sPiBtX3Blcm1pc3Npb25zOwogICAgIFdLTm90aWZp
Y2F0aW9uUHJvdmlkZXJWMCBtX3Byb3ZpZGVyOwogfTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QdXNoQVBJLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QdXNoQVBJLm1tCmluZGV4IDJkOTEzZGMyNTk4NDNhNzBj
NDQyNTYwOTZmMDQxMmEzZjM1NWJiZTAuLjIxNDJkMjdhZjBkZDUzZDU4ODI2NzU0NjM4ZDRiNWYy
ZDYwNTQyMWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvUHVzaEFQSS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1B1c2hBUEkubW0KQEAgLTMzNiw2ICszMzYsOSBAQCBURVNUKFB1c2hBUEksIGZpcmVQdXNoRXZl
bnRXaXRoTm9QYWdlc1RpbWVvdXQpCiAgICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0
YVN0b3JlID0gZGF0YVN0b3JlLmdldCgpOwogICAgIGNsZWFyV2Vic2l0ZURhdGFTdG9yZShbY29u
ZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXSk7CiAKKyAgICBhdXRvIHByb3ZpZGVyID0gVGVz
dFdlYktpdEFQSTo6VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyKHsgW1tjb25maWd1cmF0aW9uIHBy
b2Nlc3NQb29sXSBfbm90aWZpY2F0aW9uTWFuYWdlckZvclRlc3RpbmddLCBXS05vdGlmaWNhdGlv
bk1hbmFnZXJHZXRTaGFyZWRTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uTWFuYWdlcigpIH0pOwor
ICAgIHByb3ZpZGVyLnNldFBlcm1pc3Npb24oc2VydmVyLm9yaWdpbigpLCB0cnVlKTsKKwogICAg
IGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbUHVzaEFQSU1lc3NhZ2VIYW5kbGVyV2l0
aEV4cGVjdGVkTWVzc2FnZSBhbGxvY10gaW5pdF0pOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2Vy
Q29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVy
LmdldCgpIG5hbWU6QCJzdyJdOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24ubW0KaW5kZXggOTdhNWJkYTc2OWNlZWUwZGQz
YzU2MjhlNzM0MjA5ZTA4MDEyMjRkOS4uYTQ0MzJjOTQ3OWVhZjA5N2I0NDdjNjE0OGUxMjE2YTRl
ZDNkOWZlNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9XZWJQdXNoRGFlbW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV2ViUHVzaERhZW1vbi5tbQpAQCAtODY5LDYgKzg2OSw1NiBAQCBURVNUX0YoV2ViUHVz
aERUZXN0LCBVbnN1YnNjcmliZXNPbkNsZWFyaW5nV2Vic2l0ZURhdGFGb3JPcmlnaW4pCiAgICAg
QVNTRVJUX0ZBTFNFKGhhc1B1c2hTdWJzY3JpcHRpb24oKSk7CiB9CiAKK1RFU1RfRihXZWJQdXNo
RFRlc3QsIFVuc3Vic2NyaWJlc09uUGVybWlzc2lvblJlc2V0KQoreworICAgIHN0YXRpYyBjb25z
dCBjaGFyKiBzb3VyY2UgPSBSIkhUTUwoCisgICAgPHNjcmlwdCBzcmM9Ii9jb25zdGFudHMuanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVn
aXN0ZXIoJy9zdy5qcycpLnRoZW4oYXN5bmMgKCkgPT4geworICAgICAgICBjb25zdCByZWdpc3Ry
YXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWFkeTsKKyAgICAgICAgbGV0
IHJlc3VsdCA9IG51bGw7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBsZXQgc3Vic2NyaXB0
aW9uID0gYXdhaXQgcmVnaXN0cmF0aW9uLnB1c2hNYW5hZ2VyLnN1YnNjcmliZSh7CisgICAgICAg
ICAgICAgICAgdXNlclZpc2libGVPbmx5OiB0cnVlLAorICAgICAgICAgICAgICAgIGFwcGxpY2F0
aW9uU2VydmVyS2V5OiBWQUxJRF9TRVJWRVJfS0VZCisgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgIHJlc3VsdCA9ICJTdWJzY3JpYmVkIjsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAg
ICAgICAgcmVzdWx0ID0gIkVycm9yOiAiICsgZTsKKyAgICAgICAgfQorICAgICAgICB3aW5kb3cu
d2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5ub3RlLnBvc3RNZXNzYWdlKHJlc3VsdCk7CisgICAgfSk7
CisgICAgPC9zY3JpcHQ+CisgICAgKUhUTUwiOworCisgICAgX19ibG9jayBSZXRhaW5QdHI8aWQ+
IHJlc3VsdCA9IG5pbDsKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIFttX25v
dGlmaWNhdGlvbk1lc3NhZ2VIYW5kbGVyIHNldE1lc3NhZ2VIYW5kbGVyOl4oaWQgbWVzc2FnZSkg
eworICAgICAgICByZXN1bHQgPSBtZXNzYWdlOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9
XTsKKworICAgIGxvYWRSZXF1ZXN0KHNvdXJjZSwgIiIpOworICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmZG9uZSk7CisKKyAgICBBU1NFUlRfVFJVRShbcmVzdWx0IGlzRXF1YWxUb1N0cmlu
ZzpAIlN1YnNjcmliZWQiXSk7CisgICAgQVNTRVJUX1RSVUUoaGFzUHVzaFN1YnNjcmlwdGlvbigp
KTsKKworICAgIG1fbm90aWZpY2F0aW9uUHJvdmlkZXItPnJlc2V0UGVybWlzc2lvbihtX3NlcnZl
ci0+b3JpZ2luKCkpOworCisgICAgYm9vbCBpc1N1YnNjcmliZWQgPSB0cnVlOworICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OndhaXRGb3JDb25kaXRpb25XaXRoTG9nZ2luZyhbdGhpcywgJmlzU3Vi
c2NyaWJlZF0geworICAgICAgICBpc1N1YnNjcmliZWQgPSBoYXNQdXNoU3Vic2NyaXB0aW9uKCk7
CisgICAgICAgIGlmICghaXNTdWJzY3JpYmVkKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICAgICAgc2xlZXAoMSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9LCA1LCBAIlRp
bWVkIG91dCB3YWl0aW5nIGZvciBwdXNoIHN1YnNjcmlwdGlvbiB0byBiZSByZW1vdmVkLiIpOwor
CisgICAgQVNTRVJUX0ZBTFNFKGlzU3Vic2NyaWJlZCk7Cit9CisKICNpZiBFTkFCTEUoSU5TVEFM
TF9DT09SRElOQVRJT05fQlVORExFUykKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogc3Rh
dGljIHZvaWQgZGVsZXRlQWxsUmVnaXN0cmF0aW9uc0ZvckRhdGFTdG9yZShXS1dlYnNpdGVEYXRh
U3RvcmUgKmRhdGFTdG9yZSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0YmQ1YTgzY2UyMTlmZDYyMjc1MjRhYmM4OGJhMGY0
ZDk4ZmUwOWM0Li5kODU0Y2NjYTA2ZTA0ZGJmYjdhODA4ZTIyM2RhZjIxOWE4N2Q0OWE5IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTQgQEAKKzIwMjItMDMtMjMgIEJlbiBOaGFtICA8bmhhbUBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVtb3ZlIHB1c2ggc3Vic2NyaXB0aW9ucyB3aGVuIHBlcm1pc3Npb25zIGFy
ZSByZXNldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM4MDY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBG
aXggYW4gaXNzdWUgd2l0aCBhIGxheW91dCB0ZXN0IHRoYXQgZGlkbid0IHJlZ2lzdGVyIGZvciBu
b3RpZmljYXRpb24gcGVybWlzc2lvbnMuCisKKyAgICAgICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdv
cmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctcHVzaC5odHRwcy5odG1sOgorCiAyMDIyLTAz
LTMwICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ1NTIGNvbnRh
aW5dIENvbnRhaW5tZW50IGRpc2FibGVzIHRoZSBzcGVjaWFsIGhhbmRsaW5nIG9mIHRoZSBIVE1M
IGJvZHkgZWxlbWVudCBmb3Igb3ZlcmZsb3cgdmlld3BvcnQgcHJvcGFnYXRpb24uCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIt
c3Bpbm5pbmctcHVzaC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13
b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXB1c2guaHR0cHMuaHRtbAppbmRleCBmZWM0
NTdjNzg0ZmZlNGViY2EyOTA3OTNmYWU5NDZhMmQ1MGY0ZGU2Li5mMzhkMGU0YmU2NWUwZWFkNzli
MzI2ZTFmMmRiZWRkYTE0ZTllM2M2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9z
ZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctcHVzaC5odHRwcy5odG1sCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1z
cGlubmluZy1wdXNoLmh0dHBzLmh0bWwKQEAgLTcsNiArNyw5IEBACiA8L2hlYWQ+CiA8Ym9keT4K
IDxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5ncmFudFdl
Yk5vdGlmaWNhdGlvblBlcm1pc3Npb24od2luZG93Lm9yaWdpbik7CisKIHByb21pc2VfdGVzdChh
c3luYyAodGVzdCkgPT4gewogICAgIGNvbnN0IHJlZ2lzdHJhdGlvbiA9IGF3YWl0IG5hdmlnYXRv
ci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCJzZXJ2aWNlLXdvcmtlci1zcGlubmluZy13b3JrZXIu
anMiLCB7IHNjb3BlIDogInNwaW4tcHVzaCIgfSk7CiAgICAgY29uc3Qgd29ya2VyID0gcmVnaXN0
cmF0aW9uLmluc3RhbGxpbmc7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>