<?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>227045</bug_id>
          
          <creation_ts>2021-06-15 13:34:42 -0700</creation_ts>
          <short_desc>Migrate App Privacy Report code from WebKitAdditions</short_desc>
          <delta_ts>2021-06-23 13:27:24 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kate Cheney">katherine_cheney</reporter>
          <assigned_to name="Kate Cheney">katherine_cheney</assigned_to>
          <cc>achristensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>mkwst</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1769941</commentid>
    <comment_count>0</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-06-15 13:34:42 -0700</bug_when>
    <thetext>Migrate App Privacy Report code from WebKitAdditions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769943</commentid>
    <comment_count>1</comment_count>
      <attachid>431477</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-06-15 13:43:34 -0700</bug_when>
    <thetext>Created attachment 431477
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769945</commentid>
    <comment_count>2</comment_count>
      <attachid>431477</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-15 13:51:07 -0700</bug_when>
    <thetext>Comment on attachment 431477
Patch

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

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:341
&gt;      NSURLRequest *nsRequest = request.nsURLRequest(WebCore::HTTPBodyUpdatePolicy::UpdateHTTPBody);

Seems you should address the FIXME above now.

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:344
&gt; +    NSMutableURLRequest *mutableRequest = [[nsRequest mutableCopy] autorelease];

Let&apos;s avoid using autorelease if possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770054</commentid>
    <comment_count>3</comment_count>
      <attachid>431509</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-06-15 18:50:26 -0700</bug_when>
    <thetext>Created attachment 431509
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770056</commentid>
    <comment_count>4</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-06-15 18:51:04 -0700</bug_when>
    <thetext>I took out the renaming, and just left this as a migration patch for simplicity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770463</commentid>
    <comment_count>5</comment_count>
      <attachid>431621</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-06-16 16:35:24 -0700</bug_when>
    <thetext>Created attachment 431621
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770705</commentid>
    <comment_count>6</comment_count>
      <attachid>431621</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-06-17 10:07:31 -0700</bug_when>
    <thetext>Comment on attachment 431621
Patch

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

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:60
&gt; +static void processPCMRequest(WebCore::PrivateClickMeasurement::PcmDataCarried, NSMutableURLRequest * _Nonnull);

Remove _Nonnull</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770724</commentid>
    <comment_count>7</comment_count>
      <attachid>431691</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-06-17 11:01:17 -0700</bug_when>
    <thetext>Created attachment 431691
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770748</commentid>
    <comment_count>8</comment_count>
      <attachid>431696</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-06-17 11:56:09 -0700</bug_when>
    <thetext>Created attachment 431696
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771320</commentid>
    <comment_count>9</comment_count>
      <attachid>431871</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-06-21 09:41:10 -0700</bug_when>
    <thetext>Created attachment 431871
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771321</commentid>
    <comment_count>10</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-06-21 09:41:58 -0700</bug_when>
    <thetext>forgot to unskip tests for open source in the latest patch. Will wait for EWS before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771422</commentid>
    <comment_count>11</comment_count>
      <attachid>431902</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-06-21 13:28:51 -0700</bug_when>
    <thetext>Created attachment 431902
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771423</commentid>
    <comment_count>12</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-06-21 13:29:12 -0700</bug_when>
    <thetext>Never mind, EWS doesn&apos;t support these layout tests yet, keeping these skipped in open source. Local runs confirm all tests are passing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771454</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-21 14:25:52 -0700</bug_when>
    <thetext>Committed r279083 (239002@main): &lt;https://commits.webkit.org/239002@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 431902.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771455</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-21 14:26:41 -0700</bug_when>
    <thetext>&lt;rdar://problem/79580561&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771457</commentid>
    <comment_count>15</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-06-21 14:29:17 -0700</bug_when>
    <thetext>The correct radar is rdar://74333287</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771692</commentid>
    <comment_count>16</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2021-06-22 09:45:06 -0700</bug_when>
    <thetext>Reverted r279083 for reason:

Broke Mac Builds

Committed r279120 (239037@main): &lt;https://commits.webkit.org/239037@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771999</commentid>
    <comment_count>17</comment_count>
      <attachid>432071</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-06-23 10:43:41 -0700</bug_when>
    <thetext>Created attachment 432071
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772015</commentid>
    <comment_count>18</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-06-23 11:48:44 -0700</bug_when>
    <thetext>(In reply to Kate Cheney from comment #17)
&gt; Created attachment 432071 [details]
&gt; Patch

Checks for #if ENABLE(APP_PRIVACY_REPORT) &amp;&amp; HAVE(SYMPTOMS_FRAMEWORK) will avoid breaking the build again. Tested locally that everything is building with no errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772048</commentid>
    <comment_count>19</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-23 13:27:21 -0700</bug_when>
    <thetext>Committed r279184 (239079@main): &lt;https://commits.webkit.org/239079@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 432071.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431477</attachid>
            <date>2021-06-15 13:43:34 -0700</date>
            <delta_ts>2021-06-15 18:50:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227045-20210615134333.patch</filename>
            <type>text/plain</type>
            <size>259839</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4ODc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDc0ZjMwMjk3YWI2OTRmODRmNDVkYmFl
YzQwN2QxODQ0ZmM4NTUwZmEuLmZjZmVjZWMzY2ZiMjgzNTgwZGYyMGM1OThjZWFmNzVlYmNjYjk0
NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDYtMTUgIEthdGUgQ2hlbmV5ICA8a2F0aGVy
aW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgTWlncmF0ZSBBcHAgUHJpdmFjeSBSZXBv
cnQgY29kZSBmcm9tIFdlYktpdEFkZGl0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3MDQ1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDMz
MzI4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
cGRhdGUgY29tcGlsZSBmbGFnIG5hbWluZyB0byBhbGlnbiB3aXRoIHRoZSBBcHAgUHJpdmFjeSBS
ZXBvcnQKKyAgICAgICAgZmVhdHVyZS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVuYWJsZUNv
Y29hLmg6CisKIDIwMjEtMDYtMTQgIFBlciBBcm5lICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgW2lPU10gU3luYyBBY2Nlc3NpYmlsaXR5IHByZWZlcmVuY2VzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YjQ4NjAwOTQ1ZTEzMDBlNzEwMzdmMmJkMTZkODZhNzkzN2JmZDc0OC4uZTA1NGVjZjM5ZjNmZDlm
YTc4MzNiNTI5ZjA0N2MwNzI4NTExYjFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkwIEBACisy
MDIxLTA2LTE1ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisg
ICAgICAgIE1pZ3JhdGUgQXBwIFByaXZhY3kgUmVwb3J0IGNvZGUgZnJvbSBXZWJLaXRBZGRpdGlv
bnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzA0
NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzQzMzMyODc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvYXBwLXByaXZh
Y3ktcmVwb3J0L2F0dHJpYnV0aW9uLWxvYWQtdXJsLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAv
dGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXBpbmctbG9hZC5odG1sCisgICAg
ICAgICAgICAgICBodHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1wb3N0
LXJlcXVlc3QuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBv
cnQvYXR0cmlidXRpb24tcHJlZmxpZ2h0LWFzeW5jLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAv
dGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXByZWZsaWdodC1zeW5jLmh0bWwK
KyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9u
LXNwZWN1bGF0aXZlLXJldmFsaWRhdGlvbi5odG1sCisKKyAgICAgICAgVXBkYXRlIG5hbWluZyB0
byBhbGlnbiB3aXRoIEFwcCBQcml2YWN5IFJlcG9ydCBmZWF0dXJlLgorCisgICAgICAgICogbG9h
ZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVBY2Nlc3NDb250cm9sUHJlZmxpZ2h0UmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bGFzdE5hdmln
YXRpb25XYXNBcHBJbml0aWF0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI6OnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzZXRMYXN0TmF2aWdhdGlv
bldhc0FwcEJvdW5kKTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OnVwZGF0ZVJlcXVlc3RBbmRBZGRFeHRyYUZpZWxkcyk6CisgICAgICAg
ICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZVJlcXVlc3RCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJh
c2U6OnNldEFzSXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVxdWVzdEJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6
OmlzQXBwSW5pdGlhdGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dEJhc2U6OnNldElzQXBwSW5pdGlhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdEJhc2U6OlJlc291cmNlUmVxdWVzdEJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0QmFzZTo6ZW5jb2RlQmFzZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3RCYXNlOjpkZWNvZGVCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdEJhc2U6OmlzQXBwQm91bmQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6c2V0SXNBcHBCb3VuZCk6IERlbGV0ZWQuCisgICAgICAg
ICogdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJbnRlcm5hbHM6Omxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJbnRlcm5hbHM6Omxhc3ROYXZpZ2F0aW9u
V2FzQXBwQm91bmQpOiBEZWxldGVkLgorICAgICAgICAqIHRlc3RpbmcvU2VydmljZVdvcmtlcklu
dGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5pZGw6
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjppc29sYXRlZENvcHkg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE6OmZyb20p
OgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oOgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE6OmVuY29kZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZGVjb2RlKToKKyAg
ICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6aXNvbGF0ZWRDb3B5IGNv
bnN0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRh
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmRlY29k
ZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVh
ZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6
U2VydmljZVdvcmtlclRocmVhZFByb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eTo6c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpsYXN0TmF2aWdhdGlvbldhc0Fw
cEluaXRpYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6
OnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKTog
RGVsZXRlZC4KKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHkuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJh
dGlvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhdGlvbkRhdGFiYXNl
OjppbXBvcnRSZWNvcmRzKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpzdGFydFNjcmlwdEZldGNoKToK
KyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp1cGRhdGVXb3JrZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U1dTZXJ2ZXI6OmNsaWVudElzQXBwSW5pdGlhdGVkRm9yUmVnaXN0cmFibGVEb21haW4p
OgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlRm9y
V29ya2Vycyk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6cmVnaXN0ZXJTZXJ2aWNlV29y
a2VyQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp1bnJlZ2lzdGVyU2Vydmlj
ZVdvcmtlckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6Y2xpZW50SXNBcHBC
b3VuZEZvclJlZ2lzdHJhYmxlRG9tYWluKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNX
U2VydmVyOjp1cGRhdGVBcHBCb3VuZFZhbHVlRm9yV29ya2Vycyk6IERlbGV0ZWQuCisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1dTZXJ2ZXJSZWdpc3RyYXRpb246OnNjaGVkdWxlU29mdFVwZGF0ZSk6CisgICAgICAgICog
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5oOgorICAgICAgICAo
V2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3RyYXRpb246OmlzQXBwSW5pdGlhdGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlNXU2VydmVyUmVnaXN0cmF0aW9uOjppc0FwcEJvdW5kKTogRGVsZXRlZC4KKyAg
ICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6bV9sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6Y29udGV4dERhdGEgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6OnVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6Om1fbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6dXBkYXRlQXBwQm91bmRWYWx1ZSk6
IERlbGV0ZWQuCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtl
ci5oOgorCiAyMDIxLTA2LTE1ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29t
PgogCiAgICAgICAgIFtNYWNdIENvcmVNZWRpYSBXcmFwcGVyQ2xhc3MgZG9lcyBub3QgbmVlZCBh
bGlnbm1lbnQgZml4dXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggM2M5NWYxZjkwMjk2NDQ0MGJlZTIwMGY4OGJlOTJh
YWY5ZTUzNWQ1MC4uYWZlMmE3MzBkMjgyZTYzNDU4MTQ4ZWY4MTI1OWU5YzgwMjg1ZGZiMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNDYgQEAKKzIwMjEtMDYtMTUgIEthdGUgQ2hlbmV5ICA8a2F0aGVy
aW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgTWlncmF0ZSBBcHAgUHJpdmFjeSBSZXBv
cnQgY29kZSBmcm9tIFdlYktpdEFkZGl0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3MDQ1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDMz
MzI4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
cGRhdGUgbmFtaW5nIHRvIGFsaWduIHdpdGggQXBwIFByaXZhY3kgUmVwb3J0IGZlYXR1cmUuIE1p
Z3JhdGUKKyAgICAgICAgaW50ZXJuYWwgYWRkaXRpb25zIGNvZGUgdG8gb3BlbiBzb3VyY2UuIFJl
bW92ZSBhdHRyaWJ1dGlvbiBjb250ZXh0CisgICAgICAgIGNvZGUgbm93IHRoYXQgdGhlIGNvbnRl
eHQgaXMgc2V0IGluIHRoZSBDRk5ldHdvcmsgbGF5ZXIuCisKKyAgICAgICAgVGhlIGRlZmF1bHQg
YXBwIGluaXRpYXRlZCB2YWx1ZSBzaG91bGQgYmUgdHJ1ZSBiYXNlZCBvbiBzcGVjLgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6cHJlY29ubmVjdFRvKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OmFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjpjbGVhckFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjphcHBCb3VuZE5hdmlnYXRpb25EYXRhKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNsZWFyQXBwQm91bmROYXZp
Z2F0aW9uRGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNl
bmRSZWRpcmVjdGVkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6aXNBcHBCb3VuZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b24uaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmFwcFByaXZhY3lSZXBvcnRU
ZXN0aW5nRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjphcHBCb3VuZE5h
dmlnYXRpb25UZXN0aW5nRGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6c29mdFVwZGF0ZUlmTmVlZGVkKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6
OmxvYWRGcm9tTmV0d29yayk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZl
ckNvbm5lY3Rpb246OmNvbnRyb2xDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZl
ckNvbm5lY3Rpb246OmNyZWF0ZUZldGNoVGFzayk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnVwZGF0ZUFwcEluaXRp
YXRlZFZhbHVlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjp1cGRhdGVBcHBCb3VuZFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1h
bmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OmNvbnN0cnVjdFJldmFs
aWRhdGlvblJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0
aXZlTG9hZE1hbmFnZXI6OnJlZ2lzdGVyTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6c3RhcnRTcGVjdWxhdGl2ZVJldmFsaWRhdGlv
bik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3Vy
Y2VzRW50cnkuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdWJyZXNvdXJjZUlu
Zm86OmlzQXBwSW5pdGlhdGVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpTdWJyZXNvdXJjZUluZm86OnNldElzQXBwSW5pdGlhdGVkKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0NhY2hlOjpTdWJyZXNvdXJjZUluZm86OmlzQXBwQm91bmQgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN1YnJlc291cmNlSW5mbzo6c2V0SXNB
cHBCb3VuZCk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a0RhdGFUYXNrQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29h
OjpOZXR3b3JrRGF0YVRhc2tDb2NvYSk6CisgICAgICAgIChjb250ZXh0U3RyaW5nKTogRGVsZXRl
ZC4KKyAgICAgICAgTWlncmF0ZSBwcm9jZXNzUENNUmVxdWVzdCBmdW5jdGlvbiBkZWNsYXJhdGlv
biB0byBvcGVuIHNvdXJjZSB0byBnZXQgcmlkIG9mCisgICAgICAgIE5FVFdPUktfREFUQV9UQVNL
X0NPQ09BX0FERElUSU9OUy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgIE1pZ3JhdGUgZnVuY3Rpb24gdG8gZGVsZXRlIEFw
cCBQcml2YWN5IFJlcG9ydCBkYXRhLgorCisgICAgICAgIChXZWJLaXQ6OmlzQWN0aW5nT25CZWhh
bGZPZkFGdWxsV2ViQnJvd3Nlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29j
b2E6OnJlbW92ZU5ldHdvcmtXZWJzaXRlRGF0YSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHk6CisgICAgICAgIChoZWFkZXJzX2Zvcl90eXBlKToKKyAgICAgICAgKiBTaGFy
ZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRh
KToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+
OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIFNoYXJlZC9OYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbi5oOgorICAgICAgICAoV2ViS2l0OjpBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0Rh
dGE6OmNsZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKToKKyAgICAgICAgKFdlYktpdDo6
QXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhOjpkaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdCk6
CisgICAgICAgIChXZWJLaXQ6OkFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YTo6ZW5jb2RlIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6QXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhOjpkZWNv
ZGUpOgorICAgICAgICAoV2ViS2l0OjpBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YTo6c2V0
RGlkUGVyZm9ybVNvZnRVcGRhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpBcHBCb3Vu
ZE5hdmlnYXRpb25UZXN0aW5nRGF0YTo6Y2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhVGVzdGlu
Zyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdE
YXRhOjp1cGRhdGVBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OkFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhOjplbmNvZGUgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0
YTo6ZGVjb2RlKTogRGVsZXRlZC4KKyAgICAgICAgQXMgbWVudGlvbmVkIGFib3ZlLCB3ZSBjYW4g
cmVtb3ZlIGF0dHJpYnV0aW9uIGNvbnRleHQgY29kZSwgdGhpcyB3b3JrCisgICAgICAgIGlzIG5v
dyBkb25lIGluIHRoZSBDRk5ldHdvcmsgbGF5ZXIuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdDpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9kaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdDpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9hcHBCb3VuZE5hdmlnYXRpb25EYXRhRm9yRG9tYWluOmNv
bXBsZXRpb25IYW5kbGVyOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1dlYlZpZXcgX2RpZExv
YWRBcHBCb3VuZFJlcXVlc3Q6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLV2ViVmlldyBfZGlk
TG9hZE5vbkFwcEJvdW5kUmVxdWVzdDpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5nLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2xhc3RO
YXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2FwcFBy
aXZhY3lSZXBvcnRUZXN0aW5nRGF0YTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jbGVhckFw
cFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9sYXN0
TmF2aWdhdGlvbldhc0FwcEJvdW5kOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1dlYlZpZXcg
X2FwcEJvdW5kTmF2aWdhdGlvbkRhdGE6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLV2ViVmll
dyBfY2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhOl0pOiBEZWxldGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpzZXRMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6bGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omxhc3ROYXZpZ2F0aW9u
V2FzQXBwQm91bmQpOiBEZWxldGVkLgorICAgICAgICBJdCB3b3VsZCBiZSBuaWNlIHRvIHJlbW92
ZSB0aGlzIGJlY2F1c2Ugd2Uga25vdyBOU1VSTFJlcXVlc3QKKyAgICAgICAgcGFyYW1ldGVycyBh
cmUgbm93IGJlaW5nIHNlcmlhbGl6ZWQsIGJ1dCB3ZSBuZWVkIHRvIHN0aWxsIHBhc3MgdGhlCisg
ICAgICAgIGF0dHJpYnV0aW9uIHRvIGFueSBsb2FkcyBpbml0aWF0ZWQgYnkgdGhlIG1haW4gbmF2
aWdhdGlvbiwgaW5jbHVkaW5nCisgICAgICAgIGluIHBsYWNlcyB3aGVyZSB3ZSBkb24ndCBoYXZl
IGFjY2VzcyB0byBhIENvY29hIGZpbGUgdG8gZ2V0IHRoZQorICAgICAgICBOU1VSTFJlcXVlc3Qg
cGFyYW1ldGVyLiBTbyB3ZSBzaG91bGQga2VlcCBpdCBhcyBhIFJlc291cmNlUmVxdWVzdAorICAg
ICAgICBwYXJhbWV0ZXIgZm9yIG5vdy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1By
b3h5OjpwcmVjb25uZWN0VG8pOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6cHJlY29ubmVjdFRvKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6Y2xlYXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmFwcEJvdW5kTmF2aWdhdGlvbkRhdGEpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YSk6
IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJMb2FkZXJTdHJhdGVneTo6cHJlY29ubmVjdFRvKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6dXBkYXRlQXBwSW5pdGlhdGVkVmFsdWUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c3RhcnRG
ZXRjaCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp1
cGRhdGVBcHBCb3VuZFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxTZW5k
UmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjptX2xhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpjcmVhdGVEb2N1bWVudExvYWRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omxhc3RO
YXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKToKKyAgICAgICAgKFdlYktpdDo6bV9sYXN0TmF2aWdh
dGlvbldhc0FwcEJvdW5kKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bGFz
dE5hdmlnYXRpb25XYXNBcHBCb3VuZCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0TGFzdE5hdmln
YXRpb25XYXNBcHBJbml0aWF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRMYXN0
TmF2aWdhdGlvbldhc0FwcEJvdW5kKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAyMS0wNi0xNSAgWW91ZW5uIEZhYmxldCAg
PHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQ2FjaGVzOjpyZW1vdmVDYWNoZUVudHJ5IHNo
b3VsZCBjaGVjayBmb3IgbV9zdG9yYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybUVuYWJsZUNvY29hLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmgK
aW5kZXggNjJjOGVjMTE2Nzc2ZDliZjcwMzM1ZDQ3YTA4OWY4OTBjZWM2Yzk0YS4uMTc5NmMzOWQ3
MzU5ZDA5MTk4ZWY1OWJkMDcyY2FhYjRmZTRkMTY1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5h
YmxlQ29jb2EuaApAQCAtNjk1LDggKzY5NSw4IEBACiAjZGVmaW5lIEVOQUJMRV9OT1RJRllfRklM
VEVSSU5HIDEKICNlbmRpZgogCi0jaWYgIWRlZmluZWQoRU5BQkxFX0FQUF9CT1VORF9SRVFVRVNU
UykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTUwMDAwCi0jZGVmaW5lIEVOQUJMRV9BUFBfQk9VTkRfUkVRVUVTVFMgMQorI2lm
ICFkZWZpbmVkKEVOQUJMRV9BUFBfUFJJVkFDWV9SRVBPUlQpICYmIFBMQVRGT1JNKElPU19GQU1J
TFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDE1MDAwMAorI2RlZmlu
ZSBFTkFCTEVfQVBQX1BSSVZBQ1lfUkVQT1JUIDEKICNlbmRpZgogCiAjaWYgIWRlZmluZWQoRU5B
QkxFX0RFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCmluZGV4IDJhMWFlNTI1
MzhiMDYwZGExMWZjOWRmYmQ0MGI4YTZkNzhhZGViMTguLjM4OTkyOTc2YzZhMWRhZGM4Nzc5NGY3
OGRiNzg0ZDRmZTRlMDUzZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9z
c09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9z
c09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCkBAIC04OSw3ICs4OSw3IEBAIFJlc291cmNlUmVxdWVz
dCBjcmVhdGVBY2Nlc3NDb250cm9sUHJlZmxpZ2h0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlCiAgICAgcHJlZmxpZ2h0UmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhl
YWRlck5hbWU6OkFjY2Vzc0NvbnRyb2xSZXF1ZXN0TWV0aG9kLCByZXF1ZXN0Lmh0dHBNZXRob2Qo
KSk7CiAgICAgcHJlZmxpZ2h0UmVxdWVzdC5zZXRQcmlvcml0eShyZXF1ZXN0LnByaW9yaXR5KCkp
OwogICAgIHByZWZsaWdodFJlcXVlc3Quc2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMocmVxdWVzdC5m
aXJzdFBhcnR5Rm9yQ29va2llcygpKTsKLSAgICBwcmVmbGlnaHRSZXF1ZXN0LnNldElzQXBwQm91
bmQocmVxdWVzdC5pc0FwcEJvdW5kKCkpOworICAgIHByZWZsaWdodFJlcXVlc3Quc2V0SXNBcHBJ
bml0aWF0ZWQocmVxdWVzdC5pc0FwcEluaXRpYXRlZCgpKTsKICAgICBpZiAoIXJlZmVycmVyLmlz
TnVsbCgpKQogICAgICAgICBwcmVmbGlnaHRSZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihyZWZlcnJl
cik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggZTY5MzUzMmVi
ZDY0ZjVjMDQyYzdjMzdkODM5MTg5NTk3ZDZlNjkwOS4uMzllYjA2Mjk5ZTU3MGM0NzU5YWVjZjBl
ZjA5NzE4MjRlYjUwNTYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgK
QEAgLTQxOSw4ICs0MTksOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzZXRD
b250cm9sbGluZ1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRhdGEmJik7CiAjZW5kaWYKIAotICAgIGJvb2wgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3Vu
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDsgfQotICAgIHZv
aWQgc2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChib29sIGxhc3ROYXZpZ2F0aW9uV2FzQXBw
Qm91bmQpIHsgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kID0gbGFzdE5hdmlnYXRpb25XYXNB
cHBCb3VuZDsgfQorICAgIGJvb2wgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQoKSBjb25z
dCB7IHJldHVybiBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOyB9CisgICAgdm9pZCBz
ZXRMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZChib29sIGxhc3ROYXZpZ2F0aW9uV2FzQXBw
SW5pdGlhdGVkKSB7IG1fbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgPSBsYXN0TmF2aWdh
dGlvbldhc0FwcEluaXRpYXRlZDsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQg
RG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3Vic3RpdHV0ZURh
dGEmKTsKQEAgLTY1OSw3ICs2NTksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9hbGxvd3NXZWJB
cmNoaXZlRm9yTWFpbkZyYW1lIHsgZmFsc2UgfTsKICAgICBib29sIG1fYWxsb3dzRGF0YVVSTHNG
b3JNYWluRnJhbWUgeyBmYWxzZSB9OwogCi0gICAgYm9vbCBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBw
Qm91bmQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRl
ZCB7IHRydWUgfTsKIH07CiAKIGlubGluZSB2b2lkIERvY3VtZW50TG9hZGVyOjpyZWNvcmRNZW1v
cnlDYWNoZUxvYWRGb3JGdXR1cmVDbGllbnROb3RpZmljYXRpb24oY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggZDcx
M2Y3ZGQ0YTQ5MmNmYzM2YTgzZTEwZGEyNjIxM2RhYmUyNzVmZS4uYTUwNGZhOTUxNWY5Yzk0MTMw
YTI2NmMzODRlZDNjMThmZDk1NDExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCkBAIC0xNDkyLDcgKzE0OTIsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkKERvY3VtZW50
TG9hZGVyJiBuZXdEb2N1bWVudExvYWRlcikKICAgICBSZXNvdXJjZVJlcXVlc3QmIHIgPSBuZXdE
b2N1bWVudExvYWRlci5yZXF1ZXN0KCk7CiAgICAgLy8gRklYTUU6IFVzaW5nIG1fbG9hZFR5cGUg
c2VlbXMgd3JvbmcgaGVyZS4KICAgICAvLyBJZiB3ZSBhcmUgb25seSBwcmVwYXJpbmcgdG8gbG9h
ZCB0aGUgbWFpbiByZXNvdXJjZSwgdGhhdCBpcyBwcmV2aW91cyBsb2FkJ3MgbG9hZCB0eXBlIQot
ICAgIHVwZGF0ZVJlcXVlc3RBbmRBZGRFeHRyYUZpZWxkcyhyLCBJc01haW5SZXNvdXJjZTo6WWVz
LCBtX2xvYWRUeXBlLCBTaG91bGRVcGRhdGVBcHBCb3VuZFZhbHVlOjpObyk7CisgICAgdXBkYXRl
UmVxdWVzdEFuZEFkZEV4dHJhRmllbGRzKHIsIElzTWFpblJlc291cmNlOjpZZXMsIG1fbG9hZFR5
cGUsIFNob3VsZFVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlOjpObyk7CiAgICAgRnJhbWVMb2FkVHlw
ZSB0eXBlOwogCiAgICAgaWYgKHNob3VsZFRyZWF0VVJMQXNTYW1lQXNDdXJyZW50KG5ld0RvY3Vt
ZW50TG9hZGVyLm9yaWdpbmFsUmVxdWVzdCgpLnVybCgpKSkgewpAQCAtMjg3OCw3ICsyODc4LDcg
QEAgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kgRnJhbWVMb2FkZXI6OmRlZmF1bHRSZXF1ZXN0
Q2FjaGluZ1BvbGljeShjb25zdCBSZXNvdXIKICAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0Q2Fj
aGVQb2xpY3k6OlVzZVByb3RvY29sQ2FjaGVQb2xpY3k7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6
OnVwZGF0ZVJlcXVlc3RBbmRBZGRFeHRyYUZpZWxkcyhSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IElzTWFpblJlc291cmNlIG1haW5SZXNvdXJjZSwgRnJhbWVMb2FkVHlwZSBsb2FkVHlwZSwgU2hv
dWxkVXBkYXRlQXBwQm91bmRWYWx1ZSBzaG91bGRVcGRhdGUpCit2b2lkIEZyYW1lTG9hZGVyOjp1
cGRhdGVSZXF1ZXN0QW5kQWRkRXh0cmFGaWVsZHMoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBJ
c01haW5SZXNvdXJjZSBtYWluUmVzb3VyY2UsIEZyYW1lTG9hZFR5cGUgbG9hZFR5cGUsIFNob3Vs
ZFVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlIHNob3VsZFVwZGF0ZSkKIHsKICAgICAvLyBJZiB0aGUg
cmVxdWVzdCBjYW1lIGZyb20gYSBwcmV2aW91cyBwcm9jZXNzIGR1ZSB0byBwcm9jZXNzLXN3YXAt
b24tbmF2aWdhdGlvbiB0aGVuIHdlIHNob3VsZCBub3QgbW9kaWZ5IHRoZSByZXF1ZXN0LgogICAg
IGlmIChtX2N1cnJlbnRMb2FkQ29udGludWluZ1N0YXRlID09IExvYWRDb250aW51aW5nU3RhdGU6
OkNvbnRpbnVpbmdXaXRoUmVxdWVzdCkKQEAgLTI5NDgsOCArMjk0OCw4IEBAIHZvaWQgRnJhbWVM
b2FkZXI6OnVwZGF0ZVJlcXVlc3RBbmRBZGRFeHRyYUZpZWxkcyhSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIElzTWFpCiAgICAgICAgIHJlcXVlc3Quc2V0UmVzcG9uc2VDb250ZW50RGlzcG9zaXRp
b25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkoIlVURi04IiwgbV9mcmFtZS5kb2N1bWVudCgpLT5lbmNv
ZGluZygpLCBtX2ZyYW1lLnNldHRpbmdzKCkuZGVmYXVsdFRleHRFbmNvZGluZ05hbWUoKSk7CiAg
ICAgfQogCi0gICAgaWYgKHNob3VsZFVwZGF0ZSA9PSBTaG91bGRVcGRhdGVBcHBCb3VuZFZhbHVl
OjpZZXMgJiYgbV9mcmFtZS5tYWluRnJhbWUoKS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKQot
ICAgICAgICByZXF1ZXN0LnNldElzQXBwQm91bmQobV9mcmFtZS5tYWluRnJhbWUoKS5sb2FkZXIo
KS5kb2N1bWVudExvYWRlcigpLT5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKCkpOworICAgIGlm
IChzaG91bGRVcGRhdGUgPT0gU2hvdWxkVXBkYXRlQXBwSW5pdGlhdGVkVmFsdWU6OlllcyAmJiBt
X2ZyYW1lLm1haW5GcmFtZSgpLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpCisgICAgICAgIHJl
cXVlc3Quc2V0SXNBcHBJbml0aWF0ZWQobV9mcmFtZS5tYWluRnJhbWUoKS5sb2FkZXIoKS5kb2N1
bWVudExvYWRlcigpLT5sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCgpKTsKIH0KIAogdm9p
ZCBGcmFtZUxvYWRlcjo6c2NoZWR1bGVSZWZyZXNoSWZOZWVkZWQoRG9jdW1lbnQmIGRvY3VtZW50
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmlu
ZGV4IGYxMjM5OWU1ZTU1Y2ZkNzMwNGQ2NzRkMWI2OWE1ZDc5NjdjODI2MmIuLjI2Y2RiMjZkNTk2
MDFhOWFiODczMDMwYjQ2MTUzNzUwNTI3MzI1YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5oCkBAIC04NSw3ICs4NSw3IEBAIGVudW0gY2xhc3MgTmF2aWdhdGlvblBvbGljeURlY2lz
aW9uIDogdWludDhfdDsKIGVudW0gY2xhc3MgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIDog
Ym9vbDsKIGVudW0gY2xhc3MgVXNlZExlZ2FjeVRMUyA6IGJvb2w7CiBlbnVtIGNsYXNzIElzTWFp
blJlc291cmNlIDogYm9vbCB7IE5vLCBZZXMgfTsKLWVudW0gY2xhc3MgU2hvdWxkVXBkYXRlQXBw
Qm91bmRWYWx1ZSA6IGJvb2wgeyBObywgWWVzIH07CitlbnVtIGNsYXNzIFNob3VsZFVwZGF0ZUFw
cEluaXRpYXRlZFZhbHVlIDogYm9vbCB7IE5vLCBZZXMgfTsKIAogc3RydWN0IFdpbmRvd0ZlYXR1
cmVzOwogCkBAIC0zMTcsNyArMzE3LDcgQEAgcHVibGljOgogICAgIGJvb2wgYWx3YXlzQWxsb3dM
b2NhbFdlYmFyY2hpdmUoKSBjb25zdCB7IHJldHVybiBtX2Fsd2F5c0FsbG93TG9jYWxXZWJhcmNo
aXZlOyB9CiAKICAgICAvLyBGb3Igc3VicmVzb3VyY2UgcmVxdWVzdHMgdGhlIEZyYW1lTG9hZFR5
cGUgcGFyYW1ldGVyIGhhcyBubyBlZmZlY3QgYW5kIGNhbiBiZSBza2lwcGVkLgotICAgIHZvaWQg
dXBkYXRlUmVxdWVzdEFuZEFkZEV4dHJhRmllbGRzKFJlc291cmNlUmVxdWVzdCYsIElzTWFpblJl
c291cmNlLCBGcmFtZUxvYWRUeXBlID0gRnJhbWVMb2FkVHlwZTo6U3RhbmRhcmQsIFNob3VsZFVw
ZGF0ZUFwcEJvdW5kVmFsdWUgPSBTaG91bGRVcGRhdGVBcHBCb3VuZFZhbHVlOjpZZXMpOworICAg
IHZvaWQgdXBkYXRlUmVxdWVzdEFuZEFkZEV4dHJhRmllbGRzKFJlc291cmNlUmVxdWVzdCYsIElz
TWFpblJlc291cmNlLCBGcmFtZUxvYWRUeXBlID0gRnJhbWVMb2FkVHlwZTo6U3RhbmRhcmQsIFNo
b3VsZFVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlID0gU2hvdWxkVXBkYXRlQXBwSW5pdGlhdGVkVmFs
dWU6Olllcyk7CiAKICAgICB2b2lkIHNjaGVkdWxlUmVmcmVzaElmTmVlZGVkKERvY3VtZW50Jiwg
Y29uc3QgU3RyaW5nJiBjb250ZW50KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKaW5kZXggNDZlNzg1MjI5ZTYw
ZjYyYmM3YjNhY2U0ZGM4MzFhN2YyNzVhODFiMi4uNDRiNTkzMDcwZWNlZDQxZmZmNzAzZjdiYzg5
NDdhZjE5NGRiMDJlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgUmVz
b3VyY2VSZXF1ZXN0QmFzZTo6c2V0QXNJc29sYXRlZENvcHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiBvdGhlcikKICAgICBpZiAob3RoZXIubV9odHRwQm9keSkKICAgICAgICAgc2V0SFRUUEJvZHko
b3RoZXIubV9odHRwQm9keS0+aXNvbGF0ZWRDb3B5KCkpOwogICAgIHNldEFsbG93Q29va2llcyhv
dGhlci5tX2FsbG93Q29va2llcyk7Ci0gICAgc2V0SXNBcHBCb3VuZChvdGhlci5pc0FwcEJvdW5k
KCkpOworICAgIHNldElzQXBwSW5pdGlhdGVkKG90aGVyLmlzQXBwSW5pdGlhdGVkKCkpOwogfQog
CiBib29sIFJlc291cmNlUmVxdWVzdEJhc2U6OmlzRW1wdHkoKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAppbmRl
eCAyNzBmYWQwNGZkMWU1YjNlYTYyOTQxY2U4MDk1M2FlZmU1OWYzZGJhLi4yNDVlNTk5YTljZjc4
YzYyZDQ1ZGZiOWFjZTMwNGExOWE5MmVkZGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaApAQCAtMTk1LDggKzE5NSw4
IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogCi0gICAgYm9vbCBp
c0FwcEJvdW5kKCkgY29uc3QgeyByZXR1cm4gbV9pc0FwcEJvdW5kOyB9Ci0gICAgdm9pZCBzZXRJ
c0FwcEJvdW5kKGJvb2wgaXNBcHBCb3VuZCkgeyBtX2lzQXBwQm91bmQgPSBpc0FwcEJvdW5kOyB9
OworICAgIGJvb2wgaXNBcHBJbml0aWF0ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQXBwSW5pdGlh
dGVkOyB9CisgICAgdm9pZCBzZXRJc0FwcEluaXRpYXRlZChib29sIGlzQXBwSW5pdGlhdGVkKSB7
IG1faXNBcHBJbml0aWF0ZWQgPSBpc0FwcEluaXRpYXRlZDsgfTsKIAogcHJvdGVjdGVkOgogICAg
IC8vIFVzZWQgd2hlbiBSZXNvdXJjZVJlcXVlc3QgaXMgaW5pdGlhbGl6ZWQgZnJvbSBhIHBsYXRm
b3JtIHJlcHJlc2VudGF0aW9uIG9mIHRoZSByZXF1ZXN0CkBAIC0yMDgsNyArMjA4LDcgQEAgcHJv
dGVjdGVkOgogICAgICAgICAsIG1fcGxhdGZvcm1SZXF1ZXN0Qm9keVVwZGF0ZWQodHJ1ZSkKICAg
ICAgICAgLCBtX2hpZGRlbkZyb21JbnNwZWN0b3IoZmFsc2UpCiAgICAgICAgICwgbV9pc1RvcFNp
dGUoZmFsc2UpCi0gICAgICAgICwgbV9pc0FwcEJvdW5kKGZhbHNlKQorICAgICAgICAsIG1faXNB
cHBJbml0aWF0ZWQodHJ1ZSkKICAgICB7CiAgICAgfQogCkBAIC0yMjQsNyArMjI0LDcgQEAgcHJv
dGVjdGVkOgogICAgICAgICAsIG1fcGxhdGZvcm1SZXF1ZXN0Qm9keVVwZGF0ZWQoZmFsc2UpCiAg
ICAgICAgICwgbV9oaWRkZW5Gcm9tSW5zcGVjdG9yKGZhbHNlKQogICAgICAgICAsIG1faXNUb3BT
aXRlKGZhbHNlKQotICAgICAgICAsIG1faXNBcHBCb3VuZChmYWxzZSkKKyAgICAgICAgLCBtX2lz
QXBwSW5pdGlhdGVkKHRydWUpCiAgICAgewogICAgIH0KIApAQCAtMjU4LDcgKzI1OCw3IEBAIHBy
b3RlY3RlZDoKICAgICBtdXRhYmxlIGJvb2wgbV9wbGF0Zm9ybVJlcXVlc3RCb2R5VXBkYXRlZCA6
IDE7CiAgICAgYm9vbCBtX2hpZGRlbkZyb21JbnNwZWN0b3IgOiAxOwogICAgIGJvb2wgbV9pc1Rv
cFNpdGUgOiAxOwotICAgIGJvb2wgbV9pc0FwcEJvdW5kIDogMTsKKyAgICBib29sIG1faXNBcHBJ
bml0aWF0ZWQgOiAxOwogI2lmIFVTRShTWVNURU1fUFJFVklFVykKICAgICBzdGQ6Om9wdGlvbmFs
PFN5c3RlbVByZXZpZXdJbmZvPiBtX3N5c3RlbVByZXZpZXdJbmZvOwogI2VuZGlmCkBAIC0yOTQs
NyArMjk0LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIFJlc291cmNlUmVxdWVzdEJhc2U6OmVuY29k
ZUJhc2UoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IG1faXNUb3BTaXRl
OwogICAgIGVuY29kZXIgPDwgbV9wcmlvcml0eTsKICAgICBlbmNvZGVyIDw8IG1fcmVxdWVzdGVy
OwotICAgIGVuY29kZXIgPDwgbV9pc0FwcEJvdW5kOworICAgIGVuY29kZXIgPDwgbV9pc0FwcElu
aXRpYXRlZDsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KQEAgLTM3MiwxMSArMzcyLDEx
IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpkZWNvZGVCYXNlKERl
Y29kZXImIGRlY29kZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBtX3JlcXVlc3RlciA9
ICpyZXF1ZXN0ZXI7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzQXBwQm91bmQ7Ci0gICAg
ZGVjb2RlciA+PiBpc0FwcEJvdW5kOwotICAgIGlmICghaXNBcHBCb3VuZCkKKyAgICBzdGQ6Om9w
dGlvbmFsPGJvb2w+IGlzQXBwSW5pdGlhdGVkOworICAgIGRlY29kZXIgPj4gaXNBcHBJbml0aWF0
ZWQ7CisgICAgaWYgKCFpc0FwcEluaXRpYXRlZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IG1faXNBcHBCb3VuZCA9ICppc0FwcEJvdW5kOworICAgIG1faXNBcHBJbml0aWF0ZWQgPSAqaXNB
cHBJbml0aWF0ZWQ7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwCmluZGV4IGYwODBhOTM1ZTE5ZTVh
NWFhMjVmM2I2OGU2M2M3YjRiYWU2ZjZhNDIuLjM2ODI5OGY0Y2M0M2QwYzBhYzZmNDA1ZTVmODE2
NDRkN2RiYzE1ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdv
cmtlckludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29y
a2VySW50ZXJuYWxzLmNwcApAQCAtMTE5LDE4ICsxMTksMTggQEAgaW50IFNlcnZpY2VXb3JrZXJJ
bnRlcm5hbHM6OnByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QKICAgICByZXR1cm4gZ2V0Q3VycmVu
dFByb2Nlc3NJRCgpOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJJbnRlcm5hbHM6Omxhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQordm9pZCBT
ZXJ2aWNlV29ya2VySW50ZXJuYWxzOjpsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZChSZWY8
RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7Ci0gICAgQVNTRVJUKCFtX2xhc3ROYXZpZ2F0
aW9uV2FzQXBwQm91bmRQcm9taXNlKTsKLSAgICBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmRQ
cm9taXNlID0gV1RGTW92ZShwcm9taXNlKTsKKyAgICBBU1NFUlQoIW1fbGFzdE5hdmlnYXRpb25X
YXNBcHBJbml0aWF0ZWRQcm9taXNlKTsKKyAgICBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlh
dGVkUHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSk7CiAgICAgY2FsbE9uTWFpblRocmVhZChbaWRl
bnRpZmllciA9IG1faWRlbnRpZmllciwgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0oKSBt
dXRhYmxlIHsKICAgICAgICAgaWYgKGF1dG8qIHByb3h5ID0gU1dDb250ZXh0TWFuYWdlcjo6c2lu
Z2xldG9uKCkud29ya2VyQnlJRChpZGVudGlmaWVyKSkgewotICAgICAgICAgICAgcHJveHktPnRo
cmVhZCgpLnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFr
VGhpcyksIGFwcEJvdW5kID0gcHJveHktPmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoKV0oYXV0
byYpIHsKLSAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVGhpcy0+bV9sYXN0
TmF2aWdhdGlvbldhc0FwcEJvdW5kUHJvbWlzZSkKKyAgICAgICAgICAgIHByb3h5LT50aHJlYWQo
KS5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMp
LCBhcHBJbml0aWF0ZWQgPSBwcm94eS0+bGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQoKV0o
YXV0byYpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVGhpcy0+bV9s
YXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZFByb21pc2UpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5tX2xhc3ROYXZpZ2F0aW9uV2Fz
QXBwQm91bmRQcm9taXNlLT5yZXNvbHZlPElETEJvb2xlYW4+KGFwcEJvdW5kKTsKLSAgICAgICAg
ICAgICAgICB3ZWFrVGhpcy0+bV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kUHJvbWlzZSA9IG51
bGxwdHI7CisgICAgICAgICAgICAgICAgd2Vha1RoaXMtPm1fbGFzdE5hdmlnYXRpb25XYXNBcHBJ
bml0aWF0ZWRQcm9taXNlLT5yZXNvbHZlPElETEJvb2xlYW4+KGFwcEluaXRpYXRlZCk7CisgICAg
ICAgICAgICAgICAgd2Vha1RoaXMtPm1fbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWRQcm9t
aXNlID0gbnVsbHB0cjsKICAgICAgICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2Rl
KCkpOwogICAgICAgICB9CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2Vy
dmljZVdvcmtlckludGVybmFscy5oCmluZGV4IGY2NjA1MDhlMmZjMTBlOGE1NjdmYjAxMWM0YjRi
YWE4NDM1NjBiMWYuLjMzN2U2YTdkMzkzZTMwMGI2YmRmZjYwZjk2OWI4ZmY1ZDgxZDgzMDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5oCkBA
IC02MCwxMyArNjAsMTMgQEAgcHVibGljOgogCiAgICAgaW50IHByb2Nlc3NJZGVudGlmaWVyKCkg
Y29uc3Q7CiAKLSAgICB2b2lkIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoUmVmPERlZmVycmVk
UHJvbWlzZT4mJik7CisgICAgdm9pZCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZChSZWY8
RGVmZXJyZWRQcm9taXNlPiYmKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBTZXJ2aWNlV29y
a2VySW50ZXJuYWxzKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKIAogICAgIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKLSAgICBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiBt
X2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmRQcm9taXNlOworICAgIFJlZlB0cjxEZWZlcnJlZFBy
b21pc2U+IG1fbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWRQcm9taXNlOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9T
ZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2Vydmlj
ZVdvcmtlckludGVybmFscy5pZGwKaW5kZXggZTExMGI1MTFiMTA2NTZkYWNhMzlmNmQ1M2YzZGIx
NzUwZWUzNmQwOS4uOTQ4NGI3NjIxZmNmMWZhZWNmZDVjNTM5NDZhNmU1ODRlMjk1NzUzOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRs
CkBAIC00Myw1ICs0Myw1IEBACiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBwcm9jZXNz
SWRlbnRpZmllcjsKIAotICAgIFByb21pc2U8Ym9vbGVhbj4gbGFzdE5hdmlnYXRpb25XYXNBcHBC
b3VuZCgpOworICAgIFByb21pc2U8Ym9vbGVhbj4gbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0
ZWQoKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNsaWVudERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmNwcAppbmRleCBiNjA3NGUxMGY1NzdhMDQyYTRhMTMz
NzZiNmIxMWNhMWEyYWQ3ZDI3Li4yNWQ3YzBhN2Y0ZWJlOTQ2NjdiZjE4MDU2ZGU2NzdlMjczMGI4
NzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNsaWVudERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgc3RhdGljIFNlcnZp
Y2VXb3JrZXJDbGllbnRGcmFtZVR5cGUgdG9TZXJ2aWNlV29ya2VyQ2xpZW50RnJhbWVUeXBlKFNj
cmlwdEV4ZWN1dGkKIAogU2VydmljZVdvcmtlckNsaWVudERhdGEgU2VydmljZVdvcmtlckNsaWVu
dERhdGE6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHsgaWRlbnRpZmllciwg
dHlwZSwgZnJhbWVUeXBlLCB1cmwuaXNvbGF0ZWRDb3B5KCksIGxhc3ROYXZpZ2F0aW9uV2FzQXBw
Qm91bmQgfTsKKyAgICByZXR1cm4geyBpZGVudGlmaWVyLCB0eXBlLCBmcmFtZVR5cGUsIHVybC5p
c29sYXRlZENvcHkoKSwgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgfTsKIH0KIAogU2Vy
dmljZVdvcmtlckNsaWVudERhdGEgU2VydmljZVdvcmtlckNsaWVudERhdGE6OmZyb20oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgU1dDbGllbnRDb25uZWN0aW9uJiBjb25uZWN0aW9u
KQpAQCAtNjcsMTMgKzY3LDEzIEBAIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIFNlcnZpY2VXb3Jr
ZXJDbGllbnREYXRhOjpmcm9tKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvCiAgICAgUkVMRUFT
RV9BU1NFUlQoaXNEb2N1bWVudCk7IC8vIFdlIGRvIG5vdCBzdXBwb3J0IGRlZGljYXRlZCB3b3Jr
ZXJzIGFzIGNsaWVudHMgeWV0LgogCiAgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1
bWVudD4oY29udGV4dCk7Ci0gICAgYXV0byBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kID0gZG9j
dW1lbnQubG9hZGVyKCkgJiYgZG9jdW1lbnQubG9hZGVyKCktPmxhc3ROYXZpZ2F0aW9uV2FzQXBw
Qm91bmQoKSA/IExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6OlllcyA6IExhc3ROYXZpZ2F0aW9u
V2FzQXBwQm91bmQ6Ok5vOworICAgIGF1dG8gbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQg
PSBkb2N1bWVudC5sb2FkZXIoKSAmJiBkb2N1bWVudC5sb2FkZXIoKS0+bGFzdE5hdmlnYXRpb25X
YXNBcHBJbml0aWF0ZWQoKSA/IExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpZZXMgOiBM
YXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDo6Tm87CiAKICAgICByZXR1cm4gewogICAgICAg
ICB7IGNvbm5lY3Rpb24uc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSwgZG9jdW1lbnQuaWRl
bnRpZmllcigpIH0sCiAgICAgICAgIGlzRG9jdW1lbnQgPyBTZXJ2aWNlV29ya2VyQ2xpZW50VHlw
ZTo6V2luZG93IDogU2VydmljZVdvcmtlckNsaWVudFR5cGU6OldvcmtlciwKICAgICAgICAgdG9T
ZXJ2aWNlV29ya2VyQ2xpZW50RnJhbWVUeXBlKGNvbnRleHQpLAotICAgICAgICBjb250ZXh0LnVy
bCgpLCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kCisgICAgICAgIGNvbnRleHQudXJsKCksIGxh
c3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkCiAgICAgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaApp
bmRleCAzM2Q5ODM4NDI0Y2I4ZjJjMWFlMWRhZDVmOGFmYmUxNDkwMTkyM2U4Li41N2MyODhhMGFm
MTZjMGYyYTg5Y2FhN2U1YTY5MjFkYmMxOTg2NDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaApAQCAtMzcs
MTQgKzM3LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNXQ2xpZW50Q29ubmVjdGlv
bjsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKLWVudW0gY2xhc3MgTGFzdE5hdmln
YXRpb25XYXNBcHBCb3VuZCA6IGJvb2wgeyBObywgWWVzIH07CitlbnVtIGNsYXNzIExhc3ROYXZp
Z2F0aW9uV2FzQXBwSW5pdGlhdGVkIDogYm9vbCB7IE5vLCBZZXMgfTsKIAogc3RydWN0IFNlcnZp
Y2VXb3JrZXJDbGllbnREYXRhIHsKICAgICBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBp
ZGVudGlmaWVyOwogICAgIFNlcnZpY2VXb3JrZXJDbGllbnRUeXBlIHR5cGU7CiAgICAgU2Vydmlj
ZVdvcmtlckNsaWVudEZyYW1lVHlwZSBmcmFtZVR5cGU7CiAgICAgVVJMIHVybDsKLSAgICBMYXN0
TmF2aWdhdGlvbldhc0FwcEJvdW5kIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7CisgICAgTGFz
dE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ7
CiAKICAgICBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSBpc29sYXRlZENvcHkoKSBjb25zdDsKIApA
QCAtNTcsNyArNTcsNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudERhdGEgewogdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgU2VydmljZVdvcmtlckNsaWVudERhdGE6OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIgPDwgaWRlbnRpZmllciA8PCB0
eXBlIDw8IGZyYW1lVHlwZSA8PCB1cmwgPDwgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDsKKyAg
ICBlbmNvZGVyIDw8IGlkZW50aWZpZXIgPDwgdHlwZSA8PCBmcmFtZVR5cGUgPDwgdXJsIDw8IGxh
c3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PgpAQCAtODMsMTIgKzgzLDEyIEBAIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERh
dGE+IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjpkZWNvZGUoRGVjb2RlciYKICAgICBpZiAoIXVy
bCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHN0ZDo6b3B0aW9uYWw8TGFz
dE5hdmlnYXRpb25XYXNBcHBCb3VuZD4gbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDsKLSAgICBk
ZWNvZGVyID4+IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7Ci0gICAgaWYgKCFsYXN0TmF2aWdh
dGlvbldhc0FwcEJvdW5kKQorICAgIHN0ZDo6b3B0aW9uYWw8TGFzdE5hdmlnYXRpb25XYXNBcHBJ
bml0aWF0ZWQ+IGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOworICAgIGRlY29kZXIgPj4g
bGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ7CisgICAgaWYgKCFsYXN0TmF2aWdhdGlvbldh
c0FwcEluaXRpYXRlZCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVy
biB7IHsgV1RGTW92ZSgqaWRlbnRpZmllciksIFdURk1vdmUoKnR5cGUpLCBXVEZNb3ZlKCpmcmFt
ZVR5cGUpLCBXVEZNb3ZlKCp1cmwpLCBXVEZNb3ZlKCpsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5k
KSB9IH07CisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCppZGVudGlmaWVyKSwgV1RGTW92ZSgqdHlw
ZSksIFdURk1vdmUoKmZyYW1lVHlwZSksIFdURk1vdmUoKnVybCksIFdURk1vdmUoKmxhc3ROYXZp
Z2F0aW9uV2FzQXBwSW5pdGlhdGVkKSB9IH07CiB9CiAKIHVzaW5nIFNlcnZpY2VXb3JrZXJDbGll
bnRzTWF0Y2hBbGxDYWxsYmFjayA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYpPjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAKaW5kZXgg
YjVhZGRiMzFkYWJjYmE4MGI5NGQwMDM0ZWFjZjM2Nzk0ZjEzYWI0Yi4uNTY0YmJlMGZiZmRkMzgw
NTc1YTcxNWQzN2ZmYWRlMmM1NDI1MWY0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAKQEAgLTQ0
LDcgKzQ0LDcgQEAgU2VydmljZVdvcmtlckNvbnRleHREYXRhIFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKICAgICAgICAgc2NyaXB0VVJMLmlzb2xhdGVkQ29w
eSgpLAogICAgICAgICB3b3JrZXJUeXBlLAogICAgICAgICBsb2FkZWRGcm9tRGlzaywKLSAgICAg
ICAgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCwKKyAgICAgICAgbGFzdE5hdmlnYXRpb25XYXNB
cHBJbml0aWF0ZWQsCiAgICAgICAgIGNyb3NzVGhyZWFkQ29weShzY3JpcHRSZXNvdXJjZU1hcCkK
ICAgICB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCmluZGV4IDNkN2NkMTdhOGJjMDlkYWVhYTZlMGVi
ZjkwYTA1OWE3YzcwOWEzMzMuLmNlZmI2MGY1ZTc1MGQ5Njc5NzJmZjNlN2JlOWI1NTM0NTZjYzE3
ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhLmgKQEAgLTM5LDcgKzM5LDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1lbnVtIGNsYXNzIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgOiBib29sOwor
ZW51bSBjbGFzcyBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCA6IGJvb2w7CiAKIHN0cnVj
dCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgewogICAgIHN0cnVjdCBJbXBvcnRlZFNjcmlwdCB7
CkBAIC04OSw3ICs4OSw3IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgewogICAg
IFVSTCBzY3JpcHRVUkw7CiAgICAgV29ya2VyVHlwZSB3b3JrZXJUeXBlOwogICAgIGJvb2wgbG9h
ZGVkRnJvbURpc2s7Ci0gICAgc3RkOjpvcHRpb25hbDxMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5k
PiBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOworICAgIHN0ZDo6b3B0aW9uYWw8TGFzdE5hdmln
YXRpb25XYXNBcHBJbml0aWF0ZWQ+IGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOwogICAg
IEhhc2hNYXA8VVJMLCBJbXBvcnRlZFNjcmlwdD4gc2NyaXB0UmVzb3VyY2VNYXA7CiAKICAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CkBAIC0x
MDIsNyArMTAyLDcgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNv
ZGVyIDw8IGpvYkRhdGFJZGVudGlmaWVyIDw8IHJlZ2lzdHJhdGlvbiA8PCBzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciA8PCBzY3JpcHQgPDwgY29udGVudFNlY3VyaXR5UG9saWN5IDw8IHJlZmVycmVy
UG9saWN5Ci0gICAgICAgIDw8IHNjcmlwdFVSTCA8PCB3b3JrZXJUeXBlIDw8IGxvYWRlZEZyb21E
aXNrIDw8IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgPDwgc2NyaXB0UmVzb3VyY2VNYXAgPDwg
Y2VydGlmaWNhdGVJbmZvOworICAgICAgICA8PCBzY3JpcHRVUkwgPDwgd29ya2VyVHlwZSA8PCBs
b2FkZWRGcm9tRGlzayA8PCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCA8PCBzY3JpcHRS
ZXNvdXJjZU1hcCA8PCBjZXJ0aWZpY2F0ZUluZm87CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+CkBAIC0xNDcsOCArMTQ3LDggQEAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGE+IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZGVjb2RlKERlY29kZXIKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGxvYWRlZEZyb21EaXNrKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAotICAgIHN0ZDo6b3B0aW9uYWw8TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZD4gbGFz
dE5hdmlnYXRpb25XYXNBcHBCb3VuZDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGxhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQpKQorICAgIHN0ZDo6b3B0aW9uYWw8TGFzdE5hdmlnYXRpb25XYXNB
cHBJbml0aWF0ZWQ+IGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUobGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgSGFzaE1hcDxVUkwsIEltcG9ydGVkU2NyaXB0PiBzY3Jp
cHRSZXNvdXJjZU1hcDsKQEAgLTE3MSw3ICsxNzEsNyBAQCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YT4gU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpkZWNvZGUoRGVjb2Rl
cgogICAgICAgICBXVEZNb3ZlKHNjcmlwdFVSTCksCiAgICAgICAgIHdvcmtlclR5cGUsCiAgICAg
ICAgIGxvYWRlZEZyb21EaXNrLAotICAgICAgICBXVEZNb3ZlKGxhc3ROYXZpZ2F0aW9uV2FzQXBw
Qm91bmQpLAorICAgICAgICBXVEZNb3ZlKGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKSwK
ICAgICAgICAgV1RGTW92ZShzY3JpcHRSZXNvdXJjZU1hcCkKICAgICB9fTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCmluZGV4IDcyMjg1ZmRjODM5OWZjMzRiNTRlOTM2
MDQ5MTNmYTFhM2ZjNTQ5MzcuLjVjMWFhZWY5ZTk4MzAyODYyNzBmZjIzM2E0NWFhNzFlYzIyYjA5
MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcApAQCAtMTE3LDggKzEx
Nyw4IEBAIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5
KFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZpCiAgICAgbV9yZW1vdGVEZWJ1Z2dhYmxlLT5p
bml0KCk7CiAjZW5kaWYKIAotICAgIGlmIChkYXRhLmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQp
Ci0gICAgICAgIHNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoZGF0YS5sYXN0TmF2aWdhdGlv
bldhc0FwcEJvdW5kID09IExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6Olllcyk7CisgICAgaWYg
KGRhdGEubGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpCisgICAgICAgIHNldExhc3ROYXZp
Z2F0aW9uV2FzQXBwSW5pdGlhdGVkKGRhdGEubGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQg
PT0gTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6Olllcyk7CiB9CiAKIFNlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eTo6flNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSgpCkBAIC0xMjcsMTUgKzEy
NywxNSBAQCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6On5TZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHkoKQogICAgIGFsbFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94aWVzKCkucmVtb3ZlKHRoaXMpOwog
fQogCi12b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c2V0TGFzdE5hdmlnYXRpb25XYXNB
cHBCb3VuZChib29sIHdhc0FwcEJvdW5kKQordm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6
OnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKGJvb2wgd2FzQXBwSW5pdGlhdGVkKQog
ewogICAgIGlmIChtX2RvY3VtZW50LT5sb2FkZXIoKSkKLSAgICAgICAgbV9kb2N1bWVudC0+bG9h
ZGVyKCktPnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQod2FzQXBwQm91bmQpOworICAgICAg
ICBtX2RvY3VtZW50LT5sb2FkZXIoKS0+c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQo
d2FzQXBwSW5pdGlhdGVkKTsKIH0KIAotYm9vbCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6Omxh
c3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoKQorYm9vbCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6
Omxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKCkKIHsKLSAgICByZXR1cm4gbV9kb2N1bWVu
dC0+bG9hZGVyKCkgPyBtX2RvY3VtZW50LT5sb2FkZXIoKS0+bGFzdE5hdmlnYXRpb25XYXNBcHBC
b3VuZCgpIDogZmFsc2U7CisgICAgcmV0dXJuIG1fZG9jdW1lbnQtPmxvYWRlcigpID8gbV9kb2N1
bWVudC0+bG9hZGVyKCktPmxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKCkgOiBmYWxzZTsK
IH0KIAogYm9vbCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnBvc3RUYXNrRm9yTW9kZVRvV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRh
c2ssIGNvbnN0IFN0cmluZyYgbW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmgK
aW5kZXggYzlmMWQ3ZWY3MmJiM2YzNWFhY2QxYzMwNTE1OGMzOGUyMDBjMTBmMC4uMmM1YTI4OTI4
ZmFlMDBhNDhmZThkYWI5NjhhODk5N2ZjM2RhZWNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRo
cmVhZFByb3h5LmgKQEAgLTgxLDggKzgxLDggQEAgcHVibGljOgogICAgIHZvaWQgZmlyZUFjdGl2
YXRlRXZlbnQoKTsKICAgICB2b2lkIGRpZFNhdmVTY3JpcHRzVG9EaXNrKFNjcmlwdEJ1ZmZlciYm
LCBIYXNoTWFwPFVSTCwgU2NyaXB0QnVmZmVyPiYmIGltcG9ydGVkU2NyaXB0cyk7CiAKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoYm9vbCk7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZChib29s
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVk
KCk7CiAKIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgU2VydmljZVdvcmtlclRocmVhZFBy
b3h5KFBhZ2VDb25maWd1cmF0aW9uJiYsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmLCBTdHJp
bmcmJiB1c2VyQWdlbnQsIENhY2hlU3RvcmFnZVByb3ZpZGVyJiwgU3RvcmFnZUJsb2NraW5nUG9s
aWN5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
UmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKaW5kZXggYmRhYmJkZmVlZjViNDExYzJi
ZTY5NWYzOGQ2YzljZjA3MWFmYWNlNS4uNzdhZTYzOWI5MjQ2ZDU5ZGIzYzcxMjdiYWM0NDAyNGYw
NzVlN2YwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKQEAgLTU2OSw3ICs1NjksNyBA
QCBTdHJpbmcgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHMoKQogICAgICAgICBh
dXRvIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIgPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRl
bnRpZmllcjo6Z2VuZXJhdGUoKTsKICAgICAgICAgYXV0byBzZXJ2aWNlV29ya2VyRGF0YSA9IFNl
cnZpY2VXb3JrZXJEYXRhIHsgd29ya2VySWRlbnRpZmllciwgc2NyaXB0VVJMLCBTZXJ2aWNlV29y
a2VyU3RhdGU6OkFjdGl2YXRlZCwgKndvcmtlclR5cGUsIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIg
fTsKICAgICAgICAgYXV0byByZWdpc3RyYXRpb24gPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGF0YSB7IFdURk1vdmUoKmtleSksIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFdURk1vdmUoc2Nv
cGVVUkwpLCAqdXBkYXRlVmlhQ2FjaGUsIGxhc3RVcGRhdGVDaGVja1RpbWUsIHN0ZDo6bnVsbG9w
dCwgc3RkOjpudWxsb3B0LCBXVEZNb3ZlKHNlcnZpY2VXb3JrZXJEYXRhKSB9OwotICAgICAgICBh
dXRvIGNvbnRleHREYXRhID0gU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsgc3RkOjpudWxsb3B0
LCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbiksIHdvcmtlcklkZW50aWZpZXIsIFdURk1vdmUoc2NyaXB0
KSwgV1RGTW92ZSgqY2VydGlmaWNhdGVJbmZvKSwgV1RGTW92ZSgqY29udGVudFNlY3VyaXR5UG9s
aWN5KSwgV1RGTW92ZShyZWZlcnJlclBvbGljeSksIFdURk1vdmUoc2NyaXB0VVJMKSwgKndvcmtl
clR5cGUsIHRydWUsIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6Ok5vLCBXVEZNb3ZlKHNjcmlw
dFJlc291cmNlTWFwKSB9OworICAgICAgICBhdXRvIGNvbnRleHREYXRhID0gU2VydmljZVdvcmtl
ckNvbnRleHREYXRhIHsgc3RkOjpudWxsb3B0LCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbiksIHdvcmtl
cklkZW50aWZpZXIsIFdURk1vdmUoc2NyaXB0KSwgV1RGTW92ZSgqY2VydGlmaWNhdGVJbmZvKSwg
V1RGTW92ZSgqY29udGVudFNlY3VyaXR5UG9saWN5KSwgV1RGTW92ZShyZWZlcnJlclBvbGljeSks
IFdURk1vdmUoc2NyaXB0VVJMKSwgKndvcmtlclR5cGUsIHRydWUsIExhc3ROYXZpZ2F0aW9uV2Fz
QXBwSW5pdGlhdGVkOjpObywgV1RGTW92ZShzY3JpcHRSZXNvdXJjZU1hcCkgfTsKIAogICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbnRl
eHREYXRhID0gY29udGV4dERhdGEuaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7CiAgICAgICAg
ICAgICBwcm90ZWN0ZWRUaGlzLT5hZGRSZWdpc3RyYXRpb25Ub1N0b3JlKFdURk1vdmUoY29udGV4
dERhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlci5jcHAKaW5kZXggN2I5YjVmYmZmMTM0NWMxMmYzMTExYjU4Y2I2N2U2YmNhYWFlNjYx
Ny4uNzc0Y2I2M2YxZmJiMWI5OWI1Mjk3NzU4MTk5ZjFiM2MxM2U4MmE1OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTQ3
NCw3ICs0NzQsNyBAQCB2b2lkIFNXU2VydmVyOjpzdGFydFNjcmlwdEZldGNoKGNvbnN0IFNlcnZp
Y2VXb3JrZXJKb2JEYXRhJiBqb2JEYXRhLCBTV1NlcnZlclJlZwogICAgICAgICByZXF1ZXN0LnNl
dEhUVFBSZWZlcnJlcihvcmlnaW5VUkwob3JpZ2luKS5zdHJpbmcoKSk7CiAgICAgICAgIHJlcXVl
c3Quc2V0SFRUUFVzZXJBZ2VudChzZXJ2aWNlV29ya2VyQ2xpZW50VXNlckFnZW50KENsaWVudE9y
aWdpbiB7IGpvYkRhdGEudG9wT3JpZ2luLCBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGpvYkRhdGEu
c2NyaXB0VVJMKS0+ZGF0YSgpIH0pKTsKICAgICAgICAgcmVxdWVzdC5zZXRQcmlvcml0eShSZXNv
dXJjZUxvYWRQcmlvcml0eTo6TG93KTsKLSAgICAgICAgcmVxdWVzdC5zZXRJc0FwcEJvdW5kKHJl
Z2lzdHJhdGlvbi5pc0FwcEJvdW5kKCkpOworICAgICAgICByZXF1ZXN0LnNldElzQXBwSW5pdGlh
dGVkKHJlZ2lzdHJhdGlvbi5pc0FwcEluaXRpYXRlZCgpKTsKIAogICAgICAgICBtX3NvZnRVcGRh
dGVDYWxsYmFjayhTZXJ2aWNlV29ya2VySm9iRGF0YSB7IGpvYkRhdGEgfSwgc2hvdWxkUmVmcmVz
aENhY2hlLCBXVEZNb3ZlKHJlcXVlc3QpLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0
aGlzKV0oYXV0byYgcmVzdWx0KSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQpAQCAtNjQ4
LDI0ICs2NDgsMjQgQEAgdm9pZCBTV1NlcnZlcjo6cmVtb3ZlQ2xpZW50U2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTZXIKIAogdm9pZCBTV1NlcnZlcjo6
dXBkYXRlV29ya2VyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYgam9iRGF0
YUlkZW50aWZpZXIsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24sIGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTY3JpcHRCdWZmZXImIHNjcmlwdCwgY29uc3QgQ2VydGlmaWNhdGVJbmZv
JiBjZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVh
ZGVycyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyUG9saWN5
LCBXb3JrZXJUeXBlIHR5cGUsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6
OkltcG9ydGVkU2NyaXB0PiYmIHNjcmlwdFJlc291cmNlTWFwKQogewotICAgIHRyeUluc3RhbGxD
b250ZXh0RGF0YShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgeyBqb2JEYXRhSWRlbnRpZmllciwg
cmVnaXN0cmF0aW9uLmRhdGEoKSwgU2VydmljZVdvcmtlcklkZW50aWZpZXI6OmdlbmVyYXRlKCks
IHNjcmlwdCwgY2VydGlmaWNhdGVJbmZvLCBjb250ZW50U2VjdXJpdHlQb2xpY3ksIHJlZmVycmVy
UG9saWN5LCB1cmwsIHR5cGUsIGZhbHNlLCBjbGllbnRJc0FwcEJvdW5kRm9yUmVnaXN0cmFibGVE
b21haW4oUmVnaXN0cmFibGVEb21haW4odXJsKSksIFdURk1vdmUoc2NyaXB0UmVzb3VyY2VNYXAp
IH0pOworICAgIHRyeUluc3RhbGxDb250ZXh0RGF0YShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEg
eyBqb2JEYXRhSWRlbnRpZmllciwgcmVnaXN0cmF0aW9uLmRhdGEoKSwgU2VydmljZVdvcmtlcklk
ZW50aWZpZXI6OmdlbmVyYXRlKCksIHNjcmlwdCwgY2VydGlmaWNhdGVJbmZvLCBjb250ZW50U2Vj
dXJpdHlQb2xpY3ksIHJlZmVycmVyUG9saWN5LCB1cmwsIHR5cGUsIGZhbHNlLCBjbGllbnRJc0Fw
cEluaXRpYXRlZEZvclJlZ2lzdHJhYmxlRG9tYWluKFJlZ2lzdHJhYmxlRG9tYWluKHVybCkpLCBX
VEZNb3ZlKHNjcmlwdFJlc291cmNlTWFwKSB9KTsKIH0KIAotTGFzdE5hdmlnYXRpb25XYXNBcHBC
b3VuZCBTV1NlcnZlcjo6Y2xpZW50SXNBcHBCb3VuZEZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pCitMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRl
ZCBTV1NlcnZlcjo6Y2xpZW50SXNBcHBJbml0aWF0ZWRGb3JSZWdpc3RyYWJsZURvbWFpbihjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKQogewogICAgIGF1dG8gY2xpZW50c0J5UmVnaXN0
cmFibGVEb21haW5JdGVyYXRvciA9IG1fY2xpZW50c0J5UmVnaXN0cmFibGVEb21haW4uZmluZChk
b21haW4pOwogICAgIGlmIChjbGllbnRzQnlSZWdpc3RyYWJsZURvbWFpbkl0ZXJhdG9yID09IG1f
Y2xpZW50c0J5UmVnaXN0cmFibGVEb21haW4uZW5kKCkpCi0gICAgICAgIHJldHVybiBMYXN0TmF2
aWdhdGlvbldhc0FwcEJvdW5kOjpObzsKKyAgICAgICAgcmV0dXJuIExhc3ROYXZpZ2F0aW9uV2Fz
QXBwSW5pdGlhdGVkOjpObzsKIAogICAgIGF1dG8mIGNsaWVudHNGb3JSZWdpc3RyYWJsZURvbWFp
biA9IGNsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluSXRlcmF0b3ItPnZhbHVlOwogICAgIGZvciAo
YXV0byYgY2xpZW50IDogY2xpZW50c0ZvclJlZ2lzdHJhYmxlRG9tYWluKSB7CiAgICAgICAgIGF1
dG8gZGF0YSA9IG1fY2xpZW50c0J5SWQuZmluZChjbGllbnQpOwogICAgICAgICBBU1NFUlQoZGF0
YSAhPSBtX2NsaWVudHNCeUlkLmVuZCgpKTsKLSAgICAgICAgaWYgKGRhdGEtPnZhbHVlLmxhc3RO
YXZpZ2F0aW9uV2FzQXBwQm91bmQgPT0gTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDo6WWVzKQot
ICAgICAgICAgICAgcmV0dXJuIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6OlllczsKKyAgICAg
ICAgaWYgKGRhdGEtPnZhbHVlLmxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkID09IExhc3RO
YXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpZZXMpCisgICAgICAgICAgICByZXR1cm4gTGFzdE5h
dmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6OlllczsKICAgICB9CiAKLSAgICByZXR1cm4gTGFzdE5h
dmlnYXRpb25XYXNBcHBCb3VuZDo6Tm87CisgICAgcmV0dXJuIExhc3ROYXZpZ2F0aW9uV2FzQXBw
SW5pdGlhdGVkOjpObzsKIH0KIAogdm9pZCBTV1NlcnZlcjo6dHJ5SW5zdGFsbENvbnRleHREYXRh
KFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGRhdGEpCkBAIC04ODYsMTEgKzg4NiwxMSBAQCBT
V1NlcnZlclJlZ2lzdHJhdGlvbiogU1dTZXJ2ZXI6OnJlZ2lzdHJhdGlvbkZyb21TZXJ2aWNlV29y
a2VySWRlbnRpZmllcihTZXJ2aWNlVwogICAgIHJldHVybiBpdGVyYXRvci0+dmFsdWUtPnJlZ2lz
dHJhdGlvbigpOwogfQogCi12b2lkIFNXU2VydmVyOjp1cGRhdGVBcHBCb3VuZFZhbHVlRm9yV29y
a2Vycyhjb25zdCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgTGFzdE5hdmlnYXRpb25XYXNB
cHBCb3VuZCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKQordm9pZCBTV1NlcnZlcjo6dXBkYXRl
QXBwSW5pdGlhdGVkVmFsdWVGb3JXb3JrZXJzKGNvbnN0IENsaWVudE9yaWdpbiYgY2xpZW50T3Jp
Z2luLCBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCBsYXN0TmF2aWdhdGlvbldhc0FwcElu
aXRpYXRlZCkKIHsKICAgICBmb3IgKGF1dG8mIHdvcmtlciA6IG1fcnVubmluZ09yVGVybWluYXRp
bmdXb3JrZXJzLnZhbHVlcygpKSB7CiAgICAgICAgIGlmICh3b3JrZXItPm9yaWdpbigpLmNsaWVu
dFJlZ2lzdHJhYmxlRG9tYWluKCkgPT0gY2xpZW50T3JpZ2luLmNsaWVudFJlZ2lzdHJhYmxlRG9t
YWluKCkpCi0gICAgICAgICAgICB3b3JrZXItPnVwZGF0ZUFwcEJvdW5kVmFsdWUobGFzdE5hdmln
YXRpb25XYXNBcHBCb3VuZCk7CisgICAgICAgICAgICB3b3JrZXItPnVwZGF0ZUFwcEluaXRpYXRl
ZFZhbHVlKGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKTsKICAgICB9CiB9CiAKQEAgLTg5
OSw5ICs4OTksOSBAQCB2b2lkIFNXU2VydmVyOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQo
Q2xpZW50T3JpZ2luJiYgY2xpZW50T3JpZ2luLCBTZXJ2aWNlVwogICAgIGF1dG8gY2xpZW50SWRl
bnRpZmllciA9IGRhdGEuaWRlbnRpZmllcjsKIAogICAgIC8vIFVwZGF0ZSB0aGUgYXBwLWJvdW5k
IHZhbHVlIGlmIHRoZSBuZXcgY2xpZW50IGlzIGFwcC1ib3VuZCBhbmQgdGhlIGN1cnJlbnQgY2xp
ZW50cyBmb3IgdGhlIG9yaWdpbiBhcmUgbm90IG1hcmtlZCBhcHAtYm91bmQuCi0gICAgaWYgKGRh
dGEubGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCA9PSBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5k
OjpZZXMpIHsKLSAgICAgICAgaWYgKGNsaWVudElzQXBwQm91bmRGb3JSZWdpc3RyYWJsZURvbWFp
bihjbGllbnRPcmlnaW4uY2xpZW50UmVnaXN0cmFibGVEb21haW4oKSkgPT0gTGFzdE5hdmlnYXRp
b25XYXNBcHBCb3VuZDo6Tm8pCi0gICAgICAgICAgICB1cGRhdGVBcHBCb3VuZFZhbHVlRm9yV29y
a2VycyhjbGllbnRPcmlnaW4sIGRhdGEubGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk7CisgICAg
aWYgKGRhdGEubGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgPT0gTGFzdE5hdmlnYXRpb25X
YXNBcHBJbml0aWF0ZWQ6OlllcykgeworICAgICAgICBpZiAoY2xpZW50SXNBcHBJbml0aWF0ZWRG
b3JSZWdpc3RyYWJsZURvbWFpbihjbGllbnRPcmlnaW4uY2xpZW50UmVnaXN0cmFibGVEb21haW4o
KSkgPT0gTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6Ok5vKQorICAgICAgICAgICAgdXBk
YXRlQXBwSW5pdGlhdGVkVmFsdWVGb3JXb3JrZXJzKGNsaWVudE9yaWdpbiwgZGF0YS5sYXN0TmF2
aWdhdGlvbldhc0FwcEluaXRpYXRlZCk7CiAgICAgfQogCiAgICAgQVNTRVJUKCFtX2NsaWVudHNC
eUlkLmNvbnRhaW5zKGNsaWVudElkZW50aWZpZXIpKTsKQEAgLTkzOSw3ICs5MzksNyBAQCB2b2lk
IFNXU2VydmVyOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoQ2xpZW50T3JpZ2luJiYgY2xp
ZW50T3JpZ2luLCBTZXJ2aWNlVwogdm9pZCBTV1NlcnZlcjo6dW5yZWdpc3RlclNlcnZpY2VXb3Jr
ZXJDbGllbnQoY29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4sIFNlcnZpY2VXb3JrZXJD
bGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIpCiB7CiAgICAgYXV0byBjbGllbnRSZWdp
c3RyYWJsZURvbWFpbiA9IGNsaWVudE9yaWdpbi5jbGllbnRSZWdpc3RyYWJsZURvbWFpbigpOwot
ICAgIGF1dG8gYXBwQm91bmRWYWx1ZUJlZm9yZSA9IGNsaWVudElzQXBwQm91bmRGb3JSZWdpc3Ry
YWJsZURvbWFpbihjbGllbnRPcmlnaW4uY2xpZW50UmVnaXN0cmFibGVEb21haW4oKSk7CisgICAg
YXV0byBhcHBJbml0aWF0ZWRWYWx1ZUJlZm9yZSA9IGNsaWVudElzQXBwSW5pdGlhdGVkRm9yUmVn
aXN0cmFibGVEb21haW4oY2xpZW50T3JpZ2luLmNsaWVudFJlZ2lzdHJhYmxlRG9tYWluKCkpOwog
CiAgICAgYm9vbCB3YXNSZW1vdmVkID0gbV9jbGllbnRzQnlJZC5yZW1vdmUoY2xpZW50SWRlbnRp
Zmllcik7CiAgICAgQVNTRVJUX1VOVVNFRCh3YXNSZW1vdmVkLCB3YXNSZW1vdmVkKTsKQEAgLTk4
NCw5ICs5ODQsOSBAQCB2b2lkIFNXU2VydmVyOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVu
dChjb25zdCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgUwogCiAgICAgLy8gSWYgdGhlIGFw
cC1ib3VuZCB2YWx1ZSBjaGFuZ2VkIGFmdGVyIHRoaXMgY2xpZW50IHdhcyByZW1vdmVkLCB3ZSBr
bm93IGl0IHdhcyB0aGUgb25seSBhcHAtYm91bmQKICAgICAvLyBjbGllbnQgZm9yIGl0cyBvcmln
aW4sIGFuZCB3ZSBzaG91bGQgdXBkYXRlIGFsbCB3b3JrZXJzIHRvIHJlZmxlY3QgdGhpcy4KLSAg
ICBhdXRvIGFwcEJvdW5kVmFsdWVBZnRlciA9IGNsaWVudElzQXBwQm91bmRGb3JSZWdpc3RyYWJs
ZURvbWFpbihjbGllbnRPcmlnaW4uY2xpZW50UmVnaXN0cmFibGVEb21haW4oKSk7Ci0gICAgaWYg
KGFwcEJvdW5kVmFsdWVCZWZvcmUgIT0gYXBwQm91bmRWYWx1ZUFmdGVyKQotICAgICAgICB1cGRh
dGVBcHBCb3VuZFZhbHVlRm9yV29ya2VycyhjbGllbnRPcmlnaW4sIGFwcEJvdW5kVmFsdWVBZnRl
cik7CisgICAgYXV0byBhcHBJbml0aWF0ZWRWYWx1ZUFmdGVyID0gY2xpZW50SXNBcHBJbml0aWF0
ZWRGb3JSZWdpc3RyYWJsZURvbWFpbihjbGllbnRPcmlnaW4uY2xpZW50UmVnaXN0cmFibGVEb21h
aW4oKSk7CisgICAgaWYgKGFwcEluaXRpYXRlZFZhbHVlQmVmb3JlICE9IGFwcEluaXRpYXRlZFZh
bHVlQWZ0ZXIpCisgICAgICAgIHVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlRm9yV29ya2VycyhjbGll
bnRPcmlnaW4sIGFwcEluaXRpYXRlZFZhbHVlQWZ0ZXIpOwogCiAgICAgYXV0byByZWdpc3RyYXRp
b25JdGVyYXRvciA9IG1fY2xpZW50VG9Db250cm9sbGluZ1JlZ2lzdHJhdGlvbi5maW5kKGNsaWVu
dElkZW50aWZpZXIpOwogICAgIGlmIChyZWdpc3RyYXRpb25JdGVyYXRvciA9PSBtX2NsaWVudFRv
Q29udHJvbGxpbmdSZWdpc3RyYXRpb24uZW5kKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKaW5kZXggY2Q2MjI2NjM3YTI1MTZiZjNmYzUw
MWVjNjFhMjYxZDI5MzZmYjI5NC4uNmJkNjg5MzM0NGVlZGYyZjBjYmRkZDJhMTYxNjZhOTIxZTMz
ZmUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXIuaApAQCAtMjE3LDcgKzIxNyw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdGV4
cHIgU2Vjb25kcyBkZWZhdWx0VGVybWluYXRpb25EZWxheSA9IDEwX3M7CiAKLSAgICBMYXN0TmF2
aWdhdGlvbldhc0FwcEJvdW5kIGNsaWVudElzQXBwQm91bmRGb3JSZWdpc3RyYWJsZURvbWFpbihj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYpOworICAgIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlh
dGVkIGNsaWVudElzQXBwSW5pdGlhdGVkRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0
cmFibGVEb21haW4mKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHZhbGlkYXRlUmVnaXN0cmF0aW9u
RG9tYWluKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKTsKQEAgLTI0NCw3ICsyNDQsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb250
ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJik7CiAKLSAg
ICB2b2lkIHVwZGF0ZUFwcEJvdW5kVmFsdWVGb3JXb3JrZXJzKGNvbnN0IENsaWVudE9yaWdpbiYs
IExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOworICAgIHZvaWQgdXBkYXRlQXBwSW5pdGlhdGVk
VmFsdWVGb3JXb3JrZXJzKGNvbnN0IENsaWVudE9yaWdpbiYsIExhc3ROYXZpZ2F0aW9uV2FzQXBw
SW5pdGlhdGVkKTsKIAogICAgIEhhc2hNYXA8U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwg
c3RkOjp1bmlxdWVfcHRyPENvbm5lY3Rpb24+PiBtX2Nvbm5lY3Rpb25zOwogICAgIEhhc2hNYXA8
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSwgV2Vha1B0cjxTV1NlcnZlclJlZ2lzdHJhdGlv
bj4+IG1fc2NvcGVUb1JlZ2lzdHJhdGlvbk1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAK
aW5kZXggMTJhOTVkZTBkZjBmYmQ2NDY2MWU3NmZjMjk3ZDUwNGE1MzY2NzcyNC4uZDhjYTY1Zjhl
ZWY2ZGM0Njg5ZWQ2YzhlMDVlYTg2MzRhYTg5NTkxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlv
bi5jcHAKQEAgLTM3MCwxNCArMzcwLDE0IEBAIHZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OnNv
ZnRVcGRhdGUoKQogICAgIG1fc2VydmVyLnNvZnRVcGRhdGUoKnRoaXMpOwogfQogCi12b2lkIFNX
U2VydmVyUmVnaXN0cmF0aW9uOjpzY2hlZHVsZVNvZnRVcGRhdGUoSXNBcHBCb3VuZCBpc0FwcEJv
dW5kKQordm9pZCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6c2NoZWR1bGVTb2Z0VXBkYXRlKElzQXBw
SW5pdGlhdGVkIGlzQXBwSW5pdGlhdGVkKQogewogICAgIC8vIFRvIGF2b2lkIHNjaGVkdWxpbmcg
bWFueSB1cGRhdGVzIGR1cmluZyBhIHNpbmdsZSBwYWdlIGxvYWQsIHdlIGRvIHNvZnQgdXBkYXRl
cyBvbiBhIDEgc2Vjb25kIGRlbGF5IGFuZCBrZWVwIGRlbGF5aW5nCiAgICAgLy8gYXMgbG9uZyBh
cyBzb2Z0IHVwZGF0ZSByZXF1ZXN0cyBrZWVwIGNvbWluZy4gVGhpcyBzZWVtcyB0byBtYXRjaCBD
aHJvbWUncyBiZWhhdmlvci4KICAgICBpZiAobV9zb2Z0VXBkYXRlVGltZXIuaXNBY3RpdmUoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9pc0FwcEJvdW5kID0gaXNBcHBCb3VuZCA9PSBJc0Fw
cEJvdW5kOjpZZXM7CisgICAgbV9pc0FwcEluaXRpYXRlZCA9IGlzQXBwSW5pdGlhdGVkID09IElz
QXBwSW5pdGlhdGVkOjpZZXM7CiAKICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiU1dT
ZXJ2ZXJSZWdpc3RyYXRpb246OnNvZnRVcGRhdGVJZk5lZWRlZCIpOwogICAgIG1fc29mdFVwZGF0
ZVRpbWVyLnN0YXJ0T25lU2hvdChzb2Z0VXBkYXRlRGVsYXkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlv
bi5oCmluZGV4IDlmN2YwNjBmN2NjMDRhMmM4NzViYjA0NmM3YjgxNTg4YjEyMjhiNDYuLmZjYzA1
OGEzOTg2ZDNmYWE2NzA5NjMxZWJjMmIyMzYyNDIzNDY1YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0
aW9uLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgc3RydWN0IEV4Y2VwdGlvbkRhdGE7CiBzdHJ1Y3QgU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhOwogc3RydWN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdDsK
IAotZW51bSBjbGFzcyBJc0FwcEJvdW5kIDogYm9vbCB7IE5vLCBZZXMgfTsKK2VudW0gY2xhc3Mg
SXNBcHBJbml0aWF0ZWQgOiBib29sIHsgTm8sIFllcyB9OwogCiBjbGFzcyBTV1NlcnZlclJlZ2lz
dHJhdGlvbiA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTV1NlcnZlclJlZ2lzdHJhdGlvbj4gewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMTAxLDEzICsxMDEsMTMgQEAgcHVibGlj
OgogICAgIHZvaWQgZm9yRWFjaENvbm5lY3Rpb24oY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKFNX
U2VydmVyOjpDb25uZWN0aW9uJik+Jik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3Vs
ZFNvZnRVcGRhdGUoY29uc3QgRmV0Y2hPcHRpb25zJikgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzY2hlZHVsZVNvZnRVcGRhdGUoSXNBcHBCb3VuZCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzY2hlZHVsZVNvZnRVcGRhdGUoSXNBcHBJbml0aWF0ZWQpOwogICAgIHN0YXRpYyBj
b25zdGV4cHIgU2Vjb25kcyBzb2Z0VXBkYXRlRGVsYXkgeyAxX3MgfTsKIAogICAgIFVSTCBzY29w
ZVVSTFdpdGhvdXRGcmFnbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGVVUkw7IH0KICAgICBV
Ukwgc2NyaXB0VVJMKCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHRVUkw7IH0KIAotICAgIGJvb2wg
aXNBcHBCb3VuZCgpIHsgcmV0dXJuIG1faXNBcHBCb3VuZDsgfQorICAgIGJvb2wgaXNBcHBJbml0
aWF0ZWQoKSB7IHJldHVybiBtX2lzQXBwSW5pdGlhdGVkOyB9CiAKIHByaXZhdGU6CiAgICAgdm9p
ZCBhY3RpdmF0ZSgpOwpAQCAtMTM1LDcgKzEzNSw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3Jl
OjpUaW1lciBtX3NvZnRVcGRhdGVUaW1lcjsKICAgICAKLSAgICBib29sIG1faXNBcHBCb3VuZCB7
IGZhbHNlIH07CisgICAgYm9vbCBtX2lzQXBwSW5pdGlhdGVkIHsgZmFsc2UgfTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5o
CmluZGV4IDdkNWM4ZjE0OWI3MzMxZDQwYTRhMmVhY2FkOWQ2NGI0MjAwMWM1NmQuLjFjN2YzOWRi
N2M2ZGVjZWUzNGVlM2UwNTQ4NjcxOWVmYmJiNzg4NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBNZXNz
YWdlcyB0byB0aGUgU1cgaG9zdCBwcm9jZXNzCiAgICAgdmlydHVhbCB2b2lkIGluc3RhbGxTZXJ2
aWNlV29ya2VyQ29udGV4dChjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmLCBjb25zdCBT
dHJpbmcmIHVzZXJBZ2VudCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBcHBCb3VuZFZh
bHVlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlKFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllcikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcAppbmRleCA2NTkyZGI0MTNmNzk0NWQxM2Ew
OGUxNjI1MTRiZjRhZmUwYWZhZDAzLi5kN2NjYzYyMDc1YjEwZTUxMGRiMWMxZjA4MzZhYjY0NDEw
ZjYzYTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyV29ya2VyLmNwcApAQCAtNjIsNyArNjIsNyBAQCBTV1NlcnZlcldvcmtl
cjo6U1dTZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXImIHNlcnZlciwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24m
IHJlZ2lzdHJhdAogICAgICwgbV9yZWdpc3RyYWJsZURvbWFpbihtX2RhdGEuc2NyaXB0VVJMKQog
ICAgICwgbV9zY3JpcHRSZXNvdXJjZU1hcChXVEZNb3ZlKHNjcmlwdFJlc291cmNlTWFwKSkKICAg
ICAsIG1fdGVybWluYXRpb25UaW1lcigqdGhpcywgJlNXU2VydmVyV29ya2VyOjp0ZXJtaW5hdGlv
blRpbWVyRmlyZWQpCi0gICAgLCBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQobV9zZXJ2ZXIt
PmNsaWVudElzQXBwQm91bmRGb3JSZWdpc3RyYWJsZURvbWFpbihtX3JlZ2lzdHJhYmxlRG9tYWlu
KSkKKyAgICAsIG1fbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQobV9zZXJ2ZXItPmNsaWVu
dElzQXBwSW5pdGlhdGVkRm9yUmVnaXN0cmFibGVEb21haW4obV9yZWdpc3RyYWJsZURvbWFpbikp
CiB7CiAgICAgbV9kYXRhLnNjcmlwdFVSTC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKIApA
QCAtODcsMTggKzg3LDE4IEBAIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBTV1NlcnZlcldvcmtl
cjo6Y29udGV4dERhdGEoKSBjb25zdAogewogICAgIEFTU0VSVChtX3JlZ2lzdHJhdGlvbik7CiAK
LSAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIG1fcmVnaXN0cmF0aW9uLT5kYXRhKCksIG1fZGF0
YS5pZGVudGlmaWVyLCBtX3NjcmlwdCwgbV9jZXJ0aWZpY2F0ZUluZm8sIG1fY29udGVudFNlY3Vy
aXR5UG9saWN5LCBtX3JlZmVycmVyUG9saWN5LCBtX2RhdGEuc2NyaXB0VVJMLCBtX2RhdGEudHlw
ZSwgZmFsc2UsIG1fbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCwgbV9zY3JpcHRSZXNvdXJjZU1h
cCB9OworICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgbV9yZWdpc3RyYXRpb24tPmRhdGEoKSwg
bV9kYXRhLmlkZW50aWZpZXIsIG1fc2NyaXB0LCBtX2NlcnRpZmljYXRlSW5mbywgbV9jb250ZW50
U2VjdXJpdHlQb2xpY3ksIG1fcmVmZXJyZXJQb2xpY3ksIG1fZGF0YS5zY3JpcHRVUkwsIG1fZGF0
YS50eXBlLCBmYWxzZSwgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCwgbV9zY3JpcHRS
ZXNvdXJjZU1hcCB9OwogfQogCi12b2lkIFNXU2VydmVyV29ya2VyOjp1cGRhdGVBcHBCb3VuZFZh
bHVlKExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCkK
K3ZvaWQgU1dTZXJ2ZXJXb3JrZXI6OnVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlKExhc3ROYXZpZ2F0
aW9uV2FzQXBwSW5pdGlhdGVkIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKQogewotICAg
IG1fbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCA9IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7
CisgICAgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCA9IGxhc3ROYXZpZ2F0aW9uV2Fz
QXBwSW5pdGlhdGVkOwogCiAgICAgaWYgKCFpc1J1bm5pbmcoKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBjb250ZXh0Q29ubmVjdGlvbigpKQotICAgICAg
ICBjb25uZWN0aW9uLT51cGRhdGVBcHBCb3VuZFZhbHVlKGlkZW50aWZpZXIoKSwgbGFzdE5hdmln
YXRpb25XYXNBcHBCb3VuZCk7CisgICAgICAgIGNvbm5lY3Rpb24tPnVwZGF0ZUFwcEluaXRpYXRl
ZFZhbHVlKGlkZW50aWZpZXIoKSwgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpOwogfQog
CiB2b2lkIFNXU2VydmVyV29ya2VyOjp0ZXJtaW5hdGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlcldvcmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlcldvcmtlci5oCmluZGV4IGJlNTVlZWIxYWEyZmU2MmI2MTcyMWU5MzMx
MGIwY2E0ZGExMjlkZmUuLmFiMDdjNzE3Njc2MTczNDAyZTAyYTJjZjUxMTc1OWZjN2I3ODQ0YTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyV29ya2VyLmgKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRI
YXNUaW1lZE91dEFueUZldGNoVGFza3MoKSB7IG1faGFzVGltZWRPdXRBbnlGZXRjaFRhc2tzID0g
dHJ1ZTsgfQogICAgIGJvb2wgaGFzVGltZWRPdXRBbnlGZXRjaFRhc2tzKCkgY29uc3QgeyByZXR1
cm4gbV9oYXNUaW1lZE91dEFueUZldGNoVGFza3M7IH0KICAgICB2b2lkIGRpZEZhaWxIZWFydEJl
YXRDaGVjaygpOwotICAgIHZvaWQgdXBkYXRlQXBwQm91bmRWYWx1ZShMYXN0TmF2aWdhdGlvbldh
c0FwcEJvdW5kKTsKKyAgICB2b2lkIHVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlKExhc3ROYXZpZ2F0
aW9uV2FzQXBwSW5pdGlhdGVkKTsKIAogcHJpdmF0ZToKICAgICBTV1NlcnZlcldvcmtlcihTV1Nl
cnZlciYsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiwgY29uc3QgVVJMJiwgY29uc3QgU2NyaXB0QnVm
ZmVyJiwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5
UmVzcG9uc2VIZWFkZXJzJiwgU3RyaW5nJiYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUsIFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHRE
YXRhOjpJbXBvcnRlZFNjcmlwdD4mJik7CkBAIC0xNTgsNyArMTU4LDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIG1faGFzVGltZWRPdXRBbnlGZXRjaFRhc2tzIHsgZmFsc2UgfTsKICAgICBWZWN0b3I8
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPj4gbV90ZXJtaW5hdGlvbkNhbGxiYWNrczsKICAgICBU
aW1lciBtX3Rlcm1pbmF0aW9uVGltZXI7Ci0gICAgTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCBt
X2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7CisgICAgTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0
aWF0ZWQgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAKaW5kZXggNDliZGQzZmVjNjgxMzdjZTQzNTM5NTAwMzRhZGM2YjI3NTJhZjllNS4u
ZWNjY2E4ZjZhZmJlYTA1MjVkNTE5NjRmZTlmM2I4MDY3NWFmYTNmMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTEzNjIsNyArMTM2
Miw3IEBAIGJvb2wgTmV0d29ya1Byb2Nlc3M6OnByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdN
b2RlRW5hYmxlZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRE
ZWJ1Z01vZGVFbmFibGVkOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVjb25uZWN0VG8o
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQ
cm94eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIExhc3ROYXZpZ2F0aW9u
V2FzQXBwQm91bmQgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCkKK3ZvaWQgTmV0d29ya1Byb2Nl
c3M6OnByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJ
RCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBXZWJDb3JlOjpTdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc3RkOjpvcHRpb25h
bDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
biwgTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0
aWF0ZWQpCiB7CiAgICAgTE9HKE5ldHdvcmssICIoTmV0d29ya1Byb2Nlc3MpIFByZWNvbm5lY3Rp
bmcgdG8gVVJMICVzIChzdG9yZWRDcmVkZW50aWFsc1BvbGljeSAlaSkiLCB1cmwuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSwgKGludClzdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CiAKQEAgLTEzNzgs
NyArMTM3OCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZWNvbm5lY3RUbyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpCiAKICAgICBOZXR3b3JrTG9hZFBh
cmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBwYXJhbWV0ZXJzLnJlcXVlc3QgPSBSZXNvdXJjZVJl
cXVlc3QgeyB1cmwgfTsKLSAgICBwYXJhbWV0ZXJzLnJlcXVlc3Quc2V0SXNBcHBCb3VuZChsYXN0
TmF2aWdhdGlvbldhc0FwcEJvdW5kID09IExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6Olllcyk7
CisgICAgcGFyYW1ldGVycy5yZXF1ZXN0LnNldElzQXBwSW5pdGlhdGVkKGxhc3ROYXZpZ2F0aW9u
V2FzQXBwSW5pdGlhdGVkID09IExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpZZXMpOwog
ICAgIHBhcmFtZXRlcnMucmVxdWVzdC5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyh1cmwpOwogICAg
IHBhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQgPSB3ZWJQYWdlUHJveHlJRDsKICAgICBwYXJhbWV0
ZXJzLndlYlBhZ2VJRCA9IHdlYlBhZ2VJRDsKQEAgLTI3NjYsMTkgKzI3NjYsMTkgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6c2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zKFBhZ2VJZGVudGlmaWVyIHBh
Z2VJZGVudGlmaWVyLCBWZWMKIH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQotdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6YXBwQm91bmROYXZpZ2F0aW9uRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0Rh
dGEmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmFwcFByaXZh
Y3lSZXBvcnRUZXN0aW5nRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuZXR3
b3JrU2Vzc2lvbi0+YXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEoKSk7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKG5ldHdvcmtTZXNzaW9uLT5hcHBQcml2YWN5UmVwb3J0VGVzdGluZ0Rh
dGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9
KTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRh
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJBcHBQcml2YWN5UmVw
b3J0VGVzdGluZ0RhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtT
ZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkKLSAgICAgICAgbmV0d29y
a1Nlc3Npb24tPmFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhKCkuY2xlYXJBcHBCb3VuZE5h
dmlnYXRpb25EYXRhVGVzdGluZygpOworICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+YXBwUHJpdmFj
eVJlcG9ydFRlc3RpbmdEYXRhKCkuY2xlYXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoKTsK
IAogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggNDQ3Nzg0YjFhNzgzOGRkN2JkYzk1Y2YzNzQw
NTdiY2M1OWQ4YTMzZC4uNWMyZjZjM2UxYTU2YmM1ZjllMzJjODIwMjNmYWI1OWViNThjODJmMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAt
Mjg4LDcgKzI4OCw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBDYWNoZVN0b3JhZ2VSb290UGF0aENh
bGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+OwogICAgIHZvaWQgY2Fj
aGVTdG9yYWdlUm9vdFBhdGgoUEFMOjpTZXNzaW9uSUQsIENhY2hlU3RvcmFnZVJvb3RQYXRoQ2Fs
bGJhY2smJik7CiAKLSAgICB2b2lkIHByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCwgV2ViUGFn
ZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFVSTCYsIGNv
bnN0IFN0cmluZyYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzdGQ6Om9wdGlv
bmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgTGFzdE5hdmlnYXRpb25XYXNBcHBCb3Vu
ZCk7CisgICAgdm9pZCBwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBjb25zdCBTdHJp
bmcmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc3RkOjpvcHRpb25hbDxOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKTsK
IAogICAgIHZvaWQgc2V0U2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0b21hdGlvbihQQUw6OlNlc3Np
b25JRCwgYm9vbCk7CiAgICAgYm9vbCBzZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKFBB
TDo6U2Vzc2lvbklEKSBjb25zdDsKQEAgLTM3Nyw4ICszNzcsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRDT1JTRGlzYWJsaW5nUGF0dGVybnMoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFZlY3Rv
cjxTdHJpbmc+JiYpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBhcHBCb3VuZE5h
dmlnYXRpb25EYXRhKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IEFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhJik+JiYpOwotICAgIHZvaWQgY2xlYXJBcHBC
b3VuZE5hdmlnYXRpb25EYXRhKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOworICAgIHZvaWQgYXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKFBBTDo6U2Vzc2lv
bklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEFwcFByaXZhY3lSZXBvcnRUZXN0aW5n
RGF0YSYpPiYmKTsKKyAgICB2b2lkIGNsZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKFBB
TDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGFlMTVmZjBlMTJjYTU0NTE3ODkw
N2Q5NzJhMDljZTZkMjMyMWEyZDQuLmUwNWYyZTMyMDU4NDczN2IzNDdmYWIyMWJmNmEyZTY5Nzlh
OGM4Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNzcsNyArNzcsNyBAQCBtZXNzYWdlcyAtPiBOZXR3
b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgUHJlcGFyZVRvU3VzcGVuZChib29sIGlz
U3VzcGVuc2lvbkltbWluZW50KSAtPiAoKSBBc3luYwogICAgIFByb2Nlc3NEaWRSZXN1bWUoKQog
Ci0gICAgUHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpXZWJQ
YWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciB3ZWJQYWdlSUQsIFVSTCB1cmwsIFN0cmluZyB1c2VyQWdlbnQsIGVudW06dWludDhfdCBXZWJD
b3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgZW51
bTpib29sIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4g
aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgZW51bTpib29sIFdlYktpdDo6TGFzdE5hdmln
YXRpb25XYXNBcHBCb3VuZCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKTsKKyAgICBQcmVjb25u
ZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50
aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwg
VVJMIHVybCwgU3RyaW5nIHVzZXJBZ2VudCwgZW51bTp1aW50OF90IFdlYkNvcmU6OlN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBlbnVtOmJvb2wgc3RkOjpv
cHRpb25hbDxXZWJLaXQ6Ok5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluLCBlbnVtOmJvb2wgV2ViS2l0OjpMYXN0TmF2aWdhdGlvbldhc0FwcElu
aXRpYXRlZCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk7CiAKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIENsZWFyUHJldmFsZW50UmVzb3VyY2UoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZXNvdXJjZURv
bWFpbikgLT4gKCkgQXN5bmMKQEAgLTE5Myw4ICsxOTMsOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3Jr
UHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgQ2xlYXJCdW5kbGVJZGVudGlmaWVyKCkgLT4g
KCkgQXN5bmMKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIEFwcEJvdW5kTmF2aWdhdGlvbkRh
dGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoc3RydWN0IFdlYktpdDo6QXBwQm91bmRO
YXZpZ2F0aW9uVGVzdGluZ0RhdGEgZGF0YSkgQXN5bmMKLSAgICBDbGVhckFwcEJvdW5kTmF2aWdh
dGlvbkRhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYworICAgIEFwcFBy
aXZhY3lSZXBvcnRUZXN0aW5nRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChzdHJ1
Y3QgV2ViS2l0OjpBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEgZGF0YSkgQXN5bmMKKyAgICBD
bGVhckFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQp
IC0+ICgpIEFzeW5jCiAjZW5kaWYKIAogICAgIEFkZFdlYlBhZ2VOZXR3b3JrUGFyYW1ldGVycyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBw
YWdlSUQsIFdlYktpdDo6V2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzIHBhcmFtZXRlcnMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAKaW5kZXggMDgyM2Y5ZTM1YmFlOWNlNmQ4NTU1MmRlYTE5MTZmZDQ4YWMzNTI1ZS4uOWFl
OTQ5ZjRlN2JmNTEzZmJkZjk2ZmJiZTJjMWUwYzg3NTQ4YzUxMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAt
ODgzLDcgKzg4Myw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGly
ZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsCiAKIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpjb250aW51ZVdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBSZXNv
dXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4mJiBwcml2YXRlQ2xpY2tNZWFz
dXJlbWVudEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpCiB7Ci0gICAgcmVkaXJlY3RSZXF1ZXN0LnNl
dElzQXBwQm91bmQocmVxdWVzdC5pc0FwcEJvdW5kKCkpOworICAgIHJlZGlyZWN0UmVxdWVzdC5z
ZXRJc0FwcEluaXRpYXRlZChyZXF1ZXN0LmlzQXBwSW5pdGlhdGVkKCkpOwogCiAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgiY29udGludWVXaWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0OiAobV9p
c0tlcHRBbGl2ZT0lZCwgaGFzQWRDbGlja0NvbnZlcnNpb249JWQpIiwgbV9pc0tlcHRBbGl2ZSwg
ISFwcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpOwogICAgIEFT
U0VSVCghaXNTeW5jaHJvbm91cygpKTsKQEAgLTE1MTcsNyArMTUxNyw3IEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpzZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlKFNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2sqIGZlCiAKIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZGVyOjppc0FwcEJvdW5kKCkK
IHsKLSAgICByZXR1cm4gbV9wYXJhbWV0ZXJzLnJlcXVlc3QuaXNBcHBCb3VuZCgpOworICAgIHJl
dHVybiBtX3BhcmFtZXRlcnMucmVxdWVzdC5pc0FwcEluaXRpYXRlZCgpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nl
c3Npb24uaAppbmRleCA3ZmE5Mjc0NGYyMTUyZGMzNjMwMTViOGFjMmQ4MjY1MDQzNWRjYjI0Li4x
YWNhZTg5M2FkZTQ2ODEyYjc2MDkwZjMyY2JhYTBkNDEwOGJhYjlhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCkBAIC0xNjEsNyArMTYxLDcgQEAg
cHVibGljOgogICAgIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlciYgcHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQoKSB7IHJldHVybiAqbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudDsgfQogCiAj
aWYgUExBVEZPUk0oQ09DT0EpCi0gICAgQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEmIGFw
cEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhKCkgeyByZXR1cm4gbV9hcHBCb3VuZE5hdmlnYXRp
b25UZXN0aW5nRGF0YTsgfQorICAgIEFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSYgYXBwUHJp
dmFjeVJlcG9ydFRlc3RpbmdEYXRhKCkgeyByZXR1cm4gbV9hcHBQcml2YWN5UmVwb3J0VGVzdGlu
Z0RhdGE7IH0KICNlbmRpZgogCiAgICAgdm9pZCBhZGRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5l
dHdvcmtMb2FkZXIoc3RkOjp1bmlxdWVfcHRyPFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29y
a0xvYWRlcj4mJiBsb2FkZXIpIHsgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2Fk
ZXJzLmFkZChXVEZNb3ZlKGxvYWRlcikpOyB9CkBAIC0yMTksNyArMjE5LDcgQEAgcHJvdGVjdGVk
OgogI2VuZGlmCiAgICAgCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgQXBwQm91bmROYXZpZ2F0
aW9uVGVzdGluZ0RhdGEgbV9hcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YTsKKyAgICBBcHBQ
cml2YWN5UmVwb3J0VGVzdGluZ0RhdGEgbV9hcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGE7CiAj
ZW5kaWYKIAogICAgIEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRyPFByaXZhdGVDbGlja01lYXN1cmVt
ZW50TmV0d29ya0xvYWRlcj4+IG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVy
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAppbmRleCA4OTVjZGM3
MTA2YzZjZjI5YTk2NTJlMzEwMzFmMmUxYTM0NWVhOTRkLi5mYjJlN2ZhYzg2NGNjZmI2Mjc0OGFh
YzIyODYxMDA3ZWZlNjA1OGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRh
c2suY3BwCkBAIC0yNTUsNyArMjU1LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpz
b2Z0VXBkYXRlSWZOZWVkZWQoKQogICAgIGlmICghbV9zaG91bGRTb2Z0VXBkYXRlKQogICAgICAg
ICByZXR1cm47CiAgICAgaWYgKGF1dG8qIHJlZ2lzdHJhdGlvbiA9IG1fbG9hZGVyLmNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MoKS5zd0Nvbm5lY3Rpb24oKS5zZXJ2ZXIoKS5nZXRSZWdpc3RyYXRpb24o
bV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcikpCi0gICAgICAgIHJlZ2lzdHJh
dGlvbi0+c2NoZWR1bGVTb2Z0VXBkYXRlKG1fbG9hZGVyLmlzQXBwQm91bmQoKSA/IFdlYkNvcmU6
OklzQXBwQm91bmQ6OlllcyA6IFdlYkNvcmU6OklzQXBwQm91bmQ6Ok5vKTsKKyAgICAgICAgcmVn
aXN0cmF0aW9uLT5zY2hlZHVsZVNvZnRVcGRhdGUobV9sb2FkZXIuaXNBcHBCb3VuZCgpID8gV2Vi
Q29yZTo6SXNBcHBJbml0aWF0ZWQ6OlllcyA6IFdlYkNvcmU6OklzQXBwSW5pdGlhdGVkOjpObyk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKaW5kZXggNGZmMWIxZmQyM2Y2NmFmMzEyOTljYzhi
YjVjYjJjZWM1Y2VmMGE1Yy4uMDRhZWQ5Mzg1NzlkNzM1ZWUwODMzZjkwZWQzMzM0YzdmZTQ2Y2Nl
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIu
Y3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRl
cjo6bG9hZEZyb21OZXR3b3JrKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBSZXMKICAgICBtX25l
dHdvcmtMb2FkLT5zdGFydCgpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgc2Vzc2lvbi5h
cHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSgpLnNldERpZFBlcmZvcm1Tb2Z0VXBkYXRlKCk7
CisgICAgc2Vzc2lvbi5hcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoKS5zZXREaWRQZXJmb3Jt
U29mdFVwZGF0ZSgpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVj
dGlvbi5jcHAKaW5kZXggMmNkYTk5NWRlY2ZmZmYyZmMxNmU3YjczZWZjOTg3MjM4ZjA1OTAyMC4u
MjAyYjk0MDEyMmVkOTY3OGViZWRmNmM5MjI0Mjk1M2RmZGE3MDIyYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTE0Nyw3ICsxNDcsNyBAQCB2b2lkIFdlYlNX
U2VydmVyQ29ubmVjdGlvbjo6Y29udHJvbENsaWVudChTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRp
ZmllciBjbGllbnRJZAogICAgICAgICB1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjbGll
bnRJZGVudGlmaWVyKTsKICAgICB9KTsKIAotICAgIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIGRh
dGEgeyBjbGllbnRJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZTo6V2luZG93LCBT
ZXJ2aWNlV29ya2VyQ2xpZW50RnJhbWVUeXBlOjpOb25lLCByZXF1ZXN0LnVybCgpLCByZXF1ZXN0
LmlzQXBwQm91bmQoKSA/IFdlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6OlllcyA6
IFdlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6Ok5vIH07CisgICAgU2VydmljZVdv
cmtlckNsaWVudERhdGEgZGF0YSB7IGNsaWVudElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJDbGll
bnRUeXBlOjpXaW5kb3csIFNlcnZpY2VXb3JrZXJDbGllbnRGcmFtZVR5cGU6Ok5vbmUsIHJlcXVl
c3QudXJsKCksIHJlcXVlc3QuaXNBcHBJbml0aWF0ZWQoKSA/IFdlYkNvcmU6Okxhc3ROYXZpZ2F0
aW9uV2FzQXBwSW5pdGlhdGVkOjpZZXMgOiBXZWJDb3JlOjpMYXN0TmF2aWdhdGlvbldhc0FwcElu
aXRpYXRlZDo6Tm8gfTsKICAgICByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoU2VjdXJpdHlP
cmlnaW5EYXRhIHsgcmVnaXN0cmF0aW9uLmtleSgpLnRvcE9yaWdpbigpIH0sIFdURk1vdmUoZGF0
YSksIHJlZ2lzdHJhdGlvbi5pZGVudGlmaWVyKCksIHJlcXVlc3QuaHR0cFVzZXJBZ2VudCgpKTsK
IH0KIApAQCAtMTg4LDcgKzE4OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrPiBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmNyZWF0ZUZldGNoVGFzayhOCiAgICAgYm9v
bCBzaG91bGRTb2Z0VXBkYXRlID0gcmVnaXN0cmF0aW9uICYmIHJlZ2lzdHJhdGlvbi0+c2hvdWxk
U29mdFVwZGF0ZShsb2FkZXIucGFyYW1ldGVycygpLm9wdGlvbnMpOwogICAgIGlmICh3b3JrZXIt
PnNob3VsZFNraXBGZXRjaEV2ZW50KCkpIHsKICAgICAgICAgaWYgKHNob3VsZFNvZnRVcGRhdGUp
Ci0gICAgICAgICAgICByZWdpc3RyYXRpb24tPnNjaGVkdWxlU29mdFVwZGF0ZShsb2FkZXIuaXNB
cHBCb3VuZCgpID8gV2ViQ29yZTo6SXNBcHBCb3VuZDo6WWVzIDogV2ViQ29yZTo6SXNBcHBCb3Vu
ZDo6Tm8pOworICAgICAgICAgICAgcmVnaXN0cmF0aW9uLT5zY2hlZHVsZVNvZnRVcGRhdGUobG9h
ZGVyLmlzQXBwQm91bmQoKSA/IFdlYkNvcmU6OklzQXBwSW5pdGlhdGVkOjpZZXMgOiBXZWJDb3Jl
OjpJc0FwcEluaXRpYXRlZDo6Tm8pOwogCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAK
aW5kZXggM2ZhMGU5OTcwZjI1NTVjYzgwNGI5Mjc0YjBmN2VkZDE5NTcyNTUyYS4uZTkwMmVjMDc1
ODA1MGU5OWY2MDE3ZGJmNzEwZGE4MzU1OWFkYzM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTkyLDkgKzkyLDkgQEAgdm9p
ZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Omluc3RhbGxTZXJ2aWNlV29ya2VyQ29u
dGV4dChjb25zdCBTZXJ2aWNlV28KICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6SW5zdGFsbFNlcnZpY2VXb3JrZXIgeyBkYXRhLCB1c2VyQWdlbnQgfSk7
CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp1cGRhdGVBcHBCb3Vu
ZFZhbHVlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBX
ZWJDb3JlOjpMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91
bmQpCit2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6dXBkYXRlQXBwSW5pdGlh
dGVkVmFsdWUoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIs
IFdlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIGxhc3ROYXZpZ2F0aW9uV2Fz
QXBwSW5pdGlhdGVkKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uOjpVcGRhdGVBcHBCb3VuZFZhbHVlKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBs
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb246OlVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlKHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCkpOwogfQogCiB2b2lk
IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZmlyZUluc3RhbGxFdmVudChTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCBiMDExNGQyZjhkNzYx
MTdiZDk2MDg5NjU5NjA5M2Q0NTg3YWEwMWVjLi5hZTNhMWE1Njg2ZmFhNWI3ZWZmNDRkZjgwNTM3
ZWFmNzdmMThmZTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5oCkBAIC04Niw3ICs4Niw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBNZXNzYWdl
cyB0byB0aGUgU1cgaG9zdCBXZWJQcm9jZXNzCiAgICAgdm9pZCBpbnN0YWxsU2VydmljZVdvcmtl
ckNvbnRleHQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhJiwgY29uc3Qg
U3RyaW5nJiB1c2VyQWdlbnQpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlQXBwQm91bmRWYWx1ZShX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25X
YXNBcHBCb3VuZCkgZmluYWw7CisgICAgdm9pZCB1cGRhdGVBcHBJbml0aWF0ZWRWYWx1ZShXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNB
cHBJbml0aWF0ZWQpIGZpbmFsOwogICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudChXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVu
dChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCB0ZXJt
aW5hdGVXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
cGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAKaW5kZXggZTFiZGY2
OWQ2NTQ3NTAwZTJlM2I3MDM4NjhlZTEzZmQxMDc0NDQ2OC4uYmE2Njk0MzFkMDgyMDRkYmRjNDMz
ZDgxZWMzODI4ZWQ0ZDAwMDliZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZl
TG9hZE1hbmFnZXIuY3BwCkBAIC05Myw3ICs5Myw3IEBAIHN0YXRpYyBpbmxpbmUgUmVzb3VyY2VS
ZXF1ZXN0IGNvbnN0cnVjdFJldmFsaWRhdGlvblJlcXVlc3QoY29uc3QgS2V5JiBrZXksIGNvbnN0
CiAgICAgcmV2YWxpZGF0aW9uUmVxdWVzdC5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhzdWJSZXNv
dXJjZUluZm8uZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSk7CiAgICAgcmV2YWxpZGF0aW9uUmVxdWVz
dC5zZXRJc1NhbWVTaXRlKHN1YlJlc291cmNlSW5mby5pc1NhbWVTaXRlKCkpOwogICAgIHJldmFs
aWRhdGlvblJlcXVlc3Quc2V0SXNUb3BTaXRlKHN1YlJlc291cmNlSW5mby5pc1RvcFNpdGUoKSk7
Ci0gICAgcmV2YWxpZGF0aW9uUmVxdWVzdC5zZXRJc0FwcEJvdW5kKHN1YlJlc291cmNlSW5mby5p
c0FwcEJvdW5kKCkpOworICAgIHJldmFsaWRhdGlvblJlcXVlc3Quc2V0SXNBcHBJbml0aWF0ZWQo
c3ViUmVzb3VyY2VJbmZvLmlzQXBwSW5pdGlhdGVkKCkpOwogCiAgICAgaWYgKCFrZXkucGFydGl0
aW9uKCkuaXNFbXB0eSgpKQogICAgICAgICByZXZhbGlkYXRpb25SZXF1ZXN0LnNldENhY2hlUGFy
dGl0aW9uKGtleS5wYXJ0aXRpb24oKSk7CkBAIC0zNjksNyArMzY5LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUxvYWRNYW5hZ2VyOjpyZWdpc3RlckxvYWQoY29uc3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJ
RCwgY29uc3QgUmUKICAgICAgICAgbV9wZW5kaW5nRnJhbWVMb2Fkcy5hZGQoZnJhbWVJRCwgcGVu
ZGluZ0ZyYW1lTG9hZC5jb3B5UmVmKCkpOwogCiAgICAgICAgIC8vIFJldHJpZXZlIHRoZSBzdWJy
ZXNvdXJjZXMgZW50cnkgaWYgaXQgZXhpc3RzIHRvIHN0YXJ0IHNwZWN1bGF0aXZlIHJldmFsaWRh
dGlvbiBhbmQgdG8gdXBkYXRlIGl0LgotICAgICAgICByZXRyaWV2ZVN1YnJlc291cmNlc0VudHJ5
KHJlc291cmNlS2V5LCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIGZyYW1l
SUQsIHBlbmRpbmdGcmFtZUxvYWQgPSBXVEZNb3ZlKHBlbmRpbmdGcmFtZUxvYWQpLCByZXF1ZXN0
SXNBcHBCb3VuZCA9IHJlcXVlc3QuaXNBcHBCb3VuZCgpLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluXShzdGQ6OnVuaXF1ZV9wdHI8U3VicmVzb3VyY2VzRW50cnk+IGVudHJ5KSB7CisgICAg
ICAgIHJldHJpZXZlU3VicmVzb3VyY2VzRW50cnkocmVzb3VyY2VLZXksIFt0aGlzLCB3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgZnJhbWVJRCwgcGVuZGluZ0ZyYW1lTG9hZCA9IFdURk1v
dmUocGVuZGluZ0ZyYW1lTG9hZCksIHJlcXVlc3RJc0FwcEJvdW5kID0gcmVxdWVzdC5pc0FwcElu
aXRpYXRlZCgpLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluXShzdGQ6OnVuaXF1ZV9wdHI8
U3VicmVzb3VyY2VzRW50cnk+IGVudHJ5KSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNTk2LDcgKzU5Niw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVMb2FkTWFuYWdlcjo6c3RhcnRTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbihjb25zdCBHbG9i
YWxGcmFtZUlEJiBmCiB7CiAgICAgZm9yIChhdXRvJiBzdWJyZXNvdXJjZUluZm8gOiBlbnRyeS5z
dWJyZXNvdXJjZXMoKSkgewogICAgICAgICBhdXRvJiBrZXkgPSBzdWJyZXNvdXJjZUluZm8ua2V5
KCk7Ci0gICAgICAgIHN1YnJlc291cmNlSW5mby5zZXRJc0FwcEJvdW5kKHJlcXVlc3RJc0FwcEJv
dW5kKTsKKyAgICAgICAgc3VicmVzb3VyY2VJbmZvLnNldElzQXBwSW5pdGlhdGVkKHJlcXVlc3RJ
c0FwcEJvdW5kKTsKICAgICAgICAgaWYgKCFzdWJyZXNvdXJjZUluZm8uaXNUcmFuc2llbnQoKSkK
ICAgICAgICAgICAgIHByZWxvYWRFbnRyeShrZXksIHN1YnJlc291cmNlSW5mbywgZnJhbWVJRCwg
aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik7CiAgICAgICAgIGVsc2UgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNv
dXJjZXNFbnRyeS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5oCmluZGV4IDYwYTQwNjNiMjM0NWQ5MjVlMmM3ODc4NDU5
OTIwZTEwZjI3ODIzMGUuLjQwYzliMjAxNzg4ZjgxOGE1NzhiODNmMWFlMzRiN2ZjZjVlNDEzZWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3VicmVzb3VyY2VzRW50cnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmgKQEAgLTU5LDggKzU5LDggQEAg
cHVibGljOgogCiAgICAgYm9vbCBpc0ZpcnN0UGFydHkoKSBjb25zdDsKIAotICAgIGJvb2wgaXNB
cHBCb3VuZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNBcHBCb3VuZDsgfQotICAgIHZvaWQgc2V0SXNB
cHBCb3VuZChib29sIGlzQXBwQm91bmQpIHsgbV9pc0FwcEJvdW5kID0gaXNBcHBCb3VuZDsgfQor
ICAgIGJvb2wgaXNBcHBJbml0aWF0ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQXBwSW5pdGlhdGVk
OyB9CisgICAgdm9pZCBzZXRJc0FwcEluaXRpYXRlZChib29sIGlzQXBwSW5pdGlhdGVkKSB7IG1f
aXNBcHBJbml0aWF0ZWQgPSBpc0FwcEluaXRpYXRlZDsgfQogCiBwcml2YXRlOgogICAgIEtleSBt
X2tleTsKQEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICBXYWxsVGltZSBtX2ZpcnN0U2Vl
bjsKICAgICBib29sIG1faXNUcmFuc2llbnQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1NhbWVT
aXRlIHsgZmFsc2UgfTsKLSAgICBib29sIG1faXNBcHBCb3VuZCB7IGZhbHNlIH07CisgICAgYm9v
bCBtX2lzQXBwSW5pdGlhdGVkIHsgdHJ1ZSB9OwogICAgIFVSTCBtX2ZpcnN0UGFydHlGb3JDb29r
aWVzOwogICAgIFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAgbV9yZXF1ZXN0SGVhZGVyczsKICAgICBX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRQcmlvcml0eSBtX3ByaW9yaXR5OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2Eu
bW0KaW5kZXggMzQwZDdkYWMyODZiNzNiODNjNTFlYmQwZjY4MGZjNGFiZjlkYWY5NS4uZWVmMGQ0
MmUzZDgzNTRkZmQwMzM2YmQ0YjhkNjJhYmI1NGUwNTgwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1t
CkBAIC01Nyw4ICs1Nyw3IEBACiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICNpbXBvcnQg
PFdlYktpdEFkZGl0aW9ucy9OZXR3b3JrRGF0YVRhc2tDb2NvYUFkZGl0aW9ucy5oPgogI2Vsc2UK
LSNkZWZpbmUgTkVUV09SS19EQVRBX1RBU0tfQ09DT0FfQURESVRJT05TIFVOVVNFRF9WQVJJQUJM
RShwY21EYXRhQ2FycmllZCk7Ci1zdGF0aWMgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gY29u
dGV4dFN0cmluZyhOU1VSTFJlcXVlc3QgKikgeyByZXR1cm4geyB9OyB9CitzdGF0aWMgdm9pZCBw
cm9jZXNzUENNUmVxdWVzdChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0
YUNhcnJpZWQsIE5TTXV0YWJsZVVSTFJlcXVlc3QgKiBfTm9ubnVsbCk7CiAjZW5kaWYKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CkBAIC0zNDIsMTAgKzM0MSwyMCBAQCBOZXR3b3JrRGF0YVRhc2tDb2Nv
YTo6TmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtE
YXRhVAogICAgIE5TVVJMUmVxdWVzdCAqbnNSZXF1ZXN0ID0gcmVxdWVzdC5uc1VSTFJlcXVlc3Qo
V2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OlVwZGF0ZUhUVFBCb2R5KTsKICAgICBhdXRv
IHBjbURhdGFDYXJyaWVkID0gcGFyYW1ldGVycy5wY21EYXRhQ2FycmllZDsKIAotICAgIE5FVFdP
UktfREFUQV9UQVNLX0NPQ09BX0FERElUSU9OUworICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm11
dGFibGVSZXF1ZXN0ID0gW1tuc1JlcXVlc3QgbXV0YWJsZUNvcHldIGF1dG9yZWxlYXNlXTsKKwor
I2lmIEVOQUJMRShBUFBfUFJJVkFDWV9SRVBPUlQpCisgICAgTlNVUkxSZXF1ZXN0QXR0cmlidXRp
b24gYXR0cmlidXRpb25WYWx1ZSA9IHJlcXVlc3QuaXNBcHBJbml0aWF0ZWQoKSA/IE5TVVJMUmVx
dWVzdEF0dHJpYnV0aW9uRGV2ZWxvcGVyIDogTlNVUkxSZXF1ZXN0QXR0cmlidXRpb25Vc2VyOwor
ICAgIG11dGFibGVSZXF1ZXN0LmF0dHJpYnV0aW9uID0gYXR0cmlidXRpb25WYWx1ZTsKKyNlbmRp
ZgorCisgICAgaWYgKHBjbURhdGFDYXJyaWVkKQorICAgICAgICBwcm9jZXNzUENNUmVxdWVzdCgq
cGNtRGF0YUNhcnJpZWQsIG11dGFibGVSZXF1ZXN0KTsKKworICAgIG5zUmVxdWVzdCA9IG11dGFi
bGVSZXF1ZXN0OwogCiAgICAgYXV0byBwcm90ZWN0ZWROU1JlcXVlc3QgPSByZXRhaW5QdHIobnNS
ZXF1ZXN0KTsKLSAgICBtX3Nlc3Npb24tPmFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhKCku
dXBkYXRlQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEocmVxdWVzdCwgY29udGV4dFN0cmlu
Zyhwcm90ZWN0ZWROU1JlcXVlc3QuZ2V0KCkpKTsKKyAgICBtX3Nlc3Npb24tPmFwcFByaXZhY3lS
ZXBvcnRUZXN0aW5nRGF0YSgpLmRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0KG5zUmVxdWVzdC5h
dHRyaWJ1dGlvbiA9PSBOU1VSTFJlcXVlc3RBdHRyaWJ1dGlvbkRldmVsb3Blcik7CiAKICAgICBh
cHBseVNuaWZmaW5nUG9saWNpZXNBbmRCaW5kUmVxdWVzdFRvSW5mZXJmYWNlSWZOZWVkZWQocHJv
dGVjdGVkTlNSZXF1ZXN0LCBwYXJhbWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1BvbGljeSA9PSBXZWJD
b3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3k6OlNuaWZmQ29udGVudCAmJiAhdXJsLmlzTG9jYWxG
aWxlKCksIHBhcmFtZXRlcnMuY29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3kgPT0gV2ViQ29y
ZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3k6OlNuaWZmKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1t
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29h
Lm1tCmluZGV4IGY3N2NlNzk0OTFhZTBlYWEzMTE1NjNkODFhN2JkMGEzZjQ2NGVhNWMuLmM0NzRm
MDhmZDdkNWU0MTdlYzNiNWE4NGQwOGU5NWFjY2Y0YTdkOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0K
QEAgLTY1LDcgKzY1LDI2IEBACiAjaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvTmV0d29ya1Nlc3Np
b25Db2NvYUFkZGl0aW9ucy5oPgogI2Vsc2UKICNkZWZpbmUgTkVUV09SS19TRVNTSU9OX0NPQ09B
X0FERElUSU9OU18xCi12b2lkIFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6cmVtb3ZlTmV0
d29ya1dlYnNpdGVEYXRhKHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+LCBzdGQ6Om9wdGlvbmFsPEhh
c2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+PiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoKTsgfQorI2Vu
ZGlmCisKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpCisjaW5jbHVkZSA8U3lt
cHRvbXMvU3ltcHRvbUFuYWx5dGljcy5oPgorI2luY2x1ZGUgPFN5bXB0b21zL1N5bXB0b21QcmVz
ZW50YXRpb25GZWVkLmg+CisjZW5kaWYKKworI2luY2x1ZGUgPHd0Zi9kYXJ3aW4vV2Vha0xpbmtp
bmcuaD4KKworI2lmICFQTEFURk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikgJiYgIVBMQVRGT1JN
KFdBVENIT1MpCitTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfSU5fVU1CUkVMTEFfT1BUSU9O
QUwoU3ltcHRvbXMsIFN5bXB0b21BbmFseXRpY3MpOworU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVX
T1JLX0lOX1VNQlJFTExBX09QVElPTkFMKFN5bXB0b21zLCBTeW1wdG9tUHJlc2VudGF0aW9uRmVl
ZCk7CitTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfSU5fVU1CUkVMTEFfT1BUSU9OQUwoU3lt
cHRvbXMsIFN5bXB0b21QcmVzZW50YXRpb25MaXRlKTsKK1NPRlRfTElOS19DTEFTU19PUFRJT05B
TChTeW1wdG9tQW5hbHl0aWNzLCBBbmFseXRpY3NXb3Jrc3BhY2UpOworU09GVF9MSU5LX0NMQVNT
X09QVElPTkFMKFN5bXB0b21QcmVzZW50YXRpb25GZWVkLCBVc2FnZUZlZWQpOworU09GVF9MSU5L
X0NPTlNUQU5UX01BWV9GQUlMKFN5bXB0b21QcmVzZW50YXRpb25GZWVkLCBrU3ltcHRvbUFuYWx5
dGljc1NlcnZpY2VEb21haW5UcmFja2luZ0NsZWFySGlzdG9yeUJ1bmRsZUlEcywgY29uc3QgTlNT
dHJpbmcgKik7CitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoU3ltcHRvbVByZXNlbnRhdGlv
bkZlZWQsIGtTeW1wdG9tQW5hbHl0aWNzU2VydmljZURvbWFpblRyYWNraW5nQ2xlYXJIaXN0b3J5
U3RhcnREYXRlLCBjb25zdCBOU1N0cmluZyAqKTsKK1NPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJ
TChTeW1wdG9tUHJlc2VudGF0aW9uRmVlZCwga1N5bXB0b21BbmFseXRpY3NTZXJ2aWNlRG9tYWlu
VHJhY2tpbmdDbGVhckhpc3RvcnlFbmREYXRlLCBjb25zdCBOU1N0cmluZyAqKTsKK1NPRlRfTElO
S19DT05TVEFOVF9NQVlfRkFJTChTeW1wdG9tUHJlc2VudGF0aW9uRmVlZCwga1N5bXB0b21BbmFs
eXRpY3NTZXJ2aWNlRG9tYWluVHJhY2tpbmdDbGVhckhpc3RvcnlLZXksIGNvbnN0IE5TU3RyaW5n
ICopOworU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKFN5bXB0b21QcmVzZW50YXRpb25MaXRl
LCBrU3ltcHRvbUFuYWx5dGljc1NlcnZpY2VFbmRwb2ludCwgTlNTdHJpbmcgKikKICNlbmRpZgog
CiAjaW1wb3J0ICJEZXZpY2VNYW5hZ2VtZW50U29mdExpbmsuaCIKQEAgLTE3NjEsNCArMTc4MCw4
MSBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmNsZWFyQWx0ZXJuYXRpdmVTZXJ2aWNlcyhX
YWxsVGltZSBtb2RpZmllZFNpbmNlKQogI2VuZGlmCiB9CiAKKyNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWV9TSU1VTEFUT1IpICYmICFQTEFURk9STShXQVRDSE9TKQorc3RhdGljIGJvb2wgaXNBY3Rp
bmdPbkJlaGFsZk9mQUZ1bGxXZWJCcm93c2VyKGNvbnN0IFN0cmluZyYgYnVuZGxlSUQpCit7Cisg
ICAgcmV0dXJuIGJ1bmRsZUlEID09ICJjb20uYXBwbGUud2ViYm9va21hcmtzZCI7Cit9CisjZW5k
aWYKKwordm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpyZW1vdmVOZXR3b3JrV2Vic2l0ZURhdGEo
c3RkOjpvcHRpb25hbDxXYWxsVGltZT4gbW9kaWZpZWRTaW5jZSwgc3RkOjpvcHRpb25hbDxIYXNo
U2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPj4mJiBkb21haW5zLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisjaWYgIVBMQVRGT1JNKElPU19G
QU1JTFlfU0lNVUxBVE9SKSAmJiAhUExBVEZPUk0oV0FUQ0hPUykKKyAgICBhdXRvIGJ1bmRsZUlE
ID0gV2ViQ29yZTo6YXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCk7CisgICAgaWYgKCFpc1Bh
cmVudFByb2Nlc3NBRnVsbFdlYkJyb3dzZXIobmV0d29ya1Byb2Nlc3MoKSkgJiYgIWlzQWN0aW5n
T25CZWhhbGZPZkFGdWxsV2ViQnJvd3NlcihidW5kbGVJRCkpCisgICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcigpOworCisgICAgaWYgKCFTeW1wdG9tQW5hbHl0aWNzTGlicmFyeSgpCisg
ICAgICAgIHx8ICFTeW1wdG9tUHJlc2VudGF0aW9uRmVlZExpYnJhcnkoKQorICAgICAgICB8fCAh
U3ltcHRvbVByZXNlbnRhdGlvbkxpdGVMaWJyYXJ5KCkKKyAgICAgICAgfHwgIWdldEFuYWx5dGlj
c1dvcmtzcGFjZUNsYXNzKCkKKyAgICAgICAgfHwgIWdldFVzYWdlRmVlZENsYXNzKCkKKyAgICAg
ICAgfHwgIWNhbkxvYWRrU3ltcHRvbUFuYWx5dGljc1NlcnZpY2VFbmRwb2ludCgpKSB7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBS
ZXRhaW5QdHI8QW5hbHl0aWNzV29ya3NwYWNlPiB3b3Jrc3BhY2UgPSBhZG9wdE5TKFtbYWxsb2NB
bmFseXRpY3NXb3Jrc3BhY2VJbnN0YW5jZSgpIGFsbG9jXSBpbml0V29ya3NwYWNlV2l0aFNlcnZp
Y2U6Z2V0a1N5bXB0b21BbmFseXRpY3NTZXJ2aWNlRW5kcG9pbnQoKV0pOworICAgIFJldGFpblB0
cjxVc2FnZUZlZWQ+IHVzYWdlRmVlZCA9IGFkb3B0TlMoW1thbGxvY1VzYWdlRmVlZEluc3RhbmNl
KCkgYWxsb2NdIGluaXRXaXRoV29ya3NwYWNlOndvcmtzcGFjZS5nZXQoKV0pOworCisgICAgaWYg
KCFbdXNhZ2VGZWVkLmdldCgpIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGVyZm9ybU5l
dHdvcmtEb21haW5zQWN0aW9uV2l0aE9wdGlvbnM6cmVwbHk6KV0KKyAgICAgICAgfHwgIWNhbkxv
YWRrU3ltcHRvbUFuYWx5dGljc1NlcnZpY2VEb21haW5UcmFja2luZ0NsZWFySGlzdG9yeUtleSgp
CisgICAgICAgIHx8ICFjYW5Mb2Fka1N5bXB0b21BbmFseXRpY3NTZXJ2aWNlRG9tYWluVHJhY2tp
bmdDbGVhckhpc3RvcnlCdW5kbGVJRHMoKQorICAgICAgICB8fCAhY2FuTG9hZGtTeW1wdG9tQW5h
bHl0aWNzU2VydmljZURvbWFpblRyYWNraW5nQ2xlYXJIaXN0b3J5U3RhcnREYXRlKCkKKyAgICAg
ICAgfHwgIWNhbkxvYWRrU3ltcHRvbUFuYWx5dGljc1NlcnZpY2VEb21haW5UcmFja2luZ0NsZWFy
SGlzdG9yeUVuZERhdGUoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgYXV0byAqc3RhcnREYXRlID0gW05TRGF0ZSBkaXN0YW50
UGFzdF07CisgICAgaWYgKG1vZGlmaWVkU2luY2UpIHsKKyAgICAgICAgTlNUaW1lSW50ZXJ2YWwg
dGltZUludGVydmFsID0gbW9kaWZpZWRTaW5jZS52YWx1ZSgpLnNlY29uZHNTaW5jZUVwb2NoKCku
c2Vjb25kcygpOworICAgICAgICBzdGFydERhdGUgPSBbTlNEYXRlIGRhdGVXaXRoVGltZUludGVy
dmFsU2luY2UxOTcwOnRpbWVJbnRlcnZhbF07CisgICAgfQorCisgICAgYXV0byBjb250ZXh0QXJy
YXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICBpZiAoZG9t
YWlucykgeworICAgICAgICBjb250ZXh0QXJyYXkgPSBjcmVhdGVOU0FycmF5KCpkb21haW5zLCBb
Jl0gKGF1dG8gZG9tYWluKSB7CisgICAgICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dp
dGhVVEY4U3RyaW5nOmRvbWFpbi5zdHJpbmcoKS51dGY4KCkuZGF0YSgpXTsKKyAgICAgICAgfSk7
CisgICAgfQorCisgICAgaWYgKGlzQWN0aW5nT25CZWhhbGZPZkFGdWxsV2ViQnJvd3NlcihidW5k
bGVJRCkpCisgICAgICAgIGJ1bmRsZUlEID0gImNvbS5hcHBsZS5tb2JpbGVzYWZhcmkiOworCisg
ICAgTlNEaWN0aW9uYXJ5ICpvcHRpb25zID0gQHsKKyAgICAgICAgKGlkKWdldGtTeW1wdG9tQW5h
bHl0aWNzU2VydmljZURvbWFpblRyYWNraW5nQ2xlYXJIaXN0b3J5S2V5KCk6IEB7CisgICAgICAg
ICAgICAoaWQpZ2V0a1N5bXB0b21BbmFseXRpY3NTZXJ2aWNlRG9tYWluVHJhY2tpbmdDbGVhckhp
c3RvcnlCdW5kbGVJRHMoKTogQHsKKyAgICAgICAgICAgICAgICBidW5kbGVJRCA6IGNvbnRleHRB
cnJheS5nZXQoKSwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAoaWQpZ2V0a1N5bXB0b21B
bmFseXRpY3NTZXJ2aWNlRG9tYWluVHJhY2tpbmdDbGVhckhpc3RvcnlTdGFydERhdGUoKTogc3Rh
cnREYXRlLAorICAgICAgICAgICAgKGlkKWdldGtTeW1wdG9tQW5hbHl0aWNzU2VydmljZURvbWFp
blRyYWNraW5nQ2xlYXJIaXN0b3J5RW5kRGF0ZSgpOiBbTlNEYXRlIGRpc3RhbnRGdXR1cmVdCisg
ICAgICAgIH0KKyAgICB9OworCisgICAgYm9vbCByZXN1bHQgPSBbdXNhZ2VGZWVkIHBlcmZvcm1O
ZXR3b3JrRG9tYWluc0FjdGlvbldpdGhPcHRpb25zOm9wdGlvbnMgcmVwbHk6bWFrZUJsb2NrUHRy
KFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShOU0RpY3Rp
b25hcnkgKnJlcGx5LCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CisgICAgICAgIGlmIChlcnJv
cikKKyAgICAgICAgICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIkVycm9yIGRlbGV0aW5nIG5ldHdv
cmsgZG9tYWluIGRhdGEgJSIgUFVCTElDX0xPR19TVFJJTkcsIGVycm9yKTsKKworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcigpOworICAgIH0pLmdldCgpXTsKKworICAgIGlmICghcmVzdWx0KQor
ICAgICAgICBMT0coTmV0d29ya1Nlc3Npb24sICJFcnJvciBkZWxldGluZyBuZXR3b3JrIGRvbWFp
biBkYXRhOiBpbnZhbGlkIHBhcmFtZXRlciBvciBmYWlsdXJlIHRvIGNvbnRhY3QgdGhlIHNlcnZp
Y2UiKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKG1vZGlmaWVkU2luY2UpOworICAgIGNvbXBs
ZXRpb25IYW5kbGVyKCk7CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCAzMWU0OTU3ZWFhYzc0OGE1
ZmIxNzc0Y2QxMzNjYzA3Y2NlZjBhYzg5Li42NWM3NDljYzM3N2VlZjIxZTRjZDMwOTNhZGY3NWFk
YzM0YTExOTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAg
LTcwMiw3ICs3MDIsNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dl
YkNvcmU6Okluc3BlY3Rvck92ZXJsYXk6OkhpZ2hsaWdodCc6IFsnPFdlYkNvcmUvSW5zcGVjdG9y
T3ZlcmxheS5oPiddLAogICAgICAgICAnV2ViQ29yZTo6S2V5ZnJhbWVWYWx1ZUxpc3QnOiBbJzxX
ZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OktleXByZXNzQ29t
bWFuZCc6IFsnPFdlYkNvcmUvS2V5Ym9hcmRFdmVudC5oPiddLAotICAgICAgICAnV2ViQ29yZTo6
TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCc6IFsnPFdlYkNvcmUvU2VydmljZVdvcmtlckNsaWVu
dERhdGEuaD4nXSwKKyAgICAgICAgJ1dlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlh
dGVkJzogWyc8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oPiddLAogICAgICAgICAn
V2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudDo6TWVkaWFLZXlFcnJvckNvZGUnOiBbJzxX
ZWJDb3JlL0xlZ2FjeUNETVNlc3Npb24uaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkxvY2tCYWNr
Rm9yd2FyZExpc3QnOiBbJzxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4nXSwKICAgICAgICAg
J1dlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eSc6IFsnPFdl
YkNvcmUvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaD4nXSwKQEAgLTc1Niw3ICs3NTYsNyBA
QCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dlYkNvcmU6OldpbGxDb250
aW51ZUxvYWRpbmcnOiBbJzxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4nXSwKICAgICAgICAg
J1dlYkNvcmU6OlNlbGVjdGlvbkdlb21ldHJ5JzogWyciRWRpdG9yU3RhdGUuaCInXSwKICAgICAg
ICAgJ1dlYktpdDo6QWN0aXZpdHlTdGF0ZUNoYW5nZUlEJzogWyciRHJhd2luZ0FyZWFJbmZvLmgi
J10sCi0gICAgICAgICdXZWJLaXQ6OkFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhJzogWyci
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaCInXSwKKyAgICAgICAgJ1dlYktpdDo6QXBwUHJp
dmFjeVJlcG9ydFRlc3RpbmdEYXRhJzogWyciTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaCIn
XSwKICAgICAgICAgJ1dlYktpdDo6QWxsb3dPdmVyd3JpdGUnOiBbJyJEb3dubG9hZElELmgiJ10s
CiAgICAgICAgICdXZWJLaXQ6OkJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSc6IFsnIlNlc3Npb25T
dGF0ZS5oIiddLAogICAgICAgICAnV2ViS2l0OjpDYWxsRG93bmxvYWREaWRTdGFydCc6IFsnIkRv
d25sb2FkTWFuYWdlci5oIiddLApAQCAtNzY1LDcgKzc2NSw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90
eXBlKHR5cGUpOgogICAgICAgICAnV2ViS2l0OjpGaW5kT3B0aW9ucyc6IFsnIldlYkZpbmRPcHRp
b25zLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyU3RhdGUnOiBbJyJH
ZXN0dXJlVHlwZXMuaCInXSwKICAgICAgICAgJ1dlYktpdDo6R2VzdHVyZVR5cGUnOiBbJyJHZXN0
dXJlVHlwZXMuaCInXSwKLSAgICAgICAgJ1dlYktpdDo6TGFzdE5hdmlnYXRpb25XYXNBcHBCb3Vu
ZCc6IFsnIk5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmgiJ10sCisgICAgICAgICdXZWJLaXQ6
Okxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkJzogWyciTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4uaCInXSwKICAgICAgICAgJ1dlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dElEJzogWyci
TGF5ZXJIb3N0aW5nQ29udGV4dC5oIiddLAogICAgICAgICAnV2ViS2l0OjpMYXllckhvc3RpbmdN
b2RlJzogWyciTGF5ZXJUcmVlQ29udGV4dC5oIiddLAogICAgICAgICAnV2ViS2l0OjpQYWdlU3Rh
dGUnOiBbJyJTZXNzaW9uU3RhdGUuaCInXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KaW5kZXggZjgyMTg5YmVm
OTFhYTQxYzE3NmM3NmRiYzJiNDA3OGMzMDBmNmExMC4uNjE1YjU3ODhhNTQwMmMzYmEwZTIwODhl
NzNjMzc3YmJhZjQ4YTRkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2Ev
V2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KQEAgLTYwNyw3ICs2MDcsNyBAQCB2
b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlUGxhdGZv
cm1EYXRhKEVuY29kZXImIGVuY29kZQogICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIHJlcXVlc3RU
b1NlcmlhbGl6ZS5nZXQoKSk7CiAKICAgICBlbmNvZGVyIDw8IHJlc291cmNlUmVxdWVzdC5yZXF1
ZXN0ZXIoKTsKLSAgICBlbmNvZGVyIDw8IHJlc291cmNlUmVxdWVzdC5pc0FwcEJvdW5kKCk7Cisg
ICAgZW5jb2RlciA8PCByZXNvdXJjZVJlcXVlc3QuaXNBcHBJbml0aWF0ZWQoKTsKIH0KIAogYm9v
bCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD46OmRlY29kZVBsYXRmb3Jt
RGF0YShEZWNvZGVyJiBkZWNvZGVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNl
UmVxdWVzdCkKQEAgLTYyOSwxMyArNjI5LDEzIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYgZGVjb2RlCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXF1ZXN0ZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBib29sIGlzQXBwQm91bmQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShpc0FwcEJv
dW5kKSkKKyAgICBib29sIGlzQXBwSW5pdGlhdGVkOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
aXNBcHBJbml0aWF0ZWQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXNvdXJjZVJl
cXVlc3QgPSBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QocmVxdWVzdC0+Z2V0KCkpOwogICAgIHJl
c291cmNlUmVxdWVzdC5zZXRSZXF1ZXN0ZXIocmVxdWVzdGVyKTsKLSAgICByZXNvdXJjZVJlcXVl
c3Quc2V0SXNBcHBCb3VuZChpc0FwcEJvdW5kKTsKKyAgICByZXNvdXJjZVJlcXVlc3Quc2V0SXNB
cHBJbml0aWF0ZWQoaXNBcHBJbml0aWF0ZWQpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5o
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaAppbmRl
eCBlMzRhYzVlNTdmNDExZThhNmQzMDAyYTU2OWEwMzE4MDdjY2Y0NDAwLi5hMTIyZmVlNWI3MGJj
N2RhMTUxZmJjYmVjNDE4YzZhZmNmNGEyNzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9OYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmgKQEAgLTM1LDUxICszNSw0NSBAQAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIGVudW0gY2xhc3MgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4g
OiBib29sIHsgTm8sIFllcyB9OwotZW51bSBjbGFzcyBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5k
IDogYm9vbCB7IE5vLCBZZXMgfTsKLQotdXNpbmcgQ29udGV4dERvbWFpbiA9IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluOwotdXNpbmcgUmVxdWVzdERvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluOworZW51bSBjbGFzcyBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCA6IGJv
b2wgeyBObywgWWVzIH07CiAKICNpZiBQTEFURk9STShDT0NPQSkKLXN0cnVjdCBBcHBCb3VuZE5h
dmlnYXRpb25UZXN0aW5nRGF0YSB7CitzdHJ1Y3QgQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRh
IHsKIAogICAgIHZvaWQgc2V0RGlkUGVyZm9ybVNvZnRVcGRhdGUoKQogICAgIHsKICAgICAgICAg
ZGlkUGVyZm9ybVNvZnRVcGRhdGUgPSB0cnVlOwogICAgIH0KICAgICAKLSAgICB2b2lkIGNsZWFy
QXBwQm91bmROYXZpZ2F0aW9uRGF0YVRlc3RpbmcoKQorICAgIHZvaWQgY2xlYXJBcHBQcml2YWN5
UmVwb3J0VGVzdGluZ0RhdGEoKQogICAgIHsKLSAgICAgICAgaGFzTG9hZGVkQXBwQm91bmRSZXF1
ZXN0VGVzdGluZyA9IGZhbHNlOwotICAgICAgICBoYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RU
ZXN0aW5nID0gZmFsc2U7CisgICAgICAgIGhhc0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0
aW5nID0gZmFsc2U7CisgICAgICAgIGhhc0xvYWRlZE5vbkFwcEluaXRpYXRlZFJlcXVlc3RUZXN0
aW5nID0gZmFsc2U7CiAgICAgICAgIGRpZFBlcmZvcm1Tb2Z0VXBkYXRlID0gZmFsc2U7Ci0gICAg
ICAgIGNvbnRleHREYXRhLmNsZWFyKCk7CiAgICAgfQogCi0gICAgdm9pZCB1cGRhdGVBcHBCb3Vu
ZE5hdmlnYXRpb25UZXN0aW5nRGF0YShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgY29udGV4dERvbWFpbikKKyAgICB2
b2lkIGRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0KGJvb2wgaXNBcHBJbml0aWF0ZWQpCiAgICAg
ewotICAgICAgICByZXF1ZXN0LmlzQXBwQm91bmQoKSA/IGhhc0xvYWRlZEFwcEJvdW5kUmVxdWVz
dFRlc3RpbmcgPSB0cnVlIDogaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZyA9IHRy
dWU7Ci0gICAgICAgIGNvbnRleHREYXRhLmFkZChXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbihy
ZXF1ZXN0LnVybCgpKSwgY29udGV4dERvbWFpbik7CisgICAgICAgIGlzQXBwSW5pdGlhdGVkID8g
aGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcgPSB0cnVlIDogaGFzTG9hZGVkTm9u
QXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcgPSB0cnVlOwogICAgIH0KIAogICAgIHZvaWQgZW5j
b2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICB7Ci0gICAgICAgIGVuY29kZXIg
PDwgaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZzsKLSAgICAgICAgZW5jb2RlciA8PCBo
YXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nOworICAgICAgICBlbmNvZGVyIDw8IGhh
c0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nOworICAgICAgICBlbmNvZGVyIDw8IGhh
c0xvYWRlZE5vbkFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nOwogICAgICAgICBlbmNvZGVyIDw8
IGRpZFBlcmZvcm1Tb2Z0VXBkYXRlOwotICAgICAgICBlbmNvZGVyIDw8IGNvbnRleHREYXRhOwog
ICAgIH0KIAotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEFwcEJvdW5kTmF2aWdhdGlvblRlc3Rp
bmdEYXRhPiBkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQorICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPEFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YT4gZGVjb2RlKElQQzo6RGVjb2RlciYg
ZGVjb2RlcikKICAgICB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaGFzTG9hZGVkQXBw
Qm91bmRSZXF1ZXN0VGVzdGluZzsKLSAgICAgICAgZGVjb2RlciA+PiBoYXNMb2FkZWRBcHBCb3Vu
ZFJlcXVlc3RUZXN0aW5nOwotICAgICAgICBpZiAoIWhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRl
c3RpbmcpCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaGFzTG9hZGVkQXBwSW5pdGlhdGVk
UmVxdWVzdFRlc3Rpbmc7CisgICAgICAgIGRlY29kZXIgPj4gaGFzTG9hZGVkQXBwSW5pdGlhdGVk
UmVxdWVzdFRlc3Rpbmc7CisgICAgICAgIGlmICghaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVz
dFRlc3RpbmcpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4gaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZzsKLSAg
ICAgICAgZGVjb2RlciA+PiBoYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nOwotICAg
ICAgICBpZiAoIWhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3RpbmcpCisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4gaGFzTG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3Rpbmc7
CisgICAgICAgIGRlY29kZXIgPj4gaGFzTG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3Rp
bmc7CisgICAgICAgIGlmICghaGFzTG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3Rpbmcp
CiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAKICAgICAgICAgc3Rk
OjpvcHRpb25hbDxib29sPiBkaWRQZXJmb3JtU29mdFVwZGF0ZTsKQEAgLTg3LDE4ICs4MSwxMiBA
QCBzdHJ1Y3QgQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEgewogICAgICAgICBpZiAoIWRp
ZFBlcmZvcm1Tb2Z0VXBkYXRlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAot
ICAgICAgICBzdGQ6Om9wdGlvbmFsPEhhc2hNYXA8UmVxdWVzdERvbWFpbiwgQ29udGV4dERvbWFp
bj4+IGNvbnRleHREYXRhOwotICAgICAgICBkZWNvZGVyID4+IGNvbnRleHREYXRhOwotICAgICAg
ICBpZiAoIWNvbnRleHREYXRhKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQot
ICAgICAgICByZXR1cm4ge3sgKmhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcsICpoYXNM
b2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nLCAqZGlkUGVyZm9ybVNvZnRVcGRhdGUsIFdU
Rk1vdmUoKmNvbnRleHREYXRhKSB9fTsKKyAgICAgICAgcmV0dXJuIHt7ICpoYXNMb2FkZWRBcHBJ
bml0aWF0ZWRSZXF1ZXN0VGVzdGluZywgKmhhc0xvYWRlZE5vbkFwcEluaXRpYXRlZFJlcXVlc3RU
ZXN0aW5nLCAqZGlkUGVyZm9ybVNvZnRVcGRhdGUgfX07CiAgICAgfQogCi0gICAgYm9vbCBoYXNM
b2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nIHsgZmFsc2UgfTsKLSAgICBib29sIGhhc0xvYWRl
ZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3RpbmcgeyBmYWxzZSB9OworICAgIGJvb2wgaGFzTG9hZGVk
QXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcgeyBmYWxzZSB9OworICAgIGJvb2wgaGFzTG9hZGVk
Tm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcgeyBmYWxzZSB9OwogICAgIGJvb2wgZGlkUGVy
Zm9ybVNvZnRVcGRhdGUgeyBmYWxzZSB9OwotICAgIEhhc2hNYXA8UmVxdWVzdERvbWFpbiwgQ29u
dGV4dERvbWFpbj4gY29udGV4dERhdGE7CiB9OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggOWU3YjdmMmZi
ZGExMDdkMWNkOTAwMjQ4YTVkOWI2YWM2YmE3MjlkNi4uMTRlMDg1Mjk0Y2NhMDUxZWQ3ZGU1OWUw
ZDNjY2U4Njg5OTI1OTQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTE3Myw3ICsxNzMsNyBAQCB2b2lkIFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAj
aWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIGVuY29kZXIgPDwgbGltaXRzTmF2aWdh
dGlvbnNUb0FwcEJvdW5kRG9tYWluczsKICNlbmRpZgotICAgIGVuY29kZXIgPDwgbGFzdE5hdmln
YXRpb25XYXNBcHBCb3VuZDsKKyAgICBlbmNvZGVyIDw8IGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5p
dGlhdGVkOwogICAgIGVuY29kZXIgPDwgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmc7CiAgICAgZW5jb2RlciA8PCBjYW5Vc2VDcmVkZW50aWFsU3RvcmFnZTsKIApAQCAtNTc3LDcg
KzU3Nyw3IEBAIHN0ZDo6b3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShwYXJhbWV0ZXJzLmxpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMpKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2VuZGlmCi0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShw
YXJhbWV0ZXJzLmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpKQorICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocGFyYW1ldGVycy5sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCkpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRl
cnMuc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IGQ1YjEzZDJiMDkx
NWI0OGVjZTliZjZkZTk2ZTg3YmE1OTA5NGVmZTUuLjY1Nzg3MzkxNzEwNmVjNjZhYTNhYjU4Nzkx
MmY3OGQ1MWY4NGU3MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzLmgKQEAgLTI0MSw3ICsyNDEsNyBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycyB7CiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIGJvb2wg
bGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyB7IGZhbHNlIH07CiAjZW5kaWYKLSAg
ICBib29sIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgeyBmYWxzZSB9OworICAgIGJvb2wgbGFz
dE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgeyB0cnVlIH07CiAgICAgYm9vbCBjYW5Vc2VDcmVk
ZW50aWFsU3RvcmFnZSB7IHRydWUgfTsKIAogICAgIFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHsg
V2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc6Ok5vIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCAyNmMy
YTUyMjFjNDQwNTY0ZjY1N2U0OTRjMzYzZjhjYjA1ZWMxOTBhLi40Mzg0YTYzYWRkOTBhYTkxMDFh
ZjAwNmI2YjUxNzg5ZGM2OWE2OTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTIzOTIsMzIgKzIzOTIsMTkgQEAgc3RhdGljIHZvaWQg
Y29udmVydEFuZEFkZEhpZ2hsaWdodChWZWN0b3I8UmVmPFdlYktpdDo6U2hhcmVkTWVtb3J5Pj4m
IGJ1ZmZlcnMsIE4KICAgICAgICAgX3BhZ2UtPnN3aXRjaEZyb21TdGF0aWNGb250UmVnaXN0cnlU
b1VzZXJGb250UmVnaXN0cnkoKTsKIH0KIAotLSAodm9pZClfYXBwQm91bmROYXZpZ2F0aW9uRGF0
YUZvckRvbWFpbjooTlNTdHJpbmcgKilkb21haW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KE5TU3RyaW5nICogY29udGV4dCkpY29tcGxldGlvbkhhbmRsZXIKKy0gKHZvaWQpX2RpZExvYWRB
cHBJbml0aWF0ZWRSZXF1ZXN0Oih2b2lkICheKShCT09MIHJlc3VsdCkpY29tcGxldGlvbkhhbmRs
ZXIKIHsKICAgICBUSFJPV19JRl9TVVNQRU5ERUQ7Ci0gICAgX3BhZ2UtPmFwcEJvdW5kTmF2aWdh
dGlvbkRhdGEoW3JlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW46
OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KGRvbWFpbiksIGNvbXBsZXRpb25IYW5kbGVyID0gbWFr
ZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8mJiBhcHBCb3VuZERhdGEpIG11dGFi
bGUgewotICAgICAgICBpZiAoIWFwcEJvdW5kRGF0YS5jb250ZXh0RGF0YS5jb250YWlucyhyZWdp
c3RyYWJsZURvbWFpbikpIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG5pbCk7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihhcHBCb3VuZERhdGEuY29udGV4dERhdGEuZ2V0KHJlZ2lzdHJhYmxlRG9tYWluKS5zdHJpbmco
KSk7Ci0gICAgfSk7Ci19Ci0KLS0gKHZvaWQpX2RpZExvYWRBcHBCb3VuZFJlcXVlc3Q6KHZvaWQg
KF4pKEJPT0wgcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcgotewotICAgIFRIUk9XX0lGX1NVU1BF
TkRFRDsKLSAgICBfcGFnZS0+YXBwQm91bmROYXZpZ2F0aW9uRGF0YShbY29tcGxldGlvbkhhbmRs
ZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byYmIGFwcEJvdW5kRGF0
YSkgbXV0YWJsZSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGFwcEJvdW5kRGF0YS5oYXNM
b2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nKTsKKyAgICBfcGFnZS0+YXBwUHJpdmFjeVJlcG9y
dFRlc3RpbmdEYXRhKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9u
SGFuZGxlcildIChhdXRvJiYgYXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKSBtdXRhYmxlIHsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhLmhh
c0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nKTsKICAgICB9KTsKIH0KIAotLSAodm9p
ZClfZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdDoodm9pZCAoXikoQk9PTCByZXN1bHQpKWNvbXBs
ZXRpb25IYW5kbGVyCistICh2b2lkKV9kaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdDoodm9p
ZCAoXikoQk9PTCByZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAgICAgVEhST1dfSUZfU1VT
UEVOREVEOwotICAgIF9wYWdlLT5hcHBCb3VuZE5hdmlnYXRpb25EYXRhKFtjb21wbGV0aW9uSGFu
ZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChhdXRvJiYgYXBwQm91bmRE
YXRhKSBtdXRhYmxlIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXBwQm91bmREYXRhLmhh
c0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3RpbmcpOworICAgIF9wYWdlLT5hcHBQcml2YWN5
UmVwb3J0VGVzdGluZ0RhdGEoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBs
ZXRpb25IYW5kbGVyKV0gKGF1dG8mJiBhcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEpIG11dGFi
bGUgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhcHBQcml2YWN5UmVwb3J0VGVzdGluZ0Rh
dGEuaGFzTG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcpOwogICAgIH0pOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1By
aXZhdGUuaAppbmRleCA0ZmRkNzhkOGM2MmRjMTVlNjdhMDI2ZmNmNjcwNjJjMTBlYmNhODQyLi5k
NjE1NDc5NjE2MzM1NGI3ZjkxNWM1Njg1MmNmY2NkMTM4ZTkzZmNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTQw
Niw5ICs0MDYsOCBAQCBmb3IgdGhpcyBwcm9wZXJ0eS4KICovCiAtICh2b2lkKV9zd2l0Y2hGcm9t
U3RhdGljRm9udFJlZ2lzdHJ5VG9Vc2VyRm9udFJlZ2lzdHJ5IFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoV0tfTUFDX1RCQSkpOwogCi0tICh2b2lkKV9hcHBCb3VuZE5hdmlnYXRpb25EYXRhRm9yRG9t
YWluOihOU1N0cmluZyAqKWRvbWFpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNTdHJp
bmcgKiBjb250ZXh0KSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwotLSAodm9pZClfZGlkTG9hZEFwcEJvdW5kUmVx
dWVzdDoodm9pZCAoXikoQk9PTCByZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyOwotLSAodm9pZClf
ZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdDoodm9pZCAoXikoQk9PTCByZXN1bHQpKWNvbXBsZXRp
b25IYW5kbGVyOworLSAodm9pZClfZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3Q6KHZvaWQgKF4p
KEJPT0wgcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpX2RpZExvYWROb25BcHBJ
bml0aWF0ZWRSZXF1ZXN0Oih2b2lkICheKShCT09MIHJlc3VsdCkpY29tcGxldGlvbkhhbmRsZXI7
CiAKIC0gKHZvaWQpX3N1c3BlbmRQYWdlOih2b2lkICheKShCT09MKSljb21wbGV0aW9uSGFuZGxl
ciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwog
LSAodm9pZClfcmVzdW1lUGFnZToodm9pZCAoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRl
Rm9yVGVzdGluZy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d1ByaXZhdGVGb3JUZXN0aW5nLmgKaW5kZXggNTFmYzA0YTMyNmJmOGNmMzMxMzYxNjk0MWZhODA1
NDg1ZTRiMzVlMi4uNDg1N2UxY2QxNTU1NjMyOTZmYzc1ZmE2MDMwNTJlY2MwMzMxMzkwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZh
dGVGb3JUZXN0aW5nLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmgKQEAgLTM0LDkgKzM0LDkgQEAgdHlwZWRlZiBlbnVt
IHsKICAgICBXS1dlYlZpZXdBdWRpb1JvdXRpbmdBcmJpdHJhdGlvblN0YXR1c0FjdGl2ZSwKIH0g
V0tXZWJWaWV3QXVkaW9Sb3V0aW5nQXJiaXRyYXRpb25TdGF0dXM7CiAKLXN0cnVjdCBXS0FwcEJv
dW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhIHsKLSAgICBCT09MIGhhc0xvYWRlZEFwcEJvdW5kUmVx
dWVzdFRlc3Rpbmc7Ci0gICAgQk9PTCBoYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5n
Oworc3RydWN0IFdLQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhIHsKKyAgICBCT09MIGhhc0xv
YWRlZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nOworICAgIEJPT0wgaGFzTG9hZGVkTm9uQXBw
SW5pdGlhdGVkUmVxdWVzdFRlc3Rpbmc7CiAgICAgQk9PTCBkaWRQZXJmb3JtU29mdFVwZGF0ZTsK
IH07CiAKQEAgLTEwMiw5ICsxMDIsOSBAQCBzdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0
aW5nRGF0YSB7CiAtICh2b2lkKV9zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9u
VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nOihOU1VSTCAqKXVybCBjb21wbGV0aW9uSGFuZGxl
cjoodm9pZCheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29z
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClfc2V0UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZzooTlNVUkwg
Kil1cmwgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIg
V0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAot
LSAodm9pZClfbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDoodm9pZCheKShCT09MKSljb21wbGV0
aW9uSGFuZGxlcjsKLS0gKHZvaWQpX2FwcEJvdW5kTmF2aWdhdGlvbkRhdGE6KHZvaWQoXikoc3Ry
dWN0IFdLQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEgZGF0YSkpY29tcGxldGlvbkhhbmRs
ZXI7Ci0tICh2b2lkKV9jbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGE6KHZvaWQoXikodm9pZCkp
Y29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKV9sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRl
ZDoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpX2FwcFByaXZhY3lS
ZXBvcnRUZXN0aW5nRGF0YToodm9pZCheKShzdHJ1Y3QgV0tBcHBQcml2YWN5UmVwb3J0VGVzdGlu
Z0RhdGEgZGF0YSkpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKV9jbGVhckFwcFByaXZhY3lS
ZXBvcnRUZXN0aW5nRGF0YToodm9pZCheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcjsKIAogLSAo
dm9pZClfY3JlYXRlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JGb3JUZXN0aW5nOihpZCA8X1dLTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3I+KXByaXZhdGVDb29yZGluYXRvciBjb21wbGV0aW9uSGFuZGxl
cjoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1Rlc3RpbmcubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVzdGluZy5tbQppbmRleCBhNGJj
NjFhMmJmNzdlMWYxZGQ4ZGFkYWQ2NDJmZTBiZDM4MTFhY2NkLi5jYmFkMGVkODgzYWJkNmE1OGFl
ZDJiZThjOTRjZTBlYmIxNzUxZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVzdGluZy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVzdGluZy5tbQpAQCAtMzY1LDIzICszNjUsMjMgQEAK
ICNlbmRpZgogfQogCi0tICh2b2lkKV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOih2b2lkKF4p
KEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCistICh2b2lkKV9sYXN0TmF2aWdhdGlvbldhc0FwcElu
aXRpYXRlZDoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgogewotICAgIF9wYWdlLT5s
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0
cihjb21wbGV0aW9uSGFuZGxlcildIChib29sIGlzQXBwQm91bmQpIHsKLSAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoaXNBcHBCb3VuZCk7CisgICAgX3BhZ2UtPmxhc3ROYXZpZ2F0aW9uV2FzQXBw
SW5pdGlhdGVkKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFu
ZGxlcildIChib29sIGlzQXBwSW5pdGlhdGVkKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KGlzQXBwSW5pdGlhdGVkKTsKICAgICB9KTsKIH0KIAotLSAodm9pZClfYXBwQm91bmROYXZpZ2F0
aW9uRGF0YToodm9pZCheKShzdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBk
YXRhKSljb21wbGV0aW9uSGFuZGxlcgorLSAodm9pZClfYXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdE
YXRhOih2b2lkKF4pKHN0cnVjdCBXS0FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSBkYXRhKSlj
b21wbGV0aW9uSGFuZGxlcgogewotICAgIF9wYWdlLT5hcHBCb3VuZE5hdmlnYXRpb25EYXRhKFtj
b21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChhdXRv
JiYgYXBwQm91bmREYXRhKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgYXBwQm91bmRE
YXRhLmhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcsIGFwcEJvdW5kRGF0YS5oYXNMb2Fk
ZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nLCBhcHBCb3VuZERhdGEuZGlkUGVyZm9ybVNvZnRV
cGRhdGUgfSk7CisgICAgX3BhZ2UtPmFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YShbY29tcGxl
dGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byYmIGFw
cFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7
IGFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YS5oYXNMb2FkZWRBcHBJbml0aWF0ZWRSZXF1ZXN0
VGVzdGluZywgYXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhLmhhc0xvYWRlZE5vbkFwcEluaXRp
YXRlZFJlcXVlc3RUZXN0aW5nLCBhcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEuZGlkUGVyZm9y
bVNvZnRVcGRhdGUgfSk7CiAgICAgfSk7CiB9CiAKLS0gKHZvaWQpX2NsZWFyQXBwQm91bmROYXZp
Z2F0aW9uRGF0YToodm9pZCheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgorLSAodm9pZClfY2xl
YXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGE6KHZvaWQoXikodm9pZCkpY29tcGxldGlvbkhh
bmRsZXIKIHsKLSAgICBfcGFnZS0+Y2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhKFtjb21wbGV0
aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIHsKKyAgICBfcGFn
ZS0+Y2xlYXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoW2NvbXBsZXRpb25IYW5kbGVyID0g
bWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gewogICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQYWdlUHJveHlDb2NvYS5tbQppbmRleCA4NGIyNmE1ZjZjMGQyNWMwYzUyMGM2NzY3ZjU4
OTNiMGI5ZGQ4NjlmLi45YzQ3ODE5MzI4YjEwYzdmNmFjYWRmNDU3Yzg5ZTdmNGUxNmJiN2M5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2Nv
YS5tbQpAQCAtNDgsNiArNDgsNyBAQAogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW1w
b3J0ICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW1wb3J0ICJXS0Vycm9ySW50ZXJuYWwuaCIKKyNp
bXBvcnQgPEZvdW5kYXRpb24vTlNVUkxSZXF1ZXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdJ
dGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dlb21ldHJ5VXRpbGl0aWVzLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0hpZ2hsaWdodFZpc2liaWxpdHkuaD4KQEAgLTg1LDEzICs4Niw2IEBAIFNPRlRfTElO
S19QUklWQVRFX0ZSQU1FV09SSyhXZWJDb250ZW50QW5hbHlzaXMpOwogU09GVF9MSU5LX0NMQVNT
KFdlYkNvbnRlbnRBbmFseXNpcywgV2ViRmlsdGVyRXZhbHVhdG9yKTsKICNlbmRpZgogCi0jaWYg
VVNFKEFQUExFX0lOVEVSTkFMX1NESykKLS8vIEZJWE1FOiBUaGlzIGFkZGl0aW9ucyBmaWxlIHNo
b3VsZCBiZSByZW5hbWVkIHRvIFdlYlBhZ2VQcm94eUFkZGl0aW9ucy5tbS4KLSNpbXBvcnQgPFdl
YktpdEFkZGl0aW9ucy9XZWJQYWdlUHJveHlBZGRpdGlvbnMuaD4KLSNlbHNlCi0jZGVmaW5lIFdF
Ql9QQUdFX1BST1hZX0FERElUSU9OUwotI2VuZGlmCi0KICNkZWZpbmUgTUVTU0FHRV9DSEVDSyhh
c3NlcnRpb24pIE1FU1NBR0VfQ0hFQ0tfQkFTRShhc3NlcnRpb24sIHByb2Nlc3MoKS5jb25uZWN0
aW9uKCkpCiAjZGVmaW5lIE1FU1NBR0VfQ0hFQ0tfQ09NUExFVElPTihhc3NlcnRpb24sIGNvbXBs
ZXRpb24pIE1FU1NBR0VfQ0hFQ0tfQ09NUExFVElPTl9CQVNFKGFzc2VydGlvbiwgcHJvY2Vzcygp
LmNvbm5lY3Rpb24oKSwgY29tcGxldGlvbikKIApAQCAtNjcwLDE1ICs2NjQsMTYgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnJlcXVlc3RBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm8oQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib28KICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBh
Z2U6OlJlcXVlc3RBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm8oKSwgV1RGTW92ZShjYWxsYmFj
aykpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3Vu
ZChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TGFzdE5h
dmlnYXRpb25XYXNBcHBJbml0aWF0ZWQoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAg
IFdFQl9QQUdFX1BST1hZX0FERElUSU9OUwotICAgIG1fbGFzdE5hdmlnYXRpb25XYXNBcHBCb3Vu
ZCA9IHJlcXVlc3QuaXNBcHBCb3VuZCgpOworICAgIGF1dG8gaXNBcHBJbml0aWF0ZWQgPSByZXF1
ZXN0Lm5zVVJMUmVxdWVzdChXZWJDb3JlOjpIVFRQQm9keVVwZGF0ZVBvbGljeTo6RG9Ob3RVcGRh
dGVIVFRQQm9keSkuYXR0cmlidXRpb24gPT0gTlNVUkxSZXF1ZXN0QXR0cmlidXRpb25EZXZlbG9w
ZXI7CisgICAgcmVxdWVzdC5zZXRJc0FwcEluaXRpYXRlZChpc0FwcEluaXRpYXRlZCk7CisgICAg
bV9sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCA9IGlzQXBwSW5pdGlhdGVkOwogfQogCi12
b2lkIFdlYlBhZ2VQcm94eTo6bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlUHJveHk6
Omxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpXZWJQYWdlOjpMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKCksIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6
Okxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdyYW50QWNjZXNzVG9Bc3NldFNlcnZpY2Vz
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwCmluZGV4IGJmNzhhNTI5ZDZiMjIzOGNmOTY2YzFhNTg2MGVlODk1M2Yy
ZTg3MGUuLjI3NjBiM2U3MzdmMzI5ZmY5YzliNDk4OWU3MDI3MmYzZmJhYWFlN2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcApAQCAtMTQ5NCwxMSArMTQ5NCwxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OmdldExvY2FsU3RvcmFnZURldGFpbHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbAog
ICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkdldExvY2Fs
U3RvcmFnZU9yaWdpbkRldGFpbHMoc2Vzc2lvbklEKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnByZWNvbm5lY3RUbyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgdXNlckFnZW50LCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgTGFzdE5hdmlnYXRpb25XYXNBcHBC
b3VuZCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVu
dGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQs
IGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgV2ViQ29yZTo6U3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4s
IExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlh
dGVkKQogewogICAgIGlmICghdXJsLmlzVmFsaWQoKSB8fCAhdXJsLnByb3RvY29sSXNJbkhUVFBG
YW1pbHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzOjpQcmVjb25uZWN0VG8oc2Vzc2lvbklELCB3ZWJQYWdlUHJveHlJRCwgd2ViUGFnZUlELCB1
cmwsIHVzZXJBZ2VudCwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4sIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpLCAwKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UHJlY29ubmVjdFRvKHNlc3Npb25JRCwgd2ViUGFnZVBy
b3h5SUQsIHdlYlBhZ2VJRCwgdXJsLCB1c2VyQWdlbnQsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5
LCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRp
YXRlZCksIDApOwogfQogCiBzdGF0aWMgYm9vbCBhbnlQcm9jZXNzUG9vbEhhc0ZvcmVncm91bmRX
ZWJQcm9jZXNzZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCBiYjAxMTQwZTQzMzBlZmU4NjI2NTg1NmU0ZDE2
NGVjMDkzYTE1NTYwLi44ODdhYzFiZmIxMzJhYThlOWU1OTA5YjQ0ODA4NTZkMmJlZGI5MTQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaApAQCAtMTI4LDcgKzEyOCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZ2V0TG9j
YWxTdG9yYWdlRGV0YWlscyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzPiYmKT4mJik7
CiAKLSAgICB2b2lkIHByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRl
bnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmlu
ZyYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk7CisgICAg
dm9pZCBwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBXZWJD
b3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbj4sIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKTsKIAogI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgdm9pZCBjbGVhclByZXZhbGVudFJl
c291cmNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAppbmRleCA2ZGI2MGI3MmFmNjVhYWI0NzQwZDQ4ZDc3ODU2NzE1Y2Y0ZjMzYmM1Li45ZGI2
ZWZiNTM2NWE4NzJjMGJhYTg1ZmUyOGUxZjkxZDQzZGVkNWU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEzMzEsNyArMTMzMSw3IEBAIFJlZlB0cjxBUEk6
Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgU2hvCiAgICAgICAgIG5hdmlnYXRpb24tPnNldENsaWVudE5hdmlnYXRpb25BY3Rp
dml0eShwcm9jZXNzKCkudGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5KCJDbGllbnQgbmF2
aWdhdGlvbiJfcykpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgc2V0TGFzdE5hdmlnYXRp
b25XYXNBcHBCb3VuZChyZXF1ZXN0KTsKKyAgICBzZXRMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRp
YXRlZChyZXF1ZXN0KTsKICNlbmRpZgogCiAgICAgbG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNo
YXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwgbmF2aWdhdGlvbi5nZXQoKSwg
V1RGTW92ZShyZXF1ZXN0KSwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgdXNlckRhdGEs
IFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8sIGlzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4oKSk7CkBAIC00NTE4LDcgKzQ1MTgsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cHJlY29u
bmVjdFRvKGNvbnN0IFVSTCYgdXJsKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5ID0gbV9jYW5Vc2VDcmVkZW50aWFsU3RvcmFnZSA/IFdlYkNvcmU6
OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2UgOiBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFs
c1BvbGljeTo6RG9Ob3RVc2U7Ci0gICAgd2Vic2l0ZURhdGFTdG9yZSgpLm5ldHdvcmtQcm9jZXNz
KCkucHJlY29ubmVjdFRvKHNlc3Npb25JRCgpLCBpZGVudGlmaWVyKCksIHdlYlBhZ2VJRCgpLCB1
cmwsIHVzZXJBZ2VudCgpLCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbigpLCBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgPyBMYXN0TmF2aWdh
dGlvbldhc0FwcEJvdW5kOjpZZXMgOiBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOjpObyk7CisK
KyAgICB3ZWJzaXRlRGF0YVN0b3JlKCkubmV0d29ya1Byb2Nlc3MoKS5wcmVjb25uZWN0VG8oc2Vz
c2lvbklEKCksIGlkZW50aWZpZXIoKSwgd2ViUGFnZUlEKCksIHVybCwgdXNlckFnZW50KCksIHN0
b3JlZENyZWRlbnRpYWxzUG9saWN5LCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCksIG1f
bGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgPyBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRp
YXRlZDo6WWVzIDogTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6Ok5vKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnNldENhblVzZUNyZWRlbnRpYWxTdG9yYWdlKGJvb2wgY2FuVXNlQ3Jl
ZGVudGlhbFN0b3JhZ2UpCkBAIC04MTgxLDcgKzgxODIsNyBAQCBXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKFdlYlByb2Nlc3NQcm94eSYg
cHJvYwogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBwYXJhbWV0ZXJzLmxpbWl0
c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMgPSBtX2xpbWl0c05hdmlnYXRpb25zVG9BcHBC
b3VuZERvbWFpbnM7CiAjZW5kaWYKLSAgICBwYXJhbWV0ZXJzLmxhc3ROYXZpZ2F0aW9uV2FzQXBw
Qm91bmQgPSBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7CisgICAgcGFyYW1ldGVycy5sYXN0
TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCA9IG1fbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0
ZWQ7CiAgICAgcGFyYW1ldGVycy5zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyA9
IG1fY29uZmlndXJhdGlvbi0+c2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcoKTsK
ICAgICBwYXJhbWV0ZXJzLmNhblVzZUNyZWRlbnRpYWxTdG9yYWdlID0gbV9jYW5Vc2VDcmVkZW50
aWFsU3RvcmFnZTsKIApAQCAtMTA2ODcsMTQgKzEwNjg4LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpjcmVhdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcihSZWY8TWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JQcm94CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotdm9pZCBXZWJQYWdlUHJveHk6
OmFwcEJvdW5kTmF2aWdhdGlvbkRhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBBcHBC
b3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBX
ZWJQYWdlUHJveHk6OmFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IEFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewotICAgIHdlYnNpdGVEYXRhU3RvcmUoKS5uZXR3b3JrUHJvY2VzcygpLnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkFwcEJvdW5kTmF2aWdhdGlv
bkRhdGEobV93ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSksIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKKyAgICB3ZWJzaXRlRGF0YVN0b3JlKCkubmV0d29ya1Byb2Nlc3MoKS5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpBcHBQcml2YWN5UmVwb3J0
VGVzdGluZ0RhdGEobV93ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSksIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmNsZWFyQXBwQm91bmRO
YXZpZ2F0aW9uRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHdl
YnNpdGVEYXRhU3RvcmUoKS5uZXR3b3JrUHJvY2VzcygpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3M6OkNsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YShtX3dlYnNp
dGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwor
ICAgIHdlYnNpdGVEYXRhU3RvcmUoKS5uZXR3b3JrUHJvY2VzcygpLnNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkNsZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdE
YXRhKG1fd2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCkpLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAppbmRleCA0ODVmNzRiNGViZmFlOGFkZDlmMjkwNjFjY2RlM2ZiYmY2N2IwMGY5Li5lMDBkNDJk
NThlNzMwMDQ0MmViZmVmNGNhZmYxZjJjMmVmMjgxN2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaApAQCAtMzczLDcgKzM3Myw3IEBAIGNsYXNzIFdlYldoZWVsRXZlbnQ7
CiBjbGFzcyBXZWJXaGVlbEV2ZW50Q29hbGVzY2VyOwogY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsK
IAotc3RydWN0IEFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhOworc3RydWN0IEFwcFByaXZh
Y3lSZXBvcnRUZXN0aW5nRGF0YTsKIHN0cnVjdCBEYXRhRGV0ZWN0aW9uUmVzdWx0Owogc3RydWN0
IERvY3VtZW50RWRpdGluZ0NvbnRleHQ7CiBzdHJ1Y3QgRG9jdW1lbnRFZGl0aW5nQ29udGV4dFJl
cXVlc3Q7CkBAIC0xOTI3LDEwICsxOTI3LDEwIEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgUExB
VEZPUk0oQ09DT0EpCi0gICAgdm9pZCBzZXRMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYpOwotICAgIHZvaWQgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3Vu
ZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGFwcEJvdW5kTmF2
aWdhdGlvbkRhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBBcHBCb3VuZE5hdmlnYXRp
b25UZXN0aW5nRGF0YSYpPiYmKTsKLSAgICB2b2lkIGNsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0
YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0TGFzdE5hdmlnYXRp
b25XYXNBcHBJbml0aWF0ZWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgdm9pZCBs
YXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmKTsKKyAgICB2b2lkIGFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IEFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSYpPiYmKTsKKyAgICB2
b2lkIGNsZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAKICAgICBOU0RpY3Rpb25hcnkgKmNvbnRlbnRzT2ZVc2VySW50ZXJmYWNlSXRl
bShOU1N0cmluZyAqdXNlckludGVyZmFjZUl0ZW0pOwogCkBAIC0zMDM3LDcgKzMwMzcsNyBAQCBw
cml2YXRlOgogCiAgICAgc2l6ZV90IG1fc3VzcGVuZE1lZGlhUGxheWJhY2tDb3VudGVyIHsgMCB9
OwogCi0gICAgYm9vbCBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgeyBmYWxzZSB9OworICAg
IGJvb2wgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCB7IHRydWUgfTsKICAgICBib29s
IG1faXNSdW5uaW5nTW9kYWxKYXZhU2NyaXB0RGlhbG9nIHsgZmFsc2UgfTsKICAgICBib29sIG1f
aXNTdXNwZW5kZWQgeyBmYWxzZSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKaW5kZXggYzQyZDJjMDBmNzk4MmVh
M2ZlMTk0MDFjZDA3NmMyNGEwYjY0OWViZi4uNjBlNmEyYjQ4MGZjYWQxMTBmM2RhZTg0YjA1NDk1
NjUzNTc2ZjdlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViTG9hZGVyU3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgV2ViTG9h
ZGVyU3RyYXRlZ3k6OmxvYWRSZXNvdXJjZShGcmFtZSYgZnJhbWUsIENhY2hlZFJlc291cmNlJiBy
ZXNvdXJjZSwgUmVzCiAgICAgaWYgKHJlc291cmNlLnR5cGUoKSAhPSBDYWNoZWRSZXNvdXJjZTo6
VHlwZTo6TWFpblJlc291cmNlIHx8ICFmcmFtZS5pc01haW5GcmFtZSgpKSB7CiAgICAgICAgIGlm
IChhdXRvKiBkb2N1bWVudCA9IGZyYW1lLm1haW5GcmFtZSgpLmRvY3VtZW50KCkpIHsKICAgICAg
ICAgICAgIGlmIChkb2N1bWVudCAmJiBkb2N1bWVudC0+bG9hZGVyKCkpCi0gICAgICAgICAgICAg
ICAgcmVxdWVzdC5zZXRJc0FwcEJvdW5kKGRvY3VtZW50LT5sb2FkZXIoKS0+bGFzdE5hdmlnYXRp
b25XYXNBcHBCb3VuZCgpKTsKKyAgICAgICAgICAgICAgICByZXF1ZXN0LnNldElzQXBwSW5pdGlh
dGVkKGRvY3VtZW50LT5sb2FkZXIoKS0+bGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQoKSk7
CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTc2Nyw3ICs3NjcsNyBAQCB2b2lkIFdlYkxvYWRlclN0
cmF0ZWd5OjpwcmVjb25uZWN0VG8oV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
V2ViUGFnZQogICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IHdlYlBhZ2UubWFpbkZyYW1lKCktPmRv
Y3VtZW50KCkpIHsKICAgICAgICAgcmVxdWVzdC5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhkb2N1
bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSk7CiAgICAgICAgIGlmIChhdXRvKiBsb2FkZXIg
PSBkb2N1bWVudC0+bG9hZGVyKCkpCi0gICAgICAgICAgICByZXF1ZXN0LnNldElzQXBwQm91bmQo
bG9hZGVyLT5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKCkpOworICAgICAgICAgICAgcmVxdWVz
dC5zZXRJc0FwcEluaXRpYXRlZChsb2FkZXItPmxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVk
KCkpOwogICAgIH0KIAogICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHByZWNvbm5lY3Rpb25J
ZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCmluZGV4IDYzODQx
MTdjZDVlMTU1MTZkMDk4Y2VhYjA2ZDNjNTQ5YjdkMWM4ZGIuLmY5OTNlZmMxZWEzYTcyOTUwZjI3
YjNjMDljMTYyNWQxMWEyYjY0ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5j
cHAKQEAgLTEzNSwxMCArMTM1LDEwIEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b246OnVwZGF0ZVByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTCiAgICAgc2V0
U2hvdWxkVXNlU2hvcnRUaW1lb3V0KHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJl
bmNlc0tleTo6c2hvdWxkVXNlU2VydmljZVdvcmtlclNob3J0VGltZW91dEtleSgpKSk7CiB9CiAK
LXZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnVwZGF0ZUFwcEJvdW5kVmFsdWUo
U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6
Okxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCkKK3Zv
aWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnVwZGF0ZUFwcEluaXRpYXRlZFZhbHVl
KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3Jl
OjpMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRp
YXRlZCkKIHsKICAgICBpZiAoYXV0byogc2VydmljZVdvcmtlclRocmVhZFByb3h5ID0gU1dDb250
ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlclRocmVhZFByb3h5KHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKSkKLSAgICAgICAgc2VydmljZVdvcmtlclRocmVhZFByb3h5LT5zZXRM
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgPT0gV2Vi
Q29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDo6WWVzKTsKKyAgICAgICAgc2VydmljZVdv
cmtlclRocmVhZFByb3h5LT5zZXRMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZChsYXN0TmF2
aWdhdGlvbldhc0FwcEluaXRpYXRlZCA9PSBXZWJDb3JlOjpMYXN0TmF2aWdhdGlvbldhc0FwcElu
aXRpYXRlZDo6WWVzKTsKIH0KIAogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
aW5zdGFsbFNlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgZGF0YSwgU3Ry
aW5nJiYgdXNlckFnZW50KQpAQCAtMjM0LDcgKzIzNCw3IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb246OnN0YXJ0RmV0Y2goU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBz
ZXJ2CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHktPnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQocmVxdWVzdC5pc0FwcEJvdW5kKCkpOwor
ICAgIHNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS0+c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0
aWF0ZWQocmVxdWVzdC5pc0FwcEluaXRpYXRlZCgpKTsKIAogICAgIGlmICghaXNWYWxpZEZldGNo
KHJlcXVlc3QsIG9wdGlvbnMsIHNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS0+c2NyaXB0VVJMKCks
IHJlZmVycmVyKSkgewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWROb3RIYW5kbGUgeyB9LCBmZXRj
aElkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKaW5kZXggMzMxNDMz
OWUwOTNiYzY1YzcyZGJhNTJjZWFkYWFjNzQ1MmYxY2RjOS4uZTAyMDU3ZTgxMWMxZTg2ZDJmNWVl
ZDI3NGUzMjBhY2Q1YmZmNzMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBA
IC04Niw3ICs4Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXJ2aWNlV29ya2VyU3RhcnRlZChz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4sIFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIGRvZXNIYW5kbGVGZXRjaCkgZmlu
YWw7CiAgICAgdm9pZCBzZXJ2aWNlV29ya2VyRmFpbGVkVG9TdGFydChzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4sIFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGV4Y2VwdGlvbk1lc3NhZ2UpIGZpbmFsOwog
ICAgIHZvaWQgaW5zdGFsbFNlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRl
eHREYXRhJiYsIFN0cmluZyYmIHVzZXJBZ2VudCk7Ci0gICAgdm9pZCB1cGRhdGVBcHBCb3VuZFZh
bHVlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpMYXN0TmF2aWdh
dGlvbldhc0FwcEJvdW5kKTsKKyAgICB2b2lkIHVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpMYXN0TmF2aWdhdGlvbldhc0Fw
cEluaXRpYXRlZCk7CiAgICAgdm9pZCBzdGFydEZldGNoKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3Jl
OjpGZXRjaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpG
ZXRjaE9wdGlvbnMmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmLCBTdHJpbmcmJiByZWZlcnJl
cik7CiAgICAgdm9pZCBjYW5jZWxGZXRjaChXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJ
ZGVudGlmaWVyKTsKICAgICB2b2lkIGNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoV2Vi
Q29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IGY2NjRhNGU5MTIyYzE1MWUy
YzU2NzU1MDkwNWVjOTUwMjU3N2JiMWEuLjNlMjBkZTM1NGJjNDNkODRhYjQ5MDQyMzQ1Yzk3ZWI5
MmVlZjNmNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluCkBAIC0yNCw3ICsyNCw3IEBACiAKIG1lc3NhZ2VzIC0+IFdlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uIE5vdFJlZkNvdW50ZWQgewogICAgIEluc3RhbGxTZXJ2aWNlV29ya2VyKHN0
cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgY29udGV4dERhdGEsIFN0cmlu
ZyB1c2VyQWdlbnQpCi0gICAgVXBkYXRlQXBwQm91bmRWYWx1ZShXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgZW51bTpib29sIFdlYkNvcmU6
Okxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCkKKyAg
ICBVcGRhdGVBcHBJbml0aWF0ZWRWYWx1ZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgZW51bTpib29sIFdlYkNvcmU6Okxhc3ROYXZpZ2F0
aW9uV2FzQXBwSW5pdGlhdGVkIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKQogICAgIFN0
YXJ0RmV0Y2goV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZp
ZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBzdHJ1Y3QgV2ViQ29yZTo6RmV0
Y2hPcHRpb25zIG9wdGlvbnMsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVxdWVzdEJvZHksIFN0
cmluZyByZWZlcnJlcikKICAgICBDYW5jZWxGZXRjaChXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJ
ZGVudGlmaWVyIGZldGNoSWRlbnRpZmllcikKICAgICBDb250aW51ZURpZFJlY2VpdmVGZXRjaFJl
c3BvbnNlKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggNWRhMmJiOWY0YTJkN2Q0MjNi
ZWU4NTQ0NzFmZTg1M2QzZTRhMjYxZC4uODhlYTY2MmUwNjIzZmY5ZDc5MzdkOGJhMTBlYjY1MzIz
YzNlZTNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0yNDMsMTEgKzI0
MywxMSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxTZW5kUmVxdWVz
dChEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbgogICAgIC8vIFRoZSBBUEkgY2FuIHJldHVy
biBhIGNvbXBsZXRlbHkgbmV3IHJlcXVlc3QuIFdlIHNob3VsZCBlbnN1cmUgdGhhdCBhdCBsZWFz
dCB0aGUgcmVxdWVzdGVyCiAgICAgLy8gaXMga2VwdCwgc28gdGhhdCBpZiB0aGlzIGlzIGEgbWFp
biByZXNvdXJjZSBsb2FkIGl0J3Mgc3RpbGwgY29uc2lkZXJlZCBhcyBzdWNoLgogICAgIGF1dG8g
cmVxdWVzdGVyID0gcmVxdWVzdC5yZXF1ZXN0ZXIoKTsKLSAgICBhdXRvIGFwcEJvdW5kVmFsdWUg
PSByZXF1ZXN0LmlzQXBwQm91bmQoKTsKKyAgICBhdXRvIGFwcEluaXRpYXRlZFZhbHVlID0gcmVx
dWVzdC5pc0FwcEluaXRpYXRlZCgpOwogICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlUmVzb3Vy
Y2VMb2FkQ2xpZW50KCkud2lsbFNlbmRSZXF1ZXN0Rm9yRnJhbWUoKndlYlBhZ2UsIG1fZnJhbWUs
IGlkZW50aWZpZXIsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwogICAgIGlmICghcmVxdWVz
dC5pc051bGwoKSkgewogICAgICAgICByZXF1ZXN0LnNldFJlcXVlc3RlcihyZXF1ZXN0ZXIpOwot
ICAgICAgICByZXF1ZXN0LnNldElzQXBwQm91bmQoYXBwQm91bmRWYWx1ZSk7CisgICAgICAgIHJl
cXVlc3Quc2V0SXNBcHBJbml0aWF0ZWQoYXBwSW5pdGlhdGVkVmFsdWUpOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAyZDRh
MTQxZmUwNWU1YzBiOTczMDJmZDJlNWIyYzEzOThlZmY2NjYxLi4yM2RmOWM2NzM0MDUzNWRkOGIy
MDJmMTg1MDM0ZTZiNzExOWRmMGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcApAQCAtNTM0LDcgKzUzNCw3IEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFn
ZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVy
cykKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgLCBtX2xpbWl0c05hdmlnYXRp
b25zVG9BcHBCb3VuZERvbWFpbnMocGFyYW1ldGVycy5saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91
bmREb21haW5zKQogI2VuZGlmCi0gICAgLCBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQocGFy
YW1ldGVycy5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKQorICAgICwgbV9sYXN0TmF2aWdhdGlv
bldhc0FwcEluaXRpYXRlZChwYXJhbWV0ZXJzLmxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVk
KQogewogICAgIEFTU0VSVChtX2lkZW50aWZpZXIpOwogCkBAIC0xNjYxLDcgKzE2NjEsNyBAQCB2
b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGNvbnN0IExvYWRQ
YXJhbWV0ZXJzJiBsb2FkUGFyYW1ldAogCiB2b2lkIFdlYlBhZ2U6OmxvYWRSZXF1ZXN0KExvYWRQ
YXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMpCiB7Ci0gICAgc2V0TGFzdE5hdmlnYXRpb25XYXNB
cHBCb3VuZChsb2FkUGFyYW1ldGVycy5yZXF1ZXN0LmlzQXBwQm91bmQoKSk7CisgICAgc2V0TGFz
dE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQobG9hZFBhcmFtZXRlcnMucmVxdWVzdC5pc0FwcElu
aXRpYXRlZCgpKTsKIAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBzZXRJc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKGxvYWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4sICZtX21haW5GcmFtZS5nZXQoKSk7CkBAIC02NjE0LDcgKzY2MTQsNyBAQCBS
ZWY8RG9jdW1lbnRMb2FkZXI+IFdlYlBhZ2U6OmNyZWF0ZURvY3VtZW50TG9hZGVyKEZyYW1lJiBm
cmFtZSwgY29uc3QgUmVzb3VyY2VSZQogewogICAgIFJlZjxXZWJEb2N1bWVudExvYWRlcj4gZG9j
dW1lbnRMb2FkZXIgPSBXZWJEb2N1bWVudExvYWRlcjo6Y3JlYXRlKHJlcXVlc3QsIHN1YnN0aXR1
dGVEYXRhKTsKIAotICAgIGRvY3VtZW50TG9hZGVyLT5zZXRMYXN0TmF2aWdhdGlvbldhc0FwcEJv
dW5kKG1fbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk7CisgICAgZG9jdW1lbnRMb2FkZXItPnNl
dExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKG1fbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0
aWF0ZWQpOwogCiAgICAgaWYgKGZyYW1lLmlzTWFpbkZyYW1lKCkpIHsKICAgICAgICAgaWYgKG1f
cGVuZGluZ05hdmlnYXRpb25JRCkgewpAQCAtNzY1MCw5ICs3NjUwLDkgQEAgdm9pZCBXZWJQYWdl
Ojpjb25zdW1lTmV0d29ya0V4dGVuc2lvblNhbmRib3hFeHRlbnNpb25zKGNvbnN0IFNhbmRib3hF
eHRlbnNpb246OkgKIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2U6Omxhc3ROYXZpZ2F0aW9uV2Fz
QXBwQm91bmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgV2ViUGFnZTo6bGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBjb21wbGV0
aW9uSGFuZGxlcihtYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS0+bG9hZGVyKCktPmxhc3ROYXZpZ2F0
aW9uV2FzQXBwQm91bmQoKSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIobWFpbkZyYW1lKCktPmRv
Y3VtZW50KCktPmxvYWRlcigpLT5sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCgpKTsKIH0K
IAogI2lmIEhBVkUoVFJBTlNMQVRJT05fVUlfU0VSVklDRVMpICYmIEVOQUJMRShDT05URVhUX01F
TlVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGM5
YjMwNTlhMWEzYTNmMmIxNjRkOTYxYTNlZDFkN2I5N2YzN2VjODcuLjExNmFlZTUwM2MzMmI2ZjUy
ODYxYzhmMjFmYTZkY2RlN2JkYTFhZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKQEAgLTE0NDksOCArMTQ0OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGlu
dmFsaWRhdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcigpOwogI2VuZGlmCiAKLSAgICB2b2lkIHNl
dExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoYm9vbCB3YXNBcHBCb3VuZCkgeyBtX2xhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQgPSB3YXNBcHBCb3VuZDsgfQotICAgIHZvaWQgbGFzdE5hdmlnYXRp
b25XYXNBcHBCb3VuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lk
IHNldExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKGJvb2wgd2FzQXBwQm91bmQpIHsgbV9s
YXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCA9IHdhc0FwcEJvdW5kOyB9CisgICAgdm9pZCBs
YXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmKTsKIAogICAgIGJvb2wgaXNQYXJlbnRQcm9jZXNzQVdlYkJyb3dzZXIoKSBjb25zdDsKIApA
QCAtMjMyMyw3ICsyMzIzLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbmF2aWdhdGlvbkhhc09j
Y3VyZWQgeyBmYWxzZSB9OwogI2VuZGlmCiAKLSAgICBib29sIG1fbGFzdE5hdmlnYXRpb25XYXNB
cHBCb3VuZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlh
dGVkIHsgdHJ1ZSB9OwogCiAgICAgYm9vbCBtX2NhblVzZUNyZWRlbnRpYWxTdG9yYWdlIHsgdHJ1
ZSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgppbmRleCA1NjE4YTM0M2RlNGE1NzQ2YjU5Y2JiMGYxNzE0YWY4Yzc1MmZj
MzRhLi4xYzVmNDAyNGQyZjVjMmIyMmIwMmFlZDNkMmU2MzczZGM4OTZjNzk5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
QEAgLTYzNSw3ICs2MzUsNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06
dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogCiAgICAgRGlzcGF0
Y2hXaGVlbEV2ZW50V2l0aG91dFNjcm9sbGluZyhXZWJLaXQ6OldlYldoZWVsRXZlbnQgZXZlbnQp
IC0+IChib29sIGhhbmRsZWQpIEFzeW5jCiAKLSAgICBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5k
KCkgLT4gKGJvb2wgd2FzQXBwQm91bmQpIEFzeW5jCisgICAgTGFzdE5hdmlnYXRpb25XYXNBcHBJ
bml0aWF0ZWQoKSAtPiAoYm9vbCB3YXNBcHBCb3VuZCkgQXN5bmMKIAogI2lmIEVOQUJMRShNRURJ
QV9TRVNTSU9OX0NPT1JESU5BVE9SKQogICAgIENyZWF0ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
KFN0cmluZyBpZGVudGlmaWVyKSAtPiAoYm9vbCBzdWNjZXNzKSBBc3luYwpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDcxNzE3OTY2ZWQ4OTQ3ODkz
ZWQ5ZGEzOTE1MjFlYTkyYzE3NzI2N2UuLjBjMDg5OWE3M2NkOGQ0ZjRiNDM0OTNjN2FjYzE1MzQ3
YzM5ODc0ZmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw2OCBAQAorMjAyMS0wNi0xNSAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVf
Y2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBNaWdyYXRlIEFwcCBQcml2YWN5IFJlcG9ydCBj
b2RlIGZyb20gV2ViS2l0QWRkaXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjcwNDUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc0MzMzMjg3
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0
ZSBuYW1pbmcgdG8gYWxpZ24gd2l0aCBBcHAgUHJpdmFjeSBSZXBvcnQgZmVhdHVyZS4gTWlncmF0
ZSB0ZXN0cworICAgICAgICB0byB0aGVpciBvd24gZmlsZS4gUmVtb3ZlIGFsbCBjb2RlIHJlbGF0
ZWQgdG8gdGhlIGNvbnRleHQgc3RyaW5nLCBhcworICAgICAgICB0aGlzIGlzIG5vdyBzZXQgaW4g
dGhlIENGTmV0d29yayBsYXllciBhbmQgY2FuIGJlIHJlbW92ZWQgZnJvbSBXZWJLaXQuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZh
Y3lSZXBvcnQubW06IEFkZGVkLgorICAgICAgICAoVEVTVCk6CisgICAgICAgIChjYXRjaCk6Cisg
ICAgICAgIChmdW5jdGlvbik6CisgICAgICAgICgtW1NXQXBwSW5pdGlhdGVkUmVxdWVzdE1lc3Nh
Z2VIYW5kbGVyIHVzZXJDb250ZW50Q29udHJvbGxlcjpkaWRSZWNlaXZlU2NyaXB0TWVzc2FnZTpd
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lS
ZXBvcnRQbHVnSW4ubW06IFJlbmFtZWQgZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3lQbHVnSW4ubW0uCisgICAgICAgICgtW0FwcFBy
aXZhY3lSZXBvcnRQbHVnSW4gd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxl
cjpmcmFtZTp3aWxsU2VuZFJlcXVlc3RGb3JSZXNvdXJjZTpyZXF1ZXN0OnJlZGlyZWN0UmVzcG9u
c2U6XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJy
b3dzZXJQcml2YWN5Lm1tOgorICAgICAgICAoLVtTV0FwcEJvdW5kUmVxdWVzdE1lc3NhZ2VIYW5k
bGVyIHVzZXJDb250ZW50Q29udHJvbGxlcjpkaWRSZWNlaXZlU2NyaXB0TWVzc2FnZTpdKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2FwcC1wcml2
YWN5LXJlcG9ydC1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbDoKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAg
KFdUUjo6SW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlKToKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAg
ICAoV1RSOjpUZXN0UnVubmVyOjpkaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdCk6CisgICAgICAg
IChXVFI6OlRlc3RSdW5uZXI6OmRpZExvYWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0KToKKyAgICAg
ICAgKFdUUjo6VGVzdFJ1bm5lcjo6YXBwQm91bmRSZXF1ZXN0Q29udGV4dERhdGFGb3JEb21haW4p
OiBEZWxldGVkLgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpjYWxsRGlkUmVjZWl2ZUFwcEJv
dW5kUmVxdWVzdENvbnRleHREYXRhRm9yRG9tYWluQ2FsbGJhY2spOiBEZWxldGVkLgorICAgICAg
ICAoV1RSOjpUZXN0UnVubmVyOjpkaWRMb2FkQXBwQm91bmRSZXF1ZXN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6ZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdCk6IERlbGV0
ZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
Lmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKToK
KyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0
KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRpZExvYWROb25BcHBJbml0aWF0ZWRS
ZXF1ZXN0KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNsZWFyQXBwUHJpdmFjeVJl
cG9ydFRlc3RpbmdEYXRhKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmFwcEJvdW5k
UmVxdWVzdENvbnRleHREYXRhRm9yRG9tYWluKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6VGVz
dENvbnRyb2xsZXI6OmRpZExvYWRBcHBCb3VuZFJlcXVlc3QpOiBEZWxldGVkLgorICAgICAgICAo
V1RSOjpUZXN0Q29udHJvbGxlcjo6ZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdCk6IERlbGV0ZWQu
CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRh
dGEpOiBEZWxldGVkLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
aDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAg
ICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVu
ZGxlKToKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91
c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlv
bjo6ZGlkUmVjZWl2ZUFwcEJvdW5kUmVxdWVzdENvbnRleHREYXRhRm9yRG9tYWluKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmg6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tOgorICAgICAg
ICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3QpOgorICAg
ICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZGlkTG9hZE5vbkFwcEluaXRpYXRlZFJlcXVlc3Qp
OgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y2xlYXJBcHBQcml2YWN5UmVwb3J0VGVz
dGluZ0RhdGEpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6YXBwQm91bmRSZXF1ZXN0
Q29udGV4dERhdGFGb3JEb21haW4pOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6ZGlkTG9hZEFwcEJvdW5kUmVxdWVzdCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OlRl
c3RDb250cm9sbGVyOjpkaWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YSk6IERl
bGV0ZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVubmVyV0tXZWJW
aWV3Lmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVubmVyV0tXZWJW
aWV3Lm1tOgorICAgICAgICAoLVtUZXN0UnVubmVyV0tXZWJWaWV3IF9kaWRMb2FkQXBwSW5pdGlh
dGVkUmVxdWVzdDpdKToKKyAgICAgICAgKC1bVGVzdFJ1bm5lcldLV2ViVmlldyBfZGlkTG9hZE5v
bkFwcEluaXRpYXRlZFJlcXVlc3Q6XSk6CisgICAgICAgICgtW1Rlc3RSdW5uZXJXS1dlYlZpZXcg
X2FwcEJvdW5kTmF2aWdhdGlvbkRhdGFGb3JEb21haW46Y29tcGxldGlvbkhhbmRsZXI6XSk6IERl
bGV0ZWQuCisgICAgICAgICgtW1Rlc3RSdW5uZXJXS1dlYlZpZXcgX2RpZExvYWRBcHBCb3VuZFJl
cXVlc3Q6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1Rlc3RSdW5uZXJXS1dlYlZpZXcgX2RpZExv
YWROb25BcHBCb3VuZFJlcXVlc3Q6XSk6IERlbGV0ZWQuCisKIDIwMjEtMDYtMTUgIEpvbmF0aGFu
IEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1MgMTVdIFN1cHBvcnQg
YnVpbGRpbmcgV2ViS2l0CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDYzZDE3MWI5MDc3OWVk
MWUwOTI3NGU1MGU1MmI0ZTZlYjgxNTYxNmQuLmRkZTQxMGM5YjBiNzg5ZDg2ZDdiMjQ3YTBhODky
ZjY3MmFmMDFkMWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yOTMsNyArMjkzLDcgQEAK
IAkJNDZGQUNGNzQyM0U4ODQyMzAwQTlFQkM2IC8qIGJlZm9yZXVubG9hZC1zbG93Lmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZGQUNG
NzMyM0U4ODNFRTAwQTlFQkM2IC8qIGJlZm9yZXVubG9hZC1zbG93Lmh0bWwgKi87IH07CiAJCTQ5
MDhDNzExMjYwOTRFNDEwMDBCMUIyRiAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5MDhDNzBGMjYwOTRF
MTYwMDBCMUIyRiAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5tbSAqLzsgfTsKIAkJNDkwOUVF
M0EyRDA5NDgwQzg4OTgyRDU2IC8qIE1hcmthYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVDNzlGMTY4QkU0NTRFNTc5RTQxN0IwNSAvKiBNYXJr
YWJsZS5jcHAgKi87IH07Ci0JCTQ5MUFFRUY4MjY1MkUzMzUwMEQ1MzBBOCAvKiBJbkFwcEJyb3dz
ZXJQcml2YWN5UGx1Z0luLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDkxQUVFRjQyNjUyREREMDAwRDUzMEE4IC8qIEluQXBwQnJvd3NlclByaXZhY3lQ
bHVnSW4ubW0gKi87IH07CisJCTQ5MUFFRUY4MjY1MkUzMzUwMEQ1MzBBOCAvKiBBcHBQcml2YWN5
UmVwb3J0UGx1Z0luLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDkxQUVFRjQyNjUyREREMDAwRDUzMEE4IC8qIEFwcFByaXZhY3lSZXBvcnRQbHVnSW4u
bW0gKi87IH07CiAJCTQ5MUYzRDUyMjYwMjdFNTMwMDBFMzFGNyAvKiBwY21XaXRob3V0RnJhdWRQ
cmV2ZW50aW9uRGF0YWJhc2UuZGIgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDkxRjNENEYyNjAyN0NGRTAwMEUzMUY3IC8qIHBjbVdpdGhvdXRG
cmF1ZFByZXZlbnRpb25EYXRhYmFzZS5kYiAqLzsgfTsKIAkJNDkxRjNENTMyNjAyN0U1MzAwMEUz
MUY3IC8qIHBjbVdpdGhvdXRGcmF1ZFByZXZlbnRpb25EYXRhYmFzZS5kYi1zaG0gaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDkxRjNENTAyNjAy
N0NGRTAwMEUzMUY3IC8qIHBjbVdpdGhvdXRGcmF1ZFByZXZlbnRpb25EYXRhYmFzZS5kYi1zaG0g
Ki87IH07CiAJCTQ5MUYzRDU0MjYwMjdFNTMwMDBFMzFGNyAvKiBwY21XaXRob3V0RnJhdWRQcmV2
ZW50aW9uRGF0YWJhc2UuZGItd2FsIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ5MUYzRDUxMjYwMjdDRkUwMDBFMzFGNyAvKiBwY21XaXRob3V0
RnJhdWRQcmV2ZW50aW9uRGF0YWJhc2UuZGItd2FsICovOyB9OwpAQCAtMzExLDYgKzMxMSw3IEBA
CiAJCTQ5OEQwMzBBMjYzNzZCMzQwMDlDQkZBRCAvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWlz
c2luZ1VuaXF1ZUluZGV4LmRiIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ5OEQwMzA5MjYzNzZCMkMwMDlDQkZBRCAvKiByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWlzc2luZ1VuaXF1ZUluZGV4LmRiICovOyB9OwogCQk0OTk1QTZGMDI1RTg3NzIw
MDBFNUYwQTkgLyogY3NwLWRvY3VtZW50LXVyaS1yZXBvcnQuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTk1QTZFRjI1RTg3NkEzMDBF
NUYwQTkgLyogY3NwLWRvY3VtZW50LXVyaS1yZXBvcnQuaHRtbCAqLzsgfTsKIAkJNDlBRUVGNkQy
NDA3MzU5RDAwQzg3RTRDIC8qIEluQXBwQnJvd3NlclByaXZhY3kubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUFFRUY2QjI0MDczNTg2MDBDODdFNEMg
LyogSW5BcHBCcm93c2VyUHJpdmFjeS5tbSAqLzsgfTsKKwkJNDlFRjZBRDUyNjc3QzBCRTAwNzk2
N0RDIC8qIEFwcFByaXZhY3lSZXBvcnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0OUVGNkFENDI2NzdDMEJFMDA3OTY3REMgLyogQXBwUHJpdmFjeVJl
cG9ydC5tbSAqLzsgfTsKIAkJNEJGREZGQTcxMzE0Nzc2QzAwNjFGMjRCIC8qIEhpdFRlc3RSZXN1
bHROb2RlSGFuZGxlX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0QkZERkZBNjEzMTQ3NzZDMDA2MUYyNEIgLyogSGl0VGVzdFJlc3VsdE5v
ZGVIYW5kbGVfQnVuZGxlLmNwcCAqLzsgfTsKIAkJNTEwNDc3NzIxRDI5OERERDAwOTc0N0VCIC8q
IElEQkRlbGV0ZVJlY292ZXJ5LnNxbGl0ZTMgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwNDc3NkYxRDI5OEQ4NTAwOTc0N0VCIC8qIElEQkRl
bGV0ZVJlY292ZXJ5LnNxbGl0ZTMgKi87IH07CiAJCTUxMDQ3NzczMUQyOThEREQwMDk3NDdFQiAv
KiBJREJEZWxldGVSZWNvdmVyeS5zcWxpdGUzLXNobSBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTA0Nzc3MDFEMjk4RDg1MDA5NzQ3RUIgLyog
SURCRGVsZXRlUmVjb3Zlcnkuc3FsaXRlMy1zaG0gKi87IH07CkBAIC0yMTEwLDcgKzIxMTEsNyBA
QAogCQk0NkZBMkZFRDIzODQ2QzlBMDAwQ0NCMEMgLyogSFRUUEhlYWRlck1hcC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVFRQSGVhZGVyTWFwLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZGQUNGNzMyM0U4ODNFRTAwQTlFQkM2IC8qIGJlZm9y
ZXVubG9hZC1zbG93Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiYmVmb3JldW5s
b2FkLXNsb3cuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5MDhDNzBGMjYw
OTRFMTYwMDBCMUIyRiAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50Lm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0OTFBRUVGNDI2NTJEREQwMDBENTMwQTggLyog
SW5BcHBCcm93c2VyUHJpdmFjeVBsdWdJbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEluQXBw
QnJvd3NlclByaXZhY3lQbHVnSW4ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5
MUFFRUY0MjY1MkRERDAwMEQ1MzBBOCAvKiBBcHBQcml2YWN5UmVwb3J0UGx1Z0luLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gQXBwUHJpdmFjeVJlcG9ydFBsdWdJbi5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDkxRjNENEYyNjAyN0NGRTAwMEUzMUY3IC8qIHBjbVdpdGhvdXRG
cmF1ZFByZXZlbnRpb25EYXRhYmFzZS5kYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IHBhdGggPSBwY21XaXRob3V0RnJhdWRQcmV2ZW50aW9u
RGF0YWJhc2UuZGI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5MUYzRDUwMjYwMjdD
RkUwMDBFMzFGNyAvKiBwY21XaXRob3V0RnJhdWRQcmV2ZW50aW9uRGF0YWJhc2UuZGItc2htICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgcGF0
aCA9ICJwY21XaXRob3V0RnJhdWRQcmV2ZW50aW9uRGF0YWJhc2UuZGItc2htIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDkxRjNENTEyNjAyN0NGRTAwMEUzMUY3IC8qIHBjbVdpdGhv
dXRGcmF1ZFByZXZlbnRpb25EYXRhYmFzZS5kYi13YWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
InBjbVdpdGhvdXRGcmF1ZFByZXZlbnRpb25EYXRhYmFzZS5kYi13YWwiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjEyOSw2ICsyMTMwLDcgQEAKIAkJNDlBRUVGNjgyNDA3Mjc2RjAw
Qzg3RTRDIC8qIEluZm8ucGxpc3QgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnhtbDsgcGF0aCA9IElu
Zm8ucGxpc3Q7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5QUVFRjZCMjQwNzM1ODYw
MEM4N0U0QyAvKiBJbkFwcEJyb3dzZXJQcml2YWN5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gSW5BcHBCcm93c2VyUHJpdmFjeS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDlEN0ZCQTcyNDFGREREQTAwQUI2N0ZBIC8qIGluLWFwcC1icm93c2Vy
LXByaXZhY3ktbG9jYWwtZmlsZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImluLWFwcC1icm93c2VyLXByaXZh
Y3ktbG9jYWwtZmlsZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDlFRjZB
RDQyNjc3QzBCRTAwNzk2N0RDIC8qIEFwcFByaXZhY3lSZXBvcnQubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBBcHBQcml2YWN5UmVwb3J0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0QTQxMEY0QjE5QUY3QkQ2MDAyRUJBQjUgLyogVXNlck1lZGlhLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVzZXJNZWRpYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTRBNDEwRjREMTlBRjdCRUYwMDJFQkFCNSAvKiBnZXRVc2VyTWVkaWEuaHRt
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IGdldFVzZXJNZWRpYS5odG1sOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0QTQxMEY0RDE5QUY3QkVGMDAyRUJBQjYgLyogb25kZXZp
Y2VjaGFuZ2UuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IG9uZGV2aWNlY2hhbmdl
Lmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMzc0LDYgKzMzNzYsOCBAQAog
CQkJCTJERTcxQUZEMUQ0OUMwQkQwMDkwNDA5NCAvKiBBbmltYXRlZFJlc2l6ZS5tbSAqLywKIAkJ
CQlBMTc5OEI4MTIyNDMxRDY1MDAwNzY0QkQgLyogQXBwbGVQYXkubW0gKi8sCiAJCQkJNjNGNjY4
MjAxRjk3QzNBQTAwMzJFRTUxIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3QubW0gKi8sCisJCQkJNDlF
RjZBRDQyNjc3QzBCRTAwNzk2N0RDIC8qIEFwcFByaXZhY3lSZXBvcnQubW0gKi8sCisJCQkJNDkx
QUVFRjQyNjUyREREMDAwRDUzMEE4IC8qIEFwcFByaXZhY3lSZXBvcnRQbHVnSW4ubW0gKi8sCiAJ
CQkJNTFCNDBEOUQyM0FDOTYwRTAwRTA1MjQxIC8qIEFzeW5jRnVuY3Rpb24ubW0gKi8sCiAJCQkJ
ODM0MTM4QzYyMDMyNjFCOTAwRjI2OTYwIC8qIEFzeW5jUG9saWN5Rm9yTmF2aWdhdGlvblJlc3Bv
bnNlLm1tICovLAogCQkJCTM3NjBDNEYwMjExMjQ5QUYwMDIzM0FDQyAvKiBBdHRyU3R5bGUubW0g
Ki8sCkBAIC0zNDYxLDcgKzM0NjUsNiBAQAogCQkJCTUxMTBGQ0VGMUUwMUNCQUEwMDZGOEQwQiAv
KiBJREJJbmRleFVwZ3JhZGVUb1YyLm1tICovLAogCQkJCTkzQkNCQzgwMjNDQzZFRTgwMENBMjIy
MSAvKiBJREJPYmplY3RTdG9yZUluZm9VcGdyYWRlVG9WMi5tbSAqLywKIAkJCQk0OUFFRUY2QjI0
MDczNTg2MDBDODdFNEMgLyogSW5BcHBCcm93c2VyUHJpdmFjeS5tbSAqLywKLQkJCQk0OTFBRUVG
NDI2NTJEREQwMDBENTMwQTggLyogSW5BcHBCcm93c2VyUHJpdmFjeVBsdWdJbi5tbSAqLywKIAkJ
CQk1MUE1ODc4NDFEMjcyRUYzMDA0QkE5QUYgLyogSW5kZXhlZERCRGF0YWJhc2VQcm9jZXNzS2ls
bC5tbSAqLywKIAkJCQlDQUIwRkY1NDIyMzMyQzNBMDA2Q0E1QjAgLyogSW5kZXhlZERCRmlsZU5h
bWUubW0gKi8sCiAJCQkJOTM5OUJBMDEyMzcxMTBBRTAwODM5MkJGIC8qIEluZGV4ZWREQkluUGFn
ZUNhY2hlLm1tICovLApAQCAtNTMyMCw2ICs1MzIzLDcgQEAKIAkJCQlBMTc5OEI4MjIyNDMxRDY1
MDAwNzY0QkQgLyogQXBwbGVQYXkubW0gaW4gU291cmNlcyAqLywKIAkJCQk2M0Y2NjgyMjFGOTdG
N0Y5MDAzMkVFNTEgLyogQXBwbGljYXRpb25NYW5pZmVzdC5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTYzNTRGNEQxMUY3QzNBQjUwMEQ4OURGMyAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTQ5RUY2QUQ1MjY3N0MwQkUwMDc5NjdEQyAvKiBBcHBQcml2
YWN5UmVwb3J0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFCNDBEOUUyM0FDOTYyNDAwRTA1MjQx
IC8qIEFzeW5jRnVuY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQk4MzQxMzhDNzIwMzI2MUNB
MDBGMjY5NjAgLyogQXN5bmNQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UubW0gaW4gU291cmNl
cyAqLywKIAkJCQk3Q0NFN0VCNDFBNDExQTdFMDA0NDdDNEMgLyogQXR0cmlidXRlZFN0cmluZy5t
bSBpbiBTb3VyY2VzICovLApAQCAtNTk0MSw2ICs1OTQ1LDcgQEAKIAkJCWZpbGVzID0gKAogCQkJ
CTA3N0E1QUYzMjMwNjM4QTYwMEE3MTA1QyAvKiBBY2Nlc3NpYmlsaXR5VGVzdFBsdWdpbi5tbSBp
biBTb3VyY2VzICovLAogCQkJCTM3RTdERDY3MUVBMDcxRjMwMDlCMzk2RCAvKiBBZGRpdGlvbmFs
UmVhZEFjY2Vzc0FsbG93ZWRVUkxzUGx1Z2luLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNDkxQUVF
RjgyNjUyRTMzNTAwRDUzMEE4IC8qIEFwcFByaXZhY3lSZXBvcnRQbHVnSW4ubW0gaW4gU291cmNl
cyAqLywKIAkJCQk3NTRDRUM4MTFGNjcyMkYyMDBEMDAzOUEgLyogQXV0b0ZpbGxBdmFpbGFibGUu
bW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzQyNTk0NjIyNjZBNjhBMDAzOUFBN0EgLyogQmFzaWNQ
cm9wb3NlZENyZWRlbnRpYWxQbHVnSW4ubW0gaW4gU291cmNlcyAqLywKIAkJCQkzNzRCN0E2MTFE
RjM3MUNGMDBBQ0NCNkMgLyogQnVuZGxlRWRpdGluZ0RlbGVnYXRlUGx1Z0luLm1tIGluIFNvdXJj
ZXMgKi8sCkBAIC01OTU2LDcgKzU5NjEsNiBAQAogCQkJCUY0QjAxNjg0MjVBRTA4RjgwMEU0NDVD
NCAvKiBEaXNhYmxlU3BlbGxjaGVja1BsdWdJbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxOEVF
NTE5MjBBNzhDRTUwMEUwMjRGMyAvKiBEb3VibGVEZWZlcnNMb2FkaW5nUGx1Z2luLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJNUNCNUIzQzIxRkZDNTVDRjAwQzI3QkIwIC8qIEZyYW1lSGFuZGxlU2Vy
aWFsaXphdGlvbi5tbSBpbiBTb3VyY2VzICovLAotCQkJCTQ5MUFFRUY4MjY1MkUzMzUwMEQ1MzBB
OCAvKiBJbkFwcEJyb3dzZXJQcml2YWN5UGx1Z0luLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjQ2
MEY2NUIyNjExMTk1ODAwNjRGMkI2IC8qIEluamVjdGVkQnVuZGxlSGl0VGVzdFBsdWdJbi5tbSBp
biBTb3VyY2VzICovLAogCQkJCTBFNDA0QThDMjE2NkRFMEEwMDgyNzFCQSAvKiBJbmplY3RlZEJ1
bmRsZU5vZGVIYW5kbGVJc1NlbGVjdEVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk3OUM1
RDQzMTIwOUQ3NjgzMDBGMUU3Q0EgLyogSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlSXNUZXh0Rmll
bGQubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZDUwMWEw
NmZiN2YyZmJjYWQwNGMxYzQwMDQxNDk3ZDAyYTE4M2I4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tCkBA
IC0wLDAgKzEsNzAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpbXBv
cnQgIkhUVFBTZXJ2ZXIuaCIKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0
ICJTZXJ2aWNlV29ya2VyVENQU2VydmVyLmgiCisjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVn
YXRlLmgiCisjaW1wb3J0ICJUZXN0VUlEZWxlZ2F0ZS5oIgorI2ltcG9ydCAiVGVzdFdLV2ViVmll
dy5oIgorI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJhcy5oIgorI2ltcG9ydCA8
Q0ZOZXR3b3JrL0NGTlNVUkxDb25uZWN0aW9uLmg+CisjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJM
UmVxdWVzdC5oPgorI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CisjaW1w
b3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaD4KKyNpbXBvcnQgPFdlYktp
dC9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg+CisjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgor
I2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKKyNpZiBFTkFCTEUoQVBQX1BSSVZBQ1lf
UkVQT1JUKQorVEVTVChBcHBQcml2YWN5UmVwb3J0LCBEZWZhdWx0UmVxdWVzdElzQXBwSW5pdGlh
dGVkKQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
VGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIE5TU3RyaW5nICp1cmwgPSBAImh0dHBzOi8v
d2Via2l0Lm9yZyI7CisKKyAgICBfX2Jsb2NrIGJvb2wgaXNEb25lID0gZmFsc2U7CisgICAgLy8g
RG9uJ3Qgc2V0IHRoZSBhdHRyaWJ1dGlvbiBBUEkgb24gTlNVUkxSZXF1ZXN0IHRvIG1ha2Ugc3Vy
ZSB0aGUgZGVmYXVsdCBpcyBhcHAgaW5pdGlhdGVkLgorICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0
OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6dXJsXV1d
OworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKworICAg
IFt3ZWJWaWV3IF9sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDpeKEJPT0wgaXNBcHBJbml0
aWF0ZWQpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoaXNBcHBJbml0aWF0ZWQpOworICAgICAgICBp
c0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZp
c0RvbmUpOworCisgICAgaXNEb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2FwcFByaXZhY3lS
ZXBvcnRUZXN0aW5nRGF0YTpeKHN0cnVjdCBXS0FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSBk
YXRhKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKGRhdGEuaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVx
dWVzdFRlc3RpbmcpOworICAgICAgICBFWFBFQ1RfRkFMU0UoZGF0YS5oYXNMb2FkZWROb25BcHBJ
bml0aWF0ZWRSZXF1ZXN0VGVzdGluZyk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07
CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Cit9CisKK1RFU1QoQXBw
UHJpdmFjeVJlcG9ydCwgQXBwSW5pdGlhdGVkUmVxdWVzdCkKK3sKKyAgICBhdXRvIGNvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwor
CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsK
KyAgICBOU1N0cmluZyAqdXJsID0gQCJodHRwczovL3dlYmtpdC5vcmciOworCisgICAgX19ibG9j
ayBib29sIGlzRG9uZSA9IGZhbHNlOworICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKmFwcEluaXRp
YXRlZFJlcXVlc3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwg
VVJMV2l0aFN0cmluZzp1cmxdXTsKKyAgICBhcHBJbml0aWF0ZWRSZXF1ZXN0LmF0dHJpYnV0aW9u
ID0gTlNVUkxSZXF1ZXN0QXR0cmlidXRpb25EZXZlbG9wZXI7CisKKyAgICBbd2ViVmlldyBsb2Fk
UmVxdWVzdDphcHBJbml0aWF0ZWRSZXF1ZXN0XTsKKyAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9y
RGlkRmluaXNoTmF2aWdhdGlvbl07CisKKyAgICBbd2ViVmlldyBfbGFzdE5hdmlnYXRpb25XYXNB
cHBJbml0aWF0ZWQ6XihCT09MIGlzQXBwSW5pdGlhdGVkKSB7CisgICAgICAgIEVYUEVDVF9UUlVF
KGlzQXBwSW5pdGlhdGVkKTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKworICAgIGlzRG9uZSA9IGZhbHNl
OworICAgIFt3ZWJWaWV3IF9hcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGE6XihzdHJ1Y3QgV0tB
cHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEgZGF0YSkgeworICAgICAgICBFWFBFQ1RfVFJVRShk
YXRhLmhhc0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nKTsKKyAgICAgICAgRVhQRUNU
X0ZBTFNFKGRhdGEuaGFzTG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcpOworICAg
ICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZpc0RvbmUpOworfQorCitURVNUKEFwcFByaXZhY3lSZXBvcnQsIE5vbkFwcEluaXRpYXRl
ZFJlcXVlc3QpCit7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgTlNTdHJpbmcgKnVybCA9IEAiaHR0
cHM6Ly93ZWJraXQub3JnIjsKKworICAgIF9fYmxvY2sgYm9vbCBpc0RvbmUgPSBmYWxzZTsKKyAg
ICBOU011dGFibGVVUkxSZXF1ZXN0ICpub25BcHBJbml0aWF0ZWRSZXF1ZXN0ID0gW05TTXV0YWJs
ZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6dXJsXV07Cisg
ICAgbm9uQXBwSW5pdGlhdGVkUmVxdWVzdC5hdHRyaWJ1dGlvbiA9IE5TVVJMUmVxdWVzdEF0dHJp
YnV0aW9uVXNlcjsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0Om5vbkFwcEluaXRpYXRlZFJl
cXVlc3RdOworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsK
KworICAgIFt3ZWJWaWV3IF9sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDpeKEJPT0wgaXNB
cHBJbml0aWF0ZWQpIHsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGlzQXBwSW5pdGlhdGVkKTsKKyAg
ICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmaXNEb25lKTsKKworICAgIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9hcHBQ
cml2YWN5UmVwb3J0VGVzdGluZ0RhdGE6XihzdHJ1Y3QgV0tBcHBQcml2YWN5UmVwb3J0VGVzdGlu
Z0RhdGEgZGF0YSkgeworICAgICAgICBFWFBFQ1RfRkFMU0UoZGF0YS5oYXNMb2FkZWRBcHBJbml0
aWF0ZWRSZXF1ZXN0VGVzdGluZyk7CisgICAgICAgIEVYUEVDVF9UUlVFKGRhdGEuaGFzTG9hZGVk
Tm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcpOworICAgICAgICBpc0RvbmUgPSB0cnVlOwor
ICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworfQorCitU
RVNUKEFwcFByaXZhY3lSZXBvcnQsIEFwcEluaXRpYXRlZFJlcXVlc3RXaXRoTmF2aWdhdGlvbikK
K3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdF0pOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBOU1N0cmluZyAqYXBwSW5pdGlhdGVkVVJMID0gQCJo
dHRwczovL3d3dy53ZWJraXQub3JnIjsKKyAgICBOU1N0cmluZyAqbm9uQXBwSW5pdGlhdGVkVVJM
ID0gQCJodHRwczovL3d3dy5hcHBsZS5jb20iOworCisgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAq
YXBwSW5pdGlhdGVkUmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OltOU1VSTCBVUkxXaXRoU3RyaW5nOmFwcEluaXRpYXRlZFVSTF1dOworICAgIGFwcEluaXRpYXRl
ZFJlcXVlc3QuYXR0cmlidXRpb24gPSBOU1VSTFJlcXVlc3RBdHRyaWJ1dGlvbkRldmVsb3BlcjsK
KworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OmFwcEluaXRpYXRlZFJlcXVlc3RdOworICAgIFt3
ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKworICAgIF9fYmxvY2sg
Ym9vbCBpc0RvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfbGFzdE5hdmlnYXRpb25XYXNBcHBJ
bml0aWF0ZWQ6XihCT09MIGlzQXBwSW5pdGlhdGVkKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKGlz
QXBwSW5pdGlhdGVkKTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKworICAgIGlzRG9uZSA9IGZhbHNlOwor
ICAgIFt3ZWJWaWV3IF9hcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGE6XihzdHJ1Y3QgV0tBcHBQ
cml2YWN5UmVwb3J0VGVzdGluZ0RhdGEgZGF0YSkgeworICAgICAgICBFWFBFQ1RfVFJVRShkYXRh
Lmhhc0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nKTsKKyAgICAgICAgRVhQRUNUX0ZB
TFNFKGRhdGEuaGFzTG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcpOworICAgICAg
ICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZpc0RvbmUpOworCisgICAgaXNEb25lID0gZmFsc2U7CisgICAgTlNNdXRhYmxlVVJMUmVxdWVz
dCAqbm9uQXBwSW5pdGlhdGVkUmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RX
aXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOm5vbkFwcEluaXRpYXRlZFVSTF1dOworICAgIG5v
bkFwcEluaXRpYXRlZFJlcXVlc3QuYXR0cmlidXRpb24gPSBOU1VSTFJlcXVlc3RBdHRyaWJ1dGlv
blVzZXI7CisKKyAgICBpc0RvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfY2xlYXJBcHBQcml2
YWN5UmVwb3J0VGVzdGluZ0RhdGE6XnsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsK
KworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKworICAgIC8vIExvYWQg
YSBub24gYXBwIGluaXRhdGVkIHJlcXVlc3QgYW5kIGNvbmZpcm0gdGhlIGxvYWRzIGFyZSBtYXJr
ZWQgY29ycmVjdGx5LgorICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0Om5vbkFwcEluaXRpYXRlZFJl
cXVlc3RdOworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsK
KworICAgIFt3ZWJWaWV3IF9sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDpeKEJPT0wgaXNB
cHBJbml0aWF0ZWQpIHsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGlzQXBwSW5pdGlhdGVkKTsKKyAg
ICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmaXNEb25lKTsKKworICAgIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9hcHBQ
cml2YWN5UmVwb3J0VGVzdGluZ0RhdGE6XihzdHJ1Y3QgV0tBcHBQcml2YWN5UmVwb3J0VGVzdGlu
Z0RhdGEgZGF0YSkgeworICAgICAgICBFWFBFQ1RfRkFMU0UoZGF0YS5oYXNMb2FkZWRBcHBJbml0
aWF0ZWRSZXF1ZXN0VGVzdGluZyk7CisgICAgICAgIEVYUEVDVF9UUlVFKGRhdGEuaGFzTG9hZGVk
Tm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcpOworICAgICAgICBpc0RvbmUgPSB0cnVlOwor
ICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworfQorCitU
RVNUKEFwcFByaXZhY3lSZXBvcnQsIEFwcEluaXRpYXRlZFJlcXVlc3RXaXRoU3ViRnJhbWUpCit7
CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBfc2V0T3ZlcnJpZGVDb250ZW50
U2VjdXJpdHlQb2xpY3k6QCJzY3JpcHQtc3JjICdub25jZS1iJyJdOworCisgICAgX19ibG9jayBi
b29sIGlzRG9uZSA9IGZhbHNlOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIE5TTXV0YWJsZVVSTFJlcXVl
c3QgKmFwcEluaXRpYXRlZFJlcXVlc3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0
aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAicGFnZS13aXRoLWNz
cCIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVz
b3VyY2VzIl1dOworICAgIGFwcEluaXRpYXRlZFJlcXVlc3QuYXR0cmlidXRpb24gPSBOU1VSTFJl
cXVlc3RBdHRyaWJ1dGlvbkRldmVsb3BlcjsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OmFw
cEluaXRpYXRlZFJlcXVlc3RdOworCisgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJNYWlu
RnJhbWU6IEIiXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIlN1YmZyYW1lOiBCIl07
CisKKyAgICBbd2ViVmlldyBfYXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhOiBeKHN0cnVjdCBX
S0FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSBkYXRhKSB7CisgICAgICAgIEVYUEVDVF9UUlVF
KGRhdGEuaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcpOworICAgICAgICBFWFBF
Q1RfRkFMU0UoZGF0YS5oYXNMb2FkZWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZyk7Cisg
ICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmlzRG9uZSk7Cit9CisKK1RFU1QoQXBwUHJpdmFjeVJlcG9ydCwgTm9uQXBwSW5pdGlh
dGVkUmVxdWVzdFdpdGhTdWJGcmFtZSkKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1
cmF0aW9uIF9zZXRPdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeTpAInNjcmlwdC1zcmMgJ25v
bmNlLWInIl07CisKKyAgICBfX2Jsb2NrIGJvb2wgaXNEb25lID0gZmFsc2U7CisgICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgp
XSk7CisgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqbm9uQXBwSW5pdGlhdGVkUmVxdWVzdCA9IFtO
U011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0g
VVJMRm9yUmVzb3VyY2U6QCJwYWdlLXdpdGgtY3NwIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3Vi
ZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CisgICAgbm9uQXBwSW5pdGlh
dGVkUmVxdWVzdC5hdHRyaWJ1dGlvbiA9IE5TVVJMUmVxdWVzdEF0dHJpYnV0aW9uVXNlcjsKKwor
ICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0Om5vbkFwcEluaXRpYXRlZFJlcXVlc3RdOworCisgICAg
W3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJNYWluRnJhbWU6IEIiXTsKKyAgICBbd2ViVmlldyB3
YWl0Rm9yTWVzc2FnZTpAIlN1YmZyYW1lOiBCIl07CisKKyAgICBbd2ViVmlldyBfYXBwUHJpdmFj
eVJlcG9ydFRlc3RpbmdEYXRhOiBeKHN0cnVjdCBXS0FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0
YSBkYXRhKSB7CisgICAgICAgIEVYUEVDVF9GQUxTRShkYXRhLmhhc0xvYWRlZEFwcEluaXRpYXRl
ZFJlcXVlc3RUZXN0aW5nKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoZGF0YS5oYXNMb2FkZWROb25B
cHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZyk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAg
fV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Cit9CisKK3N0YXRp
YyBjb25zdCBjaGFyKiBtYWluU1dCeXRlcyA9IFIiU1dSRVNPVVJDRSgKKzxzY3JpcHQ+Cit0cnkg
eworICAgIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKS50aGVuKGZ1
bmN0aW9uKHJlZykgeworICAgICAgICBpZiAocmVnLmFjdGl2ZSkgeworICAgICAgICAgICAgYWxl
cnQoJ3dvcmtlciBhbHJlYWR5IGFjdGl2ZScpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICAgIHdvcmtlciA9IHJlZy5pbnN0YWxsaW5nOworICAgICAgICB3b3JrZXIuYWRk
RXZlbnRMaXN0ZW5lcignc3RhdGVjaGFuZ2UnLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGlm
ICh3b3JrZXIuc3RhdGUgPT0gJ2FjdGl2YXRlZCcpCisgICAgICAgICAgICAgICAgYWxlcnQoJ3N1
Y2Nlc3NmdWxseSByZWdpc3RlcmVkJyk7CisgICAgICAgIH0pOworICAgIH0pLmNhdGNoKGZ1bmN0
aW9uKGVycm9yKSB7CisgICAgICAgIGFsZXJ0KCdSZWdpc3RyYXRpb24gZmFpbGVkIHdpdGg6ICcg
KyBlcnJvcik7CisgICAgfSk7Cit9IGNhdGNoKGUpIHsKKyAgICBhbGVydCgnRXhjZXB0aW9uOiAn
ICsgZSk7Cit9Cis8L3NjcmlwdD4KKylTV1JFU09VUkNFIjsKKworZW51bSBjbGFzcyBSZXNwb25z
ZVR5cGUgeyBTeW50aGV0aWMsIEZldGNoZWQgfTsKK2VudW0gY2xhc3MgSXNBcHBJbml0aWF0ZWQg
OiBib29sIHsgTm8sIFllcyB9Oworc3RhdGljIHZvaWQgcnVuVGVzdChSZXNwb25zZVR5cGUgcmVz
cG9uc2VUeXBlLCBJc0FwcEluaXRpYXRlZCBpc0FwcEluaXRpYXRlZCkKK3sKKyAgICBzdGF0aWMg
Ym9vbCBpc0RvbmUgPSBmYWxzZTsKKyAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0
YVN0b3JlXSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVE
YXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhh
bmRsZXI6XigpIHsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisKKyAgICBjb25zdCBjaGFyKiBqcyA9IG51bGxw
dHI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWRBbGVydCA9IG51bGxwdHI7CisKKyAgICBzd2l0
Y2ggKHJlc3BvbnNlVHlwZSkgeworICAgIGNhc2UgUmVzcG9uc2VUeXBlOjpTeW50aGV0aWM6Cisg
ICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsg
ZXZlbnQucmVzcG9uZFdpdGgobmV3IFJlc3BvbnNlKG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChc
InN5bnRoZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9KSkp
OyB9KSI7CisgICAgICAgIGV4cGVjdGVkQWxlcnQgPSAic3ludGhldGljIHJlc3BvbnNlIjsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBSZXNwb25zZVR5cGU6OkZldGNoZWQ6CisgICAgICAgIGpz
ID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVz
cG9uZFdpdGgoZmV0Y2goJy9mZXRjaGVkLmh0bWwnKSkgfSk7IjsKKyAgICAgICAgZXhwZWN0ZWRB
bGVydCA9ICJmZXRjaGVkIGZyb20gc2VydmVyIjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisg
ICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyBt
YWluU1dCeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIs
ICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9LAorICAgICAgICB7ICIvZmV0Y2hl
ZC5odG1sIiwgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+
IiB9IH0sCisgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBz
KTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKKworICAg
IGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOwor
ICAgIFtkZWxlZ2F0ZSBzZXREaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6XihXS1dl
YlZpZXcgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCB2b2lkIChe
Y2FsbGJhY2spKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVk
ZW50aWFsICopKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShjaGFsbGVuZ2UucHJvdGVjdGlv
blNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kLCBOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kU2Vy
dmVyVHJ1c3QpOworICAgICAgICBjYWxsYmFjayhOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNl
Q3JlZGVudGlhbCwgW05TVVJMQ3JlZGVudGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6Y2hhbGxlbmdl
LnByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJUcnVzdF0pOworICAgIH1dOworICAgIHdlYlZpZXcuZ2V0
KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisKKyAgICBOU011dGFibGVV
UkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6
W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwczov
LzEyNy4wLjAuMTolZC8iLCBzZXJ2ZXIucG9ydCgpXV1dOworICAgIGF1dG8gYXR0cmlidXRpb25W
YWx1ZSA9IGlzQXBwSW5pdGlhdGVkID09IElzQXBwSW5pdGlhdGVkOjpZZXMgPyBOU1VSTFJlcXVl
c3RBdHRyaWJ1dGlvbkRldmVsb3BlciA6IE5TVVJMUmVxdWVzdEF0dHJpYnV0aW9uVXNlcjsKKyAg
ICByZXF1ZXN0LmF0dHJpYnV0aW9uID0gYXR0cmlidXRpb25WYWx1ZTsKKworICAgIFt3ZWJWaWV3
IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldyBfdGVz
dF93YWl0Rm9yQWxlcnRdLCAic3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyZWQiKTsKKworICAgIGlmIChy
ZXNwb25zZVR5cGUgIT0gUmVzcG9uc2VUeXBlOjpGZXRjaGVkKQorICAgICAgICBzZXJ2ZXIuY2Fu
Y2VsKCk7CisKKyAgICBib29sIGV4cGVjdGluZ0FwcEluaXRpYXRlZFJlcXVlc3RzID0gaXNBcHBJ
bml0aWF0ZWQgPT0gSXNBcHBJbml0aWF0ZWQ6OlllczsKKyAgICBpc0RvbmUgPSBmYWxzZTsKKyAg
ICBbd2ViVmlldyBfYXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhOiBeKHN0cnVjdCBXS0FwcFBy
aXZhY3lSZXBvcnRUZXN0aW5nRGF0YSBkYXRhKSB7CisgICAgICAgIEVYUEVDVF9FUShkYXRhLmhh
c0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nLCBleHBlY3RpbmdBcHBJbml0aWF0ZWRS
ZXF1ZXN0cyk7CisgICAgICAgIEVYUEVDVF9FUShkYXRhLmhhc0xvYWRlZE5vbkFwcEluaXRpYXRl
ZFJlcXVlc3RUZXN0aW5nLCAhZXhwZWN0aW5nQXBwSW5pdGlhdGVkUmVxdWVzdHMpOworICAgICAg
ICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgaXNEb25lID0gZmFsc2U7CisgICAgW3dl
YlZpZXcgX2NsZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhOl57CisgICAgICAgIGlzRG9u
ZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9u
ZSk7CisKKyAgICBbd2ViVmlldyByZWxvYWRdOworICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmll
dyBfdGVzdF93YWl0Rm9yQWxlcnRdLCBleHBlY3RlZEFsZXJ0KTsKKworICAgIGlzRG9uZSA9IGZh
bHNlOworICAgIFt3ZWJWaWV3IF9hcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGE6IF4oc3RydWN0
IFdLQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhIGRhdGEpIHsKKyAgICAgICAgaWYgKHJlc3Bv
bnNlVHlwZSA9PSBSZXNwb25zZVR5cGU6OlN5bnRoZXRpYykgeworICAgICAgICAgICAgRVhQRUNU
X0ZBTFNFKGRhdGEuaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcpOworICAgICAg
ICAgICAgRVhQRUNUX0ZBTFNFKGRhdGEuaGFzTG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRl
c3RpbmcpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgRVhQRUNUX0VRKGRhdGEuaGFz
TG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcsIGV4cGVjdGluZ0FwcEluaXRpYXRlZFJl
cXVlc3RzKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShkYXRhLmhhc0xvYWRlZE5vbkFwcEluaXRp
YXRlZFJlcXVlc3RUZXN0aW5nLCAhZXhwZWN0aW5nQXBwSW5pdGlhdGVkUmVxdWVzdHMpOworICAg
ICAgICB9CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Cit9CisKK1RFU1QoQXBwUHJpdmFjeVJlcG9ydCwgTm9u
QXBwSW5pdGlhdGVkUmVxdWVzdFdpdGhTZXJ2aWNlV29ya2VyKQoreworICAgIHJ1blRlc3QoUmVz
cG9uc2VUeXBlOjpTeW50aGV0aWMsIElzQXBwSW5pdGlhdGVkOjpObyk7CisgICAgcnVuVGVzdChS
ZXNwb25zZVR5cGU6OkZldGNoZWQsIElzQXBwSW5pdGlhdGVkOjpObyk7Cit9CisKK1RFU1QoQXBw
UHJpdmFjeVJlcG9ydCwgQXBwSW5pdGlhdGVkUmVxdWVzdFdpdGhTZXJ2aWNlV29ya2VyKQorewor
ICAgIHJ1blRlc3QoUmVzcG9uc2VUeXBlOjpTeW50aGV0aWMsIElzQXBwSW5pdGlhdGVkOjpZZXMp
OworICAgIHJ1blRlc3QoUmVzcG9uc2VUeXBlOjpGZXRjaGVkLCBJc0FwcEluaXRpYXRlZDo6WWVz
KTsKK30KKworVEVTVChBcHBQcml2YWN5UmVwb3J0LCBNdWx0aXBsZVdlYlZpZXdzV2l0aFNoYXJl
ZFNlcnZpY2VXb3JrZXIpCit7CisgICAgc3RhdGljIGJvb2wgaXNEb25lID0gZmFsc2U7CisKKyAg
ICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZUeXBl
czpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6
W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKKyAgICAgICAgaXNE
b25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9u
ZSk7CisKKyAgICBjb25zdCBjaGFyKiBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNo
JywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykp
IH0pIjsKKyAgICBjb25zdCBjaGFyKiBleHBlY3RlZEFsZXJ0ID0gImZldGNoZWQgZnJvbSBzZXJ2
ZXIiOworCisgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoeworICAgICAgICB7
ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRl
bnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9LAorICAgICAgICB7
ICIvZmV0Y2hlZC5odG1sIiwgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicp
PC9zY3JpcHQ+IiB9IH0sCisgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9j
b2w6Okh0dHBzKTsKKworICAgIGF1dG8gd2ViVmlldzEgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3
XSk7CisgICAgYXV0byB3ZWJWaWV3MiA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKKworICAg
IGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOwor
ICAgIFtkZWxlZ2F0ZSBzZXREaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6XihXS1dl
YlZpZXcgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCB2b2lkIChe
Y2FsbGJhY2spKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVk
ZW50aWFsICopKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShjaGFsbGVuZ2UucHJvdGVjdGlv
blNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kLCBOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kU2Vy
dmVyVHJ1c3QpOworICAgICAgICBjYWxsYmFjayhOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNl
Q3JlZGVudGlhbCwgW05TVVJMQ3JlZGVudGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6Y2hhbGxlbmdl
LnByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJUcnVzdF0pOworICAgIH1dOworICAgIHdlYlZpZXcxLmdl
dCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworICAgIHdlYlZpZXcyLmdl
dCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworCisgICAgTlNNdXRhYmxl
VVJMUmVxdWVzdCAqYXBwSW5pdGlhdGVkUmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJl
cXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9y
bWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyLnBvcnQoKV1dXTsKKyAgICBhcHBJ
bml0aWF0ZWRSZXF1ZXN0LmF0dHJpYnV0aW9uID0gTlNVUkxSZXF1ZXN0QXR0cmlidXRpb25EZXZl
bG9wZXI7CisgICAgW3dlYlZpZXcxIGxvYWRSZXF1ZXN0OmFwcEluaXRpYXRlZFJlcXVlc3RdOwor
ICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldzEgX3Rlc3Rfd2FpdEZvckFsZXJ0XSwgInN1Y2Nl
c3NmdWxseSByZWdpc3RlcmVkIik7CisKKyAgICBbd2ViVmlldzEgcmVsb2FkXTsKKyAgICBFWFBF
Q1RfV0tfU1RSRVEoW3dlYlZpZXcxIF90ZXN0X3dhaXRGb3JBbGVydF0sIGV4cGVjdGVkQWxlcnQp
OworCisgICAgaXNEb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcxIF9hcHBQcml2YWN5UmVwb3J0
VGVzdGluZ0RhdGE6IF4oc3RydWN0IFdLQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhIGRhdGEp
IHsKKyAgICAgICAgRVhQRUNUX1RSVUUoZGF0YS5oYXNMb2FkZWRBcHBJbml0aWF0ZWRSZXF1ZXN0
VGVzdGluZyk7CisgICAgICAgIEVYUEVDVF9GQUxTRShkYXRhLmhhc0xvYWRlZE5vbkFwcEluaXRp
YXRlZFJlcXVlc3RUZXN0aW5nKTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKwor
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKworICAgIGlzRG9uZSA9IGZh
bHNlOworICAgIFt3ZWJWaWV3MSBfY2xlYXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGE6XnsK
KyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmaXNEb25lKTsKKworICAgIGlzRG9uZSA9IGZhbHNlOworICAgIE5TTXV0YWJsZVVS
TFJlcXVlc3QgKm5vbkFwcEluaXRpYXRlZFJlcXVlc3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCBy
ZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZv
cm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlci5wb3J0KCldXV07CisgICAgbm9u
QXBwSW5pdGlhdGVkUmVxdWVzdC5hdHRyaWJ1dGlvbiA9IE5TVVJMUmVxdWVzdEF0dHJpYnV0aW9u
VXNlcjsKKyAgICBbd2ViVmlldzIgbG9hZFJlcXVlc3Q6bm9uQXBwSW5pdGlhdGVkUmVxdWVzdF07
CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3MiBfdGVzdF93YWl0Rm9yQWxlcnRdLCAiZmV0
Y2hlZCBmcm9tIHNlcnZlciIpOworCisgICAgW3dlYlZpZXcyIHJlbG9hZF07CisgICAgRVhQRUNU
X1dLX1NUUkVRKFt3ZWJWaWV3MiBfdGVzdF93YWl0Rm9yQWxlcnRdLCBleHBlY3RlZEFsZXJ0KTsK
KworICAgIFt3ZWJWaWV3MiBfYXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhOiBeKHN0cnVjdCBX
S0FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSBkYXRhKSB7CisgICAgICAgIEVYUEVDVF9GQUxT
RShkYXRhLmhhc0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nKTsKKyAgICAgICAgRVhQ
RUNUX1RSVUUoZGF0YS5oYXNMb2FkZWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZyk7Cisg
ICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZpc0RvbmUpOworfQorCitzdGF0aWMgdm9pZCBzb2Z0VXBkYXRlVGVzdChJc0FwcEluaXRp
YXRlZCBpc0FwcEluaXRpYXRlZCkKK3sKKyAgICBzdGF0aWMgYm9vbCBpc0RvbmUgPSBmYWxzZTsK
KyAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZU
eXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVkU2lu
Y2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKKyAgICAgICAg
aXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlz
RG9uZSk7CisKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdE5hdmlnYXRpb25EZWxl
Z2F0ZSBuZXddKTsKKyAgICBbZGVsZWdhdGUgc2V0RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOl4oV0tXZWJWaWV3ICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxs
ZW5nZSwgdm9pZCAoXmNhbGxiYWNrKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRp
b24sIE5TVVJMQ3JlZGVudGlhbCAqKSkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoY2hhbGxl
bmdlLnByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlvbk1ldGhvZCwgTlNVUkxBdXRoZW50aWNh
dGlvbk1ldGhvZFNlcnZlclRydXN0KTsKKyAgICAgICAgY2FsbGJhY2soTlNVUkxTZXNzaW9uQXV0
aENoYWxsZW5nZVVzZUNyZWRlbnRpYWwsIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbEZvclRy
dXN0OmNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uuc2VydmVyVHJ1c3RdKTsKKyAgICB9XTsKKwor
ICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CisgICAgYXV0byB3ZWJWaWV3MSA9IGFkb3B0TlMoW1tXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJh
dGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgYXV0byB3ZWJWaWV3MiA9IGFkb3B0TlMo
W1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICB3ZWJWaWV3MS5n
ZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICB3ZWJWaWV3Mi5n
ZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKworICAgIHVpbnQxNl90
IHNlcnZlclBvcnQ7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGpzID0gInNlbGYuYWRkRXZlbnRM
aXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgobmV3IFJlc3Bv
bnNlKG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNwb25zZVwiKTwvc2Ny
aXB0PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9KSI7CisKKyAgICB7CisgICAgICAgIFRl
c3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMSh7CisgICAgICAgICAgICB7ICIvIiwgeyBt
YWluU1dCeXRlcyB9IH0sCisgICAgICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5
cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfSwKKyAgICAgICAgfSwgVGVz
dFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCB0ZXN0SWRl
bnRpdHkoKSk7CisgICAgICAgIHNlcnZlclBvcnQgPSBzZXJ2ZXIxLnBvcnQoKTsKKworICAgICAg
ICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBzZXJ2ZXIxLnJlcXVlc3QoKTsKKyAgICAgICAgaWYg
KGlzQXBwSW5pdGlhdGVkID09IElzQXBwSW5pdGlhdGVkOjpObykgeworICAgICAgICAgICAgTlNN
dXRhYmxlVVJMUmVxdWVzdCAqbm9uQXBwSW5pdGlhdGVkUmVxdWVzdCA9IFtOU011dGFibGVVUkxS
ZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyMS5wb3J0KCldXV07
CisgICAgICAgICAgICBub25BcHBJbml0aWF0ZWRSZXF1ZXN0LmF0dHJpYnV0aW9uID0gTlNVUkxS
ZXF1ZXN0QXR0cmlidXRpb25EZXZlbG9wZXI7CisgICAgICAgICAgICByZXF1ZXN0ID0gbm9uQXBw
SW5pdGlhdGVkUmVxdWVzdDsKKyAgICAgICAgfQorCisgICAgICAgIFt3ZWJWaWV3MSBsb2FkUmVx
dWVzdDpyZXF1ZXN0XTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3MSBfdGVzdF93
YWl0Rm9yQWxlcnRdLCAic3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyZWQiKTsKKworICAgICAgICBzZXJ2
ZXIxLmNhbmNlbCgpOworICAgIH0KKworICAgIHsKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6SFRU
UFNlcnZlciBzZXJ2ZXIyKHsKKyAgICAgICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwK
KyAgICAgICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlv
bi9qYXZhc2NyaXB0IiB9fSwganMgfSB9CisgICAgICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBT
ZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywgbnVsbHB0ciwgdGVzdElkZW50aXR5MigpLCBzZXJ2ZXJQ
b3J0KTsKKworICAgICAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpyZXF1ZXN0MiA9IFtOU011dGFi
bGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyMi5wb3J0
KCldXV07CisgICAgICAgIGF1dG8gYXR0cmlidXRpb25WYWx1ZSA9IGlzQXBwSW5pdGlhdGVkID09
IElzQXBwSW5pdGlhdGVkOjpZZXMgPyBOU1VSTFJlcXVlc3RBdHRyaWJ1dGlvbkRldmVsb3BlciA6
IE5TVVJMUmVxdWVzdEF0dHJpYnV0aW9uVXNlcjsKKyAgICAgICAgcmVxdWVzdDIuYXR0cmlidXRp
b24gPSBhdHRyaWJ1dGlvblZhbHVlOworCisgICAgICAgIGlzRG9uZSA9IGZhbHNlOworICAgICAg
ICBbd2ViVmlldzEgX2NsZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhOl57CisgICAgICAg
ICAgICBpc0RvbmUgPSB0cnVlOworICAgICAgICB9XTsKKworICAgICAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmlzRG9uZSk7CisKKyAgICAgICAgW3dlYlZpZXcyIGxvYWRSZXF1ZXN0OnJl
cXVlc3QyXTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3MiBfdGVzdF93YWl0Rm9y
QWxlcnRdLCAic3ludGhldGljIHJlc3BvbnNlIik7CisgICAgfQorCisgICAgaXNEb25lID0gZmFs
c2U7CisgICAgYm9vbCBleHBlY3RpbmdBcHBJbml0aWF0ZWRSZXF1ZXN0cyA9IGlzQXBwSW5pdGlh
dGVkID09IElzQXBwSW5pdGlhdGVkOjpZZXMgPyB0cnVlIDogZmFsc2U7CisgICAgd2hpbGUgKCFp
c0RvbmUpIHsKKyAgICAgICAgW3dlYlZpZXcyIF9hcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGE6
IF4oc3RydWN0IFdLQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhIGRhdGEpIHsKKyAgICAgICAg
ICAgIGlmICghZGF0YS5kaWRQZXJmb3JtU29mdFVwZGF0ZSkKKyAgICAgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgICAgIEVYUEVDVF9FUShkYXRhLmhhc0xvYWRlZEFwcEluaXRpYXRlZFJl
cXVlc3RUZXN0aW5nLCBleHBlY3RpbmdBcHBJbml0aWF0ZWRSZXF1ZXN0cyk7CisgICAgICAgICAg
ICBFWFBFQ1RfRVEoZGF0YS5oYXNMb2FkZWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZywg
IWV4cGVjdGluZ0FwcEluaXRpYXRlZFJlcXVlc3RzKTsKKyAgICAgICAgICAgIGlzRG9uZSA9IHRy
dWU7CisgICAgICAgIH1dOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzcGluUnVuTG9v
cCgxKTsKKyAgICB9Cit9CisKK1RFU1QoQXBwUHJpdmFjeVJlcG9ydCwgQXBwSW5pdGlhdGVkUmVx
dWVzdFdpdGhTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZSkKK3sKKyAgICBzb2Z0VXBkYXRlVGVzdChJ
c0FwcEluaXRpYXRlZDo6WWVzKTsKK30KKworVEVTVChBcHBQcml2YWN5UmVwb3J0LCBOb25BcHBJ
bml0aWF0ZWRSZXF1ZXN0V2l0aFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlKQoreworICAgIHNvZnRV
cGRhdGVUZXN0KElzQXBwSW5pdGlhdGVkOjpObyk7Cit9CisKK3N0YXRpYyB2b2lkIHJ1bldlYlBy
b2Nlc3NQbHVnSW5UZXN0KElzQXBwSW5pdGlhdGVkIGlzQXBwSW5pdGlhdGVkKQoreworICAgIFdL
V2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJBcHBQcml2
YWN5UmVwb3J0UGx1Z0luIl07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisKKyAgICBOU1N0cmluZyAqdXJsID0gQCJodHRw
czovL3dlYmtpdC5vcmciOworCisgICAgX19ibG9jayBib29sIGlzRG9uZSA9IGZhbHNlOworICAg
IE5TTXV0YWJsZVVSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1
ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzp1cmxdXTsKKyAgICBhdXRvIGF0dHJpYnV0
aW9uVmFsdWUgPSBpc0FwcEluaXRpYXRlZCA9PSBJc0FwcEluaXRpYXRlZDo6WWVzID8gTlNVUkxS
ZXF1ZXN0QXR0cmlidXRpb25EZXZlbG9wZXIgOiBOU1VSTFJlcXVlc3RBdHRyaWJ1dGlvblVzZXI7
CisgICAgcmVxdWVzdC5hdHRyaWJ1dGlvbiA9IGF0dHJpYnV0aW9uVmFsdWU7CisKKyAgICBbd2Vi
VmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKyAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlk
RmluaXNoTmF2aWdhdGlvbl07CisKKyAgICBpc0RvbmUgPSBmYWxzZTsKKyAgICBib29sIGV4cGVj
dGluZ0FwcEluaXRpYXRlZFJlcXVlc3RzID0gaXNBcHBJbml0aWF0ZWQgPT0gSXNBcHBJbml0aWF0
ZWQ6OlllcyA/IHRydWUgOiBmYWxzZTsKKyAgICBbd2ViVmlldyBfYXBwUHJpdmFjeVJlcG9ydFRl
c3RpbmdEYXRhOl4oc3RydWN0IFdLQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhIGRhdGEpIHsK
KyAgICAgICAgRVhQRUNUX0VRKGRhdGEuaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3Rp
bmcsIGV4cGVjdGluZ0FwcEluaXRpYXRlZFJlcXVlc3RzKTsKKyAgICAgICAgRVhQRUNUX0VRKGRh
dGEuaGFzTG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcsICFleHBlY3RpbmdBcHBJ
bml0aWF0ZWRSZXF1ZXN0cyk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Cit9CisKK1RFU1QoQXBwUHJpdmFj
eVJlcG9ydCwgV2ViUHJvY2Vzc1BsdWdpblRlc3RBcHBJbml0aWF0ZWQpCit7CisgICAgcnVuV2Vi
UHJvY2Vzc1BsdWdJblRlc3QoSXNBcHBJbml0aWF0ZWQ6Olllcyk7Cit9CisKK1RFU1QoQXBwUHJp
dmFjeVJlcG9ydCwgV2ViUHJvY2Vzc1BsdWdpblRlc3ROb25BcHBJbml0aWF0ZWQpCit7CisgICAg
cnVuV2ViUHJvY2Vzc1BsdWdJblRlc3QoSXNBcHBJbml0aWF0ZWQ6Ok5vKTsKK30KKworI2lmIFdL
X0hBVkVfQ19TUEkKKworc3RhdGljIGNvbnN0IGNoYXIqIG1haW5TV0J5dGVzRGVmYXVsdFZhbHVl
ID0gUiJTV1JFU09VUkNFKAorPHNjcmlwdD4KKworZnVuY3Rpb24gbG9nKG1zZykKK3sKKyAgICB3
aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5zdy5wb3N0TWVzc2FnZShtc2cpOworfQorCitu
YXZpZ2F0b3Iuc2VydmljZVdvcmtlci5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgZnVuY3Rp
b24oZXZlbnQpIHsKKyAgICBsb2coZXZlbnQuZGF0YSk7Cit9KTsKKwordHJ5IHsKKyAgICBuYXZp
Z2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcp
IHsKKyAgICAgICAgaWYgKHJlZy5hY3RpdmUpIHsKKyAgICAgICAgICAgIHdvcmtlciA9IHJlZy5h
Y3RpdmU7CisgICAgICAgICAgICB3b3JrZXIucG9zdE1lc3NhZ2UoIlNFQ09ORCIpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHdvcmtlciA9IHJlZy5pbnN0YWxsaW5n
OworICAgICAgICB3b3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignc3RhdGVjaGFuZ2UnLCBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIGlmICh3b3JrZXIuc3RhdGUgPT0gJ2FjdGl2YXRlZCcpCisgICAg
ICAgICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKCJGSVJTVCIpOworICAgICAgICB9KTsKKyAg
ICB9KS5jYXRjaChmdW5jdGlvbihlcnJvcikgeworICAgICAgICBsb2coJ1JlZ2lzdHJhdGlvbiBm
YWlsZWQgd2l0aDogJyArIGVycm9yKTsKKyAgICB9KTsKK30gY2F0Y2goZSkgeworICAgIGxvZygn
RXhjZXB0aW9uOiAnICsgZSk7Cit9Cis8L3NjcmlwdD4KKylTV1JFU09VUkNFIjsKKworc3RhdGlj
IGNvbnN0IGNoYXIqIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAorc2Vs
Zi5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgYXN5bmMgKGV2ZW50KSA9PiB7CisgICAgaWYg
KCFzZWxmLmludGVybmFscykgeworICAgICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoJ05v
IGludGVybmFscycpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcXVlcnlBcHBQcml2
YWN5UmVwb3J0VmFsdWUoZXZlbnQsIGZhbHNlKTsKK30pOworCithc3luYyBmdW5jdGlvbiBxdWVy
eUFwcFByaXZhY3lSZXBvcnRWYWx1ZShldmVudCwgaGF2ZVNlbnRJbml0aWFsTWVzc2FnZSkKK3sK
KyAgICB2YXIgcmVzdWx0ID0gYXdhaXQgaW50ZXJuYWxzLmxhc3ROYXZpZ2F0aW9uV2FzQXBwUHJp
dmFjeVJlcG9ydCgpOworICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgaWYgKGV2ZW50LmRhdGEg
PT0gIkZJUlNUIikgeworICAgICAgICAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCdhcHAg
aW5pdGlhdGVkJyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoIWhhdmVTZW50SW5pdGlhbE1lc3NhZ2UpCisgICAgICAgICAgICBldmVudC5zb3VyY2UucG9z
dE1lc3NhZ2UoJ3N0YXJ0cyBhcHAgaW5pdGlhdGVkJyk7CisKKyAgICAgICAgcXVlcnlBcHBQcml2
YWN5UmVwb3J0VmFsdWUoZXZlbnQsIHRydWUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCdub24gYXBwIGluaXRpYXRlZCcpOworfQorCisp
U1dSRVNPVVJDRSI7CisKKworc3RhdGljIFN0cmluZyBleHBlY3RlZE1lc3NhZ2U7CitzdGF0aWMg
Ym9vbCByZWNlaXZlZE1lc3NhZ2UgPSBmYWxzZTsKKworQGludGVyZmFjZSBTV0FwcEluaXRpYXRl
ZFJlcXVlc3RNZXNzYWdlSGFuZGxlciA6IE5TT2JqZWN0IDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVy
PgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gU1dBcHBJbml0aWF0ZWRSZXF1ZXN0TWVzc2FnZUhh
bmRsZXIKKy0gKHZvaWQpdXNlckNvbnRlbnRDb250cm9sbGVyOihXS1VzZXJDb250ZW50Q29udHJv
bGxlciAqKXVzZXJDb250ZW50Q29udHJvbGxlciBkaWRSZWNlaXZlU2NyaXB0TWVzc2FnZTooV0tT
Y3JpcHRNZXNzYWdlICopbWVzc2FnZQoreworICAgIEVYUEVDVF9XS19TVFJFUShtZXNzYWdlLmJv
ZHksIGV4cGVjdGVkTWVzc2FnZSk7CisgICAgcmVjZWl2ZWRNZXNzYWdlID0gdHJ1ZTsKK30KK0Bl
bmQKKworVEVTVChBcHBQcml2YWN5UmVwb3J0LCBSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRV
cGRhdGVzQXBwSW5pdGlhdGVkVmFsdWUpCit7CisgICAgc3RhdGljIGJvb2wgaXNEb25lID0gZmFs
c2U7CisKKyAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSByZW1vdmVE
YXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlm
aWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKKyAg
ICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmlzRG9uZSk7CisKKyAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9u
ID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1
Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpT
Q0ZvclRlc3Rpbmc6WUVTXTsKKyAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQg
PSBhZG9wdFdLKFRlc3RXZWJLaXRBUEk6OlV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1
bmRsZVRlc3QoIkludGVybmFsc0luamVjdGVkQnVuZGxlVGVzdCIpKTsKKyAgICBjb25maWd1cmF0
aW9uLnByb2Nlc3NQb29sID0gKFdLUHJvY2Vzc1Bvb2wgKiljb250ZXh0LmdldCgpOworCisgICAg
UmV0YWluUHRyPFNXQXBwSW5pdGlhdGVkUmVxdWVzdE1lc3NhZ2VIYW5kbGVyPiBtZXNzYWdlSGFu
ZGxlciA9IGFkb3B0TlMoW1tTV0FwcEluaXRpYXRlZFJlcXVlc3RNZXNzYWdlSGFuZGxlciBhbGxv
Y10gaW5pdF0pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFk
ZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJzdyJdOwor
CisgICAgYXV0byB3ZWJWaWV3MSA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0
aW9uXSk7CisgICAgYXV0byB3ZWJWaWV3MiA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uXSk7CisKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdE5hdmlnYXRp
b25EZWxlZ2F0ZSBuZXddKTsKKyAgICBbZGVsZWdhdGUgc2V0RGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlOl4oV0tXZWJWaWV3ICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2Ug
KmNoYWxsZW5nZSwgdm9pZCAoXmNhbGxiYWNrKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlz
cG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqKSkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEo
Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlvbk1ldGhvZCwgTlNVUkxBdXRo
ZW50aWNhdGlvbk1ldGhvZFNlcnZlclRydXN0KTsKKyAgICAgICAgY2FsbGJhY2soTlNVUkxTZXNz
aW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWwsIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlh
bEZvclRydXN0OmNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uuc2VydmVyVHJ1c3RdKTsKKyAgICB9
XTsKKworICAgIHdlYlZpZXcxLmdldCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdl
dCgpOworICAgIHdlYlZpZXcyLmdldCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdl
dCgpOworCisgICAgU2VydmljZVdvcmtlclRDUFNlcnZlciBzZXJ2ZXIoeworICAgICAgICB7ICJ0
ZXh0L2h0bWwiLCBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSB9LAorICAgICAgICB7ICJhcHBsaWNh
dGlvbi9qYXZhc2NyaXB0Iiwgc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgfSwKKyAgICB9LCB7Cisg
ICAgICAgIHsgInRleHQvaHRtbCIsIG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlIH0sCisgICAgICAg
IHsgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiLCBzY3JpcHRCeXRlc0RlZmF1bHRWYWx1ZSB9LAor
ICAgIH0pOworCisgICAgLy8gTG9hZCBXZWJWaWV3IHdpdGggYW4gYXBwIGluaXRpYXRlZCByZXF1
ZXN0LiBXZSBleHBlY3QgdGhlIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSB0byBiZSBhcHAgaW5p
dGlhdGVkLgorICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJhcHAgaW5pdGlhdGVkIjsKKyAgICBbd2Vi
VmlldzEgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZyZWNlaXZlZE1lc3NhZ2UpOworCisgICAgLy8gTG9hZCBXZWJWaWV3IHdpdGgg
YSBub24gYXBwIGluaXRpYXRlZCByZXF1ZXN0LiBXZSBleHBlY3QgdGhlIFNlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eSB0byBiZSBhcHAgaW5pdGlhdGVkCisgICAgLy8gYXQgZmlyc3QsIGJ1dCB0aGVu
IGJlY29tZSBub24gYXBwIGluaXRpYXRlZCBvbmNlIHRoZSBzZWNvbmQgd2ViVmlldyBpcyBjbG9z
ZWQgYW5kIGl0cyBjbGllbnQgaXMgdW5yZWdpc3RlcmVkLgorICAgIGV4cGVjdGVkTWVzc2FnZSA9
ICJzdGFydHMgYXBwIGluaXRpYXRlZCI7CisgICAgcmVjZWl2ZWRNZXNzYWdlID0gZmFsc2U7Cisg
ICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqbm9uQXBwSW5pdGlhdGVkUmVxdWVzdCA9IFtOU011dGFi
bGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cDovLzEyNy4wLjAuMTolZC9tYWluLmh0bWwiLCBzZXJ2
ZXIucG9ydCgpXV1dOworICAgIG5vbkFwcEluaXRpYXRlZFJlcXVlc3QuYXR0cmlidXRpb24gPSBO
U1VSTFJlcXVlc3RBdHRyaWJ1dGlvblVzZXI7CisKKyAgICBbd2ViVmlldzIgbG9hZFJlcXVlc3Q6
bm9uQXBwSW5pdGlhdGVkUmVxdWVzdF07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZy
ZWNlaXZlZE1lc3NhZ2UpOworCisgICAgLy8gQ2xvc2UgdGhlIGFwcCBpbml0aWF0ZWQgdmlldy4g
V2UgZXhwZWN0IHRoYXQgdGhlIGV4aXN0aW5nIHdvcmtlciB3aWxsIGJlY29tZSBub24gYXBwIGlu
aXRpYXRlZAorICAgIC8vIG5vdyB0aGF0IGFsbCBhcHAgaW5pdGlhdGVkIGNsaWVudHMgaGF2ZSBi
ZWVuIHJlbW92ZWQuCisgICAgZXhwZWN0ZWRNZXNzYWdlID0gIm5vbiBhcHAgaW5pdGlhdGVkIjsK
KyAgICByZWNlaXZlZE1lc3NhZ2UgPSBmYWxzZTsKKyAgICBbd2ViVmlldzEgX2Nsb3NlXTsKKyAg
ICB3ZWJWaWV3MSA9IG51bGxwdHI7CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJl
Y2VpdmVkTWVzc2FnZSk7Cit9CisKKyNlbmRpZiAvLyBXS19IQVZFX0NfU1BJCisKKyNlbmRpZiAv
LyBBUFBfUFJJVkFDWV9SRVBPUlQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydFBsdWdJbi5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydFBsdWdJbi5tbQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wYTEzN2RkMmUxMzM1NWU5Y2NkMDZhNWQwODJkZTYxMTFlMjlmNTdmCi0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5
UmVwb3J0UGx1Z0luLm1tCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJj
b25maWcuaCIKKworI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgPFdlYktp
dC9XS1dlYlByb2Nlc3NQbHVnSW4uaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlByb2Nlc3NQbHVn
SW5Mb2FkRGVsZWdhdGUuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworQGludGVyZmFj
ZSBBcHBQcml2YWN5UmVwb3J0UGx1Z0luIDogTlNPYmplY3QgPFdLV2ViUHJvY2Vzc1BsdWdJbiwg
V0tXZWJQcm9jZXNzUGx1Z0luTG9hZERlbGVnYXRlPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24g
QXBwUHJpdmFjeVJlcG9ydFBsdWdJbiB7IH0KKworLSAoTlNVUkxSZXF1ZXN0ICopd2ViUHJvY2Vz
c1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjooV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3Nl
ckNvbnRleHRDb250cm9sbGVyICopY29udHJvbGxlciBmcmFtZTooV0tXZWJQcm9jZXNzUGx1Z0lu
RnJhbWUgKilmcmFtZSB3aWxsU2VuZFJlcXVlc3RGb3JSZXNvdXJjZToodWludDY0X3QpcmVzb3Vy
Y2UgcmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCByZWRpcmVjdFJlc3BvbnNlOihOU1VS
TFJlc3BvbnNlICopcmVkaXJlY3RSZXNwb25zZQoreworICAgIHJldHVybiBhZG9wdE5TKFtbTlNV
UkxSZXF1ZXN0IGFsbG9jXSBpbml0V2l0aFVSTDpyZXF1ZXN0LlVSTF0pLmF1dG9yZWxlYXNlKCk7
Cit9CisKK0BlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQppbmRleCAyYWU5NTUzYjgxZjVkODQ1
MzlhOGRhNzE0MzBkOTdhNWVmNWJlOTMzLi44MDI1NWZiNGYyMTBiOWI1N2RhODI4Yjc1Y2RiZTA3
NmMyMGZjNGI1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCkBAIC0yNSwxMSArMjUsOSBAQAog
CiAjaW1wb3J0ICJjb25maWcuaCIKIAotI2ltcG9ydCAiSFRUUFNlcnZlci5oIgogI2ltcG9ydCAi
UGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlNlcnZpY2VXb3JrZXJUQ1BTZXJ2ZXIuaCIK
ICNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIKLSNpbXBvcnQgIlRlc3RVSURlbGVn
YXRlLmgiCiAjaW1wb3J0ICJUZXN0VVJMU2NoZW1lSGFuZGxlci5oIgogI2ltcG9ydCAiVGVzdFdL
V2ViVmlldy5oIgogI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJhcy5oIgpAQCAt
MzksMTcgKzM3LDEyIEBACiAjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4K
ICNpbXBvcnQgPFdlYktpdC9XS1VSTFNjaGVtZVRhc2tQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJL
aXQvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV0tX
ZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRh
U3RvcmVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLVXNlckNvbnRlbnRXb3JsZC5oPgog
I2ltcG9ydCA8V2ViS2l0L19XS1VzZXJTdHlsZVNoZWV0Lmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9v
cC5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBVU0UoQVBQTEVfSU5U
RVJOQUxfU0RLKQotI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL0luQXBwQnJvd3NlclByaXZhY3lB
ZGRpdGlvbnMuaD4KLSNlbmRpZgotCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogCiBz
dGF0aWMgYm9vbCBpc0RvbmU7CkBAIC0xNDE5LDYwNyArMTQxMiwzIEBAIFRFU1QoSW5BcHBCcm93
c2VyUHJpdmFjeSwgQWJvdXRCbGFua1N1YkZyYW1lTWF0Y2hlc1RvcEZyYW1lTm9uQXBwQm91bmQp
CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCi0KLSNpZiBVU0UoQVBQ
TEVfSU5URVJOQUxfU0RLKSAmJiBFTkFCTEUoQVBQX0JPVU5EX1JFUVVFU1RTKQotVEVTVChJbkFw
cEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZFJlcXVlc3QpCi17Ci0gICAgYXV0byBjb25maWd1cmF0
aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLQot
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0g
ICAgTlNTdHJpbmcgKnVybCA9IEAiaHR0cHM6Ly93ZWJraXQub3JnIjsKLQotICAgIF9fYmxvY2sg
Ym9vbCBpc0RvbmUgPSBmYWxzZTsKLSAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpub25BcHBCb3Vu
ZFJlcXVlc3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJM
V2l0aFN0cmluZzp1cmxdXTsKLSAgICBBUFBfQk9VTkRfUkVRVUVTVF9BRERJVElPTlMKLQotICAg
IFt3ZWJWaWV3IGxvYWRSZXF1ZXN0Om5vbkFwcEJvdW5kUmVxdWVzdF07Ci0gICAgW3dlYlZpZXcg
X3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwotCi0gICAgW3dlYlZpZXcgX2xhc3RO
YXZpZ2F0aW9uV2FzQXBwQm91bmQ6XihCT09MIGlzQXBwQm91bmQpIHsKLSAgICAgICAgRVhQRUNU
X0ZBTFNFKGlzQXBwQm91bmQpOwotICAgICAgICBpc0RvbmUgPSB0cnVlOwotICAgIH1dOwotCi0g
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwotICAgIAotICAgIGlzRG9uZSA9
IGZhbHNlOwotICAgIFt3ZWJWaWV3IF9hcHBCb3VuZE5hdmlnYXRpb25EYXRhOl4oc3RydWN0IFdL
QXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEgZGF0YSkgewotICAgICAgICBFWFBFQ1RfRkFM
U0UoZGF0YS5oYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nKTsKLSAgICAgICAgRVhQRUNU
X1RSVUUoZGF0YS5oYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nKTsKLSAgICAgICAg
aXNEb25lID0gdHJ1ZTsKLSAgICB9XTsKLQotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
aXNEb25lKTsKLX0KLQotVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZFJlcXVlc3RX
aXRoTmF2aWdhdGlvbikKLXsKLSAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotCi0gICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBOU1N0cmluZyAqc3RhcnRp
bmdVUkwgPSBAImh0dHBzOi8vd3d3LndlYmtpdC5vcmciOwotICAgIE5TU3RyaW5nICpub25BcHBC
b3VuZFVSTCA9IEAiaHR0cHM6Ly93d3cuYXBwbGUuY29tIjsKLQotICAgIE5TTXV0YWJsZVVSTFJl
cXVlc3QgKnN0YXJ0aW5nUmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRo
VVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOnN0YXJ0aW5nVVJMXV07Ci0KLSAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDpzdGFydGluZ1JlcXVlc3RdOwotICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JE
aWRGaW5pc2hOYXZpZ2F0aW9uXTsKLQotICAgIF9fYmxvY2sgYm9vbCBpc0RvbmUgPSBmYWxzZTsK
LSAgICBbd2ViVmlldyBfbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDpeKEJPT0wgaXNBcHBCb3Vu
ZCkgewotICAgICAgICBFWFBFQ1RfVFJVRShpc0FwcEJvdW5kKTsKLSAgICAgICAgaXNEb25lID0g
dHJ1ZTsKLSAgICB9XTsKLQotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsK
LSAgICAKLSAgICBpc0RvbmUgPSBmYWxzZTsKLSAgICBbd2ViVmlldyBfYXBwQm91bmROYXZpZ2F0
aW9uRGF0YTpeKHN0cnVjdCBXS0FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhIGRhdGEpIHsK
LSAgICAgICAgRVhQRUNUX1RSVUUoZGF0YS5oYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5n
KTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKGRhdGEuaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0
VGVzdGluZyk7Ci0gICAgICAgIGlzRG9uZSA9IHRydWU7Ci0gICAgfV07Ci0KLSAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Ci0gICAgCi0gICAgaXNEb25lID0gZmFsc2U7Ci0g
ICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqbm9uQXBwQm91bmRSZXF1ZXN0ID0gW05TTXV0YWJsZVVS
TFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6bm9uQXBwQm91bmRV
UkxdXTsKLSAgICBBUFBfQk9VTkRfUkVRVUVTVF9BRERJVElPTlMKLSAgICAKLSAgICBpc0RvbmUg
PSBmYWxzZTsKLSAgICBbd2ViVmlldyBfY2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhOl57Ci0g
ICAgICAgIGlzRG9uZSA9IHRydWU7Ci0gICAgfV07Ci0KLSAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmlzRG9uZSk7Ci0KLSAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpub25BcHBCb3VuZFJl
cXVlc3RdOwotICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsK
LQotICAgIFt3ZWJWaWV3IF9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOl4oQk9PTCBpc0FwcEJv
dW5kKSB7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShpc0FwcEJvdW5kKTsKLSAgICAgICAgaXNEb25l
ID0gdHJ1ZTsKLSAgICB9XTsKLQotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25l
KTsKLSAgICAKLSAgICBpc0RvbmUgPSBmYWxzZTsKLSAgICBbd2ViVmlldyBfYXBwQm91bmROYXZp
Z2F0aW9uRGF0YTpeKHN0cnVjdCBXS0FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhIGRhdGEp
IHsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKGRhdGEuaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVz
dGluZyk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKGRhdGEuaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1
ZXN0VGVzdGluZyk7Ci0gICAgICAgIGlzRG9uZSA9IHRydWU7Ci0gICAgfV07Ci0KLSAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Ci19Ci0KLVRFU1QoSW5BcHBCcm93c2VyUHJp
dmFjeSwgQXBwQm91bmRSZXF1ZXN0V2l0aFN1YkZyYW1lKQotewotICAgIGF1dG8gY29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0g
ICAgW2NvbmZpZ3VyYXRpb24gX3NldE92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5OkAic2Ny
aXB0LXNyYyAnbm9uY2UtYiciXTsKLQotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAgIFt3ZWJWaWV3IGxvYWRU
ZXN0UGFnZU5hbWVkOkAicGFnZS13aXRoLWNzcCJdOwotCi0gICAgW3dlYlZpZXcgd2FpdEZvck1l
c3NhZ2U6QCJNYWluRnJhbWU6IEIiXTsKLSAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIlN1
YmZyYW1lOiBCIl07Ci0KLSAgICBfX2Jsb2NrIGJvb2wgaXNEb25lID0gZmFsc2U7Ci0gICAgW3dl
YlZpZXcgX2FwcEJvdW5kTmF2aWdhdGlvbkRhdGE6XihzdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRp
b25UZXN0aW5nRGF0YSBkYXRhKSB7Ci0gICAgICAgIEVYUEVDVF9UUlVFKGRhdGEuaGFzTG9hZGVk
QXBwQm91bmRSZXF1ZXN0VGVzdGluZyk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShkYXRhLmhhc0xv
YWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3RpbmcpOwotICAgICAgICBpc0RvbmUgPSB0cnVlOwot
ICAgIH1dOwotCi0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwotfTsKLQot
VEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZFJlcXVlc3RXaXRoU3ViRnJhbWUp
Ci17Ci0gICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBbY29uZmlndXJhdGlvbiBfc2V0T3ZlcnJpZGVDb250
ZW50U2VjdXJpdHlQb2xpY3k6QCJzY3JpcHQtc3JjICdub25jZS1iJyJdOwotCi0gICAgX19ibG9j
ayBib29sIGlzRG9uZSA9IGZhbHNlOwotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAgIE5TTXV0YWJsZVVSTFJl
cXVlc3QgKm5vbkFwcEJvdW5kUmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RX
aXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJwYWdlLXdpdGgt
Y3NwIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5y
ZXNvdXJjZXMiXV07Ci0gICAgQVBQX0JPVU5EX1JFUVVFU1RfQURESVRJT05TCi0KLSAgICBbd2Vi
VmlldyBsb2FkUmVxdWVzdDpub25BcHBCb3VuZFJlcXVlc3RdOwotCi0gICAgW3dlYlZpZXcgd2Fp
dEZvck1lc3NhZ2U6QCJNYWluRnJhbWU6IEIiXTsKLSAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2Fn
ZTpAIlN1YmZyYW1lOiBCIl07Ci0KLSAgICBbd2ViVmlldyBfYXBwQm91bmROYXZpZ2F0aW9uRGF0
YTogXihzdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBkYXRhKSB7Ci0gICAg
ICAgIEVYUEVDVF9GQUxTRShkYXRhLmhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcpOwot
ICAgICAgICBFWFBFQ1RfVFJVRShkYXRhLmhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3Rp
bmcpOwotICAgICAgICBpc0RvbmUgPSB0cnVlOwotICAgIH1dOwotCi0gICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZpc0RvbmUpOwotfTsKLQotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5TV0J5
dGVzID0gUiJTV1JFU09VUkNFKAotPHNjcmlwdD4KLXRyeSB7Ci0gICAgbmF2aWdhdG9yLnNlcnZp
Y2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oZnVuY3Rpb24ocmVnKSB7Ci0gICAgICAg
IGlmIChyZWcuYWN0aXZlKSB7Ci0gICAgICAgICAgICBhbGVydCgnd29ya2VyIGFscmVhZHkgYWN0
aXZlJyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgd29ya2VyID0g
cmVnLmluc3RhbGxpbmc7Ci0gICAgICAgIHdvcmtlci5hZGRFdmVudExpc3RlbmVyKCdzdGF0ZWNo
YW5nZScsIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgaWYgKHdvcmtlci5zdGF0ZSA9PSAnYWN0
aXZhdGVkJykKLSAgICAgICAgICAgICAgICBhbGVydCgnc3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyZWQn
KTsKLSAgICAgICAgfSk7Ci0gICAgfSkuY2F0Y2goZnVuY3Rpb24oZXJyb3IpIHsKLSAgICAgICAg
YWxlcnQoJ1JlZ2lzdHJhdGlvbiBmYWlsZWQgd2l0aDogJyArIGVycm9yKTsKLSAgICB9KTsKLX0g
Y2F0Y2goZSkgewotICAgIGFsZXJ0KCdFeGNlcHRpb246ICcgKyBlKTsKLX0KLTwvc2NyaXB0Pgot
KVNXUkVTT1VSQ0UiOwotCi1lbnVtIGNsYXNzIFJlc3BvbnNlVHlwZSB7IFN5bnRoZXRpYywgRmV0
Y2hlZCB9OwotZW51bSBjbGFzcyBJc0FwcEJvdW5kIDogYm9vbCB7IE5vLCBZZXMgfTsKLXN0YXRp
YyB2b2lkIHJ1blRlc3QoUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwgSXNBcHBCb3VuZCBhcHBC
b3VuZCkKLXsKLSAgICBzdGF0aWMgYm9vbCBpc0RvbmUgPSBmYWxzZTsKLSAgICBbW1dLV2Vic2l0
ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRl
RGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0
YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKLSAgICAgICAgaXNEb25lID0gdHJ1ZTsK
LSAgICB9XTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Ci0KLSAgICBj
b25zdCBjaGFyKiBqcyA9IG51bGxwdHI7Ci0gICAgY29uc3QgY2hhciogZXhwZWN0ZWRBbGVydCA9
IG51bGxwdHI7Ci0KLSAgICBzd2l0Y2ggKHJlc3BvbnNlVHlwZSkgewotICAgIGNhc2UgUmVzcG9u
c2VUeXBlOjpTeW50aGV0aWM6Ci0gICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcign
ZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgobmV3IFJlc3BvbnNlKG5ldyBC
bG9iKFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0PiddLCB7
dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9KSI7Ci0gICAgICAgIGV4cGVjdGVkQWxlcnQgPSAic3lu
dGhldGljIHJlc3BvbnNlIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBSZXNwb25zZVR5cGU6
OkZldGNoZWQ6Ci0gICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAo
ZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgoZmV0Y2goJy9mZXRjaGVkLmh0bWwnKSkgfSk7
IjsKLSAgICAgICAgZXhwZWN0ZWRBbGVydCA9ICJmZXRjaGVkIGZyb20gc2VydmVyIjsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQotCi0gICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIo
ewotICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAgIHsgIi9zdy5qcyIs
IHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9
LAotICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIiwgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBm
cm9tIHNlcnZlcicpPC9zY3JpcHQ+IiB9IH0sCi0gICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNl
cnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKLQotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dL
V2ViVmlldyBuZXddKTsKLQotICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0TmF2aWdh
dGlvbkRlbGVnYXRlIG5ld10pOwotICAgIFtkZWxlZ2F0ZSBzZXREaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2U6XihXS1dlYlZpZXcgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSAqY2hhbGxlbmdlLCB2b2lkICheY2FsbGJhY2spKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VE
aXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICopKSB7Ci0gICAgICAgIEVYUEVDVF9XS19TVFJF
UShjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kLCBOU1VSTEF1
dGhlbnRpY2F0aW9uTWV0aG9kU2VydmVyVHJ1c3QpOwotICAgICAgICBjYWxsYmFjayhOU1VSTFNl
c3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgW05TVVJMQ3JlZGVudGlhbCBjcmVkZW50
aWFsRm9yVHJ1c3Q6Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJUcnVzdF0pOwotICAg
IH1dOwotICAgIHdlYlZpZXcuZ2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0
KCk7Ci0KLSAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBzZXJ2ZXIucmVxdWVzdCgpOwotICAg
IGlmIChhcHBCb3VuZCA9PSBJc0FwcEJvdW5kOjpObykgewotICAgICAgICBOU011dGFibGVVUkxS
ZXF1ZXN0ICpub25BcHBCb3VuZFJlcXVlc3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
Imh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlci5wb3J0KCldXV07Ci0gICAgICAgIEFQUF9C
T1VORF9SRVFVRVNUX0FERElUSU9OUwotICAgICAgICByZXF1ZXN0ID0gbm9uQXBwQm91bmRSZXF1
ZXN0OwotICAgIH0KLQotICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwotICAgIEVY
UEVDVF9XS19TVFJFUShbd2ViVmlldyBfdGVzdF93YWl0Rm9yQWxlcnRdLCAic3VjY2Vzc2Z1bGx5
IHJlZ2lzdGVyZWQiKTsKLQotICAgIGlmIChyZXNwb25zZVR5cGUgIT0gUmVzcG9uc2VUeXBlOjpG
ZXRjaGVkKQotICAgICAgICBzZXJ2ZXIuY2FuY2VsKCk7Ci0KLSAgICBib29sIGV4cGVjdGluZ0Fw
cEJvdW5kUmVxdWVzdHMgPSBhcHBCb3VuZCA9PSBJc0FwcEJvdW5kOjpZZXM7Ci0gICAgaXNEb25l
ID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcgX2FwcEJvdW5kTmF2aWdhdGlvbkRhdGE6IF4oc3RydWN0
IFdLQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEgZGF0YSkgewotICAgICAgICBFWFBFQ1Rf
RVEoZGF0YS5oYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nLCBleHBlY3RpbmdBcHBCb3Vu
ZFJlcXVlc3RzKTsKLSAgICAgICAgRVhQRUNUX0VRKGRhdGEuaGFzTG9hZGVkTm9uQXBwQm91bmRS
ZXF1ZXN0VGVzdGluZywgIWV4cGVjdGluZ0FwcEJvdW5kUmVxdWVzdHMpOwotICAgICAgICBpc0Rv
bmUgPSB0cnVlOwotICAgIH1dOwotCi0gICAgaXNEb25lID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcg
X2NsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YTpeewotICAgICAgICBpc0RvbmUgPSB0cnVlOwot
ICAgIH1dOwotCi0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwotCi0gICAg
W3dlYlZpZXcgcmVsb2FkXTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcgX3Rlc3Rfd2Fp
dEZvckFsZXJ0XSwgZXhwZWN0ZWRBbGVydCk7Ci0KLSAgICBpc0RvbmUgPSBmYWxzZTsKLSAgICBb
d2ViVmlldyBfYXBwQm91bmROYXZpZ2F0aW9uRGF0YTogXihzdHJ1Y3QgV0tBcHBCb3VuZE5hdmln
YXRpb25UZXN0aW5nRGF0YSBkYXRhKSB7Ci0gICAgICAgIGlmIChyZXNwb25zZVR5cGUgPT0gUmVz
cG9uc2VUeXBlOjpTeW50aGV0aWMpIHsKLSAgICAgICAgICAgIEVYUEVDVF9GQUxTRShkYXRhLmhh
c0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcpOwotICAgICAgICAgICAgRVhQRUNUX0ZBTFNF
KGRhdGEuaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZyk7Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBFWFBFQ1RfRVEoZGF0YS5oYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RU
ZXN0aW5nLCBleHBlY3RpbmdBcHBCb3VuZFJlcXVlc3RzKTsKLSAgICAgICAgICAgIEVYUEVDVF9F
UShkYXRhLmhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3RpbmcsICFleHBlY3RpbmdBcHBC
b3VuZFJlcXVlc3RzKTsKLSAgICAgICAgfQotICAgICAgICBpc0RvbmUgPSB0cnVlOwotICAgIH1d
OwotCi0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwotfQotCi1URVNUKElu
QXBwQnJvd3NlclByaXZhY3ksIE5vbkFwcEJvdW5kUmVxdWVzdFdpdGhTZXJ2aWNlV29ya2VyKQot
ewotICAgIHJ1blRlc3QoUmVzcG9uc2VUeXBlOjpTeW50aGV0aWMsIElzQXBwQm91bmQ6Ok5vKTsK
LSAgICBydW5UZXN0KFJlc3BvbnNlVHlwZTo6RmV0Y2hlZCwgSXNBcHBCb3VuZDo6Tm8pOwotfQot
Ci1URVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kUmVxdWVzdFdpdGhTZXJ2aWNlV29y
a2VyKQotewotICAgIHJ1blRlc3QoUmVzcG9uc2VUeXBlOjpTeW50aGV0aWMsIElzQXBwQm91bmQ6
Olllcyk7Ci0gICAgcnVuVGVzdChSZXNwb25zZVR5cGU6OkZldGNoZWQsIElzQXBwQm91bmQ6Olll
cyk7Ci19Ci0KLVRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTXVsdGlwbGVXZWJWaWV3c1dpdGhT
aGFyZWRTZXJ2aWNlV29ya2VyKQotewotICAgIHN0YXRpYyBib29sIGlzRG9uZSA9IGZhbHNlOwot
Ci0gICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gcmVtb3ZlRGF0YU9m
VHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmllZFNp
bmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7Ci0gICAgICAg
IGlzRG9uZSA9IHRydWU7Ci0gICAgfV07Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZp
c0RvbmUpOwotCi0gICAgY29uc3QgY2hhcioganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdm
ZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChmZXRjaCgnL2ZldGNoZWQuaHRt
bCcpKSB9KSI7Ci0gICAgY29uc3QgY2hhciogZXhwZWN0ZWRBbGVydCA9ICJmZXRjaGVkIGZyb20g
c2VydmVyIjsKLQotICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAg
ICAgeyAiLyIsIHsgbWFpblNXQnl0ZXMgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJD
b250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfSwKLSAgICAg
ICAgeyAiL2ZldGNoZWQuaHRtbCIsIHsgIjxzY3JpcHQ+YWxlcnQoJ2ZldGNoZWQgZnJvbSBzZXJ2
ZXInKTwvc2NyaXB0PiIgfSB9LAotICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlBy
b3RvY29sOjpIdHRwcyk7Ci0KLSAgICBhdXRvIHdlYlZpZXcxID0gYWRvcHROUyhbV0tXZWJWaWV3
IG5ld10pOwotICAgIGF1dG8gd2ViVmlldzIgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7Ci0K
LSAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXdd
KTsKLSAgICBbZGVsZWdhdGUgc2V0RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOl4o
V0tXZWJWaWV3ICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgdm9p
ZCAoXmNhbGxiYWNrKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJM
Q3JlZGVudGlhbCAqKSkgewotICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoY2hhbGxlbmdlLnByb3Rl
Y3Rpb25TcGFjZS5hdXRoZW50aWNhdGlvbk1ldGhvZCwgTlNVUkxBdXRoZW50aWNhdGlvbk1ldGhv
ZFNlcnZlclRydXN0KTsKLSAgICAgICAgY2FsbGJhY2soTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5n
ZVVzZUNyZWRlbnRpYWwsIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbEZvclRydXN0OmNoYWxs
ZW5nZS5wcm90ZWN0aW9uU3BhY2Uuc2VydmVyVHJ1c3RdKTsKLSAgICB9XTsKLSAgICB3ZWJWaWV3
MS5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKLSAgICB3ZWJWaWV3
Mi5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKLQotICAgIFt3ZWJW
aWV3MSBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEo
W3dlYlZpZXcxIF90ZXN0X3dhaXRGb3JBbGVydF0sICJzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZCIp
OwotCi0gICAgW3dlYlZpZXcxIHJlbG9hZF07Ci0gICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3
MSBfdGVzdF93YWl0Rm9yQWxlcnRdLCBleHBlY3RlZEFsZXJ0KTsKLQotICAgIGlzRG9uZSA9IGZh
bHNlOwotICAgIFt3ZWJWaWV3MSBfYXBwQm91bmROYXZpZ2F0aW9uRGF0YTogXihzdHJ1Y3QgV0tB
cHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBkYXRhKSB7Ci0gICAgICAgIEVYUEVDVF9UUlVF
KGRhdGEuaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZyk7Ci0gICAgICAgIEVYUEVDVF9G
QUxTRShkYXRhLmhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3RpbmcpOwotICAgICAgICBp
c0RvbmUgPSB0cnVlOwotICAgIH1dOwotCi0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZp
c0RvbmUpOwotCi0gICAgaXNEb25lID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcxIF9jbGVhckFwcEJv
dW5kTmF2aWdhdGlvbkRhdGE6XnsKLSAgICAgICAgaXNEb25lID0gdHJ1ZTsKLSAgICB9XTsKLQot
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKLQotICAgIGlzRG9uZSA9IGZh
bHNlOwotICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5vbkFwcEJvdW5kUmVxdWVzdCA9IFtOU011
dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvbWFpbi5odG1sIiwg
c2VydmVyLnBvcnQoKV1dXTsKLSAgICBBUFBfQk9VTkRfUkVRVUVTVF9BRERJVElPTlMKLSAgICBb
d2ViVmlldzIgbG9hZFJlcXVlc3Q6bm9uQXBwQm91bmRSZXF1ZXN0XTsKLSAgICBFWFBFQ1RfV0tf
U1RSRVEoW3dlYlZpZXcyIF90ZXN0X3dhaXRGb3JBbGVydF0sICJmZXRjaGVkIGZyb20gc2VydmVy
Iik7Ci0KLSAgICBbd2ViVmlldzIgcmVsb2FkXTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZp
ZXcyIF90ZXN0X3dhaXRGb3JBbGVydF0sIGV4cGVjdGVkQWxlcnQpOwotCi0gICAgW3dlYlZpZXcy
IF9hcHBCb3VuZE5hdmlnYXRpb25EYXRhOiBeKHN0cnVjdCBXS0FwcEJvdW5kTmF2aWdhdGlvblRl
c3RpbmdEYXRhIGRhdGEpIHsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKGRhdGEuaGFzTG9hZGVkQXBw
Qm91bmRSZXF1ZXN0VGVzdGluZyk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKGRhdGEuaGFzTG9hZGVk
Tm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZyk7Ci0gICAgICAgIGlzRG9uZSA9IHRydWU7Ci0gICAg
fV07Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwotICAgIGlzRG9uZSA9
IGZhbHNlOwotfQotCi1zdGF0aWMgdm9pZCBzb2Z0VXBkYXRlVGVzdChJc0FwcEJvdW5kIGlzQXBw
Qm91bmQpCi17Ci0gICAgX19ibG9jayBib29sIGlzRG9uZSA9IGZhbHNlOwotICAgIFtbV0tXZWJz
aXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNp
dGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRp
c3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgewotICAgICAgICBpc0RvbmUgPSB0cnVl
OwotICAgIH1dOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKLQotICAg
IGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOwot
ICAgIFtkZWxlZ2F0ZSBzZXREaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6XihXS1dl
YlZpZXcgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCB2b2lkIChe
Y2FsbGJhY2spKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVk
ZW50aWFsICopKSB7Ci0gICAgICAgIEVYUEVDVF9XS19TVFJFUShjaGFsbGVuZ2UucHJvdGVjdGlv
blNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kLCBOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kU2Vy
dmVyVHJ1c3QpOwotICAgICAgICBjYWxsYmFjayhOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNl
Q3JlZGVudGlhbCwgW05TVVJMQ3JlZGVudGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6Y2hhbGxlbmdl
LnByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJUcnVzdF0pOwotICAgIH1dOwotCi0gICAgYXV0byBjb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKLSAgICBhdXRvIHdlYlZpZXcxID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3Vy
YXRpb24uZ2V0KCldKTsKLSAgICBhdXRvIHdlYlZpZXcyID0gYWRvcHROUyhbW1dLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLQotICAgIHdlYlZpZXcxLmdldCgpLm5hdmlnYXRp
b25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwotICAgIHdlYlZpZXcyLmdldCgpLm5hdmlnYXRp
b25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwotCi0gICAgdWludDE2X3Qgc2VydmVyUG9ydDsK
LSAgICBzdGF0aWMgY29uc3QgY2hhcioganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRj
aCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2Io
Wyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBl
OiAndGV4dC9odG1sJ30pKSk7IH0pIjsKLQotICAgIHsKLSAgICAgICAgVGVzdFdlYktpdEFQSTo6
SFRUUFNlcnZlciBzZXJ2ZXIxKHsKLSAgICAgICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0g
fSwKLSAgICAgICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNh
dGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9LAotICAgICAgICB9LCBUZXN0V2ViS2l0QVBJOjpI
VFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIHRlc3RJZGVudGl0eSgpKTsKLSAg
ICAgICAgc2VydmVyUG9ydCA9IHNlcnZlcjEucG9ydCgpOwotCi0gICAgICAgIE5TVVJMUmVxdWVz
dCAqcmVxdWVzdCA9IHNlcnZlcjEucmVxdWVzdCgpOwotICAgICAgICBpZiAoaXNBcHBCb3VuZCA9
PSBJc0FwcEJvdW5kOjpObykgewotICAgICAgICAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqbm9u
QXBwQm91bmRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05T
VVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwczovLzEy
Ny4wLjAuMTolZC8iLCBzZXJ2ZXIxLnBvcnQoKV1dXTsKLSAgICAgICAgICAgIEFQUF9CT1VORF9S
RVFVRVNUX0FERElUSU9OUwotICAgICAgICAgICAgcmVxdWVzdCA9IG5vbkFwcEJvdW5kUmVxdWVz
dDsKLSAgICAgICAgfQotCi0gICAgICAgIFt3ZWJWaWV3MSBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsK
LSAgICAgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3MSBfdGVzdF93YWl0Rm9yQWxlcnRdLCAi
c3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyZWQiKTsKLQotICAgICAgICBzZXJ2ZXIxLmNhbmNlbCgpOwot
ICAgIH0KLQotICAgIHsKLSAgICAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIy
KHsKLSAgICAgICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgICAgIHsg
Ii9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9
fSwganMgfSB9Ci0gICAgICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29s
OjpIdHRwcywgbnVsbHB0ciwgdGVzdElkZW50aXR5MigpLCBzZXJ2ZXJQb3J0KTsKLQotICAgICAg
ICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QyID0gc2VydmVyMi5yZXF1ZXN0KCk7Ci0gICAgICAgIGlm
IChpc0FwcEJvdW5kID09IElzQXBwQm91bmQ6Ok5vKSB7Ci0gICAgICAgICAgICBOU011dGFibGVV
UkxSZXF1ZXN0ICpub25BcHBCb3VuZFJlcXVlc3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1
ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlcjIucG9ydCgpXV1dOwotICAgICAgICAg
ICAgQVBQX0JPVU5EX1JFUVVFU1RfQURESVRJT05TCi0gICAgICAgICAgICByZXF1ZXN0MiA9IG5v
bkFwcEJvdW5kUmVxdWVzdDsKLSAgICAgICAgfQotCi0gICAgICAgIGlzRG9uZSA9IGZhbHNlOwot
ICAgICAgICBbd2ViVmlldzEgX2NsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YTpeewotICAgICAg
ICAgICAgaXNEb25lID0gdHJ1ZTsKLSAgICAgICAgfV07Ci0KLSAgICAgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZpc0RvbmUpOwotCi0gICAgICAgIFt3ZWJWaWV3MiBsb2FkUmVxdWVzdDpy
ZXF1ZXN0Ml07Ci0gICAgICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldzIgX3Rlc3Rfd2FpdEZv
ckFsZXJ0XSwgInN5bnRoZXRpYyByZXNwb25zZSIpOwotICAgIH0KLQotICAgIGlzRG9uZSA9IGZh
bHNlOwotICAgIGJvb2wgZXhwZWN0aW5nQXBwQm91bmRSZXF1ZXN0cyA9IGlzQXBwQm91bmQgPT0g
SXNBcHBCb3VuZDo6WWVzID8gdHJ1ZSA6IGZhbHNlOwotICAgIHdoaWxlICghaXNEb25lKSB7Ci0g
ICAgICAgIFt3ZWJWaWV3MiBfYXBwQm91bmROYXZpZ2F0aW9uRGF0YTogXihzdHJ1Y3QgV0tBcHBC
b3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBkYXRhKSB7Ci0gICAgICAgICAgICBpZiAoIWRhdGEu
ZGlkUGVyZm9ybVNvZnRVcGRhdGUpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAg
ICAgICBFWFBFQ1RfRVEoZGF0YS5oYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nLCBleHBl
Y3RpbmdBcHBCb3VuZFJlcXVlc3RzKTsKLSAgICAgICAgICAgIEVYUEVDVF9FUShkYXRhLmhhc0xv
YWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3RpbmcsICFleHBlY3RpbmdBcHBCb3VuZFJlcXVlc3Rz
KTsKLSAgICAgICAgICAgIGlzRG9uZSA9IHRydWU7Ci0gICAgICAgIH1dOwotICAgICAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpzcGluUnVuTG9vcCgxKTsKLSAgICB9Ci19Ci0KLVRFU1QoSW5BcHBC
cm93c2VyUHJpdmFjeSwgQXBwQm91bmRSZXF1ZXN0V2l0aFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRl
KQotewotICAgIHNvZnRVcGRhdGVUZXN0KElzQXBwQm91bmQ6Olllcyk7Ci19Ci0KLVRFU1QoSW5B
cHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmRSZXF1ZXN0V2l0aFNlcnZpY2VXb3JrZXJTb2Z0
VXBkYXRlKQotewotICAgIHNvZnRVcGRhdGVUZXN0KElzQXBwQm91bmQ6Ok5vKTsKLX0KLQotc3Rh
dGljIHZvaWQgcnVuV2ViUHJvY2Vzc1BsdWdJblRlc3QoSXNBcHBCb3VuZCBpc0FwcEJvdW5kKQot
ewotICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6
QCJJbkFwcEJyb3dzZXJQcml2YWN5UGx1Z0luIl07Ci0gICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAz
MjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7Ci0KLSAgICBOU1N0cmluZyAq
dXJsID0gQCJodHRwczovL3dlYmtpdC5vcmciOwotCi0gICAgX19ibG9jayBib29sIGlzRG9uZSA9
IGZhbHNlOwotICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNNdXRhYmxlVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzp1cmxdXTsKLSAgICBp
ZiAoaXNBcHBCb3VuZCA9PSBJc0FwcEJvdW5kOjpObykgewotICAgICAgICBOU011dGFibGVVUkxS
ZXF1ZXN0ICpub25BcHBCb3VuZFJlcXVlc3QgPSByZXF1ZXN0OwotICAgICAgICBBUFBfQk9VTkRf
UkVRVUVTVF9BRERJVElPTlMKLSAgICAgICAgcmVxdWVzdCA9IG5vbkFwcEJvdW5kUmVxdWVzdDsK
LSAgICB9Ci0KLSAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKLSAgICBbd2ViVmll
dyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07Ci0KLSAgICBpc0RvbmUgPSBmYWxz
ZTsKLSAgICBib29sIGV4cGVjdGluZ0FwcEJvdW5kUmVxdWVzdHMgPSBpc0FwcEJvdW5kID09IElz
QXBwQm91bmQ6OlllcyA/IHRydWUgOiBmYWxzZTsKLSAgICBbd2ViVmlldyBfYXBwQm91bmROYXZp
Z2F0aW9uRGF0YTpeKHN0cnVjdCBXS0FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhIGRhdGEp
IHsKLSAgICAgICAgRVhQRUNUX0VRKGRhdGEuaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGlu
ZywgZXhwZWN0aW5nQXBwQm91bmRSZXF1ZXN0cyk7Ci0gICAgICAgIEVYUEVDVF9FUShkYXRhLmhh
c0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3RpbmcsICFleHBlY3RpbmdBcHBCb3VuZFJlcXVl
c3RzKTsKLSAgICAgICAgaXNEb25lID0gdHJ1ZTsKLSAgICB9XTsKLQotICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKLX0KLQotVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBX
ZWJQcm9jZXNzUGx1Z2luVGVzdEFwcEJvdW5kKQotewotICAgIHJ1bldlYlByb2Nlc3NQbHVnSW5U
ZXN0KElzQXBwQm91bmQ6Olllcyk7Ci19Ci0KLVRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgV2Vi
UHJvY2Vzc1BsdWdpblRlc3ROb25BcHBCb3VuZCkKLXsKLSAgICBydW5XZWJQcm9jZXNzUGx1Z0lu
VGVzdChJc0FwcEJvdW5kOjpObyk7Ci19Ci0KLSNpZiBXS19IQVZFX0NfU1BJCi0KLXN0YXRpYyBj
b25zdCBjaGFyKiBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dSRVNPVVJDRSgKLTxzY3Jp
cHQ+Ci0KLWZ1bmN0aW9uIGxvZyhtc2cpCi17Ci0gICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFu
ZGxlcnMuc3cucG9zdE1lc3NhZ2UobXNnKTsKLX0KLQotbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIu
YWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgbG9nKGV2
ZW50LmRhdGEpOwotfSk7Ci0KLXRyeSB7Ci0gICAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVn
aXN0ZXIoJy9zdy5qcycpLnRoZW4oZnVuY3Rpb24ocmVnKSB7Ci0gICAgICAgIGlmIChyZWcuYWN0
aXZlKSB7Ci0gICAgICAgICAgICB3b3JrZXIgPSByZWcuYWN0aXZlOwotICAgICAgICAgICAgd29y
a2VyLnBvc3RNZXNzYWdlKCJTRUNPTkQiKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotICAgICAgICB3b3JrZXIgPSByZWcuaW5zdGFsbGluZzsKLSAgICAgICAgd29ya2VyLmFkZEV2
ZW50TGlzdGVuZXIoJ3N0YXRlY2hhbmdlJywgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBpZiAo
d29ya2VyLnN0YXRlID09ICdhY3RpdmF0ZWQnKQotICAgICAgICAgICAgICAgIHdvcmtlci5wb3N0
TWVzc2FnZSgiRklSU1QiKTsKLSAgICAgICAgfSk7Ci0gICAgfSkuY2F0Y2goZnVuY3Rpb24oZXJy
b3IpIHsKLSAgICAgICAgbG9nKCdSZWdpc3RyYXRpb24gZmFpbGVkIHdpdGg6ICcgKyBlcnJvcik7
Ci0gICAgfSk7Ci19IGNhdGNoKGUpIHsKLSAgICBsb2coJ0V4Y2VwdGlvbjogJyArIGUpOwotfQot
PC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7Ci0KLXN0YXRpYyBjb25zdCBjaGFyKiBzY3JpcHRCeXRl
c0RlZmF1bHRWYWx1ZSA9IFIiU1dSRVNPVVJDRSgKLXNlbGYuYWRkRXZlbnRMaXN0ZW5lcignbWVz
c2FnZScsIGFzeW5jIChldmVudCkgPT4gewotICAgIGlmICghc2VsZi5pbnRlcm5hbHMpIHsKLSAg
ICAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCdObyBpbnRlcm5hbHMnKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIHF1ZXJ5QXBwQm91bmRWYWx1ZShldmVudCwgZmFsc2UpOwot
fSk7Ci0KLWFzeW5jIGZ1bmN0aW9uIHF1ZXJ5QXBwQm91bmRWYWx1ZShldmVudCwgaGF2ZVNlbnRJ
bml0aWFsTWVzc2FnZSkKLXsKLSAgICB2YXIgcmVzdWx0ID0gYXdhaXQgaW50ZXJuYWxzLmxhc3RO
YXZpZ2F0aW9uV2FzQXBwQm91bmQoKTsKLSAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgIGlmIChl
dmVudC5kYXRhID09ICJGSVJTVCIpIHsKLSAgICAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVz
c2FnZSgnYXBwLWJvdW5kJyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAg
ICAgICBpZiAoIWhhdmVTZW50SW5pdGlhbE1lc3NhZ2UpCi0gICAgICAgICAgICBldmVudC5zb3Vy
Y2UucG9zdE1lc3NhZ2UoJ3N0YXJ0cyBhcHAtYm91bmQnKTsKLQotICAgICAgICBxdWVyeUFwcEJv
dW5kVmFsdWUoZXZlbnQsIHRydWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZXZl
bnQuc291cmNlLnBvc3RNZXNzYWdlKCdub24gYXBwLWJvdW5kJyk7Ci19Ci0KLSlTV1JFU09VUkNF
IjsKLQotCi1zdGF0aWMgU3RyaW5nIGV4cGVjdGVkTWVzc2FnZTsKLXN0YXRpYyBib29sIHJlY2Vp
dmVkTWVzc2FnZSA9IGZhbHNlOwotCi1AaW50ZXJmYWNlIFNXQXBwQm91bmRSZXF1ZXN0TWVzc2Fn
ZUhhbmRsZXIgOiBOU09iamVjdCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4KLUBlbmQKLQotQGlt
cGxlbWVudGF0aW9uIFNXQXBwQm91bmRSZXF1ZXN0TWVzc2FnZUhhbmRsZXIKLS0gKHZvaWQpdXNl
ckNvbnRlbnRDb250cm9sbGVyOihXS1VzZXJDb250ZW50Q29udHJvbGxlciAqKXVzZXJDb250ZW50
Q29udHJvbGxlciBkaWRSZWNlaXZlU2NyaXB0TWVzc2FnZTooV0tTY3JpcHRNZXNzYWdlICopbWVz
c2FnZQotewotICAgIEVYUEVDVF9XS19TVFJFUShtZXNzYWdlLmJvZHksIGV4cGVjdGVkTWVzc2Fn
ZSk7Ci0gICAgcmVjZWl2ZWRNZXNzYWdlID0gdHJ1ZTsKLX0KLUBlbmQKLQotVEVTVChJbkFwcEJy
b3dzZXJQcml2YWN5LCBSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRVcGRhdGVzQXBwQm91bmRW
YWx1ZSkKLXsKLSAgICBzdGF0aWMgYm9vbCBpc0RvbmUgPSBmYWxzZTsKLQotICAgIFtbV0tXZWJz
aXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNp
dGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRp
c3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgewotICAgICAgICBpc0RvbmUgPSB0cnVl
OwotICAgIH1dOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKLQotICAg
IFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQ
cm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOwot
ICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0V0soVGVzdFdlYktp
dEFQSTo6VXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgiSW50ZXJuYWxz
SW5qZWN0ZWRCdW5kbGVUZXN0IikpOwotICAgIGNvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wgPSAo
V0tQcm9jZXNzUG9vbCAqKWNvbnRleHQuZ2V0KCk7Ci0KLSAgICBSZXRhaW5QdHI8U1dBcHBCb3Vu
ZFJlcXVlc3RNZXNzYWdlSGFuZGxlcj4gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbU1dBcHBC
b3VuZFJlcXVlc3RNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwotICAgIFtbY29uZmlndXJh
dGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3Nh
Z2VIYW5kbGVyLmdldCgpIG5hbWU6QCJzdyJdOwotCi0gICAgYXV0byB3ZWJWaWV3MSA9IGFkb3B0
TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAs
IDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7Ci0gICAgYXV0byB3ZWJWaWV3MiA9
IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7Ci0KLSAgICBhdXRvIGRl
bGVnYXRlID0gYWRvcHROUyhbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXddKTsKLSAgICBbZGVs
ZWdhdGUgc2V0RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOl4oV0tXZWJWaWV3ICos
IE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgdm9pZCAoXmNhbGxiYWNr
KShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAq
KSkgewotICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5h
dXRoZW50aWNhdGlvbk1ldGhvZCwgTlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZFNlcnZlclRydXN0
KTsKLSAgICAgICAgY2FsbGJhY2soTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRp
YWwsIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbEZvclRydXN0OmNoYWxsZW5nZS5wcm90ZWN0
aW9uU3BhY2Uuc2VydmVyVHJ1c3RdKTsKLSAgICB9XTsKLQotICAgIHdlYlZpZXcxLmdldCgpLm5h
dmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwotICAgIHdlYlZpZXcyLmdldCgpLm5h
dmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwotCi0gICAgU2VydmljZVdvcmtlclRD
UFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICJ0ZXh0L2h0bWwiLCBtYWluU1dCeXRlc0RlZmF1
bHRWYWx1ZSB9LAotICAgICAgICB7ICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Iiwgc2NyaXB0Qnl0
ZXNEZWZhdWx0VmFsdWUgfSwKLSAgICB9LCB7Ci0gICAgICAgIHsgInRleHQvaHRtbCIsIG1haW5T
V0J5dGVzRGVmYXVsdFZhbHVlIH0sCi0gICAgICAgIHsgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQi
LCBzY3JpcHRCeXRlc0RlZmF1bHRWYWx1ZSB9LAotICAgIH0pOwotCi0gICAgLy8gTG9hZCBXZWJW
aWV3IHdpdGggYW4gYXBwLWJvdW5kIHJlcXVlc3QuIFdlIGV4cGVjdCB0aGUgU2VydmljZVdvcmtl
clRocmVhZFByb3h5IHRvIGJlIGFwcC1ib3VuZC4KLSAgICBleHBlY3RlZE1lc3NhZ2UgPSAiYXBw
LWJvdW5kIjsKLSAgICBbd2ViVmlldzEgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07Ci0g
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZE1lc3NhZ2UpOwotCi0gICAgLy8g
TG9hZCBXZWJWaWV3IHdpdGggYSBub24gYXBwLWJvdW5kIHJlcXVlc3QuIFdlIGV4cGVjdCB0aGUg
U2VydmljZVdvcmtlclRocmVhZFByb3h5IHRvIGJlIGFwcC1ib3VuZAotICAgIC8vIGF0IGZpcnN0
LCBidXQgdGhlbiBiZWNvbWUgbm9uIGFwcC1ib3VuZCBvbmNlIHRoZSBzZWNvbmQgd2ViVmlldyBp
cyBjbG9zZWQgYW5kIGl0cyBjbGllbnQgaXMgdW5yZWdpc3RlcmVkLgotICAgIGV4cGVjdGVkTWVz
c2FnZSA9ICJzdGFydHMgYXBwLWJvdW5kIjsKLSAgICByZWNlaXZlZE1lc3NhZ2UgPSBmYWxzZTsK
LSAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpub25BcHBCb3VuZFJlcXVlc3QgPSBbTlNNdXRhYmxl
VVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcg
c3RyaW5nV2l0aEZvcm1hdDpAImh0dHA6Ly8xMjcuMC4wLjE6JWQvbWFpbi5odG1sIiwgc2VydmVy
LnBvcnQoKV1dXTsKLSAgICBBUFBfQk9VTkRfUkVRVUVTVF9BRERJVElPTlMKLQotICAgIFt3ZWJW
aWV3MiBsb2FkUmVxdWVzdDpub25BcHBCb3VuZFJlcXVlc3RdOwotICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmcmVjZWl2ZWRNZXNzYWdlKTsKLQotICAgIC8vIENsb3NlIHRoZSBhcHAtYm91
bmQgdmlldy4gV2UgZXhwZWN0IHRoYXQgdGhlIGV4aXN0aW5nIHdvcmtlciB3aWxsIGJlY29tZSBu
b24gYXBwLWJvdW5kCi0gICAgLy8gbm93IHRoYXQgYWxsIGFwcC1ib3VuZCBjbGllbnRzIGhhdmUg
YmVlbiByZW1vdmVkLgotICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJub24gYXBwLWJvdW5kIjsKLSAg
ICByZWNlaXZlZE1lc3NhZ2UgPSBmYWxzZTsKLSAgICBbd2ViVmlldzEgX2Nsb3NlXTsKLSAgICB3
ZWJWaWV3MSA9IG51bGxwdHI7Ci0KLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2Vp
dmVkTWVzc2FnZSk7Ci19Ci0KLSNlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeVBsdWdJbi5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJp
dmFjeVBsdWdJbi5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODE2YzE1ZjQyYzRm
NzE1ODVhZDM5NjdlYjk4MjJiODM2MDI4MzgxOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0luQXBwQnJvd3NlclByaXZhY3lQbHVnSW4ubW0KKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0KLSNpbXBvcnQgIlBsYXRmb3Jt
VXRpbGl0aWVzLmgiCi0jaW1wb3J0IDxXZWJLaXQvV0tXZWJQcm9jZXNzUGx1Z0luLmg+Ci0jaW1w
b3J0IDxXZWJLaXQvV0tXZWJQcm9jZXNzUGx1Z0luTG9hZERlbGVnYXRlLmg+Ci0jaW1wb3J0IDx3
dGYvUmV0YWluUHRyLmg+Ci0KLUBpbnRlcmZhY2UgSW5BcHBCcm93c2VyUHJpdmFjeVBsdWdJbiA6
IE5TT2JqZWN0IDxXS1dlYlByb2Nlc3NQbHVnSW4sIFdLV2ViUHJvY2Vzc1BsdWdJbkxvYWREZWxl
Z2F0ZT4KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIEluQXBwQnJvd3NlclByaXZhY3lQbHVnSW4g
eyB9Ci0KLS0gKE5TVVJMUmVxdWVzdCAqKXdlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENv
bnRyb2xsZXI6KFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciAqKWNv
bnRyb2xsZXIgZnJhbWU6KFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lICopZnJhbWUgd2lsbFNlbmRS
ZXF1ZXN0Rm9yUmVzb3VyY2U6KHVpbnQ2NF90KXJlc291cmNlIHJlcXVlc3Q6KE5TVVJMUmVxdWVz
dCAqKXJlcXVlc3QgcmVkaXJlY3RSZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlZGlyZWN0UmVz
cG9uc2UKLXsKLSAgICByZXR1cm4gYWRvcHROUyhbW05TVVJMUmVxdWVzdCBhbGxvY10gaW5pdFdp
dGhVUkw6cmVxdWVzdC5VUkxdKS5hdXRvcmVsZWFzZSgpOwotfQotCi1AZW5kCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2FwcC1wcml2YWN5LXJlcG9y
dC1pZnJhbWUuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvYXBw
LXByaXZhY3ktcmVwb3J0LWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2OWRlMjliYjJkMWQ2NDM0
YjhiMjlhZTc3NWFkOGMyZTQ4YzUzOTEKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IDRk
YTEzYjE1MzQ0NTk1ZjE0NzZlMTc1ODZkOTE2OGE1Y2QxM2YyMjkuLjM3YzhjYWUwNWVlMjQxMWM1
ZmM0ODk2Y2JkZjkzNTY2OWMyZTEwMjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAt
Mzg4LDkgKzM4OCw4IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsKICAgICBib29sZWFuIGhhc0Fw
cEJvdW5kU2Vzc2lvbigpOwogICAgIHVuZGVmaW5lZCBjbGVhckFwcEJvdW5kU2Vzc2lvbigpOwog
ICAgIHVuZGVmaW5lZCBzZXRBcHBCb3VuZERvbWFpbnMob2JqZWN0IG9yaWdpbnNBcnJheSwgb2Jq
ZWN0IGNhbGxiYWNrKTsKLSAgICB1bmRlZmluZWQgYXBwQm91bmRSZXF1ZXN0Q29udGV4dERhdGFG
b3JEb21haW4oRE9NU3RyaW5nIGRvbWFpbiwgb2JqZWN0IGNhbGxiYWNrKTsKLSAgICBib29sZWFu
IGRpZExvYWRBcHBCb3VuZFJlcXVlc3QoKTsKLSAgICBib29sZWFuIGRpZExvYWROb25BcHBCb3Vu
ZFJlcXVlc3QoKTsKKyAgICBib29sZWFuIGRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0KCk7Cisg
ICAgYm9vbGVhbiBkaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdCgpOwogCiAgICAgdW5kZWZp
bmVkIGluamVjdFVzZXJTY3JpcHQoRE9NU3RyaW5nIHN0cmluZyk7CiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIHVuc2lnbmVkIGxvbmcgdXNlclNjcmlwdEluamVjdGVkQ291bnQ7CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNw
cCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
Y3BwCmluZGV4IDY3YjM1M2YzMDBmZmJmNjVkMzQ0NmMyZTRkODIxMjA1ZTYzZTE3YTcuLjZlNDE0
Y2NkZTY3MGU3MDYyNjhiNDY0YTQzMDE2YWIzN2Y1MmM3OGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBA
IC00MTUsMTQgKzQxNSw2IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdl
VG9QYWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBtCiAgICAgICAgIG1fdGVz
dFJ1bm5lci0+Y2FsbERpZFJlY2VpdmVMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnNDYWxsYmFjayhX
VEZNb3ZlKGRvbWFpbnMpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKLSAgICBpZiAo
V0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkNhbGxEaWRSZWNlaXZl
QXBwQm91bmRSZXF1ZXN0Q29udGV4dERhdGFGb3JEb21haW4iKSkgewotICAgICAgICBBU1NFUlQo
bWVzc2FnZUJvZHkpOwotICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09
IFdLU3RyaW5nR2V0VHlwZUlEKCkpOwotCi0gICAgICAgIGF1dG8gcmVzdWx0U3RyaW5nID0gdG9X
VEZTdHJpbmcoc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KG1lc3NhZ2VCb2R5KSk7Ci0gICAgICAg
IG1fdGVzdFJ1bm5lci0+Y2FsbERpZFJlY2VpdmVBcHBCb3VuZFJlcXVlc3RDb250ZXh0RGF0YUZv
ckRvbWFpbkNhbGxiYWNrKFdURk1vdmUocmVzdWx0U3RyaW5nKSk7Ci0gICAgfQogCiAgICAgaWYg
KFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJDYWxsRGlkUmVtb3Zl
QWxsU2Vzc2lvbkNyZWRlbnRpYWxzQ2FsbGJhY2siKSkgewogICAgICAgICBtX3Rlc3RSdW5uZXIt
PmNhbGxEaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHNDYWxsYmFjaygpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5k
ZXggM2Y3MmFjMmE0ODE0NmUzMDE0ODJkZDJlZDRlYmMxOTJmZjU1NWQzMS4uNDZmZjdhNWI3NTRi
OGEwN2ExYmU2OTRmNDY5OWE5MjIxNjhmZmVjMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC02NDUsNyArNjQ1LDYg
QEAgZW51bSB7CiAgICAgRGlkU2V0QXBwQm91bmREb21haW5zQ2FsbGJhY2tJRCwKICAgICBFbnRl
ckZ1bGxzY3JlZW5Gb3JFbGVtZW50Q2FsbGJhY2tJRCwKICAgICBFeGl0RnVsbHNjcmVlbkZvckVs
ZW1lbnRDYWxsYmFja0lELAotICAgIEFwcEJvdW5kUmVxdWVzdENvbnRleHREYXRhRm9yRG9tYWlu
Q2FsbGJhY2tJRCwKICAgICBEaWROb3RIYW5kbGVUYXBBc01lYW5pbmdmdWxDbGlja0NhbGxiYWNr
SUQsCiAgICAgRmlyc3RVSVNjcmlwdENhbGxiYWNrSUQgPSAxMDAKIH07CkBAIC0yMTE1LDI2ICsy
MTE0LDE0IEBAIHZvaWQgVGVzdFJ1bm5lcjo6ZGlkU2V0QXBwQm91bmREb21haW5zQ2FsbGJhY2so
KQogICAgIGNhbGxUZXN0UnVubmVyQ2FsbGJhY2soRGlkU2V0QXBwQm91bmREb21haW5zQ2FsbGJh
Y2tJRCk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6YXBwQm91bmRSZXF1ZXN0Q29udGV4dERhdGFG
b3JEb21haW4oSlNTdHJpbmdSZWYgZG9tYWluLCBKU1ZhbHVlUmVmIGNhbGxiYWNrKQorYm9vbCBU
ZXN0UnVubmVyOjpkaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdCgpCiB7Ci0gICAgY2FjaGVUZXN0
UnVubmVyQ2FsbGJhY2soQXBwQm91bmRSZXF1ZXN0Q29udGV4dERhdGFGb3JEb21haW5DYWxsYmFj
a0lELCBjYWxsYmFjayk7Ci0gICAgcG9zdE1lc3NhZ2UoIkFwcEJvdW5kUmVxdWVzdENvbnRleHRE
YXRhRm9yRG9tYWluIiwgZG9tYWluKTsKKyAgICByZXR1cm4gcG9zdFN5bmNocm9ub3VzUGFnZU1l
c3NhZ2VSZXR1cm5pbmdCb29sZWFuKCJEaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdCIpOwogfQog
Ci12b2lkIFRlc3RSdW5uZXI6OmNhbGxEaWRSZWNlaXZlQXBwQm91bmRSZXF1ZXN0Q29udGV4dERh
dGFGb3JEb21haW5DYWxsYmFjayhTdHJpbmcmJiBjb250ZXh0RG9tYWluKQorYm9vbCBUZXN0UnVu
bmVyOjpkaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdCgpCiB7Ci0gICAgSlNWYWx1ZVJlZiBy
ZXN1bHRWYWx1ZSA9IEpTVmFsdWVNYWtlU3RyaW5nKG1haW5GcmFtZUpTQ29udGV4dCgpLCBjcmVh
dGVKU1N0cmluZyhjb250ZXh0RG9tYWluLnV0ZjgoKS5kYXRhKCkpLmdldCgpKTsKLSAgICBjYWxs
VGVzdFJ1bm5lckNhbGxiYWNrKEFwcEJvdW5kUmVxdWVzdENvbnRleHREYXRhRm9yRG9tYWluQ2Fs
bGJhY2tJRCwgMSwgJnJlc3VsdFZhbHVlKTsKLX0KLQotYm9vbCBUZXN0UnVubmVyOjpkaWRMb2Fk
QXBwQm91bmRSZXF1ZXN0KCkKLXsKLSAgICByZXR1cm4gcG9zdFN5bmNocm9ub3VzUGFnZU1lc3Nh
Z2VSZXR1cm5pbmdCb29sZWFuKCJEaWRMb2FkQXBwQm91bmRSZXF1ZXN0Iik7Ci19Ci0KLWJvb2wg
VGVzdFJ1bm5lcjo6ZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdCgpCi17Ci0gICAgcmV0dXJuIHBv
c3RTeW5jaHJvbm91c1BhZ2VNZXNzYWdlUmV0dXJuaW5nQm9vbGVhbigiRGlkTG9hZE5vbkFwcEJv
dW5kUmVxdWVzdCIpOworICAgIHJldHVybiBwb3N0U3luY2hyb25vdXNQYWdlTWVzc2FnZVJldHVy
bmluZ0Jvb2xlYW4oIkRpZExvYWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0Iik7CiB9CiAKIHZvaWQg
VGVzdFJ1bm5lcjo6c2V0SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkKGJvb2wg
Z3JhbnRlZCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmgKaW5kZXggMWJlNjYzZDhlZDgxYzM5MGMxZDhiOWM2Y2I2MTAwZGJhODQ1MTQy
Ni4uM2EzNGJhMDczYmMxOWIwYTgxNGZkZmIyMmEyYzhjZjBmNDgxNDhmYSAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKQEAgLTQ5
NywxMCArNDk3LDkgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJBcHBCb3VuZFNlc3Npb24oKTsK
ICAgICB2b2lkIHNldEFwcEJvdW5kRG9tYWlucyhKU1ZhbHVlUmVmIG9yaWdpbkFycmF5LCBKU1Zh
bHVlUmVmIGNhbGxiYWNrKTsKICAgICB2b2lkIGRpZFNldEFwcEJvdW5kRG9tYWluc0NhbGxiYWNr
KCk7Ci0gICAgdm9pZCBhcHBCb3VuZFJlcXVlc3RDb250ZXh0RGF0YUZvckRvbWFpbihKU1N0cmlu
Z1JlZiwgSlNWYWx1ZVJlZik7Ci0gICAgdm9pZCBjYWxsRGlkUmVjZWl2ZUFwcEJvdW5kUmVxdWVz
dENvbnRleHREYXRhRm9yRG9tYWluQ2FsbGJhY2soU3RyaW5nJiYpOwotICAgIGJvb2wgZGlkTG9h
ZEFwcEJvdW5kUmVxdWVzdCgpOwotICAgIGJvb2wgZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdCgp
OworCisgICAgYm9vbCBkaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdCgpOworICAgIGJvb2wgZGlk
TG9hZE5vbkFwcEluaXRpYXRlZFJlcXVlc3QoKTsKIAogICAgIHNpemVfdCB1c2VyU2NyaXB0SW5q
ZWN0ZWRDb3VudCgpIGNvbnN0OwogICAgIHZvaWQgaW5qZWN0VXNlclNjcmlwdChKU1N0cmluZ1Jl
Zik7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGNmYzlj
NDQ4M2M4MjVkOTEzZWQyN2E0ZDU1ODg0ZjI0MmQ3NmYwMDIuLjk4M2I4NWIwYTNhMjg0ZjA5Yjc4
NDAwZTA4Y2MwNzIwYWNhMzQwMTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwCkBAIC0xMDc4LDcgKzEwNzgsNyBAQCBib29sIFRlc3RDb250cm9sbGVyOjpyZXNl
dFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zLCBSZQog
ICAgICAgICB1cGRhdGVMaXZlRG9jdW1lbnRzQWZ0ZXJUZXN0KCk7CiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgICAgIGNsZWFyQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyVGVzdGluZ092ZXJy
aWRlKCk7Ci0gICAgICAgIGNsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YSgpOworICAgICAgICBj
bGVhckFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSgpOwogI2VuZGlmCiAgICAgICAgIGNsZWFy
QnVuZGxlSWRlbnRpZmllckluTmV0d29ya1Byb2Nlc3MoKTsKICAgICB9CkBAIC0yNzIzLDIxICsy
NzIzLDE3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFs
cygpCiB7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OmFwcEJvdW5kUmVxdWVzdENvbnRleHRE
YXRhRm9yRG9tYWluKFdLU3RyaW5nUmVmKQotewotfQotCi1ib29sIFRlc3RDb250cm9sbGVyOjpk
aWRMb2FkQXBwQm91bmRSZXF1ZXN0KCkKK2Jvb2wgVGVzdENvbnRyb2xsZXI6OmRpZExvYWRBcHBJ
bml0aWF0ZWRSZXF1ZXN0KCkKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgVGVzdENv
bnRyb2xsZXI6OmRpZExvYWROb25BcHBCb3VuZFJlcXVlc3QoKQorYm9vbCBUZXN0Q29udHJvbGxl
cjo6ZGlkTG9hZE5vbkFwcEluaXRpYXRlZFJlcXVlc3QoKQogewogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6Y2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhKCkK
K3ZvaWQgVGVzdENvbnRyb2xsZXI6OmNsZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKCkK
IHsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCmluZGV4IGJjMGVj
NTI2OTM0NzM2MWMzMTVlNmU0ZDA3ZGI4MWFiYjZiNDdjNmUuLjcyODY0ODQxY2U2MDQ4OTBmN2I1
NjcwMmM0YjZiMDRmZjZjODdiZGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmgKQEAgLTI2MiwxMCArMjYyLDkgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJMb2FkZWRT
dWJyZXNvdXJjZURvbWFpbnMoKTsKICAgICB2b2lkIGNsZWFyQXBwQm91bmRTZXNzaW9uKCk7CiAg
ICAgdm9pZCByZWluaXRpYWxpemVBcHBCb3VuZERvbWFpbnMoKTsKLSAgICB2b2lkIGFwcEJvdW5k
UmVxdWVzdENvbnRleHREYXRhRm9yRG9tYWluKFdLU3RyaW5nUmVmKTsKLSAgICB2b2lkIGNsZWFy
QXBwQm91bmROYXZpZ2F0aW9uRGF0YSgpOwotICAgIGJvb2wgZGlkTG9hZEFwcEJvdW5kUmVxdWVz
dCgpOwotICAgIGJvb2wgZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdCgpOworICAgIHZvaWQgY2xl
YXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoKTsKKyAgICBib29sIGRpZExvYWRBcHBJbml0
aWF0ZWRSZXF1ZXN0KCk7CisgICAgYm9vbCBkaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdCgp
OwogCiAgICAgdm9pZCB1cGRhdGVCdW5kbGVJZGVudGlmaWVySW5OZXR3b3JrUHJvY2Vzcyhjb25z
dCBzdGQ6OnN0cmluZyYgYnVuZGxlSWRlbnRpZmllcik7CiAgICAgdm9pZCBjbGVhckJ1bmRsZUlk
ZW50aWZpZXJJbk5ldHdvcmtQcm9jZXNzKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdElu
dm9jYXRpb24uY3BwCmluZGV4IDVkMzI3MjM5MmJlZTEwYzdiY2VlYWQ0YzNmOTIxNDZlMWViOTNl
YTAuLjhkNzZlNGJhMGRhYmFkOGE5NGM2ZWE0YWI5YTViM2NkYzBkMWY3OWYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC03OTIsMTIgKzc5Miw2IEBAIHZv
aWQgVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdL
U3RyaW5nUmVmIG1lc3NhZ2VOYW1lCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAo
V0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkFwcEJvdW5kUmVxdWVz
dENvbnRleHREYXRhRm9yRG9tYWluIikpIHsKLSAgICAgICAgV0tTdHJpbmdSZWYgZG9tYWluID0g
c3RyaW5nVmFsdWUobWVzc2FnZUJvZHkpOwotICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xl
dG9uKCkuYXBwQm91bmRSZXF1ZXN0Q29udGV4dERhdGFGb3JEb21haW4oZG9tYWluKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCkBAIC0x
MDcxLDExICsxMDY1LDExIEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246
OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgIHJldHVy
biBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShzdGF0aXN0aWNJbkRhdGFiYXNlT25jZSkpOwogICAg
IH0KIAotICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAi
RGlkTG9hZEFwcEJvdW5kUmVxdWVzdCIpKQotICAgICAgICByZXR1cm4gYWRvcHRXSyhXS0Jvb2xl
YW5DcmVhdGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmRpZExvYWRBcHBCb3VuZFJlcXVl
c3QoKSkpOworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1l
LCAiRGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3QiKSkKKyAgICAgICAgcmV0dXJuIGFkb3B0V0so
V0tCb29sZWFuQ3JlYXRlKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5kaWRMb2FkQXBwSW5p
dGlhdGVkUmVxdWVzdCgpKSk7CiAKLSAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmlu
ZyhtZXNzYWdlTmFtZSwgIkRpZExvYWROb25BcHBCb3VuZFJlcXVlc3QiKSkKLSAgICAgICAgcmV0
dXJuIGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5k
aWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0KCkpKTsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9V
VEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkRpZExvYWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0Iikp
CisgICAgICAgIHJldHVybiBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShUZXN0Q29udHJvbGxlcjo6
c2luZ2xldG9uKCkuZGlkTG9hZE5vbkFwcEluaXRpYXRlZFJlcXVlc3QoKSkpOwogCiAgICAgaWYg
KFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRTdGF0aXN0aWNz
R3JhbmRmYXRoZXJlZCIpKSB7CiAgICAgICAgIGF1dG8gbWVzc2FnZUJvZHlEaWN0aW9uYXJ5ID0g
ZGljdGlvbmFyeVZhbHVlKG1lc3NhZ2VCb2R5KTsKQEAgLTE1ODEsMTIgKzE1NzUsNiBAQCB2b2lk
IFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTG9hZGVkU3VicmVzb3VyY2VEb21haW5zKFZlY3Rv
cjxTdHJpbmc+JiYgZG9tYWlucwogICAgIHBvc3RQYWdlTWVzc2FnZSgiQ2FsbERpZFJlY2VpdmVM
b2FkZWRTdWJyZXNvdXJjZURvbWFpbnMiLCBtZXNzYWdlQm9keSk7CiB9CiAKLXZvaWQgVGVzdElu
dm9jYXRpb246OmRpZFJlY2VpdmVBcHBCb3VuZFJlcXVlc3RDb250ZXh0RGF0YUZvckRvbWFpbihT
dHJpbmcmJiBkb21haW4pCi17Ci0gICAgYXV0byBtZXNzYWdlQm9keSA9IFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKGRvbWFpbi51dGY4KCkuZGF0YSgpKTsKLSAgICBwb3N0UGFnZU1lc3Nh
Z2UoIkNhbGxEaWRSZWNlaXZlQXBwQm91bmRSZXF1ZXN0Q29udGV4dERhdGFGb3JEb21haW4iLCBt
ZXNzYWdlQm9keSk7Ci19Ci0KIHZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlbW92ZUFsbFNlc3Np
b25DcmVkZW50aWFscygpCiB7CiAgICAgcG9zdFBhZ2VNZXNzYWdlKCJDYWxsRGlkUmVtb3ZlQWxs
U2Vzc2lvbkNyZWRlbnRpYWxzQ2FsbGJhY2siKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdEludm9jYXRpb24uaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdElu
dm9jYXRpb24uaAppbmRleCBhOGM4NTRlMjc2N2Q2OTgyNmVkOTc2MzNiNzFlMzI1ODFlODZmMjg2
Li5mMTEyNmEzZWU1NTJjZWRkNGIwMWViYmRjZjEzNWEyNWZkYTAyMjYxIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCkBAIC05Nyw3ICs5Nyw2IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGRpZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscygpOwogCiAgICAgdm9pZCBkaWRT
ZXRBcHBCb3VuZERvbWFpbnMoKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVBcHBCb3VuZFJlcXVlc3RD
b250ZXh0RGF0YUZvckRvbWFpbihTdHJpbmcmJik7CiAKICAgICB2b2lkIGR1bXBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29j
b2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2Ev
VGVzdENvbnRyb2xsZXJDb2NvYS5tbQppbmRleCA2ZjE0ZmNkN2IzMWY0MzY5NWVlYWExNzM2MDE4
ZjI4NTg5MDE0YzA3Li45OGNjYjRkYjlhYjA4YmFiMjkzMzBhYjRjYmEyZTI0NWU5OTQ0ZjdkIDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29j
b2EubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNv
Y29hLm1tCkBAIC0zODQsMjMgKzM4NCw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmNsZWFyTG9h
ZGVkU3VicmVzb3VyY2VEb21haW5zKCkKICAgICBbW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9u
KCkgd2Vic2l0ZURhdGFTdG9yZV0gX2NsZWFyTG9hZGVkU3VicmVzb3VyY2VEb21haW5zRm9yOnBh
cmVudFZpZXctPnBsYXRmb3JtVmlldygpXTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6YXBw
Qm91bmRSZXF1ZXN0Q29udGV4dERhdGFGb3JEb21haW4oV0tTdHJpbmdSZWYgZG9tYWluKQotewot
ICAgIGF1dG8qIHBhcmVudFZpZXcgPSBtYWluV2ViVmlldygpOwotICAgIGlmICghcGFyZW50Vmll
dykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgW21fbWFpbldlYlZpZXctPnBsYXRmb3JtVmlldygp
IF9hcHBCb3VuZE5hdmlnYXRpb25EYXRhRm9yRG9tYWluOnRvV1RGU3RyaW5nKGRvbWFpbikgY29t
cGxldGlvbkhhbmRsZXI6XihOU1N0cmluZyAqY29udGV4dCkgewotICAgICAgICBpZiAoIWNvbnRl
eHQpIHsKLSAgICAgICAgICAgIG1fY3VycmVudEludm9jYXRpb24tPmRpZFJlY2VpdmVBcHBCb3Vu
ZFJlcXVlc3RDb250ZXh0RGF0YUZvckRvbWFpbih7IH0pOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0KLSAgICAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+ZGlkUmVjZWl2ZUFwcEJv
dW5kUmVxdWVzdENvbnRleHREYXRhRm9yRG9tYWluKFN0cmluZyhjb250ZXh0KSk7Ci0gICAgfV07
Ci19Ci0KLWJvb2wgVGVzdENvbnRyb2xsZXI6OmRpZExvYWRBcHBCb3VuZFJlcXVlc3QoKQorYm9v
bCBUZXN0Q29udHJvbGxlcjo6ZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3QoKQogewogICAgIGF1
dG8qIHBhcmVudFZpZXcgPSBtYWluV2ViVmlldygpOwogICAgIGlmICghcGFyZW50VmlldykKQEAg
LTQwOCw3ICszOTIsNyBAQCBib29sIFRlc3RDb250cm9sbGVyOjpkaWRMb2FkQXBwQm91bmRSZXF1
ZXN0KCkKIAogICAgIF9fYmxvY2sgYm9vbCBpc0RvbmUgPSBmYWxzZTsKICAgICBfX2Jsb2NrIGJv
b2wgZGlkTG9hZFJlc3VsdCA9IGZhbHNlOwotICAgIFttX21haW5XZWJWaWV3LT5wbGF0Zm9ybVZp
ZXcoKSBfZGlkTG9hZEFwcEJvdW5kUmVxdWVzdDpeKEJPT0wgcmVzdWx0KSB7CisgICAgW21fbWFp
bldlYlZpZXctPnBsYXRmb3JtVmlldygpIF9kaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdDpeKEJP
T0wgcmVzdWx0KSB7CiAgICAgICAgIGRpZExvYWRSZXN1bHQgPSByZXN1bHQ7CiAgICAgICAgIGlz
RG9uZSA9IHRydWU7CiAgICAgfV07CkBAIC00MTYsNyArNDAwLDcgQEAgYm9vbCBUZXN0Q29udHJv
bGxlcjo6ZGlkTG9hZEFwcEJvdW5kUmVxdWVzdCgpCiAgICAgcmV0dXJuIGRpZExvYWRSZXN1bHQ7
CiB9CiAKLWJvb2wgVGVzdENvbnRyb2xsZXI6OmRpZExvYWROb25BcHBCb3VuZFJlcXVlc3QoKQor
Ym9vbCBUZXN0Q29udHJvbGxlcjo6ZGlkTG9hZE5vbkFwcEluaXRpYXRlZFJlcXVlc3QoKQogewog
ICAgIGF1dG8qIHBhcmVudFZpZXcgPSBtYWluV2ViVmlldygpOwogICAgIGlmICghcGFyZW50Vmll
dykKQEAgLTQyNCw3ICs0MDgsNyBAQCBib29sIFRlc3RDb250cm9sbGVyOjpkaWRMb2FkTm9uQXBw
Qm91bmRSZXF1ZXN0KCkKIAogICAgIF9fYmxvY2sgYm9vbCBpc0RvbmUgPSBmYWxzZTsKICAgICBf
X2Jsb2NrIGJvb2wgZGlkTG9hZFJlc3VsdCA9IGZhbHNlOwotICAgIFttX21haW5XZWJWaWV3LT5w
bGF0Zm9ybVZpZXcoKSBfZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdDpeKEJPT0wgcmVzdWx0KSB7
CisgICAgW21fbWFpbldlYlZpZXctPnBsYXRmb3JtVmlldygpIF9kaWRMb2FkTm9uQXBwSW5pdGlh
dGVkUmVxdWVzdDpeKEJPT0wgcmVzdWx0KSB7CiAgICAgICAgIGRpZExvYWRSZXN1bHQgPSByZXN1
bHQ7CiAgICAgICAgIGlzRG9uZSA9IHRydWU7CiAgICAgfV07CkBAIC00MzIsMTQgKzQxNiwxNCBA
QCBib29sIFRlc3RDb250cm9sbGVyOjpkaWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0KCkKICAgICBy
ZXR1cm4gZGlkTG9hZFJlc3VsdDsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6Y2xlYXJBcHBC
b3VuZE5hdmlnYXRpb25EYXRhKCkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmNsZWFyQXBwUHJpdmFj
eVJlcG9ydFRlc3RpbmdEYXRhKCkKIHsKICAgICBhdXRvKiBwYXJlbnRWaWV3ID0gbWFpbldlYlZp
ZXcoKTsKICAgICBpZiAoIXBhcmVudFZpZXcpCiAgICAgICAgIHJldHVybjsKIAogICAgIF9fYmxv
Y2sgYm9vbCBkb25lQ2xlYXJpbmcgPSBmYWxzZTsKLSAgICBbbV9tYWluV2ViVmlldy0+cGxhdGZv
cm1WaWV3KCkgX2NsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YTpeeworICAgIFttX21haW5XZWJW
aWV3LT5wbGF0Zm9ybVZpZXcoKSBfY2xlYXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGE6XnsK
ICAgICAgICAgZG9uZUNsZWFyaW5nID0gdHJ1ZTsKICAgICB9XTsKICAgICBwbGF0Zm9ybVJ1blVu
dGlsKGRvbmVDbGVhcmluZywgbm9UaW1lb3V0KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvY29jb2EvVGVzdFJ1bm5lcldLV2ViVmlldy5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9jb2NvYS9UZXN0UnVubmVyV0tXZWJWaWV3LmgKaW5kZXggNGNkNmRhMWZkNmY4ZTc0NGYz
OTA0ZTA2YWViYzgyNjlmMWFkZWEzOS4uMDc0NzZiNmUxYWU4OTEwMGU5ZmJiOWRjZWUyMjYzNzM5
ODc4MTI4MiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVu
bmVyV0tXZWJWaWV3LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVu
bmVyV0tXZWJWaWV3LmgKQEAgLTgyLDggKzgyLDcgQEAKIAogLSAodm9pZClkaXNtaXNzQWN0aXZl
TWVudTsKIC0gKHZvaWQpcmVzZXRJbnRlcmFjdGlvbkNhbGxiYWNrczsKLS0gKHZvaWQpX2FwcEJv
dW5kTmF2aWdhdGlvbkRhdGFGb3JEb21haW46KE5TU3RyaW5nICopZG9tYWluIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKShOU1N0cmluZyAqIGNvbnRleHQpKWNvbXBsZXRpb25IYW5kbGVyOwot
LSAodm9pZClfZGlkTG9hZEFwcEJvdW5kUmVxdWVzdDoodm9pZCAoXikoQk9PTCByZXN1bHQpKWNv
bXBsZXRpb25IYW5kbGVyOwotLSAodm9pZClfZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdDoodm9p
ZCAoXikoQk9PTCByZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClfZGlkTG9hZEFw
cEluaXRpYXRlZFJlcXVlc3Q6KHZvaWQgKF4pKEJPT0wgcmVzdWx0KSljb21wbGV0aW9uSGFuZGxl
cjsKKy0gKHZvaWQpX2RpZExvYWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0Oih2b2lkICheKShCT09M
IHJlc3VsdCkpY29tcGxldGlvbkhhbmRsZXI7CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFJ1bm5lcldLV2ViVmlldy5tbSBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvY29jb2EvVGVzdFJ1bm5lcldLV2ViVmlldy5tbQppbmRleCAwZDg0MTE2YWQ0
NTM1MWFmMWYxNTViYjUyYzVjYWVmYjNjZjJjNzUzLi4yZWQ4ZjgwMDc5ZTc4ZTA0ZDljZGI2ZWVi
M2M1NDJlY2FjOTg4NzBmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29h
L1Rlc3RSdW5uZXJXS1dlYlZpZXcubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2Nv
YS9UZXN0UnVubmVyV0tXZWJWaWV3Lm1tCkBAIC01OTYsMTkgKzU5NiwxNCBAQCBzdGF0aWMgYm9v
bCBpc1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlcihVSVZpZXdDb250cm9sbGVyICp2aWV3Q29udHJv
bGxlcikKICAgICAgICAgc2VsZi5kaWRIaWRlQ29udGFjdFBpY2tlckNhbGxiYWNrKCk7CiB9CiAK
LS0gKHZvaWQpX2FwcEJvdW5kTmF2aWdhdGlvbkRhdGFGb3JEb21haW46KE5TU3RyaW5nICopZG9t
YWluIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1N0cmluZyAqIGNvbnRleHQpKWNvbXBs
ZXRpb25IYW5kbGVyCistICh2b2lkKV9kaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdDoodm9pZCAo
XikoQk9PTCByZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0gICAgW3N1cGVyIF9hcHBCb3Vu
ZE5hdmlnYXRpb25EYXRhRm9yRG9tYWluOmRvbWFpbiBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0
aW9uSGFuZGxlcl07CisgICAgW3N1cGVyIF9kaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdDpjb21w
bGV0aW9uSGFuZGxlcl07CiB9CiAKLS0gKHZvaWQpX2RpZExvYWRBcHBCb3VuZFJlcXVlc3Q6KHZv
aWQgKF4pKEJPT0wgcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcgorLSAodm9pZClfZGlkTG9hZE5v
bkFwcEluaXRpYXRlZFJlcXVlc3Q6KHZvaWQgKF4pKEJPT0wgcmVzdWx0KSljb21wbGV0aW9uSGFu
ZGxlcgogewotICAgIFtzdXBlciBfZGlkTG9hZEFwcEJvdW5kUmVxdWVzdDpjb21wbGV0aW9uSGFu
ZGxlcl07Ci19Ci0KLS0gKHZvaWQpX2RpZExvYWROb25BcHBCb3VuZFJlcXVlc3Q6KHZvaWQgKF4p
KEJPT0wgcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcgotewotICAgIFtzdXBlciBfZGlkTG9hZE5v
bkFwcEJvdW5kUmVxdWVzdDpjb21wbGV0aW9uSGFuZGxlcl07CisgICAgW3N1cGVyIF9kaWRMb2Fk
Tm9uQXBwSW5pdGlhdGVkUmVxdWVzdDpjb21wbGV0aW9uSGFuZGxlcl07CiB9CiAKIEBlbmQKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCAwNDBhM2ZlOTdhOGRlMjFjNjY4YmEyNDgzZmJmYzY5OWRjNmQ0YTI5Li41OWQzYjQxZDI1
NTU5OGY0MTRiNTdiYzMzZDZkZDIzNzVmYmFlM2I0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIw
MjEtMDYtMTUgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAg
ICAgICAgTWlncmF0ZSBBcHAgUHJpdmFjeSBSZXBvcnQgY29kZSBmcm9tIFdlYktpdEFkZGl0aW9u
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3MDQ1
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDMzMzI4Nz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIEFwcCBQcml2YWN5IFJlcG9ydCB0ZXN0
cyB0byB0aGVpciBvd24gZGlyZWN0b3J5LgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczoK
KyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1sb2Fk
LXVybC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwLXByaXZh
Y3ktcmVwb3J0L2F0dHJpYnV0aW9uLWxvYWQtdXJsLmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0
aW9uLWxvYWQtdXJsLmh0bWwuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBv
cnQvYXR0cmlidXRpb24tcGluZy1sb2FkLWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmli
dXRpb24tcGluZy1sb2FkLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcC1w
cml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1waW5nLWxvYWQuaHRtbDogUmVuYW1lZCBmcm9tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0
cmlidXRpb24tcGluZy1sb2FkLmh0bWwuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHAtcHJpdmFj
eS1yZXBvcnQvYXR0cmlidXRpb24tcG9zdC1yZXF1ZXN0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tcG9zdC1y
ZXF1ZXN0Lmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1i
cm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXBvc3QtcmVxdWVzdC5odG1sLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXByZWZs
aWdodC1hc3luYy1leHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXByZWZsaWdo
dC1hc3luYy1leHBlY3RlZC50eHQuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1y
ZXBvcnQvYXR0cmlidXRpb24tcHJlZmxpZ2h0LWFzeW5jLmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJp
YnV0aW9uLXByZWZsaWdodC1hc3luYy5odG1sLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwLXBy
aXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXByZWZsaWdodC1zeW5jLWV4cGVjdGVkLnR4dDogUmVu
YW1lZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9h
cHAtYm91bmQtYXR0cmlidXRpb24tcHJlZmxpZ2h0LXN5bmMtZXhwZWN0ZWQudHh0LgorICAgICAg
ICAqIGh0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXByZWZsaWdodC1z
eW5jLmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93
c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXByZWZsaWdodC1zeW5jLmh0bWwuCisg
ICAgICAgICogaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tc3BlY3Vs
YXRpdmUtcmV2YWxpZGF0aW9uLWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24t
c3BlY3VsYXRpdmUtcmV2YWxpZGF0aW9uLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1zcGVjdWxhdGl2ZS1yZXZhbGlkYXRp
b24uaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dz
ZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tc3BlY3VsYXRpdmUtcmV2YWxpZGF0aW9u
Lmh0bWwuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvcmVzb3VyY2Vz
L2ZyYW1lLXdpdGgtYXV0aGVudGljYXRlZC1yZXNvdXJjZS5weTogUmVuYW1lZCBmcm9tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9yZXNvdXJjZXMvZnJhbWUt
d2l0aC1hdXRoZW50aWNhdGVkLXJlc291cmNlLnB5LgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBw
LXByaXZhY3ktcmVwb3J0L3Jlc291cmNlcy9wb3N0LnB5OiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9yZXNvdXJjZXMvcmVzb3VyY2Utd2l0aC1hdXRoLnB5
OiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2
YWN5L3Jlc291cmNlcy9yZXNvdXJjZS13aXRoLWF1dGgucHkuCisgICAgICAgICogaHR0cC90ZXN0
cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1sb2FkLXVybC1l
eHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nl
ci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1wb3N0LXJlcXVlc3QtZXhwZWN0ZWQudHh0
OiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9j
b250ZXh0LXN0cmluZy1mb3Itc3ViZnJhbWUtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9jb250ZXh0LXN0cmluZy1mb3It
c3ViZnJhbWUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luLWFwcC1icm93
c2VyLXByaXZhY3kvY29udGV4dC1zdHJpbmctcHJlY29ubmVjdC1leHBlY3RlZC50eHQ6IFJlbW92
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2NvbnRleHQt
c3RyaW5nLXByZWNvbm5lY3QuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2lu
LWFwcC1icm93c2VyLXByaXZhY3kvY29udGV4dC1zdHJpbmctcHJlZmxpZ2h0LWV4cGVjdGVkLnR4
dDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kv
Y29udGV4dC1zdHJpbmctcHJlZmxpZ2h0Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L3Jlc291cmNlcy9wb3N0LnB5OiBSZW1vdmVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvY2hlY2stcGluZy1hcHAt
aW5pdGlhdGVkLWRhdGEucHk6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25h
dmlnYXRpb24vcmVzb3VyY2VzL2NoZWNrLXBpbmctYXBwLWJvdW5kLWRhdGEucHkuCisgICAgICAg
ICogcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIxLTA2LTE1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICAocjI3ODM1OSkgZmFzdC9t
ZWRpYXN0cmVhbS9tZWRpYUVsZW1lbnQtZ2MuaHRtbCBpcyBhIGZsYWt5IGZhaWx1cmUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhw
ZWN0YXRpb25zCmluZGV4IGFjNTdiM2I0OTI3N2RmZGVlOTVjZDdhMDQyMDMxNDc0YmRmNDk2MDYu
Ljc3Yjc2ODlhYzNiMGVhMTE2YThjNDE5OTU4NTgyNjc5YzllMGM4ODMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0
aW9ucwpAQCAtMTk0LDYgKzE5NCw5IEBAIGZhc3Qvc3BlZWNocmVjb2duaXRpb24vc3RhcnQtcmVj
b2duaXRpb24tdGhlbi1zdG9wLmh0bWwgWyBTa2lwIF0KIGZhc3Qvc3BlZWNocmVjb2duaXRpb24v
c3RhcnQtc2Vjb25kLXJlY29nbml0aW9uLmh0bWwgWyBTa2lwIF0KIGZhc3Qvc3BlZWNocmVjb2du
aXRpb24vaW9zLyBbIFNraXAgXQogCisjIE9ubHkgaU9TIHN1cHBvcnRzIGFwcC1wcml2YWN5LXJl
cG9ydAoraHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvIFsgU2tpcCBdCisKICMgT25seSBw
YXJ0aWFsIHN1cHBvcnQgb24gQ29jb2EgcGxhdGZvcm1zLgogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zcGVlY2gtYXBpLyBbIFNraXAgXQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1sb2FkLXVybC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRy
aWJ1dGlvbi1sb2FkLXVybC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTAwMjQ4MDQ1MTU5OWZi
NDA4ZWQwMGY0OGJmZDY3MjhmMjZkNmRmNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLWxvYWQtdXJsLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK1Rlc3QgbG9hZFVSTCByZXF1ZXN0cyBhcmUgc3VjY2Vz
ZnVsbHkgYXR0cmlidXRlZCBhcyBhcHAgaW5pdGlhdGVkLgorUEFTUyBzdWNjZXNzZnVsbHkgbG9h
ZGVkIG9ubHkgYXBwIGluaXRpYXRlZCByZXF1ZXN0cworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1sb2FkLXVybC5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24t
bG9hZC11cmwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40N2FkOGVlNWM4N2NjMmQxODVlZDc5N2Y1YmVmMDdh
ZDY5NGU4YzA0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAt
cHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tbG9hZC11cmwuaHRtbApAQCAtMCwwICsxLDQ4IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291
cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ic2V0VGltZW91
dCgncnVuVGVzdCgpJywgMCkiPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPlRlc3QgbG9hZFVSTCBy
ZXF1ZXN0cyBhcmUgc3VjY2VzZnVsbHkgYXR0cmlidXRlZCBhcyBhcHAgaW5pdGlhdGVkLjwvZGl2
PgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gbG9hZFVSTCgp
IHsKKyAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaHJlZiA9IGRlc3RpbmF0aW9uT3JpZ2luICsg
Ii9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tbG9hZC11cmwuaHRtbCI7CisgICAgfQor
CisgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2NvbnNvbGUnKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNz
YWdlICsgJ1xuJykpOworICAgIH0KKworICAgIGNvbnN0IGRlc3RpbmF0aW9uT3JpZ2luID0gImh0
dHA6Ly9sb2NhbGhvc3Q6ODAwMCI7CisgICAgY29uc3Qgc3RhcnRpbmdPcmlnaW4gPSAiaHR0cDov
LzEyNy4wLjAuMTo4MDAwIjsKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICBpZiAo
ZG9jdW1lbnQubG9jYXRpb24ub3JpZ2luID09PSBzdGFydGluZ09yaWdpbikgeworICAgICAgICAg
ICAgbG9hZFVSTCgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdmFyIGRpZExvYWRB
cHBJbml0aWF0ZWRSZXF1ZXN0ID0gdGVzdFJ1bm5lci5kaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVz
dCgpOworICAgICAgICAgICAgdmFyIGRpZExvYWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0ID0gdGVz
dFJ1bm5lci5kaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdCgpOworCisgICAgICAgICAgICBp
ZiAoZGlkTG9hZE5vbkFwcEluaXRpYXRlZFJlcXVlc3QpIHsKKyAgICAgICAgICAgICAgICBsb2co
IkZBSUwgZGlkIGxvYWQgbm9uIGFwcCBpbml0aWF0ZWQgcmVxdWVzdCIpOworICAgICAgICAgICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBpZiAoIWRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0KSB7CisgICAgICAgICAgICAgICAgbG9n
KCJGQUlMIGRpZCBub3QgbG9hZCBhcHAgaW5pdGlhdGVkIHJlcXVlc3QiKTsKKyAgICAgICAgICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgbG9nKCJQQVNTIHN1Y2Nlc3NmdWxseSBsb2FkZWQgb25seSBhcHAgaW5pdGlhdGVkIHJlcXVl
c3RzIik7CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfQor
ICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tcGluZy1sb2FkLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0
dHJpYnV0aW9uLXBpbmctbG9hZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGQ2MTdlZTkwMGE0
OTAyYjk3YTRiZWQ2YTM5ZTk2NTY2Y2U0NTU5ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXBpbmctbG9hZC1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitDT05TT0xFIE1FU1NBR0U6IFBBU1Mgc3VjY2Vz
c2Z1bGx5IGxvYWRlZCBvbmx5IGFwcCBpbml0aWF0ZWQgcmVxdWVzdHMKK1Bpbmcgc2VudCBzdWNj
ZXNzZnVsbHkKK0NPTlRFTlRfVFlQRTogdGV4dC9waW5nCitIVFRQX0hPU1Q6IDEyNy4wLjAuMTo4
MDAwCitIVFRQX1BJTkdfRlJPTTogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2FwcC1wcml2YWN5LXJl
cG9ydC9hdHRyaWJ1dGlvbi1waW5nLWxvYWQuaHRtbAorSFRUUF9QSU5HX1RPOiBodHRwOi8vMTI3
LjAuMC4xOjgwMDAvbmF2aWdhdGlvbi9yZXNvdXJjZXMvY2hlY2stcGluZy1hcHAtaW5pdGlhdGVk
LWRhdGEucHkKK1JFUVVFU1RfTUVUSE9EOiBQT1NUCitSRVFVRVNUX1VSSTogL25hdmlnYXRpb24v
cmVzb3VyY2VzL3NhdmUtcGluZy5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tcGluZy1sb2FkLmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1waW5nLWxvYWQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xMTAwY2FlMmM2MmNkYWJkYWE0ZTEwZWMzOWY5YzkwYTg5ZWJlOTk1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1y
ZXBvcnQvYXR0cmlidXRpb24tcGluZy1sb2FkLmh0bWwKQEAgLTAsMCArMSwzMCBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL25hdmlnYXRpb24vcGlu
Zy1hdHRyaWJ1dGUvcmVzb3VyY2VzL3V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pgor
aWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NTaG91bGREb3du
Z3JhZGVSZWZlcnJlcihmYWxzZSwgZnVuY3Rpb24gKCkgeyB9KTsKKyAgICBpbnRlcm5hbHMuc2V0
dGluZ3Muc2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKHRydWUpOworICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBjbGlja0VsZW1l
bnQoZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiaW1nIikpOworfQorCit3aW5kb3cub25sb2FkID0g
ZnVuY3Rpb24gKCkKK3sKKyAgICBjbGVhckxhc3RQaW5nUmVzdWx0QW5kUnVuVGVzdCh0ZXN0KTsK
K30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPGltZyBzcmM9Im5vbi1leGlzdGVu
dC1pbWFnZS5qcGciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4IiB1c2VtYXA9IiNpbWFnZW1hcCI+
CisgICAgPG1hcCBuYW1lPSJpbWFnZW1hcCI+CisgICAgICAgIDxhcmVhIHNoYXBlPSJyZWN0IiBj
b29yZHM9IjAsMCwxMjgsMTI4IiBocmVmPSIuLi9uYXZpZ2F0aW9uL3Jlc291cmNlcy9jaGVjay1w
aW5nLWFwcC1pbml0aWF0ZWQtZGF0YS5weSIgcGluZz0iLi4vbmF2aWdhdGlvbi9yZXNvdXJjZXMv
c2F2ZS1waW5nLnB5Ij4KKyAgICA8L21hcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXBv
c3QtcmVxdWVzdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2
YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1wb3N0LXJlcXVlc3QtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmUyNDVlMzQwZjE3ZGU4ZTRmM2UzNTljYzFiOWY0MTQ3NjZkZWNmMWMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1
dGlvbi1wb3N0LXJlcXVlc3QtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorQ09OU09MRSBN
RVNTQUdFOiBQQVNTIHN1Y2Nlc3NmdWxseSBsb2FkZWQgb25seSBhcHAgaW5pdGlhdGVkIHJlcXVl
c3RzCitUZXN0cyBhcHAgaW5pdGlhdGVkIHJlcXVlc3RzIGdldCBtYXJrZWQgZm9yIFBPU1QgcmVx
dWVzdHMuCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFj
eS1yZXBvcnQvYXR0cmlidXRpb24tcG9zdC1yZXF1ZXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1wb3N0LXJlcXVlc3QuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hZDc5NTRmNzgwMzNiNGRlNjA1YjkwMWE2MDNmOWJkMzE5ZTUxMjg1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQv
YXR0cmlidXRpb24tcG9zdC1yZXF1ZXN0Lmh0bWwKQEAgLTAsMCArMSwyMiBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwPlRlc3RzIGFwcCBpbml0aWF0ZWQgcmVxdWVzdHMgZ2V0IG1hcmtlZCBmb3Ig
UE9TVCByZXF1ZXN0cy48L3A+Cis8Zm9ybSBpZD0idGVzdEZvcm0iIGFjdGlvbj0icmVzb3VyY2Vz
L3Bvc3QucHkiIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vcmVmZXJyZXIiIG1ldGhvZD0icG9zdCI+
Cis8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iVGVzdCI+PC9pbnB1dD4KKzxmb3JtPgorPHNj
cmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOworICAgIHRlc3RSdW5uZXIuc2V0Q2FuT3BlbldpbmRvd3ModHJ1ZSk7Cit9CisKK2Rv
Y3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0
dHJpYnV0aW9uLXByZWZsaWdodC1hc3luYy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1wcmVmbGlnaHQtYXN5bmMtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliNWVlYTk0MjJhZDBjYWVlNzY2N2JjZDQwNmRiOTNlMGE1
ZTllMmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2
YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1wcmVmbGlnaHQtYXN5bmMtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsNiBAQAorQ09OU09MRSBNRVNTQUdFOiBQcmVmbGlnaHQgcmVzcG9uc2UgaXMgbm90IHN1
Y2Nlc3NmdWwKK0NPTlNPTEUgTUVTU0FHRTogWE1MSHR0cFJlcXVlc3QgY2Fubm90IGxvYWQgaHR0
cDovL2xvY2FsaG9zdDo4MDAwL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9zdGF0dXMtNDA0LXdp
dGhvdXQtYm9keS5weSBkdWUgdG8gYWNjZXNzIGNvbnRyb2wgY2hlY2tzLgorVGVzdHMgYXBwIGlu
aXRpYXRlZCByZXF1ZXN0cyBnZXQgbWFya2VkIGZvciBhc3luYyBwcmVmbGlnaHRzCisKK1BBU1Mg
c3VjY2Vzc2Z1bGx5IGxvYWRlZCBvbmx5IGFwcCBpbml0aWF0ZWQgcmVxdWVzdHMKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRp
b24tcHJlZmxpZ2h0LWFzeW5jLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2
YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1wcmVmbGlnaHQtYXN5bmMuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
OTNiOWYzYzI0ZGI3ZTMwYzlmNTFlOWY0ZDIyNzE2ZDY2MmU4ZGI2Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24t
cHJlZmxpZ2h0LWFzeW5jLmh0bWwKQEAgLTAsMCArMSw0NiBAQAorPHA+VGVzdHMgYXBwIGluaXRp
YXRlZCByZXF1ZXN0cyBnZXQgbWFya2VkIGZvciBhc3luYyBwcmVmbGlnaHRzPC9wPgorCis8cHJl
IGlkPSJjb25zb2xlIj48L3ByZT4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKK30KKworZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2NvbnNvbGUnKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSht
ZXNzYWdlICsgJ1xuJykpOworfQorCit2YXIgcHJlZmxpZ2h0TGlua0RvbWFpbiA9ICJsb2NhbGhv
c3QiOwordmFyIGNvbnRleHRIb3N0ID0gIjEyNy4wLjAuMSI7Cit2YXIgdXJsID0gImh0dHA6Ly9s
b2NhbGhvc3Q6ODAwMC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvc3RhdHVzLTQwNC13aXRob3V0
LWJvZHkucHkiCisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIHZhciByZXEgPSBuZXcgWE1M
SHR0cFJlcXVlc3QoKTsKKyAgICByZXEub3BlbigiR0VUIiwgdXJsLCB0cnVlKTsKKyAgICByZXEu
c2V0UmVxdWVzdEhlYWRlcigieC13ZWJraXQiLCAiZm9vIik7CisKKyAgICByZXEub25lcnJvciA9
IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3QgPSB0
ZXN0UnVubmVyLmRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0KCk7CisgICAgICAgIHZhciBkaWRM
b2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdCA9IHRlc3RSdW5uZXIuZGlkTG9hZE5vbkFwcEluaXRp
YXRlZFJlcXVlc3QoKTsKKworICAgICAgICBpZiAoZGlkTG9hZE5vbkFwcEluaXRpYXRlZFJlcXVl
c3QpIHsKKyAgICAgICAgICAgIGxvZygiRkFJTCBkaWQgbG9hZCBub24gYXBwIGluaXRpYXRlZCBy
ZXF1ZXN0Iik7CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmICghZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3QpIHsKKyAgICAgICAg
ICAgIGxvZygiRkFJTCBkaWQgbm90IGxvYWQgYXBwIGluaXRpYXRlZCByZXF1ZXN0Iik7CisgICAg
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIGxv
ZygiUEFTUyBzdWNjZXNzZnVsbHkgbG9hZGVkIG9ubHkgYXBwIGluaXRpYXRlZCByZXF1ZXN0cyIp
OworICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICB9CisgICAgcmVxLnNlbmQo
bnVsbCk7Cit9CisKK3J1blRlc3QoKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tcHJlZmxpZ2h0LXN5
bmMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBv
cnQvYXR0cmlidXRpb24tcHJlZmxpZ2h0LXN5bmMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQw
MTZjNTMxZTA2NTlhZGNkZDYzNTU1MjNlYTFiMGFkMmQ1YTJiMWMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1w
cmVmbGlnaHQtc3luYy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBACitDT05TT0xFIE1FU1NB
R0U6IFByZWZsaWdodCByZXNwb25zZSBpcyBub3Qgc3VjY2Vzc2Z1bAorQ09OU09MRSBNRVNTQUdF
OiBYTUxIdHRwUmVxdWVzdCBjYW5ub3QgbG9hZCBodHRwOi8vbG9jYWxob3N0OjgwMDAveG1saHR0
cHJlcXVlc3QvcmVzb3VyY2VzL3N0YXR1cy00MDQtd2l0aG91dC1ib2R5LnB5IGR1ZSB0byBhY2Nl
c3MgY29udHJvbCBjaGVja3MuCitUZXN0cyBhcHAgaW5pdGlhdGVkIHJlcXVlc3RzIGdldCBtYXJr
ZWQgZm9yIHN5bmMgcHJlZmxpZ2h0cworCitQQVNTOiBOZXR3b3JrRXJyb3I6ICBBIG5ldHdvcmsg
ZXJyb3Igb2NjdXJyZWQuCitQQVNTIHN1Y2Nlc3NmdWxseSBsb2FkZWQgb25seSBhcHAgaW5pdGlh
dGVkIHJlcXVlc3RzCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXBy
aXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXByZWZsaWdodC1zeW5jLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1wcmVmbGlnaHQtc3lu
Yy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmViNTQwOTVhMWZmN2MwNDFkMWFiZTU2MDBmYTViY2U1Y2VlZTQz
YTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5
LXJlcG9ydC9hdHRyaWJ1dGlvbi1wcmVmbGlnaHQtc3luYy5odG1sCkBAIC0wLDAgKzEsNDkgQEAK
KzxwPlRlc3RzIGFwcCBpbml0aWF0ZWQgcmVxdWVzdHMgZ2V0IG1hcmtlZCBmb3Igc3luYyBwcmVm
bGlnaHRzPC9wPgorCis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzxzY3JpcHQ+CitpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7Cisg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlICsgJ1xuJykpOworfQorCit2YXIgcHJlZmxpZ2h0TGlu
a0RvbWFpbiA9ICJsb2NhbGhvc3QiOwordmFyIGNvbnRleHRIb3N0ID0gIjEyNy4wLjAuMSI7Cit2
YXIgdXJsID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMv
c3RhdHVzLTQwNC13aXRob3V0LWJvZHkucHkiCisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAg
IHZhciByZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKKyAgICByZXEub3BlbigiR0VUIiwgdXJs
LCBmYWxzZSk7CisgICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoIngtd2Via2l0IiwgImZvbyIpOwor
CisgICAgdHJ5IHsKKyAgICAgICAgcmVxLnNlbmQobnVsbCk7CisgICAgICAgIGxvZygiUEFTUzog
IiArIHJlcS5yZXNwb25zZVRleHQpOworICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgICAgIGxvZygi
UEFTUzogIiArIGV4KTsKKyAgICAgICAgdmFyIGRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0ID0g
dGVzdFJ1bm5lci5kaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdCgpOworICAgICAgICB2YXIgZGlk
TG9hZE5vbkFwcEluaXRpYXRlZFJlcXVlc3QgPSB0ZXN0UnVubmVyLmRpZExvYWROb25BcHBJbml0
aWF0ZWRSZXF1ZXN0KCk7CisKKyAgICAgICAgaWYgKGRpZExvYWROb25BcHBJbml0aWF0ZWRSZXF1
ZXN0KSB7CisgICAgICAgICAgICBsb2coIkZBSUwgZGlkIGxvYWQgbm9uIGFwcCBpbml0aWF0ZWQg
cmVxdWVzdCIpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAg
IH0KKworICAgICAgICBpZiAoIWRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0KSB7CisgICAgICAg
ICAgICBsb2coIkZBSUwgZGlkIG5vdCBsb2FkIGFwcCBpbml0aWF0ZWQgcmVxdWVzdCIpOworICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0KKworICAgICAgICBs
b2coIlBBU1Mgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBvbmx5IGFwcCBpbml0aWF0ZWQgcmVxdWVzdHMi
KTsKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfQorfQorCitydW5UZXN0
KCk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXBy
aXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXNwZWN1bGF0aXZlLXJldmFsaWRhdGlvbi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1
dGlvbi1zcGVjdWxhdGl2ZS1yZXZhbGlkYXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIy
MWMyZDU5OTQxNDRlODEwZTE1NzdlZmZiY2QwOWNlMDZkZjNkZGQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1z
cGVjdWxhdGl2ZS1yZXZhbGlkYXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKKzEy
Ny4wLjAuMTo4MDAwIC0gZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIC0gUHJvdGVj
dGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVIVFRQQmFzaWMgLSBSZXNwb25kaW5nIHdpdGgg
dGVzdFVzZXJuYW1lOnRlc3RQYXNzd29yZAorMTI3LjAuMC4xOjgwMDAgLSBkaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UgLSBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVt
ZUhUVFBCYXNpYyAtIFNpbXVsYXRpbmcgY2FuY2VsbGVkIGF1dGhlbnRpY2F0aW9uIHNoZWV0CitU
ZXN0cyBzcGVjdWxhdGl2ZSByZXZhbGlkYXRpb24gb2YgYXV0aGVudGljYXRlZCByZXNvdXJjZXMu
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHhoci5zdGF0dXMgaXMgNDAx
CitQQVNTIFN1Y2Nlc3NmdWx5IGxvYWRlZC4KK1BBU1Mgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBvbmx5
IGFwcCBpbml0aWF0ZWQgcmVxdWVzdHMKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Fw
cC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1zcGVjdWxhdGl2ZS1yZXZhbGlkYXRpb24uaHRt
bCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9u
LXNwZWN1bGF0aXZlLXJldmFsaWRhdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiNzVkNmZmMWJlODlh
MTdmYmFkZWFlZmFjOTc0MDAwZGM5ZTg1ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1zcGVjdWxhdGl2ZS1y
ZXZhbGlkYXRpb24uaHRtbApAQCAtMCwwICsxLDcyIEBACis8c2NyaXB0IHNyYz0iL2pzLXRlc3Qt
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitkZXNjcmlwdGlv
bigiVGVzdHMgc3BlY3VsYXRpdmUgcmV2YWxpZGF0aW9uIG9mIGF1dGhlbnRpY2F0ZWQgcmVzb3Vy
Y2VzLiIpOworanNUZXN0SXNBc3luYyA9IHRydWU7CisKK3Rlc3RSdW5uZXIuc2V0SGFuZGxlc0F1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlcyh0cnVlKTsKK3Rlc3RSdW5uZXIuc2V0QXV0aGVudGljYXRp
b25Vc2VybmFtZSgidGVzdFVzZXJuYW1lIik7Cit0ZXN0UnVubmVyLnNldEF1dGhlbnRpY2F0aW9u
UGFzc3dvcmQoInRlc3RQYXNzd29yZCIpOworCitzdGF0ZSA9ICJ3YXJtdXAiOworCitmdW5jdGlv
biBjbGVhckNyZWRlbnRpYWxTdG9yYWdlKCkKK3sKKyAgICB4aHIgPSBuZXcgWE1MSHR0cFJlcXVl
c3QoKTsKKyAgICB4aHIub3BlbigiR0VUIiwgInJlc291cmNlcy9yZXNvdXJjZS13aXRoLWF1dGgu
cHk/b3RoZXIiLCBmYWxzZSwgImJhZFVzZXJuYW1lIiwgImJhZFBhc3N3b3JkIik7CisgICAgeGhy
LnNlbmQoKTsKKyAgICBzaG91bGRCZSgieGhyLnN0YXR1cyIsICI0MDEiKTsKK30KKworZnVuY3Rp
b24gbG9nKG1lc3NhZ2UpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUn
KS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlICsgJ1xuJykpOwor
fQorCitmdW5jdGlvbiBmcmFtZUxvYWRlZCgpCit7CisgICAgaWYgKHN0YXRlID09ICJ3YXJtdXAi
KSB7CisgICAgICAgIC8vIE5hdmlnYXRlIGZyYW1lIHRvICdhYm91dDpibGFuaycgdG8gZmx1c2gg
dG8gc3VicmVzb3VyY2UgbG9hZHMgbWV0YWRhdGEgdG8gZGlzay4KKyAgICAgICAgc3RhdGUgPSAi
Zmx1c2hpbmdNZXRhZGF0YSI7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0SGFuZGxlc0F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlcyhmYWxzZSk7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJ0ZXN0RnJhbWUiKS5zcmMgPSAiYWJvdXQ6YmxhbmsiOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIGlmIChzdGF0ZSA9PSAiZmx1c2hpbmdNZXRhZGF0YSIpIHsKKyAgICAgICAgY2xlYXJD
cmVkZW50aWFsU3RvcmFnZSgpOworCisgICAgICAgIGludGVybmFscy5jbGVhck1lbW9yeUNhY2hl
KCk7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0SGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
cyhmYWxzZSk7CisKKyAgICAgICAgLy8gTmF2aWdhdGUgZnJhbWUgdG8gaXRzIG9yaWdpbmFsIGxv
Y2F0aW9uIGFnYWluLiBUaGlzIHRpbWUgaXQgc2hvdWxkIHNwZWN1bGF0aXZlbHkKKyAgICAgICAg
Ly8gdmFsaWRhdGUgc3VicmVzb3VyY2VzIGFzIHdlIGhhdmUgc3VicmVzb3VyY2UgbG9hZHMgbWV0
YWRhdGEgaW4gdGhlIGRpc2sgY2FjaGUuCisgICAgICAgIHN0YXRlID0gInNwZWN1bGF0aXZlUmV2
YWxpZGF0aW9uIjsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RGcmFtZSIp
LnNyYyA9ICJyZXNvdXJjZXMvZnJhbWUtd2l0aC1hdXRoZW50aWNhdGVkLXJlc291cmNlLnB5IjsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoc3RhdGUgPT0gInNwZWN1bGF0aXZlUmV2
YWxpZGF0aW9uIikgeworICAgICAgICB0ZXN0UGFzc2VkKCJTdWNjZXNzZnVseSBsb2FkZWQuIik7
CisgICAgICAgIHZhciBkaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdCA9IHRlc3RSdW5uZXIuZGlk
TG9hZEFwcEluaXRpYXRlZFJlcXVlc3QoKTsKKyAgICAgICAgdmFyIGRpZExvYWROb25BcHBJbml0
aWF0ZWRSZXF1ZXN0ID0gdGVzdFJ1bm5lci5kaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdCgp
OworCisgICAgICAgIGlmIChkaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdCkgeworICAgICAg
ICAgICAgbG9nKCJGQUlMIGRpZCBsb2FkIG5vbiBhcHAgaW5pdGlhdGVkIHJlcXVlc3QiKTsKKyAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKCFkaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdCkgeworICAgICAgICAg
ICAgbG9nKCJGQUlMIGRpZCBub3QgbG9hZCBhcHAgaW5pdGlhdGVkIHJlcXVlc3QiKTsKKyAgICAg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgbG9nKCJQQVNTIHN1Y2Nlc3NmdWxseSBsb2FkZWQgb25seSBhcHAgaW5pdGlhdGVk
IHJlcXVlc3RzIik7CisKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9Cit9CisKKzwvc2NyaXB0PgorPGlmcmFtZSBpZD0idGVzdEZyYW1lIiBzcmM9InJlc291
cmNlcy9mcmFtZS13aXRoLWF1dGhlbnRpY2F0ZWQtcmVzb3VyY2UucHkiIG9ubG9hZD0iZnJhbWVM
b2FkZWQoKSI+PC9pZnJhbWU+Cis8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2FwcC1wcml2YWN5LXJlcG9ydC9yZXNvdXJjZXMvZnJhbWUtd2l0aC1hdXRoZW50aWNhdGVkLXJl
c291cmNlLnB5IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvcmVz
b3VyY2VzL2ZyYW1lLXdpdGgtYXV0aGVudGljYXRlZC1yZXNvdXJjZS5weQpuZXcgZmlsZSBtb2Rl
IDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
NDhkMGZkMWE2ZDZjMDk5YWFkNjFlMDA0MjQyZTIzODk1NTNlOTQxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvcmVzb3VyY2VzL2Zy
YW1lLXdpdGgtYXV0aGVudGljYXRlZC1yZXNvdXJjZS5weQpAQCAtMCwwICsxLDEzIEBACisjIS91
c3IvYmluL2VudiBweXRob24zCisKK2ltcG9ydCBzeXMKKworc3lzLnN0ZG91dC53cml0ZSgKKyAg
ICAnQ2FjaGUtQ29udHJvbDogbWF4LWFnZT0wXHJcbicKKyAgICAnRXRhZzogMTIzNDU2Nzg5XHJc
bicKKyAgICAnQ29udGVudC1UeXBlOiB0ZXh0L2h0bWxcclxuXHJcbicKKyAgICAnPCFET0NUWVBF
IGh0bWw+XG4nCisgICAgJzxib2R5PlxuJworICAgICc8c2NyaXB0IHNyYz0icmVzb3VyY2Utd2l0
aC1hdXRoLnB5Ij48L3NjcmlwdD5cbicKKyAgICAnPC9ib2R5PlxuJworKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvcmVzb3VyY2VzL3Bvc3Qu
cHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9yZXNvdXJjZXMv
cG9zdC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kMDZmZWVlMjEyYzcwMWNmNjJkOWQ4MzBkZmYyYjViODc2MWI5
MzlmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFj
eS1yZXBvcnQvcmVzb3VyY2VzL3Bvc3QucHkKQEAgLTAsMCArMSwyNyBAQAorIyEvdXNyL2Jpbi9l
bnYgcHl0aG9uMworCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKKworcmVmZXJlciA9IG9zLmVudmly
b24uZ2V0KCdIVFRQX1JFRkVSRVInLCAnJykKKworc3lzLnN0ZG91dC53cml0ZSgKKyAgICAnQ29u
dGVudC1UeXBlOiB0ZXh0L2h0bWxcclxuXHJcbicKKyAgICAnPHA+UmVmZXJyZXI6IHtyZWZlcmVy
fTwvcD5cbicKKyAgICAnPHNjcmlwdD5cbicKKyAgICAnaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
e1xuJworICAgICcgICAgdmFyIGRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0ID0gdGVzdFJ1bm5l
ci5kaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdCgpO1xuJworICAgICcgICAgdmFyIGRpZExvYWRO
b25BcHBJbml0aWF0ZWRSZXF1ZXN0ID0gdGVzdFJ1bm5lci5kaWRMb2FkTm9uQXBwSW5pdGlhdGVk
UmVxdWVzdCgpO1xuJworICAgICcgICAgaWYgKGRpZExvYWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0
KSB7e1xuJworICAgICcgICAgICAgIGNvbnNvbGUubG9nKCJGQUlMIGRpZCBsb2FkIG5vbiBhcHAg
aW5pdGlhdGVkIHJlcXVlc3QiKTtcbicKKyAgICAnICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTtcbicKKyAgICAnICAgIH19XG4nCisgICAgJyAgICBpZiAoIWRpZExvYWRBcHBJbml0aWF0
ZWRSZXF1ZXN0KSB7e1xuJworICAgICcgICAgICAgICBjb25zb2xlLmxvZygiRkFJTCBkaWQgbm90
IGxvYWQgYXBwIGluaXRpYXRlZCByZXF1ZXN0Iik7XG4nCisgICAgJyAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7XG4nCisgICAgJyAgICAgfX1cbicKKyAgICAnICAgIGNvbnNvbGUubG9n
KCJQQVNTIHN1Y2Nlc3NmdWxseSBsb2FkZWQgb25seSBhcHAgaW5pdGlhdGVkIHJlcXVlc3RzIik7
XG4nCisgICAgJyAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTtcbicKKyAgICAnfX1cbicKKyAg
ICAnPC9zY3JpcHQ+XG4nLmZvcm1hdChyZWZlcmVyPXJlZmVyZXIpCispCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9yZXNvdXJjZXMvcmVzb3Vy
Y2Utd2l0aC1hdXRoLnB5IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBv
cnQvcmVzb3VyY2VzL3Jlc291cmNlLXdpdGgtYXV0aC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQpp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YWZiNzhkODFj
NmYzYzlkYTQ3OWQyOGJlMjQ2YWUxNWJjZDA0ZGRlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvcmVzb3VyY2VzL3Jlc291cmNlLXdp
dGgtYXV0aC5weQpAQCAtMCwwICsxLDI5IEBACisjIS91c3IvYmluL2VudiBweXRob24zCisKK2lt
cG9ydCBiYXNlNjQKK2ltcG9ydCBvcworaW1wb3J0IHN5cworCitjcmVkZW50aWFscyA9IGJhc2U2
NC5iNjRkZWNvZGUob3MuZW52aXJvbi5nZXQoJ0hUVFBfQVVUSE9SSVpBVElPTicsICcgT2c9PScp
LnNwbGl0KCcgJylbMV0pLmRlY29kZSgpLnNwbGl0KCc6JykKK3VzZXJuYW1lID0gY3JlZGVudGlh
bHNbMF0KK3Bhc3N3b3JkID0gJzonLmpvaW4oY3JlZGVudGlhbHNbMTpdKQorCitleHBlY3RlZFVz
ZXJuYW1lID0gJ3Rlc3RVc2VybmFtZScKK2V4cGVjdGVkUGFzc3dvcmQgPSAndGVzdFBhc3N3b3Jk
JworcmVhbG0gPSBvcy5lbnZpcm9uLmdldCgnUkVRVUVTVF9VUkknLCAnJykKKworc3lzLnN0ZG91
dC53cml0ZSgKKyAgICAnQ29udGVudC1UeXBlOiB0ZXh0L2phdmFzY3JpcHRcclxuJworICAgICdD
YWNoZS1Db250cm9sOiBtYXgtYWdlPTBcclxuJworICAgICdFdGFnOiAxMjM0NTY3ODlcclxuJwor
KQorCitpZiB1c2VybmFtZSAhPSBleHBlY3RlZFVzZXJuYW1lIG9yIHBhc3N3b3JkICE9IGV4cGVj
dGVkUGFzc3dvcmQ6CisgICAgc3lzLnN0ZG91dC53cml0ZSgKKyAgICAgICAgZidXV1ctQXV0aGVu
dGljYXRlOiBCYXNpYyByZWFsbT0ie3JlYWxtfSJcclxuJworICAgICAgICAnc3RhdHVzOiA0MDFc
clxuXHJcbicKKyAgICAgICAgZidTZW50IHVzZXJuYW1lOnBhc3N3b3JkIG9mICh7dXNlcm5hbWV9
OntwYXNzd29yZH0pIHdoaWNoIGlzIG5vdCB3aGF0IHdhcyBleHBlY3RlZFxuJworICAgICkKKyAg
ICBzeXMuZXhpdCgwKQorCitzeXMuc3Rkb3V0LndyaXRlKCdcclxubG9hZGVkID0gdHJ1ZTtcbicp
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZh
Y3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLWxvYWQtdXJsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRp
b24tbG9hZC11cmwtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
Nzk4MWYxZTA4NGIwY2UyNTdhZjZmM2U1YTYwZDFmNWQyNTJlZjJmLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4t
YXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tbG9hZC11cmwtZXhwZWN0
ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1UZXN0IGxvYWRVUkwgcmVxdWVz
dHMgYXJlIHN1Y2Nlc2Z1bGx5IGF0dHJpYnV0ZWQgYXMgYXBwLWJvdW5kLgotUEFTUyBzdWNjZXNz
ZnVsbHkgbG9hZGVkIG9ubHkgYXBwLWJvdW5kIHJlcXVlc3RzCi0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmli
dXRpb24tbG9hZC11cmwuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dz
ZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tbG9hZC11cmwuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggY2NjYmNmM2YyMDExMmYxZTE2ZDQwZWY3OTdlNDhkOTgyNzc1
Y2E0MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJp
YnV0aW9uLWxvYWQtdXJsLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi08IURP
Q1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci0gICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy91
dGlsLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0ic2V0VGltZW91dCgncnVu
VGVzdCgpJywgMCkiPgotPGRpdiBpZD0iZGVzY3JpcHRpb24iPlRlc3QgbG9hZFVSTCByZXF1ZXN0
cyBhcmUgc3VjY2VzZnVsbHkgYXR0cmlidXRlZCBhcyBhcHAtYm91bmQuPC9kaXY+Ci08cHJlIGlk
PSJjb25zb2xlIj48L3ByZT4KLTxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
Ci0gICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotICAgICAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBsb2FkVVJMKCkgewotICAgICAg
ICBkb2N1bWVudC5sb2NhdGlvbi5ocmVmID0gZGVzdGluYXRpb25PcmlnaW4gKyAiL2luLWFwcC1i
cm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLWxvYWQtdXJsLmh0bWwiOwotICAg
IH0KLQotICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7Ci0gICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdjb25zb2xlJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
bWVzc2FnZSArICdcbicpKTsKLSAgICB9Ci0KLSAgICBjb25zdCBkZXN0aW5hdGlvbk9yaWdpbiA9
ICJodHRwOi8vbG9jYWxob3N0OjgwMDAiOwotICAgIGNvbnN0IHN0YXJ0aW5nT3JpZ2luID0gImh0
dHA6Ly8xMjcuMC4wLjE6ODAwMCI7Ci0gICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgICAgICAg
aWYgKGRvY3VtZW50LmxvY2F0aW9uLm9yaWdpbiA9PT0gc3RhcnRpbmdPcmlnaW4pIHsKLSAgICAg
ICAgICAgIGxvYWRVUkwoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHZhciBkaWRM
b2FkQXBwQm91bmRSZXF1ZXN0ID0gdGVzdFJ1bm5lci5kaWRMb2FkQXBwQm91bmRSZXF1ZXN0KCk7
Ci0gICAgICAgICAgICB2YXIgZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdCA9IHRlc3RSdW5uZXIu
ZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdCgpOwotCi0gICAgICAgICAgICBpZiAoZGlkTG9hZE5v
bkFwcEJvdW5kUmVxdWVzdCkgewotICAgICAgICAgICAgICAgIGxvZygiRkFJTCBkaWQgbG9hZCBu
b24gYXBwLWJvdW5kIHJlcXVlc3QiKTsKLSAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCFkaWRMb2FkQXBwQm91
bmRSZXF1ZXN0KSB7Ci0gICAgICAgICAgICAgICAgbG9nKCJGQUlMIGRpZCBub3QgbG9hZCBhcHAt
Ym91bmQgcmVxdWVzdCIpOwotICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBsb2coIlBBU1Mgc3VjY2Vzc2Z1bGx5IGxv
YWRlZCBvbmx5IGFwcC1ib3VuZCByZXF1ZXN0cyIpOwotICAgICAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7Ci0gICAgICAgIH0KLSAgICB9Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJp
dmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tcGluZy1sb2FkLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmli
dXRpb24tcGluZy1sb2FkLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggOGRiNzFhYmY3ZGRjODkwOWJkNDNiZDQyNDhlYWFmYTNjMmU4MjliZC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXBpbmctbG9hZC1l
eHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLUNPTlNPTEUgTUVTU0FH
RTogUEFTUyBzdWNjZXNzZnVsbHkgbG9hZGVkIG9ubHkgYXBwLWJvdW5kIHJlcXVlc3RzCi1QaW5n
IHNlbnQgc3VjY2Vzc2Z1bGx5Ci1DT05URU5UX1RZUEU6IHRleHQvcGluZwotSFRUUF9IT1NUOiAx
MjcuMC4wLjE6ODAwMAotSFRUUF9QSU5HX0ZST006IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbi1h
cHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1waW5nLWxvYWQuaHRtbAot
SFRUUF9QSU5HX1RPOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbmF2aWdhdGlvbi9yZXNvdXJjZXMv
Y2hlY2stcGluZy1hcHAtYm91bmQtZGF0YS5weQotUkVRVUVTVF9NRVRIT0Q6IFBPU1QKLVJFUVVF
U1RfVVJJOiAvbmF2aWdhdGlvbi9yZXNvdXJjZXMvc2F2ZS1waW5nLnB5CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0
dHJpYnV0aW9uLXBpbmctbG9hZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAt
YnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1waW5nLWxvYWQuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTBiYjEwNjdjN2RhOGIxNTBlOWIwMGM5MWI4ZTUy
NTgwNGQ1MmQ5Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5k
LWF0dHJpYnV0aW9uLXBpbmctbG9hZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL25hdmln
YXRpb24vcGluZy1hdHRyaWJ1dGUvcmVzb3VyY2VzL3V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5pbnRlcm5hbHMpIHsKLSAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NT
aG91bGREb3duZ3JhZGVSZWZlcnJlcihmYWxzZSwgZnVuY3Rpb24gKCkgeyB9KTsKLSAgICBpbnRl
cm5hbHMuc2V0dGluZ3Muc2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKHRydWUpOwotICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotfQotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICBj
bGlja0VsZW1lbnQoZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiaW1nIikpOwotfQotCi13aW5kb3cu
b25sb2FkID0gZnVuY3Rpb24gKCkKLXsKLSAgICBjbGVhckxhc3RQaW5nUmVzdWx0QW5kUnVuVGVz
dCh0ZXN0KTsKLX0KLTwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci0gICAgPGltZyBzcmM9Im5v
bi1leGlzdGVudC1pbWFnZS5qcGciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4IiB1c2VtYXA9IiNp
bWFnZW1hcCI+Ci0gICAgPG1hcCBuYW1lPSJpbWFnZW1hcCI+Ci0gICAgICAgIDxhcmVhIHNoYXBl
PSJyZWN0IiBjb29yZHM9IjAsMCwxMjgsMTI4IiBocmVmPSIuLi9uYXZpZ2F0aW9uL3Jlc291cmNl
cy9jaGVjay1waW5nLWFwcC1ib3VuZC1kYXRhLnB5IiBwaW5nPSIuLi9uYXZpZ2F0aW9uL3Jlc291
cmNlcy9zYXZlLXBpbmcucHkiPgotICAgIDwvbWFwPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1i
b3VuZC1hdHRyaWJ1dGlvbi1wb3N0LXJlcXVlc3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1w
b3N0LXJlcXVlc3QtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1
OGI1ZTc5ODE1YzRkNTc4OTA5NTYyNWZlMDUzZjNiODFiNmRkMWQwLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4t
YXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tcG9zdC1yZXF1ZXN0LWV4
cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdF
OiBQQVNTIHN1Y2Nlc3NmdWxseSBsb2FkZWQgb25seSBhcHAtYm91bmQgcmVxdWVzdHMKLVRlc3Rz
IGFwcCBib3VuZCByZXF1ZXN0cyBnZXQgbWFya2VkIGZvciBQT1NUIHJlcXVlc3RzLgotCi0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9h
cHAtYm91bmQtYXR0cmlidXRpb24tcG9zdC1yZXF1ZXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXBvc3Qt
cmVxdWVzdC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzcyM2ZkM2Y0Y2Jl
NWNhMzM5ODk3NjU5NzA4ZThjY2YxNGZhMzAzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXIt
cHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tcG9zdC1yZXF1ZXN0Lmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSwyMiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHA+VGVzdHMgYXBwIGJv
dW5kIHJlcXVlc3RzIGdldCBtYXJrZWQgZm9yIFBPU1QgcmVxdWVzdHMuPC9wPgotPGZvcm0gaWQ9
InRlc3RGb3JtIiBhY3Rpb249InJlc291cmNlcy9wb3N0LnB5IiB0YXJnZXQ9Il9ibGFuayIgcmVs
PSJub3JlZmVycmVyIiBtZXRob2Q9InBvc3QiPgotPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9
IlRlc3QiPjwvaW5wdXQ+Ci08Zm9ybT4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICB0ZXN0UnVubmVyLnNldENh
bk9wZW5XaW5kb3dzKHRydWUpOwotfQotCi1kb2N1bWVudC5mb3Jtc1swXS5zdWJtaXQoKTsKLQot
PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXByZWZs
aWdodC1hc3luYy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1i
cm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXByZWZsaWdodC1hc3luYy1leHBl
Y3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1ODNlZjA3NWYxNzQwMmY2
MjAyYmY2MzU5MDU2OWEyM2VlODVhYzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2
YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1wcmVmbGlnaHQtYXN5bmMtZXhwZWN0ZWQudHh0Cisr
KyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1DT05TT0xFIE1FU1NBR0U6IFByZWZsaWdodCBy
ZXNwb25zZSBpcyBub3Qgc3VjY2Vzc2Z1bAotQ09OU09MRSBNRVNTQUdFOiBYTUxIdHRwUmVxdWVz
dCBjYW5ub3QgbG9hZCBodHRwOi8vbG9jYWxob3N0OjgwMDAveG1saHR0cHJlcXVlc3QvcmVzb3Vy
Y2VzL3N0YXR1cy00MDQtd2l0aG91dC1ib2R5LnB5IGR1ZSB0byBhY2Nlc3MgY29udHJvbCBjaGVj
a3MuCi1UZXN0cyBhcHAgYm91bmQgcmVxdWVzdHMgZ2V0IG1hcmtlZCBmb3IgYXN5bmMgcHJlZmxp
Z2h0cwotCi1QQVNTIHN1Y2Nlc3NmdWxseSBsb2FkZWQgb25seSBhcHAtYm91bmQgcmVxdWVzdHMK
LQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2
YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1wcmVmbGlnaHQtYXN5bmMuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRp
b24tcHJlZmxpZ2h0LWFzeW5jLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVl
NDgzZTM4YzQ0NWM2Y2VkOGIxMWY1ZjY1ZmYxNjU2M2FmNGM1MGMuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1h
cHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1wcmVmbGlnaHQtYXN5bmMu
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLTxwPlRlc3RzIGFwcCBib3VuZCBy
ZXF1ZXN0cyBnZXQgbWFya2VkIGZvciBhc3luYyBwcmVmbGlnaHRzPC9wPgotCi08cHJlIGlkPSJj
b25zb2xlIj48L3ByZT4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
LX0KLQotZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCi17Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2NvbnNvbGUnKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdl
ICsgJ1xuJykpOwotfQotCi12YXIgcHJlZmxpZ2h0TGlua0RvbWFpbiA9ICJsb2NhbGhvc3QiOwot
dmFyIGNvbnRleHRIb3N0ID0gIjEyNy4wLjAuMSI7Ci12YXIgdXJsID0gImh0dHA6Ly9sb2NhbGhv
c3Q6ODAwMC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvc3RhdHVzLTQwNC13aXRob3V0LWJvZHku
cHkiCi0KLWZ1bmN0aW9uIHJ1blRlc3QoKQotewotICAgIHZhciByZXEgPSBuZXcgWE1MSHR0cFJl
cXVlc3QoKTsKLSAgICByZXEub3BlbigiR0VUIiwgdXJsLCB0cnVlKTsKLSAgICByZXEuc2V0UmVx
dWVzdEhlYWRlcigieC13ZWJraXQiLCAiZm9vIik7Ci0KLSAgICByZXEub25lcnJvciA9IGZ1bmN0
aW9uKCkgewotICAgICAgICB2YXIgZGlkTG9hZEFwcEJvdW5kUmVxdWVzdCA9IHRlc3RSdW5uZXIu
ZGlkTG9hZEFwcEJvdW5kUmVxdWVzdCgpOwotICAgICAgICB2YXIgZGlkTG9hZE5vbkFwcEJvdW5k
UmVxdWVzdCA9IHRlc3RSdW5uZXIuZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdCgpOwotCi0gICAg
ICAgIGlmIChkaWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0KSB7Ci0gICAgICAgICAgICBsb2coIkZB
SUwgZGlkIGxvYWQgbm9uIGFwcC1ib3VuZCByZXF1ZXN0Iik7Ci0gICAgICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghZGlkTG9hZEFwcEJv
dW5kUmVxdWVzdCkgewotICAgICAgICAgICAgbG9nKCJGQUlMIGRpZCBub3QgbG9hZCBhcHAtYm91
bmQgcmVxdWVzdCIpOwotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBsb2coIlBBU1Mgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBvbmx5IGFwcC1i
b3VuZCByZXF1ZXN0cyIpOwotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9
Ci0gICAgcmVxLnNlbmQobnVsbCk7Ci19Ci0KLXJ1blRlc3QoKTsKLTwvc2NyaXB0PgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1i
b3VuZC1hdHRyaWJ1dGlvbi1wcmVmbGlnaHQtc3luYy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9u
LXByZWZsaWdodC1zeW5jLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZGVlMDQ1M2I3N2VjNjU3YWFlODQ0Njg0ZjQzZTJkMjhjZjZkMjVhZi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXByZWZsaWdodC1z
eW5jLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotQ09OU09MRSBN
RVNTQUdFOiBQcmVmbGlnaHQgcmVzcG9uc2UgaXMgbm90IHN1Y2Nlc3NmdWwKLUNPTlNPTEUgTUVT
U0FHRTogWE1MSHR0cFJlcXVlc3QgY2Fubm90IGxvYWQgaHR0cDovL2xvY2FsaG9zdDo4MDAwL3ht
bGh0dHByZXF1ZXN0L3Jlc291cmNlcy9zdGF0dXMtNDA0LXdpdGhvdXQtYm9keS5weSBkdWUgdG8g
YWNjZXNzIGNvbnRyb2wgY2hlY2tzLgotVGVzdHMgYXBwIGJvdW5kIHJlcXVlc3RzIGdldCBtYXJr
ZWQgZm9yIHN5bmMgcHJlZmxpZ2h0cwotCi1QQVNTOiBOZXR3b3JrRXJyb3I6ICBBIG5ldHdvcmsg
ZXJyb3Igb2NjdXJyZWQuCi1QQVNTIHN1Y2Nlc3NmdWxseSBsb2FkZWQgb25seSBhcHAtYm91bmQg
cmVxdWVzdHMKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJv
d3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1wcmVmbGlnaHQtc3luYy5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1h
dHRyaWJ1dGlvbi1wcmVmbGlnaHQtc3luYy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA2YzBmMDhkNTJmZjc4ZmM1OTUxYjMzZWUxMDcwYzAzZDIyNzY2MTc5Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tcHJlZmxpZ2h0
LXN5bmMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLTxwPlRlc3RzIGFwcCBi
b3VuZCByZXF1ZXN0cyBnZXQgbWFya2VkIGZvciBzeW5jIHByZWZsaWdodHM8L3A+Ci0KLTxwcmUg
aWQ9ImNvbnNvbGUiPjwvcHJlPgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewot
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOwotfQotCi1mdW5jdGlvbiBsb2cobWVzc2FnZSkKLXsKLSAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnY29uc29sZScpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1l
c3NhZ2UgKyAnXG4nKSk7Ci19Ci0KLXZhciBwcmVmbGlnaHRMaW5rRG9tYWluID0gImxvY2FsaG9z
dCI7Ci12YXIgY29udGV4dEhvc3QgPSAiMTI3LjAuMC4xIjsKLXZhciB1cmwgPSAiaHR0cDovL2xv
Y2FsaG9zdDo4MDAwL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9zdGF0dXMtNDA0LXdpdGhvdXQt
Ym9keS5weSIKLQotZnVuY3Rpb24gcnVuVGVzdCgpCi17Ci0gICAgdmFyIHJlcSA9IG5ldyBYTUxI
dHRwUmVxdWVzdCgpOwotICAgIHJlcS5vcGVuKCJHRVQiLCB1cmwsIGZhbHNlKTsKLSAgICByZXEu
c2V0UmVxdWVzdEhlYWRlcigieC13ZWJraXQiLCAiZm9vIik7Ci0KLSAgICB0cnkgewotICAgICAg
ICByZXEuc2VuZChudWxsKTsKLSAgICAgICAgbG9nKCJQQVNTOiAiICsgcmVxLnJlc3BvbnNlVGV4
dCk7Ci0gICAgfSBjYXRjaCAoZXgpIHsKLSAgICAgICAgbG9nKCJQQVNTOiAiICsgZXgpOwotICAg
ICAgICB2YXIgZGlkTG9hZEFwcEJvdW5kUmVxdWVzdCA9IHRlc3RSdW5uZXIuZGlkTG9hZEFwcEJv
dW5kUmVxdWVzdCgpOwotICAgICAgICB2YXIgZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdCA9IHRl
c3RSdW5uZXIuZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdCgpOwotCi0gICAgICAgIGlmIChkaWRM
b2FkTm9uQXBwQm91bmRSZXF1ZXN0KSB7Ci0gICAgICAgICAgICBsb2coIkZBSUwgZGlkIGxvYWQg
bm9uIGFwcC1ib3VuZCByZXF1ZXN0Iik7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghZGlkTG9hZEFwcEJvdW5kUmVxdWVzdCkg
ewotICAgICAgICAgICAgbG9nKCJGQUlMIGRpZCBub3QgbG9hZCBhcHAtYm91bmQgcmVxdWVzdCIp
OwotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBsb2coIlBBU1Mgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBvbmx5IGFwcC1ib3VuZCByZXF1ZXN0
cyIpOwotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9Ci19Ci0KLXJ1blRl
c3QoKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1h
cHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1zcGVjdWxhdGl2ZS1yZXZh
bGlkYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJv
d3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1zcGVjdWxhdGl2ZS1yZXZhbGlkYXRp
b24tZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MmI0ZDRhNTEy
YWJjZWM1ZGJiOGVhOWI2OTQ2ODNlODNhZjJiZDZkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dz
ZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tc3BlY3VsYXRpdmUtcmV2YWxpZGF0aW9u
LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLTEyNy4wLjAuMTo4
MDAwIC0gZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIC0gUHJvdGVjdGlvblNwYWNl
QXV0aGVudGljYXRpb25TY2hlbWVIVFRQQmFzaWMgLSBSZXNwb25kaW5nIHdpdGggdGVzdFVzZXJu
YW1lOnRlc3RQYXNzd29yZAotMTI3LjAuMC4xOjgwMDAgLSBkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UgLSBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZUhUVFBCYXNp
YyAtIFNpbXVsYXRpbmcgY2FuY2VsbGVkIGF1dGhlbnRpY2F0aW9uIHNoZWV0Ci1UZXN0cyBzcGVj
dWxhdGl2ZSByZXZhbGlkYXRpb24gb2YgYXV0aGVudGljYXRlZCByZXNvdXJjZXMuCi0KLU9uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1QQVNTIHhoci5zdGF0dXMgaXMgNDAxCi1QQVNTIFN1
Y2Nlc3NmdWx5IGxvYWRlZC4KLVBBU1Mgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBvbmx5IGFwcC1ib3Vu
ZCByZXF1ZXN0cwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBM
RVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXIt
cHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tc3BlY3VsYXRpdmUtcmV2YWxpZGF0aW9uLmh0
bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJv
dW5kLWF0dHJpYnV0aW9uLXNwZWN1bGF0aXZlLXJldmFsaWRhdGlvbi5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA4YzA3NmI1ZWU2ZWNmNDQ0MGJjYmY2MDgxMGI5ZjQ3MTcxOGMx
NmFhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmli
dXRpb24tc3BlY3VsYXRpdmUtcmV2YWxpZGF0aW9uLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw3
MiArMCwwIEBACi08c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1kZXNjcmlwdGlvbigiVGVzdHMgc3BlY3VsYXRpdmUgcmV2
YWxpZGF0aW9uIG9mIGF1dGhlbnRpY2F0ZWQgcmVzb3VyY2VzLiIpOwotanNUZXN0SXNBc3luYyA9
IHRydWU7Ci0KLXRlc3RSdW5uZXIuc2V0SGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlcyh0
cnVlKTsKLXRlc3RSdW5uZXIuc2V0QXV0aGVudGljYXRpb25Vc2VybmFtZSgidGVzdFVzZXJuYW1l
Iik7Ci10ZXN0UnVubmVyLnNldEF1dGhlbnRpY2F0aW9uUGFzc3dvcmQoInRlc3RQYXNzd29yZCIp
OwotCi1zdGF0ZSA9ICJ3YXJtdXAiOwotCi1mdW5jdGlvbiBjbGVhckNyZWRlbnRpYWxTdG9yYWdl
KCkKLXsKLSAgICB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKLSAgICB4aHIub3BlbigiR0VU
IiwgInJlc291cmNlcy9yZXNvdXJjZS13aXRoLWF1dGgucHk/b3RoZXIiLCBmYWxzZSwgImJhZFVz
ZXJuYW1lIiwgImJhZFBhc3N3b3JkIik7Ci0gICAgeGhyLnNlbmQoKTsKLSAgICBzaG91bGRCZSgi
eGhyLnN0YXR1cyIsICI0MDEiKTsKLX0KLQotZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCi17Ci0gICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZShtZXNzYWdlICsgJ1xuJykpOwotfQotCi1mdW5jdGlvbiBmcmFtZUxvYWRl
ZCgpCi17Ci0gICAgaWYgKHN0YXRlID09ICJ3YXJtdXAiKSB7Ci0gICAgICAgIC8vIE5hdmlnYXRl
IGZyYW1lIHRvICdhYm91dDpibGFuaycgdG8gZmx1c2ggdG8gc3VicmVzb3VyY2UgbG9hZHMgbWV0
YWRhdGEgdG8gZGlzay4KLSAgICAgICAgc3RhdGUgPSAiZmx1c2hpbmdNZXRhZGF0YSI7Ci0gICAg
ICAgIHRlc3RSdW5uZXIuc2V0SGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlcyhmYWxzZSk7
Ci0gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0RnJhbWUiKS5zcmMgPSAiYWJv
dXQ6YmxhbmsiOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChzdGF0ZSA9PSAiZmx1
c2hpbmdNZXRhZGF0YSIpIHsKLSAgICAgICAgY2xlYXJDcmVkZW50aWFsU3RvcmFnZSgpOwotCi0g
ICAgICAgIGludGVybmFscy5jbGVhck1lbW9yeUNhY2hlKCk7Ci0gICAgICAgIHRlc3RSdW5uZXIu
c2V0SGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlcyhmYWxzZSk7Ci0KLSAgICAgICAgLy8g
TmF2aWdhdGUgZnJhbWUgdG8gaXRzIG9yaWdpbmFsIGxvY2F0aW9uIGFnYWluLiBUaGlzIHRpbWUg
aXQgc2hvdWxkIHNwZWN1bGF0aXZlbHkKLSAgICAgICAgLy8gdmFsaWRhdGUgc3VicmVzb3VyY2Vz
IGFzIHdlIGhhdmUgc3VicmVzb3VyY2UgbG9hZHMgbWV0YWRhdGEgaW4gdGhlIGRpc2sgY2FjaGUu
Ci0gICAgICAgIHN0YXRlID0gInNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uIjsKLSAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RGcmFtZSIpLnNyYyA9ICJyZXNvdXJjZXMvZnJhbWUt
d2l0aC1hdXRoZW50aWNhdGVkLXJlc291cmNlLnB5IjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBpZiAoc3RhdGUgPT0gInNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uIikgewotICAgICAgICB0
ZXN0UGFzc2VkKCJTdWNjZXNzZnVseSBsb2FkZWQuIik7Ci0gICAgICAgIHZhciBkaWRMb2FkQXBw
Qm91bmRSZXF1ZXN0ID0gdGVzdFJ1bm5lci5kaWRMb2FkQXBwQm91bmRSZXF1ZXN0KCk7Ci0gICAg
ICAgIHZhciBkaWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0ID0gdGVzdFJ1bm5lci5kaWRMb2FkTm9u
QXBwQm91bmRSZXF1ZXN0KCk7Ci0KLSAgICAgICAgaWYgKGRpZExvYWROb25BcHBCb3VuZFJlcXVl
c3QpIHsKLSAgICAgICAgICAgIGxvZygiRkFJTCBkaWQgbG9hZCBub24gYXBwLWJvdW5kIHJlcXVl
c3QiKTsKLSAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFkaWRMb2FkQXBwQm91bmRSZXF1ZXN0KSB7Ci0gICAg
ICAgICAgICBsb2coIkZBSUwgZGlkIG5vdCBsb2FkIGFwcC1ib3VuZCByZXF1ZXN0Iik7Ci0gICAg
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
Ci0gICAgICAgIGxvZygiUEFTUyBzdWNjZXNzZnVsbHkgbG9hZGVkIG9ubHkgYXBwLWJvdW5kIHJl
cXVlc3RzIik7Ci0KLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci19Ci0KLTwvc2NyaXB0PgotPGlmcmFtZSBpZD0idGVzdEZyYW1lIiBzcmM9InJlc291cmNl
cy9mcmFtZS13aXRoLWF1dGhlbnRpY2F0ZWQtcmVzb3VyY2UucHkiIG9ubG9hZD0iZnJhbWVMb2Fk
ZWQoKSI+PC9pZnJhbWU+Ci08c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
LWFwcC1icm93c2VyLXByaXZhY3kvY29udGV4dC1zdHJpbmctZm9yLXN1YmZyYW1lLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9jb250
ZXh0LXN0cmluZy1mb3Itc3ViZnJhbWUtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA5YTM2OGY2NmI1NGUxNzM5OTE3MmZhYzM3Mzc3NjY3N2I3NzQ2YmViLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9jb250ZXh0LXN0cmluZy1mb3Itc3ViZnJh
bWUtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotVGVzdHMgdGhh
dCB0aGUgYXBwLWJvdW5kLXJlcXVlc3QgY29udGV4dCBzdHJpbmcgZ2V0cyBwcm9wZXJseSBzZXQg
Zm9yIGFuIGlmcmFtZQotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotUEFTUyBDb250
ZXh0IHN0cmluZyBmb3Igc3ViIGZyYW1lIGNvcnJlY3RseSBjYXB0dXJlZC4KLVBBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvY29udGV4dC1zdHJpbmct
Zm9yLXN1YmZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2Vy
LXByaXZhY3kvY29udGV4dC1zdHJpbmctZm9yLXN1YmZyYW1lLmh0bWwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDVlM2U5YjZiMGI1NTI5NjJhYmRmZjY0ZTcyMTAyYmIyMjI4NmU4ZDAu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2NvbnRleHQtc3RyaW5nLWZvci1z
dWJmcmFtZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotPCFET0NUWVBFIGh0
bWw+Ci08aHRtbD4KLTxoZWFkPgotICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMv
anMtdGVzdC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91dGls
LmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLSAgICBkZXNjcmlwdGlv
bigiVGVzdHMgdGhhdCB0aGUgYXBwLWJvdW5kLXJlcXVlc3QgY29udGV4dCBzdHJpbmcgZ2V0cyBw
cm9wZXJseSBzZXQgZm9yIGFuIGlmcmFtZSIpOwotICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOwot
Ci0gICAgY29uc3Qgc3ViRnJhbWVIb3N0ID0gImxvY2FsaG9zdCI7Ci0gICAgY29uc3QgY29udGV4
dEhvc3QgPSAiMTI3LjAuMC4xIjsKLSAgICBmdW5jdGlvbiBhc2tGb3JDb250ZXh0U3RyaW5nRm9y
U3ViRnJhbWUoKSB7Ci0gICAgICAgIHRlc3RSdW5uZXIuYXBwQm91bmRSZXF1ZXN0Q29udGV4dERh
dGFGb3JEb21haW4oc3ViRnJhbWVIb3N0LCBmdW5jdGlvbiAoY29udGV4dERhdGEpIHsKLSAgICAg
ICAgICAgIGlmIChjb250ZXh0RGF0YSA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgYXNrRm9y
Q29udGV4dFN0cmluZ0ZvclN1YkZyYW1lKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoY29udGV4dERhdGEgPT0gY29udGV4dEhvc3Qp
Ci0gICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiQ29udGV4dCBzdHJpbmcgZm9yIHN1YiBmcmFt
ZSBjb3JyZWN0bHkgY2FwdHVyZWQuIik7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiQ29udGV4dCBzdHJpbmcgZm9yIHN1YiBmcmFtZSBOT1QgY29ycmVjdGx5
IGNhcHR1cmVkLiIpOwotCi0gICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICAgICAgfSk7
Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gb3BlbklmcmFtZSh1cmwsIG9uTG9hZEhhbmRsZXIpIHsK
LSAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIp
OwotICAgICAgICBlbGVtZW50LnNyYyA9IHVybDsKLSAgICAgICAgaWYgKG9uTG9hZEhhbmRsZXIp
IHsKLSAgICAgICAgICAgIGVsZW1lbnQub25sb2FkID0gb25Mb2FkSGFuZGxlcjsKLSAgICAgICAg
fQotICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZW1lbnQpOwotICAgIH0KLQot
ICAgIG9wZW5JZnJhbWUoImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9pbi1hcHAtYnJvd3Nlci1wcml2
YWN5L3Jlc291cmNlcy9iYXNpYy1pZnJhbWUuaHRtbCZkdW1teT0iICsgTWF0aC5yYW5kb20oKSwg
YXNrRm9yQ29udGV4dFN0cmluZ0ZvclN1YkZyYW1lKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1w
cml2YWN5L2NvbnRleHQtc3RyaW5nLXByZWNvbm5lY3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2NvbnRleHQtc3RyaW5nLXByZWNv
bm5lY3QtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YjRiNTZm
YTAxZmYwNjAzZmY2OTkxN2MzODBkYzA2OWI5MzA2ZGM2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJy
b3dzZXItcHJpdmFjeS9jb250ZXh0LXN0cmluZy1wcmVjb25uZWN0LWV4cGVjdGVkLnR4dAorKysg
L2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLUNPTlNPTEUgTUVTU0FHRTogU3VjY2Vzc2Z1bGx5
IHByZWNvbm5lY3RlZCB0byBodHRwOi8vbG9jYWxob3N0OjgwMDAvCi1UZXN0cyB0aGF0IHByZWNv
bm5lY3QgdGFza3MgZ2V0IG1hcmtlZCB3aXRoIHRoZSBwcm9wZXIgY29udGV4dCBzdHJpbmcuCi0K
LU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1QQVNTIENvbnRleHQgc3RyaW5nIGZvciBw
cmVjb25uZWN0IGNvcnJlY3RseSBjYXB0dXJlZC4KLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvY29udGV4dC1zdHJpbmctcHJlY29ubmVjdC5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2NvbnRleHQt
c3RyaW5nLXByZWNvbm5lY3QuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzFi
YmMzMmJmMWM4NzJlNGNmZWYzZmZhNTY2Zjk0YzE4NTcyMDI2ZC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFw
cC1icm93c2VyLXByaXZhY3kvY29udGV4dC1zdHJpbmctcHJlY29ubmVjdC5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsNDAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgot
PHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KLTwv
aGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHByZWNvbm5l
Y3QgdGFza3MgZ2V0IG1hcmtlZCB3aXRoIHRoZSBwcm9wZXIgY29udGV4dCBzdHJpbmcuIik7Ci1q
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLQotdmFyIHByZWNvbm5lY3RMaW5rRG9tYWluID0gImxvY2Fs
aG9zdCI7Ci12YXIgY29udGV4dEhvc3QgPSAiMTI3LjAuMC4xIjsKLQotZnVuY3Rpb24gYXNrRm9y
Q29udGV4dFN0cmluZ0ZvclByZWNvbm5lY3QoKSB7Ci0gICAgdGVzdFJ1bm5lci5hcHBCb3VuZFJl
cXVlc3RDb250ZXh0RGF0YUZvckRvbWFpbihwcmVjb25uZWN0TGlua0RvbWFpbiwgZnVuY3Rpb24g
KGNvbnRleHREYXRhKSB7Ci0gICAgICAgIGlmIChjb250ZXh0RGF0YSA9PSBudWxsKSB7Ci0gICAg
ICAgICAgICBhc2tGb3JDb250ZXh0U3RyaW5nRm9yUHJlY29ubmVjdCgpOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGNvbnRleHREYXRhID09IGNvbnRleHRI
b3N0KQotICAgICAgICAgICAgdGVzdFBhc3NlZCgiQ29udGV4dCBzdHJpbmcgZm9yIHByZWNvbm5l
Y3QgY29ycmVjdGx5IGNhcHR1cmVkLiIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0ZXN0
RmFpbGVkKCJDb250ZXh0IHN0cmluZyBmb3IgcHJlY29ubmVjdCBOT1QgY29ycmVjdGx5IGNhcHR1
cmVkLiIpOwotCi0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0pOwotfQotCi1pbnRlcm5h
bHMuc2V0Q29uc29sZU1lc3NhZ2VMaXN0ZW5lcihmdW5jdGlvbigpIHsKLSAgICBhc2tGb3JDb250
ZXh0U3RyaW5nRm9yUHJlY29ubmVjdCgpOwotfSk7Ci0KLWNvbnN0IHRlc3RMaW5rID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgibGluayIpOwotdGVzdExpbmsucmVsID0gInByZWNvbm5lY3QiOwot
dGVzdExpbmsuaHJlZiA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAiOwotZG9jdW1lbnQuaGVhZC5h
cHBlbmRDaGlsZCh0ZXN0TGluayk7Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9jb250
ZXh0LXN0cmluZy1wcmVmbGlnaHQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2NvbnRleHQtc3RyaW5nLXByZWZsaWdodC1leHBlY3Rl
ZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwNzk2MTUwYTk2YjhiMWQ3MDdl
ZmE3ZTQwMzJlNDVlZDcwM2M5NWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5
L2NvbnRleHQtc3RyaW5nLXByZWZsaWdodC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSw5ICswLDAgQEAKLUNPTlNPTEUgTUVTU0FHRTogUHJlZmxpZ2h0IHJlc3BvbnNlIGlzIG5vdCBz
dWNjZXNzZnVsCi1DT05TT0xFIE1FU1NBR0U6IFhNTEh0dHBSZXF1ZXN0IGNhbm5vdCBsb2FkIGh0
dHA6Ly9sb2NhbGhvc3Q6ODAwMC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvc3RhdHVzLTQwNC13
aXRob3V0LWJvZHkucHkgZHVlIHRvIGFjY2VzcyBjb250cm9sIGNoZWNrcy4KLUNPTlNPTEUgTUVT
U0FHRTogUHJlZmxpZ2h0IHJlc3BvbnNlIGlzIG5vdCBzdWNjZXNzZnVsCi1DT05TT0xFIE1FU1NB
R0U6IFhNTEh0dHBSZXF1ZXN0IGNhbm5vdCBsb2FkIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC94bWxo
dHRwcmVxdWVzdC9yZXNvdXJjZXMvc3RhdHVzLTQwNC13aXRob3V0LWJvZHkucHkgZHVlIHRvIGFj
Y2VzcyBjb250cm9sIGNoZWNrcy4KLVRlc3RzIHRoYXQgbm90IHN1Y2Nlc3NmdWwgcHJlZmxpZ2h0
IHJlc3BvbnNlcyBtYWtlIHByZWZsaWdodCBmYWlsaW5nCi0KLVBBU1M6IE5ldHdvcmtFcnJvcjog
IEEgbmV0d29yayBlcnJvciBvY2N1cnJlZC4KLVBBU1MgQ29udGV4dCBzdHJpbmcgZm9yIENPUlMg
cHJlZmxpZ2h0IGNvcnJlY3RseSBjYXB0dXJlZC4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2NvbnRleHQtc3RyaW5nLXByZWZsaWdo
dC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2Nv
bnRleHQtc3RyaW5nLXByZWZsaWdodC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA1N2EwNWQxNDc1OWM5NDFmOGQzM2ZmNzUwM2I4ZDcwMGE5MDRmMGM5Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW4tYXBwLWJyb3dzZXItcHJpdmFjeS9jb250ZXh0LXN0cmluZy1wcmVmbGlnaHQuaHRtbAorKysg
L2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLTxwPlRlc3RzIHRoYXQgbm90IHN1Y2Nlc3NmdWwg
cHJlZmxpZ2h0IHJlc3BvbnNlcyBtYWtlIHByZWZsaWdodCBmYWlsaW5nPC9wPgotCi08cHJlIGlk
PSJjb25zb2xlIj48L3ByZT4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKLX0KLQotZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCi17Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2NvbnNvbGUnKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNz
YWdlICsgJ1xuJykpOwotfQotICAgIAotdmFyIHByZWZsaWdodExpbmtEb21haW4gPSAibG9jYWxo
b3N0IjsKLXZhciBjb250ZXh0SG9zdCA9ICIxMjcuMC4wLjEiOwotdmFyIHVybCA9ICJodHRwOi8v
bG9jYWxob3N0OjgwMDAveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL3N0YXR1cy00MDQtd2l0aG91
dC1ib2R5LnB5IgotCi1mdW5jdGlvbiBhc2tGb3JDb250ZXh0U3RyaW5nRm9yUHJlZmxpZ2h0KCkg
ewotICAgIHRlc3RSdW5uZXIuYXBwQm91bmRSZXF1ZXN0Q29udGV4dERhdGFGb3JEb21haW4ocHJl
ZmxpZ2h0TGlua0RvbWFpbiwgZnVuY3Rpb24gKGNvbnRleHREYXRhKSB7Ci0gICAgICAgIGlmIChj
b250ZXh0RGF0YSA9PSBudWxsKSB7Ci0gICAgICAgICAgICBhc2tGb3JDb250ZXh0U3RyaW5nRm9y
UHJlZmxpZ2h0KCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBp
ZiAoY29udGV4dERhdGEgPT0gY29udGV4dEhvc3QpCi0gICAgICAgICAgICBsb2coIlBBU1MgQ29u
dGV4dCBzdHJpbmcgZm9yIENPUlMgcHJlZmxpZ2h0IGNvcnJlY3RseSBjYXB0dXJlZC4iKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgbG9nKCJGQUlMIENvbnRleHQgc3RyaW5nIGZvciBDT1JT
IHByZWZsaWdodCBOT1QgY29ycmVjdGx5IGNhcHR1cmVkLiIpOwotCi0gICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfQotCi1mdW5jdGlvbiBydW5UZXN0KCkKLXsKLSAg
ICB2YXIgcmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Ci0gICAgcmVxLm9wZW4oIkdFVCIsIHVy
bCwgZmFsc2UpOwotICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKCJ4LXdlYmtpdCIsICJmb28iKTsK
LQotICAgIHRyeSB7Ci0gICAgICAgIHJlcS5zZW5kKG51bGwpOwotICAgICAgICBsb2coIlBBU1M6
ICIgKyByZXEucmVzcG9uc2VUZXh0KTsKLSAgICB9IGNhdGNoIChleCkgewotICAgICAgICBsb2co
IlBBU1M6ICIgKyBleCk7Ci0gICAgfQotCi0gICAgcmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7
Ci0gICAgcmVxLm9wZW4oIkdFVCIsIHVybCwgdHJ1ZSk7Ci0gICAgcmVxLnNldFJlcXVlc3RIZWFk
ZXIoIngtd2Via2l0IiwgImZvbyIpOwotCi0gICAgcmVxLm9ubG9hZCA9IGZ1bmN0aW9uKCkgewot
ICAgICAgICBhc2tGb3JDb250ZXh0U3RyaW5nRm9yUHJlZmxpZ2h0KCk7Ci0gICAgfQotICAgIHJl
cS5vbmVycm9yID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGFza0ZvckNvbnRleHRTdHJpbmdGb3JQ
cmVmbGlnaHQoKTsKLSAgICB9Ci0gICAgcmVxLnNlbmQobnVsbCk7Ci19Ci0KLXJ1blRlc3QoKTsK
LTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJv
d3Nlci1wcml2YWN5L3Jlc291cmNlcy9mcmFtZS13aXRoLWF1dGhlbnRpY2F0ZWQtcmVzb3VyY2Uu
cHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvcmVzb3Vy
Y2VzL2ZyYW1lLXdpdGgtYXV0aGVudGljYXRlZC1yZXNvdXJjZS5weQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA3NTUKaW5kZXggODQ4ZDBmZDFhNmQ2YzA5OWFhZDYxZTAwNDI0MmUyMzg5NTUzZTk0MS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvcmVzb3VyY2VzL2ZyYW1lLXdpdGgt
YXV0aGVudGljYXRlZC1yZXNvdXJjZS5weQorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAK
LSMhL3Vzci9iaW4vZW52IHB5dGhvbjMKLQotaW1wb3J0IHN5cwotCi1zeXMuc3Rkb3V0LndyaXRl
KAotICAgICdDYWNoZS1Db250cm9sOiBtYXgtYWdlPTBcclxuJwotICAgICdFdGFnOiAxMjM0NTY3
ODlcclxuJwotICAgICdDb250ZW50LVR5cGU6IHRleHQvaHRtbFxyXG5cclxuJwotICAgICc8IURP
Q1RZUEUgaHRtbD5cbicKLSAgICAnPGJvZHk+XG4nCi0gICAgJzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZS13aXRoLWF1dGgucHkiPjwvc2NyaXB0PlxuJwotICAgICc8L2JvZHk+XG4nCi0pCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvcmVzb3Vy
Y2VzL3Bvc3QucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZh
Y3kvcmVzb3VyY2VzL3Bvc3QucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDFmY2Jj
M2EyZmIzMjMxMTcyZGI5YjU5YmVjZTY1YzA4YzcyZGQ1YTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAt
YnJvd3Nlci1wcml2YWN5L3Jlc291cmNlcy9wb3N0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjcg
KzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwotCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMK
LQotcmVmZXJlciA9IG9zLmVudmlyb24uZ2V0KCdIVFRQX1JFRkVSRVInLCAnJykKLQotc3lzLnN0
ZG91dC53cml0ZSgKLSAgICAnQ29udGVudC1UeXBlOiB0ZXh0L2h0bWxcclxuXHJcbicKLSAgICAn
PHA+UmVmZXJyZXI6IHtyZWZlcmVyfTwvcD5cbicKLSAgICAnPHNjcmlwdD5cbicKLSAgICAnaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7e1xuJwotICAgICcgICAgdmFyIGRpZExvYWRBcHBCb3VuZFJl
cXVlc3QgPSB0ZXN0UnVubmVyLmRpZExvYWRBcHBCb3VuZFJlcXVlc3QoKTtcbicKLSAgICAnICAg
IHZhciBkaWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0ID0gdGVzdFJ1bm5lci5kaWRMb2FkTm9uQXBw
Qm91bmRSZXF1ZXN0KCk7XG4nCi0gICAgJyAgICBpZiAoZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVz
dCkge3tcbicKLSAgICAnICAgICAgICBjb25zb2xlLmxvZygiRkFJTCBkaWQgbG9hZCBub24gYXBw
LWJvdW5kIHJlcXVlc3QiKTtcbicKLSAgICAnICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTtcbicKLSAgICAnICAgIH19XG4nCi0gICAgJyAgICBpZiAoIWRpZExvYWRBcHBCb3VuZFJlcXVl
c3QpIHt7XG4nCi0gICAgJyAgICAgICAgIGNvbnNvbGUubG9nKCJGQUlMIGRpZCBub3QgbG9hZCBh
cHAtYm91bmQgcmVxdWVzdCIpO1xuJwotICAgICcgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpO1xuJwotICAgICcgICAgIH19XG4nCi0gICAgJyAgICBjb25zb2xlLmxvZygiUEFTUyBzdWNj
ZXNzZnVsbHkgbG9hZGVkIG9ubHkgYXBwLWJvdW5kIHJlcXVlc3RzIik7XG4nCi0gICAgJyAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTtcbicKLSAgICAnfX1cbicKLSAgICAnPC9zY3JpcHQ+XG4n
LmZvcm1hdChyZWZlcmVyPXJlZmVyZXIpCi0pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvcmVzb3VyY2VzL3Jlc291cmNlLXdpdGgtYXV0
aC5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9yZXNv
dXJjZXMvcmVzb3VyY2Utd2l0aC1hdXRoLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRl
eCA3YWZiNzhkODFjNmYzYzlkYTQ3OWQyOGJlMjQ2YWUxNWJjZDA0ZGRlLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW4tYXBwLWJyb3dzZXItcHJpdmFjeS9yZXNvdXJjZXMvcmVzb3VyY2Utd2l0aC1hdXRoLnB5Cisr
KyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwotCi1p
bXBvcnQgYmFzZTY0Ci1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLQotY3JlZGVudGlhbHMgPSBiYXNl
NjQuYjY0ZGVjb2RlKG9zLmVudmlyb24uZ2V0KCdIVFRQX0FVVEhPUklaQVRJT04nLCAnIE9nPT0n
KS5zcGxpdCgnICcpWzFdKS5kZWNvZGUoKS5zcGxpdCgnOicpCi11c2VybmFtZSA9IGNyZWRlbnRp
YWxzWzBdCi1wYXNzd29yZCA9ICc6Jy5qb2luKGNyZWRlbnRpYWxzWzE6XSkKLQotZXhwZWN0ZWRV
c2VybmFtZSA9ICd0ZXN0VXNlcm5hbWUnCi1leHBlY3RlZFBhc3N3b3JkID0gJ3Rlc3RQYXNzd29y
ZCcKLXJlYWxtID0gb3MuZW52aXJvbi5nZXQoJ1JFUVVFU1RfVVJJJywgJycpCi0KLXN5cy5zdGRv
dXQud3JpdGUoCi0gICAgJ0NvbnRlbnQtVHlwZTogdGV4dC9qYXZhc2NyaXB0XHJcbicKLSAgICAn
Q2FjaGUtQ29udHJvbDogbWF4LWFnZT0wXHJcbicKLSAgICAnRXRhZzogMTIzNDU2Nzg5XHJcbicK
LSkKLQotaWYgdXNlcm5hbWUgIT0gZXhwZWN0ZWRVc2VybmFtZSBvciBwYXNzd29yZCAhPSBleHBl
Y3RlZFBhc3N3b3JkOgotICAgIHN5cy5zdGRvdXQud3JpdGUoCi0gICAgICAgIGYnV1dXLUF1dGhl
bnRpY2F0ZTogQmFzaWMgcmVhbG09IntyZWFsbX0iXHJcbicKLSAgICAgICAgJ3N0YXR1czogNDAx
XHJcblxyXG4nCi0gICAgICAgIGYnU2VudCB1c2VybmFtZTpwYXNzd29yZCBvZiAoe3VzZXJuYW1l
fTp7cGFzc3dvcmR9KSB3aGljaCBpcyBub3Qgd2hhdCB3YXMgZXhwZWN0ZWRcbicKLSAgICApCi0g
ICAgc3lzLmV4aXQoMCkKLQotc3lzLnN0ZG91dC53cml0ZSgnXHJcbmxvYWRlZCA9IHRydWU7XG4n
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNl
cy9jaGVjay1waW5nLWFwcC1ib3VuZC1kYXRhLnB5IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9u
YXZpZ2F0aW9uL3Jlc291cmNlcy9jaGVjay1waW5nLWFwcC1ib3VuZC1kYXRhLnB5CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDc1NQppbmRleCA2ZmY1ZGVmMzQwNTMyZjlkZjZhODFmODU0MTA0MDk4ZTkz
M2QzZWQ5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvY2hlY2stcGluZy1hcHAt
Ym91bmQtZGF0YS5weQorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLSMhL3Vzci9iaW4v
ZW52IHB5dGhvbjMKLQotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi1pbXBvcnQgdGltZQotZnJvbSBw
aW5nX2ZpbGVfcGF0aCBpbXBvcnQgcGluZ19maWxlcGF0aAotCi1zeXMuc3Rkb3V0LndyaXRlKCdD
b250ZW50LVR5cGU6IHRleHQvaHRtbFxyXG5cclxuJykKLQotd2hpbGUgbm90IG9zLnBhdGguaXNm
aWxlKHBpbmdfZmlsZXBhdGgpOgotICAgIHRpbWUuc2xlZXAoMC4wMSkKLQotc3lzLnN0ZG91dC53
cml0ZSgKLSAgICAnPGh0bWw+PGJvZHk+XG4nCi0gICAgJ1Bpbmcgc2VudCBzdWNjZXNzZnVsbHkn
Ci0pCi0KLXBpbmdfZmlsZSA9IG9wZW4ocGluZ19maWxlcGF0aCwgJ3InKQotZm9yIGxpbmUgaW4g
cGluZ19maWxlLnJlYWRsaW5lcygpOgotICAgIHN5cy5zdGRvdXQud3JpdGUoJzxicj57fScuZm9y
bWF0KGxpbmUuc3RyaXAoKSkpCi0KLXBpbmdfZmlsZS5jbG9zZSgpCi1pZiBvcy5wYXRoLmlzZmls
ZShwaW5nX2ZpbGVwYXRoKToKLSAgICBvcy5yZW1vdmUocGluZ19maWxlcGF0aCkKLQotc3lzLnN0
ZG91dC53cml0ZSgKLSAgICAnPHNjcmlwdD4nCi0gICAgJ2lmICh3aW5kb3cudGVzdFJ1bm5lcikg
e3tcbicKLSAgICAnICAgIHZhciBkaWRMb2FkQXBwQm91bmRSZXF1ZXN0ID0gdGVzdFJ1bm5lci5k
aWRMb2FkQXBwQm91bmRSZXF1ZXN0KCk7XG4nCi0gICAgJyAgICB2YXIgZGlkTG9hZE5vbkFwcEJv
dW5kUmVxdWVzdCA9IHRlc3RSdW5uZXIuZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdCgpO1xuJwot
ICAgICcgICAgaWYgKGRpZExvYWROb25BcHBCb3VuZFJlcXVlc3QpIHt7XG4nCi0gICAgJyAgICAg
ICAgY29uc29sZS5sb2coIkZBSUwgZGlkIGxvYWQgbm9uIGFwcC1ib3VuZCByZXF1ZXN0Iik7XG4n
Ci0gICAgJyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7XG4nCi0gICAgJyAgICB9fVxu
JwotICAgICcgICAgaWYgKCFkaWRMb2FkQXBwQm91bmRSZXF1ZXN0KSB7e1xuJwotICAgICcgICAg
ICAgICBjb25zb2xlLmxvZygiRkFJTCBkaWQgbm90IGxvYWQgYXBwLWJvdW5kIHJlcXVlc3QiKTtc
bicKLSAgICAnICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTtcbicKLSAgICAnICAgICB9
fVxuJwotICAgICcgICAgY29uc29sZS5sb2coIlBBU1Mgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBvbmx5
IGFwcC1ib3VuZCByZXF1ZXN0cyIpO1xuJwotICAgICcgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7XG4nCi0gICAgJ319XG4nCi0gICAgJzwvc2NyaXB0PicKLSAgICAnPC9ib2R5PjwvaHRtbD4n
Ci0pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3Vy
Y2VzL2NoZWNrLXBpbmctYXBwLWluaXRpYXRlZC1kYXRhLnB5IGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9jaGVjay1waW5nLWFwcC1pbml0aWF0ZWQtZGF0YS5w
eQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yMGYzZDJmMTcxOTI4NDc3ZTRiMTg4ODAzMjAzZWIwZWY3ZWI0NTUwCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291
cmNlcy9jaGVjay1waW5nLWFwcC1pbml0aWF0ZWQtZGF0YS5weQpAQCAtMCwwICsxLDQ0IEBACisj
IS91c3IvYmluL2VudiBweXRob24zCisKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHRp
bWUKK2Zyb20gcGluZ19maWxlX3BhdGggaW1wb3J0IHBpbmdfZmlsZXBhdGgKKworc3lzLnN0ZG91
dC53cml0ZSgnQ29udGVudC1UeXBlOiB0ZXh0L2h0bWxcclxuXHJcbicpCisKK3doaWxlIG5vdCBv
cy5wYXRoLmlzZmlsZShwaW5nX2ZpbGVwYXRoKToKKyAgICB0aW1lLnNsZWVwKDAuMDEpCisKK3N5
cy5zdGRvdXQud3JpdGUoCisgICAgJzxodG1sPjxib2R5PlxuJworICAgICdQaW5nIHNlbnQgc3Vj
Y2Vzc2Z1bGx5JworKQorCitwaW5nX2ZpbGUgPSBvcGVuKHBpbmdfZmlsZXBhdGgsICdyJykKK2Zv
ciBsaW5lIGluIHBpbmdfZmlsZS5yZWFkbGluZXMoKToKKyAgICBzeXMuc3Rkb3V0LndyaXRlKCc8
YnI+e30nLmZvcm1hdChsaW5lLnN0cmlwKCkpKQorCitwaW5nX2ZpbGUuY2xvc2UoKQoraWYgb3Mu
cGF0aC5pc2ZpbGUocGluZ19maWxlcGF0aCk6CisgICAgb3MucmVtb3ZlKHBpbmdfZmlsZXBhdGgp
CisKK3N5cy5zdGRvdXQud3JpdGUoCisgICAgJzxzY3JpcHQ+JworICAgICdpZiAod2luZG93LnRl
c3RSdW5uZXIpIHt7XG4nCisgICAgJyAgICB2YXIgZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3Qg
PSB0ZXN0UnVubmVyLmRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0KCk7XG4nCisgICAgJyAgICB2
YXIgZGlkTG9hZE5vbkFwcEluaXRpYXRlZFJlcXVlc3QgPSB0ZXN0UnVubmVyLmRpZExvYWROb25B
cHBJbml0aWF0ZWRSZXF1ZXN0KCk7XG4nCisgICAgJyAgICBpZiAoZGlkTG9hZE5vbkFwcEluaXRp
YXRlZFJlcXVlc3QpIHt7XG4nCisgICAgJyAgICAgICAgY29uc29sZS5sb2coIkZBSUwgZGlkIGxv
YWQgbm9uIGFwcCBpbml0aWF0ZWQgcmVxdWVzdCIpO1xuJworICAgICcgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpO1xuJworICAgICcgICAgfX1cbicKKyAgICAnICAgIGlmICghZGlkTG9h
ZEFwcEluaXRpYXRlZFJlcXVlc3QpIHt7XG4nCisgICAgJyAgICAgICAgIGNvbnNvbGUubG9nKCJG
QUlMIGRpZCBub3QgbG9hZCBhcHAgaW5pdGlhdGVkIHJlcXVlc3QiKTtcbicKKyAgICAnICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTtcbicKKyAgICAnICAgICB9fVxuJworICAgICcgICAg
Y29uc29sZS5sb2coIlBBU1Mgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBvbmx5IGFwcCBpbml0aWF0ZWQg
cmVxdWVzdHMiKTtcbicKKyAgICAnICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpO1xuJworICAg
ICd9fVxuJworICAgICc8L3NjcmlwdD4nCisgICAgJzwvYm9keT48L2h0bWw+JworKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDA3ZDQzNDBj
N2RkMTdmNThkMzE2MGRmN2U1N2JlM2YyZDJmNDYzMjUuLjcwYjVkMjQ4MGJjM2RhMWZkZTI3Mzli
YjMxNmJhYzNhYjYzNzNiYjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13
azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL1Rl
c3RFeHBlY3RhdGlvbnMKQEAgLTE4MTUsMTYgKzE4MTUsNyBAQCB3ZWJraXQub3JnL2IvMjE0NTk4
IGZhc3Qvc2Nyb2xsaW5nL2lvcy9hdXRvc2Nyb2xsLWlucHV0LXdoZW4tdmVyeS16b29tZWQuaHRt
bCBbCiAKIGh0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS8gWyBQYXNzIF0KIAotIyBT
b21lIEluLUFwcCBCcm93c2VyIFByaXZhY3kgdGVzdHMgcmVseSBvbiBmdW5jdGlvbnMgaW4gV2Vi
S2l0QWRkaXRpb25zLgotaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2NvbnRleHQt
c3RyaW5nLWZvci1zdWJmcmFtZS5odG1sIFsgU2tpcCBdCi1odHRwL3Rlc3RzL2luLWFwcC1icm93
c2VyLXByaXZhY3kvY29udGV4dC1zdHJpbmctcHJlY29ubmVjdC5odG1sIFsgU2tpcCBdCi1odHRw
L3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvY29udGV4dC1zdHJpbmctcHJlZmxpZ2h0Lmh0
bWwgWyBTa2lwIF0KLWh0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQt
YXR0cmlidXRpb24tcHJlZmxpZ2h0LWFzeW5jLmh0bWwgWyBTa2lwIF0KLWh0dHAvdGVzdHMvaW4t
YXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tcHJlZmxpZ2h0LXN5bmMu
aHRtbCBbIFNraXAgXQotaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3Vu
ZC1hdHRyaWJ1dGlvbi1zcGVjdWxhdGl2ZS1yZXZhbGlkYXRpb24uaHRtbCBbIFNraXAgXQotaHR0
cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1sb2Fk
LXVybC5odG1sIFsgU2tpcCBdCi1odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBw
LWJvdW5kLWF0dHJpYnV0aW9uLXBpbmctbG9hZC5odG1sIFsgU2tpcCBdCi1odHRwL3Rlc3RzL2lu
LWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXBvc3QtcmVxdWVzdC5o
dG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC8gWyBQYXNzIF0KIAog
d2Via2l0Lm9yZy9iLzE3NTE5MyBmYXN0L2ltYWdlcy9hc3luYy1pbWFnZS1ib2R5LWJhY2tncm91
bmQtaW1hZ2UuaHRtbCBbIFBhc3MgVGltZW91dCBdCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431509</attachid>
            <date>2021-06-15 18:50:26 -0700</date>
            <delta_ts>2021-06-16 16:35:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227045-20210615185026.patch</filename>
            <type>text/plain</type>
            <size>22511</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4ODc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDc0ZjMwMjk3YWI2OTRmODRmNDVkYmFl
YzQwN2QxODQ0ZmM4NTUwZmEuLmZjZmVjZWMzY2ZiMjgzNTgwZGYyMGM1OThjZWFmNzVlYmNjYjk0
NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDYtMTUgIEthdGUgQ2hlbmV5ICA8a2F0aGVy
aW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgTWlncmF0ZSBBcHAgUHJpdmFjeSBSZXBv
cnQgY29kZSBmcm9tIFdlYktpdEFkZGl0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3MDQ1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDMz
MzI4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
cGRhdGUgY29tcGlsZSBmbGFnIG5hbWluZyB0byBhbGlnbiB3aXRoIHRoZSBBcHAgUHJpdmFjeSBS
ZXBvcnQKKyAgICAgICAgZmVhdHVyZS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVuYWJsZUNv
Y29hLmg6CisKIDIwMjEtMDYtMTQgIFBlciBBcm5lICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgW2lPU10gU3luYyBBY2Nlc3NpYmlsaXR5IHByZWZlcmVuY2VzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNj
OTVmMWY5MDI5NjQ0NDBiZWUyMDBmODhiZTkyYWFmOWU1MzVkNTAuLjBlNDIzNWNiOWJkYzliN2Zk
ZGJmYzNmZjMwZTExZjI2MzUzMjdkMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjEt
MDYtMTUgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAg
ICAgTWlncmF0ZSBBcHAgUHJpdmFjeSBSZXBvcnQgY29kZSBmcm9tIFdlYktpdEFkZGl0aW9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3MDQ1Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDMzMzI4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVyZWQgYnkgZXhpc3Rp
bmcgdGVzdHMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRh
c2tDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdv
cmtEYXRhVGFza0NvY29hKToKKyAgICAgICAgKGNvbnRleHRTdHJpbmcpOiBEZWxldGVkLgorICAg
ICAgICBUaGlzIHBhdGNoIGRlbGV0ZXMgdGhlIGNvbnRleHRTdHJpbmcgZnVuY3Rpb24gYmVjYXVz
ZSBpdCBpcyBubyBsb25nZXIKKyAgICAgICAgbmVlZGVkIG5vdyB0aGF0IENGTmV0d29yayBzZXRz
IHRoZSBhdHRyaWJ1dGlvbiBjb250ZXh0LCBhbmQgaXQgc2VlbWVkCisgICAgICAgIHNpbGx5IHRv
IG1pZ3JhdGUgY29kZSBmcm9tIFdlYktpdEFkZGl0aW9ucyBqdXN0IHRvIGRlbGV0ZSBpdAorICAg
ICAgICBpbW1lZGlhdGVseS4gVGhpcyBhbHNvIG1vdmVzIHRoZSBwcm9jZXNzUENNUmVxdWVzdCBm
dW5jdGlvbgorICAgICAgICBkZWNsYXJhdGlvbiBmcm9tIFdlYktpdEFkZGl0aW9ucyBzbyB3ZSBj
YW4gcmVtb3ZlCisgICAgICAgIE5FVFdPUktfREFUQV9UQVNLX0NPQ09BX0FERElUSU9OUy4KKwor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06Cisg
ICAgICAgIChXZWJLaXQ6OmlzQWN0aW5nT25CZWhhbGZPZkFGdWxsV2ViQnJvd3Nlcik6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OnJlbW92ZU5ldHdvcmtXZWJzaXRlRGF0
YSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQp
OgorCiAyMDIxLTA2LTE1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBDYWNoZXM6OnJlbW92ZUNhY2hlRW50cnkgc2hvdWxkIGNoZWNrIGZvciBtX3N0b3JhZ2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaCBiL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaAppbmRleCA2MmM4ZWMxMTY3NzZkOWJmNzAz
MzVkNDdhMDg5Zjg5MGNlYzZjOTRhLi4xNzk2YzM5ZDczNTlkMDkxOThlZjU5YmQwNzJjYWFiNGZl
NGQxNjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmgK
KysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCkBAIC02OTUsOCArNjk1
LDggQEAKICNkZWZpbmUgRU5BQkxFX05PVElGWV9GSUxURVJJTkcgMQogI2VuZGlmCiAKLSNpZiAh
ZGVmaW5lZChFTkFCTEVfQVBQX0JPVU5EX1JFUVVFU1RTKSAmJiBQTEFURk9STShJT1NfRkFNSUxZ
KSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxNTAwMDAKLSNkZWZpbmUg
RU5BQkxFX0FQUF9CT1VORF9SRVFVRVNUUyAxCisjaWYgIWRlZmluZWQoRU5BQkxFX0FQUF9QUklW
QUNZX1JFUE9SVCkgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTUwMDAwCisjZGVmaW5lIEVOQUJMRV9BUFBfUFJJVkFDWV9SRVBP
UlQgMQogI2VuZGlmCiAKICNpZiAhZGVmaW5lZChFTkFCTEVfREVTVElOQVRJT05fQ09MT1JfU1BB
Q0VfRElTUExBWV9QMykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCmluZGV4IDM0MGQ3ZGFjMjg2YjczYjgz
YzUxZWJkMGY2ODBmYzRhYmY5ZGFmOTUuLjI3NjE3NDQ0ZWVlNzdjYTJmM2RlNTEwZDc3ZGU1NTc5
ZmM1ZGEwNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya0RhdGFUYXNrQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQpAQCAtNTcsOCArNTcsNyBAQAogI2lmIFVT
RShBUFBMRV9JTlRFUk5BTF9TREspCiAjaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvTmV0d29ya0Rh
dGFUYXNrQ29jb2FBZGRpdGlvbnMuaD4KICNlbHNlCi0jZGVmaW5lIE5FVFdPUktfREFUQV9UQVNL
X0NPQ09BX0FERElUSU9OUyBVTlVTRURfVkFSSUFCTEUocGNtRGF0YUNhcnJpZWQpOwotc3RhdGlj
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGNvbnRleHRTdHJpbmcoTlNVUkxSZXF1ZXN0ICop
IHsgcmV0dXJuIHsgfTsgfQorc3RhdGljIHZvaWQgcHJvY2Vzc1BDTVJlcXVlc3QoV2ViQ29yZTo6
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkLCBOU011dGFibGVVUkxSZXF1
ZXN0ICogX05vbm51bGwpOwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMzM4LDI0
ICszMzcsMzEgQEAgTmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKE5l
dHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVQKICNlbmRpZgogICAgIHJlc3RyaWN0
UmVxdWVzdFJlZmVycmVyVG9PcmlnaW5JZk5lZWRlZChyZXF1ZXN0KTsKIAotICAgIC8vIEZJWE1F
OiBPbmNlIHdlIGFyZSBkb25lIHdpdGggTkVUV09SS19EQVRBX1RBU0tfQ09DT0FfQURESVRJT05T
LCBtYWtlIG5zUmVxdWVzdCBhIFJldGFpblB0ciBhbmQgZ2V0IHJpZCBvZiBwcm90ZWN0ZWROU1Jl
cXVlc3QgYW5kIHBjbURhdGFDYXJyaWVkLgotICAgIE5TVVJMUmVxdWVzdCAqbnNSZXF1ZXN0ID0g
cmVxdWVzdC5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OlVwZGF0
ZUhUVFBCb2R5KTsKLSAgICBhdXRvIHBjbURhdGFDYXJyaWVkID0gcGFyYW1ldGVycy5wY21EYXRh
Q2FycmllZDsKKyAgICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiBuc1JlcXVlc3QgPSByZXF1ZXN0
Lm5zVVJMUmVxdWVzdChXZWJDb3JlOjpIVFRQQm9keVVwZGF0ZVBvbGljeTo6VXBkYXRlSFRUUEJv
ZHkpOworICAgIFJldGFpblB0cjxOU011dGFibGVVUkxSZXF1ZXN0PiBtdXRhYmxlUmVxdWVzdCA9
IGFkb3B0TlMoW25zUmVxdWVzdC5nZXQoKSBtdXRhYmxlQ29weV0pOwogCi0gICAgTkVUV09SS19E
QVRBX1RBU0tfQ09DT0FfQURESVRJT05TCisjaWYgRU5BQkxFKEFQUF9QUklWQUNZX1JFUE9SVCkK
KyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgorICAgIG11dGFibGVSZXF1
ZXN0LmdldCgpLl9pc05vbkFwcEluaXRpYXRlZCA9ICFyZXF1ZXN0LmlzQXBwQm91bmQoKTsKKyAg
ICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKKyNlbmRpZgorCisgICAgaWYgKHBh
cmFtZXRlcnMucGNtRGF0YUNhcnJpZWQpCisgICAgICAgIHByb2Nlc3NQQ01SZXF1ZXN0KCpwYXJh
bWV0ZXJzLnBjbURhdGFDYXJyaWVkLCBtdXRhYmxlUmVxdWVzdC5nZXQoKSk7CisKKyAgICBuc1Jl
cXVlc3QgPSBtdXRhYmxlUmVxdWVzdDsKIAotICAgIGF1dG8gcHJvdGVjdGVkTlNSZXF1ZXN0ID0g
cmV0YWluUHRyKG5zUmVxdWVzdCk7Ci0gICAgbV9zZXNzaW9uLT5hcHBCb3VuZE5hdmlnYXRpb25U
ZXN0aW5nRGF0YSgpLnVwZGF0ZUFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhKHJlcXVlc3Qs
IGNvbnRleHRTdHJpbmcocHJvdGVjdGVkTlNSZXF1ZXN0LmdldCgpKSk7CisgICAgbV9zZXNzaW9u
LT5hcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSgpLnVwZGF0ZUFwcEJvdW5kTmF2aWdhdGlv
blRlc3RpbmdEYXRhKHJlcXVlc3QsIHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKS5pc0Vt
cHR5KCkgPyBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbihyZXF1ZXN0LnVybCgpKSA6IFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluKHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSkpOwog
Ci0gICAgYXBwbHlTbmlmZmluZ1BvbGljaWVzQW5kQmluZFJlcXVlc3RUb0luZmVyZmFjZUlmTmVl
ZGVkKHByb3RlY3RlZE5TUmVxdWVzdCwgcGFyYW1ldGVycy5jb250ZW50U25pZmZpbmdQb2xpY3kg
PT0gV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5OjpTbmlmZkNvbnRlbnQgJiYgIXVybC5p
c0xvY2FsRmlsZSgpLCBwYXJhbWV0ZXJzLmNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5ID09
IFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5OjpTbmlmZik7CisgICAgYXBw
bHlTbmlmZmluZ1BvbGljaWVzQW5kQmluZFJlcXVlc3RUb0luZmVyZmFjZUlmTmVlZGVkKG5zUmVx
dWVzdCwgcGFyYW1ldGVycy5jb250ZW50U25pZmZpbmdQb2xpY3kgPT0gV2ViQ29yZTo6Q29udGVu
dFNuaWZmaW5nUG9saWN5OjpTbmlmZkNvbnRlbnQgJiYgIXVybC5pc0xvY2FsRmlsZSgpLCBwYXJh
bWV0ZXJzLmNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5ID09IFdlYkNvcmU6OkNvbnRlbnRF
bmNvZGluZ1NuaWZmaW5nUG9saWN5OjpTbmlmZik7CiAKLSAgICBtX3Rhc2sgPSBbbV9zZXNzaW9u
V3JhcHBlci0+c2Vzc2lvbiBkYXRhVGFza1dpdGhSZXF1ZXN0OnByb3RlY3RlZE5TUmVxdWVzdC5n
ZXQoKV07CisgICAgbV90YXNrID0gW21fc2Vzc2lvbldyYXBwZXItPnNlc3Npb24gZGF0YVRhc2tX
aXRoUmVxdWVzdDpuc1JlcXVlc3QuZ2V0KCldOwogCiAgICAgV1RGQmVnaW5TaWducG9zdChtX3Rh
c2suZ2V0KCksICJEYXRhVGFzayIsICIle3B1YmxpY31zIHByaTogJS4yZiBwcmVjb25uZWN0OiAl
ZCIsIHVybC5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSwgdG9OU1VSTFNlc3Npb25UYXNrUHJpb3Jp
dHkocmVxdWVzdC5wcmlvcml0eSgpKSwgcGFyYW1ldGVycy5zaG91bGRQcmVjb25uZWN0T25seSA9
PSBQcmVjb25uZWN0T25seTo6WWVzKTsKIAogICAgIFJFTEVBU0VfQVNTRVJUKCFtX3Nlc3Npb25X
cmFwcGVyLT5kYXRhVGFza01hcC5jb250YWlucyhbbV90YXNrIHRhc2tJZGVudGlmaWVyXSkpOwog
ICAgIG1fc2Vzc2lvbldyYXBwZXItPmRhdGFUYXNrTWFwLmFkZChbbV90YXNrIHRhc2tJZGVudGlm
aWVyXSwgdGhpcyk7Ci0gICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiJWx1IENyZWF0aW5nIE5ldHdv
cmtEYXRhVGFzayB3aXRoIFVSTCAlcyIsICh1bnNpZ25lZCBsb25nKVttX3Rhc2sgdGFza0lkZW50
aWZpZXJdLCBbcHJvdGVjdGVkTlNSZXF1ZXN0IFVSTF0uYWJzb2x1dGVTdHJpbmcuVVRGOFN0cmlu
Zyk7CisgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiJWx1IENyZWF0aW5nIE5ldHdvcmtEYXRhVGFz
ayB3aXRoIFVSTCAlcyIsICh1bnNpZ25lZCBsb25nKVttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCBb
bnNSZXF1ZXN0IFVSTF0uYWJzb2x1dGVTdHJpbmcuVVRGOFN0cmluZyk7CiAKICAgICBpZiAocGFy
YW1ldGVycy5zaG91bGRQcmVjb25uZWN0T25seSA9PSBQcmVjb25uZWN0T25seTo6WWVzKSB7CiAj
aWYgRU5BQkxFKFNFUlZFUl9QUkVDT05ORUNUKQpAQCAtMzcyLDkgKzM3OCw5IEBAIE5ldHdvcmtE
YXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lv
biwgTmV0d29ya0RhdGFUCiAgICAgaWYgKHNob3VsZEJsb2NrQ29va2llcykgewogI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAogICAgICAgICBpZiAobV9zZXNzaW9uLT5zaG91bGRMb2dDb29raWVJ
bmZvcm1hdGlvbigpKQotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dp
bmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIE5ldHdvcmtEYXRhVGFza0NvY29hOjpsb2dDb29r
aWVJbmZvcm1hdGlvbjogcGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCB0
YXNrSUQ9JWx1OiBCbG9ja2luZyBjb29raWVzIGZvciBVUkwgJXMiLCB0aGlzLCBwYWdlSUQoKS50
b1VJbnQ2NCgpLCBmcmFtZUlEKCkudG9VSW50NjQoKSwgKHVuc2lnbmVkIGxvbmcpW21fdGFzayB0
YXNrSWRlbnRpZmllcl0sIFtwcm90ZWN0ZWROU1JlcXVlc3QgVVJMXS5hYnNvbHV0ZVN0cmluZy5V
VEY4U3RyaW5nKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5n
QWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6bG9nQ29va2ll
SW5mb3JtYXRpb246IHBhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIiwgdGFz
a0lEPSVsdTogQmxvY2tpbmcgY29va2llcyBmb3IgVVJMICVzIiwgdGhpcywgcGFnZUlEKCkudG9V
SW50NjQoKSwgZnJhbWVJRCgpLnRvVUludDY0KCksICh1bnNpZ25lZCBsb25nKVttX3Rhc2sgdGFz
a0lkZW50aWZpZXJdLCBbbnNSZXF1ZXN0IFVSTF0uYWJzb2x1dGVTdHJpbmcuVVRGOFN0cmluZyk7
CiAjZWxzZQotICAgICAgICBMT0coTmV0d29ya1Nlc3Npb24sICIlbHUgQmxvY2tpbmcgY29va2ll
cyBmb3IgVVJMICVzIiwgKHVuc2lnbmVkIGxvbmcpW21fdGFzayB0YXNrSWRlbnRpZmllcl0sIFtw
cm90ZWN0ZWROU1JlcXVlc3QgVVJMXS5hYnNvbHV0ZVN0cmluZy5VVEY4U3RyaW5nKTsKKyAgICAg
ICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiJWx1IEJsb2NraW5nIGNvb2tpZXMgZm9yIFVSTCAlcyIs
ICh1bnNpZ25lZCBsb25nKVttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCBbbnNSZXF1ZXN0IFVSTF0u
YWJzb2x1dGVTdHJpbmcuVVRGOFN0cmluZyk7CiAjZW5kaWYKICAgICAgICAgYmxvY2tDb29raWVz
KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IGY3N2NlNzk0OTFhZTBlYWEzMTE1NjNk
ODFhN2JkMGEzZjQ2NGVhNWMuLmU4Yjk5MWMwZGVmYjkwMGQ0YTcwMmMzOWQ1ZGMzNzNjMDU0NjY5
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTU5LDE3ICs1OSwzNSBAQAogI2ltcG9ydCA8d3Rm
L1NvZnRMaW5raW5nLmg+CiAjaW1wb3J0IDx3dGYvVVJMLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09i
akNQdHIuaD4KKyNpbXBvcnQgPHd0Zi9kYXJ3aW4vV2Vha0xpbmtpbmcuaD4KICNpbXBvcnQgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICNpbXBv
cnQgPFdlYktpdEFkZGl0aW9ucy9OZXR3b3JrU2Vzc2lvbkNvY29hQWRkaXRpb25zLmg+CiAjZWxz
ZQogI2RlZmluZSBORVRXT1JLX1NFU1NJT05fQ09DT0FfQURESVRJT05TXzEKLXZvaWQgV2ViS2l0
OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpyZW1vdmVOZXR3b3JrV2Vic2l0ZURhdGEoc3RkOjpvcHRp
b25hbDxXYWxsVGltZT4sIHN0ZDo6b3B0aW9uYWw8SGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbj4+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikgeyBjb21wbGV0aW9uSGFuZGxlcigpOyB9CisjZW5kaWYKKworI2lmICFQTEFURk9STShJT1Nf
RkFNSUxZX1NJTVVMQVRPUikKKyNpbXBvcnQgPFN5bXB0b21zL1N5bXB0b21BbmFseXRpY3MuaD4K
KyNpbXBvcnQgPFN5bXB0b21zL1N5bXB0b21QcmVzZW50YXRpb25GZWVkLmg+CiAjZW5kaWYKIAog
I2ltcG9ydCAiRGV2aWNlTWFuYWdlbWVudFNvZnRMaW5rLmgiCiAKKyNpZiAhUExBVEZPUk0oSU9T
X0ZBTUlMWV9TSU1VTEFUT1IpICYmICFQTEFURk9STShXQVRDSE9TKQorU09GVF9MSU5LX1BSSVZB
VEVfRlJBTUVXT1JLX0lOX1VNQlJFTExBX09QVElPTkFMKFN5bXB0b21zLCBTeW1wdG9tQW5hbHl0
aWNzKTsKK1NPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SS19JTl9VTUJSRUxMQV9PUFRJT05BTChT
eW1wdG9tcywgU3ltcHRvbVByZXNlbnRhdGlvbkZlZWQpOworU09GVF9MSU5LX1BSSVZBVEVfRlJB
TUVXT1JLX0lOX1VNQlJFTExBX09QVElPTkFMKFN5bXB0b21zLCBTeW1wdG9tUHJlc2VudGF0aW9u
TGl0ZSk7CitTT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoU3ltcHRvbUFuYWx5dGljcywgQW5hbHl0
aWNzV29ya3NwYWNlKTsKK1NPRlRfTElOS19DTEFTU19PUFRJT05BTChTeW1wdG9tUHJlc2VudGF0
aW9uRmVlZCwgVXNhZ2VGZWVkKTsKK1NPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChTeW1wdG9t
UHJlc2VudGF0aW9uRmVlZCwga1N5bXB0b21BbmFseXRpY3NTZXJ2aWNlRG9tYWluVHJhY2tpbmdD
bGVhckhpc3RvcnlCdW5kbGVJRHMsIGNvbnN0IE5TU3RyaW5nICopOworU09GVF9MSU5LX0NPTlNU
QU5UX01BWV9GQUlMKFN5bXB0b21QcmVzZW50YXRpb25GZWVkLCBrU3ltcHRvbUFuYWx5dGljc1Nl
cnZpY2VEb21haW5UcmFja2luZ0NsZWFySGlzdG9yeVN0YXJ0RGF0ZSwgY29uc3QgTlNTdHJpbmcg
Kik7CitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoU3ltcHRvbVByZXNlbnRhdGlvbkZlZWQs
IGtTeW1wdG9tQW5hbHl0aWNzU2VydmljZURvbWFpblRyYWNraW5nQ2xlYXJIaXN0b3J5RW5kRGF0
ZSwgY29uc3QgTlNTdHJpbmcgKik7CitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoU3ltcHRv
bVByZXNlbnRhdGlvbkZlZWQsIGtTeW1wdG9tQW5hbHl0aWNzU2VydmljZURvbWFpblRyYWNraW5n
Q2xlYXJIaXN0b3J5S2V5LCBjb25zdCBOU1N0cmluZyAqKTsKK1NPRlRfTElOS19DT05TVEFOVF9N
QVlfRkFJTChTeW1wdG9tUHJlc2VudGF0aW9uTGl0ZSwga1N5bXB0b21BbmFseXRpY3NTZXJ2aWNl
RW5kcG9pbnQsIE5TU3RyaW5nICopCisjZW5kaWYKKwogLy8gRklYTUU6IFJlbW92ZSB0aGlzIHNv
ZnQgbGluayBvbmNlIHJkYXI6Ly9wcm9ibGVtLzUwMTA5NjMxIGlzIGluIGEgYnVpbGQgYW5kIGJv
dHMgYXJlIHVwZGF0ZWQuCiBTT0ZUX0xJTktfRlJBTUVXT1JLKENGTmV0d29yaykKIFNPRlRfTElO
S19DTEFTU19PUFRJT05BTChDRk5ldHdvcmssIF9OU0hTVFNTdG9yYWdlKQpAQCAtMTc2MSw0ICsx
Nzc5LDgxIEBAIHZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6Y2xlYXJBbHRlcm5hdGl2ZVNlcnZp
Y2VzKFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpCiAjZW5kaWYKIH0KIAorI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZX1NJTVVMQVRPUikgJiYgIVBMQVRGT1JNKFdBVENIT1MpCitzdGF0aWMgYm9vbCBp
c0FjdGluZ09uQmVoYWxmT2ZBRnVsbFdlYkJyb3dzZXIoY29uc3QgU3RyaW5nJiBidW5kbGVJRCkK
K3sKKyAgICByZXR1cm4gYnVuZGxlSUQgPT0gImNvbS5hcHBsZS53ZWJib29rbWFya3NkIjsKK30K
KyNlbmRpZgorCit2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OnJlbW92ZU5ldHdvcmtXZWJzaXRl
RGF0YShzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBzdGQ6Om9wdGlvbmFs
PEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+PiYmIGRvbWFpbnMsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWV9TSU1VTEFUT1IpICYmICFQTEFURk9STShXQVRDSE9TKQorICAgIGF1dG8gYnVu
ZGxlSUQgPSBXZWJDb3JlOjphcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKTsKKyAgICBpZiAo
IWlzUGFyZW50UHJvY2Vzc0FGdWxsV2ViQnJvd3NlcihuZXR3b3JrUHJvY2VzcygpKSAmJiAhaXNB
Y3RpbmdPbkJlaGFsZk9mQUZ1bGxXZWJCcm93c2VyKGJ1bmRsZUlEKSkKKyAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKCk7CisKKyAgICBpZiAoIVN5bXB0b21BbmFseXRpY3NMaWJyYXJ5
KCkKKyAgICAgICAgfHwgIVN5bXB0b21QcmVzZW50YXRpb25GZWVkTGlicmFyeSgpCisgICAgICAg
IHx8ICFTeW1wdG9tUHJlc2VudGF0aW9uTGl0ZUxpYnJhcnkoKQorICAgICAgICB8fCAhZ2V0QW5h
bHl0aWNzV29ya3NwYWNlQ2xhc3MoKQorICAgICAgICB8fCAhZ2V0VXNhZ2VGZWVkQ2xhc3MoKQor
ICAgICAgICB8fCAhY2FuTG9hZGtTeW1wdG9tQW5hbHl0aWNzU2VydmljZUVuZHBvaW50KCkpIHsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIFJldGFpblB0cjxBbmFseXRpY3NXb3Jrc3BhY2U+IHdvcmtzcGFjZSA9IGFkb3B0TlMoW1th
bGxvY0FuYWx5dGljc1dvcmtzcGFjZUluc3RhbmNlKCkgYWxsb2NdIGluaXRXb3Jrc3BhY2VXaXRo
U2VydmljZTpnZXRrU3ltcHRvbUFuYWx5dGljc1NlcnZpY2VFbmRwb2ludCgpXSk7CisgICAgUmV0
YWluUHRyPFVzYWdlRmVlZD4gdXNhZ2VGZWVkID0gYWRvcHROUyhbW2FsbG9jVXNhZ2VGZWVkSW5z
dGFuY2UoKSBhbGxvY10gaW5pdFdpdGhXb3Jrc3BhY2U6d29ya3NwYWNlLmdldCgpXSk7CisKKyAg
ICBpZiAoIVt1c2FnZUZlZWQuZ2V0KCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwZXJm
b3JtTmV0d29ya0RvbWFpbnNBY3Rpb25XaXRoT3B0aW9uczpyZXBseTopXQorICAgICAgICB8fCAh
Y2FuTG9hZGtTeW1wdG9tQW5hbHl0aWNzU2VydmljZURvbWFpblRyYWNraW5nQ2xlYXJIaXN0b3J5
S2V5KCkKKyAgICAgICAgfHwgIWNhbkxvYWRrU3ltcHRvbUFuYWx5dGljc1NlcnZpY2VEb21haW5U
cmFja2luZ0NsZWFySGlzdG9yeUJ1bmRsZUlEcygpCisgICAgICAgIHx8ICFjYW5Mb2Fka1N5bXB0
b21BbmFseXRpY3NTZXJ2aWNlRG9tYWluVHJhY2tpbmdDbGVhckhpc3RvcnlTdGFydERhdGUoKQor
ICAgICAgICB8fCAhY2FuTG9hZGtTeW1wdG9tQW5hbHl0aWNzU2VydmljZURvbWFpblRyYWNraW5n
Q2xlYXJIaXN0b3J5RW5kRGF0ZSgpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvICpzdGFydERhdGUgPSBbTlNEYXRlIGRp
c3RhbnRQYXN0XTsKKyAgICBpZiAobW9kaWZpZWRTaW5jZSkgeworICAgICAgICBOU1RpbWVJbnRl
cnZhbCB0aW1lSW50ZXJ2YWwgPSBtb2RpZmllZFNpbmNlLnZhbHVlKCkuc2Vjb25kc1NpbmNlRXBv
Y2goKS5zZWNvbmRzKCk7CisgICAgICAgIHN0YXJ0RGF0ZSA9IFtOU0RhdGUgZGF0ZVdpdGhUaW1l
SW50ZXJ2YWxTaW5jZTE5NzA6dGltZUludGVydmFsXTsKKyAgICB9CisKKyAgICBhdXRvIGNvbnRl
eHRBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgIGlm
IChkb21haW5zKSB7CisgICAgICAgIGNvbnRleHRBcnJheSA9IGNyZWF0ZU5TQXJyYXkoKmRvbWFp
bnMsIFsmXSAoYXV0byBkb21haW4pIHsKKyAgICAgICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3Ry
aW5nV2l0aFVURjhTdHJpbmc6ZG9tYWluLnN0cmluZygpLnV0ZjgoKS5kYXRhKCldOworICAgICAg
ICB9KTsKKyAgICB9CisKKyAgICBpZiAoaXNBY3RpbmdPbkJlaGFsZk9mQUZ1bGxXZWJCcm93c2Vy
KGJ1bmRsZUlEKSkKKyAgICAgICAgYnVuZGxlSUQgPSAiY29tLmFwcGxlLm1vYmlsZXNhZmFyaSI7
CisKKyAgICBOU0RpY3Rpb25hcnkgKm9wdGlvbnMgPSBAeworICAgICAgICAoaWQpZ2V0a1N5bXB0
b21BbmFseXRpY3NTZXJ2aWNlRG9tYWluVHJhY2tpbmdDbGVhckhpc3RvcnlLZXkoKTogQHsKKyAg
ICAgICAgICAgIChpZClnZXRrU3ltcHRvbUFuYWx5dGljc1NlcnZpY2VEb21haW5UcmFja2luZ0Ns
ZWFySGlzdG9yeUJ1bmRsZUlEcygpOiBAeworICAgICAgICAgICAgICAgIGJ1bmRsZUlEIDogY29u
dGV4dEFycmF5LmdldCgpLAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIChpZClnZXRrU3lt
cHRvbUFuYWx5dGljc1NlcnZpY2VEb21haW5UcmFja2luZ0NsZWFySGlzdG9yeVN0YXJ0RGF0ZSgp
OiBzdGFydERhdGUsCisgICAgICAgICAgICAoaWQpZ2V0a1N5bXB0b21BbmFseXRpY3NTZXJ2aWNl
RG9tYWluVHJhY2tpbmdDbGVhckhpc3RvcnlFbmREYXRlKCk6IFtOU0RhdGUgZGlzdGFudEZ1dHVy
ZV0KKyAgICAgICAgfQorICAgIH07CisKKyAgICBib29sIHJlc3VsdCA9IFt1c2FnZUZlZWQgcGVy
Zm9ybU5ldHdvcmtEb21haW5zQWN0aW9uV2l0aE9wdGlvbnM6b3B0aW9ucyByZXBseTptYWtlQmxv
Y2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKE5T
RGljdGlvbmFyeSAqcmVwbHksIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgaWYg
KGVycm9yKQorICAgICAgICAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiRXJyb3IgZGVsZXRpbmcg
bmV0d29yayBkb21haW4gZGF0YSAlIiBQVUJMSUNfTE9HX1NUUklORywgZXJyb3IpOworCisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSkuZ2V0KCldOworCisgICAgaWYgKCFyZXN1
bHQpCisgICAgICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIkVycm9yIGRlbGV0aW5nIG5ldHdvcmsg
ZG9tYWluIGRhdGE6IGludmFsaWQgcGFyYW1ldGVyIG9yIGZhaWx1cmUgdG8gY29udGFjdCB0aGUg
c2VydmljZSIpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0obW9kaWZpZWRTaW5jZSk7CisgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2Eu
bW0KaW5kZXggODRiMjZhNWY2YzBkMjVjMGM1MjBjNjc2N2Y1ODkzYjBiOWRkODY5Zi4uNTJmYmM3
NmMyMjMwMTY4OGI0ZGUxYzhhOTY1NGU3ZGU3ODZmYjFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KQEAgLTQ4LDYgKzQ4LDcg
QEAKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogI2ltcG9ydCAiV2Vic2l0ZURhdGFTdG9y
ZS5oIgogI2ltcG9ydCAiV0tFcnJvckludGVybmFsLmgiCisjaW1wb3J0IDxGb3VuZGF0aW9uL05T
VVJMUmVxdWVzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9EcmFnSXRlbS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9HZW9tZXRyeVV0aWxpdGllcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9IaWdobGlnaHRWaXNp
YmlsaXR5Lmg+CkBAIC04NSwxMyArODYsNiBAQCBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUkso
V2ViQ29udGVudEFuYWx5c2lzKTsKIFNPRlRfTElOS19DTEFTUyhXZWJDb250ZW50QW5hbHlzaXMs
IFdlYkZpbHRlckV2YWx1YXRvcik7CiAjZW5kaWYKIAotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9T
REspCi0vLyBGSVhNRTogVGhpcyBhZGRpdGlvbnMgZmlsZSBzaG91bGQgYmUgcmVuYW1lZCB0byBX
ZWJQYWdlUHJveHlBZGRpdGlvbnMubW0uCi0jaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvV2ViUGFn
ZVByb3h5QWRkaXRpb25zLmg+Ci0jZWxzZQotI2RlZmluZSBXRUJfUEFHRV9QUk9YWV9BRERJVElP
TlMKLSNlbmRpZgotCiAjZGVmaW5lIE1FU1NBR0VfQ0hFQ0soYXNzZXJ0aW9uKSBNRVNTQUdFX0NI
RUNLX0JBU0UoYXNzZXJ0aW9uLCBwcm9jZXNzKCkuY29ubmVjdGlvbigpKQogI2RlZmluZSBNRVNT
QUdFX0NIRUNLX0NPTVBMRVRJT04oYXNzZXJ0aW9uLCBjb21wbGV0aW9uKSBNRVNTQUdFX0NIRUNL
X0NPTVBMRVRJT05fQkFTRShhc3NlcnRpb24sIHByb2Nlc3MoKS5jb25uZWN0aW9uKCksIGNvbXBs
ZXRpb24pCiAKQEAgLTY3Miw3ICs2NjYsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RB
Y3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm8oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib28KIAog
dm9pZCBXZWJQYWdlUHJveHk6OnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIFdFQl9QQUdFX1BST1hZX0FERElUSU9OUworICAgIGF1
dG8gKm5zUmVxdWVzdCA9IHJlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBk
YXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KTsKKyNpZiBFTkFCTEUoQVBQX1BSSVZBQ1lf
UkVQT1JUKQorICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCisgICAgcmVx
dWVzdC5zZXRJc0FwcEJvdW5kKCFuc1JlcXVlc3QuX2lzTm9uQXBwSW5pdGlhdGVkKTsKKyAgICBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKKyNlbmRpZgogICAgIG1fbGFzdE5hdmln
YXRpb25XYXNBcHBCb3VuZCA9IHJlcXVlc3QuaXNBcHBCb3VuZCgpOwogfQogCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzE3MTc5NjZlZDg5NDc4
OTNlZDlkYTM5MTUyMWVhOTJjMTc3MjY3ZS4uMjU5YmQ4NGI4ZGM4OWY0OWJhMjJiYmQ4NTVjMzBk
MTFjODlkNzEyYyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTA2LTE1ICBLYXRlIENoZW5leSAgPGthdGhlcmlu
ZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIE1pZ3JhdGUgQXBwIFByaXZhY3kgUmVwb3J0
IGNvZGUgZnJvbSBXZWJLaXRBZGRpdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNzA0NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzQzMzMy
ODc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW06CisK
IDIwMjEtMDYtMTUgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtpT1MgMTVdIFN1cHBvcnQgYnVpbGRpbmcgV2ViS2l0CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3ku
bW0KaW5kZXggMmFlOTU1M2I4MWY1ZDg0NTM5YThkYTcxNDMwZDk3YTVlZjViZTkzMy4uZjU4MDM5
MzAwYjllN2IzZDc3NmY4NThiMzk3ZmI5YWEzMzlhNjU4MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFj
eS5tbQpAQCAtMzMsNiArMzMsOCBAQAogI2ltcG9ydCAiVGVzdFVSTFNjaGVtZUhhbmRsZXIuaCIK
ICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKICNpbXBvcnQgIldLV2ViVmlld0NvbmZpZ3VyYXRp
b25FeHRyYXMuaCIKKyNpbXBvcnQgPENGTmV0d29yay9DRk5TVVJMQ29ubmVjdGlvbi5oPgorI2lt
cG9ydCA8Rm91bmRhdGlvbi9OU1VSTFJlcXVlc3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVnaXN0
cmFibGVEb21haW4uaD4KICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tz
Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tIVFRQQ29va2llU3RvcmVQcml2YXRlLmg+CkBAIC00Niwx
MCArNDgsNiBAQAogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbXBvcnQgPFdlYktp
dEFkZGl0aW9ucy9JbkFwcEJyb3dzZXJQcml2YWN5QWRkaXRpb25zLmg+Ci0jZW5kaWYKLQogI2lm
IEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKIAogc3RhdGljIGJvb2wgaXNEb25lOwpAQCAtMTQy
MCw3ICsxNDE4LDcgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBYm91dEJsYW5rU3ViRnJh
bWVNYXRjaGVzVG9wRnJhbWVOb25BcHBCb3VuZCkKIAogI2VuZGlmIC8vIEVOQUJMRShBUFBfQk9V
TkRfRE9NQUlOUykKIAotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspICYmIEVOQUJMRShBUFBf
Qk9VTkRfUkVRVUVTVFMpCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykgJiYgRU5BQkxFKEFQ
UF9QUklWQUNZX1JFUE9SVCkKIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmRSZXF1
ZXN0KQogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0xNDMwLDcgKzE0MjgsMTAgQEAgVEVTVChJbkFw
cEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZFJlcXVlc3QpCiAKICAgICBfX2Jsb2NrIGJvb2wgaXNE
b25lID0gZmFsc2U7CiAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqbm9uQXBwQm91bmRSZXF1ZXN0
ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJp
bmc6dXJsXV07Ci0gICAgQVBQX0JPVU5EX1JFUVVFU1RfQURESVRJT05TCisKKyAgICBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgorICAgIG5vbkFwcEJvdW5kUmVxdWVzdC5faXNO
b25BcHBJbml0aWF0ZWQgPSBZRVM7CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
RU5ECiAKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpub25BcHBCb3VuZFJlcXVlc3RdOwogICAg
IFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKQEAgLTE0ODQsNyAr
MTQ4NSw5IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmRSZXF1ZXN0V2l0aE5h
dmlnYXRpb24pCiAgICAgCiAgICAgaXNEb25lID0gZmFsc2U7CiAgICAgTlNNdXRhYmxlVVJMUmVx
dWVzdCAqbm9uQXBwQm91bmRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdp
dGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6bm9uQXBwQm91bmRVUkxdXTsKLSAgICBBUFBfQk9V
TkRfUkVRVUVTVF9BRERJVElPTlMKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19C
RUdJTgorICAgIG5vbkFwcEJvdW5kUmVxdWVzdC5faXNOb25BcHBJbml0aWF0ZWQgPSBZRVM7Cisg
ICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgCiAgICAgaXNEb25lID0g
ZmFsc2U7CiAgICAgW3dlYlZpZXcgX2NsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YTpeewpAQCAt
MTU0Miw3ICsxNTQ1LDkgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZFJl
cXVlc3RXaXRoU3ViRnJhbWUpCiAgICAgX19ibG9jayBib29sIGlzRG9uZSA9IGZhbHNlOwogICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlv
bi5nZXQoKV0pOwogICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5vbkFwcEJvdW5kUmVxdWVzdCA9
IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRs
ZV0gVVJMRm9yUmVzb3VyY2U6QCJwYWdlLXdpdGgtY3NwIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIg
c3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07Ci0gICAgQVBQX0JPVU5E
X1JFUVVFU1RfQURESVRJT05TCisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVH
SU4KKyAgICBub25BcHBCb3VuZFJlcXVlc3QuX2lzTm9uQXBwSW5pdGlhdGVkID0gWUVTOworICAg
IEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAgICAgW3dlYlZpZXcgbG9hZFJl
cXVlc3Q6bm9uQXBwQm91bmRSZXF1ZXN0XTsKIApAQCAtMTYyMiw3ICsxNjI3LDkgQEAgc3RhdGlj
IHZvaWQgcnVuVGVzdChSZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlLCBJc0FwcEJvdW5kIGFwcEJv
dW5kKQogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IHNlcnZlci5yZXF1ZXN0KCk7CiAgICAg
aWYgKGFwcEJvdW5kID09IElzQXBwQm91bmQ6Ok5vKSB7CiAgICAgICAgIE5TTXV0YWJsZVVSTFJl
cXVlc3QgKm5vbkFwcEJvdW5kUmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RX
aXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAi
aHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyLnBvcnQoKV1dXTsKLSAgICAgICAgQVBQX0JP
VU5EX1JFUVVFU1RfQURESVRJT05TCisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0JFR0lOCisgICAgICAgIG5vbkFwcEJvdW5kUmVxdWVzdC5faXNOb25BcHBJbml0aWF0ZWQg
PSBZRVM7CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAg
ICByZXF1ZXN0ID0gbm9uQXBwQm91bmRSZXF1ZXN0OwogICAgIH0KIApAQCAtMTczMCw3ICsxNzM3
LDkgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBNdWx0aXBsZVdlYlZpZXdzV2l0aFNoYXJl
ZFNlcnZpY2VXb3JrZXIpCiAKICAgICBpc0RvbmUgPSBmYWxzZTsKICAgICBOU011dGFibGVVUkxS
ZXF1ZXN0ICpub25BcHBCb3VuZFJlcXVlc3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
Imh0dHBzOi8vMTI3LjAuMC4xOiVkL21haW4uaHRtbCIsIHNlcnZlci5wb3J0KCldXV07Ci0gICAg
QVBQX0JPVU5EX1JFUVVFU1RfQURESVRJT05TCisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfQkVHSU4KKyAgICBub25BcHBCb3VuZFJlcXVlc3QuX2lzTm9uQXBwSW5pdGlhdGVkID0g
WUVTOworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIFt3ZWJWaWV3
MiBsb2FkUmVxdWVzdDpub25BcHBCb3VuZFJlcXVlc3RdOwogICAgIEVYUEVDVF9XS19TVFJFUShb
d2ViVmlldzIgX3Rlc3Rfd2FpdEZvckFsZXJ0XSwgImZldGNoZWQgZnJvbSBzZXJ2ZXIiKTsKIApA
QCAtMTc4MCw3ICsxNzg5LDkgQEAgc3RhdGljIHZvaWQgc29mdFVwZGF0ZVRlc3QoSXNBcHBCb3Vu
ZCBpc0FwcEJvdW5kKQogICAgICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBzZXJ2ZXIxLnJl
cXVlc3QoKTsKICAgICAgICAgaWYgKGlzQXBwQm91bmQgPT0gSXNBcHBCb3VuZDo6Tm8pIHsKICAg
ICAgICAgICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5vbkFwcEJvdW5kUmVxdWVzdCA9IFtOU011
dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyMS5w
b3J0KCldXV07Ci0gICAgICAgICAgICBBUFBfQk9VTkRfUkVRVUVTVF9BRERJVElPTlMKKyAgICAg
ICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCisgICAgICAgICAgICBu
b25BcHBCb3VuZFJlcXVlc3QuX2lzTm9uQXBwSW5pdGlhdGVkID0gWUVTOworICAgICAgICAgICAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgICAgICByZXF1ZXN0ID0g
bm9uQXBwQm91bmRSZXF1ZXN0OwogICAgICAgICB9CiAKQEAgLTE3OTksNyArMTgxMCw5IEBAIHN0
YXRpYyB2b2lkIHNvZnRVcGRhdGVUZXN0KElzQXBwQm91bmQgaXNBcHBCb3VuZCkKICAgICAgICAg
TlNVUkxSZXF1ZXN0ICpyZXF1ZXN0MiA9IHNlcnZlcjIucmVxdWVzdCgpOwogICAgICAgICBpZiAo
aXNBcHBCb3VuZCA9PSBJc0FwcEJvdW5kOjpObykgewogICAgICAgICAgICAgTlNNdXRhYmxlVVJM
UmVxdWVzdCAqbm9uQXBwQm91bmRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVz
dFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
QCJodHRwczovLzEyNy4wLjAuMTolZC8iLCBzZXJ2ZXIyLnBvcnQoKV1dXTsKLSAgICAgICAgICAg
IEFQUF9CT1VORF9SRVFVRVNUX0FERElUSU9OUworICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfQkVHSU4KKyAgICAgICAgICAgIG5vbkFwcEJvdW5kUmVxdWVzdC5faXNO
b25BcHBJbml0aWF0ZWQgPSBZRVM7CisgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19FTkQKICAgICAgICAgICAgIHJlcXVlc3QyID0gbm9uQXBwQm91bmRSZXF1ZXN0Owog
ICAgICAgICB9CiAKQEAgLTE4NTAsNyArMTg2Myw5IEBAIHN0YXRpYyB2b2lkIHJ1bldlYlByb2Nl
c3NQbHVnSW5UZXN0KElzQXBwQm91bmQgaXNBcHBCb3VuZCkKICAgICBOU011dGFibGVVUkxSZXF1
ZXN0ICpyZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJM
IFVSTFdpdGhTdHJpbmc6dXJsXV07CiAgICAgaWYgKGlzQXBwQm91bmQgPT0gSXNBcHBCb3VuZDo6
Tm8pIHsKICAgICAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqbm9uQXBwQm91bmRSZXF1ZXN0ID0g
cmVxdWVzdDsKLSAgICAgICAgQVBQX0JPVU5EX1JFUVVFU1RfQURESVRJT05TCisgICAgICAgIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCisgICAgICAgIG5vbkFwcEJvdW5kUmVx
dWVzdC5faXNOb25BcHBJbml0aWF0ZWQgPSBZRVM7CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0VORAogICAgICAgICByZXF1ZXN0ID0gbm9uQXBwQm91bmRSZXF1ZXN0Owog
ICAgIH0KIApAQCAtMjAwNSw3ICsyMDIwLDkgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBS
ZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRVcGRhdGVzQXBwQm91bmRWYWx1ZSkKICAgICBleHBl
Y3RlZE1lc3NhZ2UgPSAic3RhcnRzIGFwcC1ib3VuZCI7CiAgICAgcmVjZWl2ZWRNZXNzYWdlID0g
ZmFsc2U7CiAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqbm9uQXBwQm91bmRSZXF1ZXN0ID0gW05T
TXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwOi8vMTI3LjAuMC4xOiVkL21haW4uaHRtbCIs
IHNlcnZlci5wb3J0KCldXV07Ci0gICAgQVBQX0JPVU5EX1JFUVVFU1RfQURESVRJT05TCisgICAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KKyAgICBub25BcHBCb3VuZFJlcXVl
c3QuX2lzTm9uQXBwSW5pdGlhdGVkID0gWUVTOworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0VORAogCiAgICAgW3dlYlZpZXcyIGxvYWRSZXF1ZXN0Om5vbkFwcEJvdW5kUmVxdWVz
dF07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZE1lc3NhZ2UpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431621</attachid>
            <date>2021-06-16 16:35:24 -0700</date>
            <delta_ts>2021-06-17 11:01:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227045-20210616163523.patch</filename>
            <type>text/plain</type>
            <size>22367</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4ODc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDc0ZjMwMjk3YWI2OTRmODRmNDVkYmFl
YzQwN2QxODQ0ZmM4NTUwZmEuLmZjZmVjZWMzY2ZiMjgzNTgwZGYyMGM1OThjZWFmNzVlYmNjYjk0
NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDYtMTUgIEthdGUgQ2hlbmV5ICA8a2F0aGVy
aW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgTWlncmF0ZSBBcHAgUHJpdmFjeSBSZXBv
cnQgY29kZSBmcm9tIFdlYktpdEFkZGl0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3MDQ1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDMz
MzI4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
cGRhdGUgY29tcGlsZSBmbGFnIG5hbWluZyB0byBhbGlnbiB3aXRoIHRoZSBBcHAgUHJpdmFjeSBS
ZXBvcnQKKyAgICAgICAgZmVhdHVyZS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVuYWJsZUNv
Y29hLmg6CisKIDIwMjEtMDYtMTQgIFBlciBBcm5lICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgW2lPU10gU3luYyBBY2Nlc3NpYmlsaXR5IHByZWZlcmVuY2VzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNj
OTVmMWY5MDI5NjQ0NDBiZWUyMDBmODhiZTkyYWFmOWU1MzVkNTAuLjBlNDIzNWNiOWJkYzliN2Zk
ZGJmYzNmZjMwZTExZjI2MzUzMjdkMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjEt
MDYtMTUgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAg
ICAgTWlncmF0ZSBBcHAgUHJpdmFjeSBSZXBvcnQgY29kZSBmcm9tIFdlYktpdEFkZGl0aW9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3MDQ1Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDMzMzI4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVyZWQgYnkgZXhpc3Rp
bmcgdGVzdHMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRh
c2tDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdv
cmtEYXRhVGFza0NvY29hKToKKyAgICAgICAgKGNvbnRleHRTdHJpbmcpOiBEZWxldGVkLgorICAg
ICAgICBUaGlzIHBhdGNoIGRlbGV0ZXMgdGhlIGNvbnRleHRTdHJpbmcgZnVuY3Rpb24gYmVjYXVz
ZSBpdCBpcyBubyBsb25nZXIKKyAgICAgICAgbmVlZGVkIG5vdyB0aGF0IENGTmV0d29yayBzZXRz
IHRoZSBhdHRyaWJ1dGlvbiBjb250ZXh0LCBhbmQgaXQgc2VlbWVkCisgICAgICAgIHNpbGx5IHRv
IG1pZ3JhdGUgY29kZSBmcm9tIFdlYktpdEFkZGl0aW9ucyBqdXN0IHRvIGRlbGV0ZSBpdAorICAg
ICAgICBpbW1lZGlhdGVseS4gVGhpcyBhbHNvIG1vdmVzIHRoZSBwcm9jZXNzUENNUmVxdWVzdCBm
dW5jdGlvbgorICAgICAgICBkZWNsYXJhdGlvbiBmcm9tIFdlYktpdEFkZGl0aW9ucyBzbyB3ZSBj
YW4gcmVtb3ZlCisgICAgICAgIE5FVFdPUktfREFUQV9UQVNLX0NPQ09BX0FERElUSU9OUy4KKwor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06Cisg
ICAgICAgIChXZWJLaXQ6OmlzQWN0aW5nT25CZWhhbGZPZkFGdWxsV2ViQnJvd3Nlcik6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OnJlbW92ZU5ldHdvcmtXZWJzaXRlRGF0
YSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQp
OgorCiAyMDIxLTA2LTE1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBDYWNoZXM6OnJlbW92ZUNhY2hlRW50cnkgc2hvdWxkIGNoZWNrIGZvciBtX3N0b3JhZ2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaCBiL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaAppbmRleCA2MmM4ZWMxMTY3NzZkOWJmNzAz
MzVkNDdhMDg5Zjg5MGNlYzZjOTRhLi4xNzk2YzM5ZDczNTlkMDkxOThlZjU5YmQwNzJjYWFiNGZl
NGQxNjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmgK
KysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCkBAIC02OTUsOCArNjk1
LDggQEAKICNkZWZpbmUgRU5BQkxFX05PVElGWV9GSUxURVJJTkcgMQogI2VuZGlmCiAKLSNpZiAh
ZGVmaW5lZChFTkFCTEVfQVBQX0JPVU5EX1JFUVVFU1RTKSAmJiBQTEFURk9STShJT1NfRkFNSUxZ
KSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxNTAwMDAKLSNkZWZpbmUg
RU5BQkxFX0FQUF9CT1VORF9SRVFVRVNUUyAxCisjaWYgIWRlZmluZWQoRU5BQkxFX0FQUF9QUklW
QUNZX1JFUE9SVCkgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTUwMDAwCisjZGVmaW5lIEVOQUJMRV9BUFBfUFJJVkFDWV9SRVBP
UlQgMQogI2VuZGlmCiAKICNpZiAhZGVmaW5lZChFTkFCTEVfREVTVElOQVRJT05fQ09MT1JfU1BB
Q0VfRElTUExBWV9QMykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCmluZGV4IDM0MGQ3ZGFjMjg2YjczYjgz
YzUxZWJkMGY2ODBmYzRhYmY5ZGFmOTUuLjI3NjE3NDQ0ZWVlNzdjYTJmM2RlNTEwZDc3ZGU1NTc5
ZmM1ZGEwNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya0RhdGFUYXNrQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQpAQCAtNTcsOCArNTcsNyBAQAogI2lmIFVT
RShBUFBMRV9JTlRFUk5BTF9TREspCiAjaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvTmV0d29ya0Rh
dGFUYXNrQ29jb2FBZGRpdGlvbnMuaD4KICNlbHNlCi0jZGVmaW5lIE5FVFdPUktfREFUQV9UQVNL
X0NPQ09BX0FERElUSU9OUyBVTlVTRURfVkFSSUFCTEUocGNtRGF0YUNhcnJpZWQpOwotc3RhdGlj
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGNvbnRleHRTdHJpbmcoTlNVUkxSZXF1ZXN0ICop
IHsgcmV0dXJuIHsgfTsgfQorc3RhdGljIHZvaWQgcHJvY2Vzc1BDTVJlcXVlc3QoV2ViQ29yZTo6
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkLCBOU011dGFibGVVUkxSZXF1
ZXN0ICogX05vbm51bGwpOwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMzM4LDI0
ICszMzcsMzEgQEAgTmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKE5l
dHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVQKICNlbmRpZgogICAgIHJlc3RyaWN0
UmVxdWVzdFJlZmVycmVyVG9PcmlnaW5JZk5lZWRlZChyZXF1ZXN0KTsKIAotICAgIC8vIEZJWE1F
OiBPbmNlIHdlIGFyZSBkb25lIHdpdGggTkVUV09SS19EQVRBX1RBU0tfQ09DT0FfQURESVRJT05T
LCBtYWtlIG5zUmVxdWVzdCBhIFJldGFpblB0ciBhbmQgZ2V0IHJpZCBvZiBwcm90ZWN0ZWROU1Jl
cXVlc3QgYW5kIHBjbURhdGFDYXJyaWVkLgotICAgIE5TVVJMUmVxdWVzdCAqbnNSZXF1ZXN0ID0g
cmVxdWVzdC5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OlVwZGF0
ZUhUVFBCb2R5KTsKLSAgICBhdXRvIHBjbURhdGFDYXJyaWVkID0gcGFyYW1ldGVycy5wY21EYXRh
Q2FycmllZDsKKyAgICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiBuc1JlcXVlc3QgPSByZXF1ZXN0
Lm5zVVJMUmVxdWVzdChXZWJDb3JlOjpIVFRQQm9keVVwZGF0ZVBvbGljeTo6VXBkYXRlSFRUUEJv
ZHkpOworICAgIFJldGFpblB0cjxOU011dGFibGVVUkxSZXF1ZXN0PiBtdXRhYmxlUmVxdWVzdCA9
IGFkb3B0TlMoW25zUmVxdWVzdC5nZXQoKSBtdXRhYmxlQ29weV0pOwogCi0gICAgTkVUV09SS19E
QVRBX1RBU0tfQ09DT0FfQURESVRJT05TCisjaWYgRU5BQkxFKEFQUF9QUklWQUNZX1JFUE9SVCkK
KyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgorICAgIG11dGFibGVSZXF1
ZXN0LmdldCgpLl9pc05vbkFwcEluaXRpYXRlZCA9ICFyZXF1ZXN0LmlzQXBwQm91bmQoKTsKKyAg
ICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKKyNlbmRpZgorCisgICAgaWYgKHBh
cmFtZXRlcnMucGNtRGF0YUNhcnJpZWQpCisgICAgICAgIHByb2Nlc3NQQ01SZXF1ZXN0KCpwYXJh
bWV0ZXJzLnBjbURhdGFDYXJyaWVkLCBtdXRhYmxlUmVxdWVzdC5nZXQoKSk7CisKKyAgICBuc1Jl
cXVlc3QgPSBtdXRhYmxlUmVxdWVzdDsKIAotICAgIGF1dG8gcHJvdGVjdGVkTlNSZXF1ZXN0ID0g
cmV0YWluUHRyKG5zUmVxdWVzdCk7Ci0gICAgbV9zZXNzaW9uLT5hcHBCb3VuZE5hdmlnYXRpb25U
ZXN0aW5nRGF0YSgpLnVwZGF0ZUFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhKHJlcXVlc3Qs
IGNvbnRleHRTdHJpbmcocHJvdGVjdGVkTlNSZXF1ZXN0LmdldCgpKSk7CisgICAgbV9zZXNzaW9u
LT5hcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSgpLnVwZGF0ZUFwcEJvdW5kTmF2aWdhdGlv
blRlc3RpbmdEYXRhKHJlcXVlc3QsIHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKS5pc0Vt
cHR5KCkgPyBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbihyZXF1ZXN0LnVybCgpKSA6IFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluKHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSkpOwog
Ci0gICAgYXBwbHlTbmlmZmluZ1BvbGljaWVzQW5kQmluZFJlcXVlc3RUb0luZmVyZmFjZUlmTmVl
ZGVkKHByb3RlY3RlZE5TUmVxdWVzdCwgcGFyYW1ldGVycy5jb250ZW50U25pZmZpbmdQb2xpY3kg
PT0gV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5OjpTbmlmZkNvbnRlbnQgJiYgIXVybC5p
c0xvY2FsRmlsZSgpLCBwYXJhbWV0ZXJzLmNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5ID09
IFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5OjpTbmlmZik7CisgICAgYXBw
bHlTbmlmZmluZ1BvbGljaWVzQW5kQmluZFJlcXVlc3RUb0luZmVyZmFjZUlmTmVlZGVkKG5zUmVx
dWVzdCwgcGFyYW1ldGVycy5jb250ZW50U25pZmZpbmdQb2xpY3kgPT0gV2ViQ29yZTo6Q29udGVu
dFNuaWZmaW5nUG9saWN5OjpTbmlmZkNvbnRlbnQgJiYgIXVybC5pc0xvY2FsRmlsZSgpLCBwYXJh
bWV0ZXJzLmNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5ID09IFdlYkNvcmU6OkNvbnRlbnRF
bmNvZGluZ1NuaWZmaW5nUG9saWN5OjpTbmlmZik7CiAKLSAgICBtX3Rhc2sgPSBbbV9zZXNzaW9u
V3JhcHBlci0+c2Vzc2lvbiBkYXRhVGFza1dpdGhSZXF1ZXN0OnByb3RlY3RlZE5TUmVxdWVzdC5n
ZXQoKV07CisgICAgbV90YXNrID0gW21fc2Vzc2lvbldyYXBwZXItPnNlc3Npb24gZGF0YVRhc2tX
aXRoUmVxdWVzdDpuc1JlcXVlc3QuZ2V0KCldOwogCiAgICAgV1RGQmVnaW5TaWducG9zdChtX3Rh
c2suZ2V0KCksICJEYXRhVGFzayIsICIle3B1YmxpY31zIHByaTogJS4yZiBwcmVjb25uZWN0OiAl
ZCIsIHVybC5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSwgdG9OU1VSTFNlc3Npb25UYXNrUHJpb3Jp
dHkocmVxdWVzdC5wcmlvcml0eSgpKSwgcGFyYW1ldGVycy5zaG91bGRQcmVjb25uZWN0T25seSA9
PSBQcmVjb25uZWN0T25seTo6WWVzKTsKIAogICAgIFJFTEVBU0VfQVNTRVJUKCFtX3Nlc3Npb25X
cmFwcGVyLT5kYXRhVGFza01hcC5jb250YWlucyhbbV90YXNrIHRhc2tJZGVudGlmaWVyXSkpOwog
ICAgIG1fc2Vzc2lvbldyYXBwZXItPmRhdGFUYXNrTWFwLmFkZChbbV90YXNrIHRhc2tJZGVudGlm
aWVyXSwgdGhpcyk7Ci0gICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiJWx1IENyZWF0aW5nIE5ldHdv
cmtEYXRhVGFzayB3aXRoIFVSTCAlcyIsICh1bnNpZ25lZCBsb25nKVttX3Rhc2sgdGFza0lkZW50
aWZpZXJdLCBbcHJvdGVjdGVkTlNSZXF1ZXN0IFVSTF0uYWJzb2x1dGVTdHJpbmcuVVRGOFN0cmlu
Zyk7CisgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiJWx1IENyZWF0aW5nIE5ldHdvcmtEYXRhVGFz
ayB3aXRoIFVSTCAlcyIsICh1bnNpZ25lZCBsb25nKVttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCBb
bnNSZXF1ZXN0IFVSTF0uYWJzb2x1dGVTdHJpbmcuVVRGOFN0cmluZyk7CiAKICAgICBpZiAocGFy
YW1ldGVycy5zaG91bGRQcmVjb25uZWN0T25seSA9PSBQcmVjb25uZWN0T25seTo6WWVzKSB7CiAj
aWYgRU5BQkxFKFNFUlZFUl9QUkVDT05ORUNUKQpAQCAtMzcyLDkgKzM3OCw5IEBAIE5ldHdvcmtE
YXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lv
biwgTmV0d29ya0RhdGFUCiAgICAgaWYgKHNob3VsZEJsb2NrQ29va2llcykgewogI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAogICAgICAgICBpZiAobV9zZXNzaW9uLT5zaG91bGRMb2dDb29raWVJ
bmZvcm1hdGlvbigpKQotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dp
bmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIE5ldHdvcmtEYXRhVGFza0NvY29hOjpsb2dDb29r
aWVJbmZvcm1hdGlvbjogcGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCB0
YXNrSUQ9JWx1OiBCbG9ja2luZyBjb29raWVzIGZvciBVUkwgJXMiLCB0aGlzLCBwYWdlSUQoKS50
b1VJbnQ2NCgpLCBmcmFtZUlEKCkudG9VSW50NjQoKSwgKHVuc2lnbmVkIGxvbmcpW21fdGFzayB0
YXNrSWRlbnRpZmllcl0sIFtwcm90ZWN0ZWROU1JlcXVlc3QgVVJMXS5hYnNvbHV0ZVN0cmluZy5V
VEY4U3RyaW5nKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5n
QWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6bG9nQ29va2ll
SW5mb3JtYXRpb246IHBhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIiwgdGFz
a0lEPSVsdTogQmxvY2tpbmcgY29va2llcyBmb3IgVVJMICVzIiwgdGhpcywgcGFnZUlEKCkudG9V
SW50NjQoKSwgZnJhbWVJRCgpLnRvVUludDY0KCksICh1bnNpZ25lZCBsb25nKVttX3Rhc2sgdGFz
a0lkZW50aWZpZXJdLCBbbnNSZXF1ZXN0IFVSTF0uYWJzb2x1dGVTdHJpbmcuVVRGOFN0cmluZyk7
CiAjZWxzZQotICAgICAgICBMT0coTmV0d29ya1Nlc3Npb24sICIlbHUgQmxvY2tpbmcgY29va2ll
cyBmb3IgVVJMICVzIiwgKHVuc2lnbmVkIGxvbmcpW21fdGFzayB0YXNrSWRlbnRpZmllcl0sIFtw
cm90ZWN0ZWROU1JlcXVlc3QgVVJMXS5hYnNvbHV0ZVN0cmluZy5VVEY4U3RyaW5nKTsKKyAgICAg
ICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiJWx1IEJsb2NraW5nIGNvb2tpZXMgZm9yIFVSTCAlcyIs
ICh1bnNpZ25lZCBsb25nKVttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCBbbnNSZXF1ZXN0IFVSTF0u
YWJzb2x1dGVTdHJpbmcuVVRGOFN0cmluZyk7CiAjZW5kaWYKICAgICAgICAgYmxvY2tDb29raWVz
KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IGY3N2NlNzk0OTFhZTBlYWEzMTE1NjNk
ODFhN2JkMGEzZjQ2NGVhNWMuLjRmMGNmNTlmNzk2ZjhjN2JiMjE0MTU5ZWQ3YzhjMjAyNmI5NjU5
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTU5LDEwICs1OSwzMSBAQAogI2ltcG9ydCA8d3Rm
L1NvZnRMaW5raW5nLmg+CiAjaW1wb3J0IDx3dGYvVVJMLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09i
akNQdHIuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgorI2ltcG9ydCA8d3Rm
L2Rhcndpbi9XZWFrTGlua2luZy5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
ICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL05l
dHdvcmtTZXNzaW9uQ29jb2FBZGRpdGlvbnMuaD4KKworI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
X1NJTVVMQVRPUikKKyNpbXBvcnQgPFN5bXB0b21zL1N5bXB0b21BbmFseXRpY3MuaD4KKyNpbXBv
cnQgPFN5bXB0b21zL1N5bXB0b21QcmVzZW50YXRpb25GZWVkLmg+CisjZW5kaWYKKworI2lmICFQ
TEFURk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikgJiYgIVBMQVRGT1JNKFdBVENIT1MpCitTT0ZU
X0xJTktfUFJJVkFURV9GUkFNRVdPUktfSU5fVU1CUkVMTEFfT1BUSU9OQUwoU3ltcHRvbXMsIFN5
bXB0b21BbmFseXRpY3MpOworU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLX0lOX1VNQlJFTExB
X09QVElPTkFMKFN5bXB0b21zLCBTeW1wdG9tUHJlc2VudGF0aW9uRmVlZCk7CitTT0ZUX0xJTktf
UFJJVkFURV9GUkFNRVdPUktfSU5fVU1CUkVMTEFfT1BUSU9OQUwoU3ltcHRvbXMsIFN5bXB0b21Q
cmVzZW50YXRpb25MaXRlKTsKK1NPRlRfTElOS19DTEFTU19PUFRJT05BTChTeW1wdG9tQW5hbHl0
aWNzLCBBbmFseXRpY3NXb3Jrc3BhY2UpOworU09GVF9MSU5LX0NMQVNTX09QVElPTkFMKFN5bXB0
b21QcmVzZW50YXRpb25GZWVkLCBVc2FnZUZlZWQpOworU09GVF9MSU5LX0NPTlNUQU5UX01BWV9G
QUlMKFN5bXB0b21QcmVzZW50YXRpb25GZWVkLCBrU3ltcHRvbUFuYWx5dGljc1NlcnZpY2VEb21h
aW5UcmFja2luZ0NsZWFySGlzdG9yeUJ1bmRsZUlEcywgY29uc3QgTlNTdHJpbmcgKik7CitTT0ZU
X0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoU3ltcHRvbVByZXNlbnRhdGlvbkZlZWQsIGtTeW1wdG9t
QW5hbHl0aWNzU2VydmljZURvbWFpblRyYWNraW5nQ2xlYXJIaXN0b3J5U3RhcnREYXRlLCBjb25z
dCBOU1N0cmluZyAqKTsKK1NPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChTeW1wdG9tUHJlc2Vu
dGF0aW9uRmVlZCwga1N5bXB0b21BbmFseXRpY3NTZXJ2aWNlRG9tYWluVHJhY2tpbmdDbGVhckhp
c3RvcnlFbmREYXRlLCBjb25zdCBOU1N0cmluZyAqKTsKK1NPRlRfTElOS19DT05TVEFOVF9NQVlf
RkFJTChTeW1wdG9tUHJlc2VudGF0aW9uRmVlZCwga1N5bXB0b21BbmFseXRpY3NTZXJ2aWNlRG9t
YWluVHJhY2tpbmdDbGVhckhpc3RvcnlLZXksIGNvbnN0IE5TU3RyaW5nICopOworU09GVF9MSU5L
X0NPTlNUQU5UX01BWV9GQUlMKFN5bXB0b21QcmVzZW50YXRpb25MaXRlLCBrU3ltcHRvbUFuYWx5
dGljc1NlcnZpY2VFbmRwb2ludCwgTlNTdHJpbmcgKikKKyNlbmRpZgorCiAjZWxzZQogI2RlZmlu
ZSBORVRXT1JLX1NFU1NJT05fQ09DT0FfQURESVRJT05TXzEKIHZvaWQgV2ViS2l0OjpOZXR3b3Jr
U2Vzc2lvbkNvY29hOjpyZW1vdmVOZXR3b3JrV2Vic2l0ZURhdGEoc3RkOjpvcHRpb25hbDxXYWxs
VGltZT4sIHN0ZDo6b3B0aW9uYWw8SGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4+
JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21w
bGV0aW9uSGFuZGxlcigpOyB9CkBAIC0xNzYxLDQgKzE3ODIsODUgQEAgdm9pZCBOZXR3b3JrU2Vz
c2lvbkNvY29hOjpjbGVhckFsdGVybmF0aXZlU2VydmljZXMoV2FsbFRpbWUgbW9kaWZpZWRTaW5j
ZSkKICNlbmRpZgogfQogCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKworI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikgJiYgIVBMQVRGT1JNKFdBVENIT1MpCitzdGF0aWMg
Ym9vbCBpc0FjdGluZ09uQmVoYWxmT2ZBRnVsbFdlYkJyb3dzZXIoY29uc3QgU3RyaW5nJiBidW5k
bGVJRCkKK3sKKyAgICByZXR1cm4gYnVuZGxlSUQgPT0gImNvbS5hcHBsZS53ZWJib29rbWFya3Nk
IjsKK30KKyNlbmRpZgorCit2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OnJlbW92ZU5ldHdvcmtX
ZWJzaXRlRGF0YShzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBzdGQ6Om9w
dGlvbmFsPEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+PiYmIGRvbWFpbnMsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyNpZiAhUExB
VEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpICYmICFQTEFURk9STShXQVRDSE9TKQorICAgIGF1
dG8gYnVuZGxlSUQgPSBXZWJDb3JlOjphcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKTsKKyAg
ICBpZiAoIWlzUGFyZW50UHJvY2Vzc0FGdWxsV2ViQnJvd3NlcihuZXR3b3JrUHJvY2VzcygpKSAm
JiAhaXNBY3RpbmdPbkJlaGFsZk9mQUZ1bGxXZWJCcm93c2VyKGJ1bmRsZUlEKSkKKyAgICAgICAg
cmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKCk7CisKKyAgICBpZiAoIVN5bXB0b21BbmFseXRpY3NM
aWJyYXJ5KCkKKyAgICAgICAgfHwgIVN5bXB0b21QcmVzZW50YXRpb25GZWVkTGlicmFyeSgpCisg
ICAgICAgIHx8ICFTeW1wdG9tUHJlc2VudGF0aW9uTGl0ZUxpYnJhcnkoKQorICAgICAgICB8fCAh
Z2V0QW5hbHl0aWNzV29ya3NwYWNlQ2xhc3MoKQorICAgICAgICB8fCAhZ2V0VXNhZ2VGZWVkQ2xh
c3MoKQorICAgICAgICB8fCAhY2FuTG9hZGtTeW1wdG9tQW5hbHl0aWNzU2VydmljZUVuZHBvaW50
KCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIFJldGFpblB0cjxBbmFseXRpY3NXb3Jrc3BhY2U+IHdvcmtzcGFjZSA9IGFkb3B0
TlMoW2FsbG9jQW5hbHl0aWNzV29ya3NwYWNlSW5zdGFuY2UoKSBpbml0V29ya3NwYWNlV2l0aFNl
cnZpY2U6Z2V0a1N5bXB0b21BbmFseXRpY3NTZXJ2aWNlRW5kcG9pbnQoKV0pOworICAgIFJldGFp
blB0cjxVc2FnZUZlZWQ+IHVzYWdlRmVlZCA9IGFkb3B0TlMoW2FsbG9jVXNhZ2VGZWVkSW5zdGFu
Y2UoKSBpbml0V2l0aFdvcmtzcGFjZTp3b3Jrc3BhY2UuZ2V0KCldKTsKKworICAgIGlmICghW3Vz
YWdlRmVlZC5nZXQoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBlcmZvcm1OZXR3b3Jr
RG9tYWluc0FjdGlvbldpdGhPcHRpb25zOnJlcGx5OildCisgICAgICAgIHx8ICFjYW5Mb2Fka1N5
bXB0b21BbmFseXRpY3NTZXJ2aWNlRG9tYWluVHJhY2tpbmdDbGVhckhpc3RvcnlLZXkoKQorICAg
ICAgICB8fCAhY2FuTG9hZGtTeW1wdG9tQW5hbHl0aWNzU2VydmljZURvbWFpblRyYWNraW5nQ2xl
YXJIaXN0b3J5QnVuZGxlSURzKCkKKyAgICAgICAgfHwgIWNhbkxvYWRrU3ltcHRvbUFuYWx5dGlj
c1NlcnZpY2VEb21haW5UcmFja2luZ0NsZWFySGlzdG9yeVN0YXJ0RGF0ZSgpCisgICAgICAgIHx8
ICFjYW5Mb2Fka1N5bXB0b21BbmFseXRpY3NTZXJ2aWNlRG9tYWluVHJhY2tpbmdDbGVhckhpc3Rv
cnlFbmREYXRlKCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGF1dG8gKnN0YXJ0RGF0ZSA9IFtOU0RhdGUgZGlzdGFudFBhc3Rd
OworICAgIGlmIChtb2RpZmllZFNpbmNlKSB7CisgICAgICAgIE5TVGltZUludGVydmFsIHRpbWVJ
bnRlcnZhbCA9IG1vZGlmaWVkU2luY2UudmFsdWUoKS5zZWNvbmRzU2luY2VFcG9jaCgpLnNlY29u
ZHMoKTsKKyAgICAgICAgc3RhcnREYXRlID0gW05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNp
bmNlMTk3MDp0aW1lSW50ZXJ2YWxdOworICAgIH0KKworICAgIGF1dG8gY29udGV4dEFycmF5ID0g
YWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgaWYgKGRvbWFpbnMp
IHsKKyAgICAgICAgY29udGV4dEFycmF5ID0gY3JlYXRlTlNBcnJheSgqZG9tYWlucywgWyZdIChh
dXRvIGRvbWFpbikgeworICAgICAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoVVRG
OFN0cmluZzpkb21haW4uc3RyaW5nKCkudXRmOCgpLmRhdGEoKV07CisgICAgICAgIH0pOworICAg
IH0KKworICAgIGlmIChpc0FjdGluZ09uQmVoYWxmT2ZBRnVsbFdlYkJyb3dzZXIoYnVuZGxlSUQp
KQorICAgICAgICBidW5kbGVJRCA9ICJjb20uYXBwbGUubW9iaWxlc2FmYXJpIjsKKworICAgIE5T
RGljdGlvbmFyeSAqb3B0aW9ucyA9IEB7CisgICAgICAgIChpZClnZXRrU3ltcHRvbUFuYWx5dGlj
c1NlcnZpY2VEb21haW5UcmFja2luZ0NsZWFySGlzdG9yeUtleSgpOiBAeworICAgICAgICAgICAg
KGlkKWdldGtTeW1wdG9tQW5hbHl0aWNzU2VydmljZURvbWFpblRyYWNraW5nQ2xlYXJIaXN0b3J5
QnVuZGxlSURzKCk6IEB7CisgICAgICAgICAgICAgICAgYnVuZGxlSUQgOiBjb250ZXh0QXJyYXku
Z2V0KCksCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgKGlkKWdldGtTeW1wdG9tQW5hbHl0
aWNzU2VydmljZURvbWFpblRyYWNraW5nQ2xlYXJIaXN0b3J5U3RhcnREYXRlKCk6IHN0YXJ0RGF0
ZSwKKyAgICAgICAgICAgIChpZClnZXRrU3ltcHRvbUFuYWx5dGljc1NlcnZpY2VEb21haW5UcmFj
a2luZ0NsZWFySGlzdG9yeUVuZERhdGUoKTogW05TRGF0ZSBkaXN0YW50RnV0dXJlXQorICAgICAg
ICB9CisgICAgfTsKKworICAgIGJvb2wgcmVzdWx0ID0gW3VzYWdlRmVlZCBwZXJmb3JtTmV0d29y
a0RvbWFpbnNBY3Rpb25XaXRoT3B0aW9uczpvcHRpb25zIHJlcGx5Om1ha2VCbG9ja1B0cihbY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oTlNEaWN0aW9uYXJ5
ICpyZXBseSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgeworICAgICAgICBpZiAoZXJyb3IpCisg
ICAgICAgICAgICBMT0coTmV0d29ya1Nlc3Npb24sICJFcnJvciBkZWxldGluZyBuZXR3b3JrIGRv
bWFpbiBkYXRhICUiIFBVQkxJQ19MT0dfU1RSSU5HLCBlcnJvcik7CisKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKKyAgICB9KS5nZXQoKV07CisKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAg
ICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiRXJyb3IgZGVsZXRpbmcgbmV0d29yayBkb21haW4gZGF0
YTogaW52YWxpZCBwYXJhbWV0ZXIgb3IgZmFpbHVyZSB0byBjb250YWN0IHRoZSBzZXJ2aWNlIik7
CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShtb2RpZmllZFNpbmNlKTsKKyAgICBjb21wbGV0aW9u
SGFuZGxlcigpOworI2VuZGlmCit9CisKKyNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RL
KQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KaW5kZXggODRiMjZhNWY2YzBkMjVjMGM1MjBj
Njc2N2Y1ODkzYjBiOWRkODY5Zi4uMjQ2ODcxOGQ5MzFiY2QwOGNiM2Y2ZWQ3OGI5YmY2MWMwYWMx
NzZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVBy
b3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVBy
b3h5Q29jb2EubW0KQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5o
IgogI2ltcG9ydCAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2ltcG9ydCAiV0tFcnJvckludGVybmFs
LmgiCisjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMUmVxdWVzdC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9EcmFnSXRlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9HZW9tZXRyeVV0aWxpdGllcy5oPgogI2lt
cG9ydCA8V2ViQ29yZS9IaWdobGlnaHRWaXNpYmlsaXR5Lmg+CkBAIC04NSwxMyArODYsNiBAQCBT
T0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUksoV2ViQ29udGVudEFuYWx5c2lzKTsKIFNPRlRfTElO
S19DTEFTUyhXZWJDb250ZW50QW5hbHlzaXMsIFdlYkZpbHRlckV2YWx1YXRvcik7CiAjZW5kaWYK
IAotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0vLyBGSVhNRTogVGhpcyBhZGRpdGlvbnMg
ZmlsZSBzaG91bGQgYmUgcmVuYW1lZCB0byBXZWJQYWdlUHJveHlBZGRpdGlvbnMubW0uCi0jaW1w
b3J0IDxXZWJLaXRBZGRpdGlvbnMvV2ViUGFnZVByb3h5QWRkaXRpb25zLmg+Ci0jZWxzZQotI2Rl
ZmluZSBXRUJfUEFHRV9QUk9YWV9BRERJVElPTlMKLSNlbmRpZgotCiAjZGVmaW5lIE1FU1NBR0Vf
Q0hFQ0soYXNzZXJ0aW9uKSBNRVNTQUdFX0NIRUNLX0JBU0UoYXNzZXJ0aW9uLCBwcm9jZXNzKCku
Y29ubmVjdGlvbigpKQogI2RlZmluZSBNRVNTQUdFX0NIRUNLX0NPTVBMRVRJT04oYXNzZXJ0aW9u
LCBjb21wbGV0aW9uKSBNRVNTQUdFX0NIRUNLX0NPTVBMRVRJT05fQkFTRShhc3NlcnRpb24sIHBy
b2Nlc3MoKS5jb25uZWN0aW9uKCksIGNvbXBsZXRpb24pCiAKQEAgLTY3Miw3ICs2NjYsMTIgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm8oQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib28KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldExhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIFdFQl9Q
QUdFX1BST1hZX0FERElUSU9OUworI2lmIEVOQUJMRShBUFBfUFJJVkFDWV9SRVBPUlQpCisgICAg
YXV0byAqbnNSZXF1ZXN0ID0gcmVxdWVzdC5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlV
cGRhdGVQb2xpY3k6OkRvTm90VXBkYXRlSFRUUEJvZHkpOworICAgIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0JFR0lOCisgICAgcmVxdWVzdC5zZXRJc0FwcEJvdW5kKCFuc1JlcXVlc3Qu
X2lzTm9uQXBwSW5pdGlhdGVkKTsKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19F
TkQKKyNlbmRpZgogICAgIG1fbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCA9IHJlcXVlc3QuaXNB
cHBCb3VuZCgpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggNzE3MTc5NjZlZDg5NDc4OTNlZDlkYTM5MTUyMWVhOTJjMTc3MjY3ZS4uMjU5
YmQ4NGI4ZGM4OWY0OWJhMjJiYmQ4NTVjMzBkMTFjODlkNzEyYyAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTA2
LTE1ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAg
IE1pZ3JhdGUgQXBwIFByaXZhY3kgUmVwb3J0IGNvZGUgZnJvbSBXZWJLaXRBZGRpdGlvbnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzA0NQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNzQzMzMyODc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0luQXBwQnJvd3NlclByaXZhY3kubW06CisKIDIwMjEtMDYtMTUgIEpvbmF0aGFuIEJlZGFyZCAg
PGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1MgMTVdIFN1cHBvcnQgYnVpbGRpbmcg
V2ViS2l0CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0luQXBwQnJvd3NlclByaXZhY3kubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KaW5kZXggMmFlOTU1M2I4MWY1ZDg0NTM5YThk
YTcxNDMwZDk3YTVlZjViZTkzMy4uZjU4MDM5MzAwYjllN2IzZDc3NmY4NThiMzk3ZmI5YWEzMzlh
NjU4MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9J
bkFwcEJyb3dzZXJQcml2YWN5Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQpAQCAtMzMsNiArMzMsOCBAQAogI2ltcG9y
dCAiVGVzdFVSTFNjaGVtZUhhbmRsZXIuaCIKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKICNp
bXBvcnQgIldLV2ViVmlld0NvbmZpZ3VyYXRpb25FeHRyYXMuaCIKKyNpbXBvcnQgPENGTmV0d29y
ay9DRk5TVVJMQ29ubmVjdGlvbi5oPgorI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTFJlcXVlc3Qu
aD4KICNpbXBvcnQgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbXBvcnQgPFdlYkNv
cmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tIVFRQQ29v
a2llU3RvcmVQcml2YXRlLmg+CkBAIC00NiwxMCArNDgsNiBAQAogI2ltcG9ydCA8d3RmL1J1bkxv
b3AuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgVVNFKEFQUExFX0lO
VEVSTkFMX1NESykKLSNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9JbkFwcEJyb3dzZXJQcml2YWN5
QWRkaXRpb25zLmg+Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKIAog
c3RhdGljIGJvb2wgaXNEb25lOwpAQCAtMTQyMCw3ICsxNDE4LDcgQEAgVEVTVChJbkFwcEJyb3dz
ZXJQcml2YWN5LCBBYm91dEJsYW5rU3ViRnJhbWVNYXRjaGVzVG9wRnJhbWVOb25BcHBCb3VuZCkK
IAogI2VuZGlmIC8vIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKIAotI2lmIFVTRShBUFBMRV9J
TlRFUk5BTF9TREspICYmIEVOQUJMRShBUFBfQk9VTkRfUkVRVUVTVFMpCisjaWYgVVNFKEFQUExF
X0lOVEVSTkFMX1NESykgJiYgRU5BQkxFKEFQUF9QUklWQUNZX1JFUE9SVCkKIFRFU1QoSW5BcHBC
cm93c2VyUHJpdmFjeSwgQXBwQm91bmRSZXF1ZXN0KQogewogICAgIGF1dG8gY29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0x
NDMwLDcgKzE0MjgsMTAgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZFJlcXVl
c3QpCiAKICAgICBfX2Jsb2NrIGJvb2wgaXNEb25lID0gZmFsc2U7CiAgICAgTlNNdXRhYmxlVVJM
UmVxdWVzdCAqbm9uQXBwQm91bmRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVz
dFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6dXJsXV07Ci0gICAgQVBQX0JPVU5EX1JFUVVF
U1RfQURESVRJT05TCisKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgor
ICAgIG5vbkFwcEJvdW5kUmVxdWVzdC5faXNOb25BcHBJbml0aWF0ZWQgPSBZRVM7CisgICAgQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBbd2ViVmlldyBsb2FkUmVxdWVz
dDpub25BcHBCb3VuZFJlcXVlc3RdOwogICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5p
c2hOYXZpZ2F0aW9uXTsKQEAgLTE0ODQsNyArMTQ4NSw5IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJp
dmFjeSwgQXBwQm91bmRSZXF1ZXN0V2l0aE5hdmlnYXRpb24pCiAgICAgCiAgICAgaXNEb25lID0g
ZmFsc2U7CiAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqbm9uQXBwQm91bmRSZXF1ZXN0ID0gW05T
TXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6bm9u
QXBwQm91bmRVUkxdXTsKLSAgICBBUFBfQk9VTkRfUkVRVUVTVF9BRERJVElPTlMKKyAgICBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgorICAgIG5vbkFwcEJvdW5kUmVxdWVzdC5f
aXNOb25BcHBJbml0aWF0ZWQgPSBZRVM7CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfRU5ECiAgICAgCiAgICAgaXNEb25lID0gZmFsc2U7CiAgICAgW3dlYlZpZXcgX2NsZWFyQXBw
Qm91bmROYXZpZ2F0aW9uRGF0YTpeewpAQCAtMTU0Miw3ICsxNTQ1LDkgQEAgVEVTVChJbkFwcEJy
b3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZFJlcXVlc3RXaXRoU3ViRnJhbWUpCiAgICAgX19ibG9j
ayBib29sIGlzRG9uZSA9IGZhbHNlOwogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIE5TTXV0YWJsZVVSTFJl
cXVlc3QgKm5vbkFwcEJvdW5kUmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RX
aXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJwYWdlLXdpdGgt
Y3NwIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5y
ZXNvdXJjZXMiXV07Ci0gICAgQVBQX0JPVU5EX1JFUVVFU1RfQURESVRJT05TCisgICAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KKyAgICBub25BcHBCb3VuZFJlcXVlc3QuX2lz
Tm9uQXBwSW5pdGlhdGVkID0gWUVTOworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0VORAogCiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6bm9uQXBwQm91bmRSZXF1ZXN0XTsKIApA
QCAtMTYyMiw3ICsxNjI3LDkgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChSZXNwb25zZVR5cGUgcmVz
cG9uc2VUeXBlLCBJc0FwcEJvdW5kIGFwcEJvdW5kKQogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVz
dCA9IHNlcnZlci5yZXF1ZXN0KCk7CiAgICAgaWYgKGFwcEJvdW5kID09IElzQXBwQm91bmQ6Ok5v
KSB7CiAgICAgICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5vbkFwcEJvdW5kUmVxdWVzdCA9IFtO
U011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVy
LnBvcnQoKV1dXTsKLSAgICAgICAgQVBQX0JPVU5EX1JFUVVFU1RfQURESVRJT05TCisgICAgICAg
IEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCisgICAgICAgIG5vbkFwcEJvdW5k
UmVxdWVzdC5faXNOb25BcHBJbml0aWF0ZWQgPSBZRVM7CisgICAgICAgIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0VORAogICAgICAgICByZXF1ZXN0ID0gbm9uQXBwQm91bmRSZXF1ZXN0
OwogICAgIH0KIApAQCAtMTczMCw3ICsxNzM3LDkgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5
LCBNdWx0aXBsZVdlYlZpZXdzV2l0aFNoYXJlZFNlcnZpY2VXb3JrZXIpCiAKICAgICBpc0RvbmUg
PSBmYWxzZTsKICAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpub25BcHBCb3VuZFJlcXVlc3QgPSBb
TlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkL21haW4uaHRt
bCIsIHNlcnZlci5wb3J0KCldXV07Ci0gICAgQVBQX0JPVU5EX1JFUVVFU1RfQURESVRJT05TCisg
ICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KKyAgICBub25BcHBCb3VuZFJl
cXVlc3QuX2lzTm9uQXBwSW5pdGlhdGVkID0gWUVTOworICAgIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0VORAogICAgIFt3ZWJWaWV3MiBsb2FkUmVxdWVzdDpub25BcHBCb3VuZFJlcXVl
c3RdOwogICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldzIgX3Rlc3Rfd2FpdEZvckFsZXJ0XSwg
ImZldGNoZWQgZnJvbSBzZXJ2ZXIiKTsKIApAQCAtMTc4MCw3ICsxNzg5LDkgQEAgc3RhdGljIHZv
aWQgc29mdFVwZGF0ZVRlc3QoSXNBcHBCb3VuZCBpc0FwcEJvdW5kKQogICAgICAgICBOU1VSTFJl
cXVlc3QgKnJlcXVlc3QgPSBzZXJ2ZXIxLnJlcXVlc3QoKTsKICAgICAgICAgaWYgKGlzQXBwQm91
bmQgPT0gSXNBcHBCb3VuZDo6Tm8pIHsKICAgICAgICAgICAgIE5TTXV0YWJsZVVSTFJlcXVlc3Qg
Km5vbkFwcEJvdW5kUmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6
Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyMS5wb3J0KCldXV07Ci0gICAgICAgICAgICBBUFBfQk9V
TkRfUkVRVUVTVF9BRERJVElPTlMKKyAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0JFR0lOCisgICAgICAgICAgICBub25BcHBCb3VuZFJlcXVlc3QuX2lzTm9uQXBwSW5p
dGlhdGVkID0gWUVTOworICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
RU5ECiAgICAgICAgICAgICByZXF1ZXN0ID0gbm9uQXBwQm91bmRSZXF1ZXN0OwogICAgICAgICB9
CiAKQEAgLTE3OTksNyArMTgxMCw5IEBAIHN0YXRpYyB2b2lkIHNvZnRVcGRhdGVUZXN0KElzQXBw
Qm91bmQgaXNBcHBCb3VuZCkKICAgICAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0MiA9IHNlcnZl
cjIucmVxdWVzdCgpOwogICAgICAgICBpZiAoaXNBcHBCb3VuZCA9PSBJc0FwcEJvdW5kOjpObykg
ewogICAgICAgICAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqbm9uQXBwQm91bmRSZXF1ZXN0ID0g
W05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwczovLzEyNy4wLjAuMTolZC8iLCBzZXJ2
ZXIyLnBvcnQoKV1dXTsKLSAgICAgICAgICAgIEFQUF9CT1VORF9SRVFVRVNUX0FERElUSU9OUwor
ICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KKyAgICAgICAg
ICAgIG5vbkFwcEJvdW5kUmVxdWVzdC5faXNOb25BcHBJbml0aWF0ZWQgPSBZRVM7CisgICAgICAg
ICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgICAgIHJlcXVl
c3QyID0gbm9uQXBwQm91bmRSZXF1ZXN0OwogICAgICAgICB9CiAKQEAgLTE4NTAsNyArMTg2Myw5
IEBAIHN0YXRpYyB2b2lkIHJ1bldlYlByb2Nlc3NQbHVnSW5UZXN0KElzQXBwQm91bmQgaXNBcHBC
b3VuZCkKICAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJl
cXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6dXJsXV07CiAgICAgaWYg
KGlzQXBwQm91bmQgPT0gSXNBcHBCb3VuZDo6Tm8pIHsKICAgICAgICAgTlNNdXRhYmxlVVJMUmVx
dWVzdCAqbm9uQXBwQm91bmRSZXF1ZXN0ID0gcmVxdWVzdDsKLSAgICAgICAgQVBQX0JPVU5EX1JF
UVVFU1RfQURESVRJT05TCisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JF
R0lOCisgICAgICAgIG5vbkFwcEJvdW5kUmVxdWVzdC5faXNOb25BcHBJbml0aWF0ZWQgPSBZRVM7
CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICByZXF1
ZXN0ID0gbm9uQXBwQm91bmRSZXF1ZXN0OwogICAgIH0KIApAQCAtMjAwNSw3ICsyMDIwLDkgQEAg
VEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRVcGRh
dGVzQXBwQm91bmRWYWx1ZSkKICAgICBleHBlY3RlZE1lc3NhZ2UgPSAic3RhcnRzIGFwcC1ib3Vu
ZCI7CiAgICAgcmVjZWl2ZWRNZXNzYWdlID0gZmFsc2U7CiAgICAgTlNNdXRhYmxlVVJMUmVxdWVz
dCAqbm9uQXBwQm91bmRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhV
Ukw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRw
Oi8vMTI3LjAuMC4xOiVkL21haW4uaHRtbCIsIHNlcnZlci5wb3J0KCldXV07Ci0gICAgQVBQX0JP
VU5EX1JFUVVFU1RfQURESVRJT05TCisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
QkVHSU4KKyAgICBub25BcHBCb3VuZFJlcXVlc3QuX2lzTm9uQXBwSW5pdGlhdGVkID0gWUVTOwor
ICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAgICAgW3dlYlZpZXcyIGxv
YWRSZXF1ZXN0Om5vbkFwcEJvdW5kUmVxdWVzdF07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZyZWNlaXZlZE1lc3NhZ2UpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431691</attachid>
            <date>2021-06-17 11:01:17 -0700</date>
            <delta_ts>2021-06-17 12:11:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227045-20210617110116.patch</filename>
            <type>text/plain</type>
            <size>22362</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4ODc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDc0ZjMwMjk3YWI2OTRmODRmNDVkYmFl
YzQwN2QxODQ0ZmM4NTUwZmEuLmZjZmVjZWMzY2ZiMjgzNTgwZGYyMGM1OThjZWFmNzVlYmNjYjk0
NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDYtMTUgIEthdGUgQ2hlbmV5ICA8a2F0aGVy
aW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgTWlncmF0ZSBBcHAgUHJpdmFjeSBSZXBv
cnQgY29kZSBmcm9tIFdlYktpdEFkZGl0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3MDQ1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDMz
MzI4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
cGRhdGUgY29tcGlsZSBmbGFnIG5hbWluZyB0byBhbGlnbiB3aXRoIHRoZSBBcHAgUHJpdmFjeSBS
ZXBvcnQKKyAgICAgICAgZmVhdHVyZS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVuYWJsZUNv
Y29hLmg6CisKIDIwMjEtMDYtMTQgIFBlciBBcm5lICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgW2lPU10gU3luYyBBY2Nlc3NpYmlsaXR5IHByZWZlcmVuY2VzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNj
OTVmMWY5MDI5NjQ0NDBiZWUyMDBmODhiZTkyYWFmOWU1MzVkNTAuLjBlNDIzNWNiOWJkYzliN2Zk
ZGJmYzNmZjMwZTExZjI2MzUzMjdkMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjEt
MDYtMTUgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAg
ICAgTWlncmF0ZSBBcHAgUHJpdmFjeSBSZXBvcnQgY29kZSBmcm9tIFdlYktpdEFkZGl0aW9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3MDQ1Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDMzMzI4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVyZWQgYnkgZXhpc3Rp
bmcgdGVzdHMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRh
c2tDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdv
cmtEYXRhVGFza0NvY29hKToKKyAgICAgICAgKGNvbnRleHRTdHJpbmcpOiBEZWxldGVkLgorICAg
ICAgICBUaGlzIHBhdGNoIGRlbGV0ZXMgdGhlIGNvbnRleHRTdHJpbmcgZnVuY3Rpb24gYmVjYXVz
ZSBpdCBpcyBubyBsb25nZXIKKyAgICAgICAgbmVlZGVkIG5vdyB0aGF0IENGTmV0d29yayBzZXRz
IHRoZSBhdHRyaWJ1dGlvbiBjb250ZXh0LCBhbmQgaXQgc2VlbWVkCisgICAgICAgIHNpbGx5IHRv
IG1pZ3JhdGUgY29kZSBmcm9tIFdlYktpdEFkZGl0aW9ucyBqdXN0IHRvIGRlbGV0ZSBpdAorICAg
ICAgICBpbW1lZGlhdGVseS4gVGhpcyBhbHNvIG1vdmVzIHRoZSBwcm9jZXNzUENNUmVxdWVzdCBm
dW5jdGlvbgorICAgICAgICBkZWNsYXJhdGlvbiBmcm9tIFdlYktpdEFkZGl0aW9ucyBzbyB3ZSBj
YW4gcmVtb3ZlCisgICAgICAgIE5FVFdPUktfREFUQV9UQVNLX0NPQ09BX0FERElUSU9OUy4KKwor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06Cisg
ICAgICAgIChXZWJLaXQ6OmlzQWN0aW5nT25CZWhhbGZPZkFGdWxsV2ViQnJvd3Nlcik6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OnJlbW92ZU5ldHdvcmtXZWJzaXRlRGF0
YSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQp
OgorCiAyMDIxLTA2LTE1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBDYWNoZXM6OnJlbW92ZUNhY2hlRW50cnkgc2hvdWxkIGNoZWNrIGZvciBtX3N0b3JhZ2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaCBiL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaAppbmRleCA2MmM4ZWMxMTY3NzZkOWJmNzAz
MzVkNDdhMDg5Zjg5MGNlYzZjOTRhLi4xNzk2YzM5ZDczNTlkMDkxOThlZjU5YmQwNzJjYWFiNGZl
NGQxNjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmgK
KysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCkBAIC02OTUsOCArNjk1
LDggQEAKICNkZWZpbmUgRU5BQkxFX05PVElGWV9GSUxURVJJTkcgMQogI2VuZGlmCiAKLSNpZiAh
ZGVmaW5lZChFTkFCTEVfQVBQX0JPVU5EX1JFUVVFU1RTKSAmJiBQTEFURk9STShJT1NfRkFNSUxZ
KSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxNTAwMDAKLSNkZWZpbmUg
RU5BQkxFX0FQUF9CT1VORF9SRVFVRVNUUyAxCisjaWYgIWRlZmluZWQoRU5BQkxFX0FQUF9QUklW
QUNZX1JFUE9SVCkgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTUwMDAwCisjZGVmaW5lIEVOQUJMRV9BUFBfUFJJVkFDWV9SRVBP
UlQgMQogI2VuZGlmCiAKICNpZiAhZGVmaW5lZChFTkFCTEVfREVTVElOQVRJT05fQ09MT1JfU1BB
Q0VfRElTUExBWV9QMykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCmluZGV4IDM0MGQ3ZGFjMjg2YjczYjgz
YzUxZWJkMGY2ODBmYzRhYmY5ZGFmOTUuLmY3NGIzMTI5ZmU3MmJjOWZjZTYyMzYwNjA2ZDNiMzli
MDcxMmNmODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya0RhdGFUYXNrQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQpAQCAtNTcsOCArNTcsNyBAQAogI2lmIFVT
RShBUFBMRV9JTlRFUk5BTF9TREspCiAjaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvTmV0d29ya0Rh
dGFUYXNrQ29jb2FBZGRpdGlvbnMuaD4KICNlbHNlCi0jZGVmaW5lIE5FVFdPUktfREFUQV9UQVNL
X0NPQ09BX0FERElUSU9OUyBVTlVTRURfVkFSSUFCTEUocGNtRGF0YUNhcnJpZWQpOwotc3RhdGlj
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGNvbnRleHRTdHJpbmcoTlNVUkxSZXF1ZXN0ICop
IHsgcmV0dXJuIHsgfTsgfQorc3RhdGljIHZvaWQgcHJvY2Vzc1BDTVJlcXVlc3QoV2ViQ29yZTo6
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkLCBOU011dGFibGVVUkxSZXF1
ZXN0ICopIHsgfTsKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTMzOCwyNCArMzM3
LDMxIEBAIE5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3Jr
U2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUCiAjZW5kaWYKICAgICByZXN0cmljdFJlcXVl
c3RSZWZlcnJlclRvT3JpZ2luSWZOZWVkZWQocmVxdWVzdCk7CiAKLSAgICAvLyBGSVhNRTogT25j
ZSB3ZSBhcmUgZG9uZSB3aXRoIE5FVFdPUktfREFUQV9UQVNLX0NPQ09BX0FERElUSU9OUywgbWFr
ZSBuc1JlcXVlc3QgYSBSZXRhaW5QdHIgYW5kIGdldCByaWQgb2YgcHJvdGVjdGVkTlNSZXF1ZXN0
IGFuZCBwY21EYXRhQ2FycmllZC4KLSAgICBOU1VSTFJlcXVlc3QgKm5zUmVxdWVzdCA9IHJlcXVl
c3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5OjpVcGRhdGVIVFRQ
Qm9keSk7Ci0gICAgYXV0byBwY21EYXRhQ2FycmllZCA9IHBhcmFtZXRlcnMucGNtRGF0YUNhcnJp
ZWQ7CisgICAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gbnNSZXF1ZXN0ID0gcmVxdWVzdC5uc1VS
TFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OlVwZGF0ZUhUVFBCb2R5KTsK
KyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlVVJMUmVxdWVzdD4gbXV0YWJsZVJlcXVlc3QgPSBhZG9w
dE5TKFtuc1JlcXVlc3QuZ2V0KCkgbXV0YWJsZUNvcHldKTsKIAotICAgIE5FVFdPUktfREFUQV9U
QVNLX0NPQ09BX0FERElUSU9OUworI2lmIEVOQUJMRShBUFBfUFJJVkFDWV9SRVBPUlQpCisgICAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KKyAgICBtdXRhYmxlUmVxdWVzdC5n
ZXQoKS5faXNOb25BcHBJbml0aWF0ZWQgPSAhcmVxdWVzdC5pc0FwcEJvdW5kKCk7CisgICAgQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECisjZW5kaWYKKworICAgIGlmIChwYXJhbWV0
ZXJzLnBjbURhdGFDYXJyaWVkKQorICAgICAgICBwcm9jZXNzUENNUmVxdWVzdCgqcGFyYW1ldGVy
cy5wY21EYXRhQ2FycmllZCwgbXV0YWJsZVJlcXVlc3QuZ2V0KCkpOworCisgICAgbnNSZXF1ZXN0
ID0gbXV0YWJsZVJlcXVlc3Q7CiAKLSAgICBhdXRvIHByb3RlY3RlZE5TUmVxdWVzdCA9IHJldGFp
blB0cihuc1JlcXVlc3QpOwotICAgIG1fc2Vzc2lvbi0+YXBwQm91bmROYXZpZ2F0aW9uVGVzdGlu
Z0RhdGEoKS51cGRhdGVBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YShyZXF1ZXN0LCBjb250
ZXh0U3RyaW5nKHByb3RlY3RlZE5TUmVxdWVzdC5nZXQoKSkpOworICAgIG1fc2Vzc2lvbi0+YXBw
Qm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEoKS51cGRhdGVBcHBCb3VuZE5hdmlnYXRpb25UZXN0
aW5nRGF0YShyZXF1ZXN0LCByZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCkuaXNFbXB0eSgp
ID8gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4ocmVxdWVzdC51cmwoKSkgOiBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbihyZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCkpKTsKIAotICAg
IGFwcGx5U25pZmZpbmdQb2xpY2llc0FuZEJpbmRSZXF1ZXN0VG9JbmZlcmZhY2VJZk5lZWRlZChw
cm90ZWN0ZWROU1JlcXVlc3QsIHBhcmFtZXRlcnMuY29udGVudFNuaWZmaW5nUG9saWN5ID09IFdl
YkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeTo6U25pZmZDb250ZW50ICYmICF1cmwuaXNMb2Nh
bEZpbGUoKSwgcGFyYW1ldGVycy5jb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSA9PSBXZWJD
b3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeTo6U25pZmYpOworICAgIGFwcGx5U25p
ZmZpbmdQb2xpY2llc0FuZEJpbmRSZXF1ZXN0VG9JbmZlcmZhY2VJZk5lZWRlZChuc1JlcXVlc3Qs
IHBhcmFtZXRlcnMuY29udGVudFNuaWZmaW5nUG9saWN5ID09IFdlYkNvcmU6OkNvbnRlbnRTbmlm
ZmluZ1BvbGljeTo6U25pZmZDb250ZW50ICYmICF1cmwuaXNMb2NhbEZpbGUoKSwgcGFyYW1ldGVy
cy5jb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSA9PSBXZWJDb3JlOjpDb250ZW50RW5jb2Rp
bmdTbmlmZmluZ1BvbGljeTo6U25pZmYpOwogCi0gICAgbV90YXNrID0gW21fc2Vzc2lvbldyYXBw
ZXItPnNlc3Npb24gZGF0YVRhc2tXaXRoUmVxdWVzdDpwcm90ZWN0ZWROU1JlcXVlc3QuZ2V0KCld
OworICAgIG1fdGFzayA9IFttX3Nlc3Npb25XcmFwcGVyLT5zZXNzaW9uIGRhdGFUYXNrV2l0aFJl
cXVlc3Q6bnNSZXF1ZXN0LmdldCgpXTsKIAogICAgIFdURkJlZ2luU2lnbnBvc3QobV90YXNrLmdl
dCgpLCAiRGF0YVRhc2siLCAiJXtwdWJsaWN9cyBwcmk6ICUuMmYgcHJlY29ubmVjdDogJWQiLCB1
cmwuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCksIHRvTlNVUkxTZXNzaW9uVGFza1ByaW9yaXR5KHJl
cXVlc3QucHJpb3JpdHkoKSksIHBhcmFtZXRlcnMuc2hvdWxkUHJlY29ubmVjdE9ubHkgPT0gUHJl
Y29ubmVjdE9ubHk6Olllcyk7CiAKICAgICBSRUxFQVNFX0FTU0VSVCghbV9zZXNzaW9uV3JhcHBl
ci0+ZGF0YVRhc2tNYXAuY29udGFpbnMoW21fdGFzayB0YXNrSWRlbnRpZmllcl0pKTsKICAgICBt
X3Nlc3Npb25XcmFwcGVyLT5kYXRhVGFza01hcC5hZGQoW21fdGFzayB0YXNrSWRlbnRpZmllcl0s
IHRoaXMpOwotICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVsdSBDcmVhdGluZyBOZXR3b3JrRGF0
YVRhc2sgd2l0aCBVUkwgJXMiLCAodW5zaWduZWQgbG9uZylbbV90YXNrIHRhc2tJZGVudGlmaWVy
XSwgW3Byb3RlY3RlZE5TUmVxdWVzdCBVUkxdLmFic29sdXRlU3RyaW5nLlVURjhTdHJpbmcpOwor
ICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVsdSBDcmVhdGluZyBOZXR3b3JrRGF0YVRhc2sgd2l0
aCBVUkwgJXMiLCAodW5zaWduZWQgbG9uZylbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgW25zUmVx
dWVzdCBVUkxdLmFic29sdXRlU3RyaW5nLlVURjhTdHJpbmcpOwogCiAgICAgaWYgKHBhcmFtZXRl
cnMuc2hvdWxkUHJlY29ubmVjdE9ubHkgPT0gUHJlY29ubmVjdE9ubHk6OlllcykgewogI2lmIEVO
QUJMRShTRVJWRVJfUFJFQ09OTkVDVCkKQEAgLTM3Miw5ICszNzgsOSBAQCBOZXR3b3JrRGF0YVRh
c2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5l
dHdvcmtEYXRhVAogICAgIGlmIChzaG91bGRCbG9ja0Nvb2tpZXMpIHsKICNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKICAgICAgICAgaWYgKG1fc2Vzc2lvbi0+c2hvdWxkTG9nQ29va2llSW5mb3Jt
YXRpb24oKSkKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxs
b3dlZCgpLCBOZXR3b3JrLCAiJXAgLSBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6bG9nQ29va2llSW5m
b3JtYXRpb246IHBhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIiwgdGFza0lE
PSVsdTogQmxvY2tpbmcgY29va2llcyBmb3IgVVJMICVzIiwgdGhpcywgcGFnZUlEKCkudG9VSW50
NjQoKSwgZnJhbWVJRCgpLnRvVUludDY0KCksICh1bnNpZ25lZCBsb25nKVttX3Rhc2sgdGFza0lk
ZW50aWZpZXJdLCBbcHJvdGVjdGVkTlNSZXF1ZXN0IFVSTF0uYWJzb2x1dGVTdHJpbmcuVVRGOFN0
cmluZyk7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93
ZWQoKSwgTmV0d29yaywgIiVwIC0gTmV0d29ya0RhdGFUYXNrQ29jb2E6OmxvZ0Nvb2tpZUluZm9y
bWF0aW9uOiBwYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIsIHRhc2tJRD0l
bHU6IEJsb2NraW5nIGNvb2tpZXMgZm9yIFVSTCAlcyIsIHRoaXMsIHBhZ2VJRCgpLnRvVUludDY0
KCksIGZyYW1lSUQoKS50b1VJbnQ2NCgpLCAodW5zaWduZWQgbG9uZylbbV90YXNrIHRhc2tJZGVu
dGlmaWVyXSwgW25zUmVxdWVzdCBVUkxdLmFic29sdXRlU3RyaW5nLlVURjhTdHJpbmcpOwogI2Vs
c2UKLSAgICAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiJWx1IEJsb2NraW5nIGNvb2tpZXMgZm9y
IFVSTCAlcyIsICh1bnNpZ25lZCBsb25nKVttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCBbcHJvdGVj
dGVkTlNSZXF1ZXN0IFVSTF0uYWJzb2x1dGVTdHJpbmcuVVRGOFN0cmluZyk7CisgICAgICAgIExP
RyhOZXR3b3JrU2Vzc2lvbiwgIiVsdSBCbG9ja2luZyBjb29raWVzIGZvciBVUkwgJXMiLCAodW5z
aWduZWQgbG9uZylbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgW25zUmVxdWVzdCBVUkxdLmFic29s
dXRlU3RyaW5nLlVURjhTdHJpbmcpOwogI2VuZGlmCiAgICAgICAgIGJsb2NrQ29va2llcygpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya1Nlc3Npb25Db2NvYS5tbQppbmRleCBmNzdjZTc5NDkxYWUwZWFhMzExNTYzZDgxYTdi
ZDBhM2Y0NjRlYTVjLi40ZjBjZjU5Zjc5NmY4YzdiYjIxNDE1OWVkN2M4YzIwMjZiOTY1OTAwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNz
aW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC01OSwxMCArNTksMzEgQEAKICNpbXBvcnQgPHd0Zi9Tb2Z0
TGlua2luZy5oPgogI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRy
Lmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KKyNpbXBvcnQgPHd0Zi9kYXJ3
aW4vV2Vha0xpbmtpbmcuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYg
VVNFKEFQUExFX0lOVEVSTkFMX1NESykKICNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9OZXR3b3Jr
U2Vzc2lvbkNvY29hQWRkaXRpb25zLmg+CisKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1V
TEFUT1IpCisjaW1wb3J0IDxTeW1wdG9tcy9TeW1wdG9tQW5hbHl0aWNzLmg+CisjaW1wb3J0IDxT
eW1wdG9tcy9TeW1wdG9tUHJlc2VudGF0aW9uRmVlZC5oPgorI2VuZGlmCisKKyNpZiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpICYmICFQTEFURk9STShXQVRDSE9TKQorU09GVF9MSU5L
X1BSSVZBVEVfRlJBTUVXT1JLX0lOX1VNQlJFTExBX09QVElPTkFMKFN5bXB0b21zLCBTeW1wdG9t
QW5hbHl0aWNzKTsKK1NPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SS19JTl9VTUJSRUxMQV9PUFRJ
T05BTChTeW1wdG9tcywgU3ltcHRvbVByZXNlbnRhdGlvbkZlZWQpOworU09GVF9MSU5LX1BSSVZB
VEVfRlJBTUVXT1JLX0lOX1VNQlJFTExBX09QVElPTkFMKFN5bXB0b21zLCBTeW1wdG9tUHJlc2Vu
dGF0aW9uTGl0ZSk7CitTT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoU3ltcHRvbUFuYWx5dGljcywg
QW5hbHl0aWNzV29ya3NwYWNlKTsKK1NPRlRfTElOS19DTEFTU19PUFRJT05BTChTeW1wdG9tUHJl
c2VudGF0aW9uRmVlZCwgVXNhZ2VGZWVkKTsKK1NPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChT
eW1wdG9tUHJlc2VudGF0aW9uRmVlZCwga1N5bXB0b21BbmFseXRpY3NTZXJ2aWNlRG9tYWluVHJh
Y2tpbmdDbGVhckhpc3RvcnlCdW5kbGVJRHMsIGNvbnN0IE5TU3RyaW5nICopOworU09GVF9MSU5L
X0NPTlNUQU5UX01BWV9GQUlMKFN5bXB0b21QcmVzZW50YXRpb25GZWVkLCBrU3ltcHRvbUFuYWx5
dGljc1NlcnZpY2VEb21haW5UcmFja2luZ0NsZWFySGlzdG9yeVN0YXJ0RGF0ZSwgY29uc3QgTlNT
dHJpbmcgKik7CitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoU3ltcHRvbVByZXNlbnRhdGlv
bkZlZWQsIGtTeW1wdG9tQW5hbHl0aWNzU2VydmljZURvbWFpblRyYWNraW5nQ2xlYXJIaXN0b3J5
RW5kRGF0ZSwgY29uc3QgTlNTdHJpbmcgKik7CitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwo
U3ltcHRvbVByZXNlbnRhdGlvbkZlZWQsIGtTeW1wdG9tQW5hbHl0aWNzU2VydmljZURvbWFpblRy
YWNraW5nQ2xlYXJIaXN0b3J5S2V5LCBjb25zdCBOU1N0cmluZyAqKTsKK1NPRlRfTElOS19DT05T
VEFOVF9NQVlfRkFJTChTeW1wdG9tUHJlc2VudGF0aW9uTGl0ZSwga1N5bXB0b21BbmFseXRpY3NT
ZXJ2aWNlRW5kcG9pbnQsIE5TU3RyaW5nICopCisjZW5kaWYKKwogI2Vsc2UKICNkZWZpbmUgTkVU
V09SS19TRVNTSU9OX0NPQ09BX0FERElUSU9OU18xCiB2b2lkIFdlYktpdDo6TmV0d29ya1Nlc3Np
b25Db2NvYTo6cmVtb3ZlTmV0d29ya1dlYnNpdGVEYXRhKHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+
LCBzdGQ6Om9wdGlvbmFsPEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+PiYmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlv
bkhhbmRsZXIoKTsgfQpAQCAtMTc2MSw0ICsxNzgyLDg1IEBAIHZvaWQgTmV0d29ya1Nlc3Npb25D
b2NvYTo6Y2xlYXJBbHRlcm5hdGl2ZVNlcnZpY2VzKFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpCiAj
ZW5kaWYKIH0KIAorI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisKKyNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWV9TSU1VTEFUT1IpICYmICFQTEFURk9STShXQVRDSE9TKQorc3RhdGljIGJvb2wg
aXNBY3RpbmdPbkJlaGFsZk9mQUZ1bGxXZWJCcm93c2VyKGNvbnN0IFN0cmluZyYgYnVuZGxlSUQp
Cit7CisgICAgcmV0dXJuIGJ1bmRsZUlEID09ICJjb20uYXBwbGUud2ViYm9va21hcmtzZCI7Cit9
CisjZW5kaWYKKwordm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpyZW1vdmVOZXR3b3JrV2Vic2l0
ZURhdGEoc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gbW9kaWZpZWRTaW5jZSwgc3RkOjpvcHRpb25h
bDxIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPj4mJiBkb21haW5zLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisjaWYgIVBMQVRGT1JN
KElPU19GQU1JTFlfU0lNVUxBVE9SKSAmJiAhUExBVEZPUk0oV0FUQ0hPUykKKyAgICBhdXRvIGJ1
bmRsZUlEID0gV2ViQ29yZTo6YXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCk7CisgICAgaWYg
KCFpc1BhcmVudFByb2Nlc3NBRnVsbFdlYkJyb3dzZXIobmV0d29ya1Byb2Nlc3MoKSkgJiYgIWlz
QWN0aW5nT25CZWhhbGZPZkFGdWxsV2ViQnJvd3NlcihidW5kbGVJRCkpCisgICAgICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcigpOworCisgICAgaWYgKCFTeW1wdG9tQW5hbHl0aWNzTGlicmFy
eSgpCisgICAgICAgIHx8ICFTeW1wdG9tUHJlc2VudGF0aW9uRmVlZExpYnJhcnkoKQorICAgICAg
ICB8fCAhU3ltcHRvbVByZXNlbnRhdGlvbkxpdGVMaWJyYXJ5KCkKKyAgICAgICAgfHwgIWdldEFu
YWx5dGljc1dvcmtzcGFjZUNsYXNzKCkKKyAgICAgICAgfHwgIWdldFVzYWdlRmVlZENsYXNzKCkK
KyAgICAgICAgfHwgIWNhbkxvYWRrU3ltcHRvbUFuYWx5dGljc1NlcnZpY2VFbmRwb2ludCgpKSB7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBSZXRhaW5QdHI8QW5hbHl0aWNzV29ya3NwYWNlPiB3b3Jrc3BhY2UgPSBhZG9wdE5TKFth
bGxvY0FuYWx5dGljc1dvcmtzcGFjZUluc3RhbmNlKCkgaW5pdFdvcmtzcGFjZVdpdGhTZXJ2aWNl
OmdldGtTeW1wdG9tQW5hbHl0aWNzU2VydmljZUVuZHBvaW50KCldKTsKKyAgICBSZXRhaW5QdHI8
VXNhZ2VGZWVkPiB1c2FnZUZlZWQgPSBhZG9wdE5TKFthbGxvY1VzYWdlRmVlZEluc3RhbmNlKCkg
aW5pdFdpdGhXb3Jrc3BhY2U6d29ya3NwYWNlLmdldCgpXSk7CisKKyAgICBpZiAoIVt1c2FnZUZl
ZWQuZ2V0KCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwZXJmb3JtTmV0d29ya0RvbWFp
bnNBY3Rpb25XaXRoT3B0aW9uczpyZXBseTopXQorICAgICAgICB8fCAhY2FuTG9hZGtTeW1wdG9t
QW5hbHl0aWNzU2VydmljZURvbWFpblRyYWNraW5nQ2xlYXJIaXN0b3J5S2V5KCkKKyAgICAgICAg
fHwgIWNhbkxvYWRrU3ltcHRvbUFuYWx5dGljc1NlcnZpY2VEb21haW5UcmFja2luZ0NsZWFySGlz
dG9yeUJ1bmRsZUlEcygpCisgICAgICAgIHx8ICFjYW5Mb2Fka1N5bXB0b21BbmFseXRpY3NTZXJ2
aWNlRG9tYWluVHJhY2tpbmdDbGVhckhpc3RvcnlTdGFydERhdGUoKQorICAgICAgICB8fCAhY2Fu
TG9hZGtTeW1wdG9tQW5hbHl0aWNzU2VydmljZURvbWFpblRyYWNraW5nQ2xlYXJIaXN0b3J5RW5k
RGF0ZSgpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBhdXRvICpzdGFydERhdGUgPSBbTlNEYXRlIGRpc3RhbnRQYXN0XTsKKyAg
ICBpZiAobW9kaWZpZWRTaW5jZSkgeworICAgICAgICBOU1RpbWVJbnRlcnZhbCB0aW1lSW50ZXJ2
YWwgPSBtb2RpZmllZFNpbmNlLnZhbHVlKCkuc2Vjb25kc1NpbmNlRXBvY2goKS5zZWNvbmRzKCk7
CisgICAgICAgIHN0YXJ0RGF0ZSA9IFtOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZTE5
NzA6dGltZUludGVydmFsXTsKKyAgICB9CisKKyAgICBhdXRvIGNvbnRleHRBcnJheSA9IGFkb3B0
TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgIGlmIChkb21haW5zKSB7Cisg
ICAgICAgIGNvbnRleHRBcnJheSA9IGNyZWF0ZU5TQXJyYXkoKmRvbWFpbnMsIFsmXSAoYXV0byBk
b21haW4pIHsKKyAgICAgICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJp
bmc6ZG9tYWluLnN0cmluZygpLnV0ZjgoKS5kYXRhKCldOworICAgICAgICB9KTsKKyAgICB9CisK
KyAgICBpZiAoaXNBY3RpbmdPbkJlaGFsZk9mQUZ1bGxXZWJCcm93c2VyKGJ1bmRsZUlEKSkKKyAg
ICAgICAgYnVuZGxlSUQgPSAiY29tLmFwcGxlLm1vYmlsZXNhZmFyaSI7CisKKyAgICBOU0RpY3Rp
b25hcnkgKm9wdGlvbnMgPSBAeworICAgICAgICAoaWQpZ2V0a1N5bXB0b21BbmFseXRpY3NTZXJ2
aWNlRG9tYWluVHJhY2tpbmdDbGVhckhpc3RvcnlLZXkoKTogQHsKKyAgICAgICAgICAgIChpZCln
ZXRrU3ltcHRvbUFuYWx5dGljc1NlcnZpY2VEb21haW5UcmFja2luZ0NsZWFySGlzdG9yeUJ1bmRs
ZUlEcygpOiBAeworICAgICAgICAgICAgICAgIGJ1bmRsZUlEIDogY29udGV4dEFycmF5LmdldCgp
LAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIChpZClnZXRrU3ltcHRvbUFuYWx5dGljc1Nl
cnZpY2VEb21haW5UcmFja2luZ0NsZWFySGlzdG9yeVN0YXJ0RGF0ZSgpOiBzdGFydERhdGUsCisg
ICAgICAgICAgICAoaWQpZ2V0a1N5bXB0b21BbmFseXRpY3NTZXJ2aWNlRG9tYWluVHJhY2tpbmdD
bGVhckhpc3RvcnlFbmREYXRlKCk6IFtOU0RhdGUgZGlzdGFudEZ1dHVyZV0KKyAgICAgICAgfQor
ICAgIH07CisKKyAgICBib29sIHJlc3VsdCA9IFt1c2FnZUZlZWQgcGVyZm9ybU5ldHdvcmtEb21h
aW5zQWN0aW9uV2l0aE9wdGlvbnM6b3B0aW9ucyByZXBseTptYWtlQmxvY2tQdHIoW2NvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKE5TRGljdGlvbmFyeSAqcmVw
bHksIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAg
ICAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiRXJyb3IgZGVsZXRpbmcgbmV0d29yayBkb21haW4g
ZGF0YSAlIiBQVUJMSUNfTE9HX1NUUklORywgZXJyb3IpOworCisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7CisgICAgfSkuZ2V0KCldOworCisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIExP
RyhOZXR3b3JrU2Vzc2lvbiwgIkVycm9yIGRlbGV0aW5nIG5ldHdvcmsgZG9tYWluIGRhdGE6IGlu
dmFsaWQgcGFyYW1ldGVyIG9yIGZhaWx1cmUgdG8gY29udGFjdCB0aGUgc2VydmljZSIpOworI2Vs
c2UKKyAgICBVTlVTRURfUEFSQU0obW9kaWZpZWRTaW5jZSk7CisgICAgY29tcGxldGlvbkhhbmRs
ZXIoKTsKKyNlbmRpZgorfQorCisjZW5kaWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCmluZGV4IDg0YjI2YTVmNmMwZDI1YzBjNTIwYzY3Njdm
NTg5M2IwYjlkZDg2OWYuLjI0Njg3MThkOTMxYmNkMDhjYjNmNmVkNzhiOWJmNjFjMGFjMTc2YjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNv
Y29hLm1tCkBAIC00OCw2ICs0OCw3IEBACiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKICNp
bXBvcnQgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbXBvcnQgIldLRXJyb3JJbnRlcm5hbC5oIgor
I2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTFJlcXVlc3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvRHJh
Z0l0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvR2VvbWV0cnlVdGlsaXRpZXMuaD4KICNpbXBvcnQg
PFdlYkNvcmUvSGlnaGxpZ2h0VmlzaWJpbGl0eS5oPgpAQCAtODUsMTMgKzg2LDYgQEAgU09GVF9M
SU5LX1BSSVZBVEVfRlJBTUVXT1JLKFdlYkNvbnRlbnRBbmFseXNpcyk7CiBTT0ZUX0xJTktfQ0xB
U1MoV2ViQ29udGVudEFuYWx5c2lzLCBXZWJGaWx0ZXJFdmFsdWF0b3IpOwogI2VuZGlmCiAKLSNp
ZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotLy8gRklYTUU6IFRoaXMgYWRkaXRpb25zIGZpbGUg
c2hvdWxkIGJlIHJlbmFtZWQgdG8gV2ViUGFnZVByb3h5QWRkaXRpb25zLm1tLgotI2ltcG9ydCA8
V2ViS2l0QWRkaXRpb25zL1dlYlBhZ2VQcm94eUFkZGl0aW9ucy5oPgotI2Vsc2UKLSNkZWZpbmUg
V0VCX1BBR0VfUFJPWFlfQURESVRJT05TCi0jZW5kaWYKLQogI2RlZmluZSBNRVNTQUdFX0NIRUNL
KGFzc2VydGlvbikgTUVTU0FHRV9DSEVDS19CQVNFKGFzc2VydGlvbiwgcHJvY2VzcygpLmNvbm5l
Y3Rpb24oKSkKICNkZWZpbmUgTUVTU0FHRV9DSEVDS19DT01QTEVUSU9OKGFzc2VydGlvbiwgY29t
cGxldGlvbikgTUVTU0FHRV9DSEVDS19DT01QTEVUSU9OX0JBU0UoYXNzZXJ0aW9uLCBwcm9jZXNz
KCkuY29ubmVjdGlvbigpLCBjb21wbGV0aW9uKQogCkBAIC02NzIsNyArNjY2LDEyIEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpyZXF1ZXN0QWN0aXZlTm93UGxheWluZ1Nlc3Npb25JbmZvKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRMYXN0TmF2aWdhdGlv
bldhc0FwcEJvdW5kKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBXRUJfUEFHRV9Q
Uk9YWV9BRERJVElPTlMKKyNpZiBFTkFCTEUoQVBQX1BSSVZBQ1lfUkVQT1JUKQorICAgIGF1dG8g
Km5zUmVxdWVzdCA9IHJlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRl
UG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KTsKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19CRUdJTgorICAgIHJlcXVlc3Quc2V0SXNBcHBCb3VuZCghbnNSZXF1ZXN0Ll9pc05v
bkFwcEluaXRpYXRlZCk7CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECisj
ZW5kaWYKICAgICBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgPSByZXF1ZXN0LmlzQXBwQm91
bmQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDcxNzE3OTY2ZWQ4OTQ3ODkzZWQ5ZGEzOTE1MjFlYTkyYzE3NzI2N2UuLjI1OWJkODRi
OGRjODlmNDliYTIyYmJkODU1YzMwZDExYzg5ZDcxMmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0wNi0xNSAg
S2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBNaWdy
YXRlIEFwcCBQcml2YWN5IFJlcG9ydCBjb2RlIGZyb20gV2ViS2l0QWRkaXRpb25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjcwNDUKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzc0MzMzMjg3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFw
cEJyb3dzZXJQcml2YWN5Lm1tOgorCiAyMDIxLTA2LTE1ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVk
YXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TIDE1XSBTdXBwb3J0IGJ1aWxkaW5nIFdlYktp
dApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFw
cEJyb3dzZXJQcml2YWN5Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCmluZGV4IDJhZTk1NTNiODFmNWQ4NDUzOWE4ZGE3MTQz
MGQ5N2E1ZWY1YmU5MzMuLmY1ODAzOTMwMGI5ZTdiM2Q3NzZmODU4YjM5N2ZiOWFhMzM5YTY1ODIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBC
cm93c2VyUHJpdmFjeS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KQEAgLTMzLDYgKzMzLDggQEAKICNpbXBvcnQgIlRl
c3RVUkxTY2hlbWVIYW5kbGVyLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCiAjaW1wb3J0
ICJXS1dlYlZpZXdDb25maWd1cmF0aW9uRXh0cmFzLmgiCisjaW1wb3J0IDxDRk5ldHdvcmsvQ0ZO
U1VSTENvbm5lY3Rpb24uaD4KKyNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxSZXF1ZXN0Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1J1
bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLSFRUUENvb2tpZVN0
b3JlUHJpdmF0ZS5oPgpAQCAtNDYsMTAgKzQ4LDYgQEAKICNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+
CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCi0jaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvSW5BcHBCcm93c2VyUHJpdmFjeUFkZGl0
aW9ucy5oPgotI2VuZGlmCi0KICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAKIHN0YXRp
YyBib29sIGlzRG9uZTsKQEAgLTE0MjAsNyArMTQxOCw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJp
dmFjeSwgQWJvdXRCbGFua1N1YkZyYW1lTWF0Y2hlc1RvcEZyYW1lTm9uQXBwQm91bmQpCiAKICNl
bmRpZiAvLyBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAKLSNpZiBVU0UoQVBQTEVfSU5URVJO
QUxfU0RLKSAmJiBFTkFCTEUoQVBQX0JPVU5EX1JFUVVFU1RTKQorI2lmIFVTRShBUFBMRV9JTlRF
Uk5BTF9TREspICYmIEVOQUJMRShBUFBfUFJJVkFDWV9SRVBPUlQpCiBURVNUKEluQXBwQnJvd3Nl
clByaXZhY3ksIEFwcEJvdW5kUmVxdWVzdCkKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMTQzMCw3
ICsxNDI4LDEwIEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmRSZXF1ZXN0KQog
CiAgICAgX19ibG9jayBib29sIGlzRG9uZSA9IGZhbHNlOwogICAgIE5TTXV0YWJsZVVSTFJlcXVl
c3QgKm5vbkFwcEJvdW5kUmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRo
VVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOnVybF1dOwotICAgIEFQUF9CT1VORF9SRVFVRVNUX0FE
RElUSU9OUworCisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KKyAgICBu
b25BcHBCb3VuZFJlcXVlc3QuX2lzTm9uQXBwSW5pdGlhdGVkID0gWUVTOworICAgIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6bm9u
QXBwQm91bmRSZXF1ZXN0XTsKICAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2
aWdhdGlvbl07CkBAIC0xNDg0LDcgKzE0ODUsOSBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ks
IEFwcEJvdW5kUmVxdWVzdFdpdGhOYXZpZ2F0aW9uKQogICAgIAogICAgIGlzRG9uZSA9IGZhbHNl
OwogICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5vbkFwcEJvdW5kUmVxdWVzdCA9IFtOU011dGFi
bGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOm5vbkFwcEJv
dW5kVVJMXV07Ci0gICAgQVBQX0JPVU5EX1JFUVVFU1RfQURESVRJT05TCisgICAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KKyAgICBub25BcHBCb3VuZFJlcXVlc3QuX2lzTm9u
QXBwSW5pdGlhdGVkID0gWUVTOworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VO
RAogICAgIAogICAgIGlzRG9uZSA9IGZhbHNlOwogICAgIFt3ZWJWaWV3IF9jbGVhckFwcEJvdW5k
TmF2aWdhdGlvbkRhdGE6XnsKQEAgLTE1NDIsNyArMTU0NSw5IEBAIFRFU1QoSW5BcHBCcm93c2Vy
UHJpdmFjeSwgTm9uQXBwQm91bmRSZXF1ZXN0V2l0aFN1YkZyYW1lKQogICAgIF9fYmxvY2sgYm9v
bCBpc0RvbmUgPSBmYWxzZTsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBOU011dGFibGVVUkxSZXF1ZXN0
ICpub25BcHBCb3VuZFJlcXVlc3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVS
TDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAicGFnZS13aXRoLWNzcCIg
d2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3Vy
Y2VzIl1dOwotICAgIEFQUF9CT1VORF9SRVFVRVNUX0FERElUSU9OUworICAgIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0JFR0lOCisgICAgbm9uQXBwQm91bmRSZXF1ZXN0Ll9pc05vbkFw
cEluaXRpYXRlZCA9IFlFUzsKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQK
IAogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0Om5vbkFwcEJvdW5kUmVxdWVzdF07CiAKQEAgLTE2
MjIsNyArMTYyNyw5IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoUmVzcG9uc2VUeXBlIHJlc3BvbnNl
VHlwZSwgSXNBcHBCb3VuZCBhcHBCb3VuZCkKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBz
ZXJ2ZXIucmVxdWVzdCgpOwogICAgIGlmIChhcHBCb3VuZCA9PSBJc0FwcEJvdW5kOjpObykgewog
ICAgICAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpub25BcHBCb3VuZFJlcXVlc3QgPSBbTlNNdXRh
YmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlci5wb3J0
KCldXV07Ci0gICAgICAgIEFQUF9CT1VORF9SRVFVRVNUX0FERElUSU9OUworICAgICAgICBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgorICAgICAgICBub25BcHBCb3VuZFJlcXVl
c3QuX2lzTm9uQXBwSW5pdGlhdGVkID0gWUVTOworICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19FTkQKICAgICAgICAgcmVxdWVzdCA9IG5vbkFwcEJvdW5kUmVxdWVzdDsKICAg
ICB9CiAKQEAgLTE3MzAsNyArMTczNyw5IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTXVs
dGlwbGVXZWJWaWV3c1dpdGhTaGFyZWRTZXJ2aWNlV29ya2VyKQogCiAgICAgaXNEb25lID0gZmFs
c2U7CiAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqbm9uQXBwQm91bmRSZXF1ZXN0ID0gW05TTXV0
YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwczovLzEyNy4wLjAuMTolZC9tYWluLmh0bWwiLCBz
ZXJ2ZXIucG9ydCgpXV1dOwotICAgIEFQUF9CT1VORF9SRVFVRVNUX0FERElUSU9OUworICAgIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCisgICAgbm9uQXBwQm91bmRSZXF1ZXN0
Ll9pc05vbkFwcEluaXRpYXRlZCA9IFlFUzsKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19FTkQKICAgICBbd2ViVmlldzIgbG9hZFJlcXVlc3Q6bm9uQXBwQm91bmRSZXF1ZXN0XTsK
ICAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcyIF90ZXN0X3dhaXRGb3JBbGVydF0sICJmZXRj
aGVkIGZyb20gc2VydmVyIik7CiAKQEAgLTE3ODAsNyArMTc4OSw5IEBAIHN0YXRpYyB2b2lkIHNv
ZnRVcGRhdGVUZXN0KElzQXBwQm91bmQgaXNBcHBCb3VuZCkKICAgICAgICAgTlNVUkxSZXF1ZXN0
ICpyZXF1ZXN0ID0gc2VydmVyMS5yZXF1ZXN0KCk7CiAgICAgICAgIGlmIChpc0FwcEJvdW5kID09
IElzQXBwQm91bmQ6Ok5vKSB7CiAgICAgICAgICAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpub25B
cHBCb3VuZFJlcXVlc3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNV
UkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3
LjAuMC4xOiVkLyIsIHNlcnZlcjEucG9ydCgpXV1dOwotICAgICAgICAgICAgQVBQX0JPVU5EX1JF
UVVFU1RfQURESVRJT05TCisgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19CRUdJTgorICAgICAgICAgICAgbm9uQXBwQm91bmRSZXF1ZXN0Ll9pc05vbkFwcEluaXRpYXRl
ZCA9IFlFUzsKKyAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAog
ICAgICAgICAgICAgcmVxdWVzdCA9IG5vbkFwcEJvdW5kUmVxdWVzdDsKICAgICAgICAgfQogCkBA
IC0xNzk5LDcgKzE4MTAsOSBAQCBzdGF0aWMgdm9pZCBzb2Z0VXBkYXRlVGVzdChJc0FwcEJvdW5k
IGlzQXBwQm91bmQpCiAgICAgICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdDIgPSBzZXJ2ZXIyLnJl
cXVlc3QoKTsKICAgICAgICAgaWYgKGlzQXBwQm91bmQgPT0gSXNBcHBCb3VuZDo6Tm8pIHsKICAg
ICAgICAgICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5vbkFwcEJvdW5kUmVxdWVzdCA9IFtOU011
dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyMi5w
b3J0KCldXV07Ci0gICAgICAgICAgICBBUFBfQk9VTkRfUkVRVUVTVF9BRERJVElPTlMKKyAgICAg
ICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCisgICAgICAgICAgICBu
b25BcHBCb3VuZFJlcXVlc3QuX2lzTm9uQXBwSW5pdGlhdGVkID0gWUVTOworICAgICAgICAgICAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgICAgICByZXF1ZXN0MiA9
IG5vbkFwcEJvdW5kUmVxdWVzdDsKICAgICAgICAgfQogCkBAIC0xODUwLDcgKzE4NjMsOSBAQCBz
dGF0aWMgdm9pZCBydW5XZWJQcm9jZXNzUGx1Z0luVGVzdChJc0FwcEJvdW5kIGlzQXBwQm91bmQp
CiAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0
IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOnVybF1dOwogICAgIGlmIChpc0Fw
cEJvdW5kID09IElzQXBwQm91bmQ6Ok5vKSB7CiAgICAgICAgIE5TTXV0YWJsZVVSTFJlcXVlc3Qg
Km5vbkFwcEJvdW5kUmVxdWVzdCA9IHJlcXVlc3Q7Ci0gICAgICAgIEFQUF9CT1VORF9SRVFVRVNU
X0FERElUSU9OUworICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgor
ICAgICAgICBub25BcHBCb3VuZFJlcXVlc3QuX2lzTm9uQXBwSW5pdGlhdGVkID0gWUVTOworICAg
ICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgcmVxdWVzdCA9
IG5vbkFwcEJvdW5kUmVxdWVzdDsKICAgICB9CiAKQEAgLTIwMDUsNyArMjAyMCw5IEBAIFRFU1Qo
SW5BcHBCcm93c2VyUHJpdmFjeSwgUmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50VXBkYXRlc0Fw
cEJvdW5kVmFsdWUpCiAgICAgZXhwZWN0ZWRNZXNzYWdlID0gInN0YXJ0cyBhcHAtYm91bmQiOwog
ICAgIHJlY2VpdmVkTWVzc2FnZSA9IGZhbHNlOwogICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5v
bkFwcEJvdW5kUmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltO
U1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cDovLzEy
Ny4wLjAuMTolZC9tYWluLmh0bWwiLCBzZXJ2ZXIucG9ydCgpXV1dOwotICAgIEFQUF9CT1VORF9S
RVFVRVNUX0FERElUSU9OUworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lO
CisgICAgbm9uQXBwQm91bmRSZXF1ZXN0Ll9pc05vbkFwcEluaXRpYXRlZCA9IFlFUzsKKyAgICBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogICAgIFt3ZWJWaWV3MiBsb2FkUmVx
dWVzdDpub25BcHBCb3VuZFJlcXVlc3RdOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
cmVjZWl2ZWRNZXNzYWdlKTsK
</data>
<flag name="commit-queue"
          id="453537"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431696</attachid>
            <date>2021-06-17 11:56:09 -0700</date>
            <delta_ts>2021-06-21 09:41:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227045-20210617115608.patch</filename>
            <type>text/plain</type>
            <size>22483</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4ODc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDc0ZjMwMjk3YWI2OTRmODRmNDVkYmFl
YzQwN2QxODQ0ZmM4NTUwZmEuLmZjZmVjZWMzY2ZiMjgzNTgwZGYyMGM1OThjZWFmNzVlYmNjYjk0
NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDYtMTUgIEthdGUgQ2hlbmV5ICA8a2F0aGVy
aW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgTWlncmF0ZSBBcHAgUHJpdmFjeSBSZXBv
cnQgY29kZSBmcm9tIFdlYktpdEFkZGl0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3MDQ1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDMz
MzI4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
cGRhdGUgY29tcGlsZSBmbGFnIG5hbWluZyB0byBhbGlnbiB3aXRoIHRoZSBBcHAgUHJpdmFjeSBS
ZXBvcnQKKyAgICAgICAgZmVhdHVyZS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVuYWJsZUNv
Y29hLmg6CisKIDIwMjEtMDYtMTQgIFBlciBBcm5lICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgW2lPU10gU3luYyBBY2Nlc3NpYmlsaXR5IHByZWZlcmVuY2VzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNj
OTVmMWY5MDI5NjQ0NDBiZWUyMDBmODhiZTkyYWFmOWU1MzVkNTAuLjBlNDIzNWNiOWJkYzliN2Zk
ZGJmYzNmZjMwZTExZjI2MzUzMjdkMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjEt
MDYtMTUgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAg
ICAgTWlncmF0ZSBBcHAgUHJpdmFjeSBSZXBvcnQgY29kZSBmcm9tIFdlYktpdEFkZGl0aW9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3MDQ1Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDMzMzI4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVyZWQgYnkgZXhpc3Rp
bmcgdGVzdHMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRh
c2tDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdv
cmtEYXRhVGFza0NvY29hKToKKyAgICAgICAgKGNvbnRleHRTdHJpbmcpOiBEZWxldGVkLgorICAg
ICAgICBUaGlzIHBhdGNoIGRlbGV0ZXMgdGhlIGNvbnRleHRTdHJpbmcgZnVuY3Rpb24gYmVjYXVz
ZSBpdCBpcyBubyBsb25nZXIKKyAgICAgICAgbmVlZGVkIG5vdyB0aGF0IENGTmV0d29yayBzZXRz
IHRoZSBhdHRyaWJ1dGlvbiBjb250ZXh0LCBhbmQgaXQgc2VlbWVkCisgICAgICAgIHNpbGx5IHRv
IG1pZ3JhdGUgY29kZSBmcm9tIFdlYktpdEFkZGl0aW9ucyBqdXN0IHRvIGRlbGV0ZSBpdAorICAg
ICAgICBpbW1lZGlhdGVseS4gVGhpcyBhbHNvIG1vdmVzIHRoZSBwcm9jZXNzUENNUmVxdWVzdCBm
dW5jdGlvbgorICAgICAgICBkZWNsYXJhdGlvbiBmcm9tIFdlYktpdEFkZGl0aW9ucyBzbyB3ZSBj
YW4gcmVtb3ZlCisgICAgICAgIE5FVFdPUktfREFUQV9UQVNLX0NPQ09BX0FERElUSU9OUy4KKwor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06Cisg
ICAgICAgIChXZWJLaXQ6OmlzQWN0aW5nT25CZWhhbGZPZkFGdWxsV2ViQnJvd3Nlcik6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OnJlbW92ZU5ldHdvcmtXZWJzaXRlRGF0
YSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQp
OgorCiAyMDIxLTA2LTE1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBDYWNoZXM6OnJlbW92ZUNhY2hlRW50cnkgc2hvdWxkIGNoZWNrIGZvciBtX3N0b3JhZ2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaCBiL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaAppbmRleCA2MmM4ZWMxMTY3NzZkOWJmNzAz
MzVkNDdhMDg5Zjg5MGNlYzZjOTRhLi4xNzk2YzM5ZDczNTlkMDkxOThlZjU5YmQwNzJjYWFiNGZl
NGQxNjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmgK
KysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCkBAIC02OTUsOCArNjk1
LDggQEAKICNkZWZpbmUgRU5BQkxFX05PVElGWV9GSUxURVJJTkcgMQogI2VuZGlmCiAKLSNpZiAh
ZGVmaW5lZChFTkFCTEVfQVBQX0JPVU5EX1JFUVVFU1RTKSAmJiBQTEFURk9STShJT1NfRkFNSUxZ
KSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxNTAwMDAKLSNkZWZpbmUg
RU5BQkxFX0FQUF9CT1VORF9SRVFVRVNUUyAxCisjaWYgIWRlZmluZWQoRU5BQkxFX0FQUF9QUklW
QUNZX1JFUE9SVCkgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTUwMDAwCisjZGVmaW5lIEVOQUJMRV9BUFBfUFJJVkFDWV9SRVBP
UlQgMQogI2VuZGlmCiAKICNpZiAhZGVmaW5lZChFTkFCTEVfREVTVElOQVRJT05fQ09MT1JfU1BB
Q0VfRElTUExBWV9QMykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCmluZGV4IDM0MGQ3ZGFjMjg2YjczYjgz
YzUxZWJkMGY2ODBmYzRhYmY5ZGFmOTUuLmY3NGIzMTI5ZmU3MmJjOWZjZTYyMzYwNjA2ZDNiMzli
MDcxMmNmODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya0RhdGFUYXNrQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQpAQCAtNTcsOCArNTcsNyBAQAogI2lmIFVT
RShBUFBMRV9JTlRFUk5BTF9TREspCiAjaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvTmV0d29ya0Rh
dGFUYXNrQ29jb2FBZGRpdGlvbnMuaD4KICNlbHNlCi0jZGVmaW5lIE5FVFdPUktfREFUQV9UQVNL
X0NPQ09BX0FERElUSU9OUyBVTlVTRURfVkFSSUFCTEUocGNtRGF0YUNhcnJpZWQpOwotc3RhdGlj
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGNvbnRleHRTdHJpbmcoTlNVUkxSZXF1ZXN0ICop
IHsgcmV0dXJuIHsgfTsgfQorc3RhdGljIHZvaWQgcHJvY2Vzc1BDTVJlcXVlc3QoV2ViQ29yZTo6
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkLCBOU011dGFibGVVUkxSZXF1
ZXN0ICopIHsgfTsKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTMzOCwyNCArMzM3
LDMxIEBAIE5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3Jr
U2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUCiAjZW5kaWYKICAgICByZXN0cmljdFJlcXVl
c3RSZWZlcnJlclRvT3JpZ2luSWZOZWVkZWQocmVxdWVzdCk7CiAKLSAgICAvLyBGSVhNRTogT25j
ZSB3ZSBhcmUgZG9uZSB3aXRoIE5FVFdPUktfREFUQV9UQVNLX0NPQ09BX0FERElUSU9OUywgbWFr
ZSBuc1JlcXVlc3QgYSBSZXRhaW5QdHIgYW5kIGdldCByaWQgb2YgcHJvdGVjdGVkTlNSZXF1ZXN0
IGFuZCBwY21EYXRhQ2FycmllZC4KLSAgICBOU1VSTFJlcXVlc3QgKm5zUmVxdWVzdCA9IHJlcXVl
c3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5OjpVcGRhdGVIVFRQ
Qm9keSk7Ci0gICAgYXV0byBwY21EYXRhQ2FycmllZCA9IHBhcmFtZXRlcnMucGNtRGF0YUNhcnJp
ZWQ7CisgICAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gbnNSZXF1ZXN0ID0gcmVxdWVzdC5uc1VS
TFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OlVwZGF0ZUhUVFBCb2R5KTsK
KyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlVVJMUmVxdWVzdD4gbXV0YWJsZVJlcXVlc3QgPSBhZG9w
dE5TKFtuc1JlcXVlc3QuZ2V0KCkgbXV0YWJsZUNvcHldKTsKIAotICAgIE5FVFdPUktfREFUQV9U
QVNLX0NPQ09BX0FERElUSU9OUworI2lmIEVOQUJMRShBUFBfUFJJVkFDWV9SRVBPUlQpCisgICAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KKyAgICBtdXRhYmxlUmVxdWVzdC5n
ZXQoKS5faXNOb25BcHBJbml0aWF0ZWQgPSAhcmVxdWVzdC5pc0FwcEJvdW5kKCk7CisgICAgQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECisjZW5kaWYKKworICAgIGlmIChwYXJhbWV0
ZXJzLnBjbURhdGFDYXJyaWVkKQorICAgICAgICBwcm9jZXNzUENNUmVxdWVzdCgqcGFyYW1ldGVy
cy5wY21EYXRhQ2FycmllZCwgbXV0YWJsZVJlcXVlc3QuZ2V0KCkpOworCisgICAgbnNSZXF1ZXN0
ID0gbXV0YWJsZVJlcXVlc3Q7CiAKLSAgICBhdXRvIHByb3RlY3RlZE5TUmVxdWVzdCA9IHJldGFp
blB0cihuc1JlcXVlc3QpOwotICAgIG1fc2Vzc2lvbi0+YXBwQm91bmROYXZpZ2F0aW9uVGVzdGlu
Z0RhdGEoKS51cGRhdGVBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YShyZXF1ZXN0LCBjb250
ZXh0U3RyaW5nKHByb3RlY3RlZE5TUmVxdWVzdC5nZXQoKSkpOworICAgIG1fc2Vzc2lvbi0+YXBw
Qm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEoKS51cGRhdGVBcHBCb3VuZE5hdmlnYXRpb25UZXN0
aW5nRGF0YShyZXF1ZXN0LCByZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCkuaXNFbXB0eSgp
ID8gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4ocmVxdWVzdC51cmwoKSkgOiBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbihyZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCkpKTsKIAotICAg
IGFwcGx5U25pZmZpbmdQb2xpY2llc0FuZEJpbmRSZXF1ZXN0VG9JbmZlcmZhY2VJZk5lZWRlZChw
cm90ZWN0ZWROU1JlcXVlc3QsIHBhcmFtZXRlcnMuY29udGVudFNuaWZmaW5nUG9saWN5ID09IFdl
YkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeTo6U25pZmZDb250ZW50ICYmICF1cmwuaXNMb2Nh
bEZpbGUoKSwgcGFyYW1ldGVycy5jb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSA9PSBXZWJD
b3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeTo6U25pZmYpOworICAgIGFwcGx5U25p
ZmZpbmdQb2xpY2llc0FuZEJpbmRSZXF1ZXN0VG9JbmZlcmZhY2VJZk5lZWRlZChuc1JlcXVlc3Qs
IHBhcmFtZXRlcnMuY29udGVudFNuaWZmaW5nUG9saWN5ID09IFdlYkNvcmU6OkNvbnRlbnRTbmlm
ZmluZ1BvbGljeTo6U25pZmZDb250ZW50ICYmICF1cmwuaXNMb2NhbEZpbGUoKSwgcGFyYW1ldGVy
cy5jb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSA9PSBXZWJDb3JlOjpDb250ZW50RW5jb2Rp
bmdTbmlmZmluZ1BvbGljeTo6U25pZmYpOwogCi0gICAgbV90YXNrID0gW21fc2Vzc2lvbldyYXBw
ZXItPnNlc3Npb24gZGF0YVRhc2tXaXRoUmVxdWVzdDpwcm90ZWN0ZWROU1JlcXVlc3QuZ2V0KCld
OworICAgIG1fdGFzayA9IFttX3Nlc3Npb25XcmFwcGVyLT5zZXNzaW9uIGRhdGFUYXNrV2l0aFJl
cXVlc3Q6bnNSZXF1ZXN0LmdldCgpXTsKIAogICAgIFdURkJlZ2luU2lnbnBvc3QobV90YXNrLmdl
dCgpLCAiRGF0YVRhc2siLCAiJXtwdWJsaWN9cyBwcmk6ICUuMmYgcHJlY29ubmVjdDogJWQiLCB1
cmwuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCksIHRvTlNVUkxTZXNzaW9uVGFza1ByaW9yaXR5KHJl
cXVlc3QucHJpb3JpdHkoKSksIHBhcmFtZXRlcnMuc2hvdWxkUHJlY29ubmVjdE9ubHkgPT0gUHJl
Y29ubmVjdE9ubHk6Olllcyk7CiAKICAgICBSRUxFQVNFX0FTU0VSVCghbV9zZXNzaW9uV3JhcHBl
ci0+ZGF0YVRhc2tNYXAuY29udGFpbnMoW21fdGFzayB0YXNrSWRlbnRpZmllcl0pKTsKICAgICBt
X3Nlc3Npb25XcmFwcGVyLT5kYXRhVGFza01hcC5hZGQoW21fdGFzayB0YXNrSWRlbnRpZmllcl0s
IHRoaXMpOwotICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVsdSBDcmVhdGluZyBOZXR3b3JrRGF0
YVRhc2sgd2l0aCBVUkwgJXMiLCAodW5zaWduZWQgbG9uZylbbV90YXNrIHRhc2tJZGVudGlmaWVy
XSwgW3Byb3RlY3RlZE5TUmVxdWVzdCBVUkxdLmFic29sdXRlU3RyaW5nLlVURjhTdHJpbmcpOwor
ICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVsdSBDcmVhdGluZyBOZXR3b3JrRGF0YVRhc2sgd2l0
aCBVUkwgJXMiLCAodW5zaWduZWQgbG9uZylbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgW25zUmVx
dWVzdCBVUkxdLmFic29sdXRlU3RyaW5nLlVURjhTdHJpbmcpOwogCiAgICAgaWYgKHBhcmFtZXRl
cnMuc2hvdWxkUHJlY29ubmVjdE9ubHkgPT0gUHJlY29ubmVjdE9ubHk6OlllcykgewogI2lmIEVO
QUJMRShTRVJWRVJfUFJFQ09OTkVDVCkKQEAgLTM3Miw5ICszNzgsOSBAQCBOZXR3b3JrRGF0YVRh
c2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5l
dHdvcmtEYXRhVAogICAgIGlmIChzaG91bGRCbG9ja0Nvb2tpZXMpIHsKICNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKICAgICAgICAgaWYgKG1fc2Vzc2lvbi0+c2hvdWxkTG9nQ29va2llSW5mb3Jt
YXRpb24oKSkKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxs
b3dlZCgpLCBOZXR3b3JrLCAiJXAgLSBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6bG9nQ29va2llSW5m
b3JtYXRpb246IHBhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIiwgdGFza0lE
PSVsdTogQmxvY2tpbmcgY29va2llcyBmb3IgVVJMICVzIiwgdGhpcywgcGFnZUlEKCkudG9VSW50
NjQoKSwgZnJhbWVJRCgpLnRvVUludDY0KCksICh1bnNpZ25lZCBsb25nKVttX3Rhc2sgdGFza0lk
ZW50aWZpZXJdLCBbcHJvdGVjdGVkTlNSZXF1ZXN0IFVSTF0uYWJzb2x1dGVTdHJpbmcuVVRGOFN0
cmluZyk7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93
ZWQoKSwgTmV0d29yaywgIiVwIC0gTmV0d29ya0RhdGFUYXNrQ29jb2E6OmxvZ0Nvb2tpZUluZm9y
bWF0aW9uOiBwYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIsIHRhc2tJRD0l
bHU6IEJsb2NraW5nIGNvb2tpZXMgZm9yIFVSTCAlcyIsIHRoaXMsIHBhZ2VJRCgpLnRvVUludDY0
KCksIGZyYW1lSUQoKS50b1VJbnQ2NCgpLCAodW5zaWduZWQgbG9uZylbbV90YXNrIHRhc2tJZGVu
dGlmaWVyXSwgW25zUmVxdWVzdCBVUkxdLmFic29sdXRlU3RyaW5nLlVURjhTdHJpbmcpOwogI2Vs
c2UKLSAgICAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiJWx1IEJsb2NraW5nIGNvb2tpZXMgZm9y
IFVSTCAlcyIsICh1bnNpZ25lZCBsb25nKVttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCBbcHJvdGVj
dGVkTlNSZXF1ZXN0IFVSTF0uYWJzb2x1dGVTdHJpbmcuVVRGOFN0cmluZyk7CisgICAgICAgIExP
RyhOZXR3b3JrU2Vzc2lvbiwgIiVsdSBCbG9ja2luZyBjb29raWVzIGZvciBVUkwgJXMiLCAodW5z
aWduZWQgbG9uZylbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgW25zUmVxdWVzdCBVUkxdLmFic29s
dXRlU3RyaW5nLlVURjhTdHJpbmcpOwogI2VuZGlmCiAgICAgICAgIGJsb2NrQ29va2llcygpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya1Nlc3Npb25Db2NvYS5tbQppbmRleCBmNzdjZTc5NDkxYWUwZWFhMzExNTYzZDgxYTdi
ZDBhM2Y0NjRlYTVjLi40ZjBjZjU5Zjc5NmY4YzdiYjIxNDE1OWVkN2M4YzIwMjZiOTY1OTAwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNz
aW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC01OSwxMCArNTksMzEgQEAKICNpbXBvcnQgPHd0Zi9Tb2Z0
TGlua2luZy5oPgogI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRy
Lmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KKyNpbXBvcnQgPHd0Zi9kYXJ3
aW4vV2Vha0xpbmtpbmcuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYg
VVNFKEFQUExFX0lOVEVSTkFMX1NESykKICNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9OZXR3b3Jr
U2Vzc2lvbkNvY29hQWRkaXRpb25zLmg+CisKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1V
TEFUT1IpCisjaW1wb3J0IDxTeW1wdG9tcy9TeW1wdG9tQW5hbHl0aWNzLmg+CisjaW1wb3J0IDxT
eW1wdG9tcy9TeW1wdG9tUHJlc2VudGF0aW9uRmVlZC5oPgorI2VuZGlmCisKKyNpZiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpICYmICFQTEFURk9STShXQVRDSE9TKQorU09GVF9MSU5L
X1BSSVZBVEVfRlJBTUVXT1JLX0lOX1VNQlJFTExBX09QVElPTkFMKFN5bXB0b21zLCBTeW1wdG9t
QW5hbHl0aWNzKTsKK1NPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SS19JTl9VTUJSRUxMQV9PUFRJ
T05BTChTeW1wdG9tcywgU3ltcHRvbVByZXNlbnRhdGlvbkZlZWQpOworU09GVF9MSU5LX1BSSVZB
VEVfRlJBTUVXT1JLX0lOX1VNQlJFTExBX09QVElPTkFMKFN5bXB0b21zLCBTeW1wdG9tUHJlc2Vu
dGF0aW9uTGl0ZSk7CitTT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoU3ltcHRvbUFuYWx5dGljcywg
QW5hbHl0aWNzV29ya3NwYWNlKTsKK1NPRlRfTElOS19DTEFTU19PUFRJT05BTChTeW1wdG9tUHJl
c2VudGF0aW9uRmVlZCwgVXNhZ2VGZWVkKTsKK1NPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChT
eW1wdG9tUHJlc2VudGF0aW9uRmVlZCwga1N5bXB0b21BbmFseXRpY3NTZXJ2aWNlRG9tYWluVHJh
Y2tpbmdDbGVhckhpc3RvcnlCdW5kbGVJRHMsIGNvbnN0IE5TU3RyaW5nICopOworU09GVF9MSU5L
X0NPTlNUQU5UX01BWV9GQUlMKFN5bXB0b21QcmVzZW50YXRpb25GZWVkLCBrU3ltcHRvbUFuYWx5
dGljc1NlcnZpY2VEb21haW5UcmFja2luZ0NsZWFySGlzdG9yeVN0YXJ0RGF0ZSwgY29uc3QgTlNT
dHJpbmcgKik7CitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoU3ltcHRvbVByZXNlbnRhdGlv
bkZlZWQsIGtTeW1wdG9tQW5hbHl0aWNzU2VydmljZURvbWFpblRyYWNraW5nQ2xlYXJIaXN0b3J5
RW5kRGF0ZSwgY29uc3QgTlNTdHJpbmcgKik7CitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwo
U3ltcHRvbVByZXNlbnRhdGlvbkZlZWQsIGtTeW1wdG9tQW5hbHl0aWNzU2VydmljZURvbWFpblRy
YWNraW5nQ2xlYXJIaXN0b3J5S2V5LCBjb25zdCBOU1N0cmluZyAqKTsKK1NPRlRfTElOS19DT05T
VEFOVF9NQVlfRkFJTChTeW1wdG9tUHJlc2VudGF0aW9uTGl0ZSwga1N5bXB0b21BbmFseXRpY3NT
ZXJ2aWNlRW5kcG9pbnQsIE5TU3RyaW5nICopCisjZW5kaWYKKwogI2Vsc2UKICNkZWZpbmUgTkVU
V09SS19TRVNTSU9OX0NPQ09BX0FERElUSU9OU18xCiB2b2lkIFdlYktpdDo6TmV0d29ya1Nlc3Np
b25Db2NvYTo6cmVtb3ZlTmV0d29ya1dlYnNpdGVEYXRhKHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+
LCBzdGQ6Om9wdGlvbmFsPEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+PiYmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlv
bkhhbmRsZXIoKTsgfQpAQCAtMTc2MSw0ICsxNzgyLDg1IEBAIHZvaWQgTmV0d29ya1Nlc3Npb25D
b2NvYTo6Y2xlYXJBbHRlcm5hdGl2ZVNlcnZpY2VzKFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpCiAj
ZW5kaWYKIH0KIAorI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisKKyNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWV9TSU1VTEFUT1IpICYmICFQTEFURk9STShXQVRDSE9TKQorc3RhdGljIGJvb2wg
aXNBY3RpbmdPbkJlaGFsZk9mQUZ1bGxXZWJCcm93c2VyKGNvbnN0IFN0cmluZyYgYnVuZGxlSUQp
Cit7CisgICAgcmV0dXJuIGJ1bmRsZUlEID09ICJjb20uYXBwbGUud2ViYm9va21hcmtzZCI7Cit9
CisjZW5kaWYKKwordm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpyZW1vdmVOZXR3b3JrV2Vic2l0
ZURhdGEoc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gbW9kaWZpZWRTaW5jZSwgc3RkOjpvcHRpb25h
bDxIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPj4mJiBkb21haW5zLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisjaWYgIVBMQVRGT1JN
KElPU19GQU1JTFlfU0lNVUxBVE9SKSAmJiAhUExBVEZPUk0oV0FUQ0hPUykKKyAgICBhdXRvIGJ1
bmRsZUlEID0gV2ViQ29yZTo6YXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCk7CisgICAgaWYg
KCFpc1BhcmVudFByb2Nlc3NBRnVsbFdlYkJyb3dzZXIobmV0d29ya1Byb2Nlc3MoKSkgJiYgIWlz
QWN0aW5nT25CZWhhbGZPZkFGdWxsV2ViQnJvd3NlcihidW5kbGVJRCkpCisgICAgICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcigpOworCisgICAgaWYgKCFTeW1wdG9tQW5hbHl0aWNzTGlicmFy
eSgpCisgICAgICAgIHx8ICFTeW1wdG9tUHJlc2VudGF0aW9uRmVlZExpYnJhcnkoKQorICAgICAg
ICB8fCAhU3ltcHRvbVByZXNlbnRhdGlvbkxpdGVMaWJyYXJ5KCkKKyAgICAgICAgfHwgIWdldEFu
YWx5dGljc1dvcmtzcGFjZUNsYXNzKCkKKyAgICAgICAgfHwgIWdldFVzYWdlRmVlZENsYXNzKCkK
KyAgICAgICAgfHwgIWNhbkxvYWRrU3ltcHRvbUFuYWx5dGljc1NlcnZpY2VFbmRwb2ludCgpKSB7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBSZXRhaW5QdHI8QW5hbHl0aWNzV29ya3NwYWNlPiB3b3Jrc3BhY2UgPSBhZG9wdE5TKFth
bGxvY0FuYWx5dGljc1dvcmtzcGFjZUluc3RhbmNlKCkgaW5pdFdvcmtzcGFjZVdpdGhTZXJ2aWNl
OmdldGtTeW1wdG9tQW5hbHl0aWNzU2VydmljZUVuZHBvaW50KCldKTsKKyAgICBSZXRhaW5QdHI8
VXNhZ2VGZWVkPiB1c2FnZUZlZWQgPSBhZG9wdE5TKFthbGxvY1VzYWdlRmVlZEluc3RhbmNlKCkg
aW5pdFdpdGhXb3Jrc3BhY2U6d29ya3NwYWNlLmdldCgpXSk7CisKKyAgICBpZiAoIVt1c2FnZUZl
ZWQuZ2V0KCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwZXJmb3JtTmV0d29ya0RvbWFp
bnNBY3Rpb25XaXRoT3B0aW9uczpyZXBseTopXQorICAgICAgICB8fCAhY2FuTG9hZGtTeW1wdG9t
QW5hbHl0aWNzU2VydmljZURvbWFpblRyYWNraW5nQ2xlYXJIaXN0b3J5S2V5KCkKKyAgICAgICAg
fHwgIWNhbkxvYWRrU3ltcHRvbUFuYWx5dGljc1NlcnZpY2VEb21haW5UcmFja2luZ0NsZWFySGlz
dG9yeUJ1bmRsZUlEcygpCisgICAgICAgIHx8ICFjYW5Mb2Fka1N5bXB0b21BbmFseXRpY3NTZXJ2
aWNlRG9tYWluVHJhY2tpbmdDbGVhckhpc3RvcnlTdGFydERhdGUoKQorICAgICAgICB8fCAhY2Fu
TG9hZGtTeW1wdG9tQW5hbHl0aWNzU2VydmljZURvbWFpblRyYWNraW5nQ2xlYXJIaXN0b3J5RW5k
RGF0ZSgpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBhdXRvICpzdGFydERhdGUgPSBbTlNEYXRlIGRpc3RhbnRQYXN0XTsKKyAg
ICBpZiAobW9kaWZpZWRTaW5jZSkgeworICAgICAgICBOU1RpbWVJbnRlcnZhbCB0aW1lSW50ZXJ2
YWwgPSBtb2RpZmllZFNpbmNlLnZhbHVlKCkuc2Vjb25kc1NpbmNlRXBvY2goKS5zZWNvbmRzKCk7
CisgICAgICAgIHN0YXJ0RGF0ZSA9IFtOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZTE5
NzA6dGltZUludGVydmFsXTsKKyAgICB9CisKKyAgICBhdXRvIGNvbnRleHRBcnJheSA9IGFkb3B0
TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgIGlmIChkb21haW5zKSB7Cisg
ICAgICAgIGNvbnRleHRBcnJheSA9IGNyZWF0ZU5TQXJyYXkoKmRvbWFpbnMsIFsmXSAoYXV0byBk
b21haW4pIHsKKyAgICAgICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJp
bmc6ZG9tYWluLnN0cmluZygpLnV0ZjgoKS5kYXRhKCldOworICAgICAgICB9KTsKKyAgICB9CisK
KyAgICBpZiAoaXNBY3RpbmdPbkJlaGFsZk9mQUZ1bGxXZWJCcm93c2VyKGJ1bmRsZUlEKSkKKyAg
ICAgICAgYnVuZGxlSUQgPSAiY29tLmFwcGxlLm1vYmlsZXNhZmFyaSI7CisKKyAgICBOU0RpY3Rp
b25hcnkgKm9wdGlvbnMgPSBAeworICAgICAgICAoaWQpZ2V0a1N5bXB0b21BbmFseXRpY3NTZXJ2
aWNlRG9tYWluVHJhY2tpbmdDbGVhckhpc3RvcnlLZXkoKTogQHsKKyAgICAgICAgICAgIChpZCln
ZXRrU3ltcHRvbUFuYWx5dGljc1NlcnZpY2VEb21haW5UcmFja2luZ0NsZWFySGlzdG9yeUJ1bmRs
ZUlEcygpOiBAeworICAgICAgICAgICAgICAgIGJ1bmRsZUlEIDogY29udGV4dEFycmF5LmdldCgp
LAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIChpZClnZXRrU3ltcHRvbUFuYWx5dGljc1Nl
cnZpY2VEb21haW5UcmFja2luZ0NsZWFySGlzdG9yeVN0YXJ0RGF0ZSgpOiBzdGFydERhdGUsCisg
ICAgICAgICAgICAoaWQpZ2V0a1N5bXB0b21BbmFseXRpY3NTZXJ2aWNlRG9tYWluVHJhY2tpbmdD
bGVhckhpc3RvcnlFbmREYXRlKCk6IFtOU0RhdGUgZGlzdGFudEZ1dHVyZV0KKyAgICAgICAgfQor
ICAgIH07CisKKyAgICBib29sIHJlc3VsdCA9IFt1c2FnZUZlZWQgcGVyZm9ybU5ldHdvcmtEb21h
aW5zQWN0aW9uV2l0aE9wdGlvbnM6b3B0aW9ucyByZXBseTptYWtlQmxvY2tQdHIoW2NvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKE5TRGljdGlvbmFyeSAqcmVw
bHksIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAg
ICAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiRXJyb3IgZGVsZXRpbmcgbmV0d29yayBkb21haW4g
ZGF0YSAlIiBQVUJMSUNfTE9HX1NUUklORywgZXJyb3IpOworCisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7CisgICAgfSkuZ2V0KCldOworCisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIExP
RyhOZXR3b3JrU2Vzc2lvbiwgIkVycm9yIGRlbGV0aW5nIG5ldHdvcmsgZG9tYWluIGRhdGE6IGlu
dmFsaWQgcGFyYW1ldGVyIG9yIGZhaWx1cmUgdG8gY29udGFjdCB0aGUgc2VydmljZSIpOworI2Vs
c2UKKyAgICBVTlVTRURfUEFSQU0obW9kaWZpZWRTaW5jZSk7CisgICAgY29tcGxldGlvbkhhbmRs
ZXIoKTsKKyNlbmRpZgorfQorCisjZW5kaWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCmluZGV4IDg0YjI2YTVmNmMwZDI1YzBjNTIwYzY3Njdm
NTg5M2IwYjlkZDg2OWYuLjI0Njg3MThkOTMxYmNkMDhjYjNmNmVkNzhiOWJmNjFjMGFjMTc2YjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNv
Y29hLm1tCkBAIC00OCw2ICs0OCw3IEBACiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKICNp
bXBvcnQgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbXBvcnQgIldLRXJyb3JJbnRlcm5hbC5oIgor
I2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTFJlcXVlc3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvRHJh
Z0l0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvR2VvbWV0cnlVdGlsaXRpZXMuaD4KICNpbXBvcnQg
PFdlYkNvcmUvSGlnaGxpZ2h0VmlzaWJpbGl0eS5oPgpAQCAtODUsMTMgKzg2LDYgQEAgU09GVF9M
SU5LX1BSSVZBVEVfRlJBTUVXT1JLKFdlYkNvbnRlbnRBbmFseXNpcyk7CiBTT0ZUX0xJTktfQ0xB
U1MoV2ViQ29udGVudEFuYWx5c2lzLCBXZWJGaWx0ZXJFdmFsdWF0b3IpOwogI2VuZGlmCiAKLSNp
ZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotLy8gRklYTUU6IFRoaXMgYWRkaXRpb25zIGZpbGUg
c2hvdWxkIGJlIHJlbmFtZWQgdG8gV2ViUGFnZVByb3h5QWRkaXRpb25zLm1tLgotI2ltcG9ydCA8
V2ViS2l0QWRkaXRpb25zL1dlYlBhZ2VQcm94eUFkZGl0aW9ucy5oPgotI2Vsc2UKLSNkZWZpbmUg
V0VCX1BBR0VfUFJPWFlfQURESVRJT05TCi0jZW5kaWYKLQogI2RlZmluZSBNRVNTQUdFX0NIRUNL
KGFzc2VydGlvbikgTUVTU0FHRV9DSEVDS19CQVNFKGFzc2VydGlvbiwgcHJvY2VzcygpLmNvbm5l
Y3Rpb24oKSkKICNkZWZpbmUgTUVTU0FHRV9DSEVDS19DT01QTEVUSU9OKGFzc2VydGlvbiwgY29t
cGxldGlvbikgTUVTU0FHRV9DSEVDS19DT01QTEVUSU9OX0JBU0UoYXNzZXJ0aW9uLCBwcm9jZXNz
KCkuY29ubmVjdGlvbigpLCBjb21wbGV0aW9uKQogCkBAIC02NzIsNyArNjY2LDEyIEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpyZXF1ZXN0QWN0aXZlTm93UGxheWluZ1Nlc3Npb25JbmZvKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRMYXN0TmF2aWdhdGlv
bldhc0FwcEJvdW5kKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBXRUJfUEFHRV9Q
Uk9YWV9BRERJVElPTlMKKyNpZiBFTkFCTEUoQVBQX1BSSVZBQ1lfUkVQT1JUKQorICAgIGF1dG8g
Km5zUmVxdWVzdCA9IHJlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRl
UG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KTsKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19CRUdJTgorICAgIHJlcXVlc3Quc2V0SXNBcHBCb3VuZCghbnNSZXF1ZXN0Ll9pc05v
bkFwcEluaXRpYXRlZCk7CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECisj
ZW5kaWYKICAgICBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgPSByZXF1ZXN0LmlzQXBwQm91
bmQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDcxNzE3OTY2ZWQ4OTQ3ODkzZWQ5ZGEzOTE1MjFlYTkyYzE3NzI2N2UuLjI1OWJkODRi
OGRjODlmNDliYTIyYmJkODU1YzMwZDExYzg5ZDcxMmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0wNi0xNSAg
S2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBNaWdy
YXRlIEFwcCBQcml2YWN5IFJlcG9ydCBjb2RlIGZyb20gV2ViS2l0QWRkaXRpb25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjcwNDUKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzc0MzMzMjg3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFw
cEJyb3dzZXJQcml2YWN5Lm1tOgorCiAyMDIxLTA2LTE1ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVk
YXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TIDE1XSBTdXBwb3J0IGJ1aWxkaW5nIFdlYktp
dApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFw
cEJyb3dzZXJQcml2YWN5Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCmluZGV4IDJhZTk1NTNiODFmNWQ4NDUzOWE4ZGE3MTQz
MGQ5N2E1ZWY1YmU5MzMuLmQ1ZjdkZmY4NDUzNGE3MDJkYmJmMmFiZmVmZTI0ZGFmNWQ3YTg5YzMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBC
cm93c2VyUHJpdmFjeS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KQEAgLTMzLDYgKzMzLDcgQEAKICNpbXBvcnQgIlRl
c3RVUkxTY2hlbWVIYW5kbGVyLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCiAjaW1wb3J0
ICJXS1dlYlZpZXdDb25maWd1cmF0aW9uRXh0cmFzLmgiCisjaW1wb3J0IDxGb3VuZGF0aW9uL05T
VVJMUmVxdWVzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2lt
cG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KICNpbXBvcnQgPFdlYktp
dC9XS0hUVFBDb29raWVTdG9yZVByaXZhdGUuaD4KQEAgLTQzLDEzICs0NCwxMCBAQAogI2ltcG9y
dCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9f
V0tVc2VyQ29udGVudFdvcmxkLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLVXNlclN0eWxlU2hlZXQu
aD4KKyNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CiAjaW1wb3J0IDx3dGYvUnVu
TG9vcC5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBVU0UoQVBQTEVf
SU5URVJOQUxfU0RLKQotI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL0luQXBwQnJvd3NlclByaXZh
Y3lBZGRpdGlvbnMuaD4KLSNlbmRpZgotCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQog
CiBzdGF0aWMgYm9vbCBpc0RvbmU7CkBAIC0xNDIwLDcgKzE0MTgsNyBAQCBURVNUKEluQXBwQnJv
d3NlclByaXZhY3ksIEFib3V0QmxhbmtTdWJGcmFtZU1hdGNoZXNUb3BGcmFtZU5vbkFwcEJvdW5k
KQogCiAjZW5kaWYgLy8gRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogCi0jaWYgVVNFKEFQUExF
X0lOVEVSTkFMX1NESykgJiYgRU5BQkxFKEFQUF9CT1VORF9SRVFVRVNUUykKKyNpZiBVU0UoQVBQ
TEVfSU5URVJOQUxfU0RLKSAmJiBFTkFCTEUoQVBQX1BSSVZBQ1lfUkVQT1JUKQogVEVTVChJbkFw
cEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZFJlcXVlc3QpCiB7CiAgICAgYXV0byBjb25maWd1cmF0
aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAg
LTE0MzAsNyArMTQyOCwxMCBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kUmVx
dWVzdCkKIAogICAgIF9fYmxvY2sgYm9vbCBpc0RvbmUgPSBmYWxzZTsKICAgICBOU011dGFibGVV
UkxSZXF1ZXN0ICpub25BcHBCb3VuZFJlcXVlc3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1
ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzp1cmxdXTsKLSAgICBBUFBfQk9VTkRfUkVR
VUVTVF9BRERJVElPTlMKKworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lO
CisgICAgbm9uQXBwQm91bmRSZXF1ZXN0Ll9pc05vbkFwcEluaXRpYXRlZCA9IFlFUzsKKyAgICBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogICAgIFt3ZWJWaWV3IGxvYWRSZXF1
ZXN0Om5vbkFwcEJvdW5kUmVxdWVzdF07CiAgICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZp
bmlzaE5hdmlnYXRpb25dOwpAQCAtMTQ4NCw3ICsxNDg1LDkgQEAgVEVTVChJbkFwcEJyb3dzZXJQ
cml2YWN5LCBBcHBCb3VuZFJlcXVlc3RXaXRoTmF2aWdhdGlvbikKICAgICAKICAgICBpc0RvbmUg
PSBmYWxzZTsKICAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpub25BcHBCb3VuZFJlcXVlc3QgPSBb
TlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpu
b25BcHBCb3VuZFVSTF1dOwotICAgIEFQUF9CT1VORF9SRVFVRVNUX0FERElUSU9OUworICAgIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCisgICAgbm9uQXBwQm91bmRSZXF1ZXN0
Ll9pc05vbkFwcEluaXRpYXRlZCA9IFlFUzsKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19FTkQKICAgICAKICAgICBpc0RvbmUgPSBmYWxzZTsKICAgICBbd2ViVmlldyBfY2xlYXJB
cHBCb3VuZE5hdmlnYXRpb25EYXRhOl57CkBAIC0xNTQyLDcgKzE1NDUsOSBAQCBURVNUKEluQXBw
QnJvd3NlclByaXZhY3ksIE5vbkFwcEJvdW5kUmVxdWVzdFdpdGhTdWJGcmFtZSkKICAgICBfX2Js
b2NrIGJvb2wgaXNEb25lID0gZmFsc2U7CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rl
c3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgTlNNdXRhYmxlVVJM
UmVxdWVzdCAqbm9uQXBwQm91bmRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVz
dFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInBhZ2Utd2l0
aC1jc3AiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJ
LnJlc291cmNlcyJdXTsKLSAgICBBUFBfQk9VTkRfUkVRVUVTVF9BRERJVElPTlMKKyAgICBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgorICAgIG5vbkFwcEJvdW5kUmVxdWVzdC5f
aXNOb25BcHBJbml0aWF0ZWQgPSBZRVM7CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfRU5ECiAKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpub25BcHBCb3VuZFJlcXVlc3RdOwog
CkBAIC0xNjIyLDcgKzE2MjcsOSBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KFJlc3BvbnNlVHlwZSBy
ZXNwb25zZVR5cGUsIElzQXBwQm91bmQgYXBwQm91bmQpCiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1
ZXN0ID0gc2VydmVyLnJlcXVlc3QoKTsKICAgICBpZiAoYXBwQm91bmQgPT0gSXNBcHBCb3VuZDo6
Tm8pIHsKICAgICAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqbm9uQXBwQm91bmRSZXF1ZXN0ID0g
W05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwczovLzEyNy4wLjAuMTolZC8iLCBzZXJ2
ZXIucG9ydCgpXV1dOwotICAgICAgICBBUFBfQk9VTkRfUkVRVUVTVF9BRERJVElPTlMKKyAgICAg
ICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KKyAgICAgICAgbm9uQXBwQm91
bmRSZXF1ZXN0Ll9pc05vbkFwcEluaXRpYXRlZCA9IFlFUzsKKyAgICAgICAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgIHJlcXVlc3QgPSBub25BcHBCb3VuZFJlcXVl
c3Q7CiAgICAgfQogCkBAIC0xNzMwLDcgKzE3MzcsOSBAQCBURVNUKEluQXBwQnJvd3NlclByaXZh
Y3ksIE11bHRpcGxlV2ViVmlld3NXaXRoU2hhcmVkU2VydmljZVdvcmtlcikKIAogICAgIGlzRG9u
ZSA9IGZhbHNlOwogICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5vbkFwcEJvdW5kUmVxdWVzdCA9
IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5n
OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvbWFpbi5o
dG1sIiwgc2VydmVyLnBvcnQoKV1dXTsKLSAgICBBUFBfQk9VTkRfUkVRVUVTVF9BRERJVElPTlMK
KyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgorICAgIG5vbkFwcEJvdW5k
UmVxdWVzdC5faXNOb25BcHBJbml0aWF0ZWQgPSBZRVM7CisgICAgQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfRU5ECiAgICAgW3dlYlZpZXcyIGxvYWRSZXF1ZXN0Om5vbkFwcEJvdW5kUmVx
dWVzdF07CiAgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3MiBfdGVzdF93YWl0Rm9yQWxlcnRd
LCAiZmV0Y2hlZCBmcm9tIHNlcnZlciIpOwogCkBAIC0xNzgwLDcgKzE3ODksOSBAQCBzdGF0aWMg
dm9pZCBzb2Z0VXBkYXRlVGVzdChJc0FwcEJvdW5kIGlzQXBwQm91bmQpCiAgICAgICAgIE5TVVJM
UmVxdWVzdCAqcmVxdWVzdCA9IHNlcnZlcjEucmVxdWVzdCgpOwogICAgICAgICBpZiAoaXNBcHBC
b3VuZCA9PSBJc0FwcEJvdW5kOjpObykgewogICAgICAgICAgICAgTlNNdXRhYmxlVVJMUmVxdWVz
dCAqbm9uQXBwQm91bmRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhV
Ukw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRw
czovLzEyNy4wLjAuMTolZC8iLCBzZXJ2ZXIxLnBvcnQoKV1dXTsKLSAgICAgICAgICAgIEFQUF9C
T1VORF9SRVFVRVNUX0FERElUSU9OUworICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfQkVHSU4KKyAgICAgICAgICAgIG5vbkFwcEJvdW5kUmVxdWVzdC5faXNOb25BcHBJ
bml0aWF0ZWQgPSBZRVM7CisgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19FTkQKICAgICAgICAgICAgIHJlcXVlc3QgPSBub25BcHBCb3VuZFJlcXVlc3Q7CiAgICAgICAg
IH0KIApAQCAtMTc5OSw3ICsxODEwLDkgQEAgc3RhdGljIHZvaWQgc29mdFVwZGF0ZVRlc3QoSXNB
cHBCb3VuZCBpc0FwcEJvdW5kKQogICAgICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QyID0gc2Vy
dmVyMi5yZXF1ZXN0KCk7CiAgICAgICAgIGlmIChpc0FwcEJvdW5kID09IElzQXBwQm91bmQ6Ok5v
KSB7CiAgICAgICAgICAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpub25BcHBCb3VuZFJlcXVlc3Qg
PSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmlu
ZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNl
cnZlcjIucG9ydCgpXV1dOwotICAgICAgICAgICAgQVBQX0JPVU5EX1JFUVVFU1RfQURESVRJT05T
CisgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgorICAgICAg
ICAgICAgbm9uQXBwQm91bmRSZXF1ZXN0Ll9pc05vbkFwcEluaXRpYXRlZCA9IFlFUzsKKyAgICAg
ICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICAgICAgcmVx
dWVzdDIgPSBub25BcHBCb3VuZFJlcXVlc3Q7CiAgICAgICAgIH0KIApAQCAtMTg1MCw3ICsxODYz
LDkgQEAgc3RhdGljIHZvaWQgcnVuV2ViUHJvY2Vzc1BsdWdJblRlc3QoSXNBcHBCb3VuZCBpc0Fw
cEJvdW5kKQogICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNNdXRhYmxlVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzp1cmxdXTsKICAgICBp
ZiAoaXNBcHBCb3VuZCA9PSBJc0FwcEJvdW5kOjpObykgewogICAgICAgICBOU011dGFibGVVUkxS
ZXF1ZXN0ICpub25BcHBCb3VuZFJlcXVlc3QgPSByZXF1ZXN0OwotICAgICAgICBBUFBfQk9VTkRf
UkVRVUVTVF9BRERJVElPTlMKKyAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
QkVHSU4KKyAgICAgICAgbm9uQXBwQm91bmRSZXF1ZXN0Ll9pc05vbkFwcEluaXRpYXRlZCA9IFlF
UzsKKyAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgIHJl
cXVlc3QgPSBub25BcHBCb3VuZFJlcXVlc3Q7CiAgICAgfQogCkBAIC0yMDA1LDcgKzIwMjAsOSBA
QCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIFJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFVw
ZGF0ZXNBcHBCb3VuZFZhbHVlKQogICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJzdGFydHMgYXBwLWJv
dW5kIjsKICAgICByZWNlaXZlZE1lc3NhZ2UgPSBmYWxzZTsKICAgICBOU011dGFibGVVUkxSZXF1
ZXN0ICpub25BcHBCb3VuZFJlcXVlc3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0
aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0
dHA6Ly8xMjcuMC4wLjE6JWQvbWFpbi5odG1sIiwgc2VydmVyLnBvcnQoKV1dXTsKLSAgICBBUFBf
Qk9VTkRfUkVRVUVTVF9BRERJVElPTlMKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19CRUdJTgorICAgIG5vbkFwcEJvdW5kUmVxdWVzdC5faXNOb25BcHBJbml0aWF0ZWQgPSBZRVM7
CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBbd2ViVmlldzIg
bG9hZFJlcXVlc3Q6bm9uQXBwQm91bmRSZXF1ZXN0XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJnJlY2VpdmVkTWVzc2FnZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431871</attachid>
            <date>2021-06-21 09:41:10 -0700</date>
            <delta_ts>2021-06-21 13:28:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227045-20210621094109.patch</filename>
            <type>text/plain</type>
            <size>24697</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDgzNmE5ZjhiMGUyMzVmMmFhN2Y0NWY3
M2U2YmU0ODAzNGU4NGIyNWQuLmExYTJhZmUzMDkzMjc0ODc1ZjZiM2EwYzMyYjkwOTA1YzFlZTBm
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDYtMjEgIEthdGUgQ2hlbmV5ICA8a2F0aGVy
aW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgTWlncmF0ZSBBcHAgUHJpdmFjeSBSZXBv
cnQgY29kZSBmcm9tIFdlYktpdEFkZGl0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3MDQ1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDMz
MzI4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAg
IFVwZGF0ZSBjb21waWxlIGZsYWcgbmFtaW5nIHRvIGFsaWduIHdpdGggdGhlIEFwcCBQcml2YWN5
IFJlcG9ydAorICAgICAgICBmZWF0dXJlLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaDoKKwogMjAyMS0wNi0yMSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxp
YS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXggYWZ0ZXIgcjI3OTA2MgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCAwMDY5ZDkwZjYxZTg1ZGU3NGJhNzkzODY5OWIzYjQwMmE2MjUzODg2Li40MTQ3YTgy
NjJlMWVlY2JmOGZiZjY1YzM5ZjVmYTZkNzJmZTNjNTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5
IEBACisyMDIxLTA2LTIxICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29t
PgorCisgICAgICAgIE1pZ3JhdGUgQXBwIFByaXZhY3kgUmVwb3J0IGNvZGUgZnJvbSBXZWJLaXRB
ZGRpdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyNzA0NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzQzMzMyODc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNr
Q29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKToKKyAgICAgICAgKGNvbnRleHRTdHJpbmcpOiBE
ZWxldGVkLgorICAgICAgICBUaGlzIHBhdGNoIGRlbGV0ZXMgdGhlIGNvbnRleHRTdHJpbmcgZnVu
Y3Rpb24gYmVjYXVzZSBpdCBpcyBubyBsb25nZXIKKyAgICAgICAgbmVlZGVkIG5vdyB0aGF0IENG
TmV0d29yayBzZXRzIHRoZSBhdHRyaWJ1dGlvbiBjb250ZXh0LCBhbmQgaXQgc2VlbWVkCisgICAg
ICAgIHNpbGx5IHRvIG1pZ3JhdGUgY29kZSBmcm9tIFdlYktpdEFkZGl0aW9ucyBqdXN0IHRvIGRl
bGV0ZSBpdAorICAgICAgICBpbW1lZGlhdGVseS4gVGhpcyBhbHNvIG1vdmVzIHRoZSBwcm9jZXNz
UENNUmVxdWVzdCBmdW5jdGlvbgorICAgICAgICBkZWNsYXJhdGlvbiBmcm9tIFdlYktpdEFkZGl0
aW9ucyBzbyB3ZSBjYW4gcmVtb3ZlCisgICAgICAgIE5FVFdPUktfREFUQV9UQVNLX0NPQ09BX0FE
RElUSU9OUy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9u
Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OmlzQWN0aW5nT25CZWhhbGZPZkFGdWxsV2ViQnJv
d3Nlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OnJlbW92ZU5ldHdv
cmtXZWJzaXRlRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNv
Y29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldExhc3ROYXZpZ2F0aW9u
V2FzQXBwQm91bmQpOgorCiAyMDIxLTA2LTIwICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhA
YXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gUmVuYW1lIFdLVmlzdWFsU2VhcmNoUHJldmll
d0NvbnRyb2xsZXIgdG8gV0tRdWlja0xvb2tQcmV2aWV3Q29udHJvbGxlcgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oIGIvU291cmNlL1dURi93dGYvUGxh
dGZvcm1FbmFibGVDb2NvYS5oCmluZGV4IDJjNjZiY2ZlZTNhNjQyNzM3M2M4ODMzYjA4NGUwZTg2
MjEwZDM2NTUuLmE5ZTEwYTI1MTllMDkzOTMxM2JmMmY1OGY0YTk2OTZlZTIxZjU3YWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmgKQEAgLTY5OSw4ICs2OTksOCBAQAogI2RlZmlu
ZSBFTkFCTEVfTk9USUZZX0ZJTFRFUklORyAxCiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKEVOQUJM
RV9BUFBfQk9VTkRfUkVRVUVTVFMpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05F
X09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDE1MDAwMAotI2RlZmluZSBFTkFCTEVfQVBQX0JP
VU5EX1JFUVVFU1RTIDEKKyNpZiAhZGVmaW5lZChFTkFCTEVfQVBQX1BSSVZBQ1lfUkVQT1JUKSAm
JiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxNTAwMDAKKyNkZWZpbmUgRU5BQkxFX0FQUF9QUklWQUNZX1JFUE9SVCAxCiAjZW5kaWYK
IAogI2lmICFkZWZpbmVkKEVOQUJMRV9ERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1Az
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
RGF0YVRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya0RhdGFUYXNrQ29jb2EubW0KaW5kZXggMzQwZDdkYWMyODZiNzNiODNjNTFlYmQwZjY4MGZj
NGFiZjlkYWY5NS4uZjc0YjMxMjlmZTcyYmM5ZmNlNjIzNjA2MDZkM2IzOWIwNzEyY2Y4OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRh
c2tDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtEYXRhVGFza0NvY29hLm1tCkBAIC01Nyw4ICs1Nyw3IEBACiAjaWYgVVNFKEFQUExFX0lOVEVS
TkFMX1NESykKICNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9OZXR3b3JrRGF0YVRhc2tDb2NvYUFk
ZGl0aW9ucy5oPgogI2Vsc2UKLSNkZWZpbmUgTkVUV09SS19EQVRBX1RBU0tfQ09DT0FfQURESVRJ
T05TIFVOVVNFRF9WQVJJQUJMRShwY21EYXRhQ2FycmllZCk7Ci1zdGF0aWMgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4gY29udGV4dFN0cmluZyhOU1VSTFJlcXVlc3QgKikgeyByZXR1cm4geyB9
OyB9CitzdGF0aWMgdm9pZCBwcm9jZXNzUENNUmVxdWVzdChXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQsIE5TTXV0YWJsZVVSTFJlcXVlc3QgKikgeyB9Owog
I2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMzM4LDI0ICszMzcsMzEgQEAgTmV0d29y
a0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9uJiBzZXNz
aW9uLCBOZXR3b3JrRGF0YVQKICNlbmRpZgogICAgIHJlc3RyaWN0UmVxdWVzdFJlZmVycmVyVG9P
cmlnaW5JZk5lZWRlZChyZXF1ZXN0KTsKIAotICAgIC8vIEZJWE1FOiBPbmNlIHdlIGFyZSBkb25l
IHdpdGggTkVUV09SS19EQVRBX1RBU0tfQ09DT0FfQURESVRJT05TLCBtYWtlIG5zUmVxdWVzdCBh
IFJldGFpblB0ciBhbmQgZ2V0IHJpZCBvZiBwcm90ZWN0ZWROU1JlcXVlc3QgYW5kIHBjbURhdGFD
YXJyaWVkLgotICAgIE5TVVJMUmVxdWVzdCAqbnNSZXF1ZXN0ID0gcmVxdWVzdC5uc1VSTFJlcXVl
c3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OlVwZGF0ZUhUVFBCb2R5KTsKLSAgICBh
dXRvIHBjbURhdGFDYXJyaWVkID0gcGFyYW1ldGVycy5wY21EYXRhQ2FycmllZDsKKyAgICBSZXRh
aW5QdHI8TlNVUkxSZXF1ZXN0PiBuc1JlcXVlc3QgPSByZXF1ZXN0Lm5zVVJMUmVxdWVzdChXZWJD
b3JlOjpIVFRQQm9keVVwZGF0ZVBvbGljeTo6VXBkYXRlSFRUUEJvZHkpOworICAgIFJldGFpblB0
cjxOU011dGFibGVVUkxSZXF1ZXN0PiBtdXRhYmxlUmVxdWVzdCA9IGFkb3B0TlMoW25zUmVxdWVz
dC5nZXQoKSBtdXRhYmxlQ29weV0pOwogCi0gICAgTkVUV09SS19EQVRBX1RBU0tfQ09DT0FfQURE
SVRJT05TCisjaWYgRU5BQkxFKEFQUF9QUklWQUNZX1JFUE9SVCkKKyAgICBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19CRUdJTgorICAgIG11dGFibGVSZXF1ZXN0LmdldCgpLl9pc05vbkFw
cEluaXRpYXRlZCA9ICFyZXF1ZXN0LmlzQXBwQm91bmQoKTsKKyAgICBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19FTkQKKyNlbmRpZgorCisgICAgaWYgKHBhcmFtZXRlcnMucGNtRGF0YUNh
cnJpZWQpCisgICAgICAgIHByb2Nlc3NQQ01SZXF1ZXN0KCpwYXJhbWV0ZXJzLnBjbURhdGFDYXJy
aWVkLCBtdXRhYmxlUmVxdWVzdC5nZXQoKSk7CisKKyAgICBuc1JlcXVlc3QgPSBtdXRhYmxlUmVx
dWVzdDsKIAotICAgIGF1dG8gcHJvdGVjdGVkTlNSZXF1ZXN0ID0gcmV0YWluUHRyKG5zUmVxdWVz
dCk7Ci0gICAgbV9zZXNzaW9uLT5hcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSgpLnVwZGF0
ZUFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhKHJlcXVlc3QsIGNvbnRleHRTdHJpbmcocHJv
dGVjdGVkTlNSZXF1ZXN0LmdldCgpKSk7CisgICAgbV9zZXNzaW9uLT5hcHBCb3VuZE5hdmlnYXRp
b25UZXN0aW5nRGF0YSgpLnVwZGF0ZUFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhKHJlcXVl
c3QsIHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKS5pc0VtcHR5KCkgPyBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbihyZXF1ZXN0LnVybCgpKSA6IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluKHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSkpOwogCi0gICAgYXBwbHlTbmlmZmlu
Z1BvbGljaWVzQW5kQmluZFJlcXVlc3RUb0luZmVyZmFjZUlmTmVlZGVkKHByb3RlY3RlZE5TUmVx
dWVzdCwgcGFyYW1ldGVycy5jb250ZW50U25pZmZpbmdQb2xpY3kgPT0gV2ViQ29yZTo6Q29udGVu
dFNuaWZmaW5nUG9saWN5OjpTbmlmZkNvbnRlbnQgJiYgIXVybC5pc0xvY2FsRmlsZSgpLCBwYXJh
bWV0ZXJzLmNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5ID09IFdlYkNvcmU6OkNvbnRlbnRF
bmNvZGluZ1NuaWZmaW5nUG9saWN5OjpTbmlmZik7CisgICAgYXBwbHlTbmlmZmluZ1BvbGljaWVz
QW5kQmluZFJlcXVlc3RUb0luZmVyZmFjZUlmTmVlZGVkKG5zUmVxdWVzdCwgcGFyYW1ldGVycy5j
b250ZW50U25pZmZpbmdQb2xpY3kgPT0gV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5OjpT
bmlmZkNvbnRlbnQgJiYgIXVybC5pc0xvY2FsRmlsZSgpLCBwYXJhbWV0ZXJzLmNvbnRlbnRFbmNv
ZGluZ1NuaWZmaW5nUG9saWN5ID09IFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9s
aWN5OjpTbmlmZik7CiAKLSAgICBtX3Rhc2sgPSBbbV9zZXNzaW9uV3JhcHBlci0+c2Vzc2lvbiBk
YXRhVGFza1dpdGhSZXF1ZXN0OnByb3RlY3RlZE5TUmVxdWVzdC5nZXQoKV07CisgICAgbV90YXNr
ID0gW21fc2Vzc2lvbldyYXBwZXItPnNlc3Npb24gZGF0YVRhc2tXaXRoUmVxdWVzdDpuc1JlcXVl
c3QuZ2V0KCldOwogCiAgICAgV1RGQmVnaW5TaWducG9zdChtX3Rhc2suZ2V0KCksICJEYXRhVGFz
ayIsICIle3B1YmxpY31zIHByaTogJS4yZiBwcmVjb25uZWN0OiAlZCIsIHVybC5zdHJpbmcoKS5h
c2NpaSgpLmRhdGEoKSwgdG9OU1VSTFNlc3Npb25UYXNrUHJpb3JpdHkocmVxdWVzdC5wcmlvcml0
eSgpKSwgcGFyYW1ldGVycy5zaG91bGRQcmVjb25uZWN0T25seSA9PSBQcmVjb25uZWN0T25seTo6
WWVzKTsKIAogICAgIFJFTEVBU0VfQVNTRVJUKCFtX3Nlc3Npb25XcmFwcGVyLT5kYXRhVGFza01h
cC5jb250YWlucyhbbV90YXNrIHRhc2tJZGVudGlmaWVyXSkpOwogICAgIG1fc2Vzc2lvbldyYXBw
ZXItPmRhdGFUYXNrTWFwLmFkZChbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgdGhpcyk7Ci0gICAg
TE9HKE5ldHdvcmtTZXNzaW9uLCAiJWx1IENyZWF0aW5nIE5ldHdvcmtEYXRhVGFzayB3aXRoIFVS
TCAlcyIsICh1bnNpZ25lZCBsb25nKVttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCBbcHJvdGVjdGVk
TlNSZXF1ZXN0IFVSTF0uYWJzb2x1dGVTdHJpbmcuVVRGOFN0cmluZyk7CisgICAgTE9HKE5ldHdv
cmtTZXNzaW9uLCAiJWx1IENyZWF0aW5nIE5ldHdvcmtEYXRhVGFzayB3aXRoIFVSTCAlcyIsICh1
bnNpZ25lZCBsb25nKVttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCBbbnNSZXF1ZXN0IFVSTF0uYWJz
b2x1dGVTdHJpbmcuVVRGOFN0cmluZyk7CiAKICAgICBpZiAocGFyYW1ldGVycy5zaG91bGRQcmVj
b25uZWN0T25seSA9PSBQcmVjb25uZWN0T25seTo6WWVzKSB7CiAjaWYgRU5BQkxFKFNFUlZFUl9Q
UkVDT05ORUNUKQpAQCAtMzcyLDkgKzM3OCw5IEBAIE5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3
b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUCiAg
ICAgaWYgKHNob3VsZEJsb2NrQ29va2llcykgewogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAog
ICAgICAgICBpZiAobV9zZXNzaW9uLT5zaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigpKQotICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdv
cmssICIlcCAtIE5ldHdvcmtEYXRhVGFza0NvY29hOjpsb2dDb29raWVJbmZvcm1hdGlvbjogcGFn
ZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCB0YXNrSUQ9JWx1OiBCbG9ja2lu
ZyBjb29raWVzIGZvciBVUkwgJXMiLCB0aGlzLCBwYWdlSUQoKS50b1VJbnQ2NCgpLCBmcmFtZUlE
KCkudG9VSW50NjQoKSwgKHVuc2lnbmVkIGxvbmcpW21fdGFzayB0YXNrSWRlbnRpZmllcl0sIFtw
cm90ZWN0ZWROU1JlcXVlc3QgVVJMXS5hYnNvbHV0ZVN0cmluZy5VVEY4U3RyaW5nKTsKKyAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3Jr
LCAiJXAgLSBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6bG9nQ29va2llSW5mb3JtYXRpb246IHBhZ2VJ
RD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIiwgdGFza0lEPSVsdTogQmxvY2tpbmcg
Y29va2llcyBmb3IgVVJMICVzIiwgdGhpcywgcGFnZUlEKCkudG9VSW50NjQoKSwgZnJhbWVJRCgp
LnRvVUludDY0KCksICh1bnNpZ25lZCBsb25nKVttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCBbbnNS
ZXF1ZXN0IFVSTF0uYWJzb2x1dGVTdHJpbmcuVVRGOFN0cmluZyk7CiAjZWxzZQotICAgICAgICBM
T0coTmV0d29ya1Nlc3Npb24sICIlbHUgQmxvY2tpbmcgY29va2llcyBmb3IgVVJMICVzIiwgKHVu
c2lnbmVkIGxvbmcpW21fdGFzayB0YXNrSWRlbnRpZmllcl0sIFtwcm90ZWN0ZWROU1JlcXVlc3Qg
VVJMXS5hYnNvbHV0ZVN0cmluZy5VVEY4U3RyaW5nKTsKKyAgICAgICAgTE9HKE5ldHdvcmtTZXNz
aW9uLCAiJWx1IEJsb2NraW5nIGNvb2tpZXMgZm9yIFVSTCAlcyIsICh1bnNpZ25lZCBsb25nKVtt
X3Rhc2sgdGFza0lkZW50aWZpZXJdLCBbbnNSZXF1ZXN0IFVSTF0uYWJzb2x1dGVTdHJpbmcuVVRG
OFN0cmluZyk7CiAjZW5kaWYKICAgICAgICAgYmxvY2tDb29raWVzKCk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tCmluZGV4IGY3N2NlNzk0OTFhZTBlYWEzMTE1NjNkODFhN2JkMGEzZjQ2NGVhNWMu
LjRmMGNmNTlmNzk2ZjhjN2JiMjE0MTU5ZWQ3YzhjMjAyNmI5NjU5MDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29j
b2EubW0KQEAgLTU5LDEwICs1OSwzMSBAQAogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAj
aW1wb3J0IDx3dGYvVVJMLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KKyNpbXBvcnQg
PHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgorI2ltcG9ydCA8d3RmL2Rhcndpbi9XZWFrTGlua2lu
Zy5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBVU0UoQVBQTEVfSU5U
RVJOQUxfU0RLKQogI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL05ldHdvcmtTZXNzaW9uQ29jb2FB
ZGRpdGlvbnMuaD4KKworI2lmICFQTEFURk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikKKyNpbXBv
cnQgPFN5bXB0b21zL1N5bXB0b21BbmFseXRpY3MuaD4KKyNpbXBvcnQgPFN5bXB0b21zL1N5bXB0
b21QcmVzZW50YXRpb25GZWVkLmg+CisjZW5kaWYKKworI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
X1NJTVVMQVRPUikgJiYgIVBMQVRGT1JNKFdBVENIT1MpCitTT0ZUX0xJTktfUFJJVkFURV9GUkFN
RVdPUktfSU5fVU1CUkVMTEFfT1BUSU9OQUwoU3ltcHRvbXMsIFN5bXB0b21BbmFseXRpY3MpOwor
U09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLX0lOX1VNQlJFTExBX09QVElPTkFMKFN5bXB0b21z
LCBTeW1wdG9tUHJlc2VudGF0aW9uRmVlZCk7CitTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktf
SU5fVU1CUkVMTEFfT1BUSU9OQUwoU3ltcHRvbXMsIFN5bXB0b21QcmVzZW50YXRpb25MaXRlKTsK
K1NPRlRfTElOS19DTEFTU19PUFRJT05BTChTeW1wdG9tQW5hbHl0aWNzLCBBbmFseXRpY3NXb3Jr
c3BhY2UpOworU09GVF9MSU5LX0NMQVNTX09QVElPTkFMKFN5bXB0b21QcmVzZW50YXRpb25GZWVk
LCBVc2FnZUZlZWQpOworU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKFN5bXB0b21QcmVzZW50
YXRpb25GZWVkLCBrU3ltcHRvbUFuYWx5dGljc1NlcnZpY2VEb21haW5UcmFja2luZ0NsZWFySGlz
dG9yeUJ1bmRsZUlEcywgY29uc3QgTlNTdHJpbmcgKik7CitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZ
X0ZBSUwoU3ltcHRvbVByZXNlbnRhdGlvbkZlZWQsIGtTeW1wdG9tQW5hbHl0aWNzU2VydmljZURv
bWFpblRyYWNraW5nQ2xlYXJIaXN0b3J5U3RhcnREYXRlLCBjb25zdCBOU1N0cmluZyAqKTsKK1NP
RlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChTeW1wdG9tUHJlc2VudGF0aW9uRmVlZCwga1N5bXB0
b21BbmFseXRpY3NTZXJ2aWNlRG9tYWluVHJhY2tpbmdDbGVhckhpc3RvcnlFbmREYXRlLCBjb25z
dCBOU1N0cmluZyAqKTsKK1NPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChTeW1wdG9tUHJlc2Vu
dGF0aW9uRmVlZCwga1N5bXB0b21BbmFseXRpY3NTZXJ2aWNlRG9tYWluVHJhY2tpbmdDbGVhckhp
c3RvcnlLZXksIGNvbnN0IE5TU3RyaW5nICopOworU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlM
KFN5bXB0b21QcmVzZW50YXRpb25MaXRlLCBrU3ltcHRvbUFuYWx5dGljc1NlcnZpY2VFbmRwb2lu
dCwgTlNTdHJpbmcgKikKKyNlbmRpZgorCiAjZWxzZQogI2RlZmluZSBORVRXT1JLX1NFU1NJT05f
Q09DT0FfQURESVRJT05TXzEKIHZvaWQgV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpyZW1v
dmVOZXR3b3JrV2Vic2l0ZURhdGEoc3RkOjpvcHRpb25hbDxXYWxsVGltZT4sIHN0ZDo6b3B0aW9u
YWw8SGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4+JiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigpOyB9
CkBAIC0xNzYxLDQgKzE3ODIsODUgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjbGVhckFs
dGVybmF0aXZlU2VydmljZXMoV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSkKICNlbmRpZgogfQogCisj
aWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKworI2lmICFQTEFURk9STShJT1NfRkFNSUxZX1NJ
TVVMQVRPUikgJiYgIVBMQVRGT1JNKFdBVENIT1MpCitzdGF0aWMgYm9vbCBpc0FjdGluZ09uQmVo
YWxmT2ZBRnVsbFdlYkJyb3dzZXIoY29uc3QgU3RyaW5nJiBidW5kbGVJRCkKK3sKKyAgICByZXR1
cm4gYnVuZGxlSUQgPT0gImNvbS5hcHBsZS53ZWJib29rbWFya3NkIjsKK30KKyNlbmRpZgorCit2
b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OnJlbW92ZU5ldHdvcmtXZWJzaXRlRGF0YShzdGQ6Om9w
dGlvbmFsPFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBzdGQ6Om9wdGlvbmFsPEhhc2hTZXQ8V2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4+PiYmIGRvbWFpbnMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWV9T
SU1VTEFUT1IpICYmICFQTEFURk9STShXQVRDSE9TKQorICAgIGF1dG8gYnVuZGxlSUQgPSBXZWJD
b3JlOjphcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKTsKKyAgICBpZiAoIWlzUGFyZW50UHJv
Y2Vzc0FGdWxsV2ViQnJvd3NlcihuZXR3b3JrUHJvY2VzcygpKSAmJiAhaXNBY3RpbmdPbkJlaGFs
Zk9mQUZ1bGxXZWJCcm93c2VyKGJ1bmRsZUlEKSkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKCk7CisKKyAgICBpZiAoIVN5bXB0b21BbmFseXRpY3NMaWJyYXJ5KCkKKyAgICAgICAg
fHwgIVN5bXB0b21QcmVzZW50YXRpb25GZWVkTGlicmFyeSgpCisgICAgICAgIHx8ICFTeW1wdG9t
UHJlc2VudGF0aW9uTGl0ZUxpYnJhcnkoKQorICAgICAgICB8fCAhZ2V0QW5hbHl0aWNzV29ya3Nw
YWNlQ2xhc3MoKQorICAgICAgICB8fCAhZ2V0VXNhZ2VGZWVkQ2xhc3MoKQorICAgICAgICB8fCAh
Y2FuTG9hZGtTeW1wdG9tQW5hbHl0aWNzU2VydmljZUVuZHBvaW50KCkpIHsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJldGFpblB0
cjxBbmFseXRpY3NXb3Jrc3BhY2U+IHdvcmtzcGFjZSA9IGFkb3B0TlMoW2FsbG9jQW5hbHl0aWNz
V29ya3NwYWNlSW5zdGFuY2UoKSBpbml0V29ya3NwYWNlV2l0aFNlcnZpY2U6Z2V0a1N5bXB0b21B
bmFseXRpY3NTZXJ2aWNlRW5kcG9pbnQoKV0pOworICAgIFJldGFpblB0cjxVc2FnZUZlZWQ+IHVz
YWdlRmVlZCA9IGFkb3B0TlMoW2FsbG9jVXNhZ2VGZWVkSW5zdGFuY2UoKSBpbml0V2l0aFdvcmtz
cGFjZTp3b3Jrc3BhY2UuZ2V0KCldKTsKKworICAgIGlmICghW3VzYWdlRmVlZC5nZXQoKSByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBlcmZvcm1OZXR3b3JrRG9tYWluc0FjdGlvbldpdGhP
cHRpb25zOnJlcGx5OildCisgICAgICAgIHx8ICFjYW5Mb2Fka1N5bXB0b21BbmFseXRpY3NTZXJ2
aWNlRG9tYWluVHJhY2tpbmdDbGVhckhpc3RvcnlLZXkoKQorICAgICAgICB8fCAhY2FuTG9hZGtT
eW1wdG9tQW5hbHl0aWNzU2VydmljZURvbWFpblRyYWNraW5nQ2xlYXJIaXN0b3J5QnVuZGxlSURz
KCkKKyAgICAgICAgfHwgIWNhbkxvYWRrU3ltcHRvbUFuYWx5dGljc1NlcnZpY2VEb21haW5UcmFj
a2luZ0NsZWFySGlzdG9yeVN0YXJ0RGF0ZSgpCisgICAgICAgIHx8ICFjYW5Mb2Fka1N5bXB0b21B
bmFseXRpY3NTZXJ2aWNlRG9tYWluVHJhY2tpbmdDbGVhckhpc3RvcnlFbmREYXRlKCkpIHsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGF1dG8gKnN0YXJ0RGF0ZSA9IFtOU0RhdGUgZGlzdGFudFBhc3RdOworICAgIGlmIChtb2RpZmll
ZFNpbmNlKSB7CisgICAgICAgIE5TVGltZUludGVydmFsIHRpbWVJbnRlcnZhbCA9IG1vZGlmaWVk
U2luY2UudmFsdWUoKS5zZWNvbmRzU2luY2VFcG9jaCgpLnNlY29uZHMoKTsKKyAgICAgICAgc3Rh
cnREYXRlID0gW05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlMTk3MDp0aW1lSW50ZXJ2
YWxdOworICAgIH0KKworICAgIGF1dG8gY29udGV4dEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJs
ZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgaWYgKGRvbWFpbnMpIHsKKyAgICAgICAgY29udGV4
dEFycmF5ID0gY3JlYXRlTlNBcnJheSgqZG9tYWlucywgWyZdIChhdXRvIGRvbWFpbikgeworICAg
ICAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzpkb21haW4uc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKV07CisgICAgICAgIH0pOworICAgIH0KKworICAgIGlmIChpc0Fj
dGluZ09uQmVoYWxmT2ZBRnVsbFdlYkJyb3dzZXIoYnVuZGxlSUQpKQorICAgICAgICBidW5kbGVJ
RCA9ICJjb20uYXBwbGUubW9iaWxlc2FmYXJpIjsKKworICAgIE5TRGljdGlvbmFyeSAqb3B0aW9u
cyA9IEB7CisgICAgICAgIChpZClnZXRrU3ltcHRvbUFuYWx5dGljc1NlcnZpY2VEb21haW5UcmFj
a2luZ0NsZWFySGlzdG9yeUtleSgpOiBAeworICAgICAgICAgICAgKGlkKWdldGtTeW1wdG9tQW5h
bHl0aWNzU2VydmljZURvbWFpblRyYWNraW5nQ2xlYXJIaXN0b3J5QnVuZGxlSURzKCk6IEB7Cisg
ICAgICAgICAgICAgICAgYnVuZGxlSUQgOiBjb250ZXh0QXJyYXkuZ2V0KCksCisgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgKGlkKWdldGtTeW1wdG9tQW5hbHl0aWNzU2VydmljZURvbWFpblRy
YWNraW5nQ2xlYXJIaXN0b3J5U3RhcnREYXRlKCk6IHN0YXJ0RGF0ZSwKKyAgICAgICAgICAgIChp
ZClnZXRrU3ltcHRvbUFuYWx5dGljc1NlcnZpY2VEb21haW5UcmFja2luZ0NsZWFySGlzdG9yeUVu
ZERhdGUoKTogW05TRGF0ZSBkaXN0YW50RnV0dXJlXQorICAgICAgICB9CisgICAgfTsKKworICAg
IGJvb2wgcmVzdWx0ID0gW3VzYWdlRmVlZCBwZXJmb3JtTmV0d29ya0RvbWFpbnNBY3Rpb25XaXRo
T3B0aW9uczpvcHRpb25zIHJlcGx5Om1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oTlNEaWN0aW9uYXJ5ICpyZXBseSwgTlNFcnJvciAq
ZXJyb3IpIG11dGFibGUgeworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICBMT0coTmV0
d29ya1Nlc3Npb24sICJFcnJvciBkZWxldGluZyBuZXR3b3JrIGRvbWFpbiBkYXRhICUiIFBVQkxJ
Q19MT0dfU1RSSU5HLCBlcnJvcik7CisKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAg
ICB9KS5nZXQoKV07CisKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgTE9HKE5ldHdvcmtTZXNz
aW9uLCAiRXJyb3IgZGVsZXRpbmcgbmV0d29yayBkb21haW4gZGF0YTogaW52YWxpZCBwYXJhbWV0
ZXIgb3IgZmFpbHVyZSB0byBjb250YWN0IHRoZSBzZXJ2aWNlIik7CisjZWxzZQorICAgIFVOVVNF
RF9QQVJBTShtb2RpZmllZFNpbmNlKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworI2VuZGlm
Cit9CisKKyNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBh
Z2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVBy
b3h5Q29jb2EubW0KaW5kZXggZDkxZGMwN2QwN2NkNjBjZmMyNzcxNTM2NzFkMmU2MWUyZjU0MTM4
OS4uNTI4NTNkNTYwM2IyMTFkMmYyN2NiYTllYzVlODM5NGJjNjBkYTFkOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KQEAgLTQ4
LDYgKzQ4LDcgQEAKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogI2ltcG9ydCAiV2Vic2l0
ZURhdGFTdG9yZS5oIgogI2ltcG9ydCAiV0tFcnJvckludGVybmFsLmgiCisjaW1wb3J0IDxGb3Vu
ZGF0aW9uL05TVVJMUmVxdWVzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9EcmFnSXRlbS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9HZW9tZXRyeVV0aWxpdGllcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9IaWdo
bGlnaHRWaXNpYmlsaXR5Lmg+CkBAIC04NSwxMyArODYsNiBAQCBTT0ZUX0xJTktfUFJJVkFURV9G
UkFNRVdPUksoV2ViQ29udGVudEFuYWx5c2lzKTsKIFNPRlRfTElOS19DTEFTUyhXZWJDb250ZW50
QW5hbHlzaXMsIFdlYkZpbHRlckV2YWx1YXRvcik7CiAjZW5kaWYKIAotI2lmIFVTRShBUFBMRV9J
TlRFUk5BTF9TREspCi0vLyBGSVhNRTogVGhpcyBhZGRpdGlvbnMgZmlsZSBzaG91bGQgYmUgcmVu
YW1lZCB0byBXZWJQYWdlUHJveHlBZGRpdGlvbnMubW0uCi0jaW1wb3J0IDxXZWJLaXRBZGRpdGlv
bnMvV2ViUGFnZVByb3h5QWRkaXRpb25zLmg+Ci0jZWxzZQotI2RlZmluZSBXRUJfUEFHRV9QUk9Y
WV9BRERJVElPTlMKLSNlbmRpZgotCiAjZGVmaW5lIE1FU1NBR0VfQ0hFQ0soYXNzZXJ0aW9uKSBN
RVNTQUdFX0NIRUNLX0JBU0UoYXNzZXJ0aW9uLCBwcm9jZXNzKCkuY29ubmVjdGlvbigpKQogI2Rl
ZmluZSBNRVNTQUdFX0NIRUNLX0NPTVBMRVRJT04oYXNzZXJ0aW9uLCBjb21wbGV0aW9uKSBNRVNT
QUdFX0NIRUNLX0NPTVBMRVRJT05fQkFTRShhc3NlcnRpb24sIHByb2Nlc3MoKS5jb25uZWN0aW9u
KCksIGNvbXBsZXRpb24pCiAKQEAgLTY1OSw3ICs2NTMsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnJlcXVlc3RBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm8oQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib28KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQo
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIFdFQl9QQUdFX1BST1hZX0FERElUSU9O
UworI2lmIEVOQUJMRShBUFBfUFJJVkFDWV9SRVBPUlQpCisgICAgYXV0byAqbnNSZXF1ZXN0ID0g
cmVxdWVzdC5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90
VXBkYXRlSFRUUEJvZHkpOworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lO
CisgICAgcmVxdWVzdC5zZXRJc0FwcEJvdW5kKCFuc1JlcXVlc3QuX2lzTm9uQXBwSW5pdGlhdGVk
KTsKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKKyNlbmRpZgogICAgIG1f
bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCA9IHJlcXVlc3QuaXNBcHBCb3VuZCgpOwogfQogCmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWZhYzUz
MzVjZjk1NDYzZjkyOWE5NWU4MDU4YjcxZGRjYzljMmRhZi4uZmNkMDliOTFhZjVlMjQwNDE4ZDU4
NmUyM2RhOTgyMTc4OGQzMzUxNyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTA2LTIxICBLYXRlIENoZW5leSAg
PGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIE1pZ3JhdGUgQXBwIFByaXZh
Y3kgUmVwb3J0IGNvZGUgZnJvbSBXZWJLaXRBZGRpdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzA0NQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNzQzMzMyODc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJp
dmFjeS5tbToKKwogMjAyMS0wNi0xOSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzg2OTkuCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclBy
aXZhY3kubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJv
d3NlclByaXZhY3kubW0KaW5kZXggMmFlOTU1M2I4MWY1ZDg0NTM5YThkYTcxNDMwZDk3YTVlZjVi
ZTkzMy4uYTVjNDRjYTU4NzlkNDJkOGUxNGNjOTM2ODlkNmEyMmVmMWM1OTEzYSAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2
YWN5Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBC
cm93c2VyUHJpdmFjeS5tbQpAQCAtMzMsNiArMzMsNyBAQAogI2ltcG9ydCAiVGVzdFVSTFNjaGVt
ZUhhbmRsZXIuaCIKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKICNpbXBvcnQgIldLV2ViVmll
d0NvbmZpZ3VyYXRpb25FeHRyYXMuaCIKKyNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxSZXF1ZXN0
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLSFRUUENv
b2tpZVN0b3JlUHJpdmF0ZS5oPgpAQCAtNDMsMTMgKzQ0LDEwIEBACiAjaW1wb3J0IDxXZWJLaXQv
V0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1VzZXJDb250
ZW50V29ybGQuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tVc2VyU3R5bGVTaGVldC5oPgorI2ltcG9y
dCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KICNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CiAj
aW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9T
REspCi0jaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvSW5BcHBCcm93c2VyUHJpdmFjeUFkZGl0aW9u
cy5oPgotI2VuZGlmCi0KICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAKIHN0YXRpYyBi
b29sIGlzRG9uZTsKQEAgLTE0MjAsNyArMTQxOCw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFj
eSwgQWJvdXRCbGFua1N1YkZyYW1lTWF0Y2hlc1RvcEZyYW1lTm9uQXBwQm91bmQpCiAKICNlbmRp
ZiAvLyBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAKLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxf
U0RLKSAmJiBFTkFCTEUoQVBQX0JPVU5EX1JFUVVFU1RTKQorI2lmIEVOQUJMRShBUFBfUFJJVkFD
WV9SRVBPUlQpCiBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kUmVxdWVzdCkKIHsK
ICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pOwpAQCAtMTQzMCw3ICsxNDI4LDEwIEBAIFRFU1QoSW5BcHBCcm93c2Vy
UHJpdmFjeSwgQXBwQm91bmRSZXF1ZXN0KQogCiAgICAgX19ibG9jayBib29sIGlzRG9uZSA9IGZh
bHNlOwogICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5vbkFwcEJvdW5kUmVxdWVzdCA9IFtOU011
dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOnVybF1d
OwotICAgIEFQUF9CT1VORF9SRVFVRVNUX0FERElUSU9OUworCisgICAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfQkVHSU4KKyAgICBub25BcHBCb3VuZFJlcXVlc3QuX2lzTm9uQXBwSW5p
dGlhdGVkID0gWUVTOworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAg
ICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6bm9uQXBwQm91bmRSZXF1ZXN0XTsKICAgICBbd2ViVmll
dyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CkBAIC0xNDg0LDcgKzE0ODUsOSBA
QCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kUmVxdWVzdFdpdGhOYXZpZ2F0aW9u
KQogICAgIAogICAgIGlzRG9uZSA9IGZhbHNlOwogICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5v
bkFwcEJvdW5kUmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltO
U1VSTCBVUkxXaXRoU3RyaW5nOm5vbkFwcEJvdW5kVVJMXV07Ci0gICAgQVBQX0JPVU5EX1JFUVVF
U1RfQURESVRJT05TCisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KKyAg
ICBub25BcHBCb3VuZFJlcXVlc3QuX2lzTm9uQXBwSW5pdGlhdGVkID0gWUVTOworICAgIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIAogICAgIGlzRG9uZSA9IGZhbHNlOwog
ICAgIFt3ZWJWaWV3IF9jbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGE6XnsKQEAgLTE1NDIsNyAr
MTU0NSw5IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmRSZXF1ZXN0V2l0
aFN1YkZyYW1lKQogICAgIF9fYmxvY2sgYm9vbCBpc0RvbmUgPSBmYWxzZTsKICAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKICAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpub25BcHBCb3VuZFJlcXVlc3QgPSBbTlNNdXRh
YmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZv
clJlc291cmNlOkAicGFnZS13aXRoLWNzcCIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVj
dG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOwotICAgIEFQUF9CT1VORF9SRVFVRVNU
X0FERElUSU9OUworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCisgICAg
bm9uQXBwQm91bmRSZXF1ZXN0Ll9pc05vbkFwcEluaXRpYXRlZCA9IFlFUzsKKyAgICBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0Om5v
bkFwcEJvdW5kUmVxdWVzdF07CiAKQEAgLTE2MjIsNyArMTYyNyw5IEBAIHN0YXRpYyB2b2lkIHJ1
blRlc3QoUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwgSXNBcHBCb3VuZCBhcHBCb3VuZCkKICAg
ICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBzZXJ2ZXIucmVxdWVzdCgpOwogICAgIGlmIChhcHBC
b3VuZCA9PSBJc0FwcEJvdW5kOjpObykgewogICAgICAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpu
b25BcHBCb3VuZFJlcXVlc3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpb
TlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8v
MTI3LjAuMC4xOiVkLyIsIHNlcnZlci5wb3J0KCldXV07Ci0gICAgICAgIEFQUF9CT1VORF9SRVFV
RVNUX0FERElUSU9OUworICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJ
TgorICAgICAgICBub25BcHBCb3VuZFJlcXVlc3QuX2lzTm9uQXBwSW5pdGlhdGVkID0gWUVTOwor
ICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgcmVxdWVz
dCA9IG5vbkFwcEJvdW5kUmVxdWVzdDsKICAgICB9CiAKQEAgLTE3MzAsNyArMTczNyw5IEBAIFRF
U1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTXVsdGlwbGVXZWJWaWV3c1dpdGhTaGFyZWRTZXJ2aWNl
V29ya2VyKQogCiAgICAgaXNEb25lID0gZmFsc2U7CiAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAq
bm9uQXBwQm91bmRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6
W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwczov
LzEyNy4wLjAuMTolZC9tYWluLmh0bWwiLCBzZXJ2ZXIucG9ydCgpXV1dOwotICAgIEFQUF9CT1VO
RF9SRVFVRVNUX0FERElUSU9OUworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JF
R0lOCisgICAgbm9uQXBwQm91bmRSZXF1ZXN0Ll9pc05vbkFwcEluaXRpYXRlZCA9IFlFUzsKKyAg
ICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICBbd2ViVmlldzIgbG9hZFJl
cXVlc3Q6bm9uQXBwQm91bmRSZXF1ZXN0XTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcy
IF90ZXN0X3dhaXRGb3JBbGVydF0sICJmZXRjaGVkIGZyb20gc2VydmVyIik7CiAKQEAgLTE3ODAs
NyArMTc4OSw5IEBAIHN0YXRpYyB2b2lkIHNvZnRVcGRhdGVUZXN0KElzQXBwQm91bmQgaXNBcHBC
b3VuZCkKICAgICAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gc2VydmVyMS5yZXF1ZXN0KCk7
CiAgICAgICAgIGlmIChpc0FwcEJvdW5kID09IElzQXBwQm91bmQ6Ok5vKSB7CiAgICAgICAgICAg
ICBOU011dGFibGVVUkxSZXF1ZXN0ICpub25BcHBCb3VuZFJlcXVlc3QgPSBbTlNNdXRhYmxlVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlcjEucG9ydCgpXV1d
OwotICAgICAgICAgICAgQVBQX0JPVU5EX1JFUVVFU1RfQURESVRJT05TCisgICAgICAgICAgICBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgorICAgICAgICAgICAgbm9uQXBwQm91
bmRSZXF1ZXN0Ll9pc05vbkFwcEluaXRpYXRlZCA9IFlFUzsKKyAgICAgICAgICAgIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICAgICAgcmVxdWVzdCA9IG5vbkFwcEJv
dW5kUmVxdWVzdDsKICAgICAgICAgfQogCkBAIC0xNzk5LDcgKzE4MTAsOSBAQCBzdGF0aWMgdm9p
ZCBzb2Z0VXBkYXRlVGVzdChJc0FwcEJvdW5kIGlzQXBwQm91bmQpCiAgICAgICAgIE5TVVJMUmVx
dWVzdCAqcmVxdWVzdDIgPSBzZXJ2ZXIyLnJlcXVlc3QoKTsKICAgICAgICAgaWYgKGlzQXBwQm91
bmQgPT0gSXNBcHBCb3VuZDo6Tm8pIHsKICAgICAgICAgICAgIE5TTXV0YWJsZVVSTFJlcXVlc3Qg
Km5vbkFwcEJvdW5kUmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6
Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyMi5wb3J0KCldXV07Ci0gICAgICAgICAgICBBUFBfQk9V
TkRfUkVRVUVTVF9BRERJVElPTlMKKyAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0JFR0lOCisgICAgICAgICAgICBub25BcHBCb3VuZFJlcXVlc3QuX2lzTm9uQXBwSW5p
dGlhdGVkID0gWUVTOworICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
RU5ECiAgICAgICAgICAgICByZXF1ZXN0MiA9IG5vbkFwcEJvdW5kUmVxdWVzdDsKICAgICAgICAg
fQogCkBAIC0xODUwLDcgKzE4NjMsOSBAQCBzdGF0aWMgdm9pZCBydW5XZWJQcm9jZXNzUGx1Z0lu
VGVzdChJc0FwcEJvdW5kIGlzQXBwQm91bmQpCiAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqcmVx
dWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRo
U3RyaW5nOnVybF1dOwogICAgIGlmIChpc0FwcEJvdW5kID09IElzQXBwQm91bmQ6Ok5vKSB7CiAg
ICAgICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5vbkFwcEJvdW5kUmVxdWVzdCA9IHJlcXVlc3Q7
Ci0gICAgICAgIEFQUF9CT1VORF9SRVFVRVNUX0FERElUSU9OUworICAgICAgICBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgorICAgICAgICBub25BcHBCb3VuZFJlcXVlc3QuX2lz
Tm9uQXBwSW5pdGlhdGVkID0gWUVTOworICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19FTkQKICAgICAgICAgcmVxdWVzdCA9IG5vbkFwcEJvdW5kUmVxdWVzdDsKICAgICB9CiAK
QEAgLTIwMDUsNyArMjAyMCw5IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgUmVnaXN0ZXJT
ZXJ2aWNlV29ya2VyQ2xpZW50VXBkYXRlc0FwcEJvdW5kVmFsdWUpCiAgICAgZXhwZWN0ZWRNZXNz
YWdlID0gInN0YXJ0cyBhcHAtYm91bmQiOwogICAgIHJlY2VpdmVkTWVzc2FnZSA9IGZhbHNlOwog
ICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5vbkFwcEJvdW5kUmVxdWVzdCA9IFtOU011dGFibGVV
UkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OkAiaHR0cDovLzEyNy4wLjAuMTolZC9tYWluLmh0bWwiLCBzZXJ2ZXIu
cG9ydCgpXV1dOwotICAgIEFQUF9CT1VORF9SRVFVRVNUX0FERElUSU9OUworICAgIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCisgICAgbm9uQXBwQm91bmRSZXF1ZXN0Ll9pc05v
bkFwcEluaXRpYXRlZCA9IFlFUzsKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19F
TkQKIAogICAgIFt3ZWJWaWV3MiBsb2FkUmVxdWVzdDpub25BcHBCb3VuZFJlcXVlc3RdOwogICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRNZXNzYWdlKTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4ZGJk
YjI4YmY3NDhiZWMyNDI0ZmJiMjA2ZDE3MGJiYjg1NzM2ZDYzLi41MmY3ZWY0MTY2YmJkZjEwNDI5
NTg5YzU5N2I5NTdlYTBiOWM1MTk5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDYtMjEg
IEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgTWln
cmF0ZSBBcHAgUHJpdmFjeSBSZXBvcnQgY29kZSBmcm9tIFdlYktpdEFkZGl0aW9ucworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3MDQ1CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS83NDMzMzI4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENo
cmlzdGVuc2VuLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25z
OgorICAgICAgICBVbnNraXAgdGVzdHMgZm9yIG9wZW4gc291cmNlLgorCiAyMDIxLTA2LTIwICBE
YXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBDU1MgY291bnRlciBzdHls
ZSBpbXByb3ZlbWVudHMgZm9yIEFybWVuaWFuLCBUYW1pbCwgYW5kIHNvbWUgQ0pLIHN0eWxlcwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25z
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDA3
ZDQzNDBjN2RkMTdmNThkMzE2MGRmN2U1N2JlM2YyZDJmNDYzMjUuLjgxYzkxYzk5NWE4YmNkNTg5
OTlhZjhlN2ZlNjY3MDViN2Y3Y2Q2ZGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2lvcy13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mt
d2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE4MTUsMTcgKzE4MTUsNiBAQCB3ZWJraXQub3JnL2Iv
MjE0NTk4IGZhc3Qvc2Nyb2xsaW5nL2lvcy9hdXRvc2Nyb2xsLWlucHV0LXdoZW4tdmVyeS16b29t
ZWQuaHRtbCBbCiAKIGh0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS8gWyBQYXNzIF0K
IAotIyBTb21lIEluLUFwcCBCcm93c2VyIFByaXZhY3kgdGVzdHMgcmVseSBvbiBmdW5jdGlvbnMg
aW4gV2ViS2l0QWRkaXRpb25zLgotaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2Nv
bnRleHQtc3RyaW5nLWZvci1zdWJmcmFtZS5odG1sIFsgU2tpcCBdCi1odHRwL3Rlc3RzL2luLWFw
cC1icm93c2VyLXByaXZhY3kvY29udGV4dC1zdHJpbmctcHJlY29ubmVjdC5odG1sIFsgU2tpcCBd
Ci1odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvY29udGV4dC1zdHJpbmctcHJlZmxp
Z2h0Lmh0bWwgWyBTa2lwIF0KLWh0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAt
Ym91bmQtYXR0cmlidXRpb24tcHJlZmxpZ2h0LWFzeW5jLmh0bWwgWyBTa2lwIF0KLWh0dHAvdGVz
dHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tcHJlZmxpZ2h0
LXN5bmMuaHRtbCBbIFNraXAgXQotaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2Fw
cC1ib3VuZC1hdHRyaWJ1dGlvbi1zcGVjdWxhdGl2ZS1yZXZhbGlkYXRpb24uaHRtbCBbIFNraXAg
XQotaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlv
bi1sb2FkLXVybC5odG1sIFsgU2tpcCBdCi1odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZh
Y3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXBpbmctbG9hZC5odG1sIFsgU2tpcCBdCi1odHRwL3Rl
c3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXBvc3QtcmVx
dWVzdC5odG1sIFsgU2tpcCBdCi0KIHdlYmtpdC5vcmcvYi8xNzUxOTMgZmFzdC9pbWFnZXMvYXN5
bmMtaW1hZ2UtYm9keS1iYWNrZ3JvdW5kLWltYWdlLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQogCiB3
ZWJraXQub3JnL2IvMjE1MTEwIFsgUmVsZWFzZSBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1hbmltYXRpb25zL3dlYmtpdC13cml0aW5nLW1vZGUtY3Jhc2guaHRtbCBb
IFBhc3MgRmFpbHVyZSBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431902</attachid>
            <date>2021-06-21 13:28:51 -0700</date>
            <delta_ts>2021-06-23 10:43:39 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-227045-20210621132850.patch</filename>
            <type>text/plain</type>
            <size>22503</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDgzNmE5ZjhiMGUyMzVmMmFhN2Y0NWY3
M2U2YmU0ODAzNGU4NGIyNWQuLmExYTJhZmUzMDkzMjc0ODc1ZjZiM2EwYzMyYjkwOTA1YzFlZTBm
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDYtMjEgIEthdGUgQ2hlbmV5ICA8a2F0aGVy
aW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgTWlncmF0ZSBBcHAgUHJpdmFjeSBSZXBv
cnQgY29kZSBmcm9tIFdlYktpdEFkZGl0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3MDQ1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDMz
MzI4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAg
IFVwZGF0ZSBjb21waWxlIGZsYWcgbmFtaW5nIHRvIGFsaWduIHdpdGggdGhlIEFwcCBQcml2YWN5
IFJlcG9ydAorICAgICAgICBmZWF0dXJlLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaDoKKwogMjAyMS0wNi0yMSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxp
YS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXggYWZ0ZXIgcjI3OTA2MgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCAwMDY5ZDkwZjYxZTg1ZGU3NGJhNzkzODY5OWIzYjQwMmE2MjUzODg2Li40MTQ3YTgy
NjJlMWVlY2JmOGZiZjY1YzM5ZjVmYTZkNzJmZTNjNTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5
IEBACisyMDIxLTA2LTIxICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29t
PgorCisgICAgICAgIE1pZ3JhdGUgQXBwIFByaXZhY3kgUmVwb3J0IGNvZGUgZnJvbSBXZWJLaXRB
ZGRpdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyNzA0NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzQzMzMyODc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNr
Q29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKToKKyAgICAgICAgKGNvbnRleHRTdHJpbmcpOiBE
ZWxldGVkLgorICAgICAgICBUaGlzIHBhdGNoIGRlbGV0ZXMgdGhlIGNvbnRleHRTdHJpbmcgZnVu
Y3Rpb24gYmVjYXVzZSBpdCBpcyBubyBsb25nZXIKKyAgICAgICAgbmVlZGVkIG5vdyB0aGF0IENG
TmV0d29yayBzZXRzIHRoZSBhdHRyaWJ1dGlvbiBjb250ZXh0LCBhbmQgaXQgc2VlbWVkCisgICAg
ICAgIHNpbGx5IHRvIG1pZ3JhdGUgY29kZSBmcm9tIFdlYktpdEFkZGl0aW9ucyBqdXN0IHRvIGRl
bGV0ZSBpdAorICAgICAgICBpbW1lZGlhdGVseS4gVGhpcyBhbHNvIG1vdmVzIHRoZSBwcm9jZXNz
UENNUmVxdWVzdCBmdW5jdGlvbgorICAgICAgICBkZWNsYXJhdGlvbiBmcm9tIFdlYktpdEFkZGl0
aW9ucyBzbyB3ZSBjYW4gcmVtb3ZlCisgICAgICAgIE5FVFdPUktfREFUQV9UQVNLX0NPQ09BX0FE
RElUSU9OUy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9u
Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OmlzQWN0aW5nT25CZWhhbGZPZkFGdWxsV2ViQnJv
d3Nlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OnJlbW92ZU5ldHdv
cmtXZWJzaXRlRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNv
Y29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldExhc3ROYXZpZ2F0aW9u
V2FzQXBwQm91bmQpOgorCiAyMDIxLTA2LTIwICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhA
YXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gUmVuYW1lIFdLVmlzdWFsU2VhcmNoUHJldmll
d0NvbnRyb2xsZXIgdG8gV0tRdWlja0xvb2tQcmV2aWV3Q29udHJvbGxlcgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oIGIvU291cmNlL1dURi93dGYvUGxh
dGZvcm1FbmFibGVDb2NvYS5oCmluZGV4IDJjNjZiY2ZlZTNhNjQyNzM3M2M4ODMzYjA4NGUwZTg2
MjEwZDM2NTUuLmE5ZTEwYTI1MTllMDkzOTMxM2JmMmY1OGY0YTk2OTZlZTIxZjU3YWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmgKQEAgLTY5OSw4ICs2OTksOCBAQAogI2RlZmlu
ZSBFTkFCTEVfTk9USUZZX0ZJTFRFUklORyAxCiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKEVOQUJM
RV9BUFBfQk9VTkRfUkVRVUVTVFMpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05F
X09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDE1MDAwMAotI2RlZmluZSBFTkFCTEVfQVBQX0JP
VU5EX1JFUVVFU1RTIDEKKyNpZiAhZGVmaW5lZChFTkFCTEVfQVBQX1BSSVZBQ1lfUkVQT1JUKSAm
JiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxNTAwMDAKKyNkZWZpbmUgRU5BQkxFX0FQUF9QUklWQUNZX1JFUE9SVCAxCiAjZW5kaWYK
IAogI2lmICFkZWZpbmVkKEVOQUJMRV9ERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1Az
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
RGF0YVRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya0RhdGFUYXNrQ29jb2EubW0KaW5kZXggMzQwZDdkYWMyODZiNzNiODNjNTFlYmQwZjY4MGZj
NGFiZjlkYWY5NS4uZjc0YjMxMjlmZTcyYmM5ZmNlNjIzNjA2MDZkM2IzOWIwNzEyY2Y4OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRh
c2tDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtEYXRhVGFza0NvY29hLm1tCkBAIC01Nyw4ICs1Nyw3IEBACiAjaWYgVVNFKEFQUExFX0lOVEVS
TkFMX1NESykKICNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9OZXR3b3JrRGF0YVRhc2tDb2NvYUFk
ZGl0aW9ucy5oPgogI2Vsc2UKLSNkZWZpbmUgTkVUV09SS19EQVRBX1RBU0tfQ09DT0FfQURESVRJ
T05TIFVOVVNFRF9WQVJJQUJMRShwY21EYXRhQ2FycmllZCk7Ci1zdGF0aWMgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4gY29udGV4dFN0cmluZyhOU1VSTFJlcXVlc3QgKikgeyByZXR1cm4geyB9
OyB9CitzdGF0aWMgdm9pZCBwcm9jZXNzUENNUmVxdWVzdChXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQsIE5TTXV0YWJsZVVSTFJlcXVlc3QgKikgeyB9Owog
I2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMzM4LDI0ICszMzcsMzEgQEAgTmV0d29y
a0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9uJiBzZXNz
aW9uLCBOZXR3b3JrRGF0YVQKICNlbmRpZgogICAgIHJlc3RyaWN0UmVxdWVzdFJlZmVycmVyVG9P
cmlnaW5JZk5lZWRlZChyZXF1ZXN0KTsKIAotICAgIC8vIEZJWE1FOiBPbmNlIHdlIGFyZSBkb25l
IHdpdGggTkVUV09SS19EQVRBX1RBU0tfQ09DT0FfQURESVRJT05TLCBtYWtlIG5zUmVxdWVzdCBh
IFJldGFpblB0ciBhbmQgZ2V0IHJpZCBvZiBwcm90ZWN0ZWROU1JlcXVlc3QgYW5kIHBjbURhdGFD
YXJyaWVkLgotICAgIE5TVVJMUmVxdWVzdCAqbnNSZXF1ZXN0ID0gcmVxdWVzdC5uc1VSTFJlcXVl
c3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OlVwZGF0ZUhUVFBCb2R5KTsKLSAgICBh
dXRvIHBjbURhdGFDYXJyaWVkID0gcGFyYW1ldGVycy5wY21EYXRhQ2FycmllZDsKKyAgICBSZXRh
aW5QdHI8TlNVUkxSZXF1ZXN0PiBuc1JlcXVlc3QgPSByZXF1ZXN0Lm5zVVJMUmVxdWVzdChXZWJD
b3JlOjpIVFRQQm9keVVwZGF0ZVBvbGljeTo6VXBkYXRlSFRUUEJvZHkpOworICAgIFJldGFpblB0
cjxOU011dGFibGVVUkxSZXF1ZXN0PiBtdXRhYmxlUmVxdWVzdCA9IGFkb3B0TlMoW25zUmVxdWVz
dC5nZXQoKSBtdXRhYmxlQ29weV0pOwogCi0gICAgTkVUV09SS19EQVRBX1RBU0tfQ09DT0FfQURE
SVRJT05TCisjaWYgRU5BQkxFKEFQUF9QUklWQUNZX1JFUE9SVCkKKyAgICBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19CRUdJTgorICAgIG11dGFibGVSZXF1ZXN0LmdldCgpLl9pc05vbkFw
cEluaXRpYXRlZCA9ICFyZXF1ZXN0LmlzQXBwQm91bmQoKTsKKyAgICBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19FTkQKKyNlbmRpZgorCisgICAgaWYgKHBhcmFtZXRlcnMucGNtRGF0YUNh
cnJpZWQpCisgICAgICAgIHByb2Nlc3NQQ01SZXF1ZXN0KCpwYXJhbWV0ZXJzLnBjbURhdGFDYXJy
aWVkLCBtdXRhYmxlUmVxdWVzdC5nZXQoKSk7CisKKyAgICBuc1JlcXVlc3QgPSBtdXRhYmxlUmVx
dWVzdDsKIAotICAgIGF1dG8gcHJvdGVjdGVkTlNSZXF1ZXN0ID0gcmV0YWluUHRyKG5zUmVxdWVz
dCk7Ci0gICAgbV9zZXNzaW9uLT5hcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSgpLnVwZGF0
ZUFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhKHJlcXVlc3QsIGNvbnRleHRTdHJpbmcocHJv
dGVjdGVkTlNSZXF1ZXN0LmdldCgpKSk7CisgICAgbV9zZXNzaW9uLT5hcHBCb3VuZE5hdmlnYXRp
b25UZXN0aW5nRGF0YSgpLnVwZGF0ZUFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhKHJlcXVl
c3QsIHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKS5pc0VtcHR5KCkgPyBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbihyZXF1ZXN0LnVybCgpKSA6IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluKHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSkpOwogCi0gICAgYXBwbHlTbmlmZmlu
Z1BvbGljaWVzQW5kQmluZFJlcXVlc3RUb0luZmVyZmFjZUlmTmVlZGVkKHByb3RlY3RlZE5TUmVx
dWVzdCwgcGFyYW1ldGVycy5jb250ZW50U25pZmZpbmdQb2xpY3kgPT0gV2ViQ29yZTo6Q29udGVu
dFNuaWZmaW5nUG9saWN5OjpTbmlmZkNvbnRlbnQgJiYgIXVybC5pc0xvY2FsRmlsZSgpLCBwYXJh
bWV0ZXJzLmNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5ID09IFdlYkNvcmU6OkNvbnRlbnRF
bmNvZGluZ1NuaWZmaW5nUG9saWN5OjpTbmlmZik7CisgICAgYXBwbHlTbmlmZmluZ1BvbGljaWVz
QW5kQmluZFJlcXVlc3RUb0luZmVyZmFjZUlmTmVlZGVkKG5zUmVxdWVzdCwgcGFyYW1ldGVycy5j
b250ZW50U25pZmZpbmdQb2xpY3kgPT0gV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5OjpT
bmlmZkNvbnRlbnQgJiYgIXVybC5pc0xvY2FsRmlsZSgpLCBwYXJhbWV0ZXJzLmNvbnRlbnRFbmNv
ZGluZ1NuaWZmaW5nUG9saWN5ID09IFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9s
aWN5OjpTbmlmZik7CiAKLSAgICBtX3Rhc2sgPSBbbV9zZXNzaW9uV3JhcHBlci0+c2Vzc2lvbiBk
YXRhVGFza1dpdGhSZXF1ZXN0OnByb3RlY3RlZE5TUmVxdWVzdC5nZXQoKV07CisgICAgbV90YXNr
ID0gW21fc2Vzc2lvbldyYXBwZXItPnNlc3Npb24gZGF0YVRhc2tXaXRoUmVxdWVzdDpuc1JlcXVl
c3QuZ2V0KCldOwogCiAgICAgV1RGQmVnaW5TaWducG9zdChtX3Rhc2suZ2V0KCksICJEYXRhVGFz
ayIsICIle3B1YmxpY31zIHByaTogJS4yZiBwcmVjb25uZWN0OiAlZCIsIHVybC5zdHJpbmcoKS5h
c2NpaSgpLmRhdGEoKSwgdG9OU1VSTFNlc3Npb25UYXNrUHJpb3JpdHkocmVxdWVzdC5wcmlvcml0
eSgpKSwgcGFyYW1ldGVycy5zaG91bGRQcmVjb25uZWN0T25seSA9PSBQcmVjb25uZWN0T25seTo6
WWVzKTsKIAogICAgIFJFTEVBU0VfQVNTRVJUKCFtX3Nlc3Npb25XcmFwcGVyLT5kYXRhVGFza01h
cC5jb250YWlucyhbbV90YXNrIHRhc2tJZGVudGlmaWVyXSkpOwogICAgIG1fc2Vzc2lvbldyYXBw
ZXItPmRhdGFUYXNrTWFwLmFkZChbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgdGhpcyk7Ci0gICAg
TE9HKE5ldHdvcmtTZXNzaW9uLCAiJWx1IENyZWF0aW5nIE5ldHdvcmtEYXRhVGFzayB3aXRoIFVS
TCAlcyIsICh1bnNpZ25lZCBsb25nKVttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCBbcHJvdGVjdGVk
TlNSZXF1ZXN0IFVSTF0uYWJzb2x1dGVTdHJpbmcuVVRGOFN0cmluZyk7CisgICAgTE9HKE5ldHdv
cmtTZXNzaW9uLCAiJWx1IENyZWF0aW5nIE5ldHdvcmtEYXRhVGFzayB3aXRoIFVSTCAlcyIsICh1
bnNpZ25lZCBsb25nKVttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCBbbnNSZXF1ZXN0IFVSTF0uYWJz
b2x1dGVTdHJpbmcuVVRGOFN0cmluZyk7CiAKICAgICBpZiAocGFyYW1ldGVycy5zaG91bGRQcmVj
b25uZWN0T25seSA9PSBQcmVjb25uZWN0T25seTo6WWVzKSB7CiAjaWYgRU5BQkxFKFNFUlZFUl9Q
UkVDT05ORUNUKQpAQCAtMzcyLDkgKzM3OCw5IEBAIE5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3
b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUCiAg
ICAgaWYgKHNob3VsZEJsb2NrQ29va2llcykgewogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAog
ICAgICAgICBpZiAobV9zZXNzaW9uLT5zaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigpKQotICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdv
cmssICIlcCAtIE5ldHdvcmtEYXRhVGFza0NvY29hOjpsb2dDb29raWVJbmZvcm1hdGlvbjogcGFn
ZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCB0YXNrSUQ9JWx1OiBCbG9ja2lu
ZyBjb29raWVzIGZvciBVUkwgJXMiLCB0aGlzLCBwYWdlSUQoKS50b1VJbnQ2NCgpLCBmcmFtZUlE
KCkudG9VSW50NjQoKSwgKHVuc2lnbmVkIGxvbmcpW21fdGFzayB0YXNrSWRlbnRpZmllcl0sIFtw
cm90ZWN0ZWROU1JlcXVlc3QgVVJMXS5hYnNvbHV0ZVN0cmluZy5VVEY4U3RyaW5nKTsKKyAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3Jr
LCAiJXAgLSBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6bG9nQ29va2llSW5mb3JtYXRpb246IHBhZ2VJ
RD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIiwgdGFza0lEPSVsdTogQmxvY2tpbmcg
Y29va2llcyBmb3IgVVJMICVzIiwgdGhpcywgcGFnZUlEKCkudG9VSW50NjQoKSwgZnJhbWVJRCgp
LnRvVUludDY0KCksICh1bnNpZ25lZCBsb25nKVttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCBbbnNS
ZXF1ZXN0IFVSTF0uYWJzb2x1dGVTdHJpbmcuVVRGOFN0cmluZyk7CiAjZWxzZQotICAgICAgICBM
T0coTmV0d29ya1Nlc3Npb24sICIlbHUgQmxvY2tpbmcgY29va2llcyBmb3IgVVJMICVzIiwgKHVu
c2lnbmVkIGxvbmcpW21fdGFzayB0YXNrSWRlbnRpZmllcl0sIFtwcm90ZWN0ZWROU1JlcXVlc3Qg
VVJMXS5hYnNvbHV0ZVN0cmluZy5VVEY4U3RyaW5nKTsKKyAgICAgICAgTE9HKE5ldHdvcmtTZXNz
aW9uLCAiJWx1IEJsb2NraW5nIGNvb2tpZXMgZm9yIFVSTCAlcyIsICh1bnNpZ25lZCBsb25nKVtt
X3Rhc2sgdGFza0lkZW50aWZpZXJdLCBbbnNSZXF1ZXN0IFVSTF0uYWJzb2x1dGVTdHJpbmcuVVRG
OFN0cmluZyk7CiAjZW5kaWYKICAgICAgICAgYmxvY2tDb29raWVzKCk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tCmluZGV4IGY3N2NlNzk0OTFhZTBlYWEzMTE1NjNkODFhN2JkMGEzZjQ2NGVhNWMu
LjRmMGNmNTlmNzk2ZjhjN2JiMjE0MTU5ZWQ3YzhjMjAyNmI5NjU5MDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29j
b2EubW0KQEAgLTU5LDEwICs1OSwzMSBAQAogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAj
aW1wb3J0IDx3dGYvVVJMLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KKyNpbXBvcnQg
PHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgorI2ltcG9ydCA8d3RmL2Rhcndpbi9XZWFrTGlua2lu
Zy5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBVU0UoQVBQTEVfSU5U
RVJOQUxfU0RLKQogI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL05ldHdvcmtTZXNzaW9uQ29jb2FB
ZGRpdGlvbnMuaD4KKworI2lmICFQTEFURk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikKKyNpbXBv
cnQgPFN5bXB0b21zL1N5bXB0b21BbmFseXRpY3MuaD4KKyNpbXBvcnQgPFN5bXB0b21zL1N5bXB0
b21QcmVzZW50YXRpb25GZWVkLmg+CisjZW5kaWYKKworI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
X1NJTVVMQVRPUikgJiYgIVBMQVRGT1JNKFdBVENIT1MpCitTT0ZUX0xJTktfUFJJVkFURV9GUkFN
RVdPUktfSU5fVU1CUkVMTEFfT1BUSU9OQUwoU3ltcHRvbXMsIFN5bXB0b21BbmFseXRpY3MpOwor
U09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLX0lOX1VNQlJFTExBX09QVElPTkFMKFN5bXB0b21z
LCBTeW1wdG9tUHJlc2VudGF0aW9uRmVlZCk7CitTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktf
SU5fVU1CUkVMTEFfT1BUSU9OQUwoU3ltcHRvbXMsIFN5bXB0b21QcmVzZW50YXRpb25MaXRlKTsK
K1NPRlRfTElOS19DTEFTU19PUFRJT05BTChTeW1wdG9tQW5hbHl0aWNzLCBBbmFseXRpY3NXb3Jr
c3BhY2UpOworU09GVF9MSU5LX0NMQVNTX09QVElPTkFMKFN5bXB0b21QcmVzZW50YXRpb25GZWVk
LCBVc2FnZUZlZWQpOworU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKFN5bXB0b21QcmVzZW50
YXRpb25GZWVkLCBrU3ltcHRvbUFuYWx5dGljc1NlcnZpY2VEb21haW5UcmFja2luZ0NsZWFySGlz
dG9yeUJ1bmRsZUlEcywgY29uc3QgTlNTdHJpbmcgKik7CitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZ
X0ZBSUwoU3ltcHRvbVByZXNlbnRhdGlvbkZlZWQsIGtTeW1wdG9tQW5hbHl0aWNzU2VydmljZURv
bWFpblRyYWNraW5nQ2xlYXJIaXN0b3J5U3RhcnREYXRlLCBjb25zdCBOU1N0cmluZyAqKTsKK1NP
RlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChTeW1wdG9tUHJlc2VudGF0aW9uRmVlZCwga1N5bXB0
b21BbmFseXRpY3NTZXJ2aWNlRG9tYWluVHJhY2tpbmdDbGVhckhpc3RvcnlFbmREYXRlLCBjb25z
dCBOU1N0cmluZyAqKTsKK1NPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChTeW1wdG9tUHJlc2Vu
dGF0aW9uRmVlZCwga1N5bXB0b21BbmFseXRpY3NTZXJ2aWNlRG9tYWluVHJhY2tpbmdDbGVhckhp
c3RvcnlLZXksIGNvbnN0IE5TU3RyaW5nICopOworU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlM
KFN5bXB0b21QcmVzZW50YXRpb25MaXRlLCBrU3ltcHRvbUFuYWx5dGljc1NlcnZpY2VFbmRwb2lu
dCwgTlNTdHJpbmcgKikKKyNlbmRpZgorCiAjZWxzZQogI2RlZmluZSBORVRXT1JLX1NFU1NJT05f
Q09DT0FfQURESVRJT05TXzEKIHZvaWQgV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpyZW1v
dmVOZXR3b3JrV2Vic2l0ZURhdGEoc3RkOjpvcHRpb25hbDxXYWxsVGltZT4sIHN0ZDo6b3B0aW9u
YWw8SGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4+JiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigpOyB9
CkBAIC0xNzYxLDQgKzE3ODIsODUgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjbGVhckFs
dGVybmF0aXZlU2VydmljZXMoV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSkKICNlbmRpZgogfQogCisj
aWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKworI2lmICFQTEFURk9STShJT1NfRkFNSUxZX1NJ
TVVMQVRPUikgJiYgIVBMQVRGT1JNKFdBVENIT1MpCitzdGF0aWMgYm9vbCBpc0FjdGluZ09uQmVo
YWxmT2ZBRnVsbFdlYkJyb3dzZXIoY29uc3QgU3RyaW5nJiBidW5kbGVJRCkKK3sKKyAgICByZXR1
cm4gYnVuZGxlSUQgPT0gImNvbS5hcHBsZS53ZWJib29rbWFya3NkIjsKK30KKyNlbmRpZgorCit2
b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OnJlbW92ZU5ldHdvcmtXZWJzaXRlRGF0YShzdGQ6Om9w
dGlvbmFsPFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBzdGQ6Om9wdGlvbmFsPEhhc2hTZXQ8V2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4+PiYmIGRvbWFpbnMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWV9T
SU1VTEFUT1IpICYmICFQTEFURk9STShXQVRDSE9TKQorICAgIGF1dG8gYnVuZGxlSUQgPSBXZWJD
b3JlOjphcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKTsKKyAgICBpZiAoIWlzUGFyZW50UHJv
Y2Vzc0FGdWxsV2ViQnJvd3NlcihuZXR3b3JrUHJvY2VzcygpKSAmJiAhaXNBY3RpbmdPbkJlaGFs
Zk9mQUZ1bGxXZWJCcm93c2VyKGJ1bmRsZUlEKSkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKCk7CisKKyAgICBpZiAoIVN5bXB0b21BbmFseXRpY3NMaWJyYXJ5KCkKKyAgICAgICAg
fHwgIVN5bXB0b21QcmVzZW50YXRpb25GZWVkTGlicmFyeSgpCisgICAgICAgIHx8ICFTeW1wdG9t
UHJlc2VudGF0aW9uTGl0ZUxpYnJhcnkoKQorICAgICAgICB8fCAhZ2V0QW5hbHl0aWNzV29ya3Nw
YWNlQ2xhc3MoKQorICAgICAgICB8fCAhZ2V0VXNhZ2VGZWVkQ2xhc3MoKQorICAgICAgICB8fCAh
Y2FuTG9hZGtTeW1wdG9tQW5hbHl0aWNzU2VydmljZUVuZHBvaW50KCkpIHsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJldGFpblB0
cjxBbmFseXRpY3NXb3Jrc3BhY2U+IHdvcmtzcGFjZSA9IGFkb3B0TlMoW2FsbG9jQW5hbHl0aWNz
V29ya3NwYWNlSW5zdGFuY2UoKSBpbml0V29ya3NwYWNlV2l0aFNlcnZpY2U6Z2V0a1N5bXB0b21B
bmFseXRpY3NTZXJ2aWNlRW5kcG9pbnQoKV0pOworICAgIFJldGFpblB0cjxVc2FnZUZlZWQ+IHVz
YWdlRmVlZCA9IGFkb3B0TlMoW2FsbG9jVXNhZ2VGZWVkSW5zdGFuY2UoKSBpbml0V2l0aFdvcmtz
cGFjZTp3b3Jrc3BhY2UuZ2V0KCldKTsKKworICAgIGlmICghW3VzYWdlRmVlZC5nZXQoKSByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBlcmZvcm1OZXR3b3JrRG9tYWluc0FjdGlvbldpdGhP
cHRpb25zOnJlcGx5OildCisgICAgICAgIHx8ICFjYW5Mb2Fka1N5bXB0b21BbmFseXRpY3NTZXJ2
aWNlRG9tYWluVHJhY2tpbmdDbGVhckhpc3RvcnlLZXkoKQorICAgICAgICB8fCAhY2FuTG9hZGtT
eW1wdG9tQW5hbHl0aWNzU2VydmljZURvbWFpblRyYWNraW5nQ2xlYXJIaXN0b3J5QnVuZGxlSURz
KCkKKyAgICAgICAgfHwgIWNhbkxvYWRrU3ltcHRvbUFuYWx5dGljc1NlcnZpY2VEb21haW5UcmFj
a2luZ0NsZWFySGlzdG9yeVN0YXJ0RGF0ZSgpCisgICAgICAgIHx8ICFjYW5Mb2Fka1N5bXB0b21B
bmFseXRpY3NTZXJ2aWNlRG9tYWluVHJhY2tpbmdDbGVhckhpc3RvcnlFbmREYXRlKCkpIHsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGF1dG8gKnN0YXJ0RGF0ZSA9IFtOU0RhdGUgZGlzdGFudFBhc3RdOworICAgIGlmIChtb2RpZmll
ZFNpbmNlKSB7CisgICAgICAgIE5TVGltZUludGVydmFsIHRpbWVJbnRlcnZhbCA9IG1vZGlmaWVk
U2luY2UudmFsdWUoKS5zZWNvbmRzU2luY2VFcG9jaCgpLnNlY29uZHMoKTsKKyAgICAgICAgc3Rh
cnREYXRlID0gW05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlMTk3MDp0aW1lSW50ZXJ2
YWxdOworICAgIH0KKworICAgIGF1dG8gY29udGV4dEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJs
ZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgaWYgKGRvbWFpbnMpIHsKKyAgICAgICAgY29udGV4
dEFycmF5ID0gY3JlYXRlTlNBcnJheSgqZG9tYWlucywgWyZdIChhdXRvIGRvbWFpbikgeworICAg
ICAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzpkb21haW4uc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKV07CisgICAgICAgIH0pOworICAgIH0KKworICAgIGlmIChpc0Fj
dGluZ09uQmVoYWxmT2ZBRnVsbFdlYkJyb3dzZXIoYnVuZGxlSUQpKQorICAgICAgICBidW5kbGVJ
RCA9ICJjb20uYXBwbGUubW9iaWxlc2FmYXJpIjsKKworICAgIE5TRGljdGlvbmFyeSAqb3B0aW9u
cyA9IEB7CisgICAgICAgIChpZClnZXRrU3ltcHRvbUFuYWx5dGljc1NlcnZpY2VEb21haW5UcmFj
a2luZ0NsZWFySGlzdG9yeUtleSgpOiBAeworICAgICAgICAgICAgKGlkKWdldGtTeW1wdG9tQW5h
bHl0aWNzU2VydmljZURvbWFpblRyYWNraW5nQ2xlYXJIaXN0b3J5QnVuZGxlSURzKCk6IEB7Cisg
ICAgICAgICAgICAgICAgYnVuZGxlSUQgOiBjb250ZXh0QXJyYXkuZ2V0KCksCisgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgKGlkKWdldGtTeW1wdG9tQW5hbHl0aWNzU2VydmljZURvbWFpblRy
YWNraW5nQ2xlYXJIaXN0b3J5U3RhcnREYXRlKCk6IHN0YXJ0RGF0ZSwKKyAgICAgICAgICAgIChp
ZClnZXRrU3ltcHRvbUFuYWx5dGljc1NlcnZpY2VEb21haW5UcmFja2luZ0NsZWFySGlzdG9yeUVu
ZERhdGUoKTogW05TRGF0ZSBkaXN0YW50RnV0dXJlXQorICAgICAgICB9CisgICAgfTsKKworICAg
IGJvb2wgcmVzdWx0ID0gW3VzYWdlRmVlZCBwZXJmb3JtTmV0d29ya0RvbWFpbnNBY3Rpb25XaXRo
T3B0aW9uczpvcHRpb25zIHJlcGx5Om1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oTlNEaWN0aW9uYXJ5ICpyZXBseSwgTlNFcnJvciAq
ZXJyb3IpIG11dGFibGUgeworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICBMT0coTmV0
d29ya1Nlc3Npb24sICJFcnJvciBkZWxldGluZyBuZXR3b3JrIGRvbWFpbiBkYXRhICUiIFBVQkxJ
Q19MT0dfU1RSSU5HLCBlcnJvcik7CisKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAg
ICB9KS5nZXQoKV07CisKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgTE9HKE5ldHdvcmtTZXNz
aW9uLCAiRXJyb3IgZGVsZXRpbmcgbmV0d29yayBkb21haW4gZGF0YTogaW52YWxpZCBwYXJhbWV0
ZXIgb3IgZmFpbHVyZSB0byBjb250YWN0IHRoZSBzZXJ2aWNlIik7CisjZWxzZQorICAgIFVOVVNF
RF9QQVJBTShtb2RpZmllZFNpbmNlKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworI2VuZGlm
Cit9CisKKyNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBh
Z2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVBy
b3h5Q29jb2EubW0KaW5kZXggZDkxZGMwN2QwN2NkNjBjZmMyNzcxNTM2NzFkMmU2MWUyZjU0MTM4
OS4uNTI4NTNkNTYwM2IyMTFkMmYyN2NiYTllYzVlODM5NGJjNjBkYTFkOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KQEAgLTQ4
LDYgKzQ4LDcgQEAKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogI2ltcG9ydCAiV2Vic2l0
ZURhdGFTdG9yZS5oIgogI2ltcG9ydCAiV0tFcnJvckludGVybmFsLmgiCisjaW1wb3J0IDxGb3Vu
ZGF0aW9uL05TVVJMUmVxdWVzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9EcmFnSXRlbS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9HZW9tZXRyeVV0aWxpdGllcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9IaWdo
bGlnaHRWaXNpYmlsaXR5Lmg+CkBAIC04NSwxMyArODYsNiBAQCBTT0ZUX0xJTktfUFJJVkFURV9G
UkFNRVdPUksoV2ViQ29udGVudEFuYWx5c2lzKTsKIFNPRlRfTElOS19DTEFTUyhXZWJDb250ZW50
QW5hbHlzaXMsIFdlYkZpbHRlckV2YWx1YXRvcik7CiAjZW5kaWYKIAotI2lmIFVTRShBUFBMRV9J
TlRFUk5BTF9TREspCi0vLyBGSVhNRTogVGhpcyBhZGRpdGlvbnMgZmlsZSBzaG91bGQgYmUgcmVu
YW1lZCB0byBXZWJQYWdlUHJveHlBZGRpdGlvbnMubW0uCi0jaW1wb3J0IDxXZWJLaXRBZGRpdGlv
bnMvV2ViUGFnZVByb3h5QWRkaXRpb25zLmg+Ci0jZWxzZQotI2RlZmluZSBXRUJfUEFHRV9QUk9Y
WV9BRERJVElPTlMKLSNlbmRpZgotCiAjZGVmaW5lIE1FU1NBR0VfQ0hFQ0soYXNzZXJ0aW9uKSBN
RVNTQUdFX0NIRUNLX0JBU0UoYXNzZXJ0aW9uLCBwcm9jZXNzKCkuY29ubmVjdGlvbigpKQogI2Rl
ZmluZSBNRVNTQUdFX0NIRUNLX0NPTVBMRVRJT04oYXNzZXJ0aW9uLCBjb21wbGV0aW9uKSBNRVNT
QUdFX0NIRUNLX0NPTVBMRVRJT05fQkFTRShhc3NlcnRpb24sIHByb2Nlc3MoKS5jb25uZWN0aW9u
KCksIGNvbXBsZXRpb24pCiAKQEAgLTY1OSw3ICs2NTMsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnJlcXVlc3RBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm8oQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib28KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQo
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIFdFQl9QQUdFX1BST1hZX0FERElUSU9O
UworI2lmIEVOQUJMRShBUFBfUFJJVkFDWV9SRVBPUlQpCisgICAgYXV0byAqbnNSZXF1ZXN0ID0g
cmVxdWVzdC5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90
VXBkYXRlSFRUUEJvZHkpOworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lO
CisgICAgcmVxdWVzdC5zZXRJc0FwcEJvdW5kKCFuc1JlcXVlc3QuX2lzTm9uQXBwSW5pdGlhdGVk
KTsKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKKyNlbmRpZgogICAgIG1f
bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCA9IHJlcXVlc3QuaXNBcHBCb3VuZCgpOwogfQogCmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWZhYzUz
MzVjZjk1NDYzZjkyOWE5NWU4MDU4YjcxZGRjYzljMmRhZi4uZmNkMDliOTFhZjVlMjQwNDE4ZDU4
NmUyM2RhOTgyMTc4OGQzMzUxNyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTA2LTIxICBLYXRlIENoZW5leSAg
PGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIE1pZ3JhdGUgQXBwIFByaXZh
Y3kgUmVwb3J0IGNvZGUgZnJvbSBXZWJLaXRBZGRpdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzA0NQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNzQzMzMyODc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJp
dmFjeS5tbToKKwogMjAyMS0wNi0xOSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzg2OTkuCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclBy
aXZhY3kubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJv
d3NlclByaXZhY3kubW0KaW5kZXggMmFlOTU1M2I4MWY1ZDg0NTM5YThkYTcxNDMwZDk3YTVlZjVi
ZTkzMy4uYTVjNDRjYTU4NzlkNDJkOGUxNGNjOTM2ODlkNmEyMmVmMWM1OTEzYSAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2
YWN5Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBC
cm93c2VyUHJpdmFjeS5tbQpAQCAtMzMsNiArMzMsNyBAQAogI2ltcG9ydCAiVGVzdFVSTFNjaGVt
ZUhhbmRsZXIuaCIKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKICNpbXBvcnQgIldLV2ViVmll
d0NvbmZpZ3VyYXRpb25FeHRyYXMuaCIKKyNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxSZXF1ZXN0
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLSFRUUENv
b2tpZVN0b3JlUHJpdmF0ZS5oPgpAQCAtNDMsMTMgKzQ0LDEwIEBACiAjaW1wb3J0IDxXZWJLaXQv
V0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1VzZXJDb250
ZW50V29ybGQuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tVc2VyU3R5bGVTaGVldC5oPgorI2ltcG9y
dCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KICNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CiAj
aW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9T
REspCi0jaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvSW5BcHBCcm93c2VyUHJpdmFjeUFkZGl0aW9u
cy5oPgotI2VuZGlmCi0KICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAKIHN0YXRpYyBi
b29sIGlzRG9uZTsKQEAgLTE0MjAsNyArMTQxOCw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFj
eSwgQWJvdXRCbGFua1N1YkZyYW1lTWF0Y2hlc1RvcEZyYW1lTm9uQXBwQm91bmQpCiAKICNlbmRp
ZiAvLyBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAKLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxf
U0RLKSAmJiBFTkFCTEUoQVBQX0JPVU5EX1JFUVVFU1RTKQorI2lmIEVOQUJMRShBUFBfUFJJVkFD
WV9SRVBPUlQpCiBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kUmVxdWVzdCkKIHsK
ICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pOwpAQCAtMTQzMCw3ICsxNDI4LDEwIEBAIFRFU1QoSW5BcHBCcm93c2Vy
UHJpdmFjeSwgQXBwQm91bmRSZXF1ZXN0KQogCiAgICAgX19ibG9jayBib29sIGlzRG9uZSA9IGZh
bHNlOwogICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5vbkFwcEJvdW5kUmVxdWVzdCA9IFtOU011
dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOnVybF1d
OwotICAgIEFQUF9CT1VORF9SRVFVRVNUX0FERElUSU9OUworCisgICAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfQkVHSU4KKyAgICBub25BcHBCb3VuZFJlcXVlc3QuX2lzTm9uQXBwSW5p
dGlhdGVkID0gWUVTOworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAg
ICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6bm9uQXBwQm91bmRSZXF1ZXN0XTsKICAgICBbd2ViVmll
dyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CkBAIC0xNDg0LDcgKzE0ODUsOSBA
QCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kUmVxdWVzdFdpdGhOYXZpZ2F0aW9u
KQogICAgIAogICAgIGlzRG9uZSA9IGZhbHNlOwogICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5v
bkFwcEJvdW5kUmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltO
U1VSTCBVUkxXaXRoU3RyaW5nOm5vbkFwcEJvdW5kVVJMXV07Ci0gICAgQVBQX0JPVU5EX1JFUVVF
U1RfQURESVRJT05TCisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KKyAg
ICBub25BcHBCb3VuZFJlcXVlc3QuX2lzTm9uQXBwSW5pdGlhdGVkID0gWUVTOworICAgIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIAogICAgIGlzRG9uZSA9IGZhbHNlOwog
ICAgIFt3ZWJWaWV3IF9jbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGE6XnsKQEAgLTE1NDIsNyAr
MTU0NSw5IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmRSZXF1ZXN0V2l0
aFN1YkZyYW1lKQogICAgIF9fYmxvY2sgYm9vbCBpc0RvbmUgPSBmYWxzZTsKICAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKICAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpub25BcHBCb3VuZFJlcXVlc3QgPSBbTlNNdXRh
YmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZv
clJlc291cmNlOkAicGFnZS13aXRoLWNzcCIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVj
dG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOwotICAgIEFQUF9CT1VORF9SRVFVRVNU
X0FERElUSU9OUworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCisgICAg
bm9uQXBwQm91bmRSZXF1ZXN0Ll9pc05vbkFwcEluaXRpYXRlZCA9IFlFUzsKKyAgICBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0Om5v
bkFwcEJvdW5kUmVxdWVzdF07CiAKQEAgLTE2MjIsNyArMTYyNyw5IEBAIHN0YXRpYyB2b2lkIHJ1
blRlc3QoUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwgSXNBcHBCb3VuZCBhcHBCb3VuZCkKICAg
ICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBzZXJ2ZXIucmVxdWVzdCgpOwogICAgIGlmIChhcHBC
b3VuZCA9PSBJc0FwcEJvdW5kOjpObykgewogICAgICAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpu
b25BcHBCb3VuZFJlcXVlc3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpb
TlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8v
MTI3LjAuMC4xOiVkLyIsIHNlcnZlci5wb3J0KCldXV07Ci0gICAgICAgIEFQUF9CT1VORF9SRVFV
RVNUX0FERElUSU9OUworICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJ
TgorICAgICAgICBub25BcHBCb3VuZFJlcXVlc3QuX2lzTm9uQXBwSW5pdGlhdGVkID0gWUVTOwor
ICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgcmVxdWVz
dCA9IG5vbkFwcEJvdW5kUmVxdWVzdDsKICAgICB9CiAKQEAgLTE3MzAsNyArMTczNyw5IEBAIFRF
U1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTXVsdGlwbGVXZWJWaWV3c1dpdGhTaGFyZWRTZXJ2aWNl
V29ya2VyKQogCiAgICAgaXNEb25lID0gZmFsc2U7CiAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAq
bm9uQXBwQm91bmRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6
W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwczov
LzEyNy4wLjAuMTolZC9tYWluLmh0bWwiLCBzZXJ2ZXIucG9ydCgpXV1dOwotICAgIEFQUF9CT1VO
RF9SRVFVRVNUX0FERElUSU9OUworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JF
R0lOCisgICAgbm9uQXBwQm91bmRSZXF1ZXN0Ll9pc05vbkFwcEluaXRpYXRlZCA9IFlFUzsKKyAg
ICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICBbd2ViVmlldzIgbG9hZFJl
cXVlc3Q6bm9uQXBwQm91bmRSZXF1ZXN0XTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcy
IF90ZXN0X3dhaXRGb3JBbGVydF0sICJmZXRjaGVkIGZyb20gc2VydmVyIik7CiAKQEAgLTE3ODAs
NyArMTc4OSw5IEBAIHN0YXRpYyB2b2lkIHNvZnRVcGRhdGVUZXN0KElzQXBwQm91bmQgaXNBcHBC
b3VuZCkKICAgICAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gc2VydmVyMS5yZXF1ZXN0KCk7
CiAgICAgICAgIGlmIChpc0FwcEJvdW5kID09IElzQXBwQm91bmQ6Ok5vKSB7CiAgICAgICAgICAg
ICBOU011dGFibGVVUkxSZXF1ZXN0ICpub25BcHBCb3VuZFJlcXVlc3QgPSBbTlNNdXRhYmxlVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlcjEucG9ydCgpXV1d
OwotICAgICAgICAgICAgQVBQX0JPVU5EX1JFUVVFU1RfQURESVRJT05TCisgICAgICAgICAgICBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgorICAgICAgICAgICAgbm9uQXBwQm91
bmRSZXF1ZXN0Ll9pc05vbkFwcEluaXRpYXRlZCA9IFlFUzsKKyAgICAgICAgICAgIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICAgICAgcmVxdWVzdCA9IG5vbkFwcEJv
dW5kUmVxdWVzdDsKICAgICAgICAgfQogCkBAIC0xNzk5LDcgKzE4MTAsOSBAQCBzdGF0aWMgdm9p
ZCBzb2Z0VXBkYXRlVGVzdChJc0FwcEJvdW5kIGlzQXBwQm91bmQpCiAgICAgICAgIE5TVVJMUmVx
dWVzdCAqcmVxdWVzdDIgPSBzZXJ2ZXIyLnJlcXVlc3QoKTsKICAgICAgICAgaWYgKGlzQXBwQm91
bmQgPT0gSXNBcHBCb3VuZDo6Tm8pIHsKICAgICAgICAgICAgIE5TTXV0YWJsZVVSTFJlcXVlc3Qg
Km5vbkFwcEJvdW5kUmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6
Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyMi5wb3J0KCldXV07Ci0gICAgICAgICAgICBBUFBfQk9V
TkRfUkVRVUVTVF9BRERJVElPTlMKKyAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0JFR0lOCisgICAgICAgICAgICBub25BcHBCb3VuZFJlcXVlc3QuX2lzTm9uQXBwSW5p
dGlhdGVkID0gWUVTOworICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
RU5ECiAgICAgICAgICAgICByZXF1ZXN0MiA9IG5vbkFwcEJvdW5kUmVxdWVzdDsKICAgICAgICAg
fQogCkBAIC0xODUwLDcgKzE4NjMsOSBAQCBzdGF0aWMgdm9pZCBydW5XZWJQcm9jZXNzUGx1Z0lu
VGVzdChJc0FwcEJvdW5kIGlzQXBwQm91bmQpCiAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqcmVx
dWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRo
U3RyaW5nOnVybF1dOwogICAgIGlmIChpc0FwcEJvdW5kID09IElzQXBwQm91bmQ6Ok5vKSB7CiAg
ICAgICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5vbkFwcEJvdW5kUmVxdWVzdCA9IHJlcXVlc3Q7
Ci0gICAgICAgIEFQUF9CT1VORF9SRVFVRVNUX0FERElUSU9OUworICAgICAgICBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgorICAgICAgICBub25BcHBCb3VuZFJlcXVlc3QuX2lz
Tm9uQXBwSW5pdGlhdGVkID0gWUVTOworICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19FTkQKICAgICAgICAgcmVxdWVzdCA9IG5vbkFwcEJvdW5kUmVxdWVzdDsKICAgICB9CiAK
QEAgLTIwMDUsNyArMjAyMCw5IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgUmVnaXN0ZXJT
ZXJ2aWNlV29ya2VyQ2xpZW50VXBkYXRlc0FwcEJvdW5kVmFsdWUpCiAgICAgZXhwZWN0ZWRNZXNz
YWdlID0gInN0YXJ0cyBhcHAtYm91bmQiOwogICAgIHJlY2VpdmVkTWVzc2FnZSA9IGZhbHNlOwog
ICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5vbkFwcEJvdW5kUmVxdWVzdCA9IFtOU011dGFibGVV
UkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OkAiaHR0cDovLzEyNy4wLjAuMTolZC9tYWluLmh0bWwiLCBzZXJ2ZXIu
cG9ydCgpXV1dOwotICAgIEFQUF9CT1VORF9SRVFVRVNUX0FERElUSU9OUworICAgIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCisgICAgbm9uQXBwQm91bmRSZXF1ZXN0Ll9pc05v
bkFwcEluaXRpYXRlZCA9IFlFUzsKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19F
TkQKIAogICAgIFt3ZWJWaWV3MiBsb2FkUmVxdWVzdDpub25BcHBCb3VuZFJlcXVlc3RdOwogICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRNZXNzYWdlKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432071</attachid>
            <date>2021-06-23 10:43:41 -0700</date>
            <delta_ts>2021-06-23 13:27:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227045-20210623104340.patch</filename>
            <type>text/plain</type>
            <size>23058</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGNiYWZlNWRiNTdkMDAyMzMwODI3M2Ex
OGI4NTVlYWYzNGYwZTk2MGQuLjM3ZWI2Mjc4YTVjMTUxZjJhN2U3MWMyODk0MWI5NTJlMTI2ZDgy
ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDYtMjMgIEthdGUgQ2hlbmV5ICA8a2F0aGVy
aW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgTWlncmF0ZSBBcHAgUHJpdmFjeSBSZXBv
cnQgY29kZSBmcm9tIFdlYktpdEFkZGl0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3MDQ1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDMz
MzI4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
cGRhdGUgY29tcGlsZSBmbGFnIG5hbWluZyB0byBhbGlnbiB3aXRoIHRoZSBBcHAgUHJpdmFjeSBS
ZXBvcnQKKyAgICAgICAgZmVhdHVyZS4gQWRkZWQgYSBuZXcgY2hlY2sgZm9yIFN5bXB0b21zIGZv
ciBhIHNpbXBsZXIsIG1vcmUgY2xlYXIKKyAgICAgICAgY2hlY2suCisKKyAgICAgICAgKiB3dGYv
UGxhdGZvcm1FbmFibGVDb2NvYS5oOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybUhhdmUuaDoKKwog
MjAyMS0wNi0yMiAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBq
aXRDb21waWxlQW5kU2V0SGV1cmlzdGljcyBzaG91bGRuJ3QgcmV0dXJuIHRydWUgd2hlbiB3ZSBm
YWlsIHRvIGNvbXBpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZGRlOTcwMjZhNmYwYjU1OTcwMTdlYTFiZTA2ODY4
ZTMzY2JiNWIwYi4uYTM5NDhjMTZjMmU2Mjc4MzZhZjcyOGQ4NTQzMTdiMjU5NTNkZGRlYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAyMS0wNi0yMyAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJp
bmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBNaWdyYXRlIEFwcCBQcml2YWN5IFJlcG9y
dCBjb2RlIGZyb20gV2ViS2l0QWRkaXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjcwNDUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc0MzMz
Mjg3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAgIChw
cm9jZXNzUENNUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29h
OjpOZXR3b3JrRGF0YVRhc2tDb2NvYSk6CisgICAgICAgIChjb250ZXh0U3RyaW5nKTogRGVsZXRl
ZC4KKyAgICAgICAgVGhpcyBwYXRjaCBkZWxldGVzIHRoZSBjb250ZXh0U3RyaW5nIGZ1bmN0aW9u
IGJlY2F1c2UgaXQgaXMgbm8gbG9uZ2VyCisgICAgICAgIG5lZWRlZCBub3cgdGhhdCBDRk5ldHdv
cmsgc2V0cyB0aGUgYXR0cmlidXRpb24gY29udGV4dCBiYXNlZCBvbiB0aGUKKyAgICAgICAgbWFp
biBkb2N1bWVudCBVUkwsIGFuZCBpdCBzZWVtZWQgc2lsbHkgdG8gbWlncmF0ZSBjb2RlIGZyb20K
KyAgICAgICAgV2ViS2l0QWRkaXRpb25zIGp1c3QgdG8gZGVsZXRlIGl0IGltbWVkaWF0ZWx5LiBU
aGlzIGFsc28gbW92ZXMgdGhlCisgICAgICAgIHByb2Nlc3NQQ01SZXF1ZXN0IGZ1bmN0aW9uIGRl
Y2xhcmF0aW9uIGZyb20gV2ViS2l0QWRkaXRpb25zIHNvIHdlIGNhbgorICAgICAgICByZW1vdmUg
TkVUV09SS19EQVRBX1RBU0tfQ09DT0FfQURESVRJT05TLgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OmlzQWN0
aW5nT25CZWhhbGZPZkFGdWxsV2ViQnJvd3Nlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtT
ZXNzaW9uQ29jb2E6OnJlbW92ZU5ldHdvcmtXZWJzaXRlRGF0YSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOgorCiAyMDIxLTA2LTA3ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gVXBzdHJlYW0g
R3JvdXBBY3Rpdml0aWVzQ29vcmRpbmF0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtRW5hYmxlQ29jb2EuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2Eu
aAppbmRleCAyYzY2YmNmZWUzYTY0MjczNzNjODgzM2IwODRlMGU4NjIxMGQzNjU1Li5hOWUxMGEy
NTE5ZTA5MzkzMTNiZjJmNThmNGE5Njk2ZWUyMWY1N2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1F
bmFibGVDb2NvYS5oCkBAIC02OTksOCArNjk5LDggQEAKICNkZWZpbmUgRU5BQkxFX05PVElGWV9G
SUxURVJJTkcgMQogI2VuZGlmCiAKLSNpZiAhZGVmaW5lZChFTkFCTEVfQVBQX0JPVU5EX1JFUVVF
U1RTKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxNTAwMDAKLSNkZWZpbmUgRU5BQkxFX0FQUF9CT1VORF9SRVFVRVNUUyAxCisj
aWYgIWRlZmluZWQoRU5BQkxFX0FQUF9QUklWQUNZX1JFUE9SVCkgJiYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTUwMDAwCisjZGVm
aW5lIEVOQUJMRV9BUFBfUFJJVkFDWV9SRVBPUlQgMQogI2VuZGlmCiAKICNpZiAhZGVmaW5lZChF
TkFCTEVfREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfRElTUExBWV9QMykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZl
LmgKaW5kZXggODM5OTQyM2Y4OWUxZTYxMTliNTBhMGE1MDZkYWQ5N2EzMDc3MzJiNC4uNzgyODgw
ZGEwYTQ2MmUyYWI4ZDZhMDhjNjMyNjFkY2MxNDE5YTRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm1IYXZlLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgK
QEAgLTEwNTcsMyArMTA1Nyw3IEBACiAjZGVmaW5lIEhBVkVfUVVJQ0tMT09LX0lURU1fUFJFVklF
V19PUFRJT05TIDEKICNkZWZpbmUgSEFWRV9RVUlDS0xPT0tfUFJFVklFV19BQ1RJVklUWSAxCiAj
ZW5kaWYKKworI2lmICFQTEFURk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikgJiYgIVBMQVRGT1JN
KFdBVENIT1MpCisjZGVmaW5lIEhBVkVfU1lNUFRPTVNfRlJBTUVXT1JLIDEKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRh
c2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0Rh
dGFUYXNrQ29jb2EubW0KaW5kZXggMzQwZDdkYWMyODZiNzNiODNjNTFlYmQwZjY4MGZjNGFiZjlk
YWY5NS4uZjc0YjMxMjlmZTcyYmM5ZmNlNjIzNjA2MDZkM2IzOWIwNzEyY2Y4OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRh
VGFza0NvY29hLm1tCkBAIC01Nyw4ICs1Nyw3IEBACiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NE
SykKICNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9OZXR3b3JrRGF0YVRhc2tDb2NvYUFkZGl0aW9u
cy5oPgogI2Vsc2UKLSNkZWZpbmUgTkVUV09SS19EQVRBX1RBU0tfQ09DT0FfQURESVRJT05TIFVO
VVNFRF9WQVJJQUJMRShwY21EYXRhQ2FycmllZCk7Ci1zdGF0aWMgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4gY29udGV4dFN0cmluZyhOU1VSTFJlcXVlc3QgKikgeyByZXR1cm4geyB9OyB9Citz
dGF0aWMgdm9pZCBwcm9jZXNzUENNUmVxdWVzdChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6UGNtRGF0YUNhcnJpZWQsIE5TTXV0YWJsZVVSTFJlcXVlc3QgKikgeyB9OwogI2VuZGlm
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMzM4LDI0ICszMzcsMzEgQEAgTmV0d29ya0RhdGFU
YXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBO
ZXR3b3JrRGF0YVQKICNlbmRpZgogICAgIHJlc3RyaWN0UmVxdWVzdFJlZmVycmVyVG9PcmlnaW5J
Zk5lZWRlZChyZXF1ZXN0KTsKIAotICAgIC8vIEZJWE1FOiBPbmNlIHdlIGFyZSBkb25lIHdpdGgg
TkVUV09SS19EQVRBX1RBU0tfQ09DT0FfQURESVRJT05TLCBtYWtlIG5zUmVxdWVzdCBhIFJldGFp
blB0ciBhbmQgZ2V0IHJpZCBvZiBwcm90ZWN0ZWROU1JlcXVlc3QgYW5kIHBjbURhdGFDYXJyaWVk
LgotICAgIE5TVVJMUmVxdWVzdCAqbnNSZXF1ZXN0ID0gcmVxdWVzdC5uc1VSTFJlcXVlc3QoV2Vi
Q29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OlVwZGF0ZUhUVFBCb2R5KTsKLSAgICBhdXRvIHBj
bURhdGFDYXJyaWVkID0gcGFyYW1ldGVycy5wY21EYXRhQ2FycmllZDsKKyAgICBSZXRhaW5QdHI8
TlNVUkxSZXF1ZXN0PiBuc1JlcXVlc3QgPSByZXF1ZXN0Lm5zVVJMUmVxdWVzdChXZWJDb3JlOjpI
VFRQQm9keVVwZGF0ZVBvbGljeTo6VXBkYXRlSFRUUEJvZHkpOworICAgIFJldGFpblB0cjxOU011
dGFibGVVUkxSZXF1ZXN0PiBtdXRhYmxlUmVxdWVzdCA9IGFkb3B0TlMoW25zUmVxdWVzdC5nZXQo
KSBtdXRhYmxlQ29weV0pOwogCi0gICAgTkVUV09SS19EQVRBX1RBU0tfQ09DT0FfQURESVRJT05T
CisjaWYgRU5BQkxFKEFQUF9QUklWQUNZX1JFUE9SVCkKKyAgICBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19CRUdJTgorICAgIG11dGFibGVSZXF1ZXN0LmdldCgpLl9pc05vbkFwcEluaXRp
YXRlZCA9ICFyZXF1ZXN0LmlzQXBwQm91bmQoKTsKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19FTkQKKyNlbmRpZgorCisgICAgaWYgKHBhcmFtZXRlcnMucGNtRGF0YUNhcnJpZWQp
CisgICAgICAgIHByb2Nlc3NQQ01SZXF1ZXN0KCpwYXJhbWV0ZXJzLnBjbURhdGFDYXJyaWVkLCBt
dXRhYmxlUmVxdWVzdC5nZXQoKSk7CisKKyAgICBuc1JlcXVlc3QgPSBtdXRhYmxlUmVxdWVzdDsK
IAotICAgIGF1dG8gcHJvdGVjdGVkTlNSZXF1ZXN0ID0gcmV0YWluUHRyKG5zUmVxdWVzdCk7Ci0g
ICAgbV9zZXNzaW9uLT5hcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSgpLnVwZGF0ZUFwcEJv
dW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhKHJlcXVlc3QsIGNvbnRleHRTdHJpbmcocHJvdGVjdGVk
TlNSZXF1ZXN0LmdldCgpKSk7CisgICAgbV9zZXNzaW9uLT5hcHBCb3VuZE5hdmlnYXRpb25UZXN0
aW5nRGF0YSgpLnVwZGF0ZUFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhKHJlcXVlc3QsIHJl
cXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKS5pc0VtcHR5KCkgPyBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbihyZXF1ZXN0LnVybCgpKSA6IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluKHJl
cXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSkpOwogCi0gICAgYXBwbHlTbmlmZmluZ1BvbGlj
aWVzQW5kQmluZFJlcXVlc3RUb0luZmVyZmFjZUlmTmVlZGVkKHByb3RlY3RlZE5TUmVxdWVzdCwg
cGFyYW1ldGVycy5jb250ZW50U25pZmZpbmdQb2xpY3kgPT0gV2ViQ29yZTo6Q29udGVudFNuaWZm
aW5nUG9saWN5OjpTbmlmZkNvbnRlbnQgJiYgIXVybC5pc0xvY2FsRmlsZSgpLCBwYXJhbWV0ZXJz
LmNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5ID09IFdlYkNvcmU6OkNvbnRlbnRFbmNvZGlu
Z1NuaWZmaW5nUG9saWN5OjpTbmlmZik7CisgICAgYXBwbHlTbmlmZmluZ1BvbGljaWVzQW5kQmlu
ZFJlcXVlc3RUb0luZmVyZmFjZUlmTmVlZGVkKG5zUmVxdWVzdCwgcGFyYW1ldGVycy5jb250ZW50
U25pZmZpbmdQb2xpY3kgPT0gV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5OjpTbmlmZkNv
bnRlbnQgJiYgIXVybC5pc0xvY2FsRmlsZSgpLCBwYXJhbWV0ZXJzLmNvbnRlbnRFbmNvZGluZ1Nu
aWZmaW5nUG9saWN5ID09IFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5OjpT
bmlmZik7CiAKLSAgICBtX3Rhc2sgPSBbbV9zZXNzaW9uV3JhcHBlci0+c2Vzc2lvbiBkYXRhVGFz
a1dpdGhSZXF1ZXN0OnByb3RlY3RlZE5TUmVxdWVzdC5nZXQoKV07CisgICAgbV90YXNrID0gW21f
c2Vzc2lvbldyYXBwZXItPnNlc3Npb24gZGF0YVRhc2tXaXRoUmVxdWVzdDpuc1JlcXVlc3QuZ2V0
KCldOwogCiAgICAgV1RGQmVnaW5TaWducG9zdChtX3Rhc2suZ2V0KCksICJEYXRhVGFzayIsICIl
e3B1YmxpY31zIHByaTogJS4yZiBwcmVjb25uZWN0OiAlZCIsIHVybC5zdHJpbmcoKS5hc2NpaSgp
LmRhdGEoKSwgdG9OU1VSTFNlc3Npb25UYXNrUHJpb3JpdHkocmVxdWVzdC5wcmlvcml0eSgpKSwg
cGFyYW1ldGVycy5zaG91bGRQcmVjb25uZWN0T25seSA9PSBQcmVjb25uZWN0T25seTo6WWVzKTsK
IAogICAgIFJFTEVBU0VfQVNTRVJUKCFtX3Nlc3Npb25XcmFwcGVyLT5kYXRhVGFza01hcC5jb250
YWlucyhbbV90YXNrIHRhc2tJZGVudGlmaWVyXSkpOwogICAgIG1fc2Vzc2lvbldyYXBwZXItPmRh
dGFUYXNrTWFwLmFkZChbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgdGhpcyk7Ci0gICAgTE9HKE5l
dHdvcmtTZXNzaW9uLCAiJWx1IENyZWF0aW5nIE5ldHdvcmtEYXRhVGFzayB3aXRoIFVSTCAlcyIs
ICh1bnNpZ25lZCBsb25nKVttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCBbcHJvdGVjdGVkTlNSZXF1
ZXN0IFVSTF0uYWJzb2x1dGVTdHJpbmcuVVRGOFN0cmluZyk7CisgICAgTE9HKE5ldHdvcmtTZXNz
aW9uLCAiJWx1IENyZWF0aW5nIE5ldHdvcmtEYXRhVGFzayB3aXRoIFVSTCAlcyIsICh1bnNpZ25l
ZCBsb25nKVttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCBbbnNSZXF1ZXN0IFVSTF0uYWJzb2x1dGVT
dHJpbmcuVVRGOFN0cmluZyk7CiAKICAgICBpZiAocGFyYW1ldGVycy5zaG91bGRQcmVjb25uZWN0
T25seSA9PSBQcmVjb25uZWN0T25seTo6WWVzKSB7CiAjaWYgRU5BQkxFKFNFUlZFUl9QUkVDT05O
RUNUKQpAQCAtMzcyLDkgKzM3OCw5IEBAIE5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0
YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUCiAgICAgaWYg
KHNob3VsZEJsb2NrQ29va2llcykgewogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICAg
ICBpZiAobV9zZXNzaW9uLT5zaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigpKQotICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIl
cCAtIE5ldHdvcmtEYXRhVGFza0NvY29hOjpsb2dDb29raWVJbmZvcm1hdGlvbjogcGFnZUlEPSUi
IFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCB0YXNrSUQ9JWx1OiBCbG9ja2luZyBjb29r
aWVzIGZvciBVUkwgJXMiLCB0aGlzLCBwYWdlSUQoKS50b1VJbnQ2NCgpLCBmcmFtZUlEKCkudG9V
SW50NjQoKSwgKHVuc2lnbmVkIGxvbmcpW21fdGFzayB0YXNrSWRlbnRpZmllcl0sIFtwcm90ZWN0
ZWROU1JlcXVlc3QgVVJMXS5hYnNvbHV0ZVN0cmluZy5VVEY4U3RyaW5nKTsKKyAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAg
LSBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6bG9nQ29va2llSW5mb3JtYXRpb246IHBhZ2VJRD0lIiBQ
Ukl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIiwgdGFza0lEPSVsdTogQmxvY2tpbmcgY29va2ll
cyBmb3IgVVJMICVzIiwgdGhpcywgcGFnZUlEKCkudG9VSW50NjQoKSwgZnJhbWVJRCgpLnRvVUlu
dDY0KCksICh1bnNpZ25lZCBsb25nKVttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCBbbnNSZXF1ZXN0
IFVSTF0uYWJzb2x1dGVTdHJpbmcuVVRGOFN0cmluZyk7CiAjZWxzZQotICAgICAgICBMT0coTmV0
d29ya1Nlc3Npb24sICIlbHUgQmxvY2tpbmcgY29va2llcyBmb3IgVVJMICVzIiwgKHVuc2lnbmVk
IGxvbmcpW21fdGFzayB0YXNrSWRlbnRpZmllcl0sIFtwcm90ZWN0ZWROU1JlcXVlc3QgVVJMXS5h
YnNvbHV0ZVN0cmluZy5VVEY4U3RyaW5nKTsKKyAgICAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAi
JWx1IEJsb2NraW5nIGNvb2tpZXMgZm9yIFVSTCAlcyIsICh1bnNpZ25lZCBsb25nKVttX3Rhc2sg
dGFza0lkZW50aWZpZXJdLCBbbnNSZXF1ZXN0IFVSTF0uYWJzb2x1dGVTdHJpbmcuVVRGOFN0cmlu
Zyk7CiAjZW5kaWYKICAgICAgICAgYmxvY2tDb29raWVzKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1t
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29h
Lm1tCmluZGV4IDQ1NWQ1ZDIyYjFkODRmNmZlZTM4NTU1MjcxNzZjMjkyZjZiMTc0M2QuLmY0Y2Jl
NzYwY2U3MjZjYWViZTE3ZjU3OWM5NDA1MDA3MGYzMDViMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0K
QEAgLTU5LDEwICs1OSwyOSBAQAogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAjaW1wb3J0
IDx3dGYvVVJMLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KKyNpbXBvcnQgPHd0Zi9j
b2NvYS9WZWN0b3JDb2NvYS5oPgorI2ltcG9ydCA8d3RmL2Rhcndpbi9XZWFrTGlua2luZy5oPgog
I2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxf
U0RLKQogI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL05ldHdvcmtTZXNzaW9uQ29jb2FBZGRpdGlv
bnMuaD4KKworI2lmIEVOQUJMRShBUFBfUFJJVkFDWV9SRVBPUlQpICYmIEhBVkUoU1lNUFRPTVNf
RlJBTUVXT1JLKQorI2ltcG9ydCA8U3ltcHRvbXMvU3ltcHRvbUFuYWx5dGljcy5oPgorI2ltcG9y
dCA8U3ltcHRvbXMvU3ltcHRvbVByZXNlbnRhdGlvbkZlZWQuaD4KKworU09GVF9MSU5LX1BSSVZB
VEVfRlJBTUVXT1JLX0lOX1VNQlJFTExBX09QVElPTkFMKFN5bXB0b21zLCBTeW1wdG9tQW5hbHl0
aWNzKTsKK1NPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SS19JTl9VTUJSRUxMQV9PUFRJT05BTChT
eW1wdG9tcywgU3ltcHRvbVByZXNlbnRhdGlvbkZlZWQpOworU09GVF9MSU5LX1BSSVZBVEVfRlJB
TUVXT1JLX0lOX1VNQlJFTExBX09QVElPTkFMKFN5bXB0b21zLCBTeW1wdG9tUHJlc2VudGF0aW9u
TGl0ZSk7CitTT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoU3ltcHRvbUFuYWx5dGljcywgQW5hbHl0
aWNzV29ya3NwYWNlKTsKK1NPRlRfTElOS19DTEFTU19PUFRJT05BTChTeW1wdG9tUHJlc2VudGF0
aW9uRmVlZCwgVXNhZ2VGZWVkKTsKK1NPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChTeW1wdG9t
UHJlc2VudGF0aW9uRmVlZCwga1N5bXB0b21BbmFseXRpY3NTZXJ2aWNlRG9tYWluVHJhY2tpbmdD
bGVhckhpc3RvcnlCdW5kbGVJRHMsIGNvbnN0IE5TU3RyaW5nICopOworU09GVF9MSU5LX0NPTlNU
QU5UX01BWV9GQUlMKFN5bXB0b21QcmVzZW50YXRpb25GZWVkLCBrU3ltcHRvbUFuYWx5dGljc1Nl
cnZpY2VEb21haW5UcmFja2luZ0NsZWFySGlzdG9yeVN0YXJ0RGF0ZSwgY29uc3QgTlNTdHJpbmcg
Kik7CitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoU3ltcHRvbVByZXNlbnRhdGlvbkZlZWQs
IGtTeW1wdG9tQW5hbHl0aWNzU2VydmljZURvbWFpblRyYWNraW5nQ2xlYXJIaXN0b3J5RW5kRGF0
ZSwgY29uc3QgTlNTdHJpbmcgKik7CitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoU3ltcHRv
bVByZXNlbnRhdGlvbkZlZWQsIGtTeW1wdG9tQW5hbHl0aWNzU2VydmljZURvbWFpblRyYWNraW5n
Q2xlYXJIaXN0b3J5S2V5LCBjb25zdCBOU1N0cmluZyAqKTsKK1NPRlRfTElOS19DT05TVEFOVF9N
QVlfRkFJTChTeW1wdG9tUHJlc2VudGF0aW9uTGl0ZSwga1N5bXB0b21BbmFseXRpY3NTZXJ2aWNl
RW5kcG9pbnQsIE5TU3RyaW5nICopCisjZW5kaWYKKwogI2Vsc2UKICNkZWZpbmUgTkVUV09SS19T
RVNTSU9OX0NPQ09BX0FERElUSU9OU18xCiB2b2lkIFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2Nv
YTo6cmVtb3ZlTmV0d29ya1dlYnNpdGVEYXRhKHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+LCBzdGQ6
Om9wdGlvbmFsPEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+PiYmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRs
ZXIoKTsgfQpAQCAtMTc2NCw0ICsxNzgzLDg1IEBAIHZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6
Y2xlYXJBbHRlcm5hdGl2ZVNlcnZpY2VzKFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpCiAjZW5kaWYK
IH0KIAorI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisKKyNpZiBFTkFCTEUoQVBQX1BSSVZB
Q1lfUkVQT1JUKSAmJiBIQVZFKFNZTVBUT01TX0ZSQU1FV09SSykKK3N0YXRpYyBib29sIGlzQWN0
aW5nT25CZWhhbGZPZkFGdWxsV2ViQnJvd3Nlcihjb25zdCBTdHJpbmcmIGJ1bmRsZUlEKQorewor
ICAgIHJldHVybiBidW5kbGVJRCA9PSAiY29tLmFwcGxlLndlYmJvb2ttYXJrc2QiOworfQorI2Vu
ZGlmCisKK3ZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6cmVtb3ZlTmV0d29ya1dlYnNpdGVEYXRh
KHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IG1vZGlmaWVkU2luY2UsIHN0ZDo6b3B0aW9uYWw8SGFz
aFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4+JiYgZG9tYWlucywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworI2lmIEVOQUJMRShBUFBfUFJJ
VkFDWV9SRVBPUlQpICYmIEhBVkUoU1lNUFRPTVNfRlJBTUVXT1JLKQorICAgIGF1dG8gYnVuZGxl
SUQgPSBXZWJDb3JlOjphcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKTsKKyAgICBpZiAoIWlz
UGFyZW50UHJvY2Vzc0FGdWxsV2ViQnJvd3NlcihuZXR3b3JrUHJvY2VzcygpKSAmJiAhaXNBY3Rp
bmdPbkJlaGFsZk9mQUZ1bGxXZWJCcm93c2VyKGJ1bmRsZUlEKSkKKyAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKCk7CisKKyAgICBpZiAoIVN5bXB0b21BbmFseXRpY3NMaWJyYXJ5KCkK
KyAgICAgICAgfHwgIVN5bXB0b21QcmVzZW50YXRpb25GZWVkTGlicmFyeSgpCisgICAgICAgIHx8
ICFTeW1wdG9tUHJlc2VudGF0aW9uTGl0ZUxpYnJhcnkoKQorICAgICAgICB8fCAhZ2V0QW5hbHl0
aWNzV29ya3NwYWNlQ2xhc3MoKQorICAgICAgICB8fCAhZ2V0VXNhZ2VGZWVkQ2xhc3MoKQorICAg
ICAgICB8fCAhY2FuTG9hZGtTeW1wdG9tQW5hbHl0aWNzU2VydmljZUVuZHBvaW50KCkpIHsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IFJldGFpblB0cjxBbmFseXRpY3NXb3Jrc3BhY2U+IHdvcmtzcGFjZSA9IGFkb3B0TlMoW2FsbG9j
QW5hbHl0aWNzV29ya3NwYWNlSW5zdGFuY2UoKSBpbml0V29ya3NwYWNlV2l0aFNlcnZpY2U6Z2V0
a1N5bXB0b21BbmFseXRpY3NTZXJ2aWNlRW5kcG9pbnQoKV0pOworICAgIFJldGFpblB0cjxVc2Fn
ZUZlZWQ+IHVzYWdlRmVlZCA9IGFkb3B0TlMoW2FsbG9jVXNhZ2VGZWVkSW5zdGFuY2UoKSBpbml0
V2l0aFdvcmtzcGFjZTp3b3Jrc3BhY2UuZ2V0KCldKTsKKworICAgIGlmICghW3VzYWdlRmVlZC5n
ZXQoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBlcmZvcm1OZXR3b3JrRG9tYWluc0Fj
dGlvbldpdGhPcHRpb25zOnJlcGx5OildCisgICAgICAgIHx8ICFjYW5Mb2Fka1N5bXB0b21BbmFs
eXRpY3NTZXJ2aWNlRG9tYWluVHJhY2tpbmdDbGVhckhpc3RvcnlLZXkoKQorICAgICAgICB8fCAh
Y2FuTG9hZGtTeW1wdG9tQW5hbHl0aWNzU2VydmljZURvbWFpblRyYWNraW5nQ2xlYXJIaXN0b3J5
QnVuZGxlSURzKCkKKyAgICAgICAgfHwgIWNhbkxvYWRrU3ltcHRvbUFuYWx5dGljc1NlcnZpY2VE
b21haW5UcmFja2luZ0NsZWFySGlzdG9yeVN0YXJ0RGF0ZSgpCisgICAgICAgIHx8ICFjYW5Mb2Fk
a1N5bXB0b21BbmFseXRpY3NTZXJ2aWNlRG9tYWluVHJhY2tpbmdDbGVhckhpc3RvcnlFbmREYXRl
KCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGF1dG8gKnN0YXJ0RGF0ZSA9IFtOU0RhdGUgZGlzdGFudFBhc3RdOworICAgIGlm
IChtb2RpZmllZFNpbmNlKSB7CisgICAgICAgIE5TVGltZUludGVydmFsIHRpbWVJbnRlcnZhbCA9
IG1vZGlmaWVkU2luY2UudmFsdWUoKS5zZWNvbmRzU2luY2VFcG9jaCgpLnNlY29uZHMoKTsKKyAg
ICAgICAgc3RhcnREYXRlID0gW05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlMTk3MDp0
aW1lSW50ZXJ2YWxdOworICAgIH0KKworICAgIGF1dG8gY29udGV4dEFycmF5ID0gYWRvcHROUyhb
W05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgaWYgKGRvbWFpbnMpIHsKKyAgICAg
ICAgY29udGV4dEFycmF5ID0gY3JlYXRlTlNBcnJheSgqZG9tYWlucywgWyZdIChhdXRvIGRvbWFp
bikgeworICAgICAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzpk
b21haW4uc3RyaW5nKCkudXRmOCgpLmRhdGEoKV07CisgICAgICAgIH0pOworICAgIH0KKworICAg
IGlmIChpc0FjdGluZ09uQmVoYWxmT2ZBRnVsbFdlYkJyb3dzZXIoYnVuZGxlSUQpKQorICAgICAg
ICBidW5kbGVJRCA9ICJjb20uYXBwbGUubW9iaWxlc2FmYXJpIjsKKworICAgIE5TRGljdGlvbmFy
eSAqb3B0aW9ucyA9IEB7CisgICAgICAgIChpZClnZXRrU3ltcHRvbUFuYWx5dGljc1NlcnZpY2VE
b21haW5UcmFja2luZ0NsZWFySGlzdG9yeUtleSgpOiBAeworICAgICAgICAgICAgKGlkKWdldGtT
eW1wdG9tQW5hbHl0aWNzU2VydmljZURvbWFpblRyYWNraW5nQ2xlYXJIaXN0b3J5QnVuZGxlSURz
KCk6IEB7CisgICAgICAgICAgICAgICAgYnVuZGxlSUQgOiBjb250ZXh0QXJyYXkuZ2V0KCksCisg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgKGlkKWdldGtTeW1wdG9tQW5hbHl0aWNzU2Vydmlj
ZURvbWFpblRyYWNraW5nQ2xlYXJIaXN0b3J5U3RhcnREYXRlKCk6IHN0YXJ0RGF0ZSwKKyAgICAg
ICAgICAgIChpZClnZXRrU3ltcHRvbUFuYWx5dGljc1NlcnZpY2VEb21haW5UcmFja2luZ0NsZWFy
SGlzdG9yeUVuZERhdGUoKTogW05TRGF0ZSBkaXN0YW50RnV0dXJlXQorICAgICAgICB9CisgICAg
fTsKKworICAgIGJvb2wgcmVzdWx0ID0gW3VzYWdlRmVlZCBwZXJmb3JtTmV0d29ya0RvbWFpbnNB
Y3Rpb25XaXRoT3B0aW9uczpvcHRpb25zIHJlcGx5Om1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oTlNEaWN0aW9uYXJ5ICpyZXBseSwg
TlNFcnJvciAqZXJyb3IpIG11dGFibGUgeworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAg
ICBMT0coTmV0d29ya1Nlc3Npb24sICJFcnJvciBkZWxldGluZyBuZXR3b3JrIGRvbWFpbiBkYXRh
ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCBlcnJvcik7CisKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoKTsKKyAgICB9KS5nZXQoKV07CisKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgTE9HKE5l
dHdvcmtTZXNzaW9uLCAiRXJyb3IgZGVsZXRpbmcgbmV0d29yayBkb21haW4gZGF0YTogaW52YWxp
ZCBwYXJhbWV0ZXIgb3IgZmFpbHVyZSB0byBjb250YWN0IHRoZSBzZXJ2aWNlIik7CisjZWxzZQor
ICAgIFVOVVNFRF9QQVJBTShtb2RpZmllZFNpbmNlKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigp
OworI2VuZGlmCit9CisKKyNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlBhZ2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUGFnZVByb3h5Q29jb2EubW0KaW5kZXggZDkxZGMwN2QwN2NkNjBjZmMyNzcxNTM2NzFkMmU2
MWUyZjU0MTM4OS4uNTI4NTNkNTYwM2IyMTFkMmYyN2NiYTllYzVlODM5NGJjNjBkYTFkOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2Eu
bW0KQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogI2ltcG9y
dCAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2ltcG9ydCAiV0tFcnJvckludGVybmFsLmgiCisjaW1w
b3J0IDxGb3VuZGF0aW9uL05TVVJMUmVxdWVzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9EcmFnSXRl
bS5oPgogI2ltcG9ydCA8V2ViQ29yZS9HZW9tZXRyeVV0aWxpdGllcy5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9IaWdobGlnaHRWaXNpYmlsaXR5Lmg+CkBAIC04NSwxMyArODYsNiBAQCBTT0ZUX0xJTktf
UFJJVkFURV9GUkFNRVdPUksoV2ViQ29udGVudEFuYWx5c2lzKTsKIFNPRlRfTElOS19DTEFTUyhX
ZWJDb250ZW50QW5hbHlzaXMsIFdlYkZpbHRlckV2YWx1YXRvcik7CiAjZW5kaWYKIAotI2lmIFVT
RShBUFBMRV9JTlRFUk5BTF9TREspCi0vLyBGSVhNRTogVGhpcyBhZGRpdGlvbnMgZmlsZSBzaG91
bGQgYmUgcmVuYW1lZCB0byBXZWJQYWdlUHJveHlBZGRpdGlvbnMubW0uCi0jaW1wb3J0IDxXZWJL
aXRBZGRpdGlvbnMvV2ViUGFnZVByb3h5QWRkaXRpb25zLmg+Ci0jZWxzZQotI2RlZmluZSBXRUJf
UEFHRV9QUk9YWV9BRERJVElPTlMKLSNlbmRpZgotCiAjZGVmaW5lIE1FU1NBR0VfQ0hFQ0soYXNz
ZXJ0aW9uKSBNRVNTQUdFX0NIRUNLX0JBU0UoYXNzZXJ0aW9uLCBwcm9jZXNzKCkuY29ubmVjdGlv
bigpKQogI2RlZmluZSBNRVNTQUdFX0NIRUNLX0NPTVBMRVRJT04oYXNzZXJ0aW9uLCBjb21wbGV0
aW9uKSBNRVNTQUdFX0NIRUNLX0NPTVBMRVRJT05fQkFTRShhc3NlcnRpb24sIHByb2Nlc3MoKS5j
b25uZWN0aW9uKCksIGNvbXBsZXRpb24pCiAKQEAgLTY1OSw3ICs2NTMsMTIgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnJlcXVlc3RBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm8oQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib28KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldExhc3ROYXZpZ2F0aW9uV2Fz
QXBwQm91bmQoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIFdFQl9QQUdFX1BST1hZ
X0FERElUSU9OUworI2lmIEVOQUJMRShBUFBfUFJJVkFDWV9SRVBPUlQpCisgICAgYXV0byAqbnNS
ZXF1ZXN0ID0gcmVxdWVzdC5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xp
Y3k6OkRvTm90VXBkYXRlSFRUUEJvZHkpOworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0JFR0lOCisgICAgcmVxdWVzdC5zZXRJc0FwcEJvdW5kKCFuc1JlcXVlc3QuX2lzTm9uQXBw
SW5pdGlhdGVkKTsKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKKyNlbmRp
ZgogICAgIG1fbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCA9IHJlcXVlc3QuaXNBcHBCb3VuZCgp
OwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggODU2ZDFhZGM2NzYyYWI4NGU4MDc3NjZlMzg3ZWU4YzQwM2Y2MTM0YS4uYWRjZjIyNDYwYjU5
MmM3MTc4ZmRlYzgyYjZlYmVlZjVhMGUxMjExMyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTA2LTIzICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIE1pZ3JhdGUg
QXBwIFByaXZhY3kgUmVwb3J0IGNvZGUgZnJvbSBXZWJLaXRBZGRpdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzA0NQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNzQzMzMyODc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJv
d3NlclByaXZhY3kubW06CisKIDIwMjEtMDYtMjIgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBs
ZS5jb20+CiAKICAgICAgICAgaml0Q29tcGlsZUFuZFNldEhldXJpc3RpY3Mgc2hvdWxkbid0IHJl
dHVybiB0cnVlIHdoZW4gd2UgZmFpbCB0byBjb21waWxlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0K
aW5kZXggMmFlOTU1M2I4MWY1ZDg0NTM5YThkYTcxNDMwZDk3YTVlZjViZTkzMy4uYTVjNDRjYTU4
NzlkNDJkOGUxNGNjOTM2ODlkNmEyMmVmMWM1OTEzYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5t
bQpAQCAtMzMsNiArMzMsNyBAQAogI2ltcG9ydCAiVGVzdFVSTFNjaGVtZUhhbmRsZXIuaCIKICNp
bXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKICNpbXBvcnQgIldLV2ViVmlld0NvbmZpZ3VyYXRpb25F
eHRyYXMuaCIKKyNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxSZXF1ZXN0Lmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBs
aWNhdGlvbkNoZWNrcy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLSFRUUENvb2tpZVN0b3JlUHJpdmF0
ZS5oPgpAQCAtNDMsMTMgKzQ0LDEwIEBACiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0
b3JlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1VzZXJDb250ZW50V29ybGQuaD4KICNp
bXBvcnQgPFdlYktpdC9fV0tVc2VyU3R5bGVTaGVldC5oPgorI2ltcG9ydCA8cGFsL3NwaS9jZi9D
Rk5ldHdvcmtTUEkuaD4KICNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CiAjaW1wb3J0IDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0jaW1wb3J0IDxX
ZWJLaXRBZGRpdGlvbnMvSW5BcHBCcm93c2VyUHJpdmFjeUFkZGl0aW9ucy5oPgotI2VuZGlmCi0K
ICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAKIHN0YXRpYyBib29sIGlzRG9uZTsKQEAg
LTE0MjAsNyArMTQxOCw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQWJvdXRCbGFua1N1
YkZyYW1lTWF0Y2hlc1RvcEZyYW1lTm9uQXBwQm91bmQpCiAKICNlbmRpZiAvLyBFTkFCTEUoQVBQ
X0JPVU5EX0RPTUFJTlMpCiAKLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKSAmJiBFTkFCTEUo
QVBQX0JPVU5EX1JFUVVFU1RTKQorI2lmIEVOQUJMRShBUFBfUFJJVkFDWV9SRVBPUlQpCiBURVNU
KEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kUmVxdWVzdCkKIHsKICAgICBhdXRvIGNvbmZp
Z3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0p
OwpAQCAtMTQzMCw3ICsxNDI4LDEwIEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91
bmRSZXF1ZXN0KQogCiAgICAgX19ibG9jayBib29sIGlzRG9uZSA9IGZhbHNlOwogICAgIE5TTXV0
YWJsZVVSTFJlcXVlc3QgKm5vbkFwcEJvdW5kUmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0
IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOnVybF1dOwotICAgIEFQUF9CT1VO
RF9SRVFVRVNUX0FERElUSU9OUworCisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
QkVHSU4KKyAgICBub25BcHBCb3VuZFJlcXVlc3QuX2lzTm9uQXBwSW5pdGlhdGVkID0gWUVTOwor
ICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAgICAgW3dlYlZpZXcgbG9h
ZFJlcXVlc3Q6bm9uQXBwQm91bmRSZXF1ZXN0XTsKICAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9y
RGlkRmluaXNoTmF2aWdhdGlvbl07CkBAIC0xNDg0LDcgKzE0ODUsOSBAQCBURVNUKEluQXBwQnJv
d3NlclByaXZhY3ksIEFwcEJvdW5kUmVxdWVzdFdpdGhOYXZpZ2F0aW9uKQogICAgIAogICAgIGlz
RG9uZSA9IGZhbHNlOwogICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5vbkFwcEJvdW5kUmVxdWVz
dCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOm5vbkFwcEJvdW5kVVJMXV07Ci0gICAgQVBQX0JPVU5EX1JFUVVFU1RfQURESVRJT05TCisg
ICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KKyAgICBub25BcHBCb3VuZFJl
cXVlc3QuX2lzTm9uQXBwSW5pdGlhdGVkID0gWUVTOworICAgIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0VORAogICAgIAogICAgIGlzRG9uZSA9IGZhbHNlOwogICAgIFt3ZWJWaWV3IF9j
bGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGE6XnsKQEAgLTE1NDIsNyArMTU0NSw5IEBAIFRFU1Qo
SW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmRSZXF1ZXN0V2l0aFN1YkZyYW1lKQogICAg
IF9fYmxvY2sgYm9vbCBpc0RvbmUgPSBmYWxzZTsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgw
MCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBOU011dGFi
bGVVUkxSZXF1ZXN0ICpub25BcHBCb3VuZFJlcXVlc3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCBy
ZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAicGFn
ZS13aXRoLWNzcCIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJL
aXRBUEkucmVzb3VyY2VzIl1dOwotICAgIEFQUF9CT1VORF9SRVFVRVNUX0FERElUSU9OUworICAg
IEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCisgICAgbm9uQXBwQm91bmRSZXF1
ZXN0Ll9pc05vbkFwcEluaXRpYXRlZCA9IFlFUzsKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19FTkQKIAogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0Om5vbkFwcEJvdW5kUmVxdWVz
dF07CiAKQEAgLTE2MjIsNyArMTYyNyw5IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoUmVzcG9uc2VU
eXBlIHJlc3BvbnNlVHlwZSwgSXNBcHBCb3VuZCBhcHBCb3VuZCkKICAgICBOU1VSTFJlcXVlc3Qg
KnJlcXVlc3QgPSBzZXJ2ZXIucmVxdWVzdCgpOwogICAgIGlmIChhcHBCb3VuZCA9PSBJc0FwcEJv
dW5kOjpObykgewogICAgICAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpub25BcHBCb3VuZFJlcXVl
c3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0
cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIs
IHNlcnZlci5wb3J0KCldXV07Ci0gICAgICAgIEFQUF9CT1VORF9SRVFVRVNUX0FERElUSU9OUwor
ICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgorICAgICAgICBub25B
cHBCb3VuZFJlcXVlc3QuX2lzTm9uQXBwSW5pdGlhdGVkID0gWUVTOworICAgICAgICBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgcmVxdWVzdCA9IG5vbkFwcEJvdW5k
UmVxdWVzdDsKICAgICB9CiAKQEAgLTE3MzAsNyArMTczNyw5IEBAIFRFU1QoSW5BcHBCcm93c2Vy
UHJpdmFjeSwgTXVsdGlwbGVXZWJWaWV3c1dpdGhTaGFyZWRTZXJ2aWNlV29ya2VyKQogCiAgICAg
aXNEb25lID0gZmFsc2U7CiAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqbm9uQXBwQm91bmRSZXF1
ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhT
dHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwczovLzEyNy4wLjAuMTolZC9t
YWluLmh0bWwiLCBzZXJ2ZXIucG9ydCgpXV1dOwotICAgIEFQUF9CT1VORF9SRVFVRVNUX0FERElU
SU9OUworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCisgICAgbm9uQXBw
Qm91bmRSZXF1ZXN0Ll9pc05vbkFwcEluaXRpYXRlZCA9IFlFUzsKKyAgICBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICBbd2ViVmlldzIgbG9hZFJlcXVlc3Q6bm9uQXBwQm91
bmRSZXF1ZXN0XTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcyIF90ZXN0X3dhaXRGb3JB
bGVydF0sICJmZXRjaGVkIGZyb20gc2VydmVyIik7CiAKQEAgLTE3ODAsNyArMTc4OSw5IEBAIHN0
YXRpYyB2b2lkIHNvZnRVcGRhdGVUZXN0KElzQXBwQm91bmQgaXNBcHBCb3VuZCkKICAgICAgICAg
TlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gc2VydmVyMS5yZXF1ZXN0KCk7CiAgICAgICAgIGlmIChp
c0FwcEJvdW5kID09IElzQXBwQm91bmQ6Ok5vKSB7CiAgICAgICAgICAgICBOU011dGFibGVVUkxS
ZXF1ZXN0ICpub25BcHBCb3VuZFJlcXVlc3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
Imh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlcjEucG9ydCgpXV1dOwotICAgICAgICAgICAg
QVBQX0JPVU5EX1JFUVVFU1RfQURESVRJT05TCisgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19CRUdJTgorICAgICAgICAgICAgbm9uQXBwQm91bmRSZXF1ZXN0Ll9pc05v
bkFwcEluaXRpYXRlZCA9IFlFUzsKKyAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0VORAogICAgICAgICAgICAgcmVxdWVzdCA9IG5vbkFwcEJvdW5kUmVxdWVzdDsKICAg
ICAgICAgfQogCkBAIC0xNzk5LDcgKzE4MTAsOSBAQCBzdGF0aWMgdm9pZCBzb2Z0VXBkYXRlVGVz
dChJc0FwcEJvdW5kIGlzQXBwQm91bmQpCiAgICAgICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdDIg
PSBzZXJ2ZXIyLnJlcXVlc3QoKTsKICAgICAgICAgaWYgKGlzQXBwQm91bmQgPT0gSXNBcHBCb3Vu
ZDo6Tm8pIHsKICAgICAgICAgICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5vbkFwcEJvdW5kUmVx
dWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRo
U3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQv
Iiwgc2VydmVyMi5wb3J0KCldXV07Ci0gICAgICAgICAgICBBUFBfQk9VTkRfUkVRVUVTVF9BRERJ
VElPTlMKKyAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCisg
ICAgICAgICAgICBub25BcHBCb3VuZFJlcXVlc3QuX2lzTm9uQXBwSW5pdGlhdGVkID0gWUVTOwor
ICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgICAg
ICByZXF1ZXN0MiA9IG5vbkFwcEJvdW5kUmVxdWVzdDsKICAgICAgICAgfQogCkBAIC0xODUwLDcg
KzE4NjMsOSBAQCBzdGF0aWMgdm9pZCBydW5XZWJQcm9jZXNzUGx1Z0luVGVzdChJc0FwcEJvdW5k
IGlzQXBwQm91bmQpCiAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU011dGFi
bGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOnVybF1dOwog
ICAgIGlmIChpc0FwcEJvdW5kID09IElzQXBwQm91bmQ6Ok5vKSB7CiAgICAgICAgIE5TTXV0YWJs
ZVVSTFJlcXVlc3QgKm5vbkFwcEJvdW5kUmVxdWVzdCA9IHJlcXVlc3Q7Ci0gICAgICAgIEFQUF9C
T1VORF9SRVFVRVNUX0FERElUSU9OUworICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19CRUdJTgorICAgICAgICBub25BcHBCb3VuZFJlcXVlc3QuX2lzTm9uQXBwSW5pdGlhdGVk
ID0gWUVTOworICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAg
ICAgcmVxdWVzdCA9IG5vbkFwcEJvdW5kUmVxdWVzdDsKICAgICB9CiAKQEAgLTIwMDUsNyArMjAy
MCw5IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgUmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xp
ZW50VXBkYXRlc0FwcEJvdW5kVmFsdWUpCiAgICAgZXhwZWN0ZWRNZXNzYWdlID0gInN0YXJ0cyBh
cHAtYm91bmQiOwogICAgIHJlY2VpdmVkTWVzc2FnZSA9IGZhbHNlOwogICAgIE5TTXV0YWJsZVVS
TFJlcXVlc3QgKm5vbkFwcEJvdW5kUmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVl
c3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiaHR0cDovLzEyNy4wLjAuMTolZC9tYWluLmh0bWwiLCBzZXJ2ZXIucG9ydCgpXV1dOwotICAg
IEFQUF9CT1VORF9SRVFVRVNUX0FERElUSU9OUworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0JFR0lOCisgICAgbm9uQXBwQm91bmRSZXF1ZXN0Ll9pc05vbkFwcEluaXRpYXRlZCA9
IFlFUzsKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogICAgIFt3ZWJW
aWV3MiBsb2FkUmVxdWVzdDpub25BcHBCb3VuZFJlcXVlc3RdOwogICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmcmVjZWl2ZWRNZXNzYWdlKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>