<?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>224140</bug_id>
          
          <creation_ts>2021-04-02 16:48:58 -0700</creation_ts>
          <short_desc>[macOS] Add MediaSessionCoordinator API test</short_desc>
          <delta_ts>2021-04-06 12:06:59 -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>Media</component>
          <version>Other</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="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1746724</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-04-02 16:48:58 -0700</bug_when>
    <thetext>Add basic MediaSessionCoordinator API test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746725</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-02 16:49:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/76171173&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746727</commentid>
    <comment_count>2</comment_count>
      <attachid>425064</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-04-02 16:56:48 -0700</bug_when>
    <thetext>Created attachment 425064
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746731</commentid>
    <comment_count>3</comment_count>
      <attachid>425068</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-04-02 17:10:50 -0700</bug_when>
    <thetext>Created attachment 425068
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746780</commentid>
    <comment_count>4</comment_count>
      <attachid>425094</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-04-03 06:39:42 -0700</bug_when>
    <thetext>Created attachment 425094
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746795</commentid>
    <comment_count>5</comment_count>
      <attachid>425101</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-04-03 11:02:36 -0700</bug_when>
    <thetext>Created attachment 425101
WIP, with state change tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746866</commentid>
    <comment_count>6</comment_count>
      <attachid>425101</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-04-04 11:25:30 -0700</bug_when>
    <thetext>Comment on attachment 425101
WIP, with state change tests

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

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:68
&gt; -void WebKit::NetworkSessionCocoa::removeNetworkWebsiteData(WallTime, CompletionHandler&lt;void()&gt;&amp;&amp; completionHandler) { completionHandler(); }
&gt; +void WebKit::NetworkSessionCocoa:: (WallTime, CompletionHandler&lt;void()&gt;&amp;&amp; completionHandler) { completionHandler(); }

This looks accidental.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747488</commentid>
    <comment_count>7</comment_count>
      <attachid>425293</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-04-06 10:07:03 -0700</bug_when>
    <thetext>Created attachment 425293
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747498</commentid>
    <comment_count>8</comment_count>
      <attachid>425297</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-04-06 10:16:32 -0700</bug_when>
    <thetext>Created attachment 425297
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747556</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-06 12:06:58 -0700</bug_when>
    <thetext>Committed r275537: &lt;https://commits.webkit.org/r275537&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 425297.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425064</attachid>
            <date>2021-04-02 16:56:48 -0700</date>
            <delta_ts>2021-04-02 17:16:22 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-224140-20210402165647.patch</filename>
            <type>text/plain</type>
            <size>73907</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MzIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGQ5Y2YzOTJlZWU5Zjhh
OTQ0OGFiOWJiMmY5ZGM2YzZlYzNmNmNlZS4uMzI1NWExM2IxODIzY2IxMjNiNmFhOTIwM2MzYzI4
MzliYTZmYTZiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTA0LTAyICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gQWRk
IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yIEFQSSB0ZXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQxNDAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
Lzc2MTcxMTczPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnBhdXNlU2Vzc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6c2V0U2Vzc2lvblRy
YWNrKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGlu
YXRvci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yUHJpdmF0ZS5oOgorICAgICAgICAqIHBhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdEb21haW4u
aDoKKwogMjAyMS0wMy0zMSAgVmVua3kgRGFzcyAgPHlhcmFuYW1hdmVua2F0YXJhbWFuYUBhcHBs
ZS5jb20+CiAKICAgICAgICAgTnVsbCBwb2ludGVyIGFjY2VzcyBjcmFzaCBpbiBXZWJDb3JlOjpt
YWtlQm91bmRhcnlQb2ludCguLikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMTIwOGM5N2VlYjJiM2U5OGYyZmE0MGNh
MDAwZjUyNjllMWJkZWM2NC4uMWEzYWRjNGM1YmZjZjAzNzEyYjQ3MjJjYmI5OTc0NDUyNzg0MTBm
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1OCBAQAorMjAyMS0wNC0wMiAgRXJpYyBDYXJsc29uICA8
ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdIEFkZCBNZWRpYVNlc3Np
b25Db29yZGluYXRvciBBUEkgdGVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI0MTQwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NjE3MTE3Mz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJj
ZXMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZUZv
clRlc3RpbmcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1Rlc3Rp
bmcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfY3JlYXRlTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JGb3JUZXN0aW5nOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS01lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9ySGVscGVyIGluaXRXaXRoQ29vcmRpbmF0b3I6XSk6CisgICAgICAgICgt
W1dLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JIZWxwZXIgc2Vla1Nlc3Npb25Ub1RpbWU6d2l0aENv
bXBsZXRpb246XSk6CisgICAgICAgICgtW1dLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JIZWxwZXIg
cGxheVNlc3Npb25XaXRoQ29tcGxldGlvbjpdKToKKyAgICAgICAgKC1bV0tNZWRpYVNlc3Npb25D
b29yZGluYXRvckhlbHBlciBwYXVzZVNlc3Npb25XaXRoQ29tcGxldGlvbjpdKToKKyAgICAgICAg
KC1bV0tNZWRpYVNlc3Npb25Db29yZGluYXRvckhlbHBlciBzZXRTZXNzaW9uVHJhY2s6d2l0aENv
bXBsZXRpb246XSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjptZWRpYVNlc3Npb25Db29yZGluYXRvckZvclRl
c3RpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yRm9yVGVz
dGluZyk6CisgICAgICAgICogVUlQcm9jZXNzL01lZGlhL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
UHJveHlQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL01lZGlhL1JlbW90ZU1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNl
c3Npb25Db29yZGluYXRvclByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVN
ZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5OjpSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRv
clByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQ
cm94eTo6am9pbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yUHJveHk6OmNvb3JkaW5hdGVTZWVrVG8pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVNlc3Npb25Db29yZGluYXRvclByb3h5Ojpjb29yZGluYXRlUGxheSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OmNvb3JkaW5hdGVQYXVzZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OmNv
b3JkaW5hdGVTZXRUcmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yUHJveHk6OmNvb3JkaW5hdG9yU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6cGF1c2VTZXNzaW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6c2V0U2Vz
c2lvblRyYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JQcm94eTo6bG9nQ2hhbm5lbCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6Ojo6Y29vcmRpbmF0ZVNldFRyYWNrKTogRGVsZXRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvTWVkaWEvUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQ
cm94eS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclBy
b3h5Ojpsb2dnZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25D
b29yZGluYXRvclByb3h5Ojpsb2dJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6bG9nQ2xhc3NOYW1lIGNvbnN0KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpjcmVhdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcik6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvTWVkaWFTZXNzaW9uL1JlbW90ZU1l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3I6OmpvaW4pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNl
c3Npb25Db29yZGluYXRvcjo6bGVhdmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNl
c3Npb25Db29yZGluYXRvcjo6c2Vla1RvKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3I6OnBsYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNl
c3Npb25Db29yZGluYXRvcjo6cGF1c2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNl
c3Npb25Db29yZGluYXRvcjo6c2V0VHJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVNlc3Npb25Db29yZGluYXRvcjo6cG9zaXRpb25TdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6cmVhZHlTdGF0ZUNoYW5nZWQpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6cGxheWJhY2tT
dGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25Db29yZGlu
YXRvcjo6Y29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQpOgorCiAyMDIxLTAzLTMxICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTjogVGhlIE5ldHdvcmtQ
cm9jZXNzIGZhaWxzIHRvIHJlbGF1bmNoIGFmdGVyIGl0IGNyYXNoZXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yLmNwcAppbmRleCAyMDgxOThiYzM0MDA4ZWE5NDZkMzliMWFhZGM0Zjg0NGM4NTVh
ODNhLi45NzJkNzhmODg3NDY1YjJlZWYxYjhmODdmNDMyZjE5ZTVhYjNmZWFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGlu
YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3IuY3BwCkBAIC0zMDcsNyArMzA3LDcgQEAgdm9pZCBNZWRpYVNlc3Np
b25Db29yZGluYXRvcjo6cGxheVNlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGUKICAgICBjb21wbGV0aW9uSGFuZGxlcihpbnRlcm5hbFBsYXkoKSk7CiB9CiAKLXZv
aWQgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnBhdXNlU2Vzc2lvbihDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3I6OnBhdXNlU2Vzc2lvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgbV9zdGF0ZSk7
CiAKQEAgLTMxOSw3ICszMTksNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpwYXVz
ZVNlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4gY29tcGxldAogICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGludGVybmFsUGF1c2UoKSk7CiB9CiAKLXZvaWQgTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3I6OnNldFNlc3Npb25UcmFjayhjb25zdCBTdHJpbmcmIHRyYWNrLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3I6OnNldFNlc3Npb25UcmFjayhjb25zdCBTdHJpbmcmIHRyYWNrLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFMV0FZ
U19MT0coTE9HSURFTlRJRklFUiwgbV9zdGF0ZSwgIiwgIiwgdHJhY2spOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGlu
YXRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3IuaAppbmRleCBmZDRhODczZDFiYzljMmVlZWRjNzNhMzg0NGE3MDVhNmJlYTIw
MzA3Li43NWU2Y2QwN2U4YTNkMDIwYmY4NDczYWEzZDBiNjRjYjIxNjczMGZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGlu
YXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yLmgKQEAgLTczLDggKzczLDggQEAgcHJpdmF0ZToKICAgICAvLyBNZWRp
YVNlc3Npb25Db29yZGluYXRvckNsaWVudAogICAgIHZvaWQgc2Vla1Nlc3Npb25Ub1RpbWUoZG91
YmxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKICAgICB2b2lkIHBs
YXlTZXNzaW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwotICAgIHZv
aWQgcGF1c2VTZXNzaW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+KSBmaW5hbDsKLSAg
ICB2b2lkIHNldFNlc3Npb25UcmFjayhjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPikgZmluYWw7CisgICAgdm9pZCBwYXVzZVNlc3Npb24oQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXNzaW9uVHJhY2soY29uc3Qg
U3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CiAKICAgICBi
b29sIGludGVybmFsU2Vla1RvKGRvdWJsZSk7CiAgICAgYm9vbCBpbnRlcm5hbFBsYXkoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlLmgKaW5kZXggZjgwMzBlNzg3MjA4MmYw
Mjc0YTdhZjU4OTYyZmVkOGMxNDBiMGIzMi4uNmQwMGMwYjFiODIwZTA5ZTRjZjIzYmIyMTIxZGM0
MmE3Y2NkMjMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlLmgKQEAg
LTQ2LDggKzQ2LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNlZWtTZXNzaW9uVG9U
aW1lKGRvdWJsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBwbGF5U2Vzc2lvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBhdXNlU2Vzc2lvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRTZXNzaW9uVHJhY2soY29uc3QgU3Ry
aW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4pID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgcGF1c2VTZXNzaW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0U2Vzc2lvblRyYWNrKGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpID0gMDsKIH07CiAKIGNsYXNzIE1lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yUHJpdmF0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
UHJpdmF0ZT4gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EaWFnbm9zdGljTG9n
Z2luZ0RvbWFpbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EaWFnbm9zdGljTG9nZ2luZ0RvbWFp
bi5oCmluZGV4IDI5YjNhMDMwZGUyMjVmMGVmYzJhNmUzOWM1OGUyYmRlZDIwOTAzYzAuLmIwNTQ5
YTg2NDFkY2IxNDM1NTI4NThhM2E2MWM1NzVmOTg3M2ViMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdEb21haW4uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RpYWdub3N0aWNMb2dnaW5nRG9tYWluLmgKQEAgLTI1LDYgKzI1LDggQEAKIAogI3By
YWdtYSBvbmNlCiAKKyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGVudW0gY2xhc3MgRGlhZ25vc3RpY0xvZ2dpbmdEb21haW4gOiB1aW50OF90IHsg
TWVkaWEgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDZjNDAxMDYxOTIxM2Y4YjZmYzQzNTI5MjEyOWI0ZDA1
OTJjOTgyOWUuLmEwYjQ3NGRlY2RlOWNkNTZmNTQ2ZDY3Y2QzYjRkYTA5NDI1YjQ3ZDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzLnR4dApAQCAtNDY3LDYgKzQ2Nyw3IEBAIFVJUHJvY2Vzcy9JbnNwZWN0b3IvQWdlbnRzL0lu
c3BlY3RvckJyb3dzZXJBZ2VudC5jcHAKIAogVUlQcm9jZXNzL01lZGlhL0F1ZGlvU2Vzc2lvblJv
dXRpbmdBcmJpdHJhdG9yUHJveHkuY3BwCiBVSVByb2Nlc3MvTWVkaWEvTWVkaWFVc2FnZU1hbmFn
ZXIuY3BwCitVSVByb2Nlc3MvTWVkaWEvUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94
eS5jcHAKIAogVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHkuY3BwCiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmlj
YXRpb24uY3BwCkBAIC01NzksNiArNTgwLDggQEAgV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViUGFn
ZUluc3BlY3RvclRhcmdldC5jcHAKIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYlBhZ2VJbnNwZWN0
b3JUYXJnZXRDb250cm9sbGVyLmNwcAogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViUGFnZUluc3Bl
Y3RvclRhcmdldEZyb250ZW5kQ2hhbm5lbC5jcHAKIAorV2ViUHJvY2Vzcy9NZWRpYVNlc3Npb24v
UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuY3BwCisKIFdlYlByb2Nlc3MvTWVkaWFTdHJl
YW0vTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5jcHAKIFdlYlByb2Nlc3MvTWVkaWFTdHJl
YW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3Rp
bmcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRl
Rm9yVGVzdGluZy5oCmluZGV4IGRiYjg0ZDhjY2JiNWNmMjVmZjFmYzNmNzY5NDE2MTA4NzM4NDQw
OTAuLmQ4NTYyZmM0ODM3ZmZkNWYxMjUwM2Y2ZTEzMjU4ZjFmZjZhOTk0MWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVz
dGluZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlRm9yVGVzdGluZy5oCkBAIC0yNiw2ICsyNiw4IEBACiAjaW1wb3J0ICJXS1dlYlZpZXdQ
cml2YXRlRm9yVGVzdGluZ0lPUy5oIgogI2ltcG9ydCAiV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3Rp
bmdNYWMuaCIKIAorTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKwogdHlwZWRlZiBlbnVtIHsKICAg
ICBXS1dlYlZpZXdBdWRpb1JvdXRpbmdBcmJpdHJhdGlvblN0YXR1c05vbmUsCiAgICAgV0tXZWJW
aWV3QXVkaW9Sb3V0aW5nQXJiaXRyYXRpb25TdGF0dXNQZW5kaW5nLApAQCAtMzcsNiArMzksOCBA
QCBzdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSB7CiAgICAgQk9PTCBoYXNM
b2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nOwogfTsKIAorQHByb3RvY29sIF9XS01lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yOworCiBAaW50ZXJmYWNlIFdLV2ViVmlldyAoV0tUZXN0aW5nKQog
CiAtICh2b2lkKV9zZXRQYWdlU2NhbGU6KENHRmxvYXQpc2NhbGUgd2l0aE9yaWdpbjooQ0dQb2lu
dClvcmlnaW47CkBAIC05OSw0ICsxMDMsNTYgQEAgc3RydWN0IFdLQXBwQm91bmROYXZpZ2F0aW9u
VGVzdGluZ0RhdGEgewogLSAodm9pZClfYXBwQm91bmROYXZpZ2F0aW9uRGF0YToodm9pZCheKShz
dHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBkYXRhKSljb21wbGV0aW9uSGFu
ZGxlcjsKIC0gKHZvaWQpX2NsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YToodm9pZCheKSh2b2lk
KSljb21wbGV0aW9uSGFuZGxlcjsKIAorLSAodm9pZClfY3JlYXRlTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3JGb3JUZXN0aW5nOihpZCA8X1dLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I+KXByaXZhdGVD
b29yZGluYXRvciBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFu
ZGxlcjsKKworQGVuZAorCit0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tNZWRpYVNlc3Np
b25SZWFkeVN0YXRlKSB7CisgICAgV0tNZWRpYVNlc3Npb25SZWFkeVN0YXRlSGF2ZU5vdGhpbmcs
CisgICAgV0tNZWRpYVNlc3Npb25SZWFkeVN0YXRlSGF2ZU1ldGFkYXRhLAorICAgIFdLTWVkaWFT
ZXNzaW9uUmVhZHlTdGF0ZUhhdmVDdXJyZW50RGF0YSwKKyAgICBXS01lZGlhU2Vzc2lvblJlYWR5
U3RhdGVIYXZlRnV0dXJlRGF0YSwKKyAgICBXS01lZGlhU2Vzc2lvblJlYWR5U3RhdGVIYXZlRW5v
dWdoRGF0YQorfTsKKwordHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLTWVkaWFTZXNzaW9u
UGxheWJhY2tTdGF0ZSkgeworICAgIFdLTWVkaWFTZXNzaW9uUGxheWJhY2tTdGF0ZU5vbmUsCisg
ICAgV0tNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRlUGF1c2VkLAorICAgIFdLTWVkaWFTZXNzaW9u
UGxheWJhY2tTdGF0ZVBsYXlpbmcKK307CisKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9X
S01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGUpIHsKKyAgICBXS01lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yU3RhdGVXYWl0aW5nLAorICAgIFdLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZUpv
aW5lZCwKKyAgICBXS01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGVDbG9zZWQKK307CisKK3N0
cnVjdCBfV0tNZWRpYVBvc2l0aW9uU3RhdGUgeworICAgIGRvdWJsZSBkdXJhdGlvbjsKKyAgICBk
b3VibGUgcGxheWJhY2tSYXRlOworICAgIGRvdWJsZSBwb3NpdGlvbjsKK307CisKK0Bwcm90b2Nv
bCBfV0tNZWRpYVNlc3Npb25Db29yZGluYXRvckRlbGVnYXRlIDxOU09iamVjdD4KKy0gKHZvaWQp
c2Vla1Nlc3Npb25Ub1RpbWU6KGRvdWJsZSl0aW1lIHdpdGhDb21wbGV0aW9uOih2b2lkKF4pKEJP
T0wpKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClwbGF5U2Vzc2lvbldpdGhDb21wbGV0aW9u
Oih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClwYXVzZVNlc3Npb25X
aXRoQ29tcGxldGlvbjoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQp
c2V0U2Vzc2lvblRyYWNrOihOU1N0cmluZyopdHJhY2tJZGVudGlmaWVyIHdpdGhDb21wbGV0aW9u
Oih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyOworQGVuZAorCitAcHJvdG9jb2wgX1dL
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IgPE5TT2JqZWN0PgorQHByb3BlcnR5IChudWxsYWJsZSwg
d2VhaykgaWQgPF9XS01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yRGVsZWdhdGU+IGRlbGVnYXRlOwor
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmluZyAqIF9Ob25udWxsIGlkZW50
aWZpZXI7CistICh2b2lkKWpvaW5XaXRoQ29tcGxldGlvbjoodm9pZCheIF9Ob25udWxsKShCT09M
KSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpbGVhdmU7CistICh2b2lkKXNlZWtUbzooZG91
YmxlKXRpbWUgd2l0aENvbXBsZXRpb246KHZvaWQoXiBfTm9ubnVsbCkoQk9PTCkpY29tcGxldGlv
bkhhbmRsZXI7CistICh2b2lkKXBsYXlXaXRoQ29tcGxldGlvbjoodm9pZCheIF9Ob25udWxsKShC
T09MKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpcGF1c2VXaXRoQ29tcGxldGlvbjoodm9p
ZCheIF9Ob25udWxsKShCT09MKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpc2V0VHJhY2s6
KE5TU3RyaW5nICpfTm9ubnVsbCl0cmFja0lkZW50aWZpZXIgd2l0aENvbXBsZXRpb246KHZvaWQo
XiBfTm9ubnVsbCkoQk9PTCkpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKXBvc2l0aW9uU3Rh
dGVDaGFuZ2VkOihudWxsYWJsZSBfV0tNZWRpYVBvc2l0aW9uU3RhdGUgKilzdGF0ZTsKKy0gKHZv
aWQpcmVhZHlTdGF0ZUNoYW5nZWQ6KF9XS01lZGlhU2Vzc2lvblJlYWR5U3RhdGUpc3RhdGU7Cist
ICh2b2lkKXBsYXliYWNrU3RhdGVDaGFuZ2VkOihfV0tNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRl
KXN0YXRlOworLSAodm9pZCljb29yZGluYXRvclN0YXRlQ2hhbmdlZDooX1dLTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3JTdGF0ZSlzdGF0ZTsKIEBlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVz
dGluZy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0
aW5nLm1tCmluZGV4IDRmOTI4ZTI4ODE3NzY3ZDc1MGVmMzU5ZGE4NDY5MGI3MTc4ZTI3ZmIuLjU2
YTg1NzY1YmVkY2NmZTFiOTlkMWVkMWQyNzg3OWMwYTZlOTIwOTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5nLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5nLm1tCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW1wb3J0ICJXS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oIgogCiAj
aW1wb3J0ICJBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5LmgiCisjaW1wb3J0ICJN
ZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5UHJpdmF0ZS5oIgogI2ltcG9ydCAiUGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5LmgiCiAjaW1wb3J0ICJVc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5o
IgogI2ltcG9ydCAiVmlld0dlc3R1cmVDb250cm9sbGVyLmgiCkBAIC0zOSw2ICs0MCwxNSBAQAog
I2ltcG9ydCAiX1dLSW5zcGVjdG9ySW50ZXJuYWwuaCIKICNpbXBvcnQgPFdlYkNvcmUvUnVudGlt
ZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1ZhbGlkYXRpb25CdWJibGUu
aD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworQGludGVyZmFjZSBXS01lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9ySGVscGVyIDogTlNPYmplY3QgPF9XS01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
RGVsZWdhdGU+CistIChpZClpbml0V2l0aENvb3JkaW5hdG9yOihXZWJDb3JlOjpNZWRpYVNlc3Np
b25Db29yZGluYXRvckNsaWVudCopY29vcmRpbmF0b3I7CistICh2b2lkKXNlZWtTZXNzaW9uVG9U
aW1lOihkb3VibGUpdGltZSB3aXRoQ29tcGxldGlvbjoodm9pZCheKShCT09MKSljb21wbGV0aW9u
SGFuZGxlcjsKKy0gKHZvaWQpcGxheVNlc3Npb25XaXRoQ29tcGxldGlvbjoodm9pZCheKShCT09M
KSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpcGF1c2VTZXNzaW9uV2l0aENvbXBsZXRpb246
KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKXNldFNlc3Npb25UcmFj
azooTlNTdHJpbmcqKXRyYWNrSWRlbnRpZmllciB3aXRoQ29tcGxldGlvbjoodm9pZCheKShCT09M
KSljb21wbGV0aW9uSGFuZGxlcjsKK0BlbmQKIAogCiBAaW1wbGVtZW50YXRpb24gV0tXZWJWaWV3
IChXS1Rlc3RpbmcpCkBAIC0zNjAsNCArMzcwLDIzOSBAQAogICAgIH0pOwogfQogCistICh2b2lk
KV9jcmVhdGVNZWRpYVNlc3Npb25Db29yZGluYXRvckZvclRlc3Rpbmc6KGlkIDxfV0tNZWRpYVNl
c3Npb25Db29yZGluYXRvcj4pcHJpdmF0ZUNvb3JkaW5hdG9yIGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCit7CisjaWYgRU5BQkxFKE1FRElBX1NFU1NJ
T05fQ09PUkRJTkFUT1IpCisKKyAgICBjbGFzcyBXS01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yRm9y
VGVzdGluZworICAgICAgICA6IHB1YmxpYyBXZWJLaXQ6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
UHJveHlQcml2YXRlCisgICAgICAgICwgcHVibGljIFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yQ2xpZW50IHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVi
bGljOgorCisgICAgICAgIHN0YXRpYyBSZWY8V0tNZWRpYVNlc3Npb25Db29yZGluYXRvckZvclRl
c3Rpbmc+IGNyZWF0ZShpZCA8X1dLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I+IHByaXZhdGVDb29y
ZGluYXRvcikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV0tN
ZWRpYVNlc3Npb25Db29yZGluYXRvckZvclRlc3RpbmcocHJpdmF0ZUNvb3JkaW5hdG9yKSk7Cisg
ICAgICAgIH0KKworICAgICAgICB1c2luZyBXZWJDb3JlOjpNZWRpYVNlc3Npb25Db29yZGluYXRv
ckNsaWVudDo6d2Vha1B0ckZhY3Rvcnk7CisgICAgICAgIHVzaW5nIFdlYWtWYWx1ZVR5cGUgPSBX
ZWJDb3JlOjpNZWRpYVNlc3Npb25Db29yZGluYXRvckNsaWVudDo6V2Vha1ZhbHVlVHlwZTsKKwor
ICAgIHByaXZhdGU6CisgICAgICAgIGV4cGxpY2l0IFdLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JG
b3JUZXN0aW5nKGlkIDxfV0tNZWRpYVNlc3Npb25Db29yZGluYXRvcj4gY2xpZW50Q29vcmRpbmF0
b3IpCisgICAgICAgICAgICA6IFdlYktpdDo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eVBy
aXZhdGUoKQorICAgICAgICAgICAgLCBtX2NsaWVudENvb3JkaW5hdG9yKGNsaWVudENvb3JkaW5h
dG9yKQorICAgICAgICB7CisgICAgICAgICAgICBhdXRvKiBkZWxlZ2F0ZUhlbHBlciA9IFtbV0tN
ZWRpYVNlc3Npb25Db29yZGluYXRvckhlbHBlciBhbGxvY10gaW5pdFdpdGhDb29yZGluYXRvcjp0
aGlzXTsKKyAgICAgICAgICAgIFttX2NsaWVudENvb3JkaW5hdG9yIHNldERlbGVnYXRlOmRlbGVn
YXRlSGVscGVyXTsKKyAgICAgICAgICAgIG1fY29vcmRpbmF0b3JEZWxlZ2F0ZSA9IGFkb3B0TlMo
ZGVsZWdhdGVIZWxwZXIpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBzZWVrU2Vzc2lvblRv
VGltZShkb3VibGUgdGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFj
aykgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGF1dG8gY29vcmRpbmF0b3JDbGll
bnQgPSBjbGllbnQoKSkKKyAgICAgICAgICAgICAgICBjb29yZGluYXRvckNsaWVudC0+c2Vla1Nl
c3Npb25Ub1RpbWUodGltZSwgV1RGTW92ZShjYWxsYmFjaykpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKKyAgICAgICAgfQorCisgICAgICAgIHZv
aWQgcGxheVNlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykg
ZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGF1dG8gY29vcmRpbmF0b3JDbGllbnQg
PSBjbGllbnQoKSkKKyAgICAgICAgICAgICAgICBjb29yZGluYXRvckNsaWVudC0+cGxheVNlc3Np
b24oV1RGTW92ZShjYWxsYmFjaykpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IGNhbGxiYWNrKGZhbHNlKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgcGF1c2VTZXNzaW9u
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spIGZpbmFsCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmIChhdXRvIGNvb3JkaW5hdG9yQ2xpZW50ID0gY2xpZW50KCkpCisg
ICAgICAgICAgICAgICAgY29vcmRpbmF0b3JDbGllbnQtPnBhdXNlU2Vzc2lvbihXVEZNb3ZlKGNh
bGxiYWNrKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY2FsbGJhY2soZmFs
c2UpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBzZXRTZXNzaW9uVHJhY2soY29uc3QgU3Ry
aW5nJiB0cmFja0lkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2Fs
bGJhY2spIGZpbmFsCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGNvb3JkaW5hdG9y
Q2xpZW50ID0gY2xpZW50KCkpCisgICAgICAgICAgICAgICAgY29vcmRpbmF0b3JDbGllbnQtPnNl
dFNlc3Npb25UcmFjayh0cmFja0lkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSk7CisgICAgICAgIH0K
KworICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiByZXN1bHQoYm9vbCBz
dWNjZXNzKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHsgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSB7IFdlYkNvcmU6Oklu
dmFsaWRTdGF0ZUVycm9yIH0gfTsKKworICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAg
fQorCisgICAgICAgIFN0cmluZyBpZGVudGlmaWVyKCkgY29uc3QKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIFttX2NsaWVudENvb3JkaW5hdG9yIGlkZW50aWZpZXJdOworICAgICAgICB9
CisKKyAgICAgICAgdm9pZCBqb2luKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2Vi
Q29yZTo6RXhjZXB0aW9uRGF0YT4mJik+JiYgY2FsbGJhY2spIGZpbmFsCisgICAgICAgIHsKKyAg
ICAgICAgICAgIFttX2NsaWVudENvb3JkaW5hdG9yIGpvaW5XaXRoQ29tcGxldGlvbjptYWtlQmxv
Y2tQdHIoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldIChCT09MIHN1Y2Nlc3MpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGlmICgh
d2Vha1RoaXMpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soV2ViQ29yZTo6RXhjZXB0
aW9uRGF0YSB7IFdlYkNvcmU6OkludmFsaWRTdGF0ZUVycm9yIH0pOworICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY2FsbGJh
Y2sod2Vha1RoaXMtPnJlc3VsdChzdWNjZXNzKSk7CisgICAgICAgICAgICB9KS5nZXQoKV07Cisg
ICAgICAgIH0KKworICAgICAgICB2b2lkIGxlYXZlKCkgZmluYWwKKyAgICAgICAgeworICAgICAg
ICAgICAgW21fY2xpZW50Q29vcmRpbmF0b3IgbGVhdmVdOworICAgICAgICB9CisKKyAgICAgICAg
dm9pZCBzZWVrVG8oZG91YmxlIHRpbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8
V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJik+JiYgY2FsbGJhY2spIGZpbmFsCisgICAgICAgIHsK
KyAgICAgICAgICAgIFttX2NsaWVudENvb3JkaW5hdG9yIHNlZWtUbzp0aW1lIHdpdGhDb21wbGV0
aW9uOm1ha2VCbG9ja1B0cihbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKV0gKEJPT0wgc3VjY2VzcykgbXV0YWJsZSB7CisgICAgICAgICAg
ICAgICAgaWYgKCF3ZWFrVGhpcykgeworICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhXZWJD
b3JlOjpFeGNlcHRpb25EYXRhIHsgV2ViQ29yZTo6SW52YWxpZFN0YXRlRXJyb3IgfSk7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICBjYWxsYmFjayh3ZWFrVGhpcy0+cmVzdWx0KHN1Y2Nlc3MpKTsKKyAgICAgICAgICAgIH0p
LmdldCgpXTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgcGxheShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYpPiYmIGNhbGxiYWNrKSBm
aW5hbAorICAgICAgICB7CisgICAgICAgICAgICBbbV9jbGllbnRDb29yZGluYXRvciBwbGF5V2l0
aENvbXBsZXRpb246bWFrZUJsb2NrUHRyKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoQk9PTCBzdWNjZXNzKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKSB7CisgICAgICAgICAgICAgICAgICAgIGNhbGxi
YWNrKFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEgeyBXZWJDb3JlOjpJbnZhbGlkU3RhdGVFcnJvciB9
KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIGNhbGxiYWNrKHdlYWtUaGlzLT5yZXN1bHQoc3VjY2VzcykpOworICAgICAg
ICAgICAgfSkuZ2V0KCldOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBwYXVzZShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYpPiYmIGNh
bGxiYWNrKSBmaW5hbAorICAgICAgICB7CisgICAgICAgICAgICBbbV9jbGllbnRDb29yZGluYXRv
ciBwYXVzZVdpdGhDb21wbGV0aW9uOm1ha2VCbG9ja1B0cihbd2Vha1RoaXMgPSBtYWtlV2Vha1B0
cih0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKEJPT0wgc3VjY2VzcykgbXV0
YWJsZSB7CisgICAgICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykgeworICAgICAgICAgICAgICAg
ICAgICBjYWxsYmFjayhXZWJDb3JlOjpFeGNlcHRpb25EYXRhIHsgV2ViQ29yZTo6SW52YWxpZFN0
YXRlRXJyb3IgfSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICBjYWxsYmFjayh3ZWFrVGhpcy0+cmVzdWx0KHN1Y2Nlc3Mp
KTsKKyAgICAgICAgICAgIH0pLmdldCgpXTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgc2V0
VHJhY2soY29uc3QgU3RyaW5nJiB0cmFjaywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25h
bDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmKT4mJiBjYWxsYmFjaykgZmluYWwKKyAgICAgICAg
eworICAgICAgICAgICAgW21fY2xpZW50Q29vcmRpbmF0b3Igc2V0VHJhY2s6dHJhY2sgd2l0aENv
bXBsZXRpb246bWFrZUJsb2NrUHRyKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoQk9PTCBzdWNjZXNzKSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgICAgICBpZiAoIXdlYWtUaGlzKSB7CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNr
KFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEgeyBXZWJDb3JlOjpJbnZhbGlkU3RhdGVFcnJvciB9KTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIGNhbGxiYWNrKHdlYWtUaGlzLT5yZXN1bHQoc3VjY2VzcykpOworICAgICAgICAg
ICAgfSkuZ2V0KCldOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBwb3NpdGlvblN0YXRlQ2hh
bmdlZChjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpNZWRpYVBvc2l0aW9uU3RhdGU+JiBzdGF0ZSkg
ZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFzdGF0ZSkgeworICAgICAgICAgICAg
ICAgIFttX2NsaWVudENvb3JkaW5hdG9yIHBvc2l0aW9uU3RhdGVDaGFuZ2VkOm5pbF07CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBfV0tNZWRp
YVBvc2l0aW9uU3RhdGUgcG9zaXRpb24gPSB7CisgICAgICAgICAgICAgICAgLmR1cmF0aW9uID0g
c3RhdGUtPmR1cmF0aW9uLAorICAgICAgICAgICAgICAgIC5wbGF5YmFja1JhdGUgPSBzdGF0ZS0+
cGxheWJhY2tSYXRlLAorICAgICAgICAgICAgICAgIC5wb3NpdGlvbiA9IHN0YXRlLT5wb3NpdGlv
bgorICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIFttX2NsaWVudENvb3JkaW5hdG9yIHBvc2l0
aW9uU3RhdGVDaGFuZ2VkOiZwb3NpdGlvbl07CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHJl
YWR5U3RhdGVDaGFuZ2VkKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvblJlYWR5U3RhdGUgc3RhdGUpIGZp
bmFsCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6
ZV90PihXZWJDb3JlOjpNZWRpYVNlc3Npb25SZWFkeVN0YXRlOjpIYXZlTm90aGluZykgPT0gc3Rh
dGljX2Nhc3Q8c2l6ZV90PihXS01lZGlhU2Vzc2lvblJlYWR5U3RhdGVIYXZlTm90aGluZyksICJX
S01lZGlhU2Vzc2lvblJlYWR5U3RhdGVIYXZlTm90aGluZyBkb2VzIG5vdCBtYXRjaCBXZWJLaXQg
dmFsdWUiKTsKKyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihX
ZWJDb3JlOjpNZWRpYVNlc3Npb25SZWFkeVN0YXRlOjpIYXZlTWV0YWRhdGEpID09IHN0YXRpY19j
YXN0PHNpemVfdD4oV0tNZWRpYVNlc3Npb25SZWFkeVN0YXRlSGF2ZU1ldGFkYXRhKSwgIldLTWVk
aWFTZXNzaW9uUmVhZHlTdGF0ZUhhdmVNZXRhZGF0YSBkb2VzIG5vdCBtYXRjaCBXZWJLaXQgdmFs
dWUiKTsKKyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihXZWJD
b3JlOjpNZWRpYVNlc3Npb25SZWFkeVN0YXRlOjpIYXZlQ3VycmVudERhdGEpID09IHN0YXRpY19j
YXN0PHNpemVfdD4oV0tNZWRpYVNlc3Npb25SZWFkeVN0YXRlSGF2ZUN1cnJlbnREYXRhKSwgIldL
TWVkaWFTZXNzaW9uUmVhZHlTdGF0ZUhhdmVDdXJyZW50RGF0YSBkb2VzIG5vdCBtYXRjaCBXZWJL
aXQgdmFsdWUiKTsKKyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90
PihXZWJDb3JlOjpNZWRpYVNlc3Npb25SZWFkeVN0YXRlOjpIYXZlRnV0dXJlRGF0YSkgPT0gc3Rh
dGljX2Nhc3Q8c2l6ZV90PihXS01lZGlhU2Vzc2lvblJlYWR5U3RhdGVIYXZlRnV0dXJlRGF0YSks
ICJXS01lZGlhU2Vzc2lvblJlYWR5U3RhdGVIYXZlRnV0dXJlRGF0YSBkb2VzIG5vdCBtYXRjaCBX
ZWJLaXQgdmFsdWUiKTsKKyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6
ZV90PihXZWJDb3JlOjpNZWRpYVNlc3Npb25SZWFkeVN0YXRlOjpIYXZlRW5vdWdoRGF0YSkgPT0g
c3RhdGljX2Nhc3Q8c2l6ZV90PihXS01lZGlhU2Vzc2lvblJlYWR5U3RhdGVIYXZlRW5vdWdoRGF0
YSksICJXS01lZGlhU2Vzc2lvblJlYWR5U3RhdGVIYXZlRW5vdWdoRGF0YSBkb2VzIG5vdCBtYXRj
aCBXZWJLaXQgdmFsdWUiKTsKKworICAgICAgICAgICAgW21fY2xpZW50Q29vcmRpbmF0b3IgcmVh
ZHlTdGF0ZUNoYW5nZWQ6c3RhdGljX2Nhc3Q8X1dLTWVkaWFTZXNzaW9uUmVhZHlTdGF0ZT4oc3Rh
dGUpXTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgcGxheWJhY2tTdGF0ZUNoYW5nZWQoV2Vi
Q29yZTo6TWVkaWFTZXNzaW9uUGxheWJhY2tTdGF0ZSBzdGF0ZSkgZmluYWwKKyAgICAgICAgewor
ICAgICAgICAgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFdlYkNvcmU6Ok1l
ZGlhU2Vzc2lvblBsYXliYWNrU3RhdGU6Ok5vbmUpID09IHN0YXRpY19jYXN0PHNpemVfdD4oV0tN
ZWRpYVNlc3Npb25QbGF5YmFja1N0YXRlTm9uZSksICJXS01lZGlhU2Vzc2lvblBsYXliYWNrU3Rh
dGVOb25lIGRvZXMgbm90IG1hdGNoIFdlYktpdCB2YWx1ZSIpOworICAgICAgICAgICAgc3RhdGlj
X2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFdlYkNvcmU6Ok1lZGlhU2Vzc2lvblBsYXliYWNr
U3RhdGU6OlBhdXNlZCkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihXS01lZGlhU2Vzc2lvblBsYXli
YWNrU3RhdGVQYXVzZWQpLCAiV0tNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRlUGF1c2VkIGRvZXMg
bm90IG1hdGNoIFdlYktpdCB2YWx1ZSIpOworICAgICAgICAgICAgc3RhdGljX2Fzc2VydChzdGF0
aWNfY2FzdDxzaXplX3Q+KFdlYkNvcmU6Ok1lZGlhU2Vzc2lvblBsYXliYWNrU3RhdGU6OlBsYXlp
bmcpID09IHN0YXRpY19jYXN0PHNpemVfdD4oV0tNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRlUGxh
eWluZyksICJXS01lZGlhU2Vzc2lvblBsYXliYWNrU3RhdGVQbGF5aW5nIGRvZXMgbm90IG1hdGNo
IFdlYktpdCB2YWx1ZSIpOworCisgICAgICAgICAgICBbbV9jbGllbnRDb29yZGluYXRvciBwbGF5
YmFja1N0YXRlQ2hhbmdlZDpzdGF0aWNfY2FzdDxfV0tNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRl
PihzdGF0ZSldOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBjb29yZGluYXRvclN0YXRlQ2hh
bmdlZChXZWJDb3JlOjpNZWRpYVNlc3Npb25Db29yZGluYXRvclN0YXRlIHN0YXRlKSBmaW5hbAor
ICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4o
V2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZTo6V2FpdGluZykgPT0gc3RhdGlj
X2Nhc3Q8c2l6ZV90PihXS01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGVXYWl0aW5nKSwgIldL
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZVdhaXRpbmcgZG9lcyBub3QgbWF0Y2ggV2ViS2l0
IHZhbHVlIik7CisgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4o
V2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZTo6Sm9pbmVkKSA9PSBzdGF0aWNf
Y2FzdDxzaXplX3Q+KFdLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZUpvaW5lZCksICJXS01l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGVKb2luZWQgZG9lcyBub3QgbWF0Y2ggV2ViS2l0IHZh
bHVlIik7CisgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oV2Vi
Q29yZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZTo6Q2xvc2VkKSA9PSBzdGF0aWNfY2Fz
dDxzaXplX3Q+KFdLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZUNsb3NlZCksICJXS01lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGVDbG9zZWQgZG9lcyBub3QgbWF0Y2ggV2ViS2l0IHZhbHVl
Iik7CisKKyAgICAgICAgICAgIFttX2NsaWVudENvb3JkaW5hdG9yIGNvb3JkaW5hdG9yU3RhdGVD
aGFuZ2VkOnN0YXRpY19jYXN0PF9XS01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGU+KHN0YXRl
KV07CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIFJldGFpblB0cjxpZCA8X1dL
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I+PiBtX2NsaWVudENvb3JkaW5hdG9yOworICAgICAgICBS
ZXRhaW5QdHI8V0tNZWRpYVNlc3Npb25Db29yZGluYXRvckhlbHBlcj4gbV9jb29yZGluYXRvckRl
bGVnYXRlOworICAgIH07CisKKyAgICBBU1NFUlQoIV9pbXBsLT5tZWRpYVNlc3Npb25Db29yZGlu
YXRvckZvclRlc3RpbmcoKSk7CisKKyAgICBfaW1wbC0+c2V0TWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JGb3JUZXN0aW5nKFdLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JGb3JUZXN0aW5nOjpjcmVhdGUo
cHJpdmF0ZUNvb3JkaW5hdG9yKS5wdHIoKSk7CisgICAgX2ltcGwtPnBhZ2UoKS5jcmVhdGVNZWRp
YVNlc3Npb25Db29yZGluYXRvcigqX2ltcGwtPm1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yRm9yVGVz
dGluZygpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRs
ZXIpXSAoYm9vbCBzdWNjZXNzKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN1Y2Nlc3Mp
OworICAgIH0pOworI2Vsc2UKKworICAgIGNvbXBsZXRpb25IYW5kbGVyKE5PKTsKKworI2VuZGlm
Cit9CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JI
ZWxwZXIgeworICAgIFdlYWtQdHI8V2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JDbGll
bnQ+IG1fY29vcmRpbmF0b3JDbGllbnQ7Cit9CisKKy0gKGlkKWluaXRXaXRoQ29vcmRpbmF0b3I6
KFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yQ2xpZW50Kiljb29yZGluYXRvcgorewor
ICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4g
bmlsOworICAgIG1fY29vcmRpbmF0b3JDbGllbnQgPSBtYWtlV2Vha1B0cihjb29yZGluYXRvcik7
CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpc2Vla1Nlc3Npb25Ub1RpbWU6KGRvdWJs
ZSl0aW1lIHdpdGhDb21wbGV0aW9uOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCit7
CisgICAgbV9jb29yZGluYXRvckNsaWVudC0+c2Vla1Nlc3Npb25Ub1RpbWUodGltZSwgbWFrZUJs
b2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKKy0gKHZvaWQpcGxheVNlc3Npb25XaXRo
Q29tcGxldGlvbjoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIG1fY29v
cmRpbmF0b3JDbGllbnQtPnBsYXlTZXNzaW9uKG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxl
cikpOworfQorCistICh2b2lkKXBhdXNlU2Vzc2lvbldpdGhDb21wbGV0aW9uOih2b2lkKF4pKEJP
T0wpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgbV9jb29yZGluYXRvckNsaWVudC0+cGF1c2VT
ZXNzaW9uKG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcikpOworfQorCistICh2b2lkKXNl
dFNlc3Npb25UcmFjazooTlNTdHJpbmcqKXRyYWNrSWRlbnRpZmllciB3aXRoQ29tcGxldGlvbjoo
dm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIG1fY29vcmRpbmF0b3JDbGll
bnQtPnNldFNlc3Npb25UcmFjayh0cmFja0lkZW50aWZpZXIsIG1ha2VCbG9ja1B0cihjb21wbGV0
aW9uSGFuZGxlcikpOworfQorCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwuaAppbmRleCA4NTg1NDRkMjdkNzA0YjNmMDIzOGZiOTg4YTU1NmQ1YmQ4ZjBj
Yjk0Li43ZDY5YjJjMmQyYjA0NGU5OTc2ZmI3ZDExOTgzNmQ5YWQwMjFlNGZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKQEAgLTE1MSw2ICsxNTEsNyBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFBhZ2VDbGllbnQ7CiBjbGFzcyBQYWdlQ2xpZW50
SW1wbDsKIGNsYXNzIERyYXdpbmdBcmVhUHJveHk7CitjbGFzcyBNZWRpYVNlc3Npb25Db29yZGlu
YXRvclByb3h5UHJpdmF0ZTsKIGNsYXNzIFNhZmVCcm93c2luZ1dhcm5pbmc7CiBjbGFzcyBWaWV3
R2VzdHVyZUNvbnRyb2xsZXI7CiBjbGFzcyBWaWV3U25hcHNob3Q7CkBAIC02NDMsNiArNjQ0LDEx
IEBAIHB1YmxpYzoKICAgICB2b2lkIGhhbmRsZUNvbnRleHRNZW51VHJhbnNsYXRpb24oY29uc3Qg
U3RyaW5nJiB0ZXh0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBib3VuZHNJblZpZXcsIGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiBtZW51TG9jYXRpb24pOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
TUVESUFfU0VTU0lPTl9DT09SRElOQVRPUikKKyAgICBNZWRpYVNlc3Npb25Db29yZGluYXRvclBy
b3h5UHJpdmF0ZSogbWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JGb3JUZXN0aW5nKCkgeyByZXR1cm4g
bV9jb29yZGluYXRvckZvclRlc3RpbmcuZ2V0KCk7IH0KKyAgICB2b2lkIHNldE1lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yRm9yVGVzdGluZyhNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5UHJpdmF0
ZSopOworI2VuZGlmCisKIHByaXZhdGU6CiAjaWYgSEFWRShUT1VDSF9CQVIpCiAgICAgdm9pZCBz
ZXRVcFRleHRUb3VjaEJhcihOU1RvdWNoQmFyICopOwpAQCAtODQ5LDYgKzg1NSwxMCBAQCBwcml2
YXRlOgogICAgIFJldGFpblB0cjxXS0RPTVBhc3RlTWVudURlbGVnYXRlPiBtX2RvbVBhc3RlTWVu
dURlbGVnYXRlOwogICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6RE9NUGFzdGVB
Y2Nlc3NSZXNwb25zZSk+IG1fZG9tUGFzdGVSZXF1ZXN0SGFuZGxlcjsKIAorI2lmIEVOQUJMRShN
RURJQV9TRVNTSU9OX0NPT1JESU5BVE9SKQorICAgIFJlZlB0cjxNZWRpYVNlc3Npb25Db29yZGlu
YXRvclByb3h5UHJpdmF0ZT4gbV9jb29yZGluYXRvckZvclRlc3Rpbmc7CisjZW5kaWYKKwogI2lm
IFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAjaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvV2ViVmll
d0ltcGxBZGRpdGlvbnNBZnRlci5oPgogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDZkM2QxMjlkNThjNjk1MDg1MjFmYWUyOTViMzRh
YTViZjUxYTkwZTQuLjg3YmFkMmI0YzQwYTgzNmMxMzRmZmE3NGIwNjgwN2VjY2MyNDcwZDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC0xMzks
NiArMTM5LDEwIEBACiAjaW1wb3J0IDxXZWJDb3JlL0ltYWdlRXh0cmFjdGlvblJlc3VsdC5oPgog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTl9DT09SRElOQVRPUikKKyNpbmNsdWRl
IDxXZWJLaXQvTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eVByaXZhdGUuaD4KKyNlbmRpZgor
CiAjaWYgSEFWRShUUkFOU0xBVElPTl9VSV9TRVJWSUNFUykKICNpbXBvcnQgPFRyYW5zbGF0aW9u
VUlTZXJ2aWNlcy9MVFVJVHJhbnNsYXRpb25WaWV3Q29udHJvbGxlci5oPgogCkBAIC01NTgyLDYg
KzU1ODYsMTMgQEAgYm9vbCBXZWJWaWV3SW1wbDo6ZWZmZWN0aXZlVXNlckludGVyZmFjZUxldmVs
SXNFbGV2YXRlZCgpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCisjaWYgRU5BQkxFKE1FRElBX1NF
U1NJT05fQ09PUkRJTkFUT1IpCit2b2lkIFdlYlZpZXdJbXBsOjpzZXRNZWRpYVNlc3Npb25Db29y
ZGluYXRvckZvclRlc3RpbmcoTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eVByaXZhdGUqIGNv
b3JkaW5hdG9yKQoreworICAgIG1fY29vcmRpbmF0b3JGb3JUZXN0aW5nID0gY29vcmRpbmF0b3I7
Cit9CisjZW5kaWYKKwogI2lmIEhBVkUoVFJBTlNMQVRJT05fVUlfU0VSVklDRVMpICYmIEVOQUJM
RShDT05URVhUX01FTlVTKQogCiBib29sIFdlYlZpZXdJbXBsOjpjYW5IYW5kbGVDb250ZXh0TWVu
dVRyYW5zbGF0aW9uKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L01lZGlhL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHlQcml2YXRlLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9NZWRpYS9NZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5UHJpdmF0ZS5o
CmluZGV4IDIyZGRkZWQwYTg5ZjgzNDhiZjdlNmRjMjg4ZGJjYzMzZmNmNWVjNmUuLjViYzYyMDcz
MTNjYjM0MjAwOTdhZjA2NDE5ZThhNzUwMmU3ODU5MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL01lZGlhL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHlQcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWEvTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JQcm94eVByaXZhdGUuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NF
U1NJT05fQ09PUkRJTkFUT1IpCiAKKyNpbmNsdWRlIDxXZWJDb3JlL0V4Y2VwdGlvbkRhdGEuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtNDEsMTAg
KzQyLDEzIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgU3RyaW5nIGlkZW50aWZpZXIoKSBjb25z
dCA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2Vla1RvKGRvdWJsZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJik+JiYpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgcGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkV4Y2Vw
dGlvbkRhdGEmKT4mJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwYXVzZShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmKT4mJikgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRUcmFjayhjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBqb2luKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9u
RGF0YT4mJik+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbGVhdmUoKSA9IDA7CisKKyAgICB2
aXJ0dWFsIHZvaWQgc2Vla1RvKGRvdWJsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25h
bDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBw
bGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGF0
YT4mJik+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGF1c2UoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmKT4mJikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzZXRUcmFjayhjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYpPiYmKSA9IDA7CiAKICAgICB2aXJ0
dWFsIHZvaWQgcG9zaXRpb25TdGF0ZUNoYW5nZWQoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6TWVk
aWFQb3NpdGlvblN0YXRlPiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVhZHlTdGF0ZUNoYW5n
ZWQoV2ViQ29yZTo6TWVkaWFTZXNzaW9uUmVhZHlTdGF0ZSkgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWEvUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRpYS9SZW1vdGVNZWRpYVNlc3Np
b25Db29yZGluYXRvclByb3h5LmNwcAppbmRleCA3MjdmZTJkNzYzMWY0ZTVkZTc0MTdmNjMyZDEx
YzYzOWE2NGIyZTA2Li4xMDczZTY2NmM0OGJkNzc3NWFmNWIwMDM4Zjk4ODU1NTUwNDk3YjlhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRpYS9SZW1vdGVNZWRpYVNlc3Np
b25Db29yZGluYXRvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRp
YS9SZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5LmNwcApAQCAtMzAsMTYgKzMwLDIy
IEBACiAKICNpbmNsdWRlICJNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5UHJpdmF0ZS5oIgog
I2luY2x1ZGUgIlJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yTWVzc2FnZXMuaCIKKyNpbmNs
dWRlICJSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5TWVzc2FnZXMuaCIKICNpbmNs
dWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0V4Y2VwdGlvbkRhdGEuaD4KKyNpbmNsdWRlIDx3dGYvTG9nZ2VySGVscGVy
Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5o
PgogCituYW1lc3BhY2UgV2ViQ29yZSB7CitleHRlcm4gV1RGTG9nQ2hhbm5lbCBMb2dNZWRpYTsK
K30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVm
UHRyPFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk+IFJlbW90ZU1lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yUHJveHk6OmNyZWF0ZShXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSwgUmVm
PE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHlQcml2YXRlPiYmIHByaXZhdGVDb29yZGluYXRv
cikKK1JlZjxSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5PiBSZW1vdGVNZWRpYVNl
c3Npb25Db29yZGluYXRvclByb3h5OjpjcmVhdGUoV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveHks
IFJlZjxNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5UHJpdmF0ZT4mJiBwcml2YXRlQ29vcmRp
bmF0b3IpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3JQcm94eSh3ZWJQYWdlUHJveHksIFdURk1vdmUocHJpdmF0ZUNvb3JkaW5hdG9yKSkp
OwogfQpAQCAtNDgsOCArNTQsOSBAQCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5
OjpSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5KFdlYlBhZ2VQcgogICAgIDogbV93
ZWJQYWdlUHJveHkod2ViUGFnZVByb3h5KQogICAgICwgbV9wcml2YXRlQ29vcmRpbmF0b3IoV1RG
TW92ZShwcml2YXRlQ29vcmRpbmF0b3IpKQogICAgICwgbV9sb2dnZXIobV93ZWJQYWdlUHJveHku
bG9nZ2VyKCkpCi0gICAgLCBtX2xvZ0lkZW50aWZpZXIodW5pcXVlTG9nSWRlbnRpZmllcigpKQor
ICAgICwgbV9sb2dJZGVudGlmaWVyKExvZ2dlckhlbHBlcjo6dW5pcXVlTG9nSWRlbnRpZmllcigp
KQogeworICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5zZXRDbGllbnQobWFrZVdlYWtQdHIodGhp
cykpOwogICAgIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OlJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV93ZWJQYWdlUHJveHkud2ViUGFnZUlEKCksICp0aGlzKTsKIH0KIApAQCAtNTgs
MTQgKzY1LDE5IEBAIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6On5SZW1vdGVN
ZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5KCkKICAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNz
KCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25Db29y
ZGluYXRvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZVByb3h5LndlYlBh
Z2VJRCgpKTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5Ojpq
b2luKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYp
PiYmKQordm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5Ojpqb2luKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJik+JiYg
Y2FsbGJhY2spCiB7CiAgICAgYXV0byBpZGVudGlmaWVyID0gTE9HSURFTlRJRklFUjsKICAgICBB
TFdBWVNfTE9HKGlkZW50aWZpZXIpOwogCi0gICAgbV9wcml2YXRlQ29vcmRpbmF0b3ItPmpvaW4o
W2lkZW50aWZpZXJdIChjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiYgZXhjZXB0aW9uKSBt
dXRhYmxlIHsKKyAgICBtX3ByaXZhdGVDb29yZGluYXRvci0+am9pbihbaWRlbnRpZmllciwgdGhp
cywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0gKGF1dG8gZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykg
eworICAgICAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uRGF0YSB7IEludmFsaWRTdGF0ZUVycm9y
IH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKICAgICAgICAgQUxXQVlTX0xP
RyhpZGVudGlmaWVyLCAiY29tcGxldGlvbiIpOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKGV4Y2VwdGlvbikpOworICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGV4Y2VwdGlvbikp
OwogICAgIH0pOwogfQogCkBAIC03Niw0NyArODgsNjcgQEAgdm9pZCBSZW1vdGVNZWRpYVNlc3Np
b25Db29yZGluYXRvclByb3h5OjpsZWF2ZSgpCiAgICAgbV9wcml2YXRlQ29vcmRpbmF0b3ItPmxl
YXZlKCk7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6Y29v
cmRpbmF0ZVNlZWtUbyhkb3VibGUgdGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBX
ZWJDb3JlOjpFeGNlcHRpb25EYXRhJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90
ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OmNvb3JkaW5hdGVTZWVrVG8oZG91YmxlIHRp
bWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGF0
YT4mJik+JiYgY2FsbGJhY2spCiB7CiAgICAgYXV0byBpZGVudGlmaWVyID0gTE9HSURFTlRJRklF
UjsKICAgICBBTFdBWVNfTE9HKGlkZW50aWZpZXIsIHRpbWUpOwogCi0gICAgbV9wcml2YXRlQ29v
cmRpbmF0b3ItPnNlZWtUbyh0aW1lLCBbaWRlbnRpZmllcl0gKGNvbnN0IFdlYkNvcmU6OkV4Y2Vw
dGlvbkRhdGEmJiBleGNlcHRpb24pIG11dGFibGUgeworICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9y
LT5zZWVrVG8odGltZSwgW2lkZW50aWZpZXIsIHRoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIo
dGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChhdXRvIGV4Y2VwdGlvbikgbXV0
YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKEV4
Y2VwdGlvbkRhdGEgeyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCiAgICAgICAgIEFMV0FZU19MT0coaWRlbnRpZmllciwgImNvbXBsZXRpb24i
KTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShleGNlcHRpb24pKTsKKyAgICAg
ICAgY2FsbGJhY2soV1RGTW92ZShleGNlcHRpb24pKTsKICAgICB9KTsKIH0KIAotdm9pZCBSZW1v
dGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5Ojpjb29yZGluYXRlUGxheShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3ZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6Y29vcmRp
bmF0ZVBsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRp
b25EYXRhPiYmKT4mJiBjYWxsYmFjaykKIHsKICAgICBhdXRvIGlkZW50aWZpZXIgPSBMT0dJREVO
VElGSUVSOwogICAgIEFMV0FZU19MT0coaWRlbnRpZmllcik7CiAKLSAgICBtX3ByaXZhdGVDb29y
ZGluYXRvci0+cGxheShbaWRlbnRpZmllcl0gKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEm
JiBleGNlcHRpb24pIG11dGFibGUgeworICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5wbGF5KFtp
ZGVudGlmaWVyLCB0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXSAoYXV0byBleGNlcHRpb24pIG11dGFibGUgeworICAgICAgICBp
ZiAoIXdlYWtUaGlzKSB7CisgICAgICAgICAgICBjYWxsYmFjayhFeGNlcHRpb25EYXRhIHsgSW52
YWxpZFN0YXRlRXJyb3IgfSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAg
ICAgICBBTFdBWVNfTE9HKGlkZW50aWZpZXIsICJjb21wbGV0aW9uIik7Ci0gICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUoZXhjZXB0aW9uKSk7CisgICAgICAgIGNhbGxiYWNrKFdURk1v
dmUoZXhjZXB0aW9uKSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3JQcm94eTo6Y29vcmRpbmF0ZVBhdXNlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBS
ZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5Ojpjb29yZGluYXRlUGF1c2UoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmKT4mJiBj
YWxsYmFjaykKIHsKICAgICBhdXRvIGlkZW50aWZpZXIgPSBMT0dJREVOVElGSUVSOwogICAgIEFM
V0FZU19MT0coaWRlbnRpZmllcik7CiAKLSAgICBtX3ByaXZhdGVDb29yZGluYXRvci0+cGF1c2Uo
W2lkZW50aWZpZXJdIChjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiYgZXhjZXB0aW9uKSBt
dXRhYmxlIHsKKyAgICBtX3ByaXZhdGVDb29yZGluYXRvci0+cGF1c2UoW2lkZW50aWZpZXIsIHRo
aXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayldIChhdXRvIGV4Y2VwdGlvbikgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMp
IHsKKyAgICAgICAgICAgIGNhbGxiYWNrKEV4Y2VwdGlvbkRhdGEgeyBJbnZhbGlkU3RhdGVFcnJv
ciB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIEFMV0FZU19M
T0coaWRlbnRpZmllciwgImNvbXBsZXRpb24iKTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShleGNlcHRpb24pKTsKKyAgICAgICAgY2FsbGJhY2soV1RGTW92ZShleGNlcHRpb24p
KTsKICAgICB9KTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5
Ojo6OmNvb3JkaW5hdGVTZXRUcmFjayhjb25zdCBTdHJpbmcmIHRyYWNrLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6Y29vcmRpbmF0
ZVNldFRyYWNrKGNvbnN0IFN0cmluZyYgdHJhY2ssIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJik+JiYgY2FsbGJhY2spCiB7CiAgICAgYXV0
byBpZGVudGlmaWVyID0gTE9HSURFTlRJRklFUjsKICAgICBBTFdBWVNfTE9HKGlkZW50aWZpZXIp
OwogCi0gICAgbV9wcml2YXRlQ29vcmRpbmF0b3ItPnNldFRyYWNrKHRyYWNrLCBbaWRlbnRpZmll
cl0gKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmJiBleGNlcHRpb24pIG11dGFibGUgewor
ICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5zZXRUcmFjayh0cmFjaywgW2lkZW50aWZpZXIsIHRo
aXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayldIChhdXRvIGV4Y2VwdGlvbikgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMp
IHsKKyAgICAgICAgICAgIGNhbGxiYWNrKEV4Y2VwdGlvbkRhdGEgeyBJbnZhbGlkU3RhdGVFcnJv
ciB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIEFMV0FZU19M
T0coaWRlbnRpZmllciwgImNvbXBsZXRpb24iKTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShleGNlcHRpb24pKTsKKyAgICAgICAgY2FsbGJhY2soV1RGTW92ZShleGNlcHRpb24p
KTsKICAgICB9KTsKIH0KIApAQCAtMTM4LDYgKzE3MCwxMiBAQCB2b2lkIFJlbW90ZU1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yUHJveHk6OnJlYWR5U3RhdGVDaGFuZ2VkKE1lZGlhU2Vzc2lvblJlYWR5
U3RhdAogICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5yZWFkeVN0YXRlQ2hhbmdlZChzdGF0ZSk7
CiB9CiAKK3ZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6Y29vcmRpbmF0
b3JTdGF0ZUNoYW5nZWQoV2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZSBzdGF0
ZSkKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworICAgIG1fcHJpdmF0ZUNvb3Jk
aW5hdG9yLT5jb29yZGluYXRvclN0YXRlQ2hhbmdlZChzdGF0ZSk7Cit9CisKIHZvaWQgUmVtb3Rl
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6c2Vla1Nlc3Npb25Ub1RpbWUoZG91YmxlIHRp
bWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCiB7CiAgICAgbV93
ZWJQYWdlUHJveHkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Np
b25Db29yZGluYXRvcjo6U2Vla1Nlc3Npb25Ub1RpbWUgeyB0aW1lIH0sIGNhbGxiYWNrKTsKQEAg
LTE0OCwyMCArMTg2LDE5IEBAIHZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94
eTo6cGxheVNlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sCiAgICAgbV93ZWJQYWdl
UHJveHkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25Db29y
ZGluYXRvcjo6UGxheVNlc3Npb24geyB9LCBjYWxsYmFjayk7CiB9CiAKLXZvaWQgUmVtb3RlTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6cGF1c2VTZXNzaW9uKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+IGNhbGxiYWNrKQordm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRv
clByb3h5OjpwYXVzZVNlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxs
YmFjaykKIHsKICAgICBtX3dlYlBhZ2VQcm94eS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
OlJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpQYXVzZVNlc3Npb24geyB9LCBjYWxsYmFj
ayk7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6c2V0U2Vz
c2lvblRyYWNrKGNvbnN0IFN0cmluZyYgdHJhY2tJZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4gY2FsbGJhY2spCit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6
OnNldFNlc3Npb25UcmFjayhjb25zdCBTdHJpbmcmIHRyYWNrSWQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCiB7CiAgICAgbV93ZWJQYWdlUHJveHkuc2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6U2V0U2Vz
c2lvblRyYWNrIHsgdHJhY2tJZCB9LCBjYWxsYmFjayk7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6Y29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQoV2ViQ29yZTo6
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZSBzdGF0ZSkKK1dURkxvZ0NoYW5uZWwmIFJlbW90
ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OmxvZ0NoYW5uZWwoKSBjb25zdAogewotICAg
IEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7Ci0gICAgbV9wcml2YXRlQ29vcmRpbmF0b3ItPmNv
b3JkaW5hdG9yU3RhdGVDaGFuZ2VkKHN0YXRlKTsKKyAgICByZXR1cm4gTG9nTWVkaWE7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTWVkaWEvUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTWVkaWEvUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eS5o
CmluZGV4IDA2OGE1ZjU2ZGQ0ZGJiNjY2NTUxYTdmNjE5ODNiOGUzNTc0ZDAyNTQuLmM5Y2Y2YWQy
NDk0MWYxM2Q1NmZlNmI3MzI0NTVlNmExNTE1N2Q1N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL01lZGlhL1JlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRpYS9SZW1vdGVNZWRpYVNlc3Npb25Db29y
ZGluYXRvclByb3h5LmgKQEAgLTYwLDE5ICs2MCwxOSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IGV4cGxpY2l0IFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHkoV2ViUGFnZVByb3h5
JiwgUmVmPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHlQcml2YXRlPiYmKTsKIAotICAgIHVz
aW5nIENvb3JkaW5hdGVDb21wbGV0aW9uSGFuZGxlciA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYpPjsKKyAgICB1c2luZyBDb29yZGluYXRlQ29t
cGxldGlvbkhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6
OkV4Y2VwdGlvbkRhdGE+JiYpPjsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgogICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikg
b3ZlcnJpZGU7CiAKICAgICAvLyBSZWNlaXZlcnMuCi0gICAgdm9pZCBqb2luKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYpPiYmKTsKKyAgICB2b2lk
IGpvaW4oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25E
YXRhPiYmKT4mJik7CiAgICAgdm9pZCBsZWF2ZSgpOwotICAgIHZvaWQgY29vcmRpbmF0ZVNlZWtU
byhkb3VibGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9u
RGF0YSYpPiYmKTsKLSAgICB2b2lkIGNvb3JkaW5hdGVQbGF5KENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYpPiYmKTsKLSAgICB2b2lkIGNvb3JkaW5h
dGVQYXVzZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRh
dGEmKT4mJik7Ci0gICAgdm9pZCBjb29yZGluYXRlU2V0VHJhY2soY29uc3QgU3RyaW5nJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJik+JiYpOwot
ICAgIHZvaWQgcG9zaXRpb25TdGF0ZUNoYW5nZWQoT3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFQb3Np
dGlvblN0YXRlPik7CisgICAgdm9pZCBjb29yZGluYXRlU2Vla1RvKGRvdWJsZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmKT4mJik7Cisg
ICAgdm9pZCBjb29yZGluYXRlUGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdl
YkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYpPiYmKTsKKyAgICB2b2lkIGNvb3JkaW5hdGVQYXVzZShD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYp
PiYmKTsKKyAgICB2b2lkIGNvb3JkaW5hdGVTZXRUcmFjayhjb25zdCBTdHJpbmcmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYpPiYmKTsK
KyAgICB2b2lkIHBvc2l0aW9uU3RhdGVDaGFuZ2VkKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6Ok1l
ZGlhUG9zaXRpb25TdGF0ZT4mKTsKICAgICB2b2lkIHJlYWR5U3RhdGVDaGFuZ2VkKFdlYkNvcmU6
Ok1lZGlhU2Vzc2lvblJlYWR5U3RhdGUpOwogICAgIHZvaWQgcGxheWJhY2tTdGF0ZUNoYW5nZWQo
V2ViQ29yZTo6TWVkaWFTZXNzaW9uUGxheWJhY2tTdGF0ZSk7CiAgICAgdm9pZCBjb29yZGluYXRv
clN0YXRlQ2hhbmdlZChXZWJDb3JlOjpNZWRpYVNlc3Npb25Db29yZGluYXRvclN0YXRlKTsKQEAg
LTgwLDggKzgwLDEzIEBAIHByaXZhdGU6CiAgICAgLy8gTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JD
bGllbnQKICAgICB2b2lkIHNlZWtTZXNzaW9uVG9UaW1lKGRvdWJsZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJikgZmluYWw7CiAgICAgdm9pZCBwbGF5U2Vzc2lvbihDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKLSAgICB2b2lkIHBhdXNlU2Vzc2lvbihDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPikgZmluYWw7Ci0gICAgdm9pZCBzZXRTZXNzaW9uVHJh
Y2soY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4pIGZpbmFsOwor
ICAgIHZvaWQgcGF1c2VTZXNzaW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZp
bmFsOworICAgIHZvaWQgc2V0U2Vzc2lvblRyYWNrKGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOworCisgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIo
KSBjb25zdCB7IHJldHVybiBtX2xvZ2dlci5nZXQoKTsgfQorICAgIGNvbnN0IHZvaWQqIGxvZ0lk
ZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KKyAgICBjb25zdCBj
aGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCB7IHJldHVybiAiUmVtb3RlTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3JQcm94eSI7IH0KKyAgICBXVEZMb2dDaGFubmVsJiBsb2dDaGFubmVsKCkgY29uc3Q7
CiAKICAgICBXZWJQYWdlUHJveHkmIG1fd2ViUGFnZVByb3h5OwogICAgIFJlZjxNZWRpYVNlc3Np
b25Db29yZGluYXRvclByb3h5UHJpdmF0ZT4gbV9wcml2YXRlQ29vcmRpbmF0b3I7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA3NThhMGYzNWFhNTk3OTM5MDdh
OTExMDU4N2UyOWVjYjk5YjFmMWY2Li5hMDU2ZDlhMmViYTY4N2EyMDVmNzVjYmU3OTk5ODI3MTVl
Y2VmMjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEw
MzgzLDE5ICsxMDM4MywxOSBAQCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBXZWJQYWdl
UHJveHk6OmNyZWF0ZU5ldHdvcmtFeHRlbnNpb25zU2FuZGJveEV4dGVucwogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoTUVESUFfU0VTU0lPTl9DT09SRElOQVRPUikKLXZvaWQgV2ViUGFnZVByb3h5Ojpj
cmVhdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcihSZWY8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQ
cm94eVByaXZhdGU+JiYgcHJpdmF0ZUNvb3JkaW5hdG9yLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYWtQdHI8UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eT4pPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0ZU1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yKFJlZjxNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5UHJpdmF0ZT4mJiBwcml2YXRlQ29v
cmRpbmF0b3IsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgQVNTRVJUKCFtX21lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHkpOwogCiAg
ICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpDcmVhdGVNZWRpYVNlc3Np
b25Db29yZGluYXRvcihwcml2YXRlQ29vcmRpbmF0b3ItPmlkZW50aWZpZXIoKSksIFt3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcHJpdmF0ZUNvb3JkaW5hdG9yID0gV1RGTW92ZShwcml2
YXRlQ29vcmRpbmF0b3IpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXShib29sIHN1Y2Nlc3MpIG11dGFibGUgewogCiAgICAgICAgIGlmICghd2Vha1RoaXMg
fHwgIXN1Y2Nlc3MpIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAogICAgICAgICB3ZWFrVGhpcy0+bV9tZWRpYVNlc3Npb25Db29yZGluYXRvclBy
b3h5ID0gUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6Y3JlYXRlKCp3ZWFrVGhp
cywgV1RGTW92ZShwcml2YXRlQ29vcmRpbmF0b3IpKTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIobWFrZVdlYWtQdHIod2Vha1RoaXMtPm1fbWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eS5n
ZXQoKSkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKICAgICB9KTsKIH0KICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBlYTliMGMxNGEx
ZGM2ZGE4ODc0NGM2YWYwNjM3ZmU5NDEyNGYxM2ZjLi40Y2FmZTdjMWI3OWVjY2FiMzhmZTA5YmE5
OThkYzQyYWZiMGI3MzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApA
QCAtMTg4OCw3ICsxODg4LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoTUVESUFf
U0VTU0lPTl9DT09SRElOQVRPUikKLSAgICB2b2lkIGNyZWF0ZU1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yKFJlZjxNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5UHJpdmF0ZT4mJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXZWFrUHRyPFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk+
KT4mJik7CisgICAgdm9pZCBjcmVhdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcihSZWY8TWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3JQcm94eVByaXZhdGU+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGMyYTVmNTA5NjA2Mjcx
ZjQzMzE3YmE1YmY4MjZiMmFmZWFjZTFkOTIuLmFmMzcxN2YzOTgyOWU5NjU2MzdhMzMzZWM1OWE3
MjAyMzBjM2M2NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTA1LDkgKzEwNSw5IEBACiAJCTA3Mjk3RkEzMUMxODZBREIwMDNGMDcz
NSAvKiBXS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcyOTdGQTExQzE4NkFEQjAwM0YwNzM1IC8qIFdLVXNl
ck1lZGlhUGVybWlzc2lvbkNoZWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMDc0ODc5QjkyMzczQTkwOTAwRjU2NzhFIC8qIEFwcEtpdFNvZnRM
aW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzQ4
NzlCNzIzNzNBOTA5MDBGNTY3OEUgLyogQXBwS2l0U29mdExpbmsuaCAqLzsgfTsKIAkJMDc0RTc1
RkUxREYyMjExOTAwRDMxOEVDIC8qIFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzRFNzVGQjFERjFGRDEzMDBE
MzE4RUMgLyogVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuaCAqLzsgfTsKKwkJMDc1QTlDRjMyNjE2
OUJBQjAwNkRGQTNBIC8qIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHlQcml2YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzdCQTU3MDI2MEU4
RjYzMDA3MkYxOUYgLyogTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eVByaXZhdGUuaCAqLzsg
fTsKIAkJMDc2RTg4NEUxQTEzQ0FERjAwNUU5MEZDIC8qIEFQSUNvbnRleHRNZW51Q2xpZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzZFODg0RDFB
MTNDQURGMDA1RTkwRkMgLyogQVBJQ29udGV4dE1lbnVDbGllbnQuaCAqLzsgfTsKIAkJMDc3Mjgx
MUQyMTIzNEZGNjAwQzhFRjJFIC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE0MTBGNDMx
OUFGN0IyNzAwMkVCQUI1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oICov
OyB9OwotCQkwNzdCQTU2RTI2MEU2RDFDMDA3MkYxOUYgLyogUmVtb3RlTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDczNkI3NTUyNjBEMDNBMDAwRTA2OTk0IC8qIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yLmNwcCAqLzsgfTsKIAkJMDc5MjMxNDgyMzlDQkNCODAwOTU5OEUyIC8qIFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzkyMzE0MjIzOUNCQ0I1MDA5NTk4RTIgLyogUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLzsgfTsKIAkJMDc5
MjMxNEIyMzlDQkNCODAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3OTIzMTQ1MjM5Q0JDQjcwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTA3OTIzMTRDMjM5Q0JDQjgwMDk1
OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzkyMzE0NjIzOUNCQ0I3MDA5
NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oICovOyB9OwpA
QCAtMTE5MDYsNiArMTE5MDYsNyBAQAogCQkJCTA3RTE5RUZEMjNENDAxRjEwMDk0RkZCNCAvKiBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGVNZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUExQjREQ0UxMjVBNzkyM0MwMDdEMTc4QyAvKiBNZWRpYVNhbXBsZUJ5dGVSYW5nZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTE1Nzk5QkQyNTg0NDMzMjAwNTI4MjM2IC8qIE1lZGlhU2FtcGxl
Q3Vyc29yLmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzVBOUNGMzI2MTY5QkFCMDA2REZBM0EgLyog
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUExNTc5OUI3MjU4NDQzMzIwMDUyODIzNiAvKiBNZWRpYVRyYWNrUmVhZGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MTkzM0RFRjE5NjVFQjMxMDA4QUMzRUEgLyogTWVudVV0aWxpdGllcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOUI0NzkwOEQyNTMxNEQ4MzAwRUMxMUFCIC8qIE1lc3NhZ2VBcmd1
bWVudERlc2NyaXB0aW9ucy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMzk4MSw3ICsxMzk4Miw2IEBA
CiAJCQkJMDcwMTc4OUUyM0JFOUNGQzAwNUYwRkFBIC8qIFJlbW90ZU1lZGlhUGxheWVyTUlNRVR5
cGVDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzFCQzU4RjIzQ0UxRUFBMDA2ODBEN0Mg
LyogUmVtb3RlTWVkaWFQbGF5ZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxRDRENzM3MDIzQTlFNTQ3MDA3MTdBMjUgLyogUmVtb3RlTWVkaWFSZXNvdXJjZU1h
bmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMDc3QkE1NkUyNjBF
NkQxQzAwNzJGMTlGIC8qIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTFERDJBNjYzMjU2MTI0NkYwMEZGN0I2RiAvKiBSZW1vdGVNZWRpYVNvdXJj
ZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQzEzMzg1MTg1
OTBDNDYwMEYzRUMwNSAvKiBSZW1vdGVPYmplY3RSZWdpc3RyeU1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlDRDgyNTJFMjI1RDQ5MTkxMDA4NjJGRDggLyogUmVtb3RlUmVt
b3RlQ29tbWFuZExpc3RlbmVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU2Vzc2lvbi9SZW1vdGVNZWRp
YVNlc3Npb25Db29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFT
ZXNzaW9uL1JlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmNwcAppbmRleCAwY2MzZjgxY2Yx
ZjRhNmI1OWM2MzY4N2M2YjIyOTdlZjVkMmI0ODQ1Li4zYjlmNTEzNjNlYmU0YjkzZTRkNDZkN2Fm
Zjc2MzE2MTliMTI5ZjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVk
aWFTZXNzaW9uL1JlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTZXNzaW9uL1JlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yLmNwcApAQCAtNzIsMTcgKzcyLDE3IEBAIHZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3I6OmpvaW4oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlCiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhF
eGNlcHRpb24geyBleGNlcHRpb24tPmNvZGUsIFdURk1vdmUoZXhjZXB0aW9uLT5tZXNzYWdlKSB9
KTsKKyAgICAgICAgICAgIGNhbGxiYWNrKGV4Y2VwdGlvbi0+dG9FeGNlcHRpb24oKSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBjYWxsYmFjayh7IH0pOwotICAg
IH0sIDApOworICAgIH0pOwogfQogCiB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
OjpsZWF2ZSgpCiB7Ci0gICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yUHJveHk6OkxlYXZlIHsgfSwgMCk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OkxlYXZlIHsgfSk7CiB9CiAK
IHZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnNlZWtUbyhkb3VibGUgdGltZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb24+JiYpPiYm
IGNhbGxiYWNrKQpAQCAtOTUsMTIgKzk1LDEyIEBAIHZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3I6OnNlZWtUbyhkb3VibGUgdGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPCiAg
ICAgICAgIH0KIAogICAgICAgICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgICAgICBjYWxsYmFj
ayhFeGNlcHRpb24geyBleGNlcHRpb24tPmNvZGUsIFdURk1vdmUoZXhjZXB0aW9uLT5tZXNzYWdl
KSB9KTsKKyAgICAgICAgICAgIGNhbGxiYWNrKGV4Y2VwdGlvbi0+dG9FeGNlcHRpb24oKSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBjYWxsYmFjayh7IH0pOwot
ICAgIH0sIDApOworICAgIH0pOwogfQogCiB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yOjpwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0
aW9uPiYmKT4mJiBjYWxsYmFjaykKQEAgLTExMywxMiArMTEzLDEyIEBAIHZvaWQgUmVtb3RlTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3I6OnBsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25h
bDxXZWJDb3JlCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAg
ICAgICBjYWxsYmFjayhFeGNlcHRpb24geyBleGNlcHRpb24tPmNvZGUsIFdURk1vdmUoZXhjZXB0
aW9uLT5tZXNzYWdlKSB9KTsKKyAgICAgICAgICAgIGNhbGxiYWNrKGV4Y2VwdGlvbi0+dG9FeGNl
cHRpb24oKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBjYWxs
YmFjayh7IH0pOwotICAgIH0sIDApOworICAgIH0pOwogfQogCiB2b2lkIFJlbW90ZU1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yOjpwYXVzZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdl
YkNvcmU6OkV4Y2VwdGlvbj4mJik+JiYgY2FsbGJhY2spCkBAIC0xMzEsMTIgKzEzMSwxMiBAQCB2
b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpwYXVzZShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKE9wdGlvbmFsPFdlYkNvcgogICAgICAgICB9CiAKICAgICAgICAgaWYgKGV4Y2VwdGlv
bikgewotICAgICAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uIHsgZXhjZXB0aW9uLT5jb2RlLCBX
VEZNb3ZlKGV4Y2VwdGlvbi0+bWVzc2FnZSkgfSk7CisgICAgICAgICAgICBjYWxsYmFjayhleGNl
cHRpb24tPnRvRXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
ICAgICAgICAgY2FsbGJhY2soeyB9KTsKLSAgICB9LCAwKTsKKyAgICB9KTsKIH0KIAogdm9pZCBS
ZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6c2V0VHJhY2soY29uc3QgU3RyaW5nJiB0cmFj
a0lkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6RXhj
ZXB0aW9uPiYmKT4mJiBjYWxsYmFjaykKQEAgLTE0OSwzNiArMTQ5LDM2IEBAIHZvaWQgUmVtb3Rl
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnNldFRyYWNrKGNvbnN0IFN0cmluZyYgdHJhY2tJZGVu
dGlmaWVyLCBDb21wCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAg
ICAgICAgICBjYWxsYmFjayhFeGNlcHRpb24geyBleGNlcHRpb24tPmNvZGUsIFdURk1vdmUoZXhj
ZXB0aW9uLT5tZXNzYWdlKSB9KTsKKyAgICAgICAgICAgIGNhbGxiYWNrKGV4Y2VwdGlvbi0+dG9F
eGNlcHRpb24oKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBj
YWxsYmFjayh7IH0pOwotICAgIH0sIDApOworICAgIH0pOwogfQogCiB2b2lkIFJlbW90ZU1lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yOjpwb3NpdGlvblN0YXRlQ2hhbmdlZChjb25zdCBPcHRpb25hbDxX
ZWJDb3JlOjpNZWRpYVBvc2l0aW9uU3RhdGU+JiBzdGF0ZSkKIHsKICAgICBBTFdBWVNfTE9HX0lG
X1BPU1NJQkxFKExPR0lERU5USUZJRVIpOwotICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5OjpQb3NpdGlvblN0YXRlQ2hhbmdlZCB7IHN0
YXRlIH0sIDApOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25D
b29yZGluYXRvclByb3h5OjpQb3NpdGlvblN0YXRlQ2hhbmdlZCB7IHN0YXRlIH0pOwogfQogCiB2
b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpyZWFkeVN0YXRlQ2hhbmdlZChXZWJD
b3JlOjpNZWRpYVNlc3Npb25SZWFkeVN0YXRlIHN0YXRlKQogewogICAgIEFMV0FZU19MT0dfSUZf
UE9TU0lCTEUoTE9HSURFTlRJRklFUiwgc3RhdGUpOwotICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5OjpSZWFkeVN0YXRlQ2hhbmdlZCB7
IHN0YXRlIH0sIDApOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Np
b25Db29yZGluYXRvclByb3h5OjpSZWFkeVN0YXRlQ2hhbmdlZCB7IHN0YXRlIH0pOwogfQogCiB2
b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpwbGF5YmFja1N0YXRlQ2hhbmdlZChX
ZWJDb3JlOjpNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRlIHN0YXRlKQogewogICAgIEFMV0FZU19M
T0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgc3RhdGUpOwotICAgIG1fcGFnZS5zZW5kKE1l
c3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5OjpQbGF5YmFja1N0YXRl
Q2hhbmdlZCB7IHN0YXRlIH0sIDApOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVN
ZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5OjpQbGF5YmFja1N0YXRlQ2hhbmdlZCB7IHN0YXRl
IH0pOwogfQogCiB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpjb29yZGluYXRv
clN0YXRlQ2hhbmdlZChXZWJDb3JlOjpNZWRpYVNlc3Npb25Db29yZGluYXRvclN0YXRlIHN0YXRl
KQogewogICAgIEFMV0FZU19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgc3RhdGUpOwot
ICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclBy
b3h5OjpDb29yZGluYXRvclN0YXRlQ2hhbmdlZCB7IHN0YXRlIH0sIDApOworICAgIG1fcGFnZS5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5OjpDb29yZGlu
YXRvclN0YXRlQ2hhbmdlZCB7IHN0YXRlIH0pOwogfQogCiB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yOjpzZWVrU2Vzc2lvblRvVGltZShkb3VibGUgdGltZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5OThhY2YzZmZmMDRmODY4MDA2M2Fi
YzcwNzQxN2YwNDc0NzFlZjRiLi42ZTJhMDdlNTk4MjRkMjhlOTM3MmYwY2MwNDYzZjVkYjkzMjgy
YmM3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNTIgQEAKKzIwMjEtMDQtMDIgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBh
cHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXSBBZGQgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3Ig
QVBJIHRlc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyNDE0MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzYxNzExNzM+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvVGVzdFdl
YktpdEFQSS54Y3NjaGVtZToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9N
ZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3QubW06IEFkZGVkLgorICAgICAgICAoLVtfV0tNb2Nr
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IgbGFzdFN0YXRlQ2hhbmdlXSk6CisgICAgICAgICgtW19X
S01vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvciBsYXN0TWV0aG9kQ2FsbGVkXSk6CisgICAgICAg
ICgtW19XS01vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvciBpZGVudGlmaWVyXSk6CisgICAgICAg
ICgtW19XS01vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvciBqb2luV2l0aENvbXBsZXRpb246XSk6
CisgICAgICAgICgtW19XS01vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvciBsZWF2ZV0pOgorICAg
ICAgICAoLVtfV0tNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3Igc2Vla1RvOndpdGhDb21wbGV0
aW9uOl0pOgorICAgICAgICAoLVtfV0tNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IgcGxheVdp
dGhDb21wbGV0aW9uOl0pOgorICAgICAgICAoLVtfV0tNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3IgcGF1c2VXaXRoQ29tcGxldGlvbjpdKToKKyAgICAgICAgKC1bX1dLTW9ja01lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yIHNldFRyYWNrOndpdGhDb21wbGV0aW9uOl0pOgorICAgICAgICAoLVtfV0tN
b2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IgcG9zaXRpb25TdGF0ZUNoYW5nZWQ6XSk6CisgICAg
ICAgICgtW19XS01vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvciByZWFkeVN0YXRlQ2hhbmdlZDpd
KToKKyAgICAgICAgKC1bX1dLTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yIHBsYXliYWNrU3Rh
dGVDaGFuZ2VkOl0pOgorICAgICAgICAoLVtfV0tNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3Ig
Y29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQ6XSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRp
YVNlc3Npb25Db29yZGluYXRvclRlc3Q6OmNyZWF0ZUNvb3JkaW5hdG9yKToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdDo6d2ViVmlldyBjb25zdCk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3Q6OmNv
b3JkaW5hdG9yIGNvbnN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yVGVzdDo6bG9hZFBhZ2VBbmRCZWNvbWVSZWFkeSk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpNZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3Q6OnJ1blNjcmlwdFdpdGhVc2VyR2Vz
dHVyZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25Db29yZGluYXRvclRl
c3Q6OnBsYXkpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JUZXN0OjpwYXVzZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25Db29y
ZGluYXRvclRlc3Q6Omxpc3RlbkZvckV2ZW50TWVzc2FnZXMpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JUZXN0OjpldmVudExpc3RlbmVyV2FzQ2FsbGVk
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdDo6
Y2xlYXJFdmVudExpc3RlbmVyU3RhdGUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3JUZXN0OjpleGVjdXRlVW50aWwpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JUZXN0Ojp3YWl0Rm9yRXZlbnRMaXN0ZW5lclRv
QmVDYWxsZWQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JUZXN0OjpsaXN0ZW5Gb3JNZXNzYWdlc1Bvc3RlZCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpNZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3Q6OmNsZWFyTWVzc2FnZXNQb3N0ZWQpOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JUZXN0OjpsaXN0ZW5G
b3JTZXNzaW9uSGFuZGxlck1lc3NhZ2VzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yVGVzdDo6c2Vzc2lvbkhhbmRsZXJXYXNDYWxsZWQpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JUZXN0Ojp3YWl0Rm9yU2Vz
c2lvbkhhbmRsZXJUb0JlQ2FsbGVkKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yVGVzdDo6bGlzdGVuRm9yUHJvbWlzZU1lc3NhZ2VzKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdDo6Y2xlYXJQcm9taXNl
TWVzc2FnZXMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JUZXN0Ojpwcm9taXNlV2FzUmVzb2x2ZWQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3JUZXN0Ojpwcm9taXNlV2FzUmVqZWN0ZWQpOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JUZXN0Ojp3YWl0Rm9yUHJvbWlz
ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvbWVkaWEtcmVtb3RlLmh0bWw6CisKIDIwMjEtMDMtMzEg
IEJKIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgU3R5bGUgY2hlY2tlciBzaG91
bGQgd2FybiBhYm91dCB1c2Ugb2YgZnV0dXJlIE9TIHZlcnNpb25zIGluIFdLX0FQSV9BVkFJTEFC
TEUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDIzODhlZjhlZmM5ZGFiZDk1NGQyMmQ5MTlm
M2Y3NDQwNWIwMmYzOC4uODI0MWZmYjMyODMxMmUyMzA4Y2FhNzJhMzczMWRiYmM1OGU5Mjc5MCAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU0LDYgKzU0LDcgQEAKIAkJMDc0OTk0NDIxRUE1
MDM0QjAwMERBNDRGIC8qIG9uZGV2aWNlY2hhbmdlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE0MTBGNEQxOUFGN0JFRjAwMkVCQUI2
IC8qIG9uZGV2aWNlY2hhbmdlLmh0bWwgKi87IH07CiAJCTA3NDk5NDQyMUVBNTAzNEIwMDBEQTQ1
RSAvKiBnZXRVc2VyTWVkaWFBdWRpb1ZpZGVvQ2FwdHVyZS5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBNDEwRjREMTlBRjdCRUYwMDJF
QkFDNSAvKiBnZXRVc2VyTWVkaWFBdWRpb1ZpZGVvQ2FwdHVyZS5odG1sICovOyB9OwogCQkwNzQ5
OTQ1MjFFQTUwMzRCMDAwREE0NEUgLyogZ2V0VXNlck1lZGlhMi5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQkFGNEUyMjVBQzlEQjgw
MEQ4MkYzMiAvKiBnZXRVc2VyTWVkaWEyLmh0bWwgKi87IH07CisJCTA3NUE5Q0Y1MjYxNzcyMTgw
MDZERkEzQSAvKiBNZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3QubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzVBOUNGNDI2MTc3MjE3MDA2REZBM0Eg
LyogTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JUZXN0Lm1tICovOyB9OwogCQkwNzZFNTA3RjFGNDUx
M0Q2MDA2RTlGNUEgLyogTG9nZ2luZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwNzZFNTA3RTFGNDUwMzFFMDA2RTlGNUEgLyogTG9nZ2luZy5jcHAg
Ki87IH07CiAJCTA3N0E1QUYzMjMwNjM4QTYwMEE3MTA1QyAvKiBBY2Nlc3NpYmlsaXR5VGVzdFBs
dWdpbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3
NDY2NDU4MjJGRjYzMDUwMEUzNDUxQSAvKiBBY2Nlc3NpYmlsaXR5VGVzdFBsdWdpbi5tbSAqLzsg
fTsKIAkJMDc5NDc0MEQyNUNBMEJERTAwQzU5N0VCIC8qIE1lZGlhU2Vzc2lvbi5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3OTQ3NDBDMjVDQTBCREUw
MEM1OTdFQiAvKiBNZWRpYVNlc3Npb24ubW0gKi87IH07CkBAIC0xNzU2LDYgKzE3NTcsNyBAQAog
CQkwNzQ2NjQ1ODIyRkY2MzA1MDBFMzQ1MUEgLyogQWNjZXNzaWJpbGl0eVRlc3RQbHVnaW4ubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5VGVzdFBsdWdpbi5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc0OTJCMzkxREY4QURBNDAwNjMzREUxIC8qIGVudW1l
cmF0ZU1lZGlhRGV2aWNlcy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gZW51bWVy
YXRlTWVkaWFEZXZpY2VzLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NDky
QjNBMURGOEFFMkQwMDYzM0RFMSAvKiBFbnVtZXJhdGVNZWRpYURldmljZXMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRW51bWVyYXRlTWVkaWFEZXZpY2VzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc1QTlDRjQyNjE3NzIxNzAwNkRGQTNBIC8q
IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdC5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2NkREMUYxQTVBRDUyMDAwMjNFM0JCIC8qIFBlbmRpbmdB
UElSZXF1ZXN0VVJMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBl
bmRpbmdBUElSZXF1ZXN0VVJMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2
RTUwN0UxRjQ1MDMxRTAwNkU5RjVBIC8qIExvZ2dpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTG9nZ2luZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA3OTQ3NDBDMjVDQTBCREUwMEM1OTdFQiAvKiBNZWRpYVNlc3Npb24ubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZWRpYVNlc3Npb24ubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MjY3LDYgKzQyNjksNyBAQAogCQkJCTMzREM4OTEwMTQx
OTUzQTMwMDc0N0VGNyAvKiBMb2FkQ2FuY2VsZWROb1NlcnZlclJlZGlyZWN0Q2FsbGJhY2suY3Bw
ICovLAogCQkJCTMzREM4OTEzMTQxOTU3OUYwMDc0N0VGNyAvKiBMb2FkQ2FuY2VsZWROb1NlcnZl
clJlZGlyZWN0Q2FsbGJhY2tfQnVuZGxlLmNwcCAqLywKIAkJCQk4QUEyOEMxOTE2RDJGQTdCMDAy
RkY0REIgLyogTG9hZFBhZ2VPbkNyYXNoLmNwcCAqLywKKwkJCQkwNzVBOUNGNDI2MTc3MjE3MDA2
REZBM0EgLyogTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JUZXN0Lm1tICovLAogCQkJCUNEQzk0NDJD
MUVGMUZDMDgwMDU5QzNDNCAvKiBNZWRpYVN0cmVhbVRyYWNrRGV0YWNoZWQubW0gKi8sCiAJCQkJ
N0E1NjIzMTAxQUQ1QUYzRTAwOTZCOTIwIC8qIE1lbnVUeXBlc0Zvck1vdXNlRXZlbnRzLmNwcCAq
LywKIAkJCQk1MUNCNEFENzFCM0EwNzlDMDBDMUIxQzYgLyogTW9kYWxBbGVydHNTUEkuY3BwICov
LApAQCAtNTQ4OCw2ICs1NDkxLDcgQEAKIAkJCQkwN0VGNzZENTI1NDBGQzA2MDA1M0VENTMgLyog
TWVkaWFNdXRlZFN0YXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBMzE1OTgxRUQ1MzY1MTAw
OUY2MEQzIC8qIE1lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvbi5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTA3OTQ3NDBEMjVDQTBCREUwMEM1OTdFQiAvKiBNZWRpYVNlc3Npb24ubW0gaW4gU291cmNl
cyAqLywKKwkJCQkwNzVBOUNGNTI2MTc3MjE4MDA2REZBM0EgLyogTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3JUZXN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RDOTQ0MkUxRUYxRkMwODAwNTlDM0M0
IC8qIE1lZGlhU3RyZWFtVHJhY2tEZXRhY2hlZC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxQkU5
RTY2MjM3NjA4OUYwMEI0RTExNyAvKiBNZWRpYVR5cGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk3
Q0NFN0VDNTFBNDExQTdFMDA0NDdDNEMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3Vy
Y2VMb2FkRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9U
ZXN0V2ViS2l0QVBJLnhjc2NoZW1lIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1Rlc3RXZWJLaXRBUEkueGNzY2hlbWUK
aW5kZXggNWY1ZWMyZTRhZWMzOWVkYzM5ZmM3Zjg1YzdkOTY3ZTVjNDk0Njk0ZS4uODY4OWUwNDEz
ODdlOWNiMGJiYjEwNjljYTFkZjM3MmY2OTA0ODEyYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1Rl
c3RXZWJLaXRBUEkueGNzY2hlbWUKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1Rlc3RXZWJLaXRBUEkueGNzY2hl
bWUKQEAgLTUwLDYgKzUwLDEyIEBACiAgICAgICAgICAgICBSZWZlcmVuY2VkQ29udGFpbmVyID0g
ImNvbnRhaW5lcjpUZXN0V2ViS2l0QVBJLnhjb2RlcHJvaiI+CiAgICAgICAgICA8L0J1aWxkYWJs
ZVJlZmVyZW5jZT4KICAgICAgIDwvQnVpbGRhYmxlUHJvZHVjdFJ1bm5hYmxlPgorICAgICAgPENv
bW1hbmRMaW5lQXJndW1lbnRzPgorICAgICAgICAgPENvbW1hbmRMaW5lQXJndW1lbnQKKyAgICAg
ICAgICAgIGFyZ3VtZW50ID0gIi0tZ3Rlc3RfZmlsdGVyPU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
VGVzdC4qIgorICAgICAgICAgICAgaXNFbmFibGVkID0gIllFUyI+CisgICAgICAgICA8L0NvbW1h
bmRMaW5lQXJndW1lbnQ+CisgICAgICA8L0NvbW1hbmRMaW5lQXJndW1lbnRzPgogICAgPC9MYXVu
Y2hBY3Rpb24+CiAgICA8UHJvZmlsZUFjdGlvbgogICAgICAgYnVpbGRDb25maWd1cmF0aW9uID0g
IlJlbGVhc2UiCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9N
ZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3QubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdC9NZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3QubW0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjU2Yjgz
M2E3ZDNiNjQyYTU4ZDBmZTVjMTllODVlYTY1MGVmMTFjNQotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVz
dC5tbQpAQCAtMCwwICsxLDM4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgor
CisjaWYgRU5BQkxFKE1FRElBX1NFU1NJT05fQ09PUkRJTkFUT1IpCisKKyNpbXBvcnQgIlBsYXRm
b3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0IDxXZWJL
aXQvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29s
UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KKyNpbXBvcnQg
PFdlYktpdC9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oPgorI2ltcG9ydCA8V2ViS2l0L19X
S0V4cGVyaW1lbnRhbEZlYXR1cmUuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgorI2ltcG9ydCA8d3RmL0hh
c2hTZXQuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9SdW5Mb29w
Lmg+CisjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmlu
Z0hhc2guaD4KKworQGludGVyZmFjZSBfV0tNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IgOiBO
U09iamVjdCA8X1dLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I+CitAcHJvcGVydHkgKG5vbmF0b21p
YywgcmVhZG9ubHkpIE5TU3RyaW5nICpsYXN0U3RhdGVDaGFuZ2U7CitAcHJvcGVydHkgKG5vbmF0
b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nICpsYXN0TWV0aG9kQ2FsbGVkOworQHByb3BlcnR5IChu
b25hdG9taWMpIEJPT0wgZmFpbHNDb21tYW5kczsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIF9X
S01vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvciB7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBf
bGFzdFN0YXRlQ2hhbmdlOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gX2xhc3RNZXRob2RDYWxs
ZWQ7Cit9CisKK0BzeW50aGVzaXplIGRlbGVnYXRlOworCistIChOU1N0cmluZyAqKWxhc3RTdGF0
ZUNoYW5nZQoreworICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKF9sYXN0U3RhdGVDaGFuZ2UsIEAi
IikuZ2V0KCk7Cit9CisKKy0gKE5TU3RyaW5nICopbGFzdE1ldGhvZENhbGxlZAoreworICAgIHJl
dHVybiBzdGQ6OmV4Y2hhbmdlKF9sYXN0TWV0aG9kQ2FsbGVkLCBAIiIpLmdldCgpOworfQorCist
IChOU1N0cmluZyAqKWlkZW50aWZpZXIKK3sKKyAgICByZXR1cm4gQCJUZXN0Q29vcmRpbmF0b3Ii
OworfQorCistICh2b2lkKWpvaW5XaXRoQ29tcGxldGlvbjoodm9pZCheIF9Ob25udWxsKShCT09M
KSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9sYXN0TWV0aG9kQ2FsbGVkID0gQCJqb2luIjsK
KyAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeKCkgeworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcighX2ZhaWxzQ29tbWFuZHMpOworICAgIH0pOworfQorCist
ICh2b2lkKWxlYXZlCit7CisgICAgX2xhc3RNZXRob2RDYWxsZWQgPSBAImxlYXZlIjsKK30KKwor
LSAodm9pZClzZWVrVG86KGRvdWJsZSl0aW1lIHdpdGhDb21wbGV0aW9uOih2b2lkKF4gX05vbm51
bGwpKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX2xhc3RNZXRob2RDYWxsZWQgPSBA
InNlZWtUbyI7CisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
XigpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoIV9mYWlsc0NvbW1hbmRzKTsKKyAgICB9
KTsKK30KKworLSAodm9pZClwbGF5V2l0aENvbXBsZXRpb246KHZvaWQoXiBfTm9ubnVsbCkoQk9P
TCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBfbGFzdE1ldGhvZENhbGxlZCA9IEAicGxheSI7
CisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXigpIHsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoIV9mYWlsc0NvbW1hbmRzKTsKKyAgICB9KTsKK30KKwor
LSAodm9pZClwYXVzZVdpdGhDb21wbGV0aW9uOih2b2lkKF4gX05vbm51bGwpKEJPT0wpKWNvbXBs
ZXRpb25IYW5kbGVyCit7CisgICAgX2xhc3RNZXRob2RDYWxsZWQgPSBAInBhdXNlIjsKKyAgICBk
aXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeKCkgeworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcighX2ZhaWxzQ29tbWFuZHMpOworICAgIH0pOworfQorCistICh2b2lk
KXNldFRyYWNrOihOU1N0cmluZyopdHJhY2tJZGVudGlmaWVyIHdpdGhDb21wbGV0aW9uOih2b2lk
KF4gX05vbm51bGwpKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX2xhc3RNZXRob2RD
YWxsZWQgPSBAInNldFRyYWNrIjsKKyAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBeKCkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcighX2ZhaWxzQ29tbWFu
ZHMpOworICAgIH0pOworfQorCistICh2b2lkKXBvc2l0aW9uU3RhdGVDaGFuZ2VkOihudWxsYWJs
ZSBfV0tNZWRpYVBvc2l0aW9uU3RhdGUgKilzdGF0ZQoreworICAgIF9sYXN0U3RhdGVDaGFuZ2Ug
PSBAInBvc2l0aW9uU3RhdGVDaGFuZ2VkIjsKK30KKworLSAodm9pZClyZWFkeVN0YXRlQ2hhbmdl
ZDooX1dLTWVkaWFTZXNzaW9uUmVhZHlTdGF0ZSlzdGF0ZQoreworICAgIF9sYXN0U3RhdGVDaGFu
Z2UgPSBAInJlYWR5U3RhdGVDaGFuZ2VkIjsKK30KKworLSAodm9pZClwbGF5YmFja1N0YXRlQ2hh
bmdlZDooX1dLTWVkaWFTZXNzaW9uUGxheWJhY2tTdGF0ZSlzdGF0ZQoreworICAgIF9sYXN0U3Rh
dGVDaGFuZ2UgPSBAInBsYXliYWNrU3RhdGVDaGFuZ2VkIjsKK30KKworLSAodm9pZCljb29yZGlu
YXRvclN0YXRlQ2hhbmdlZDooX1dLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZSlzdGF0ZQor
eworICAgIF9sYXN0U3RhdGVDaGFuZ2UgPSBAImNvb3JkaW5hdG9yU3RhdGVDaGFuZ2VkIjsKK30K
K0BlbmQKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitjbGFzcyBNZWRpYVNlc3Npb25D
b29yZGluYXRvclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CitwdWJsaWM6CisgICAgdm9p
ZCBTZXRVcCgpIGZpbmFsCisgICAgeworICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgICAgICBhdXRv
IHByZWZlcmVuY2VzID0gW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdOworCisgICAgICAgIGZv
ciAoX1dLRXhwZXJpbWVudGFsRmVhdHVyZSAqZmVhdHVyZSBpbiBbV0tQcmVmZXJlbmNlcyBfZXhw
ZXJpbWVudGFsRmVhdHVyZXNdKSB7CisgICAgICAgICAgICBpZiAoW2ZlYXR1cmUua2V5IGlzRXF1
YWxUb1N0cmluZzpAIk1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yRW5hYmxlZCJdKQorICAgICAgICAg
ICAgICAgIFtwcmVmZXJlbmNlcyBfc2V0RW5hYmxlZDpZRVMgZm9yRmVhdHVyZTpmZWF0dXJlXTsK
KyAgICAgICAgICAgIGlmIChbZmVhdHVyZS5rZXkgaXNFcXVhbFRvU3RyaW5nOkAiTWVkaWFTZXNz
aW9uRW5hYmxlZCJdKQorICAgICAgICAgICAgICAgIFtwcmVmZXJlbmNlcyBfc2V0RW5hYmxlZDpZ
RVMgZm9yRmVhdHVyZTpmZWF0dXJlXTsKKyAgICAgICAgfQorCisgICAgICAgIF93ZWJWaWV3ID0g
YWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgw
LCAwLCA0MDAsIDQwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAg
fQorCisgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCisgICAgeworICAgICAgICBSZXRhaW5Q
dHI8TlNNdXRhYmxlQXJyYXk+IGFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0XSk7CisgICAgICAgIGZvciAoYXV0byYgc2Vzc2lvbk1lc3NhZ2UgOiBjb3B5VG9WZWN0
b3IoX3Nlc3Npb25NZXNzYWdlc1Bvc3RlZCkpCisgICAgICAgICAgICBbYXJyYXkgYWRkT2JqZWN0
OnNlc3Npb25NZXNzYWdlXTsKKyAgICAgICAgW193ZWJWaWV3IGNsZWFyTWVzc2FnZUhhbmRsZXJz
OmFycmF5LmdldCgpXTsKKworICAgICAgICBbYXJyYXkgcmVtb3ZlQWxsT2JqZWN0c107CisgICAg
ICAgIGZvciAoYXV0byYgZXZlbnRMaXN0ZW5lciA6IGNvcHlUb1ZlY3RvcihfZXZlbnRMaXN0ZW5l
cnNDYWxsZWQpKQorICAgICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpldmVudExpc3RlbmVyXTsK
KyAgICAgICAgW193ZWJWaWV3IGNsZWFyTWVzc2FnZUhhbmRsZXJzOmFycmF5LmdldCgpXTsKKyAg
ICB9CisKKyAgICB2b2lkIGNyZWF0ZUNvb3JkaW5hdG9yKCkKKyAgICB7CisgICAgICAgIF9jb29y
ZGluYXRvciA9IFtbX1dLTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yIGFsbG9jXSBpbml0XTsK
KworICAgICAgICBfX2Jsb2NrIGJvb2wgcmVzdWx0ID0gZmFsc2U7CisgICAgICAgIF9fYmxvY2sg
Ym9vbCBkb25lID0gZmFsc2U7CisgICAgICAgIFt3ZWJWaWV3KCkgX2NyZWF0ZU1lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yRm9yVGVzdGluZzooaWQgPF9XS01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yPilf
Y29vcmRpbmF0b3IuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihCT09MIHN1Y2Nlc3MpIHsKKyAg
ICAgICAgICAgIHJlc3VsdCA9IHN1Y2Nlc3M7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAg
ICAgICAgfV07CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisKKyAg
ICAgICAgRVhQRUNUX1RSVUUocmVzdWx0KTsKKyAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAg
ICAgICBOU0xvZyhAIi1bX2NyZWF0ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yRm9yVGVzdGluZzpj
b21wbGV0aW9uSGFuZGxlcjpdIGZhaWxlZCEiKTsKKworICAgICAgICB3YWl0Rm9yRXZlbnRMaXN0
ZW5lclRvQmVDYWxsZWQoImNvb3JkaW5hdG9yY2hhbmdlIl9zKTsKKyAgICAgICAgQVNTRVJUX1RS
VUUoZXZlbnRMaXN0ZW5lcldhc0NhbGxlZCgiY29vcmRpbmF0b3JjaGFuZ2UiX3MpKTsKKyAgICB9
CisKKyAgICBUZXN0V0tXZWJWaWV3KiB3ZWJWaWV3KCkgY29uc3QgeyByZXR1cm4gX3dlYlZpZXcu
Z2V0KCk7IH0KKyAgICBfV0tNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IqIGNvb3JkaW5hdG9y
KCkgY29uc3QgeyByZXR1cm4gX2Nvb3JkaW5hdG9yLmdldCgpOyB9CisKKyAgICB2b2lkIGxvYWRQ
YWdlQW5kQmVjb21lUmVhZHkoY29uc3QgU3RyaW5nJiBwYWdlTmFtZSkKKyAgICB7CisgICAgICAg
IFtfd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6cGFnZU5hbWVdOworCisg
ICAgICAgIGJvb2wgY2FucGxheXRocm91Z2ggPSBmYWxzZTsKKyAgICAgICAgW3dlYlZpZXcoKSBw
ZXJmb3JtQWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOkAiY2FucGxheXRocm91Z2ggZXZlbnQiIGFjdGlv
bjpbJl0geworICAgICAgICAgICAgY2FucGxheXRocm91Z2ggPSB0cnVlOworICAgICAgICB9XTsK
KyAgICAgICAgcnVuU2NyaXB0V2l0aFVzZXJHZXN0dXJlKCJsb2FkKCkiKTsKKyAgICAgICAgVXRp
bDo6cnVuKCZjYW5wbGF5dGhyb3VnaCk7CisgICAgfQorCisgICAgdm9pZCBydW5TY3JpcHRXaXRo
VXNlckdlc3R1cmUoY29uc3QgU3RyaW5nJiBzY3JpcHQpCisgICAgeworICAgICAgICBib29sIGNv
bXBsZXRlID0gZmFsc2U7CisgICAgICAgIFtfd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6c2Ny
aXB0IGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQsIE5TRXJyb3IgKikgeyBjb21wbGV0ZSA9IHRy
dWU7IH1dOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmNvbXBsZXRlKTsKKyAg
ICB9CisKKyAgICB2b2lkIHBsYXkoKQorICAgIHsKKyAgICAgICAgYm9vbCBwbGF5aW5nID0gZmFs
c2U7CisgICAgICAgIFtfd2ViVmlldyBwZXJmb3JtQWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOkAicGxh
eSBldmVudCIgYWN0aW9uOlsmXSB7IHBsYXlpbmcgPSB0cnVlOyB9XTsKKyAgICAgICAgcnVuU2Ny
aXB0V2l0aFVzZXJHZXN0dXJlKCJhdWRpby5wbGF5KCkiKTsKKyAgICAgICAgVXRpbDo6cnVuKCZw
bGF5aW5nKTsKKyAgICB9CisKKyAgICB2b2lkIHBhdXNlKCkKKyAgICB7CisgICAgICAgIGJvb2wg
cGF1c2VkID0gZmFsc2U7CisgICAgICAgIFtfd2ViVmlldyBwZXJmb3JtQWZ0ZXJSZWNlaXZpbmdN
ZXNzYWdlOkAicGF1c2UgZXZlbnQiIGFjdGlvbjpbJl0geyBwYXVzZWQgPSB0cnVlOyB9XTsKKyAg
ICAgICAgcnVuU2NyaXB0V2l0aFVzZXJHZXN0dXJlKCJhdWRpby5wYXVzZSgpIik7CisgICAgICAg
IFV0aWw6OnJ1bigmcGF1c2VkKTsKKyAgICB9CisKKyAgICB2b2lkIGxpc3RlbkZvckV2ZW50TWVz
c2FnZXMoc3RkOjppbml0aWFsaXplcl9saXN0PGNvbnN0IGNoYXIqPiBldmVudHMpCisgICAgewor
ICAgICAgICBmb3IgKGF1dG8qIGV2ZW50IDogZXZlbnRzKSB7CisgICAgICAgICAgICBhdXRvIGV2
ZW50TWVzc2FnZSA9IG1ha2VTdHJpbmcoZXZlbnQsICIgZXZlbnQiKTsKKyAgICAgICAgICAgIFt3
ZWJWaWV3KCkgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpldmVudE1lc3NhZ2UgYWN0aW9u
Olt0aGlzLCBldmVudE1lc3NhZ2UgPSBXVEZNb3ZlKGV2ZW50TWVzc2FnZSldIHsKKyAgICAgICAg
ICAgICAgICBfZXZlbnRMaXN0ZW5lcnNDYWxsZWQuYWRkKGV2ZW50TWVzc2FnZSk7CisgICAgICAg
ICAgICB9XTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGJvb2wgZXZlbnRMaXN0ZW5lcldhc0Nh
bGxlZChjb25zdCBTdHJpbmcmIGV2ZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIF9ldmVudExp
c3RlbmVyc0NhbGxlZC5jb250YWlucyhtYWtlU3RyaW5nKGV2ZW50LCAiIGV2ZW50IikpOworICAg
IH0KKworICAgIHZvaWQgY2xlYXJFdmVudExpc3RlbmVyU3RhdGUoKQorICAgIHsKKyAgICAgICAg
X2V2ZW50TGlzdGVuZXJzQ2FsbGVkLmNsZWFyKCk7CisgICAgfQorCisgICAgdm9pZCBleGVjdXRl
VW50aWwoRnVuY3Rpb248Ym9vbCgpPiYmIGNhbGxiYWNrLCBpbnQgcmV0cmllcyA9IDUwKQorICAg
IHsKKyAgICAgICAgaW50IHRyaWVzID0gMDsKKyAgICAgICAgZG8geworICAgICAgICAgICAgaWYg
KGNhbGxiYWNrKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgVXRpbDo6
c2xlZXAoMC4xKTsKKyAgICAgICAgfSB3aGlsZSAoKyt0cmllcyA8PSByZXRyaWVzKTsKKworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgdm9pZCB3YWl0Rm9yRXZlbnRMaXN0ZW5lclRvQmVD
YWxsZWQoY29uc3QgU3RyaW5nJiBldmVudCkKKyAgICB7CisgICAgICAgIGV4ZWN1dGVVbnRpbChb
Jl0geworICAgICAgICAgICAgcmV0dXJuIGV2ZW50TGlzdGVuZXJXYXNDYWxsZWQoZXZlbnQpOwor
ICAgICAgICB9KTsKKyAgICB9CisKKyAgICB2b2lkIGxpc3RlbkZvck1lc3NhZ2VzUG9zdGVkKHN0
ZDo6aW5pdGlhbGl6ZXJfbGlzdDxjb25zdCBjaGFyKj4gaGFuZGxlcnMsIGNvbnN0IGNoYXIqIHN1
ZmZpeCkKKyAgICB7CisgICAgICAgIGZvciAoYXV0byogaGFuZGxlciA6IGhhbmRsZXJzKSB7Cisg
ICAgICAgICAgICBhdXRvIGhhbmRsZXJNZXNzYWdlID0gbWFrZVN0cmluZyhoYW5kbGVyLCBzdWZm
aXgpOworICAgICAgICAgICAgW3dlYlZpZXcoKSBwZXJmb3JtQWZ0ZXJSZWNlaXZpbmdNZXNzYWdl
OmhhbmRsZXJNZXNzYWdlIGFjdGlvbjpbdGhpcywgaGFuZGxlck1lc3NhZ2UgPSBXVEZNb3ZlKGhh
bmRsZXJNZXNzYWdlKV0geworICAgICAgICAgICAgICAgIF9zZXNzaW9uTWVzc2FnZXNQb3N0ZWQu
YWRkKGhhbmRsZXJNZXNzYWdlKTsKKyAgICAgICAgICAgIH1dOworICAgICAgICB9CisgICAgfQor
CisgICAgdm9pZCBjbGVhck1lc3NhZ2VzUG9zdGVkKCkKKyAgICB7CisgICAgICAgIF9zZXNzaW9u
TWVzc2FnZXNQb3N0ZWQuY2xlYXIoKTsKKyAgICB9CisKKyAgICB2b2lkIGxpc3RlbkZvclNlc3Np
b25IYW5kbGVyTWVzc2FnZXMoc3RkOjppbml0aWFsaXplcl9saXN0PGNvbnN0IGNoYXIqPiBoYW5k
bGVycykKKyAgICB7CisgICAgICAgIGxpc3RlbkZvck1lc3NhZ2VzUG9zdGVkKGhhbmRsZXJzLCAi
IGhhbmRsZXIiKTsKKyAgICB9CisKKyAgICBib29sIHNlc3Npb25IYW5kbGVyV2FzQ2FsbGVkKGNv
bnN0IFN0cmluZyYgaGFuZGxlcikKKyAgICB7CisgICAgICAgIHJldHVybiBfc2Vzc2lvbk1lc3Nh
Z2VzUG9zdGVkLmNvbnRhaW5zKG1ha2VTdHJpbmcoaGFuZGxlciwgIiBoYW5kbGVyIikpOworICAg
IH0KKworICAgIHZvaWQgd2FpdEZvclNlc3Npb25IYW5kbGVyVG9CZUNhbGxlZChjb25zdCBTdHJp
bmcmIGhhbmRsZXIpCisgICAgeworICAgICAgICBleGVjdXRlVW50aWwoWyZdIHsKKyAgICAgICAg
ICAgIHJldHVybiBzZXNzaW9uSGFuZGxlcldhc0NhbGxlZChoYW5kbGVyKTsKKyAgICAgICAgfSk7
CisgICAgfQorCisgICAgdm9pZCBsaXN0ZW5Gb3JQcm9taXNlTWVzc2FnZXMoc3RkOjppbml0aWFs
aXplcl9saXN0PGNvbnN0IGNoYXIqPiBoYW5kbGVycykKKyAgICB7CisgICAgICAgIGxpc3RlbkZv
ck1lc3NhZ2VzUG9zdGVkKGhhbmRsZXJzLCAiIHJlc29sdmVkIik7CisgICAgICAgIGxpc3RlbkZv
ck1lc3NhZ2VzUG9zdGVkKGhhbmRsZXJzLCAiIHJlamVjdGVkIik7CisgICAgfQorCisgICAgdm9p
ZCBjbGVhclByb21pc2VNZXNzYWdlcyhjb25zdCBTdHJpbmcmIHByb21pc2UpCisgICAgeworICAg
ICAgICBfc2Vzc2lvbk1lc3NhZ2VzUG9zdGVkLnJlbW92ZShtYWtlU3RyaW5nKHByb21pc2UsICIg
cmVzb2x2ZWQiKSk7CisgICAgICAgIF9zZXNzaW9uTWVzc2FnZXNQb3N0ZWQucmVtb3ZlKG1ha2VT
dHJpbmcocHJvbWlzZSwgIiByZWplY3RlZCIpKTsKKyAgICB9CisKKyAgICBib29sIHByb21pc2VX
YXNSZXNvbHZlZChjb25zdCBTdHJpbmcmIHByb21pc2UpCisgICAgeworICAgICAgICByZXR1cm4g
X3Nlc3Npb25NZXNzYWdlc1Bvc3RlZC5jb250YWlucyhtYWtlU3RyaW5nKHByb21pc2UsICIgcmVz
b2x2ZWQiKSk7CisgICAgfQorCisgICAgYm9vbCBwcm9taXNlV2FzUmVqZWN0ZWQoY29uc3QgU3Ry
aW5nJiBwcm9taXNlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIF9zZXNzaW9uTWVzc2FnZXNQb3N0
ZWQuY29udGFpbnMobWFrZVN0cmluZyhwcm9taXNlLCAiIHJlamVjdGVkIikpOworICAgIH0KKwor
ICAgIHZvaWQgd2FpdEZvclByb21pc2UoY29uc3QgU3RyaW5nJiBwcm9taXNlKQorICAgIHsKKyAg
ICAgICAgZXhlY3V0ZVVudGlsKFsmXSB7CisgICAgICAgICAgICByZXR1cm4gcHJvbWlzZVdhc1Jl
c29sdmVkKHByb21pc2UpIHx8IHByb21pc2VXYXNSZWplY3RlZChwcm9taXNlKTsKKyAgICAgICAg
fSwgMjAwKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgUmV0YWluUHRyPF9XS01vY2tNZWRpYVNl
c3Npb25Db29yZGluYXRvcj4gX2Nvb3JkaW5hdG9yOworICAgIFJldGFpblB0cjxXS1dlYlZpZXdD
b25maWd1cmF0aW9uPiBfY29uZmlndXJhdGlvbjsKKyAgICBSZXRhaW5QdHI8VGVzdFdLV2ViVmll
dz4gX3dlYlZpZXc7CisgICAgSGFzaFNldDxTdHJpbmc+IF9zZXNzaW9uTWVzc2FnZXNQb3N0ZWQ7
CisgICAgSGFzaFNldDxTdHJpbmc+IF9ldmVudExpc3RlbmVyc0NhbGxlZDsKK307CisKK1RFU1Rf
RihNZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3QsIEpvaW5BbmRMZWF2ZSkKK3sKKyAgICBsb2Fk
UGFnZUFuZEJlY29tZVJlYWR5KCJtZWRpYS1yZW1vdGUiX3MpOworICAgIGxpc3RlbkZvclNlc3Np
b25IYW5kbGVyTWVzc2FnZXMoeyAicGxheSJfcywgInBhdXNlIl9zLCAic2Vla3RvIl9zLCAic2Vl
a2ZvcndhcmQiX3MsICJzZWVrYmFja3dhcmQiX3MsICJwcmV2aW91c3RyYWNrIl9zLCAibmV4dHRy
YWNrIl9zIH0pOworICAgIGxpc3RlbkZvckV2ZW50TWVzc2FnZXMoeyAiY29vcmRpbmF0b3JjaGFu
Z2UiX3MgfSk7CisgICAgbGlzdGVuRm9yUHJvbWlzZU1lc3NhZ2VzKHsgImpvaW4iX3MgfSk7CisK
KyAgICBjcmVhdGVDb29yZGluYXRvcigpOworCisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBzdGF0
ZSA9IFt3ZWJWaWV3KCkgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIm5hdmlnYXRvci5t
ZWRpYVNlc3Npb24uY29vcmRpbmF0b3Iuc3RhdGUiXTsKKyAgICBFWFBFQ1RfU1RSRVEoIndhaXRp
bmciLCBbc3RhdGUgVVRGOFN0cmluZ10pOworCisgICAgLy8gJ2pvaW4oKScgc2hvdWxkIGZhaWwg
aWYgdGhlIHJlbW90ZSBjb29yZGluYXRvciByZWZ1c2VzLgorICAgIGNvb3JkaW5hdG9yKCkuZmFp
bHNDb21tYW5kcyA9IFlFUzsKKyAgICBydW5TY3JpcHRXaXRoVXNlckdlc3R1cmUoImpvaW5TZXNz
aW9uKCkiKTsKKyAgICB3YWl0Rm9yUHJvbWlzZSgiam9pbiJfcyk7CisgICAgQVNTRVJUX1RSVUUo
cHJvbWlzZVdhc1JlamVjdGVkKCJqb2luIl9zKSk7CisgICAgY2xlYXJQcm9taXNlTWVzc2FnZXMo
ImpvaW4iX3MpOworICAgIEVYUEVDVF9TVFJFUSgiam9pbiIsIGNvb3JkaW5hdG9yKCkubGFzdE1l
dGhvZENhbGxlZC5VVEY4U3RyaW5nKTsKKworICAgIC8vIEFuZCBpdCBzaG91ZCBzdWNjZWVkIGlm
IGl0IGFsbG93cyBpdC4KKyAgICBjb29yZGluYXRvcigpLmZhaWxzQ29tbWFuZHMgPSBOTzsKKyAg
ICBydW5TY3JpcHRXaXRoVXNlckdlc3R1cmUoImpvaW5TZXNzaW9uKCkiKTsKKyAgICB3YWl0Rm9y
UHJvbWlzZSgiam9pbiJfcyk7CisgICAgQVNTRVJUX1RSVUUocHJvbWlzZVdhc1Jlc29sdmVkKCJq
b2luIl9zKSk7CisgICAgY2xlYXJQcm9taXNlTWVzc2FnZXMoImpvaW4iX3MpOworICAgIEVYUEVD
VF9TVFJFUSgiam9pbiIsIGNvb3JkaW5hdG9yKCkubGFzdE1ldGhvZENhbGxlZC5VVEY4U3RyaW5n
KTsKKworICAgIHN0YXRlID0gW3dlYlZpZXcoKSBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
OkAibmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5zdGF0ZSJdOworICAgIEVYUEVD
VF9TVFJFUSgiam9pbmVkIiwgW3N0YXRlIFVURjhTdHJpbmddKTsKKworICAgIHJ1blNjcmlwdFdp
dGhVc2VyR2VzdHVyZSgibmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5sZWF2ZSgp
Iik7CisgICAgU3RyaW5nIGxhc3RNZXRob2RDYWxsZWQ7CisgICAgZXhlY3V0ZVVudGlsKFsmXSB7
CisgICAgICAgIGxhc3RNZXRob2RDYWxsZWQgPSBjb29yZGluYXRvcigpLmxhc3RNZXRob2RDYWxs
ZWQ7CisgICAgICAgIHJldHVybiBsYXN0TWV0aG9kQ2FsbGVkID09ICJsZWF2ZSI7CisgICAgfSk7
CisgICAgRVhQRUNUX1NUUkVRKCJsZWF2ZSIsIGxhc3RNZXRob2RDYWxsZWQudXRmOCgpLmRhdGEo
KSk7CisKKyAgICBzdGF0ZSA9IFt3ZWJWaWV3KCkgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlw
dDpAIm5hdmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3Iuc3RhdGUiXTsKKyAgICBFWFBF
Q1RfU1RSRVEoImNsb3NlZCIsIFtzdGF0ZSBVVEY4U3RyaW5nXSk7CisKKyAgICAvLyBJdCBzaG91
bGRuJ3QgYmUgcG9zc2libGUgdG8gcmUtam9pbiBhIGNsb3NlIGNvb3JkaW5hdG9yLgorICAgIHJ1
blNjcmlwdFdpdGhVc2VyR2VzdHVyZSgiam9pblNlc3Npb24oKSIpOworICAgIHdhaXRGb3JQcm9t
aXNlKCJqb2luIl9zKTsKKyAgICBBU1NFUlRfVFJVRShwcm9taXNlV2FzUmVqZWN0ZWQoImpvaW4i
X3MpKTsKKyAgICBFWFBFQ1RfU1RSRVEoIiIsIGNvb3JkaW5hdG9yKCkubGFzdE1ldGhvZENhbGxl
ZC5VVEY4U3RyaW5nKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCisjZW5k
aWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT05fQ09PUkRJTkFUT1IpCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL21lZGlhLXJlbW90ZS5odG1sIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9tZWRpYS1yZW1vdGUuaHRtbAppbmRl
eCAxYzk5M2M3Y2Q0MDFhZmYzMmNmMjMyZWRiYzg4M2VjZGM3OWJiMzVmLi5iNTdjMGUzZjJmNzQ3
ZDFiNzUwMDEyYmU1MDc4ZDBjZmI0ZjQ0ZmExIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL21lZGlhLXJlbW90ZS5odG1sCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvbWVkaWEtcmVtb3RlLmh0bWwKQEAgLTQwLDYgKzQw
LDEyIEBACiAgICAgICAgICAgICBuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLm1ldGFkYXRhID0gbmV3
IE1lZGlhTWV0YWRhdGEoZGF0YSk7CiAgICAgICAgICAgICBwb3N0TWVzc2FnZSgnc2V0IG1ldGFk
YXRhJykKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZnVuY3Rpb24gam9pblNlc3Npb24o
KQorICAgICAgICB7CisgICAgICAgICAgICBsZXQgcHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYVNl
c3Npb24uY29vcmRpbmF0b3Iuam9pbigpOworICAgICAgICAgICAgcG9zdFByb21pc2UoImpvaW4i
LCBwcm9taXNlKTsKKyAgICAgICAgfQogCiAgICAgICAgIGZ1bmN0aW9uIHNldFBsYXlsaXN0TWV0
YWRhdGEoaW5kZXgpCiAgICAgICAgIHsKQEAgLTk1LDYgKzEwMSwxNSBAQAogICAgICAgICAgICAg
cG9zdE1lc3NhZ2UoYCR7ZXZ0LnR5cGV9IGV2ZW50YCk7CiAgICAgICAgIH0KICAgICAgICAgCisg
ICAgICAgIGFzeW5jIGZ1bmN0aW9uIHBvc3RQcm9taXNlKHR5cGUsIHByb21pc2UpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGxvZyhgd2FpdGluZyBmb3IgJHt0eXBlfSBwcm9taXNlYCk7CisgICAg
ICAgICAgICBhd2FpdCBwcm9taXNlCisgICAgICAgICAgICAgICAgLnRoZW4oICAoKSA9PiB7IHBv
c3RNZXNzYWdlKGAke3R5cGV9IHJlc29sdmVkYCk7IH0gKQorICAgICAgICAgICAgICAgIC5jYXRj
aCggKCkgPT4geyBwb3N0TWVzc2FnZShgJHt0eXBlfSByZWplY3RlZGApOyB9ICk7CisgICAgICAg
ICAgICBsb2coYCR7dHlwZX0gcHJvbWlzZSBzZXR0bGVkYCk7CisgICAgICAgIH0KKyAgICAgICAg
CiAgICAgICAgIGZ1bmN0aW9uIGxvYWQoKQogICAgICAgICB7CiAgICAgICAgICAgICBsZXQgc3Jj
ID0gcGxheWxpc3QubWV0YWRhdGFbMF0udXJsOwpAQCAtMTEyLDEzICsxMjcsMTUgQEAKICAgICAg
ICAgICAgIGV2ZW50TG9nLmluc2VydEJlZm9yZShub3RlLCBldmVudExvZy5maXJzdENoaWxkKTsK
ICAgICAgICAgfQogCi0gICAgICAgIAorICAgICAgICBjb25zdCBzZXNzaW9uID0gbmF2aWdhdG9y
Lm1lZGlhU2Vzc2lvbjsKKwogICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIs
IGV2dCA9PiB7CiAgICAgICAgICAgICBhdWRpbyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCdhdWRpbycpWzBdOwogICAgICAgICAgICAgYXVkaW8uYWRkRXZlbnRMaXN0ZW5lcignY2Fu
cGxheXRocm91Z2gnLCBwb3N0RXZlbnQpOwogICAgICAgICAgICAgYXVkaW8uYWRkRXZlbnRMaXN0
ZW5lcigncGxheScsIHBvc3RFdmVudCk7CiAgICAgICAgICAgICBhdWRpby5hZGRFdmVudExpc3Rl
bmVyKCdwYXVzZScsIHBvc3RFdmVudCk7CiAgICAgICAgICAgICBhdWRpby5hZGRFdmVudExpc3Rl
bmVyKCdzZWVrZWQnLCBwb3N0RXZlbnQpOworICAgICAgICAgICAgbmF2aWdhdG9yLm1lZGlhU2Vz
c2lvbi5hZGRFdmVudExpc3RlbmVyKCdjb29yZGluYXRvcmNoYW5nZScsIHBvc3RFdmVudCk7CiAg
ICAgICAgIH0sIGZhbHNlKTsKIAogICAgIDwvc2NyaXB0Pgo=
</data>
<flag name="commit-queue"
          id="444907"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425068</attachid>
            <date>2021-04-02 17:10:50 -0700</date>
            <delta_ts>2021-04-03 06:39:40 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-224140-20210402171049.patch</filename>
            <type>text/plain</type>
            <size>74001</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MzIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGQ5Y2YzOTJlZWU5Zjhh
OTQ0OGFiOWJiMmY5ZGM2YzZlYzNmNmNlZS4uMzI1NWExM2IxODIzY2IxMjNiNmFhOTIwM2MzYzI4
MzliYTZmYTZiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTA0LTAyICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gQWRk
IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yIEFQSSB0ZXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQxNDAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
Lzc2MTcxMTczPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnBhdXNlU2Vzc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6c2V0U2Vzc2lvblRy
YWNrKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGlu
YXRvci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yUHJpdmF0ZS5oOgorICAgICAgICAqIHBhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdEb21haW4u
aDoKKwogMjAyMS0wMy0zMSAgVmVua3kgRGFzcyAgPHlhcmFuYW1hdmVua2F0YXJhbWFuYUBhcHBs
ZS5jb20+CiAKICAgICAgICAgTnVsbCBwb2ludGVyIGFjY2VzcyBjcmFzaCBpbiBXZWJDb3JlOjpt
YWtlQm91bmRhcnlQb2ludCguLikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMTIwOGM5N2VlYjJiM2U5OGYyZmE0MGNh
MDAwZjUyNjllMWJkZWM2NC4uMWEzYWRjNGM1YmZjZjAzNzEyYjQ3MjJjYmI5OTc0NDUyNzg0MTBm
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1OCBAQAorMjAyMS0wNC0wMiAgRXJpYyBDYXJsc29uICA8
ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdIEFkZCBNZWRpYVNlc3Np
b25Db29yZGluYXRvciBBUEkgdGVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI0MTQwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NjE3MTE3Mz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJj
ZXMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZUZv
clRlc3RpbmcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1Rlc3Rp
bmcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfY3JlYXRlTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JGb3JUZXN0aW5nOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS01lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9ySGVscGVyIGluaXRXaXRoQ29vcmRpbmF0b3I6XSk6CisgICAgICAgICgt
W1dLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JIZWxwZXIgc2Vla1Nlc3Npb25Ub1RpbWU6d2l0aENv
bXBsZXRpb246XSk6CisgICAgICAgICgtW1dLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JIZWxwZXIg
cGxheVNlc3Npb25XaXRoQ29tcGxldGlvbjpdKToKKyAgICAgICAgKC1bV0tNZWRpYVNlc3Npb25D
b29yZGluYXRvckhlbHBlciBwYXVzZVNlc3Npb25XaXRoQ29tcGxldGlvbjpdKToKKyAgICAgICAg
KC1bV0tNZWRpYVNlc3Npb25Db29yZGluYXRvckhlbHBlciBzZXRTZXNzaW9uVHJhY2s6d2l0aENv
bXBsZXRpb246XSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjptZWRpYVNlc3Npb25Db29yZGluYXRvckZvclRl
c3RpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yRm9yVGVz
dGluZyk6CisgICAgICAgICogVUlQcm9jZXNzL01lZGlhL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
UHJveHlQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL01lZGlhL1JlbW90ZU1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNl
c3Npb25Db29yZGluYXRvclByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVN
ZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5OjpSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRv
clByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQ
cm94eTo6am9pbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yUHJveHk6OmNvb3JkaW5hdGVTZWVrVG8pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVNlc3Npb25Db29yZGluYXRvclByb3h5Ojpjb29yZGluYXRlUGxheSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OmNvb3JkaW5hdGVQYXVzZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OmNv
b3JkaW5hdGVTZXRUcmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yUHJveHk6OmNvb3JkaW5hdG9yU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6cGF1c2VTZXNzaW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6c2V0U2Vz
c2lvblRyYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JQcm94eTo6bG9nQ2hhbm5lbCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6Ojo6Y29vcmRpbmF0ZVNldFRyYWNrKTogRGVsZXRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvTWVkaWEvUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQ
cm94eS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclBy
b3h5Ojpsb2dnZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25D
b29yZGluYXRvclByb3h5Ojpsb2dJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6bG9nQ2xhc3NOYW1lIGNvbnN0KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpjcmVhdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcik6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvTWVkaWFTZXNzaW9uL1JlbW90ZU1l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3I6OmpvaW4pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNl
c3Npb25Db29yZGluYXRvcjo6bGVhdmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNl
c3Npb25Db29yZGluYXRvcjo6c2Vla1RvKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3I6OnBsYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNl
c3Npb25Db29yZGluYXRvcjo6cGF1c2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNl
c3Npb25Db29yZGluYXRvcjo6c2V0VHJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVNlc3Npb25Db29yZGluYXRvcjo6cG9zaXRpb25TdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6cmVhZHlTdGF0ZUNoYW5nZWQpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6cGxheWJhY2tT
dGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25Db29yZGlu
YXRvcjo6Y29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQpOgorCiAyMDIxLTAzLTMxICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTjogVGhlIE5ldHdvcmtQ
cm9jZXNzIGZhaWxzIHRvIHJlbGF1bmNoIGFmdGVyIGl0IGNyYXNoZXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yLmNwcAppbmRleCAyMDgxOThiYzM0MDA4ZWE5NDZkMzliMWFhZGM0Zjg0NGM4NTVh
ODNhLi45NzJkNzhmODg3NDY1YjJlZWYxYjhmODdmNDMyZjE5ZTVhYjNmZWFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGlu
YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3IuY3BwCkBAIC0zMDcsNyArMzA3LDcgQEAgdm9pZCBNZWRpYVNlc3Np
b25Db29yZGluYXRvcjo6cGxheVNlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGUKICAgICBjb21wbGV0aW9uSGFuZGxlcihpbnRlcm5hbFBsYXkoKSk7CiB9CiAKLXZv
aWQgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnBhdXNlU2Vzc2lvbihDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3I6OnBhdXNlU2Vzc2lvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgbV9zdGF0ZSk7
CiAKQEAgLTMxOSw3ICszMTksNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpwYXVz
ZVNlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4gY29tcGxldAogICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGludGVybmFsUGF1c2UoKSk7CiB9CiAKLXZvaWQgTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3I6OnNldFNlc3Npb25UcmFjayhjb25zdCBTdHJpbmcmIHRyYWNrLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3I6OnNldFNlc3Npb25UcmFjayhjb25zdCBTdHJpbmcmIHRyYWNrLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFMV0FZ
U19MT0coTE9HSURFTlRJRklFUiwgbV9zdGF0ZSwgIiwgIiwgdHJhY2spOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGlu
YXRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3IuaAppbmRleCBmZDRhODczZDFiYzljMmVlZWRjNzNhMzg0NGE3MDVhNmJlYTIw
MzA3Li43NWU2Y2QwN2U4YTNkMDIwYmY4NDczYWEzZDBiNjRjYjIxNjczMGZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGlu
YXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yLmgKQEAgLTczLDggKzczLDggQEAgcHJpdmF0ZToKICAgICAvLyBNZWRp
YVNlc3Npb25Db29yZGluYXRvckNsaWVudAogICAgIHZvaWQgc2Vla1Nlc3Npb25Ub1RpbWUoZG91
YmxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKICAgICB2b2lkIHBs
YXlTZXNzaW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwotICAgIHZv
aWQgcGF1c2VTZXNzaW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+KSBmaW5hbDsKLSAg
ICB2b2lkIHNldFNlc3Npb25UcmFjayhjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPikgZmluYWw7CisgICAgdm9pZCBwYXVzZVNlc3Npb24oQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXNzaW9uVHJhY2soY29uc3Qg
U3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CiAKICAgICBi
b29sIGludGVybmFsU2Vla1RvKGRvdWJsZSk7CiAgICAgYm9vbCBpbnRlcm5hbFBsYXkoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlLmgKaW5kZXggZjgwMzBlNzg3MjA4MmYw
Mjc0YTdhZjU4OTYyZmVkOGMxNDBiMGIzMi4uNmQwMGMwYjFiODIwZTA5ZTRjZjIzYmIyMTIxZGM0
MmE3Y2NkMjMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlLmgKQEAg
LTQ2LDggKzQ2LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNlZWtTZXNzaW9uVG9U
aW1lKGRvdWJsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBwbGF5U2Vzc2lvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBhdXNlU2Vzc2lvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRTZXNzaW9uVHJhY2soY29uc3QgU3Ry
aW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4pID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgcGF1c2VTZXNzaW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0U2Vzc2lvblRyYWNrKGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpID0gMDsKIH07CiAKIGNsYXNzIE1lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yUHJpdmF0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
UHJpdmF0ZT4gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EaWFnbm9zdGljTG9n
Z2luZ0RvbWFpbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EaWFnbm9zdGljTG9nZ2luZ0RvbWFp
bi5oCmluZGV4IDI5YjNhMDMwZGUyMjVmMGVmYzJhNmUzOWM1OGUyYmRlZDIwOTAzYzAuLmIwNTQ5
YTg2NDFkY2IxNDM1NTI4NThhM2E2MWM1NzVmOTg3M2ViMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdEb21haW4uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RpYWdub3N0aWNMb2dnaW5nRG9tYWluLmgKQEAgLTI1LDYgKzI1LDggQEAKIAogI3By
YWdtYSBvbmNlCiAKKyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGVudW0gY2xhc3MgRGlhZ25vc3RpY0xvZ2dpbmdEb21haW4gOiB1aW50OF90IHsg
TWVkaWEgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDZjNDAxMDYxOTIxM2Y4YjZmYzQzNTI5MjEyOWI0ZDA1
OTJjOTgyOWUuLmEwYjQ3NGRlY2RlOWNkNTZmNTQ2ZDY3Y2QzYjRkYTA5NDI1YjQ3ZDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzLnR4dApAQCAtNDY3LDYgKzQ2Nyw3IEBAIFVJUHJvY2Vzcy9JbnNwZWN0b3IvQWdlbnRzL0lu
c3BlY3RvckJyb3dzZXJBZ2VudC5jcHAKIAogVUlQcm9jZXNzL01lZGlhL0F1ZGlvU2Vzc2lvblJv
dXRpbmdBcmJpdHJhdG9yUHJveHkuY3BwCiBVSVByb2Nlc3MvTWVkaWEvTWVkaWFVc2FnZU1hbmFn
ZXIuY3BwCitVSVByb2Nlc3MvTWVkaWEvUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94
eS5jcHAKIAogVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHkuY3BwCiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmlj
YXRpb24uY3BwCkBAIC01NzksNiArNTgwLDggQEAgV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViUGFn
ZUluc3BlY3RvclRhcmdldC5jcHAKIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYlBhZ2VJbnNwZWN0
b3JUYXJnZXRDb250cm9sbGVyLmNwcAogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViUGFnZUluc3Bl
Y3RvclRhcmdldEZyb250ZW5kQ2hhbm5lbC5jcHAKIAorV2ViUHJvY2Vzcy9NZWRpYVNlc3Npb24v
UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuY3BwCisKIFdlYlByb2Nlc3MvTWVkaWFTdHJl
YW0vTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5jcHAKIFdlYlByb2Nlc3MvTWVkaWFTdHJl
YW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3Rp
bmcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRl
Rm9yVGVzdGluZy5oCmluZGV4IGRiYjg0ZDhjY2JiNWNmMjVmZjFmYzNmNzY5NDE2MTA4NzM4NDQw
OTAuLmQ4NTYyZmM0ODM3ZmZkNWYxMjUwM2Y2ZTEzMjU4ZjFmZjZhOTk0MWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVz
dGluZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlRm9yVGVzdGluZy5oCkBAIC0yNiw2ICsyNiw4IEBACiAjaW1wb3J0ICJXS1dlYlZpZXdQ
cml2YXRlRm9yVGVzdGluZ0lPUy5oIgogI2ltcG9ydCAiV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3Rp
bmdNYWMuaCIKIAorTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKwogdHlwZWRlZiBlbnVtIHsKICAg
ICBXS1dlYlZpZXdBdWRpb1JvdXRpbmdBcmJpdHJhdGlvblN0YXR1c05vbmUsCiAgICAgV0tXZWJW
aWV3QXVkaW9Sb3V0aW5nQXJiaXRyYXRpb25TdGF0dXNQZW5kaW5nLApAQCAtMzcsNiArMzksOCBA
QCBzdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSB7CiAgICAgQk9PTCBoYXNM
b2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nOwogfTsKIAorQHByb3RvY29sIF9XS01lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yOworCiBAaW50ZXJmYWNlIFdLV2ViVmlldyAoV0tUZXN0aW5nKQog
CiAtICh2b2lkKV9zZXRQYWdlU2NhbGU6KENHRmxvYXQpc2NhbGUgd2l0aE9yaWdpbjooQ0dQb2lu
dClvcmlnaW47CkBAIC05OSw0ICsxMDMsNTYgQEAgc3RydWN0IFdLQXBwQm91bmROYXZpZ2F0aW9u
VGVzdGluZ0RhdGEgewogLSAodm9pZClfYXBwQm91bmROYXZpZ2F0aW9uRGF0YToodm9pZCheKShz
dHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBkYXRhKSljb21wbGV0aW9uSGFu
ZGxlcjsKIC0gKHZvaWQpX2NsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YToodm9pZCheKSh2b2lk
KSljb21wbGV0aW9uSGFuZGxlcjsKIAorLSAodm9pZClfY3JlYXRlTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3JGb3JUZXN0aW5nOihpZCA8X1dLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I+KXByaXZhdGVD
b29yZGluYXRvciBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFu
ZGxlcjsKKworQGVuZAorCit0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tNZWRpYVNlc3Np
b25SZWFkeVN0YXRlKSB7CisgICAgV0tNZWRpYVNlc3Npb25SZWFkeVN0YXRlSGF2ZU5vdGhpbmcs
CisgICAgV0tNZWRpYVNlc3Npb25SZWFkeVN0YXRlSGF2ZU1ldGFkYXRhLAorICAgIFdLTWVkaWFT
ZXNzaW9uUmVhZHlTdGF0ZUhhdmVDdXJyZW50RGF0YSwKKyAgICBXS01lZGlhU2Vzc2lvblJlYWR5
U3RhdGVIYXZlRnV0dXJlRGF0YSwKKyAgICBXS01lZGlhU2Vzc2lvblJlYWR5U3RhdGVIYXZlRW5v
dWdoRGF0YQorfTsKKwordHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLTWVkaWFTZXNzaW9u
UGxheWJhY2tTdGF0ZSkgeworICAgIFdLTWVkaWFTZXNzaW9uUGxheWJhY2tTdGF0ZU5vbmUsCisg
ICAgV0tNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRlUGF1c2VkLAorICAgIFdLTWVkaWFTZXNzaW9u
UGxheWJhY2tTdGF0ZVBsYXlpbmcKK307CisKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9X
S01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGUpIHsKKyAgICBXS01lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yU3RhdGVXYWl0aW5nLAorICAgIFdLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZUpv
aW5lZCwKKyAgICBXS01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGVDbG9zZWQKK307CisKK3N0
cnVjdCBfV0tNZWRpYVBvc2l0aW9uU3RhdGUgeworICAgIGRvdWJsZSBkdXJhdGlvbjsKKyAgICBk
b3VibGUgcGxheWJhY2tSYXRlOworICAgIGRvdWJsZSBwb3NpdGlvbjsKK307CisKK0Bwcm90b2Nv
bCBfV0tNZWRpYVNlc3Npb25Db29yZGluYXRvckRlbGVnYXRlIDxOU09iamVjdD4KKy0gKHZvaWQp
c2Vla1Nlc3Npb25Ub1RpbWU6KGRvdWJsZSl0aW1lIHdpdGhDb21wbGV0aW9uOih2b2lkKF4pKEJP
T0wpKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClwbGF5U2Vzc2lvbldpdGhDb21wbGV0aW9u
Oih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClwYXVzZVNlc3Npb25X
aXRoQ29tcGxldGlvbjoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQp
c2V0U2Vzc2lvblRyYWNrOihOU1N0cmluZyopdHJhY2tJZGVudGlmaWVyIHdpdGhDb21wbGV0aW9u
Oih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyOworQGVuZAorCitAcHJvdG9jb2wgX1dL
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IgPE5TT2JqZWN0PgorQHByb3BlcnR5IChudWxsYWJsZSwg
d2VhaykgaWQgPF9XS01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yRGVsZWdhdGU+IGRlbGVnYXRlOwor
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmluZyAqIF9Ob25udWxsIGlkZW50
aWZpZXI7CistICh2b2lkKWpvaW5XaXRoQ29tcGxldGlvbjoodm9pZCheIF9Ob25udWxsKShCT09M
KSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpbGVhdmU7CistICh2b2lkKXNlZWtUbzooZG91
YmxlKXRpbWUgd2l0aENvbXBsZXRpb246KHZvaWQoXiBfTm9ubnVsbCkoQk9PTCkpY29tcGxldGlv
bkhhbmRsZXI7CistICh2b2lkKXBsYXlXaXRoQ29tcGxldGlvbjoodm9pZCheIF9Ob25udWxsKShC
T09MKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpcGF1c2VXaXRoQ29tcGxldGlvbjoodm9p
ZCheIF9Ob25udWxsKShCT09MKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpc2V0VHJhY2s6
KE5TU3RyaW5nICpfTm9ubnVsbCl0cmFja0lkZW50aWZpZXIgd2l0aENvbXBsZXRpb246KHZvaWQo
XiBfTm9ubnVsbCkoQk9PTCkpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKXBvc2l0aW9uU3Rh
dGVDaGFuZ2VkOihudWxsYWJsZSBfV0tNZWRpYVBvc2l0aW9uU3RhdGUgKilzdGF0ZTsKKy0gKHZv
aWQpcmVhZHlTdGF0ZUNoYW5nZWQ6KF9XS01lZGlhU2Vzc2lvblJlYWR5U3RhdGUpc3RhdGU7Cist
ICh2b2lkKXBsYXliYWNrU3RhdGVDaGFuZ2VkOihfV0tNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRl
KXN0YXRlOworLSAodm9pZCljb29yZGluYXRvclN0YXRlQ2hhbmdlZDooX1dLTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3JTdGF0ZSlzdGF0ZTsKIEBlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVz
dGluZy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0
aW5nLm1tCmluZGV4IDRmOTI4ZTI4ODE3NzY3ZDc1MGVmMzU5ZGE4NDY5MGI3MTc4ZTI3ZmIuLmJk
OWQ2NjA5OThiNmEzMDY3Yjk2NWU3NGIzNzBmYTIzMTdhYzg4ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5nLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5nLm1tCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW1wb3J0ICJXS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oIgogCiAj
aW1wb3J0ICJBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5LmgiCisjaW1wb3J0ICJN
ZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5UHJpdmF0ZS5oIgogI2ltcG9ydCAiUGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5LmgiCiAjaW1wb3J0ICJVc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5o
IgogI2ltcG9ydCAiVmlld0dlc3R1cmVDb250cm9sbGVyLmgiCkBAIC0zOSw3ICs0MCwxNyBAQAog
I2ltcG9ydCAiX1dLSW5zcGVjdG9ySW50ZXJuYWwuaCIKICNpbXBvcnQgPFdlYkNvcmUvUnVudGlt
ZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1ZhbGlkYXRpb25CdWJibGUu
aD4KLQorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCisjaWYgRU5BQkxFKE1FRElBX1NFU1NJ
T05fQ09PUkRJTkFUT1IpCitAaW50ZXJmYWNlIFdLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JIZWxw
ZXIgOiBOU09iamVjdCA8X1dLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JEZWxlZ2F0ZT4KKy0gKGlk
KWluaXRXaXRoQ29vcmRpbmF0b3I6KFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yQ2xp
ZW50Kiljb29yZGluYXRvcjsKKy0gKHZvaWQpc2Vla1Nlc3Npb25Ub1RpbWU6KGRvdWJsZSl0aW1l
IHdpdGhDb21wbGV0aW9uOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9p
ZClwbGF5U2Vzc2lvbldpdGhDb21wbGV0aW9uOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5k
bGVyOworLSAodm9pZClwYXVzZVNlc3Npb25XaXRoQ29tcGxldGlvbjoodm9pZCheKShCT09MKSlj
b21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpc2V0U2Vzc2lvblRyYWNrOihOU1N0cmluZyopdHJh
Y2tJZGVudGlmaWVyIHdpdGhDb21wbGV0aW9uOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5k
bGVyOworQGVuZAorI2VuZGlmCiAKIEBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcgKFdLVGVzdGlu
ZykKIApAQCAtMzYwLDQgKzM3MSwyNDAgQEAKICAgICB9KTsKIH0KIAorLSAodm9pZClfY3JlYXRl
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JGb3JUZXN0aW5nOihpZCA8X1dLTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3I+KXByaXZhdGVDb29yZGluYXRvciBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShC
T09MKSljb21wbGV0aW9uSGFuZGxlcgoreworI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OX0NPT1JE
SU5BVE9SKQorICAgIGNsYXNzIFdLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JGb3JUZXN0aW5nCisg
ICAgICAgIDogcHVibGljIFdlYktpdDo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eVByaXZh
dGUKKyAgICAgICAgLCBwdWJsaWMgV2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JDbGll
bnQgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisKKyAg
ICAgICAgc3RhdGljIFJlZjxXS01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yRm9yVGVzdGluZz4gY3Jl
YXRlKGlkIDxfV0tNZWRpYVNlc3Npb25Db29yZGluYXRvcj4gcHJpdmF0ZUNvb3JkaW5hdG9yKQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXS01lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yRm9yVGVzdGluZyhwcml2YXRlQ29vcmRpbmF0b3IpKTsKKyAgICAgICAgfQor
CisgICAgICAgIHVzaW5nIFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yQ2xpZW50Ojp3
ZWFrUHRyRmFjdG9yeTsKKyAgICAgICAgdXNpbmcgV2Vha1ZhbHVlVHlwZSA9IFdlYkNvcmU6Ok1l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yQ2xpZW50OjpXZWFrVmFsdWVUeXBlOworCisgICAgcHJpdmF0
ZToKKyAgICAgICAgZXhwbGljaXQgV0tNZWRpYVNlc3Npb25Db29yZGluYXRvckZvclRlc3Rpbmco
aWQgPF9XS01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yPiBjbGllbnRDb29yZGluYXRvcikKKyAgICAg
ICAgICAgIDogV2ViS2l0OjpNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5UHJpdmF0ZSgpCisg
ICAgICAgICAgICAsIG1fY2xpZW50Q29vcmRpbmF0b3IoY2xpZW50Q29vcmRpbmF0b3IpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGF1dG8qIGRlbGVnYXRlSGVscGVyID0gW1tXS01lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9ySGVscGVyIGFsbG9jXSBpbml0V2l0aENvb3JkaW5hdG9yOnRoaXNdOworICAg
ICAgICAgICAgW21fY2xpZW50Q29vcmRpbmF0b3Igc2V0RGVsZWdhdGU6ZGVsZWdhdGVIZWxwZXJd
OworICAgICAgICAgICAgbV9jb29yZGluYXRvckRlbGVnYXRlID0gYWRvcHROUyhkZWxlZ2F0ZUhl
bHBlcik7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHNlZWtTZXNzaW9uVG9UaW1lKGRvdWJs
ZSB0aW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKSBmaW5hbAor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAoYXV0byBjb29yZGluYXRvckNsaWVudCA9IGNsaWVu
dCgpKQorICAgICAgICAgICAgICAgIGNvb3JkaW5hdG9yQ2xpZW50LT5zZWVrU2Vzc2lvblRvVGlt
ZSh0aW1lLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgY2FsbGJhY2soZmFsc2UpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBwbGF5U2Vz
c2lvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKSBmaW5hbAorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAoYXV0byBjb29yZGluYXRvckNsaWVudCA9IGNsaWVudCgp
KQorICAgICAgICAgICAgICAgIGNvb3JkaW5hdG9yQ2xpZW50LT5wbGF5U2Vzc2lvbihXVEZNb3Zl
KGNhbGxiYWNrKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY2FsbGJhY2so
ZmFsc2UpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBwYXVzZVNlc3Npb24oQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykgZmluYWwKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKGF1dG8gY29vcmRpbmF0b3JDbGllbnQgPSBjbGllbnQoKSkKKyAgICAgICAgICAg
ICAgICBjb29yZGluYXRvckNsaWVudC0+cGF1c2VTZXNzaW9uKFdURk1vdmUoY2FsbGJhY2spKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSk7CisgICAg
ICAgIH0KKworICAgICAgICB2b2lkIHNldFNlc3Npb25UcmFjayhjb25zdCBTdHJpbmcmIHRyYWNr
SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykgZmlu
YWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGF1dG8gY29vcmRpbmF0b3JDbGllbnQgPSBj
bGllbnQoKSkKKyAgICAgICAgICAgICAgICBjb29yZGluYXRvckNsaWVudC0+c2V0U2Vzc2lvblRy
YWNrKHRyYWNrSWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKKyAgICAgICAgfQorCisgICAgICAg
IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+IHJlc3VsdChib29sIHN1Y2Nlc3MpIGNv
bnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghc3VjY2VzcykKKyAgICAgICAgICAgICAg
ICByZXR1cm4geyBXZWJDb3JlOjpFeGNlcHRpb25EYXRhIHsgV2ViQ29yZTo6SW52YWxpZFN0YXRl
RXJyb3IgfSB9OworCisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICB9CisKKyAgICAg
ICAgU3RyaW5nIGlkZW50aWZpZXIoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gW21fY2xpZW50Q29vcmRpbmF0b3IgaWRlbnRpZmllcl07CisgICAgICAgIH0KKworICAgICAg
ICB2b2lkIGpvaW4oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpFeGNl
cHRpb25EYXRhPiYmKT4mJiBjYWxsYmFjaykgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAg
W21fY2xpZW50Q29vcmRpbmF0b3Igam9pbldpdGhDb21wbGV0aW9uOm1ha2VCbG9ja1B0cihbd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0g
KEJPT0wgc3VjY2VzcykgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykg
eworICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhXZWJDb3JlOjpFeGNlcHRpb25EYXRhIHsg
V2ViQ29yZTo6SW52YWxpZFN0YXRlRXJyb3IgfSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBjYWxsYmFjayh3ZWFrVGhp
cy0+cmVzdWx0KHN1Y2Nlc3MpKTsKKyAgICAgICAgICAgIH0pLmdldCgpXTsKKyAgICAgICAgfQor
CisgICAgICAgIHZvaWQgbGVhdmUoKSBmaW5hbAorICAgICAgICB7CisgICAgICAgICAgICBbbV9j
bGllbnRDb29yZGluYXRvciBsZWF2ZV07CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHNlZWtU
byhkb3VibGUgdGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpF
eGNlcHRpb25EYXRhPiYmKT4mJiBjYWxsYmFjaykgZmluYWwKKyAgICAgICAgeworICAgICAgICAg
ICAgW21fY2xpZW50Q29vcmRpbmF0b3Igc2Vla1RvOnRpbWUgd2l0aENvbXBsZXRpb246bWFrZUJs
b2NrUHRyKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXSAoQk9PTCBzdWNjZXNzKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBpZiAo
IXdlYWtUaGlzKSB7CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKFdlYkNvcmU6OkV4Y2Vw
dGlvbkRhdGEgeyBXZWJDb3JlOjpJbnZhbGlkU3RhdGVFcnJvciB9KTsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGNhbGxi
YWNrKHdlYWtUaGlzLT5yZXN1bHQoc3VjY2VzcykpOworICAgICAgICAgICAgfSkuZ2V0KCldOwor
ICAgICAgICB9CisKKyAgICAgICAgdm9pZCBwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJik+JiYgY2FsbGJhY2spIGZpbmFsCisgICAg
ICAgIHsKKyAgICAgICAgICAgIFttX2NsaWVudENvb3JkaW5hdG9yIHBsYXlXaXRoQ29tcGxldGlv
bjptYWtlQmxvY2tQdHIoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldIChCT09MIHN1Y2Nlc3MpIG11dGFibGUgeworICAgICAgICAgICAg
ICAgIGlmICghd2Vha1RoaXMpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soV2ViQ29y
ZTo6RXhjZXB0aW9uRGF0YSB7IFdlYkNvcmU6OkludmFsaWRTdGF0ZUVycm9yIH0pOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgY2FsbGJhY2sod2Vha1RoaXMtPnJlc3VsdChzdWNjZXNzKSk7CisgICAgICAgICAgICB9KS5n
ZXQoKV07CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHBhdXNlKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJik+JiYgY2FsbGJhY2spIGZp
bmFsCisgICAgICAgIHsKKyAgICAgICAgICAgIFttX2NsaWVudENvb3JkaW5hdG9yIHBhdXNlV2l0
aENvbXBsZXRpb246bWFrZUJsb2NrUHRyKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoQk9PTCBzdWNjZXNzKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKSB7CisgICAgICAgICAgICAgICAgICAgIGNhbGxi
YWNrKFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEgeyBXZWJDb3JlOjpJbnZhbGlkU3RhdGVFcnJvciB9
KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIGNhbGxiYWNrKHdlYWtUaGlzLT5yZXN1bHQoc3VjY2VzcykpOworICAgICAg
ICAgICAgfSkuZ2V0KCldOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBzZXRUcmFjayhjb25z
dCBTdHJpbmcmIHRyYWNrLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6
OkV4Y2VwdGlvbkRhdGE+JiYpPiYmIGNhbGxiYWNrKSBmaW5hbAorICAgICAgICB7CisgICAgICAg
ICAgICBbbV9jbGllbnRDb29yZGluYXRvciBzZXRUcmFjazp0cmFjayB3aXRoQ29tcGxldGlvbjpt
YWtlQmxvY2tQdHIoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldIChCT09MIHN1Y2Nlc3MpIG11dGFibGUgeworICAgICAgICAgICAgICAg
IGlmICghd2Vha1RoaXMpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soV2ViQ29yZTo6
RXhjZXB0aW9uRGF0YSB7IFdlYkNvcmU6OkludmFsaWRTdGF0ZUVycm9yIH0pOworICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
Y2FsbGJhY2sod2Vha1RoaXMtPnJlc3VsdChzdWNjZXNzKSk7CisgICAgICAgICAgICB9KS5nZXQo
KV07CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHBvc2l0aW9uU3RhdGVDaGFuZ2VkKGNvbnN0
IE9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhUG9zaXRpb25TdGF0ZT4mIHN0YXRlKSBmaW5hbAorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAoIXN0YXRlKSB7CisgICAgICAgICAgICAgICAgW21fY2xp
ZW50Q29vcmRpbmF0b3IgcG9zaXRpb25TdGF0ZUNoYW5nZWQ6bmlsXTsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIF9XS01lZGlhUG9zaXRpb25T
dGF0ZSBwb3NpdGlvbiA9IHsKKyAgICAgICAgICAgICAgICAuZHVyYXRpb24gPSBzdGF0ZS0+ZHVy
YXRpb24sCisgICAgICAgICAgICAgICAgLnBsYXliYWNrUmF0ZSA9IHN0YXRlLT5wbGF5YmFja1Jh
dGUsCisgICAgICAgICAgICAgICAgLnBvc2l0aW9uID0gc3RhdGUtPnBvc2l0aW9uCisgICAgICAg
ICAgICB9OworICAgICAgICAgICAgW21fY2xpZW50Q29vcmRpbmF0b3IgcG9zaXRpb25TdGF0ZUNo
YW5nZWQ6JnBvc2l0aW9uXTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgcmVhZHlTdGF0ZUNo
YW5nZWQoV2ViQ29yZTo6TWVkaWFTZXNzaW9uUmVhZHlTdGF0ZSBzdGF0ZSkgZmluYWwKKyAgICAg
ICAgeworICAgICAgICAgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFdlYkNv
cmU6Ok1lZGlhU2Vzc2lvblJlYWR5U3RhdGU6OkhhdmVOb3RoaW5nKSA9PSBzdGF0aWNfY2FzdDxz
aXplX3Q+KFdLTWVkaWFTZXNzaW9uUmVhZHlTdGF0ZUhhdmVOb3RoaW5nKSwgIldLTWVkaWFTZXNz
aW9uUmVhZHlTdGF0ZUhhdmVOb3RoaW5nIGRvZXMgbm90IG1hdGNoIFdlYktpdCB2YWx1ZSIpOwor
ICAgICAgICAgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFdlYkNvcmU6Ok1l
ZGlhU2Vzc2lvblJlYWR5U3RhdGU6OkhhdmVNZXRhZGF0YSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90
PihXS01lZGlhU2Vzc2lvblJlYWR5U3RhdGVIYXZlTWV0YWRhdGEpLCAiV0tNZWRpYVNlc3Npb25S
ZWFkeVN0YXRlSGF2ZU1ldGFkYXRhIGRvZXMgbm90IG1hdGNoIFdlYktpdCB2YWx1ZSIpOworICAg
ICAgICAgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFdlYkNvcmU6Ok1lZGlh
U2Vzc2lvblJlYWR5U3RhdGU6OkhhdmVDdXJyZW50RGF0YSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90
PihXS01lZGlhU2Vzc2lvblJlYWR5U3RhdGVIYXZlQ3VycmVudERhdGEpLCAiV0tNZWRpYVNlc3Np
b25SZWFkeVN0YXRlSGF2ZUN1cnJlbnREYXRhIGRvZXMgbm90IG1hdGNoIFdlYktpdCB2YWx1ZSIp
OworICAgICAgICAgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFdlYkNvcmU6
Ok1lZGlhU2Vzc2lvblJlYWR5U3RhdGU6OkhhdmVGdXR1cmVEYXRhKSA9PSBzdGF0aWNfY2FzdDxz
aXplX3Q+KFdLTWVkaWFTZXNzaW9uUmVhZHlTdGF0ZUhhdmVGdXR1cmVEYXRhKSwgIldLTWVkaWFT
ZXNzaW9uUmVhZHlTdGF0ZUhhdmVGdXR1cmVEYXRhIGRvZXMgbm90IG1hdGNoIFdlYktpdCB2YWx1
ZSIpOworICAgICAgICAgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFdlYkNv
cmU6Ok1lZGlhU2Vzc2lvblJlYWR5U3RhdGU6OkhhdmVFbm91Z2hEYXRhKSA9PSBzdGF0aWNfY2Fz
dDxzaXplX3Q+KFdLTWVkaWFTZXNzaW9uUmVhZHlTdGF0ZUhhdmVFbm91Z2hEYXRhKSwgIldLTWVk
aWFTZXNzaW9uUmVhZHlTdGF0ZUhhdmVFbm91Z2hEYXRhIGRvZXMgbm90IG1hdGNoIFdlYktpdCB2
YWx1ZSIpOworCisgICAgICAgICAgICBbbV9jbGllbnRDb29yZGluYXRvciByZWFkeVN0YXRlQ2hh
bmdlZDpzdGF0aWNfY2FzdDxfV0tNZWRpYVNlc3Npb25SZWFkeVN0YXRlPihzdGF0ZSldOworICAg
ICAgICB9CisKKyAgICAgICAgdm9pZCBwbGF5YmFja1N0YXRlQ2hhbmdlZChXZWJDb3JlOjpNZWRp
YVNlc3Npb25QbGF5YmFja1N0YXRlIHN0YXRlKSBmaW5hbAorICAgICAgICB7CisgICAgICAgICAg
ICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oV2ViQ29yZTo6TWVkaWFTZXNzaW9u
UGxheWJhY2tTdGF0ZTo6Tm9uZSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihXS01lZGlhU2Vzc2lv
blBsYXliYWNrU3RhdGVOb25lKSwgIldLTWVkaWFTZXNzaW9uUGxheWJhY2tTdGF0ZU5vbmUgZG9l
cyBub3QgbWF0Y2ggV2ViS2l0IHZhbHVlIik7CisgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0
YXRpY19jYXN0PHNpemVfdD4oV2ViQ29yZTo6TWVkaWFTZXNzaW9uUGxheWJhY2tTdGF0ZTo6UGF1
c2VkKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KFdLTWVkaWFTZXNzaW9uUGxheWJhY2tTdGF0ZVBh
dXNlZCksICJXS01lZGlhU2Vzc2lvblBsYXliYWNrU3RhdGVQYXVzZWQgZG9lcyBub3QgbWF0Y2gg
V2ViS2l0IHZhbHVlIik7CisgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNp
emVfdD4oV2ViQ29yZTo6TWVkaWFTZXNzaW9uUGxheWJhY2tTdGF0ZTo6UGxheWluZykgPT0gc3Rh
dGljX2Nhc3Q8c2l6ZV90PihXS01lZGlhU2Vzc2lvblBsYXliYWNrU3RhdGVQbGF5aW5nKSwgIldL
TWVkaWFTZXNzaW9uUGxheWJhY2tTdGF0ZVBsYXlpbmcgZG9lcyBub3QgbWF0Y2ggV2ViS2l0IHZh
bHVlIik7CisKKyAgICAgICAgICAgIFttX2NsaWVudENvb3JkaW5hdG9yIHBsYXliYWNrU3RhdGVD
aGFuZ2VkOnN0YXRpY19jYXN0PF9XS01lZGlhU2Vzc2lvblBsYXliYWNrU3RhdGU+KHN0YXRlKV07
CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGNvb3JkaW5hdG9yU3RhdGVDaGFuZ2VkKFdlYkNv
cmU6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGUgc3RhdGUpIGZpbmFsCisgICAgICAgIHsK
KyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihXZWJDb3JlOjpN
ZWRpYVNlc3Npb25Db29yZGluYXRvclN0YXRlOjpXYWl0aW5nKSA9PSBzdGF0aWNfY2FzdDxzaXpl
X3Q+KFdLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZVdhaXRpbmcpLCAiV0tNZWRpYVNlc3Np
b25Db29yZGluYXRvclN0YXRlV2FpdGluZyBkb2VzIG5vdCBtYXRjaCBXZWJLaXQgdmFsdWUiKTsK
KyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihXZWJDb3JlOjpN
ZWRpYVNlc3Npb25Db29yZGluYXRvclN0YXRlOjpKb2luZWQpID09IHN0YXRpY19jYXN0PHNpemVf
dD4oV0tNZWRpYVNlc3Npb25Db29yZGluYXRvclN0YXRlSm9pbmVkKSwgIldLTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3JTdGF0ZUpvaW5lZCBkb2VzIG5vdCBtYXRjaCBXZWJLaXQgdmFsdWUiKTsKKyAg
ICAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihXZWJDb3JlOjpNZWRp
YVNlc3Npb25Db29yZGluYXRvclN0YXRlOjpDbG9zZWQpID09IHN0YXRpY19jYXN0PHNpemVfdD4o
V0tNZWRpYVNlc3Npb25Db29yZGluYXRvclN0YXRlQ2xvc2VkKSwgIldLTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3JTdGF0ZUNsb3NlZCBkb2VzIG5vdCBtYXRjaCBXZWJLaXQgdmFsdWUiKTsKKworICAg
ICAgICAgICAgW21fY2xpZW50Q29vcmRpbmF0b3IgY29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQ6c3Rh
dGljX2Nhc3Q8X1dLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZT4oc3RhdGUpXTsKKyAgICAg
ICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgUmV0YWluUHRyPGlkIDxfV0tNZWRpYVNlc3Np
b25Db29yZGluYXRvcj4+IG1fY2xpZW50Q29vcmRpbmF0b3I7CisgICAgICAgIFJldGFpblB0cjxX
S01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9ySGVscGVyPiBtX2Nvb3JkaW5hdG9yRGVsZWdhdGU7Cisg
ICAgfTsKKworICAgIEFTU0VSVCghX2ltcGwtPm1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yRm9yVGVz
dGluZygpKTsKKworICAgIF9pbXBsLT5zZXRNZWRpYVNlc3Npb25Db29yZGluYXRvckZvclRlc3Rp
bmcoV0tNZWRpYVNlc3Npb25Db29yZGluYXRvckZvclRlc3Rpbmc6OmNyZWF0ZShwcml2YXRlQ29v
cmRpbmF0b3IpLnB0cigpKTsKKyAgICBfaW1wbC0+cGFnZSgpLmNyZWF0ZU1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yKCpfaW1wbC0+bWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JGb3JUZXN0aW5nKCksIFtj
b21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChib29s
IHN1Y2Nlc3MpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3VjY2Vzcyk7CisgICAgfSk7
CisjZWxzZQorCisgICAgY29tcGxldGlvbkhhbmRsZXIoTk8pOworCisjZW5kaWYKK30KKworQGVu
ZAorCisjaWYgRU5BQkxFKE1FRElBX1NFU1NJT05fQ09PUkRJTkFUT1IpCitAaW1wbGVtZW50YXRp
b24gV0tNZWRpYVNlc3Npb25Db29yZGluYXRvckhlbHBlciB7CisgICAgV2Vha1B0cjxXZWJDb3Jl
OjpNZWRpYVNlc3Npb25Db29yZGluYXRvckNsaWVudD4gbV9jb29yZGluYXRvckNsaWVudDsKK30K
KworLSAoaWQpaW5pdFdpdGhDb29yZGluYXRvcjooV2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3JDbGllbnQqKWNvb3JkaW5hdG9yCit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAg
ICBpZiAoIXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgbV9jb29yZGluYXRvckNsaWVu
dCA9IG1ha2VXZWFrUHRyKGNvb3JkaW5hdG9yKTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAo
dm9pZClzZWVrU2Vzc2lvblRvVGltZTooZG91YmxlKXRpbWUgd2l0aENvbXBsZXRpb246KHZvaWQo
XikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBtX2Nvb3JkaW5hdG9yQ2xpZW50LT5z
ZWVrU2Vzc2lvblRvVGltZSh0aW1lLCBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpKTsK
K30KKworLSAodm9pZClwbGF5U2Vzc2lvbldpdGhDb21wbGV0aW9uOih2b2lkKF4pKEJPT0wpKWNv
bXBsZXRpb25IYW5kbGVyCit7CisgICAgbV9jb29yZGluYXRvckNsaWVudC0+cGxheVNlc3Npb24o
bWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKKy0gKHZvaWQpcGF1c2VTZXNz
aW9uV2l0aENvbXBsZXRpb246KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAg
ICBtX2Nvb3JkaW5hdG9yQ2xpZW50LT5wYXVzZVNlc3Npb24obWFrZUJsb2NrUHRyKGNvbXBsZXRp
b25IYW5kbGVyKSk7Cit9CisKKy0gKHZvaWQpc2V0U2Vzc2lvblRyYWNrOihOU1N0cmluZyopdHJh
Y2tJZGVudGlmaWVyIHdpdGhDb21wbGV0aW9uOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5k
bGVyCit7CisgICAgbV9jb29yZGluYXRvckNsaWVudC0+c2V0U2Vzc2lvblRyYWNrKHRyYWNrSWRl
bnRpZmllciwgbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKIEBlbmQKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKaW5kZXgg
ODU4NTQ0ZDI3ZDcwNGIzZjAyMzhmYjk4OGE1NTZkNWJkOGYwY2I5NC4uN2Q2OWIyYzJkMmIwNDRl
OTk3NmZiN2QxMTk4MzZkOWFkMDIxZTRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5oCkBAIC0xNTEsNiArMTUxLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiBjbGFzcyBQYWdlQ2xpZW50OwogY2xhc3MgUGFnZUNsaWVudEltcGw7CiBjbGFzcyBEcmF3aW5n
QXJlYVByb3h5OworY2xhc3MgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eVByaXZhdGU7CiBj
bGFzcyBTYWZlQnJvd3NpbmdXYXJuaW5nOwogY2xhc3MgVmlld0dlc3R1cmVDb250cm9sbGVyOwog
Y2xhc3MgVmlld1NuYXBzaG90OwpAQCAtNjQzLDYgKzY0NCwxMSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBoYW5kbGVDb250ZXh0TWVudVRyYW5zbGF0aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgYm91bmRzSW5WaWV3LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
bWVudUxvY2F0aW9uKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKE1FRElBX1NFU1NJT05fQ09PUkRJ
TkFUT1IpCisgICAgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eVByaXZhdGUqIG1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yRm9yVGVzdGluZygpIHsgcmV0dXJuIG1fY29vcmRpbmF0b3JGb3JUZXN0
aW5nLmdldCgpOyB9CisgICAgdm9pZCBzZXRNZWRpYVNlc3Npb25Db29yZGluYXRvckZvclRlc3Rp
bmcoTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eVByaXZhdGUqKTsKKyNlbmRpZgorCiBwcml2
YXRlOgogI2lmIEhBVkUoVE9VQ0hfQkFSKQogICAgIHZvaWQgc2V0VXBUZXh0VG91Y2hCYXIoTlNU
b3VjaEJhciAqKTsKQEAgLTg0OSw2ICs4NTUsMTAgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8
V0tET01QYXN0ZU1lbnVEZWxlZ2F0ZT4gbV9kb21QYXN0ZU1lbnVEZWxlZ2F0ZTsKICAgICBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2UpPiBtX2Rv
bVBhc3RlUmVxdWVzdEhhbmRsZXI7CiAKKyNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTl9DT09SRElO
QVRPUikKKyAgICBSZWZQdHI8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eVByaXZhdGU+IG1f
Y29vcmRpbmF0b3JGb3JUZXN0aW5nOworI2VuZGlmCisKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxf
U0RLKQogI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1dlYlZpZXdJbXBsQWRkaXRpb25zQWZ0ZXIu
aD4KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5t
bQppbmRleCA2ZDNkMTI5ZDU4YzY5NTA4NTIxZmFlMjk1YjM0YWE1YmY1MWE5MGU0Li44N2JhZDJi
NGM0MGE4MzZjMTM0ZmZhNzRiMDY4MDdlY2NjMjQ3MGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMTM5LDYgKzEzOSwxMCBAQAogI2ltcG9y
dCA8V2ViQ29yZS9JbWFnZUV4dHJhY3Rpb25SZXN1bHQuaD4KICNlbmRpZgogCisjaWYgRU5BQkxF
KE1FRElBX1NFU1NJT05fQ09PUkRJTkFUT1IpCisjaW5jbHVkZSA8V2ViS2l0L01lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yUHJveHlQcml2YXRlLmg+CisjZW5kaWYKKwogI2lmIEhBVkUoVFJBTlNMQVRJ
T05fVUlfU0VSVklDRVMpCiAjaW1wb3J0IDxUcmFuc2xhdGlvblVJU2VydmljZXMvTFRVSVRyYW5z
bGF0aW9uVmlld0NvbnRyb2xsZXIuaD4KIApAQCAtNTU4Miw2ICs1NTg2LDEzIEBAIGJvb2wgV2Vi
Vmlld0ltcGw6OmVmZmVjdGl2ZVVzZXJJbnRlcmZhY2VMZXZlbElzRWxldmF0ZWQoKQogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAorI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OX0NPT1JESU5BVE9SKQor
dm9pZCBXZWJWaWV3SW1wbDo6c2V0TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JGb3JUZXN0aW5nKE1l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHlQcml2YXRlKiBjb29yZGluYXRvcikKK3sKKyAgICBt
X2Nvb3JkaW5hdG9yRm9yVGVzdGluZyA9IGNvb3JkaW5hdG9yOworfQorI2VuZGlmCisKICNpZiBI
QVZFKFRSQU5TTEFUSU9OX1VJX1NFUlZJQ0VTKSAmJiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKIAog
Ym9vbCBXZWJWaWV3SW1wbDo6Y2FuSGFuZGxlQ29udGV4dE1lbnVUcmFuc2xhdGlvbigpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRpYS9NZWRpYVNlc3Npb25D
b29yZGluYXRvclByb3h5UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWEv
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eVByaXZhdGUuaAppbmRleCAyMmRkZGVkMGE4OWY4
MzQ4YmY3ZTZkYzI4OGRiY2MzM2ZjZjVlYzZlLi41YmM2MjA3MzEzY2IzNDIwMDk3YWYwNjQxOWU4
YTc1MDJlNzg1OTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRpYS9N
ZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL01lZGlhL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHlQcml2YXRlLmgKQEAg
LTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OX0NPT1JESU5BVE9SKQog
CisjaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9N
ZWRpYVNlc3Npb25Db29yZGluYXRvclByaXZhdGUuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTQxLDEwICs0MiwxMyBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIFN0cmluZyBpZGVudGlmaWVyKCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVh
bCB2b2lkIHNlZWtUbyhkb3VibGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29y
ZTo6RXhjZXB0aW9uRGF0YSYpPiYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBsYXkoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJik+JiYpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgcGF1c2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJD
b3JlOjpFeGNlcHRpb25EYXRhJik+JiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhY2so
Y29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpFeGNl
cHRpb25EYXRhJik+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgam9pbihDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYpPiYmKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGxlYXZlKCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHNlZWtUbyhk
b3VibGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9u
RGF0YT4mJik+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGxheShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYpPiYmKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHBhdXNlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29y
ZTo6RXhjZXB0aW9uRGF0YT4mJik+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhY2so
Y29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpF
eGNlcHRpb25EYXRhPiYmKT4mJikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHBvc2l0aW9uU3Rh
dGVDaGFuZ2VkKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhUG9zaXRpb25TdGF0ZT4mKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlYWR5U3RhdGVDaGFuZ2VkKFdlYkNvcmU6Ok1lZGlhU2Vz
c2lvblJlYWR5U3RhdGUpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L01lZGlhL1JlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTWVkaWEvUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eS5j
cHAKaW5kZXggNzI3ZmUyZDc2MzFmNGU1ZGU3NDE3ZjYzMmQxMWM2MzlhNjRiMmUwNi4uMTA3M2U2
NjZjNDhiZDc3NzVhZjViMDAzOGY5ODg1NTU1MDQ5N2I5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTWVkaWEvUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWEvUmVtb3RlTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3JQcm94eS5jcHAKQEAgLTMwLDE2ICszMCwyMiBAQAogCiAjaW5jbHVkZSAiTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eVByaXZhdGUuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRp
YVNlc3Npb25Db29yZGluYXRvck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3JQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5Lmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRp
b25EYXRhLmg+CisjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgogI2luY2x1ZGUgPHd0Zi9N
YWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIAorbmFtZXNwYWNlIFdlYkNv
cmUgeworZXh0ZXJuIFdURkxvZ0NoYW5uZWwgTG9nTWVkaWE7Cit9CisKIG5hbWVzcGFjZSBXZWJL
aXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZlB0cjxSZW1vdGVNZWRpYVNlc3Np
b25Db29yZGluYXRvclByb3h5PiBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5Ojpj
cmVhdGUoV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveHksIFJlZjxNZWRpYVNlc3Npb25Db29yZGlu
YXRvclByb3h5UHJpdmF0ZT4mJiBwcml2YXRlQ29vcmRpbmF0b3IpCitSZWY8UmVtb3RlTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3JQcm94eT4gUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94
eTo6Y3JlYXRlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5LCBSZWY8TWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3JQcm94eVByaXZhdGU+JiYgcHJpdmF0ZUNvb3JkaW5hdG9yKQogewogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHkod2ViUGFn
ZVByb3h5LCBXVEZNb3ZlKHByaXZhdGVDb29yZGluYXRvcikpKTsKIH0KQEAgLTQ4LDggKzU0LDkg
QEAgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6UmVtb3RlTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3JQcm94eShXZWJQYWdlUHIKICAgICA6IG1fd2ViUGFnZVByb3h5KHdlYlBhZ2VQ
cm94eSkKICAgICAsIG1fcHJpdmF0ZUNvb3JkaW5hdG9yKFdURk1vdmUocHJpdmF0ZUNvb3JkaW5h
dG9yKSkKICAgICAsIG1fbG9nZ2VyKG1fd2ViUGFnZVByb3h5LmxvZ2dlcigpKQotICAgICwgbV9s
b2dJZGVudGlmaWVyKHVuaXF1ZUxvZ0lkZW50aWZpZXIoKSkKKyAgICAsIG1fbG9nSWRlbnRpZmll
cihMb2dnZXJIZWxwZXI6OnVuaXF1ZUxvZ0lkZW50aWZpZXIoKSkKIHsKKyAgICBtX3ByaXZhdGVD
b29yZGluYXRvci0+c2V0Q2xpZW50KG1ha2VXZWFrUHRyKHRoaXMpKTsKICAgICBtX3dlYlBhZ2VQ
cm94eS5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNl
c3Npb25Db29yZGluYXRvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZVBy
b3h5LndlYlBhZ2VJRCgpLCAqdGhpcyk7CiB9CiAKQEAgLTU4LDE0ICs2NSwxOSBAQCBSZW1vdGVN
ZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5Ojp+UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JQcm94eSgpCiAgICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VQcm94eS53ZWJQYWdlSUQoKSk7CiB9CiAKLXZvaWQg
UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6am9pbihDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmKT4mJikKK3ZvaWQgUmVtb3RlTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6am9pbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9w
dGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYpPiYmIGNhbGxiYWNrKQogewogICAgIGF1
dG8gaWRlbnRpZmllciA9IExPR0lERU5USUZJRVI7CiAgICAgQUxXQVlTX0xPRyhpZGVudGlmaWVy
KTsKIAotICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5qb2luKFtpZGVudGlmaWVyXSAoY29uc3Qg
V2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7CisgICAgbV9wcml2
YXRlQ29vcmRpbmF0b3ItPmpvaW4oW2lkZW50aWZpZXIsIHRoaXMsIHdlYWtUaGlzID0gbWFrZVdl
YWtQdHIodGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChhdXRvIGV4Y2VwdGlv
bikgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpIHsKKyAgICAgICAgICAgIGNhbGxi
YWNrKEV4Y2VwdGlvbkRhdGEgeyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIEFMV0FZU19MT0coaWRlbnRpZmllciwgImNvbXBs
ZXRpb24iKTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShleGNlcHRpb24pKTsK
KyAgICAgICAgY2FsbGJhY2soV1RGTW92ZShleGNlcHRpb24pKTsKICAgICB9KTsKIH0KIApAQCAt
NzYsNDcgKzg4LDY3IEBAIHZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6
bGVhdmUoKQogICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5sZWF2ZSgpOwogfQogCi12b2lkIFJl
bW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OmNvb3JkaW5hdGVTZWVrVG8oZG91Ymxl
IHRpbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0
YSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGlu
YXRvclByb3h5Ojpjb29yZGluYXRlU2Vla1RvKGRvdWJsZSB0aW1lLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYpPiYmIGNhbGxiYWNrKQog
ewogICAgIGF1dG8gaWRlbnRpZmllciA9IExPR0lERU5USUZJRVI7CiAgICAgQUxXQVlTX0xPRyhp
ZGVudGlmaWVyLCB0aW1lKTsKIAotICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5zZWVrVG8odGlt
ZSwgW2lkZW50aWZpZXJdIChjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiYgZXhjZXB0aW9u
KSBtdXRhYmxlIHsKKyAgICBtX3ByaXZhdGVDb29yZGluYXRvci0+c2Vla1RvKHRpbWUsIFtpZGVu
dGlmaWVyLCB0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spXSAoYXV0byBleGNlcHRpb24pIG11dGFibGUgeworICAgICAgICBpZiAo
IXdlYWtUaGlzKSB7CisgICAgICAgICAgICBjYWxsYmFjayhFeGNlcHRpb25EYXRhIHsgSW52YWxp
ZFN0YXRlRXJyb3IgfSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAg
ICBBTFdBWVNfTE9HKGlkZW50aWZpZXIsICJjb21wbGV0aW9uIik7Ci0gICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdURk1vdmUoZXhjZXB0aW9uKSk7CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUo
ZXhjZXB0aW9uKSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3JQcm94eTo6Y29vcmRpbmF0ZVBsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBX
ZWJDb3JlOjpFeGNlcHRpb25EYXRhJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90
ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OmNvb3JkaW5hdGVQbGF5KENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJik+JiYgY2FsbGJh
Y2spCiB7CiAgICAgYXV0byBpZGVudGlmaWVyID0gTE9HSURFTlRJRklFUjsKICAgICBBTFdBWVNf
TE9HKGlkZW50aWZpZXIpOwogCi0gICAgbV9wcml2YXRlQ29vcmRpbmF0b3ItPnBsYXkoW2lkZW50
aWZpZXJdIChjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiYgZXhjZXB0aW9uKSBtdXRhYmxl
IHsKKyAgICBtX3ByaXZhdGVDb29yZGluYXRvci0+cGxheShbaWRlbnRpZmllciwgdGhpcywgd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0g
KGF1dG8gZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykgeworICAg
ICAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uRGF0YSB7IEludmFsaWRTdGF0ZUVycm9yIH0pOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKICAgICAgICAgQUxXQVlTX0xPRyhpZGVu
dGlmaWVyLCAiY29tcGxldGlvbiIpOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KGV4Y2VwdGlvbikpOworICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGV4Y2VwdGlvbikpOwogICAg
IH0pOwogfQogCi12b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OmNvb3Jk
aW5hdGVQYXVzZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlv
bkRhdGEmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3JQcm94eTo6Y29vcmRpbmF0ZVBhdXNlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJik+JiYgY2FsbGJhY2spCiB7CiAgICAgYXV0
byBpZGVudGlmaWVyID0gTE9HSURFTlRJRklFUjsKICAgICBBTFdBWVNfTE9HKGlkZW50aWZpZXIp
OwogCi0gICAgbV9wcml2YXRlQ29vcmRpbmF0b3ItPnBhdXNlKFtpZGVudGlmaWVyXSAoY29uc3Qg
V2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7CisgICAgbV9wcml2
YXRlQ29vcmRpbmF0b3ItPnBhdXNlKFtpZGVudGlmaWVyLCB0aGlzLCB3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKHRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoYXV0byBleGNlcHRp
b24pIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzKSB7CisgICAgICAgICAgICBjYWxs
YmFjayhFeGNlcHRpb25EYXRhIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICBBTFdBWVNfTE9HKGlkZW50aWZpZXIsICJjb21w
bGV0aW9uIik7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZXhjZXB0aW9uKSk7
CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoZXhjZXB0aW9uKSk7CiAgICAgfSk7CiB9CiAKLXZv
aWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6Ojpjb29yZGluYXRlU2V0VHJh
Y2soY29uc3QgU3RyaW5nJiB0cmFjaywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJD
b3JlOjpFeGNlcHRpb25EYXRhJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZU1l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OmNvb3JkaW5hdGVTZXRUcmFjayhjb25zdCBTdHJp
bmcmIHRyYWNrLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2Vw
dGlvbkRhdGE+JiYpPiYmIGNhbGxiYWNrKQogewogICAgIGF1dG8gaWRlbnRpZmllciA9IExPR0lE
RU5USUZJRVI7CiAgICAgQUxXQVlTX0xPRyhpZGVudGlmaWVyKTsKIAotICAgIG1fcHJpdmF0ZUNv
b3JkaW5hdG9yLT5zZXRUcmFjayh0cmFjaywgW2lkZW50aWZpZXJdIChjb25zdCBXZWJDb3JlOjpF
eGNlcHRpb25EYXRhJiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICBtX3ByaXZhdGVDb29yZGlu
YXRvci0+c2V0VHJhY2sodHJhY2ssIFtpZGVudGlmaWVyLCB0aGlzLCB3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKHRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoYXV0byBleGNlcHRp
b24pIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzKSB7CisgICAgICAgICAgICBjYWxs
YmFjayhFeGNlcHRpb25EYXRhIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICBBTFdBWVNfTE9HKGlkZW50aWZpZXIsICJjb21w
bGV0aW9uIik7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZXhjZXB0aW9uKSk7
CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoZXhjZXB0aW9uKSk7CiAgICAgfSk7CiB9CiAKQEAg
LTEzOCw2ICsxNzAsMTIgQEAgdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5
OjpyZWFkeVN0YXRlQ2hhbmdlZChNZWRpYVNlc3Npb25SZWFkeVN0YXQKICAgICBtX3ByaXZhdGVD
b29yZGluYXRvci0+cmVhZHlTdGF0ZUNoYW5nZWQoc3RhdGUpOwogfQogCit2b2lkIFJlbW90ZU1l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OmNvb3JkaW5hdG9yU3RhdGVDaGFuZ2VkKFdlYkNv
cmU6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGUgc3RhdGUpCit7CisgICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSKTsKKyAgICBtX3ByaXZhdGVDb29yZGluYXRvci0+Y29vcmRpbmF0b3JT
dGF0ZUNoYW5nZWQoc3RhdGUpOworfQorCiB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yUHJveHk6OnNlZWtTZXNzaW9uVG9UaW1lKGRvdWJsZSB0aW1lLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQogewogICAgIG1fd2ViUGFnZVByb3h5LnNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OlNlZWtT
ZXNzaW9uVG9UaW1lIHsgdGltZSB9LCBjYWxsYmFjayk7CkBAIC0xNDgsMjAgKzE4NiwxOSBAQCB2
b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OnBsYXlTZXNzaW9uKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbAogICAgIG1fd2ViUGFnZVByb3h5LnNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OlBsYXlTZXNzaW9u
IHsgfSwgY2FsbGJhY2spOwogfQogCi12b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
UHJveHk6OnBhdXNlU2Vzc2lvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiBjYWxsYmFj
aykKK3ZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6cGF1c2VTZXNzaW9u
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCiB7CiAgICAgbV93ZWJQ
YWdlUHJveHkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25D
b29yZGluYXRvcjo6UGF1c2VTZXNzaW9uIHsgfSwgY2FsbGJhY2spOwogfQogCi12b2lkIFJlbW90
ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OnNldFNlc3Npb25UcmFjayhjb25zdCBTdHJp
bmcmIHRyYWNrSWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+IGNhbGxiYWNrKQordm9p
ZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5OjpzZXRTZXNzaW9uVHJhY2soY29u
c3QgU3RyaW5nJiB0cmFja0lkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxi
YWNrKQogewogICAgIG1fd2ViUGFnZVByb3h5LnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OlNldFNlc3Npb25UcmFjayB7IHRyYWNrSWQg
fSwgY2FsbGJhY2spOwogfQogCi12b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJv
eHk6OmNvb3JkaW5hdG9yU3RhdGVDaGFuZ2VkKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yU3RhdGUgc3RhdGUpCitXVEZMb2dDaGFubmVsJiBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGlu
YXRvclByb3h5Ojpsb2dDaGFubmVsKCkgY29uc3QKIHsKLSAgICBBTFdBWVNfTE9HKExPR0lERU5U
SUZJRVIpOwotICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5jb29yZGluYXRvclN0YXRlQ2hhbmdl
ZChzdGF0ZSk7CisgICAgcmV0dXJuIExvZ01lZGlhOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL01lZGlhL1JlbW90ZU1lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL01lZGlh
L1JlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHkuaAppbmRleCAwNjhhNWY1NmRkNGRi
YjY2NjU1MWE3ZjYxOTgzYjhlMzU3NGQwMjU0Li5jOWNmNmFkMjQ5NDFmMTNkNTZmZTZiNzMyNDU1
ZTZhMTUxNTdkNTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRpYS9S
ZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTWVkaWEvUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eS5oCkBAIC02
MCwxOSArNjAsMTkgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBSZW1vdGVNZWRp
YVNlc3Npb25Db29yZGluYXRvclByb3h5KFdlYlBhZ2VQcm94eSYsIFJlZjxNZWRpYVNlc3Npb25D
b29yZGluYXRvclByb3h5UHJpdmF0ZT4mJik7CiAKLSAgICB1c2luZyBDb29yZGluYXRlQ29tcGxl
dGlvbkhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkV4Y2Vw
dGlvbkRhdGEmKT47CisgICAgdXNpbmcgQ29vcmRpbmF0ZUNvbXBsZXRpb25IYW5kbGVyID0gQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmKT47
CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KICAgICB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCiAgICAgLy8g
UmVjZWl2ZXJzLgotICAgIHZvaWQgam9pbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdl
YkNvcmU6OkV4Y2VwdGlvbkRhdGEmKT4mJik7CisgICAgdm9pZCBqb2luKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJik+JiYpOwogICAgIHZv
aWQgbGVhdmUoKTsKLSAgICB2b2lkIGNvb3JkaW5hdGVTZWVrVG8oZG91YmxlLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmKT4mJik7Ci0gICAgdm9p
ZCBjb29yZGluYXRlUGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkV4
Y2VwdGlvbkRhdGEmKT4mJik7Ci0gICAgdm9pZCBjb29yZGluYXRlUGF1c2UoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJik+JiYpOwotICAgIHZvaWQg
Y29vcmRpbmF0ZVNldFRyYWNrKGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYpPiYmKTsKLSAgICB2b2lkIHBvc2l0aW9uU3Rh
dGVDaGFuZ2VkKE9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhUG9zaXRpb25TdGF0ZT4pOworICAgIHZv
aWQgY29vcmRpbmF0ZVNlZWtUbyhkb3VibGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9u
YWw8V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJik+JiYpOworICAgIHZvaWQgY29vcmRpbmF0ZVBs
YXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRh
PiYmKT4mJik7CisgICAgdm9pZCBjb29yZGluYXRlUGF1c2UoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmKT4mJik7CisgICAgdm9pZCBjb29y
ZGluYXRlU2V0VHJhY2soY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRp
b25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmKT4mJik7CisgICAgdm9pZCBwb3NpdGlvblN0
YXRlQ2hhbmdlZChjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpNZWRpYVBvc2l0aW9uU3RhdGU+Jik7
CiAgICAgdm9pZCByZWFkeVN0YXRlQ2hhbmdlZChXZWJDb3JlOjpNZWRpYVNlc3Npb25SZWFkeVN0
YXRlKTsKICAgICB2b2lkIHBsYXliYWNrU3RhdGVDaGFuZ2VkKFdlYkNvcmU6Ok1lZGlhU2Vzc2lv
blBsYXliYWNrU3RhdGUpOwogICAgIHZvaWQgY29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQoV2ViQ29y
ZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZSk7CkBAIC04MCw4ICs4MCwxMyBAQCBwcml2
YXRlOgogICAgIC8vIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yQ2xpZW50CiAgICAgdm9pZCBzZWVr
U2Vzc2lvblRvVGltZShkb3VibGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZp
bmFsOwogICAgIHZvaWQgcGxheVNlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JikgZmluYWw7Ci0gICAgdm9pZCBwYXVzZVNlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4pIGZpbmFsOwotICAgIHZvaWQgc2V0U2Vzc2lvblRyYWNrKGNvbnN0IFN0cmluZyYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+KSBmaW5hbDsKKyAgICB2b2lkIHBhdXNlU2Vzc2lv
bihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNl
c3Npb25UcmFjayhjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KSBmaW5hbDsKKworICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9s
b2dnZXIuZ2V0KCk7IH0KKyAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9CisgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkg
Y29uc3QgeyByZXR1cm4gIlJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHkiOyB9Cisg
ICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0OwogCiAgICAgV2ViUGFnZVByb3h5
JiBtX3dlYlBhZ2VQcm94eTsKICAgICBSZWY8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eVBy
aXZhdGU+IG1fcHJpdmF0ZUNvb3JkaW5hdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKaW5kZXggNzU4YTBmMzVhYTU5NzkzOTA3YTkxMTA1ODdlMjllY2I5OWIxZjFm
Ni4uYTA1NmQ5YTJlYmE2ODdhMjA1Zjc1Y2JlNzk5OTgyNzE1ZWNlZjIzMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMDM4MywxOSArMTAzODMsMTkgQEAg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgV2ViUGFnZVByb3h5OjpjcmVhdGVOZXR3b3Jr
RXh0ZW5zaW9uc1NhbmRib3hFeHRlbnMKICNlbmRpZgogCiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJ
T05fQ09PUkRJTkFUT1IpCi12b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3IoUmVmPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHlQcml2YXRlPiYmIHByaXZh
dGVDb29yZGluYXRvciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWFrUHRyPFJlbW90ZU1lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2Vi
UGFnZVByb3h5OjpjcmVhdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcihSZWY8TWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3JQcm94eVByaXZhdGU+JiYgcHJpdmF0ZUNvb3JkaW5hdG9yLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCgh
bV9tZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5KTsKIAogICAgIHNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6V2ViUGFnZTo6Q3JlYXRlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IocHJpdmF0
ZUNvb3JkaW5hdG9yLT5pZGVudGlmaWVyKCkpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhp
cyksIHByaXZhdGVDb29yZGluYXRvciA9IFdURk1vdmUocHJpdmF0ZUNvb3JkaW5hdG9yKSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCBzdWNjZXNz
KSBtdXRhYmxlIHsKIAogICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICFzdWNjZXNzKSB7Ci0gICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoZmFsc2UpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAg
d2Vha1RoaXMtPm1fbWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eSA9IFJlbW90ZU1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yUHJveHk6OmNyZWF0ZSgqd2Vha1RoaXMsIFdURk1vdmUocHJpdmF0ZUNv
b3JkaW5hdG9yKSk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VXZWFrUHRyKHdlYWtU
aGlzLT5tX21lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHkuZ2V0KCkpKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIodHJ1ZSk7CiAgICAgfSk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggZWE5YjBjMTRhMWRjNmRhODg3NDRjNmFmMDYzN2Zl
OTQxMjRmMTNmYy4uNGNhZmU3YzFiNzllY2NhYjM4ZmUwOWJhOTk4ZGM0MmFmYjBiNzM2YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE4ODgsNyArMTg4OCw3IEBA
IHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT05fQ09PUkRJTkFUT1Ip
Ci0gICAgdm9pZCBjcmVhdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcihSZWY8TWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3JQcm94eVByaXZhdGU+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vha1B0
cjxSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5Pik+JiYpOworICAgIHZvaWQgY3Jl
YXRlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IoUmVmPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJv
eHlQcml2YXRlPiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICNlbmRpZgog
CiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBjMmE1ZjUwOTYwNjI3MWY0MzMxN2JhNWJmODI2YjJhZmVh
Y2UxZDkyLi5hZjM3MTdmMzk4MjllOTY1NjM3YTMzM2VjNTlhNzIwMjMwYzNjNjcwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwNSw5
ICsxMDUsOSBAQAogCQkwNzI5N0ZBMzFDMTg2QURCMDAzRjA3MzUgLyogV0tVc2VyTWVkaWFQZXJt
aXNzaW9uQ2hlY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA3Mjk3RkExMUMxODZBREIwMDNGMDczNSAvKiBXS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVj
ay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3
NDg3OUI5MjM3M0E5MDkwMEY1Njc4RSAvKiBBcHBLaXRTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc0ODc5QjcyMzczQTkwOTAwRjU2NzhF
IC8qIEFwcEtpdFNvZnRMaW5rLmggKi87IH07CiAJCTA3NEU3NUZFMURGMjIxMTkwMEQzMThFQyAv
KiBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDc0RTc1RkIxREYxRkQxMzAwRDMxOEVDIC8qIFVzZXJNZWRpYVBy
b2Nlc3NNYW5hZ2VyLmggKi87IH07CisJCTA3NUE5Q0YzMjYxNjlCQUIwMDZERkEzQSAvKiBNZWRp
YVNlc3Npb25Db29yZGluYXRvclByb3h5UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc3QkE1NzAyNjBFOEY2MzAwNzJGMTlGIC8qIE1lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yUHJveHlQcml2YXRlLmggKi87IH07CiAJCTA3NkU4ODRFMUExM0NB
REYwMDVFOTBGQyAvKiBBUElDb250ZXh0TWVudUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2RTg4NEQxQTEzQ0FERjAwNUU5MEZDIC8qIEFQ
SUNvbnRleHRNZW51Q2xpZW50LmggKi87IH07CiAJCTA3NzI4MTFEMjEyMzRGRjYwMEM4RUYyRSAv
KiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBNDEwRjQzMTlBRjdCMjcwMDJFQkFCNSAvKiBV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCAqLzsgfTsKLQkJMDc3QkE1NkUyNjBF
NkQxQzAwNzJGMTlGIC8qIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MzZCNzU1MjYwRDAzQTAw
MEUwNjk5NCAvKiBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvci5jcHAgKi87IH07CiAJCTA3
OTIzMTQ4MjM5Q0JDQjgwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1l
c3NhZ2VzUmVwbGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDc5MjMxNDIyMzlDQkNCNTAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi87IH07CiAJCTA3OTIzMTRCMjM5Q0JDQjgwMDk1OThF
MiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzkyMzE0NTIzOUNC
Q0I3MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwICovOyB9OwogCQkwNzkyMzE0QzIzOUNCQ0I4MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDc5MjMxNDYyMzlDQkNCNzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaCAqLzsgfTsKQEAgLTExOTA2LDYgKzExOTA2LDcg
QEAKIAkJCQkwN0UxOUVGRDIzRDQwMUYxMDA5NEZGQjQgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlTWVzc2FnZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUI0RENFMTI1QTc5MjND
MDA3RDE3OEMgLyogTWVkaWFTYW1wbGVCeXRlUmFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUEx
NTc5OUJEMjU4NDQzMzIwMDUyODIzNiAvKiBNZWRpYVNhbXBsZUN1cnNvci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMDc1QTlDRjMyNjE2OUJBQjAwNkRGQTNBIC8qIE1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yUHJveHlQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTU3OTlCNzI1ODQ0MzMyMDA1
MjgyMzYgLyogTWVkaWFUcmFja1JlYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE5MzNERUYx
OTY1RUIzMTAwOEFDM0VBIC8qIE1lbnVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTlC
NDc5MDhEMjUzMTREODMwMEVDMTFBQiAvKiBNZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMuaCBp
biBIZWFkZXJzICovLApAQCAtMTM5ODEsNyArMTM5ODIsNiBAQAogCQkJCTA3MDE3ODlFMjNCRTlD
RkMwMDVGMEZBQSAvKiBSZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMDcxQkM1OEYyM0NFMUVBQTAwNjgwRDdDIC8qIFJlbW90ZU1lZGlhUGxheWVy
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUQ0RDczNzAyM0E5
RTU0NzAwNzE3QTI1IC8qIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyTWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTA3N0JBNTZFMjYwRTZEMUMwMDcyRjE5RiAvKiBSZW1v
dGVNZWRpYVNlc3Npb25Db29yZGluYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxREQyQTY2
MzI1NjEyNDZGMDBGRjdCNkYgLyogUmVtb3RlTWVkaWFTb3VyY2VQcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUMxMzM4NTE4NTkwQzQ2MDBGM0VDMDUgLyogUmVt
b3RlT2JqZWN0UmVnaXN0cnlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Q0Q4MjUyRTIyNUQ0OTE5MTAwODYyRkQ4IC8qIFJlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lck1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9NZWRpYVNlc3Npb24vUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3Iu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU2Vzc2lvbi9SZW1vdGVNZWRpYVNl
c3Npb25Db29yZGluYXRvci5jcHAKaW5kZXggMGNjM2Y4MWNmMWY0YTZiNTljNjM2ODdjNmIyMjk3
ZWY1ZDJiNDg0NS4uM2I5ZjUxMzYzZWJlNGI5M2U0ZDQ2ZDdhZmY3NjMxNjE5YjEyOWY4MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU2Vzc2lvbi9SZW1vdGVNZWRp
YVNlc3Npb25Db29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01l
ZGlhU2Vzc2lvbi9SZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvci5jcHAKQEAgLTcyLDE3ICs3
MiwxNyBAQCB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpqb2luKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZQogICAgICAgICB9CiAKICAgICAgICAgaWYg
KGV4Y2VwdGlvbikgewotICAgICAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uIHsgZXhjZXB0aW9u
LT5jb2RlLCBXVEZNb3ZlKGV4Y2VwdGlvbi0+bWVzc2FnZSkgfSk7CisgICAgICAgICAgICBjYWxs
YmFjayhleGNlcHRpb24tPnRvRXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKICAgICAgICAgY2FsbGJhY2soeyB9KTsKLSAgICB9LCAwKTsKKyAgICB9KTsKIH0K
IAogdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6bGVhdmUoKQogewotICAgIG1f
cGFnZS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5OjpM
ZWF2ZSB7IH0sIDApOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Np
b25Db29yZGluYXRvclByb3h5OjpMZWF2ZSB7IH0pOwogfQogCiB2b2lkIFJlbW90ZU1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yOjpzZWVrVG8oZG91YmxlIHRpbWUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uPiYmKT4mJiBjYWxsYmFjaykKQEAgLTk1LDEy
ICs5NSwxMiBAQCB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpzZWVrVG8oZG91
YmxlIHRpbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTwogICAgICAgICB9CiAKICAgICAgICAg
aWYgKGV4Y2VwdGlvbikgewotICAgICAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uIHsgZXhjZXB0
aW9uLT5jb2RlLCBXVEZNb3ZlKGV4Y2VwdGlvbi0+bWVzc2FnZSkgfSk7CisgICAgICAgICAgICBj
YWxsYmFjayhleGNlcHRpb24tPnRvRXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKICAgICAgICAgY2FsbGJhY2soeyB9KTsKLSAgICB9LCAwKTsKKyAgICB9KTsK
IH0KIAogdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6cGxheShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbj4mJik+JiYgY2FsbGJhY2sp
CkBAIC0xMTMsMTIgKzExMywxMiBAQCB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
OjpwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZQogICAgICAgICB9
CiAKICAgICAgICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAgICAgICAgY2FsbGJhY2soRXhjZXB0
aW9uIHsgZXhjZXB0aW9uLT5jb2RlLCBXVEZNb3ZlKGV4Y2VwdGlvbi0+bWVzc2FnZSkgfSk7Cisg
ICAgICAgICAgICBjYWxsYmFjayhleGNlcHRpb24tPnRvRXhjZXB0aW9uKCkpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgY2FsbGJhY2soeyB9KTsKLSAgICB9LCAw
KTsKKyAgICB9KTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6cGF1
c2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb24+JiYp
PiYmIGNhbGxiYWNrKQpAQCAtMTMxLDEyICsxMzEsMTIgQEAgdm9pZCBSZW1vdGVNZWRpYVNlc3Np
b25Db29yZGluYXRvcjo6cGF1c2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJD
b3IKICAgICAgICAgfQogCiAgICAgICAgIGlmIChleGNlcHRpb24pIHsKLSAgICAgICAgICAgIGNh
bGxiYWNrKEV4Y2VwdGlvbiB7IGV4Y2VwdGlvbi0+Y29kZSwgV1RGTW92ZShleGNlcHRpb24tPm1l
c3NhZ2UpIH0pOworICAgICAgICAgICAgY2FsbGJhY2soZXhjZXB0aW9uLT50b0V4Y2VwdGlvbigp
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGNhbGxiYWNrKHsg
fSk7Ci0gICAgfSwgMCk7CisgICAgfSk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3I6OnNldFRyYWNrKGNvbnN0IFN0cmluZyYgdHJhY2tJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbj4mJik+JiYgY2FsbGJh
Y2spCkBAIC0xNDksMzYgKzE0OSwzNiBAQCB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yOjpzZXRUcmFjayhjb25zdCBTdHJpbmcmIHRyYWNrSWRlbnRpZmllciwgQ29tcAogICAgICAg
ICB9CiAKICAgICAgICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAgICAgICAgY2FsbGJhY2soRXhj
ZXB0aW9uIHsgZXhjZXB0aW9uLT5jb2RlLCBXVEZNb3ZlKGV4Y2VwdGlvbi0+bWVzc2FnZSkgfSk7
CisgICAgICAgICAgICBjYWxsYmFjayhleGNlcHRpb24tPnRvRXhjZXB0aW9uKCkpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgY2FsbGJhY2soeyB9KTsKLSAgICB9
LCAwKTsKKyAgICB9KTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6
cG9zaXRpb25TdGF0ZUNoYW5nZWQoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFQb3NpdGlv
blN0YXRlPiYgc3RhdGUpCiB7CiAgICAgQUxXQVlTX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElG
SUVSKTsKLSAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3JQcm94eTo6UG9zaXRpb25TdGF0ZUNoYW5nZWQgeyBzdGF0ZSB9LCAwKTsKKyAgICBtX3Bh
Z2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6UG9z
aXRpb25TdGF0ZUNoYW5nZWQgeyBzdGF0ZSB9KTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVNlc3Np
b25Db29yZGluYXRvcjo6cmVhZHlTdGF0ZUNoYW5nZWQoV2ViQ29yZTo6TWVkaWFTZXNzaW9uUmVh
ZHlTdGF0ZSBzdGF0ZSkKIHsKICAgICBBTFdBWVNfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJ
RVIsIHN0YXRlKTsKLSAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3JQcm94eTo6UmVhZHlTdGF0ZUNoYW5nZWQgeyBzdGF0ZSB9LCAwKTsKKyAgICBt
X3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6
UmVhZHlTdGF0ZUNoYW5nZWQgeyBzdGF0ZSB9KTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVNlc3Np
b25Db29yZGluYXRvcjo6cGxheWJhY2tTdGF0ZUNoYW5nZWQoV2ViQ29yZTo6TWVkaWFTZXNzaW9u
UGxheWJhY2tTdGF0ZSBzdGF0ZSkKIHsKICAgICBBTFdBWVNfTE9HX0lGX1BPU1NJQkxFKExPR0lE
RU5USUZJRVIsIHN0YXRlKTsKLSAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6UGxheWJhY2tTdGF0ZUNoYW5nZWQgeyBzdGF0ZSB9LCAw
KTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JQcm94eTo6UGxheWJhY2tTdGF0ZUNoYW5nZWQgeyBzdGF0ZSB9KTsKIH0KIAogdm9pZCBSZW1v
dGVNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6Y29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQoV2ViQ29y
ZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZSBzdGF0ZSkKIHsKICAgICBBTFdBWVNfTE9H
X0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsIHN0YXRlKTsKLSAgICBtX3BhZ2Uuc2VuZChNZXNz
YWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6Q29vcmRpbmF0b3JTdGF0
ZUNoYW5nZWQgeyBzdGF0ZSB9LCAwKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3Rl
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6Q29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQgeyBz
dGF0ZSB9KTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6c2Vla1Nl
c3Npb25Ub1RpbWUoZG91YmxlIHRpbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggOTk4YWNmM2ZmZjA0Zjg2ODAwNjNhYmM3MDc0MTdmMDQ3NDcxZWY0Yi4u
NmUyYTA3ZTU5ODI0ZDI4ZTkzNzJmMGNjMDQ2M2Y1ZGI5MzI4MmJjNyAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIx
LTA0LTAyICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAg
IFttYWNPU10gQWRkIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yIEFQSSB0ZXN0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQxNDAKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzc2MTcxMTczPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1Rlc3RXZWJLaXRBUEkueGNzY2hlbWU6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JUZXN0Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bX1dLTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yIGxhc3RTdGF0ZUNoYW5nZV0pOgorICAgICAgICAoLVtfV0tNb2NrTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3IgbGFzdE1ldGhvZENhbGxlZF0pOgorICAgICAgICAoLVtfV0tNb2NrTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3IgaWRlbnRpZmllcl0pOgorICAgICAgICAoLVtfV0tNb2NrTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3Igam9pbldpdGhDb21wbGV0aW9uOl0pOgorICAgICAgICAoLVtfV0tNb2Nr
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IgbGVhdmVdKToKKyAgICAgICAgKC1bX1dLTW9ja01lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yIHNlZWtUbzp3aXRoQ29tcGxldGlvbjpdKToKKyAgICAgICAgKC1b
X1dLTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yIHBsYXlXaXRoQ29tcGxldGlvbjpdKToKKyAg
ICAgICAgKC1bX1dLTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yIHBhdXNlV2l0aENvbXBsZXRp
b246XSk6CisgICAgICAgICgtW19XS01vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvciBzZXRUcmFj
azp3aXRoQ29tcGxldGlvbjpdKToKKyAgICAgICAgKC1bX1dLTW9ja01lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yIHBvc2l0aW9uU3RhdGVDaGFuZ2VkOl0pOgorICAgICAgICAoLVtfV0tNb2NrTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3IgcmVhZHlTdGF0ZUNoYW5nZWQ6XSk6CisgICAgICAgICgtW19XS01v
Y2tNZWRpYVNlc3Npb25Db29yZGluYXRvciBwbGF5YmFja1N0YXRlQ2hhbmdlZDpdKToKKyAgICAg
ICAgKC1bX1dLTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yIGNvb3JkaW5hdG9yU3RhdGVDaGFu
Z2VkOl0pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JU
ZXN0OjpjcmVhdGVDb29yZGluYXRvcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNl
c3Npb25Db29yZGluYXRvclRlc3Q6OndlYlZpZXcgY29uc3QpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JUZXN0Ojpjb29yZGluYXRvciBjb25zdCk6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3Q6OmxvYWRQ
YWdlQW5kQmVjb21lUmVhZHkpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3JUZXN0OjpydW5TY3JpcHRXaXRoVXNlckdlc3R1cmUpOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JUZXN0OjpwbGF5KToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdDo6cGF1c2UpOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JUZXN0OjpsaXN0ZW5G
b3JFdmVudE1lc3NhZ2VzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yVGVzdDo6ZXZlbnRMaXN0ZW5lcldhc0NhbGxlZCk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpNZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3Q6OmNsZWFyRXZlbnRMaXN0ZW5lclN0
YXRlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVz
dDo6ZXhlY3V0ZVVudGlsKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yVGVzdDo6d2FpdEZvckV2ZW50TGlzdGVuZXJUb0JlQ2FsbGVkKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdDo6bGlzdGVuRm9yTWVz
c2FnZXNQb3N0ZWQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3JUZXN0OjpjbGVhck1lc3NhZ2VzUG9zdGVkKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdDo6bGlzdGVuRm9yU2Vzc2lvbkhhbmRsZXJNZXNz
YWdlcyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25Db29yZGluYXRvclRl
c3Q6OnNlc3Npb25IYW5kbGVyV2FzQ2FsbGVkKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdDo6d2FpdEZvclNlc3Npb25IYW5kbGVyVG9CZUNhbGxl
ZCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3Q6
Omxpc3RlbkZvclByb21pc2VNZXNzYWdlcyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRp
YVNlc3Npb25Db29yZGluYXRvclRlc3Q6OmNsZWFyUHJvbWlzZU1lc3NhZ2VzKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdDo6cHJvbWlzZVdhc1Jl
c29sdmVkKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
VGVzdDo6cHJvbWlzZVdhc1JlamVjdGVkKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yVGVzdDo6d2FpdEZvclByb21pc2UpOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL21lZGlhLXJlbW90ZS5odG1sOgorCiAyMDIxLTAzLTMxICBCSiBCdXJnICA8YmJ1cmdAYXBw
bGUuY29tPgogCiAgICAgICAgIFN0eWxlIGNoZWNrZXIgc2hvdWxkIHdhcm4gYWJvdXQgdXNlIG9m
IGZ1dHVyZSBPUyB2ZXJzaW9ucyBpbiBXS19BUElfQVZBSUxBQkxFCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGQyMzg4ZWY4ZWZjOWRhYmQ5NTRkMjJkOTE5ZjNmNzQ0MDViMDJmMzguLjgyNDFm
ZmIzMjgzMTJlMjMwOGNhYTcyYTM3MzFkYmJjNThlOTI3OTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC01NCw2ICs1NCw3IEBACiAJCTA3NDk5NDQyMUVBNTAzNEIwMDBEQTQ0RiAvKiBvbmRl
dmljZWNoYW5nZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDRBNDEwRjREMTlBRjdCRUYwMDJFQkFCNiAvKiBvbmRldmljZWNoYW5nZS5o
dG1sICovOyB9OwogCQkwNzQ5OTQ0MjFFQTUwMzRCMDAwREE0NUUgLyogZ2V0VXNlck1lZGlhQXVk
aW9WaWRlb0NhcHR1cmUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0QTQxMEY0RDE5QUY3QkVGMDAyRUJBQzUgLyogZ2V0VXNlck1lZGlh
QXVkaW9WaWRlb0NhcHR1cmUuaHRtbCAqLzsgfTsKIAkJMDc0OTk0NTIxRUE1MDM0QjAwMERBNDRF
IC8qIGdldFVzZXJNZWRpYTIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MUJBRjRFMjI1QUM5REI4MDBEODJGMzIgLyogZ2V0VXNlck1l
ZGlhMi5odG1sICovOyB9OworCQkwNzVBOUNGNTI2MTc3MjE4MDA2REZBM0EgLyogTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3JUZXN0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDc1QTlDRjQyNjE3NzIxNzAwNkRGQTNBIC8qIE1lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yVGVzdC5tbSAqLzsgfTsKIAkJMDc2RTUwN0YxRjQ1MTNENjAwNkU5RjVBIC8qIExvZ2dp
bmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2
RTUwN0UxRjQ1MDMxRTAwNkU5RjVBIC8qIExvZ2dpbmcuY3BwICovOyB9OwogCQkwNzdBNUFGMzIz
MDYzOEE2MDBBNzEwNUMgLyogQWNjZXNzaWJpbGl0eVRlc3RQbHVnaW4ubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzQ2NjQ1ODIyRkY2MzA1MDBFMzQ1
MUEgLyogQWNjZXNzaWJpbGl0eVRlc3RQbHVnaW4ubW0gKi87IH07CiAJCTA3OTQ3NDBEMjVDQTBC
REUwMEM1OTdFQiAvKiBNZWRpYVNlc3Npb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwNzk0NzQwQzI1Q0EwQkRFMDBDNTk3RUIgLyogTWVkaWFTZXNz
aW9uLm1tICovOyB9OwpAQCAtMTc1Niw2ICsxNzU3LDcgQEAKIAkJMDc0NjY0NTgyMkZGNjMwNTAw
RTM0NTFBIC8qIEFjY2Vzc2liaWxpdHlUZXN0UGx1Z2luLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gQWNjZXNzaWJpbGl0eVRlc3RQbHVnaW4ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA3NDkyQjM5MURGOEFEQTQwMDYzM0RFMSAvKiBlbnVtZXJhdGVNZWRpYURldmljZXMuaHRt
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IGVudW1lcmF0ZU1lZGlhRGV2aWNlcy5odG1s
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzQ5MkIzQTFERjhBRTJEMDA2MzNERTEg
LyogRW51bWVyYXRlTWVkaWFEZXZpY2VzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEVudW1lcmF0ZU1lZGlhRGV2aWNlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTA3NUE5Q0Y0MjYxNzcyMTcwMDZERkEzQSAvKiBNZWRpYVNlc3Npb25Db29yZGlu
YXRvclRlc3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZWRp
YVNlc3Npb25Db29yZGluYXRvclRlc3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTA3NjZERDFGMUE1QUQ1MjAwMDIzRTNCQiAvKiBQZW5kaW5nQVBJUmVxdWVzdFVSTC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQZW5kaW5nQVBJUmVxdWVzdFVSTC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NkU1MDdFMUY0NTAzMUUwMDZFOUY1
QSAvKiBMb2dnaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExv
Z2dpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzk0NzQwQzI1Q0EwQkRF
MDBDNTk3RUIgLyogTWVkaWFTZXNzaW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gTWVkaWFTZXNzaW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNDI2Nyw2ICs0MjY5LDcgQEAKIAkJCQkzM0RDODkxMDE0MTk1M0EzMDA3NDdFRjcgLyogTG9h
ZENhbmNlbGVkTm9TZXJ2ZXJSZWRpcmVjdENhbGxiYWNrLmNwcCAqLywKIAkJCQkzM0RDODkxMzE0
MTk1NzlGMDA3NDdFRjcgLyogTG9hZENhbmNlbGVkTm9TZXJ2ZXJSZWRpcmVjdENhbGxiYWNrX0J1
bmRsZS5jcHAgKi8sCiAJCQkJOEFBMjhDMTkxNkQyRkE3QjAwMkZGNERCIC8qIExvYWRQYWdlT25D
cmFzaC5jcHAgKi8sCisJCQkJMDc1QTlDRjQyNjE3NzIxNzAwNkRGQTNBIC8qIE1lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yVGVzdC5tbSAqLywKIAkJCQlDREM5NDQyQzFFRjFGQzA4MDA1OUMzQzQgLyog
TWVkaWFTdHJlYW1UcmFja0RldGFjaGVkLm1tICovLAogCQkJCTdBNTYyMzEwMUFENUFGM0UwMDk2
QjkyMCAvKiBNZW51VHlwZXNGb3JNb3VzZUV2ZW50cy5jcHAgKi8sCiAJCQkJNTFDQjRBRDcxQjNB
MDc5QzAwQzFCMUM2IC8qIE1vZGFsQWxlcnRzU1BJLmNwcCAqLywKQEAgLTU0ODgsNiArNTQ5MSw3
IEBACiAJCQkJMDdFRjc2RDUyNTQwRkMwNjAwNTNFRDUzIC8qIE1lZGlhTXV0ZWRTdGF0ZS5tbSBp
biBTb3VyY2VzICovLAogCQkJCUNEQTMxNTk4MUVENTM2NTEwMDlGNjBEMyAvKiBNZWRpYVBsYXli
YWNrU2xlZXBBc3NlcnRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQkwNzk0NzQwRDI1Q0EwQkRF
MDBDNTk3RUIgLyogTWVkaWFTZXNzaW9uLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMDc1QTlDRjUy
NjE3NzIxODAwNkRGQTNBIC8qIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdC5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUNEQzk0NDJFMUVGMUZDMDgwMDU5QzNDNCAvKiBNZWRpYVN0cmVhbVRyYWNr
RGV0YWNoZWQubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MUJFOUU2NjIzNzYwODlGMDBCNEUxMTcg
LyogTWVkaWFUeXBlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQzUxQTQxMUE3RTAwNDQ3
QzRDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvVGVzdFdlYktpdEFQSS54Y3NjaGVt
ZSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2oveGNzaGFyZWRk
YXRhL3hjc2NoZW1lcy9UZXN0V2ViS2l0QVBJLnhjc2NoZW1lCmluZGV4IDVmNWVjMmU0YWVjMzll
ZGMzOWZjN2Y4NWM3ZDk2N2U1YzQ5NDY5NGUuLjg2ODllMDQxMzg3ZTljYjBiYmIxMDY5Y2ExZGYz
NzJmNjkwNDgxMmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9UZXN0V2ViS2l0QVBJLnhjc2NoZW1l
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2oveGNzaGFy
ZWRkYXRhL3hjc2NoZW1lcy9UZXN0V2ViS2l0QVBJLnhjc2NoZW1lCkBAIC01MCw2ICs1MCwxMiBA
QAogICAgICAgICAgICAgUmVmZXJlbmNlZENvbnRhaW5lciA9ICJjb250YWluZXI6VGVzdFdlYktp
dEFQSS54Y29kZXByb2oiPgogICAgICAgICAgPC9CdWlsZGFibGVSZWZlcmVuY2U+CiAgICAgICA8
L0J1aWxkYWJsZVByb2R1Y3RSdW5uYWJsZT4KKyAgICAgIDxDb21tYW5kTGluZUFyZ3VtZW50cz4K
KyAgICAgICAgIDxDb21tYW5kTGluZUFyZ3VtZW50CisgICAgICAgICAgICBhcmd1bWVudCA9ICIt
LWd0ZXN0X2ZpbHRlcj1NZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3QuKiIKKyAgICAgICAgICAg
IGlzRW5hYmxlZCA9ICJZRVMiPgorICAgICAgICAgPC9Db21tYW5kTGluZUFyZ3VtZW50PgorICAg
ICAgPC9Db21tYW5kTGluZUFyZ3VtZW50cz4KICAgIDwvTGF1bmNoQWN0aW9uPgogICAgPFByb2Zp
bGVBY3Rpb24KICAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbiA9ICJSZWxlYXNlIgpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JUZXN0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3JUZXN0Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1NmI4MzNhN2QzYjY0MmE1OGQwZmU1YzE5
ZTg1ZWE2NTBlZjExYzUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdC9NZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3QubW0KQEAgLTAsMCArMSwzODgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9T
RVNTSU9OX0NPT1JESU5BVE9SKQorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2lt
cG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2
YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KKyNpbXBvcnQg
PFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJp
dmF0ZUZvclRlc3RpbmcuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tFeHBlcmltZW50YWxGZWF0dXJl
Lmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg+CisjaW1w
b3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9IYXNoU2V0Lmg+CisjaW1wb3J0IDx3
dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgorI2ltcG9ydCA8d3RmL1dl
YWtPYmpDUHRyLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisKK0BpbnRlcmZh
Y2UgX1dLTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yIDogTlNPYmplY3QgPF9XS01lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yPgorQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmlu
ZyAqbGFzdFN0YXRlQ2hhbmdlOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0
cmluZyAqbGFzdE1ldGhvZENhbGxlZDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGZhaWxz
Q29tbWFuZHM7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBfV0tNb2NrTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3IgeworICAgIFJldGFpblB0cjxOU1N0cmluZz4gX2xhc3RTdGF0ZUNoYW5nZTsKKyAg
ICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9sYXN0TWV0aG9kQ2FsbGVkOworfQorCitAc3ludGhlc2l6
ZSBkZWxlZ2F0ZTsKKworLSAoTlNTdHJpbmcgKilsYXN0U3RhdGVDaGFuZ2UKK3sKKyAgICByZXR1
cm4gc3RkOjpleGNoYW5nZShfbGFzdFN0YXRlQ2hhbmdlLCBAIiIpLmdldCgpOworfQorCistIChO
U1N0cmluZyAqKWxhc3RNZXRob2RDYWxsZWQKK3sKKyAgICByZXR1cm4gc3RkOjpleGNoYW5nZShf
bGFzdE1ldGhvZENhbGxlZCwgQCIiKS5nZXQoKTsKK30KKworLSAoTlNTdHJpbmcgKilpZGVudGlm
aWVyCit7CisgICAgcmV0dXJuIEAiVGVzdENvb3JkaW5hdG9yIjsKK30KKworLSAodm9pZClqb2lu
V2l0aENvbXBsZXRpb246KHZvaWQoXiBfTm9ubnVsbCkoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIK
K3sKKyAgICBfbGFzdE1ldGhvZENhbGxlZCA9IEAiam9pbiI7CisgICAgZGlzcGF0Y2hfYXN5bmMo
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXigpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoIV9mYWlsc0NvbW1hbmRzKTsKKyAgICB9KTsKK30KKworLSAodm9pZClsZWF2ZQoreworICAg
IF9sYXN0TWV0aG9kQ2FsbGVkID0gQCJsZWF2ZSI7Cit9CisKKy0gKHZvaWQpc2Vla1RvOihkb3Vi
bGUpdGltZSB3aXRoQ29tcGxldGlvbjoodm9pZCheIF9Ob25udWxsKShCT09MKSljb21wbGV0aW9u
SGFuZGxlcgoreworICAgIF9sYXN0TWV0aG9kQ2FsbGVkID0gQCJzZWVrVG8iOworICAgIGRpc3Bh
dGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF4oKSB7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKCFfZmFpbHNDb21tYW5kcyk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQpcGxh
eVdpdGhDb21wbGV0aW9uOih2b2lkKF4gX05vbm51bGwpKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVy
Cit7CisgICAgX2xhc3RNZXRob2RDYWxsZWQgPSBAInBsYXkiOworICAgIGRpc3BhdGNoX2FzeW5j
KGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF4oKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKCFfZmFpbHNDb21tYW5kcyk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQpcGF1c2VXaXRoQ29t
cGxldGlvbjoodm9pZCheIF9Ob25udWxsKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgoreworICAg
IF9sYXN0TWV0aG9kQ2FsbGVkID0gQCJwYXVzZSI7CisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgXigpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoIV9m
YWlsc0NvbW1hbmRzKTsKKyAgICB9KTsKK30KKworLSAodm9pZClzZXRUcmFjazooTlNTdHJpbmcq
KXRyYWNrSWRlbnRpZmllciB3aXRoQ29tcGxldGlvbjoodm9pZCheIF9Ob25udWxsKShCT09MKSlj
b21wbGV0aW9uSGFuZGxlcgoreworICAgIF9sYXN0TWV0aG9kQ2FsbGVkID0gQCJzZXRUcmFjayI7
CisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXigpIHsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoIV9mYWlsc0NvbW1hbmRzKTsKKyAgICB9KTsKK30KKwor
LSAodm9pZClwb3NpdGlvblN0YXRlQ2hhbmdlZDoobnVsbGFibGUgX1dLTWVkaWFQb3NpdGlvblN0
YXRlICopc3RhdGUKK3sKKyAgICBfbGFzdFN0YXRlQ2hhbmdlID0gQCJwb3NpdGlvblN0YXRlQ2hh
bmdlZCI7Cit9CisKKy0gKHZvaWQpcmVhZHlTdGF0ZUNoYW5nZWQ6KF9XS01lZGlhU2Vzc2lvblJl
YWR5U3RhdGUpc3RhdGUKK3sKKyAgICBfbGFzdFN0YXRlQ2hhbmdlID0gQCJyZWFkeVN0YXRlQ2hh
bmdlZCI7Cit9CisKKy0gKHZvaWQpcGxheWJhY2tTdGF0ZUNoYW5nZWQ6KF9XS01lZGlhU2Vzc2lv
blBsYXliYWNrU3RhdGUpc3RhdGUKK3sKKyAgICBfbGFzdFN0YXRlQ2hhbmdlID0gQCJwbGF5YmFj
a1N0YXRlQ2hhbmdlZCI7Cit9CisKKy0gKHZvaWQpY29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQ6KF9X
S01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGUpc3RhdGUKK3sKKyAgICBfbGFzdFN0YXRlQ2hh
bmdlID0gQCJjb29yZGluYXRvclN0YXRlQ2hhbmdlZCI7Cit9CitAZW5kCisKK25hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKKworY2xhc3MgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JUZXN0IDogcHVi
bGljIHRlc3Rpbmc6OlRlc3QgeworcHVibGljOgorICAgIHZvaWQgU2V0VXAoKSBmaW5hbAorICAg
IHsKKyAgICAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICAgICAgYXV0byBwcmVmZXJlbmNlcyA9IFtjb25m
aWd1cmF0aW9uIHByZWZlcmVuY2VzXTsKKworICAgICAgICBmb3IgKF9XS0V4cGVyaW1lbnRhbEZl
YXR1cmUgKmZlYXR1cmUgaW4gW1dLUHJlZmVyZW5jZXMgX2V4cGVyaW1lbnRhbEZlYXR1cmVzXSkg
eworICAgICAgICAgICAgaWYgKFtmZWF0dXJlLmtleSBpc0VxdWFsVG9TdHJpbmc6QCJNZWRpYVNl
c3Npb25Db29yZGluYXRvckVuYWJsZWQiXSkKKyAgICAgICAgICAgICAgICBbcHJlZmVyZW5jZXMg
X3NldEVuYWJsZWQ6WUVTIGZvckZlYXR1cmU6ZmVhdHVyZV07CisgICAgICAgICAgICBpZiAoW2Zl
YXR1cmUua2V5IGlzRXF1YWxUb1N0cmluZzpAIk1lZGlhU2Vzc2lvbkVuYWJsZWQiXSkKKyAgICAg
ICAgICAgICAgICBbcHJlZmVyZW5jZXMgX3NldEVuYWJsZWQ6WUVTIGZvckZlYXR1cmU6ZmVhdHVy
ZV07CisgICAgICAgIH0KKworICAgICAgICBfd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgNDAwLCA0MDApIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIH0KKworICAgIHZvaWQgVGVhckRv
d24oKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBh
cnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgICAgICBm
b3IgKGF1dG8mIHNlc3Npb25NZXNzYWdlIDogY29weVRvVmVjdG9yKF9zZXNzaW9uTWVzc2FnZXNQ
b3N0ZWQpKQorICAgICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpzZXNzaW9uTWVzc2FnZV07Cisg
ICAgICAgIFtfd2ViVmlldyBjbGVhck1lc3NhZ2VIYW5kbGVyczphcnJheS5nZXQoKV07CisKKyAg
ICAgICAgW2FycmF5IHJlbW92ZUFsbE9iamVjdHNdOworICAgICAgICBmb3IgKGF1dG8mIGV2ZW50
TGlzdGVuZXIgOiBjb3B5VG9WZWN0b3IoX2V2ZW50TGlzdGVuZXJzQ2FsbGVkKSkKKyAgICAgICAg
ICAgIFthcnJheSBhZGRPYmplY3Q6ZXZlbnRMaXN0ZW5lcl07CisgICAgICAgIFtfd2ViVmlldyBj
bGVhck1lc3NhZ2VIYW5kbGVyczphcnJheS5nZXQoKV07CisgICAgfQorCisgICAgdm9pZCBjcmVh
dGVDb29yZGluYXRvcigpCisgICAgeworICAgICAgICBfY29vcmRpbmF0b3IgPSBbW19XS01vY2tN
ZWRpYVNlc3Npb25Db29yZGluYXRvciBhbGxvY10gaW5pdF07CisKKyAgICAgICAgX19ibG9jayBi
b29sIHJlc3VsdCA9IGZhbHNlOworICAgICAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOwor
ICAgICAgICBbd2ViVmlldygpIF9jcmVhdGVNZWRpYVNlc3Npb25Db29yZGluYXRvckZvclRlc3Rp
bmc6KGlkIDxfV0tNZWRpYVNlc3Npb25Db29yZGluYXRvcj4pX2Nvb3JkaW5hdG9yLmdldCgpIGNv
bXBsZXRpb25IYW5kbGVyOl4oQk9PTCBzdWNjZXNzKSB7CisgICAgICAgICAgICByZXN1bHQgPSBz
dWNjZXNzOworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH1dOworICAgICAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisgICAgICAgIEVYUEVDVF9UUlVFKHJl
c3VsdCk7CisgICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAgTlNMb2coQCItW19jcmVh
dGVNZWRpYVNlc3Npb25Db29yZGluYXRvckZvclRlc3Rpbmc6Y29tcGxldGlvbkhhbmRsZXI6XSBm
YWlsZWQhIik7CisKKyAgICAgICAgd2FpdEZvckV2ZW50TGlzdGVuZXJUb0JlQ2FsbGVkKCJjb29y
ZGluYXRvcmNoYW5nZSJfcyk7CisgICAgICAgIEFTU0VSVF9UUlVFKGV2ZW50TGlzdGVuZXJXYXND
YWxsZWQoImNvb3JkaW5hdG9yY2hhbmdlIl9zKSk7CisgICAgfQorCisgICAgVGVzdFdLV2ViVmll
dyogd2ViVmlldygpIGNvbnN0IHsgcmV0dXJuIF93ZWJWaWV3LmdldCgpOyB9CisgICAgX1dLTW9j
a01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKiBjb29yZGluYXRvcigpIGNvbnN0IHsgcmV0dXJuIF9j
b29yZGluYXRvci5nZXQoKTsgfQorCisgICAgdm9pZCBsb2FkUGFnZUFuZEJlY29tZVJlYWR5KGNv
bnN0IFN0cmluZyYgcGFnZU5hbWUpCisgICAgeworICAgICAgICBbX3dlYlZpZXcgc3luY2hyb25v
dXNseUxvYWRUZXN0UGFnZU5hbWVkOnBhZ2VOYW1lXTsKKworICAgICAgICBib29sIGNhbnBsYXl0
aHJvdWdoID0gZmFsc2U7CisgICAgICAgIFt3ZWJWaWV3KCkgcGVyZm9ybUFmdGVyUmVjZWl2aW5n
TWVzc2FnZTpAImNhbnBsYXl0aHJvdWdoIGV2ZW50IiBhY3Rpb246WyZdIHsKKyAgICAgICAgICAg
IGNhbnBsYXl0aHJvdWdoID0gdHJ1ZTsKKyAgICAgICAgfV07CisgICAgICAgIHJ1blNjcmlwdFdp
dGhVc2VyR2VzdHVyZSgibG9hZCgpIik7CisgICAgICAgIFV0aWw6OnJ1bigmY2FucGxheXRocm91
Z2gpOworICAgIH0KKworICAgIHZvaWQgcnVuU2NyaXB0V2l0aFVzZXJHZXN0dXJlKGNvbnN0IFN0
cmluZyYgc2NyaXB0KQorICAgIHsKKyAgICAgICAgYm9vbCBjb21wbGV0ZSA9IGZhbHNlOworICAg
ICAgICBbX3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OnNjcmlwdCBjb21wbGV0aW9uSGFuZGxl
cjpbJl0gKGlkLCBOU0Vycm9yICopIHsgY29tcGxldGUgPSB0cnVlOyB9XTsKKyAgICAgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZjb21wbGV0ZSk7CisgICAgfQorCisgICAgdm9pZCBwbGF5
KCkKKyAgICB7CisgICAgICAgIGJvb2wgcGxheWluZyA9IGZhbHNlOworICAgICAgICBbX3dlYlZp
ZXcgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAInBsYXkgZXZlbnQiIGFjdGlvbjpbJl0g
eyBwbGF5aW5nID0gdHJ1ZTsgfV07CisgICAgICAgIHJ1blNjcmlwdFdpdGhVc2VyR2VzdHVyZSgi
YXVkaW8ucGxheSgpIik7CisgICAgICAgIFV0aWw6OnJ1bigmcGxheWluZyk7CisgICAgfQorCisg
ICAgdm9pZCBwYXVzZSgpCisgICAgeworICAgICAgICBib29sIHBhdXNlZCA9IGZhbHNlOworICAg
ICAgICBbX3dlYlZpZXcgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAInBhdXNlIGV2ZW50
IiBhY3Rpb246WyZdIHsgcGF1c2VkID0gdHJ1ZTsgfV07CisgICAgICAgIHJ1blNjcmlwdFdpdGhV
c2VyR2VzdHVyZSgiYXVkaW8ucGF1c2UoKSIpOworICAgICAgICBVdGlsOjpydW4oJnBhdXNlZCk7
CisgICAgfQorCisgICAgdm9pZCBsaXN0ZW5Gb3JFdmVudE1lc3NhZ2VzKHN0ZDo6aW5pdGlhbGl6
ZXJfbGlzdDxjb25zdCBjaGFyKj4gZXZlbnRzKQorICAgIHsKKyAgICAgICAgZm9yIChhdXRvKiBl
dmVudCA6IGV2ZW50cykgeworICAgICAgICAgICAgYXV0byBldmVudE1lc3NhZ2UgPSBtYWtlU3Ry
aW5nKGV2ZW50LCAiIGV2ZW50Iik7CisgICAgICAgICAgICBbd2ViVmlldygpIHBlcmZvcm1BZnRl
clJlY2VpdmluZ01lc3NhZ2U6ZXZlbnRNZXNzYWdlIGFjdGlvbjpbdGhpcywgZXZlbnRNZXNzYWdl
ID0gV1RGTW92ZShldmVudE1lc3NhZ2UpXSB7CisgICAgICAgICAgICAgICAgX2V2ZW50TGlzdGVu
ZXJzQ2FsbGVkLmFkZChldmVudE1lc3NhZ2UpOworICAgICAgICAgICAgfV07CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBib29sIGV2ZW50TGlzdGVuZXJXYXNDYWxsZWQoY29uc3QgU3RyaW5nJiBl
dmVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBfZXZlbnRMaXN0ZW5lcnNDYWxsZWQuY29udGFp
bnMobWFrZVN0cmluZyhldmVudCwgIiBldmVudCIpKTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFy
RXZlbnRMaXN0ZW5lclN0YXRlKCkKKyAgICB7CisgICAgICAgIF9ldmVudExpc3RlbmVyc0NhbGxl
ZC5jbGVhcigpOworICAgIH0KKworICAgIHZvaWQgZXhlY3V0ZVVudGlsKEZ1bmN0aW9uPGJvb2wo
KT4mJiBjYWxsYmFjaywgaW50IHJldHJpZXMgPSA1MCkKKyAgICB7CisgICAgICAgIGludCB0cmll
cyA9IDA7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGlmIChjYWxsYmFjaygpKQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIFV0aWw6OnNsZWVwKDAuMSk7CisgICAgICAg
IH0gd2hpbGUgKCsrdHJpZXMgPD0gcmV0cmllcyk7CisKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIHZvaWQgd2FpdEZvckV2ZW50TGlzdGVuZXJUb0JlQ2FsbGVkKGNvbnN0IFN0cmluZyYg
ZXZlbnQpCisgICAgeworICAgICAgICBleGVjdXRlVW50aWwoWyZdIHsKKyAgICAgICAgICAgIHJl
dHVybiBldmVudExpc3RlbmVyV2FzQ2FsbGVkKGV2ZW50KTsKKyAgICAgICAgfSk7CisgICAgfQor
CisgICAgdm9pZCBsaXN0ZW5Gb3JNZXNzYWdlc1Bvc3RlZChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8
Y29uc3QgY2hhcio+IGhhbmRsZXJzLCBjb25zdCBjaGFyKiBzdWZmaXgpCisgICAgeworICAgICAg
ICBmb3IgKGF1dG8qIGhhbmRsZXIgOiBoYW5kbGVycykgeworICAgICAgICAgICAgYXV0byBoYW5k
bGVyTWVzc2FnZSA9IG1ha2VTdHJpbmcoaGFuZGxlciwgc3VmZml4KTsKKyAgICAgICAgICAgIFt3
ZWJWaWV3KCkgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpoYW5kbGVyTWVzc2FnZSBhY3Rp
b246W3RoaXMsIGhhbmRsZXJNZXNzYWdlID0gV1RGTW92ZShoYW5kbGVyTWVzc2FnZSldIHsKKyAg
ICAgICAgICAgICAgICBfc2Vzc2lvbk1lc3NhZ2VzUG9zdGVkLmFkZChoYW5kbGVyTWVzc2FnZSk7
CisgICAgICAgICAgICB9XTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgY2xlYXJNZXNz
YWdlc1Bvc3RlZCgpCisgICAgeworICAgICAgICBfc2Vzc2lvbk1lc3NhZ2VzUG9zdGVkLmNsZWFy
KCk7CisgICAgfQorCisgICAgdm9pZCBsaXN0ZW5Gb3JTZXNzaW9uSGFuZGxlck1lc3NhZ2VzKHN0
ZDo6aW5pdGlhbGl6ZXJfbGlzdDxjb25zdCBjaGFyKj4gaGFuZGxlcnMpCisgICAgeworICAgICAg
ICBsaXN0ZW5Gb3JNZXNzYWdlc1Bvc3RlZChoYW5kbGVycywgIiBoYW5kbGVyIik7CisgICAgfQor
CisgICAgYm9vbCBzZXNzaW9uSGFuZGxlcldhc0NhbGxlZChjb25zdCBTdHJpbmcmIGhhbmRsZXIp
CisgICAgeworICAgICAgICByZXR1cm4gX3Nlc3Npb25NZXNzYWdlc1Bvc3RlZC5jb250YWlucyht
YWtlU3RyaW5nKGhhbmRsZXIsICIgaGFuZGxlciIpKTsKKyAgICB9CisKKyAgICB2b2lkIHdhaXRG
b3JTZXNzaW9uSGFuZGxlclRvQmVDYWxsZWQoY29uc3QgU3RyaW5nJiBoYW5kbGVyKQorICAgIHsK
KyAgICAgICAgZXhlY3V0ZVVudGlsKFsmXSB7CisgICAgICAgICAgICByZXR1cm4gc2Vzc2lvbkhh
bmRsZXJXYXNDYWxsZWQoaGFuZGxlcik7CisgICAgICAgIH0pOworICAgIH0KKworICAgIHZvaWQg
bGlzdGVuRm9yUHJvbWlzZU1lc3NhZ2VzKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxjb25zdCBjaGFy
Kj4gaGFuZGxlcnMpCisgICAgeworICAgICAgICBsaXN0ZW5Gb3JNZXNzYWdlc1Bvc3RlZChoYW5k
bGVycywgIiByZXNvbHZlZCIpOworICAgICAgICBsaXN0ZW5Gb3JNZXNzYWdlc1Bvc3RlZChoYW5k
bGVycywgIiByZWplY3RlZCIpOworICAgIH0KKworICAgIHZvaWQgY2xlYXJQcm9taXNlTWVzc2Fn
ZXMoY29uc3QgU3RyaW5nJiBwcm9taXNlKQorICAgIHsKKyAgICAgICAgX3Nlc3Npb25NZXNzYWdl
c1Bvc3RlZC5yZW1vdmUobWFrZVN0cmluZyhwcm9taXNlLCAiIHJlc29sdmVkIikpOworICAgICAg
ICBfc2Vzc2lvbk1lc3NhZ2VzUG9zdGVkLnJlbW92ZShtYWtlU3RyaW5nKHByb21pc2UsICIgcmVq
ZWN0ZWQiKSk7CisgICAgfQorCisgICAgYm9vbCBwcm9taXNlV2FzUmVzb2x2ZWQoY29uc3QgU3Ry
aW5nJiBwcm9taXNlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIF9zZXNzaW9uTWVzc2FnZXNQb3N0
ZWQuY29udGFpbnMobWFrZVN0cmluZyhwcm9taXNlLCAiIHJlc29sdmVkIikpOworICAgIH0KKwor
ICAgIGJvb2wgcHJvbWlzZVdhc1JlamVjdGVkKGNvbnN0IFN0cmluZyYgcHJvbWlzZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBfc2Vzc2lvbk1lc3NhZ2VzUG9zdGVkLmNvbnRhaW5zKG1ha2VTdHJp
bmcocHJvbWlzZSwgIiByZWplY3RlZCIpKTsKKyAgICB9CisKKyAgICB2b2lkIHdhaXRGb3JQcm9t
aXNlKGNvbnN0IFN0cmluZyYgcHJvbWlzZSkKKyAgICB7CisgICAgICAgIGV4ZWN1dGVVbnRpbChb
Jl0geworICAgICAgICAgICAgcmV0dXJuIHByb21pc2VXYXNSZXNvbHZlZChwcm9taXNlKSB8fCBw
cm9taXNlV2FzUmVqZWN0ZWQocHJvbWlzZSk7CisgICAgICAgIH0sIDIwMCk7CisgICAgfQorCitw
cml2YXRlOgorICAgIFJldGFpblB0cjxfV0tNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I+IF9j
b29yZGluYXRvcjsKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gX2NvbmZp
Z3VyYXRpb247CisgICAgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IF93ZWJWaWV3OworICAgIEhh
c2hTZXQ8U3RyaW5nPiBfc2Vzc2lvbk1lc3NhZ2VzUG9zdGVkOworICAgIEhhc2hTZXQ8U3RyaW5n
PiBfZXZlbnRMaXN0ZW5lcnNDYWxsZWQ7Cit9OworCitURVNUX0YoTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3JUZXN0LCBKb2luQW5kTGVhdmUpCit7CisgICAgbG9hZFBhZ2VBbmRCZWNvbWVSZWFkeSgi
bWVkaWEtcmVtb3RlIl9zKTsKKyAgICBsaXN0ZW5Gb3JTZXNzaW9uSGFuZGxlck1lc3NhZ2VzKHsg
InBsYXkiX3MsICJwYXVzZSJfcywgInNlZWt0byJfcywgInNlZWtmb3J3YXJkIl9zLCAic2Vla2Jh
Y2t3YXJkIl9zLCAicHJldmlvdXN0cmFjayJfcywgIm5leHR0cmFjayJfcyB9KTsKKyAgICBsaXN0
ZW5Gb3JFdmVudE1lc3NhZ2VzKHsgImNvb3JkaW5hdG9yY2hhbmdlIl9zIH0pOworICAgIGxpc3Rl
bkZvclByb21pc2VNZXNzYWdlcyh7ICJqb2luIl9zIH0pOworCisgICAgY3JlYXRlQ29vcmRpbmF0
b3IoKTsKKworICAgIFJldGFpblB0cjxOU1N0cmluZz4gc3RhdGUgPSBbd2ViVmlldygpIG9iamVj
dEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5h
dG9yLnN0YXRlIl07CisgICAgRVhQRUNUX1NUUkVRKCJ3YWl0aW5nIiwgW3N0YXRlIFVURjhTdHJp
bmddKTsKKworICAgIC8vICdqb2luKCknIHNob3VsZCBmYWlsIGlmIHRoZSByZW1vdGUgY29vcmRp
bmF0b3IgcmVmdXNlcy4KKyAgICBjb29yZGluYXRvcigpLmZhaWxzQ29tbWFuZHMgPSBZRVM7Cisg
ICAgcnVuU2NyaXB0V2l0aFVzZXJHZXN0dXJlKCJqb2luU2Vzc2lvbigpIik7CisgICAgd2FpdEZv
clByb21pc2UoImpvaW4iX3MpOworICAgIEFTU0VSVF9UUlVFKHByb21pc2VXYXNSZWplY3RlZCgi
am9pbiJfcykpOworICAgIGNsZWFyUHJvbWlzZU1lc3NhZ2VzKCJqb2luIl9zKTsKKyAgICBFWFBF
Q1RfU1RSRVEoImpvaW4iLCBjb29yZGluYXRvcigpLmxhc3RNZXRob2RDYWxsZWQuVVRGOFN0cmlu
Zyk7CisKKyAgICAvLyBBbmQgaXQgc2hvdWQgc3VjY2VlZCBpZiBpdCBhbGxvd3MgaXQuCisgICAg
Y29vcmRpbmF0b3IoKS5mYWlsc0NvbW1hbmRzID0gTk87CisgICAgcnVuU2NyaXB0V2l0aFVzZXJH
ZXN0dXJlKCJqb2luU2Vzc2lvbigpIik7CisgICAgd2FpdEZvclByb21pc2UoImpvaW4iX3MpOwor
ICAgIEFTU0VSVF9UUlVFKHByb21pc2VXYXNSZXNvbHZlZCgiam9pbiJfcykpOworICAgIGNsZWFy
UHJvbWlzZU1lc3NhZ2VzKCJqb2luIl9zKTsKKyAgICBFWFBFQ1RfU1RSRVEoImpvaW4iLCBjb29y
ZGluYXRvcigpLmxhc3RNZXRob2RDYWxsZWQuVVRGOFN0cmluZyk7CisKKyAgICBzdGF0ZSA9IFt3
ZWJWaWV3KCkgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIm5hdmlnYXRvci5tZWRpYVNl
c3Npb24uY29vcmRpbmF0b3Iuc3RhdGUiXTsKKyAgICBFWFBFQ1RfU1RSRVEoImpvaW5lZCIsIFtz
dGF0ZSBVVEY4U3RyaW5nXSk7CisKKyAgICBydW5TY3JpcHRXaXRoVXNlckdlc3R1cmUoIm5hdmln
YXRvci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3IubGVhdmUoKSIpOworICAgIFN0cmluZyBsYXN0
TWV0aG9kQ2FsbGVkOworICAgIGV4ZWN1dGVVbnRpbChbJl0geworICAgICAgICBsYXN0TWV0aG9k
Q2FsbGVkID0gY29vcmRpbmF0b3IoKS5sYXN0TWV0aG9kQ2FsbGVkOworICAgICAgICByZXR1cm4g
bGFzdE1ldGhvZENhbGxlZCA9PSAibGVhdmUiOworICAgIH0pOworICAgIEVYUEVDVF9TVFJFUSgi
bGVhdmUiLCBsYXN0TWV0aG9kQ2FsbGVkLnV0ZjgoKS5kYXRhKCkpOworCisgICAgc3RhdGUgPSBb
d2ViVmlldygpIG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJuYXZpZ2F0b3IubWVkaWFT
ZXNzaW9uLmNvb3JkaW5hdG9yLnN0YXRlIl07CisgICAgRVhQRUNUX1NUUkVRKCJjbG9zZWQiLCBb
c3RhdGUgVVRGOFN0cmluZ10pOworCisgICAgLy8gSXQgc2hvdWxkbid0IGJlIHBvc3NpYmxlIHRv
IHJlLWpvaW4gYSBjbG9zZSBjb29yZGluYXRvci4KKyAgICBydW5TY3JpcHRXaXRoVXNlckdlc3R1
cmUoImpvaW5TZXNzaW9uKCkiKTsKKyAgICB3YWl0Rm9yUHJvbWlzZSgiam9pbiJfcyk7CisgICAg
QVNTRVJUX1RSVUUocHJvbWlzZVdhc1JlamVjdGVkKCJqb2luIl9zKSk7CisgICAgRVhQRUNUX1NU
UkVRKCIiLCBjb29yZGluYXRvcigpLmxhc3RNZXRob2RDYWxsZWQuVVRGOFN0cmluZyk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9T
RVNTSU9OX0NPT1JESU5BVE9SKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9tZWRpYS1yZW1vdGUuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvbWVkaWEtcmVtb3RlLmh0bWwKaW5kZXggMWM5OTNjN2NkNDAxYWZmMzJj
ZjIzMmVkYmM4ODNlY2RjNzliYjM1Zi4uYjU3YzBlM2YyZjc0N2QxYjc1MDAxMmJlNTA3OGQwY2Zi
NGY0NGZhMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9tZWRpYS1yZW1vdGUuaHRtbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL21lZGlhLXJlbW90ZS5odG1sCkBAIC00MCw2ICs0MCwxMiBAQAogICAgICAgICAgICAg
bmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5tZXRhZGF0YSA9IG5ldyBNZWRpYU1ldGFkYXRhKGRhdGEp
OwogICAgICAgICAgICAgcG9zdE1lc3NhZ2UoJ3NldCBtZXRhZGF0YScpCiAgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIGZ1bmN0aW9uIGpvaW5TZXNzaW9uKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgbGV0IHByb21pc2UgPSBuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yLmpv
aW4oKTsKKyAgICAgICAgICAgIHBvc3RQcm9taXNlKCJqb2luIiwgcHJvbWlzZSk7CisgICAgICAg
IH0KIAogICAgICAgICBmdW5jdGlvbiBzZXRQbGF5bGlzdE1ldGFkYXRhKGluZGV4KQogICAgICAg
ICB7CkBAIC05NSw2ICsxMDEsMTUgQEAKICAgICAgICAgICAgIHBvc3RNZXNzYWdlKGAke2V2dC50
eXBlfSBldmVudGApOwogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICBhc3luYyBmdW5jdGlv
biBwb3N0UHJvbWlzZSh0eXBlLCBwcm9taXNlKQorICAgICAgICB7CisgICAgICAgICAgICBsb2co
YHdhaXRpbmcgZm9yICR7dHlwZX0gcHJvbWlzZWApOworICAgICAgICAgICAgYXdhaXQgcHJvbWlz
ZQorICAgICAgICAgICAgICAgIC50aGVuKCAgKCkgPT4geyBwb3N0TWVzc2FnZShgJHt0eXBlfSBy
ZXNvbHZlZGApOyB9ICkKKyAgICAgICAgICAgICAgICAuY2F0Y2goICgpID0+IHsgcG9zdE1lc3Nh
Z2UoYCR7dHlwZX0gcmVqZWN0ZWRgKTsgfSApOworICAgICAgICAgICAgbG9nKGAke3R5cGV9IHBy
b21pc2Ugc2V0dGxlZGApOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBmdW5jdGlvbiBs
b2FkKCkKICAgICAgICAgewogICAgICAgICAgICAgbGV0IHNyYyA9IHBsYXlsaXN0Lm1ldGFkYXRh
WzBdLnVybDsKQEAgLTExMiwxMyArMTI3LDE1IEBACiAgICAgICAgICAgICBldmVudExvZy5pbnNl
cnRCZWZvcmUobm90ZSwgZXZlbnRMb2cuZmlyc3RDaGlsZCk7CiAgICAgICAgIH0KIAotICAgICAg
ICAKKyAgICAgICAgY29uc3Qgc2Vzc2lvbiA9IG5hdmlnYXRvci5tZWRpYVNlc3Npb247CisKICAg
ICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBldnQgPT4gewogICAgICAgICAg
ICAgYXVkaW8gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYXVkaW8nKVswXTsKICAg
ICAgICAgICAgIGF1ZGlvLmFkZEV2ZW50TGlzdGVuZXIoJ2NhbnBsYXl0aHJvdWdoJywgcG9zdEV2
ZW50KTsKICAgICAgICAgICAgIGF1ZGlvLmFkZEV2ZW50TGlzdGVuZXIoJ3BsYXknLCBwb3N0RXZl
bnQpOwogICAgICAgICAgICAgYXVkaW8uYWRkRXZlbnRMaXN0ZW5lcigncGF1c2UnLCBwb3N0RXZl
bnQpOwogICAgICAgICAgICAgYXVkaW8uYWRkRXZlbnRMaXN0ZW5lcignc2Vla2VkJywgcG9zdEV2
ZW50KTsKKyAgICAgICAgICAgIG5hdmlnYXRvci5tZWRpYVNlc3Npb24uYWRkRXZlbnRMaXN0ZW5l
cignY29vcmRpbmF0b3JjaGFuZ2UnLCBwb3N0RXZlbnQpOwogICAgICAgICB9LCBmYWxzZSk7CiAK
ICAgICA8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425094</attachid>
            <date>2021-04-03 06:39:42 -0700</date>
            <delta_ts>2021-04-03 11:02:34 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-224140-20210403063941.patch</filename>
            <type>text/plain</type>
            <size>74049</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MzIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGQ5Y2YzOTJlZWU5Zjhh
OTQ0OGFiOWJiMmY5ZGM2YzZlYzNmNmNlZS4uMzI1NWExM2IxODIzY2IxMjNiNmFhOTIwM2MzYzI4
MzliYTZmYTZiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTA0LTAyICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gQWRk
IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yIEFQSSB0ZXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQxNDAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
Lzc2MTcxMTczPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnBhdXNlU2Vzc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6c2V0U2Vzc2lvblRy
YWNrKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGlu
YXRvci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yUHJpdmF0ZS5oOgorICAgICAgICAqIHBhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdEb21haW4u
aDoKKwogMjAyMS0wMy0zMSAgVmVua3kgRGFzcyAgPHlhcmFuYW1hdmVua2F0YXJhbWFuYUBhcHBs
ZS5jb20+CiAKICAgICAgICAgTnVsbCBwb2ludGVyIGFjY2VzcyBjcmFzaCBpbiBXZWJDb3JlOjpt
YWtlQm91bmRhcnlQb2ludCguLikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMTIwOGM5N2VlYjJiM2U5OGYyZmE0MGNh
MDAwZjUyNjllMWJkZWM2NC4uMWEzYWRjNGM1YmZjZjAzNzEyYjQ3MjJjYmI5OTc0NDUyNzg0MTBm
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1OCBAQAorMjAyMS0wNC0wMiAgRXJpYyBDYXJsc29uICA8
ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdIEFkZCBNZWRpYVNlc3Np
b25Db29yZGluYXRvciBBUEkgdGVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI0MTQwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NjE3MTE3Mz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJj
ZXMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZUZv
clRlc3RpbmcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1Rlc3Rp
bmcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfY3JlYXRlTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JGb3JUZXN0aW5nOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS01lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9ySGVscGVyIGluaXRXaXRoQ29vcmRpbmF0b3I6XSk6CisgICAgICAgICgt
W1dLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JIZWxwZXIgc2Vla1Nlc3Npb25Ub1RpbWU6d2l0aENv
bXBsZXRpb246XSk6CisgICAgICAgICgtW1dLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JIZWxwZXIg
cGxheVNlc3Npb25XaXRoQ29tcGxldGlvbjpdKToKKyAgICAgICAgKC1bV0tNZWRpYVNlc3Npb25D
b29yZGluYXRvckhlbHBlciBwYXVzZVNlc3Npb25XaXRoQ29tcGxldGlvbjpdKToKKyAgICAgICAg
KC1bV0tNZWRpYVNlc3Npb25Db29yZGluYXRvckhlbHBlciBzZXRTZXNzaW9uVHJhY2s6d2l0aENv
bXBsZXRpb246XSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjptZWRpYVNlc3Npb25Db29yZGluYXRvckZvclRl
c3RpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yRm9yVGVz
dGluZyk6CisgICAgICAgICogVUlQcm9jZXNzL01lZGlhL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
UHJveHlQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL01lZGlhL1JlbW90ZU1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNl
c3Npb25Db29yZGluYXRvclByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVN
ZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5OjpSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRv
clByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQ
cm94eTo6am9pbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yUHJveHk6OmNvb3JkaW5hdGVTZWVrVG8pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVNlc3Npb25Db29yZGluYXRvclByb3h5Ojpjb29yZGluYXRlUGxheSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OmNvb3JkaW5hdGVQYXVzZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OmNv
b3JkaW5hdGVTZXRUcmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yUHJveHk6OmNvb3JkaW5hdG9yU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6cGF1c2VTZXNzaW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6c2V0U2Vz
c2lvblRyYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JQcm94eTo6bG9nQ2hhbm5lbCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6Ojo6Y29vcmRpbmF0ZVNldFRyYWNrKTogRGVsZXRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvTWVkaWEvUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQ
cm94eS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclBy
b3h5Ojpsb2dnZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25D
b29yZGluYXRvclByb3h5Ojpsb2dJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6bG9nQ2xhc3NOYW1lIGNvbnN0KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpjcmVhdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcik6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvTWVkaWFTZXNzaW9uL1JlbW90ZU1l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3I6OmpvaW4pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNl
c3Npb25Db29yZGluYXRvcjo6bGVhdmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNl
c3Npb25Db29yZGluYXRvcjo6c2Vla1RvKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3I6OnBsYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNl
c3Npb25Db29yZGluYXRvcjo6cGF1c2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNl
c3Npb25Db29yZGluYXRvcjo6c2V0VHJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVNlc3Npb25Db29yZGluYXRvcjo6cG9zaXRpb25TdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6cmVhZHlTdGF0ZUNoYW5nZWQpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6cGxheWJhY2tT
dGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25Db29yZGlu
YXRvcjo6Y29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQpOgorCiAyMDIxLTAzLTMxICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTjogVGhlIE5ldHdvcmtQ
cm9jZXNzIGZhaWxzIHRvIHJlbGF1bmNoIGFmdGVyIGl0IGNyYXNoZXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yLmNwcAppbmRleCAyMDgxOThiYzM0MDA4ZWE5NDZkMzliMWFhZGM0Zjg0NGM4NTVh
ODNhLi45NzJkNzhmODg3NDY1YjJlZWYxYjhmODdmNDMyZjE5ZTVhYjNmZWFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGlu
YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3IuY3BwCkBAIC0zMDcsNyArMzA3LDcgQEAgdm9pZCBNZWRpYVNlc3Np
b25Db29yZGluYXRvcjo6cGxheVNlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGUKICAgICBjb21wbGV0aW9uSGFuZGxlcihpbnRlcm5hbFBsYXkoKSk7CiB9CiAKLXZv
aWQgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnBhdXNlU2Vzc2lvbihDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3I6OnBhdXNlU2Vzc2lvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgbV9zdGF0ZSk7
CiAKQEAgLTMxOSw3ICszMTksNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpwYXVz
ZVNlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4gY29tcGxldAogICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGludGVybmFsUGF1c2UoKSk7CiB9CiAKLXZvaWQgTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3I6OnNldFNlc3Npb25UcmFjayhjb25zdCBTdHJpbmcmIHRyYWNrLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3I6OnNldFNlc3Npb25UcmFjayhjb25zdCBTdHJpbmcmIHRyYWNrLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFMV0FZ
U19MT0coTE9HSURFTlRJRklFUiwgbV9zdGF0ZSwgIiwgIiwgdHJhY2spOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGlu
YXRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3IuaAppbmRleCBmZDRhODczZDFiYzljMmVlZWRjNzNhMzg0NGE3MDVhNmJlYTIw
MzA3Li43NWU2Y2QwN2U4YTNkMDIwYmY4NDczYWEzZDBiNjRjYjIxNjczMGZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGlu
YXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yLmgKQEAgLTczLDggKzczLDggQEAgcHJpdmF0ZToKICAgICAvLyBNZWRp
YVNlc3Npb25Db29yZGluYXRvckNsaWVudAogICAgIHZvaWQgc2Vla1Nlc3Npb25Ub1RpbWUoZG91
YmxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKICAgICB2b2lkIHBs
YXlTZXNzaW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwotICAgIHZv
aWQgcGF1c2VTZXNzaW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+KSBmaW5hbDsKLSAg
ICB2b2lkIHNldFNlc3Npb25UcmFjayhjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPikgZmluYWw7CisgICAgdm9pZCBwYXVzZVNlc3Npb24oQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXNzaW9uVHJhY2soY29uc3Qg
U3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CiAKICAgICBi
b29sIGludGVybmFsU2Vla1RvKGRvdWJsZSk7CiAgICAgYm9vbCBpbnRlcm5hbFBsYXkoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlLmgKaW5kZXggZjgwMzBlNzg3MjA4MmYw
Mjc0YTdhZjU4OTYyZmVkOGMxNDBiMGIzMi4uNmQwMGMwYjFiODIwZTA5ZTRjZjIzYmIyMTIxZGM0
MmE3Y2NkMjMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlLmgKQEAg
LTQ2LDggKzQ2LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNlZWtTZXNzaW9uVG9U
aW1lKGRvdWJsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBwbGF5U2Vzc2lvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBhdXNlU2Vzc2lvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRTZXNzaW9uVHJhY2soY29uc3QgU3Ry
aW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4pID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgcGF1c2VTZXNzaW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0U2Vzc2lvblRyYWNrKGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpID0gMDsKIH07CiAKIGNsYXNzIE1lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yUHJpdmF0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
UHJpdmF0ZT4gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EaWFnbm9zdGljTG9n
Z2luZ0RvbWFpbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EaWFnbm9zdGljTG9nZ2luZ0RvbWFp
bi5oCmluZGV4IDI5YjNhMDMwZGUyMjVmMGVmYzJhNmUzOWM1OGUyYmRlZDIwOTAzYzAuLmIwNTQ5
YTg2NDFkY2IxNDM1NTI4NThhM2E2MWM1NzVmOTg3M2ViMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdEb21haW4uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RpYWdub3N0aWNMb2dnaW5nRG9tYWluLmgKQEAgLTI1LDYgKzI1LDggQEAKIAogI3By
YWdtYSBvbmNlCiAKKyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGVudW0gY2xhc3MgRGlhZ25vc3RpY0xvZ2dpbmdEb21haW4gOiB1aW50OF90IHsg
TWVkaWEgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDZjNDAxMDYxOTIxM2Y4YjZmYzQzNTI5MjEyOWI0ZDA1
OTJjOTgyOWUuLmEwYjQ3NGRlY2RlOWNkNTZmNTQ2ZDY3Y2QzYjRkYTA5NDI1YjQ3ZDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzLnR4dApAQCAtNDY3LDYgKzQ2Nyw3IEBAIFVJUHJvY2Vzcy9JbnNwZWN0b3IvQWdlbnRzL0lu
c3BlY3RvckJyb3dzZXJBZ2VudC5jcHAKIAogVUlQcm9jZXNzL01lZGlhL0F1ZGlvU2Vzc2lvblJv
dXRpbmdBcmJpdHJhdG9yUHJveHkuY3BwCiBVSVByb2Nlc3MvTWVkaWEvTWVkaWFVc2FnZU1hbmFn
ZXIuY3BwCitVSVByb2Nlc3MvTWVkaWEvUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94
eS5jcHAKIAogVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHkuY3BwCiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmlj
YXRpb24uY3BwCkBAIC01NzksNiArNTgwLDggQEAgV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViUGFn
ZUluc3BlY3RvclRhcmdldC5jcHAKIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYlBhZ2VJbnNwZWN0
b3JUYXJnZXRDb250cm9sbGVyLmNwcAogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViUGFnZUluc3Bl
Y3RvclRhcmdldEZyb250ZW5kQ2hhbm5lbC5jcHAKIAorV2ViUHJvY2Vzcy9NZWRpYVNlc3Npb24v
UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuY3BwCisKIFdlYlByb2Nlc3MvTWVkaWFTdHJl
YW0vTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5jcHAKIFdlYlByb2Nlc3MvTWVkaWFTdHJl
YW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3Rp
bmcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRl
Rm9yVGVzdGluZy5oCmluZGV4IGRiYjg0ZDhjY2JiNWNmMjVmZjFmYzNmNzY5NDE2MTA4NzM4NDQw
OTAuLjE4ZmZiYTljMDQzMDY3YjU0OTEyZmQ2YTdkYzdmNWYzZDdhZGQyNDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVz
dGluZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlRm9yVGVzdGluZy5oCkBAIC0yNiw2ICsyNiw4IEBACiAjaW1wb3J0ICJXS1dlYlZpZXdQ
cml2YXRlRm9yVGVzdGluZ0lPUy5oIgogI2ltcG9ydCAiV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3Rp
bmdNYWMuaCIKIAorTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKwogdHlwZWRlZiBlbnVtIHsKICAg
ICBXS1dlYlZpZXdBdWRpb1JvdXRpbmdBcmJpdHJhdGlvblN0YXR1c05vbmUsCiAgICAgV0tXZWJW
aWV3QXVkaW9Sb3V0aW5nQXJiaXRyYXRpb25TdGF0dXNQZW5kaW5nLApAQCAtMzcsNiArMzksOCBA
QCBzdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSB7CiAgICAgQk9PTCBoYXNM
b2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nOwogfTsKIAorQHByb3RvY29sIF9XS01lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yOworCiBAaW50ZXJmYWNlIFdLV2ViVmlldyAoV0tUZXN0aW5nKQog
CiAtICh2b2lkKV9zZXRQYWdlU2NhbGU6KENHRmxvYXQpc2NhbGUgd2l0aE9yaWdpbjooQ0dQb2lu
dClvcmlnaW47CkBAIC05OSw0ICsxMDMsNTggQEAgc3RydWN0IFdLQXBwQm91bmROYXZpZ2F0aW9u
VGVzdGluZ0RhdGEgewogLSAodm9pZClfYXBwQm91bmROYXZpZ2F0aW9uRGF0YToodm9pZCheKShz
dHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBkYXRhKSljb21wbGV0aW9uSGFu
ZGxlcjsKIC0gKHZvaWQpX2NsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YToodm9pZCheKSh2b2lk
KSljb21wbGV0aW9uSGFuZGxlcjsKIAorLSAodm9pZClfY3JlYXRlTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3JGb3JUZXN0aW5nOihpZCA8X1dLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I+KXByaXZhdGVD
b29yZGluYXRvciBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFu
ZGxlcjsKKworQGVuZAorCisjaWYgRU5BQkxFKE1FRElBX1NFU1NJT05fQ09PUkRJTkFUT1IpCit0
eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tNZWRpYVNlc3Npb25SZWFkeVN0YXRlKSB7Cisg
ICAgV0tNZWRpYVNlc3Npb25SZWFkeVN0YXRlSGF2ZU5vdGhpbmcsCisgICAgV0tNZWRpYVNlc3Np
b25SZWFkeVN0YXRlSGF2ZU1ldGFkYXRhLAorICAgIFdLTWVkaWFTZXNzaW9uUmVhZHlTdGF0ZUhh
dmVDdXJyZW50RGF0YSwKKyAgICBXS01lZGlhU2Vzc2lvblJlYWR5U3RhdGVIYXZlRnV0dXJlRGF0
YSwKKyAgICBXS01lZGlhU2Vzc2lvblJlYWR5U3RhdGVIYXZlRW5vdWdoRGF0YQorfTsKKwordHlw
ZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLTWVkaWFTZXNzaW9uUGxheWJhY2tTdGF0ZSkgewor
ICAgIFdLTWVkaWFTZXNzaW9uUGxheWJhY2tTdGF0ZU5vbmUsCisgICAgV0tNZWRpYVNlc3Npb25Q
bGF5YmFja1N0YXRlUGF1c2VkLAorICAgIFdLTWVkaWFTZXNzaW9uUGxheWJhY2tTdGF0ZVBsYXlp
bmcKK307CisKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS01lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yU3RhdGUpIHsKKyAgICBXS01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGVXYWl0aW5n
LAorICAgIFdLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZUpvaW5lZCwKKyAgICBXS01lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGVDbG9zZWQKK307CisKK3N0cnVjdCBfV0tNZWRpYVBvc2l0
aW9uU3RhdGUgeworICAgIGRvdWJsZSBkdXJhdGlvbjsKKyAgICBkb3VibGUgcGxheWJhY2tSYXRl
OworICAgIGRvdWJsZSBwb3NpdGlvbjsKK307CisKK0Bwcm90b2NvbCBfV0tNZWRpYVNlc3Npb25D
b29yZGluYXRvckRlbGVnYXRlIDxOU09iamVjdD4KKy0gKHZvaWQpc2Vla1Nlc3Npb25Ub1RpbWU6
KGRvdWJsZSl0aW1lIHdpdGhDb21wbGV0aW9uOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5k
bGVyOworLSAodm9pZClwbGF5U2Vzc2lvbldpdGhDb21wbGV0aW9uOih2b2lkKF4pKEJPT0wpKWNv
bXBsZXRpb25IYW5kbGVyOworLSAodm9pZClwYXVzZVNlc3Npb25XaXRoQ29tcGxldGlvbjoodm9p
ZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpc2V0U2Vzc2lvblRyYWNrOihO
U1N0cmluZyopdHJhY2tJZGVudGlmaWVyIHdpdGhDb21wbGV0aW9uOih2b2lkKF4pKEJPT0wpKWNv
bXBsZXRpb25IYW5kbGVyOworQGVuZAorCitAcHJvdG9jb2wgX1dLTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3IgPE5TT2JqZWN0PgorQHByb3BlcnR5IChudWxsYWJsZSwgd2VhaykgaWQgPF9XS01lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yRGVsZWdhdGU+IGRlbGVnYXRlOworQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5KSBOU1N0cmluZyAqIF9Ob25udWxsIGlkZW50aWZpZXI7CistICh2b2lkKWpv
aW5XaXRoQ29tcGxldGlvbjoodm9pZCheIF9Ob25udWxsKShCT09MKSljb21wbGV0aW9uSGFuZGxl
cjsKKy0gKHZvaWQpbGVhdmU7CistICh2b2lkKXNlZWtUbzooZG91YmxlKXRpbWUgd2l0aENvbXBs
ZXRpb246KHZvaWQoXiBfTm9ubnVsbCkoQk9PTCkpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lk
KXBsYXlXaXRoQ29tcGxldGlvbjoodm9pZCheIF9Ob25udWxsKShCT09MKSljb21wbGV0aW9uSGFu
ZGxlcjsKKy0gKHZvaWQpcGF1c2VXaXRoQ29tcGxldGlvbjoodm9pZCheIF9Ob25udWxsKShCT09M
KSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpc2V0VHJhY2s6KE5TU3RyaW5nICpfTm9ubnVs
bCl0cmFja0lkZW50aWZpZXIgd2l0aENvbXBsZXRpb246KHZvaWQoXiBfTm9ubnVsbCkoQk9PTCkp
Y29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKXBvc2l0aW9uU3RhdGVDaGFuZ2VkOihfV0tNZWRp
YVBvc2l0aW9uU3RhdGUgKiBfTnVsbGFibGUpc3RhdGU7CistICh2b2lkKXJlYWR5U3RhdGVDaGFu
Z2VkOihfV0tNZWRpYVNlc3Npb25SZWFkeVN0YXRlKXN0YXRlOworLSAodm9pZClwbGF5YmFja1N0
YXRlQ2hhbmdlZDooX1dLTWVkaWFTZXNzaW9uUGxheWJhY2tTdGF0ZSlzdGF0ZTsKKy0gKHZvaWQp
Y29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQ6KF9XS01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGUp
c3RhdGU7CiBAZW5kCisjZW5kaWYKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVzdGluZy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5nLm1tCmlu
ZGV4IDRmOTI4ZTI4ODE3NzY3ZDc1MGVmMzU5ZGE4NDY5MGI3MTc4ZTI3ZmIuLmJkOWQ2NjA5OThi
NmEzMDY3Yjk2NWU3NGIzNzBmYTIzMTdhYzg4ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5nLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5nLm1tCkBAIC0yNyw2ICsyNyw3
IEBACiAjaW1wb3J0ICJXS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oIgogCiAjaW1wb3J0ICJB
dWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5LmgiCisjaW1wb3J0ICJNZWRpYVNlc3Np
b25Db29yZGluYXRvclByb3h5UHJpdmF0ZS5oIgogI2ltcG9ydCAiUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5LmgiCiAjaW1wb3J0ICJVc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5oIgogI2ltcG9y
dCAiVmlld0dlc3R1cmVDb250cm9sbGVyLmgiCkBAIC0zOSw3ICs0MCwxNyBAQAogI2ltcG9ydCAi
X1dLSW5zcGVjdG9ySW50ZXJuYWwuaCIKICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0
aW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1ZhbGlkYXRpb25CdWJibGUuaD4KLQorI2lt
cG9ydCA8d3RmL1JldGFpblB0ci5oPgorCisjaWYgRU5BQkxFKE1FRElBX1NFU1NJT05fQ09PUkRJ
TkFUT1IpCitAaW50ZXJmYWNlIFdLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JIZWxwZXIgOiBOU09i
amVjdCA8X1dLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JEZWxlZ2F0ZT4KKy0gKGlkKWluaXRXaXRo
Q29vcmRpbmF0b3I6KFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yQ2xpZW50Kiljb29y
ZGluYXRvcjsKKy0gKHZvaWQpc2Vla1Nlc3Npb25Ub1RpbWU6KGRvdWJsZSl0aW1lIHdpdGhDb21w
bGV0aW9uOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClwbGF5U2Vz
c2lvbldpdGhDb21wbGV0aW9uOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyOworLSAo
dm9pZClwYXVzZVNlc3Npb25XaXRoQ29tcGxldGlvbjoodm9pZCheKShCT09MKSljb21wbGV0aW9u
SGFuZGxlcjsKKy0gKHZvaWQpc2V0U2Vzc2lvblRyYWNrOihOU1N0cmluZyopdHJhY2tJZGVudGlm
aWVyIHdpdGhDb21wbGV0aW9uOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyOworQGVu
ZAorI2VuZGlmCiAKIEBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcgKFdLVGVzdGluZykKIApAQCAt
MzYwLDQgKzM3MSwyNDAgQEAKICAgICB9KTsKIH0KIAorLSAodm9pZClfY3JlYXRlTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3JGb3JUZXN0aW5nOihpZCA8X1dLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I+
KXByaXZhdGVDb29yZGluYXRvciBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShCT09MKSljb21w
bGV0aW9uSGFuZGxlcgoreworI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OX0NPT1JESU5BVE9SKQor
ICAgIGNsYXNzIFdLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JGb3JUZXN0aW5nCisgICAgICAgIDog
cHVibGljIFdlYktpdDo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eVByaXZhdGUKKyAgICAg
ICAgLCBwdWJsaWMgV2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JDbGllbnQgeworICAg
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisKKyAgICAgICAgc3Rh
dGljIFJlZjxXS01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yRm9yVGVzdGluZz4gY3JlYXRlKGlkIDxf
V0tNZWRpYVNlc3Npb25Db29yZGluYXRvcj4gcHJpdmF0ZUNvb3JkaW5hdG9yKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXS01lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yRm9yVGVzdGluZyhwcml2YXRlQ29vcmRpbmF0b3IpKTsKKyAgICAgICAgfQorCisgICAgICAg
IHVzaW5nIFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yQ2xpZW50Ojp3ZWFrUHRyRmFj
dG9yeTsKKyAgICAgICAgdXNpbmcgV2Vha1ZhbHVlVHlwZSA9IFdlYkNvcmU6Ok1lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yQ2xpZW50OjpXZWFrVmFsdWVUeXBlOworCisgICAgcHJpdmF0ZToKKyAgICAg
ICAgZXhwbGljaXQgV0tNZWRpYVNlc3Npb25Db29yZGluYXRvckZvclRlc3RpbmcoaWQgPF9XS01l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yPiBjbGllbnRDb29yZGluYXRvcikKKyAgICAgICAgICAgIDog
V2ViS2l0OjpNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5UHJpdmF0ZSgpCisgICAgICAgICAg
ICAsIG1fY2xpZW50Q29vcmRpbmF0b3IoY2xpZW50Q29vcmRpbmF0b3IpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGF1dG8qIGRlbGVnYXRlSGVscGVyID0gW1tXS01lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9ySGVscGVyIGFsbG9jXSBpbml0V2l0aENvb3JkaW5hdG9yOnRoaXNdOworICAgICAgICAgICAg
W21fY2xpZW50Q29vcmRpbmF0b3Igc2V0RGVsZWdhdGU6ZGVsZWdhdGVIZWxwZXJdOworICAgICAg
ICAgICAgbV9jb29yZGluYXRvckRlbGVnYXRlID0gYWRvcHROUyhkZWxlZ2F0ZUhlbHBlcik7Cisg
ICAgICAgIH0KKworICAgICAgICB2b2lkIHNlZWtTZXNzaW9uVG9UaW1lKGRvdWJsZSB0aW1lLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKSBmaW5hbAorICAgICAgICB7
CisgICAgICAgICAgICBpZiAoYXV0byBjb29yZGluYXRvckNsaWVudCA9IGNsaWVudCgpKQorICAg
ICAgICAgICAgICAgIGNvb3JkaW5hdG9yQ2xpZW50LT5zZWVrU2Vzc2lvblRvVGltZSh0aW1lLCBX
VEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY2Fs
bGJhY2soZmFsc2UpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBwbGF5U2Vzc2lvbihDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKSBmaW5hbAorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAoYXV0byBjb29yZGluYXRvckNsaWVudCA9IGNsaWVudCgpKQorICAgICAg
ICAgICAgICAgIGNvb3JkaW5hdG9yQ2xpZW50LT5wbGF5U2Vzc2lvbihXVEZNb3ZlKGNhbGxiYWNr
KSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UpOwor
ICAgICAgICB9CisKKyAgICAgICAgdm9pZCBwYXVzZVNlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjYWxsYmFjaykgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KGF1dG8gY29vcmRpbmF0b3JDbGllbnQgPSBjbGllbnQoKSkKKyAgICAgICAgICAgICAgICBjb29y
ZGluYXRvckNsaWVudC0+cGF1c2VTZXNzaW9uKFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSk7CisgICAgICAgIH0KKwor
ICAgICAgICB2b2lkIHNldFNlc3Npb25UcmFjayhjb25zdCBTdHJpbmcmIHRyYWNrSWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykgZmluYWwKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKGF1dG8gY29vcmRpbmF0b3JDbGllbnQgPSBjbGllbnQoKSkK
KyAgICAgICAgICAgICAgICBjb29yZGluYXRvckNsaWVudC0+c2V0U2Vzc2lvblRyYWNrKHRyYWNr
SWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKKyAgICAgICAgfQorCisgICAgICAgIE9wdGlvbmFs
PFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+IHJlc3VsdChib29sIHN1Y2Nlc3MpIGNvbnN0CisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmICghc3VjY2VzcykKKyAgICAgICAgICAgICAgICByZXR1cm4g
eyBXZWJDb3JlOjpFeGNlcHRpb25EYXRhIHsgV2ViQ29yZTo6SW52YWxpZFN0YXRlRXJyb3IgfSB9
OworCisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICB9CisKKyAgICAgICAgU3RyaW5n
IGlkZW50aWZpZXIoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gW21fY2xp
ZW50Q29vcmRpbmF0b3IgaWRlbnRpZmllcl07CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGpv
aW4oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRh
PiYmKT4mJiBjYWxsYmFjaykgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgW21fY2xpZW50
Q29vcmRpbmF0b3Igam9pbldpdGhDb21wbGV0aW9uOm1ha2VCbG9ja1B0cihbd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cih0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKEJPT0wgc3Vj
Y2VzcykgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykgeworICAgICAg
ICAgICAgICAgICAgICBjYWxsYmFjayhXZWJDb3JlOjpFeGNlcHRpb25EYXRhIHsgV2ViQ29yZTo6
SW52YWxpZFN0YXRlRXJyb3IgfSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBjYWxsYmFjayh3ZWFrVGhpcy0+cmVzdWx0
KHN1Y2Nlc3MpKTsKKyAgICAgICAgICAgIH0pLmdldCgpXTsKKyAgICAgICAgfQorCisgICAgICAg
IHZvaWQgbGVhdmUoKSBmaW5hbAorICAgICAgICB7CisgICAgICAgICAgICBbbV9jbGllbnRDb29y
ZGluYXRvciBsZWF2ZV07CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHNlZWtUbyhkb3VibGUg
dGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25E
YXRhPiYmKT4mJiBjYWxsYmFjaykgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgW21fY2xp
ZW50Q29vcmRpbmF0b3Igc2Vla1RvOnRpbWUgd2l0aENvbXBsZXRpb246bWFrZUJsb2NrUHRyKFt3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XSAoQk9PTCBzdWNjZXNzKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlz
KSB7CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEg
eyBXZWJDb3JlOjpJbnZhbGlkU3RhdGVFcnJvciB9KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGNhbGxiYWNrKHdlYWtU
aGlzLT5yZXN1bHQoc3VjY2VzcykpOworICAgICAgICAgICAgfSkuZ2V0KCldOworICAgICAgICB9
CisKKyAgICAgICAgdm9pZCBwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2Vi
Q29yZTo6RXhjZXB0aW9uRGF0YT4mJik+JiYgY2FsbGJhY2spIGZpbmFsCisgICAgICAgIHsKKyAg
ICAgICAgICAgIFttX2NsaWVudENvb3JkaW5hdG9yIHBsYXlXaXRoQ29tcGxldGlvbjptYWtlQmxv
Y2tQdHIoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldIChCT09MIHN1Y2Nlc3MpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGlmICgh
d2Vha1RoaXMpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soV2ViQ29yZTo6RXhjZXB0
aW9uRGF0YSB7IFdlYkNvcmU6OkludmFsaWRTdGF0ZUVycm9yIH0pOworICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY2FsbGJh
Y2sod2Vha1RoaXMtPnJlc3VsdChzdWNjZXNzKSk7CisgICAgICAgICAgICB9KS5nZXQoKV07Cisg
ICAgICAgIH0KKworICAgICAgICB2b2lkIHBhdXNlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJik+JiYgY2FsbGJhY2spIGZpbmFsCisgICAg
ICAgIHsKKyAgICAgICAgICAgIFttX2NsaWVudENvb3JkaW5hdG9yIHBhdXNlV2l0aENvbXBsZXRp
b246bWFrZUJsb2NrUHRyKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXSAoQk9PTCBzdWNjZXNzKSBtdXRhYmxlIHsKKyAgICAgICAgICAg
ICAgICBpZiAoIXdlYWtUaGlzKSB7CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKFdlYkNv
cmU6OkV4Y2VwdGlvbkRhdGEgeyBXZWJDb3JlOjpJbnZhbGlkU3RhdGVFcnJvciB9KTsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgIGNhbGxiYWNrKHdlYWtUaGlzLT5yZXN1bHQoc3VjY2VzcykpOworICAgICAgICAgICAgfSku
Z2V0KCldOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBzZXRUcmFjayhjb25zdCBTdHJpbmcm
IHRyYWNrLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlv
bkRhdGE+JiYpPiYmIGNhbGxiYWNrKSBmaW5hbAorICAgICAgICB7CisgICAgICAgICAgICBbbV9j
bGllbnRDb29yZGluYXRvciBzZXRUcmFjazp0cmFjayB3aXRoQ29tcGxldGlvbjptYWtlQmxvY2tQ
dHIoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayldIChCT09MIHN1Y2Nlc3MpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGlmICghd2Vh
a1RoaXMpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soV2ViQ29yZTo6RXhjZXB0aW9u
RGF0YSB7IFdlYkNvcmU6OkludmFsaWRTdGF0ZUVycm9yIH0pOworICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY2FsbGJhY2so
d2Vha1RoaXMtPnJlc3VsdChzdWNjZXNzKSk7CisgICAgICAgICAgICB9KS5nZXQoKV07CisgICAg
ICAgIH0KKworICAgICAgICB2b2lkIHBvc2l0aW9uU3RhdGVDaGFuZ2VkKGNvbnN0IE9wdGlvbmFs
PFdlYkNvcmU6Ok1lZGlhUG9zaXRpb25TdGF0ZT4mIHN0YXRlKSBmaW5hbAorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAoIXN0YXRlKSB7CisgICAgICAgICAgICAgICAgW21fY2xpZW50Q29vcmRp
bmF0b3IgcG9zaXRpb25TdGF0ZUNoYW5nZWQ6bmlsXTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIF9XS01lZGlhUG9zaXRpb25TdGF0ZSBwb3Np
dGlvbiA9IHsKKyAgICAgICAgICAgICAgICAuZHVyYXRpb24gPSBzdGF0ZS0+ZHVyYXRpb24sCisg
ICAgICAgICAgICAgICAgLnBsYXliYWNrUmF0ZSA9IHN0YXRlLT5wbGF5YmFja1JhdGUsCisgICAg
ICAgICAgICAgICAgLnBvc2l0aW9uID0gc3RhdGUtPnBvc2l0aW9uCisgICAgICAgICAgICB9Owor
ICAgICAgICAgICAgW21fY2xpZW50Q29vcmRpbmF0b3IgcG9zaXRpb25TdGF0ZUNoYW5nZWQ6JnBv
c2l0aW9uXTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgcmVhZHlTdGF0ZUNoYW5nZWQoV2Vi
Q29yZTo6TWVkaWFTZXNzaW9uUmVhZHlTdGF0ZSBzdGF0ZSkgZmluYWwKKyAgICAgICAgeworICAg
ICAgICAgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFdlYkNvcmU6Ok1lZGlh
U2Vzc2lvblJlYWR5U3RhdGU6OkhhdmVOb3RoaW5nKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KFdL
TWVkaWFTZXNzaW9uUmVhZHlTdGF0ZUhhdmVOb3RoaW5nKSwgIldLTWVkaWFTZXNzaW9uUmVhZHlT
dGF0ZUhhdmVOb3RoaW5nIGRvZXMgbm90IG1hdGNoIFdlYktpdCB2YWx1ZSIpOworICAgICAgICAg
ICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFdlYkNvcmU6Ok1lZGlhU2Vzc2lv
blJlYWR5U3RhdGU6OkhhdmVNZXRhZGF0YSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihXS01lZGlh
U2Vzc2lvblJlYWR5U3RhdGVIYXZlTWV0YWRhdGEpLCAiV0tNZWRpYVNlc3Npb25SZWFkeVN0YXRl
SGF2ZU1ldGFkYXRhIGRvZXMgbm90IG1hdGNoIFdlYktpdCB2YWx1ZSIpOworICAgICAgICAgICAg
c3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFdlYkNvcmU6Ok1lZGlhU2Vzc2lvblJl
YWR5U3RhdGU6OkhhdmVDdXJyZW50RGF0YSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihXS01lZGlh
U2Vzc2lvblJlYWR5U3RhdGVIYXZlQ3VycmVudERhdGEpLCAiV0tNZWRpYVNlc3Npb25SZWFkeVN0
YXRlSGF2ZUN1cnJlbnREYXRhIGRvZXMgbm90IG1hdGNoIFdlYktpdCB2YWx1ZSIpOworICAgICAg
ICAgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFdlYkNvcmU6Ok1lZGlhU2Vz
c2lvblJlYWR5U3RhdGU6OkhhdmVGdXR1cmVEYXRhKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KFdL
TWVkaWFTZXNzaW9uUmVhZHlTdGF0ZUhhdmVGdXR1cmVEYXRhKSwgIldLTWVkaWFTZXNzaW9uUmVh
ZHlTdGF0ZUhhdmVGdXR1cmVEYXRhIGRvZXMgbm90IG1hdGNoIFdlYktpdCB2YWx1ZSIpOworICAg
ICAgICAgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFdlYkNvcmU6Ok1lZGlh
U2Vzc2lvblJlYWR5U3RhdGU6OkhhdmVFbm91Z2hEYXRhKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+
KFdLTWVkaWFTZXNzaW9uUmVhZHlTdGF0ZUhhdmVFbm91Z2hEYXRhKSwgIldLTWVkaWFTZXNzaW9u
UmVhZHlTdGF0ZUhhdmVFbm91Z2hEYXRhIGRvZXMgbm90IG1hdGNoIFdlYktpdCB2YWx1ZSIpOwor
CisgICAgICAgICAgICBbbV9jbGllbnRDb29yZGluYXRvciByZWFkeVN0YXRlQ2hhbmdlZDpzdGF0
aWNfY2FzdDxfV0tNZWRpYVNlc3Npb25SZWFkeVN0YXRlPihzdGF0ZSldOworICAgICAgICB9CisK
KyAgICAgICAgdm9pZCBwbGF5YmFja1N0YXRlQ2hhbmdlZChXZWJDb3JlOjpNZWRpYVNlc3Npb25Q
bGF5YmFja1N0YXRlIHN0YXRlKSBmaW5hbAorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWNf
YXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oV2ViQ29yZTo6TWVkaWFTZXNzaW9uUGxheWJhY2tT
dGF0ZTo6Tm9uZSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihXS01lZGlhU2Vzc2lvblBsYXliYWNr
U3RhdGVOb25lKSwgIldLTWVkaWFTZXNzaW9uUGxheWJhY2tTdGF0ZU5vbmUgZG9lcyBub3QgbWF0
Y2ggV2ViS2l0IHZhbHVlIik7CisgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0
PHNpemVfdD4oV2ViQ29yZTo6TWVkaWFTZXNzaW9uUGxheWJhY2tTdGF0ZTo6UGF1c2VkKSA9PSBz
dGF0aWNfY2FzdDxzaXplX3Q+KFdLTWVkaWFTZXNzaW9uUGxheWJhY2tTdGF0ZVBhdXNlZCksICJX
S01lZGlhU2Vzc2lvblBsYXliYWNrU3RhdGVQYXVzZWQgZG9lcyBub3QgbWF0Y2ggV2ViS2l0IHZh
bHVlIik7CisgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oV2Vi
Q29yZTo6TWVkaWFTZXNzaW9uUGxheWJhY2tTdGF0ZTo6UGxheWluZykgPT0gc3RhdGljX2Nhc3Q8
c2l6ZV90PihXS01lZGlhU2Vzc2lvblBsYXliYWNrU3RhdGVQbGF5aW5nKSwgIldLTWVkaWFTZXNz
aW9uUGxheWJhY2tTdGF0ZVBsYXlpbmcgZG9lcyBub3QgbWF0Y2ggV2ViS2l0IHZhbHVlIik7CisK
KyAgICAgICAgICAgIFttX2NsaWVudENvb3JkaW5hdG9yIHBsYXliYWNrU3RhdGVDaGFuZ2VkOnN0
YXRpY19jYXN0PF9XS01lZGlhU2Vzc2lvblBsYXliYWNrU3RhdGU+KHN0YXRlKV07CisgICAgICAg
IH0KKworICAgICAgICB2b2lkIGNvb3JkaW5hdG9yU3RhdGVDaGFuZ2VkKFdlYkNvcmU6Ok1lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGUgc3RhdGUpIGZpbmFsCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihXZWJDb3JlOjpNZWRpYVNlc3Np
b25Db29yZGluYXRvclN0YXRlOjpXYWl0aW5nKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KFdLTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZVdhaXRpbmcpLCAiV0tNZWRpYVNlc3Npb25Db29yZGlu
YXRvclN0YXRlV2FpdGluZyBkb2VzIG5vdCBtYXRjaCBXZWJLaXQgdmFsdWUiKTsKKyAgICAgICAg
ICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihXZWJDb3JlOjpNZWRpYVNlc3Np
b25Db29yZGluYXRvclN0YXRlOjpKb2luZWQpID09IHN0YXRpY19jYXN0PHNpemVfdD4oV0tNZWRp
YVNlc3Npb25Db29yZGluYXRvclN0YXRlSm9pbmVkKSwgIldLTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JTdGF0ZUpvaW5lZCBkb2VzIG5vdCBtYXRjaCBXZWJLaXQgdmFsdWUiKTsKKyAgICAgICAgICAg
IHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihXZWJDb3JlOjpNZWRpYVNlc3Npb25D
b29yZGluYXRvclN0YXRlOjpDbG9zZWQpID09IHN0YXRpY19jYXN0PHNpemVfdD4oV0tNZWRpYVNl
c3Npb25Db29yZGluYXRvclN0YXRlQ2xvc2VkKSwgIldLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JT
dGF0ZUNsb3NlZCBkb2VzIG5vdCBtYXRjaCBXZWJLaXQgdmFsdWUiKTsKKworICAgICAgICAgICAg
W21fY2xpZW50Q29vcmRpbmF0b3IgY29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQ6c3RhdGljX2Nhc3Q8
X1dLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZT4oc3RhdGUpXTsKKyAgICAgICAgfQorCisg
ICAgcHJpdmF0ZToKKyAgICAgICAgUmV0YWluUHRyPGlkIDxfV0tNZWRpYVNlc3Npb25Db29yZGlu
YXRvcj4+IG1fY2xpZW50Q29vcmRpbmF0b3I7CisgICAgICAgIFJldGFpblB0cjxXS01lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9ySGVscGVyPiBtX2Nvb3JkaW5hdG9yRGVsZWdhdGU7CisgICAgfTsKKwor
ICAgIEFTU0VSVCghX2ltcGwtPm1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yRm9yVGVzdGluZygpKTsK
KworICAgIF9pbXBsLT5zZXRNZWRpYVNlc3Npb25Db29yZGluYXRvckZvclRlc3RpbmcoV0tNZWRp
YVNlc3Npb25Db29yZGluYXRvckZvclRlc3Rpbmc6OmNyZWF0ZShwcml2YXRlQ29vcmRpbmF0b3Ip
LnB0cigpKTsKKyAgICBfaW1wbC0+cGFnZSgpLmNyZWF0ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
KCpfaW1wbC0+bWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JGb3JUZXN0aW5nKCksIFtjb21wbGV0aW9u
SGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChib29sIHN1Y2Nlc3Mp
IHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3VjY2Vzcyk7CisgICAgfSk7CisjZWxzZQor
CisgICAgY29tcGxldGlvbkhhbmRsZXIoTk8pOworCisjZW5kaWYKK30KKworQGVuZAorCisjaWYg
RU5BQkxFKE1FRElBX1NFU1NJT05fQ09PUkRJTkFUT1IpCitAaW1wbGVtZW50YXRpb24gV0tNZWRp
YVNlc3Npb25Db29yZGluYXRvckhlbHBlciB7CisgICAgV2Vha1B0cjxXZWJDb3JlOjpNZWRpYVNl
c3Npb25Db29yZGluYXRvckNsaWVudD4gbV9jb29yZGluYXRvckNsaWVudDsKK30KKworLSAoaWQp
aW5pdFdpdGhDb29yZGluYXRvcjooV2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JDbGll
bnQqKWNvb3JkaW5hdG9yCit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAoIXNl
bGYpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgbV9jb29yZGluYXRvckNsaWVudCA9IG1ha2VX
ZWFrUHRyKGNvb3JkaW5hdG9yKTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClzZWVr
U2Vzc2lvblRvVGltZTooZG91YmxlKXRpbWUgd2l0aENvbXBsZXRpb246KHZvaWQoXikoQk9PTCkp
Y29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBtX2Nvb3JkaW5hdG9yQ2xpZW50LT5zZWVrU2Vzc2lv
blRvVGltZSh0aW1lLCBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKworLSAo
dm9pZClwbGF5U2Vzc2lvbldpdGhDb21wbGV0aW9uOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25I
YW5kbGVyCit7CisgICAgbV9jb29yZGluYXRvckNsaWVudC0+cGxheVNlc3Npb24obWFrZUJsb2Nr
UHRyKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKKy0gKHZvaWQpcGF1c2VTZXNzaW9uV2l0aENv
bXBsZXRpb246KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBtX2Nvb3Jk
aW5hdG9yQ2xpZW50LT5wYXVzZVNlc3Npb24obWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVy
KSk7Cit9CisKKy0gKHZvaWQpc2V0U2Vzc2lvblRyYWNrOihOU1N0cmluZyopdHJhY2tJZGVudGlm
aWVyIHdpdGhDb21wbGV0aW9uOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCit7Cisg
ICAgbV9jb29yZGluYXRvckNsaWVudC0+c2V0U2Vzc2lvblRyYWNrKHRyYWNrSWRlbnRpZmllciwg
bWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKIEBlbmQKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKaW5kZXggODU4NTQ0ZDI3
ZDcwNGIzZjAyMzhmYjk4OGE1NTZkNWJkOGYwY2I5NC4uN2Q2OWIyYzJkMmIwNDRlOTk3NmZiN2Qx
MTk4MzZkOWFkMDIxZTRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5oCkBAIC0xNTEsNiArMTUxLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBQ
YWdlQ2xpZW50OwogY2xhc3MgUGFnZUNsaWVudEltcGw7CiBjbGFzcyBEcmF3aW5nQXJlYVByb3h5
OworY2xhc3MgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eVByaXZhdGU7CiBjbGFzcyBTYWZl
QnJvd3NpbmdXYXJuaW5nOwogY2xhc3MgVmlld0dlc3R1cmVDb250cm9sbGVyOwogY2xhc3MgVmll
d1NuYXBzaG90OwpAQCAtNjQzLDYgKzY0NCwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBoYW5kbGVD
b250ZXh0TWVudVRyYW5zbGF0aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgYm91bmRzSW5WaWV3LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbWVudUxvY2F0
aW9uKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKE1FRElBX1NFU1NJT05fQ09PUkRJTkFUT1IpCisg
ICAgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eVByaXZhdGUqIG1lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yRm9yVGVzdGluZygpIHsgcmV0dXJuIG1fY29vcmRpbmF0b3JGb3JUZXN0aW5nLmdldCgp
OyB9CisgICAgdm9pZCBzZXRNZWRpYVNlc3Npb25Db29yZGluYXRvckZvclRlc3RpbmcoTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3JQcm94eVByaXZhdGUqKTsKKyNlbmRpZgorCiBwcml2YXRlOgogI2lm
IEhBVkUoVE9VQ0hfQkFSKQogICAgIHZvaWQgc2V0VXBUZXh0VG91Y2hCYXIoTlNUb3VjaEJhciAq
KTsKQEAgLTg0OSw2ICs4NTUsMTAgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8V0tET01QYXN0
ZU1lbnVEZWxlZ2F0ZT4gbV9kb21QYXN0ZU1lbnVEZWxlZ2F0ZTsKICAgICBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2UpPiBtX2RvbVBhc3RlUmVx
dWVzdEhhbmRsZXI7CiAKKyNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTl9DT09SRElOQVRPUikKKyAg
ICBSZWZQdHI8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eVByaXZhdGU+IG1fY29vcmRpbmF0
b3JGb3JUZXN0aW5nOworI2VuZGlmCisKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogI2lt
cG9ydCA8V2ViS2l0QWRkaXRpb25zL1dlYlZpZXdJbXBsQWRkaXRpb25zQWZ0ZXIuaD4KICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCA2
ZDNkMTI5ZDU4YzY5NTA4NTIxZmFlMjk1YjM0YWE1YmY1MWE5MGU0Li44N2JhZDJiNGM0MGE4MzZj
MTM0ZmZhNzRiMDY4MDdlY2NjMjQ3MGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMTM5LDYgKzEzOSwxMCBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9JbWFnZUV4dHJhY3Rpb25SZXN1bHQuaD4KICNlbmRpZgogCisjaWYgRU5BQkxFKE1FRElBX1NF
U1NJT05fQ09PUkRJTkFUT1IpCisjaW5jbHVkZSA8V2ViS2l0L01lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yUHJveHlQcml2YXRlLmg+CisjZW5kaWYKKwogI2lmIEhBVkUoVFJBTlNMQVRJT05fVUlfU0VS
VklDRVMpCiAjaW1wb3J0IDxUcmFuc2xhdGlvblVJU2VydmljZXMvTFRVSVRyYW5zbGF0aW9uVmll
d0NvbnRyb2xsZXIuaD4KIApAQCAtNTU4Miw2ICs1NTg2LDEzIEBAIGJvb2wgV2ViVmlld0ltcGw6
OmVmZmVjdGl2ZVVzZXJJbnRlcmZhY2VMZXZlbElzRWxldmF0ZWQoKQogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAorI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OX0NPT1JESU5BVE9SKQordm9pZCBXZWJW
aWV3SW1wbDo6c2V0TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JGb3JUZXN0aW5nKE1lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yUHJveHlQcml2YXRlKiBjb29yZGluYXRvcikKK3sKKyAgICBtX2Nvb3JkaW5h
dG9yRm9yVGVzdGluZyA9IGNvb3JkaW5hdG9yOworfQorI2VuZGlmCisKICNpZiBIQVZFKFRSQU5T
TEFUSU9OX1VJX1NFUlZJQ0VTKSAmJiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKIAogYm9vbCBXZWJW
aWV3SW1wbDo6Y2FuSGFuZGxlQ29udGV4dE1lbnVUcmFuc2xhdGlvbigpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRpYS9NZWRpYVNlc3Npb25Db29yZGluYXRv
clByb3h5UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWEvTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3JQcm94eVByaXZhdGUuaAppbmRleCAyMmRkZGVkMGE4OWY4MzQ4YmY3ZTZk
YzI4OGRiY2MzM2ZjZjVlYzZlLi41YmM2MjA3MzEzY2IzNDIwMDk3YWYwNjQxOWU4YTc1MDJlNzg1
OTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRpYS9NZWRpYVNlc3Np
b25Db29yZGluYXRvclByb3h5UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L01lZGlhL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHlQcml2YXRlLmgKQEAgLTI3LDYgKzI3
LDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OX0NPT1JESU5BVE9SKQogCisjaW5jbHVk
ZSA8V2ViQ29yZS9FeGNlcHRpb25EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNlc3Np
b25Db29yZGluYXRvclByaXZhdGUuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTQxLDEwICs0MiwxMyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIFN0cmluZyBpZGVudGlmaWVyKCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHNl
ZWtUbyhkb3VibGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6RXhjZXB0
aW9uRGF0YSYpPiYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBsYXkoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJik+JiYpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgcGF1c2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpFeGNl
cHRpb25EYXRhJik+JiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhY2soY29uc3QgU3Ry
aW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRh
Jik+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgam9pbihDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYpPiYmKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGxlYXZlKCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHNlZWtUbyhkb3VibGUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJik+
JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9w
dGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHBhdXNlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0
aW9uRGF0YT4mJik+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhY2soY29uc3QgU3Ry
aW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25E
YXRhPiYmKT4mJikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHBvc2l0aW9uU3RhdGVDaGFuZ2Vk
KGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhUG9zaXRpb25TdGF0ZT4mKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHJlYWR5U3RhdGVDaGFuZ2VkKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvblJlYWR5
U3RhdGUpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL01lZGlhL1Jl
bW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTWVkaWEvUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eS5jcHAKaW5kZXgg
NzI3ZmUyZDc2MzFmNGU1ZGU3NDE3ZjYzMmQxMWM2MzlhNjRiMmUwNi4uMTA3M2U2NjZjNDhiZDc3
NzVhZjViMDAzOGY5ODg1NTU1MDQ5N2I5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTWVkaWEvUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWEvUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JQcm94eS5jcHAKQEAgLTMwLDE2ICszMCwyMiBAQAogCiAjaW5jbHVkZSAiTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3JQcm94eVByaXZhdGUuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVNlc3Npb25D
b29yZGluYXRvck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3JQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25EYXRhLmg+
CisjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFk
Lmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworZXh0
ZXJuIFdURkxvZ0NoYW5uZWwgTG9nTWVkaWE7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZlB0cjxSZW1vdGVNZWRpYVNlc3Npb25Db29yZGlu
YXRvclByb3h5PiBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5OjpjcmVhdGUoV2Vi
UGFnZVByb3h5JiB3ZWJQYWdlUHJveHksIFJlZjxNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5
UHJpdmF0ZT4mJiBwcml2YXRlQ29vcmRpbmF0b3IpCitSZWY8UmVtb3RlTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3JQcm94eT4gUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6Y3JlYXRl
KFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5LCBSZWY8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQ
cm94eVByaXZhdGU+JiYgcHJpdmF0ZUNvb3JkaW5hdG9yKQogewogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHkod2ViUGFnZVByb3h5LCBX
VEZNb3ZlKHByaXZhdGVDb29yZGluYXRvcikpKTsKIH0KQEAgLTQ4LDggKzU0LDkgQEAgUmVtb3Rl
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JQcm94eShXZWJQYWdlUHIKICAgICA6IG1fd2ViUGFnZVByb3h5KHdlYlBhZ2VQcm94eSkKICAg
ICAsIG1fcHJpdmF0ZUNvb3JkaW5hdG9yKFdURk1vdmUocHJpdmF0ZUNvb3JkaW5hdG9yKSkKICAg
ICAsIG1fbG9nZ2VyKG1fd2ViUGFnZVByb3h5LmxvZ2dlcigpKQotICAgICwgbV9sb2dJZGVudGlm
aWVyKHVuaXF1ZUxvZ0lkZW50aWZpZXIoKSkKKyAgICAsIG1fbG9nSWRlbnRpZmllcihMb2dnZXJI
ZWxwZXI6OnVuaXF1ZUxvZ0lkZW50aWZpZXIoKSkKIHsKKyAgICBtX3ByaXZhdGVDb29yZGluYXRv
ci0+c2V0Q2xpZW50KG1ha2VXZWFrUHRyKHRoaXMpKTsKICAgICBtX3dlYlBhZ2VQcm94eS5wcm9j
ZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25Db29y
ZGluYXRvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZVByb3h5LndlYlBh
Z2VJRCgpLCAqdGhpcyk7CiB9CiAKQEAgLTU4LDE0ICs2NSwxOSBAQCBSZW1vdGVNZWRpYVNlc3Np
b25Db29yZGluYXRvclByb3h5Ojp+UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eSgp
CiAgICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCBtX3dlYlBhZ2VQcm94eS53ZWJQYWdlSUQoKSk7CiB9CiAKLXZvaWQgUmVtb3RlTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6am9pbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmKT4mJikKK3ZvaWQgUmVtb3RlTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3JQcm94eTo6am9pbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdl
YkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYpPiYmIGNhbGxiYWNrKQogewogICAgIGF1dG8gaWRlbnRp
ZmllciA9IExPR0lERU5USUZJRVI7CiAgICAgQUxXQVlTX0xPRyhpZGVudGlmaWVyKTsKIAotICAg
IG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5qb2luKFtpZGVudGlmaWVyXSAoY29uc3QgV2ViQ29yZTo6
RXhjZXB0aW9uRGF0YSYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7CisgICAgbV9wcml2YXRlQ29vcmRp
bmF0b3ItPmpvaW4oW2lkZW50aWZpZXIsIHRoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhp
cyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChhdXRvIGV4Y2VwdGlvbikgbXV0YWJs
ZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKEV4Y2Vw
dGlvbkRhdGEgeyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCiAgICAgICAgIEFMV0FZU19MT0coaWRlbnRpZmllciwgImNvbXBsZXRpb24iKTsK
LSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShleGNlcHRpb24pKTsKKyAgICAgICAg
Y2FsbGJhY2soV1RGTW92ZShleGNlcHRpb24pKTsKICAgICB9KTsKIH0KIApAQCAtNzYsNDcgKzg4
LDY3IEBAIHZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6bGVhdmUoKQog
ICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5sZWF2ZSgpOwogfQogCi12b2lkIFJlbW90ZU1lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OmNvb3JkaW5hdGVTZWVrVG8oZG91YmxlIHRpbWUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5
Ojpjb29yZGluYXRlU2Vla1RvKGRvdWJsZSB0aW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9w
dGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYpPiYmIGNhbGxiYWNrKQogewogICAgIGF1
dG8gaWRlbnRpZmllciA9IExPR0lERU5USUZJRVI7CiAgICAgQUxXQVlTX0xPRyhpZGVudGlmaWVy
LCB0aW1lKTsKIAotICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5zZWVrVG8odGltZSwgW2lkZW50
aWZpZXJdIChjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiYgZXhjZXB0aW9uKSBtdXRhYmxl
IHsKKyAgICBtX3ByaXZhdGVDb29yZGluYXRvci0+c2Vla1RvKHRpbWUsIFtpZGVudGlmaWVyLCB0
aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spXSAoYXV0byBleGNlcHRpb24pIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlz
KSB7CisgICAgICAgICAgICBjYWxsYmFjayhFeGNlcHRpb25EYXRhIHsgSW52YWxpZFN0YXRlRXJy
b3IgfSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICBBTFdBWVNf
TE9HKGlkZW50aWZpZXIsICJjb21wbGV0aW9uIik7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUoZXhjZXB0aW9uKSk7CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoZXhjZXB0aW9u
KSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94
eTo6Y29vcmRpbmF0ZVBsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpF
eGNlcHRpb25EYXRhJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZU1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yUHJveHk6OmNvb3JkaW5hdGVQbGF5KENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJik+JiYgY2FsbGJhY2spCiB7CiAg
ICAgYXV0byBpZGVudGlmaWVyID0gTE9HSURFTlRJRklFUjsKICAgICBBTFdBWVNfTE9HKGlkZW50
aWZpZXIpOwogCi0gICAgbV9wcml2YXRlQ29vcmRpbmF0b3ItPnBsYXkoW2lkZW50aWZpZXJdIChj
b25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICBt
X3ByaXZhdGVDb29yZGluYXRvci0+cGxheShbaWRlbnRpZmllciwgdGhpcywgd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cih0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKGF1dG8gZXhj
ZXB0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykgeworICAgICAgICAgICAg
Y2FsbGJhY2soRXhjZXB0aW9uRGF0YSB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKICAgICAgICAgQUxXQVlTX0xPRyhpZGVudGlmaWVyLCAi
Y29tcGxldGlvbiIpOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGV4Y2VwdGlv
bikpOworICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGV4Y2VwdGlvbikpOwogICAgIH0pOwogfQog
Ci12b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OmNvb3JkaW5hdGVQYXVz
ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQ
cm94eTo6Y29vcmRpbmF0ZVBhdXNlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2Vi
Q29yZTo6RXhjZXB0aW9uRGF0YT4mJik+JiYgY2FsbGJhY2spCiB7CiAgICAgYXV0byBpZGVudGlm
aWVyID0gTE9HSURFTlRJRklFUjsKICAgICBBTFdBWVNfTE9HKGlkZW50aWZpZXIpOwogCi0gICAg
bV9wcml2YXRlQ29vcmRpbmF0b3ItPnBhdXNlKFtpZGVudGlmaWVyXSAoY29uc3QgV2ViQ29yZTo6
RXhjZXB0aW9uRGF0YSYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7CisgICAgbV9wcml2YXRlQ29vcmRp
bmF0b3ItPnBhdXNlKFtpZGVudGlmaWVyLCB0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRo
aXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoYXV0byBleGNlcHRpb24pIG11dGFi
bGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzKSB7CisgICAgICAgICAgICBjYWxsYmFjayhFeGNl
cHRpb25EYXRhIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKwogICAgICAgICBBTFdBWVNfTE9HKGlkZW50aWZpZXIsICJjb21wbGV0aW9uIik7
Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZXhjZXB0aW9uKSk7CisgICAgICAg
IGNhbGxiYWNrKFdURk1vdmUoZXhjZXB0aW9uKSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgUmVtb3Rl
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6Ojpjb29yZGluYXRlU2V0VHJhY2soY29uc3Qg
U3RyaW5nJiB0cmFjaywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpFeGNl
cHRpb25EYXRhJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yUHJveHk6OmNvb3JkaW5hdGVTZXRUcmFjayhjb25zdCBTdHJpbmcmIHRyYWNr
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+
JiYpPiYmIGNhbGxiYWNrKQogewogICAgIGF1dG8gaWRlbnRpZmllciA9IExPR0lERU5USUZJRVI7
CiAgICAgQUxXQVlTX0xPRyhpZGVudGlmaWVyKTsKIAotICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9y
LT5zZXRUcmFjayh0cmFjaywgW2lkZW50aWZpZXJdIChjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25E
YXRhJiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICBtX3ByaXZhdGVDb29yZGluYXRvci0+c2V0
VHJhY2sodHJhY2ssIFtpZGVudGlmaWVyLCB0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRo
aXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoYXV0byBleGNlcHRpb24pIG11dGFi
bGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzKSB7CisgICAgICAgICAgICBjYWxsYmFjayhFeGNl
cHRpb25EYXRhIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKwogICAgICAgICBBTFdBWVNfTE9HKGlkZW50aWZpZXIsICJjb21wbGV0aW9uIik7
Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZXhjZXB0aW9uKSk7CisgICAgICAg
IGNhbGxiYWNrKFdURk1vdmUoZXhjZXB0aW9uKSk7CiAgICAgfSk7CiB9CiAKQEAgLTEzOCw2ICsx
NzAsMTIgQEAgdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5OjpyZWFkeVN0
YXRlQ2hhbmdlZChNZWRpYVNlc3Npb25SZWFkeVN0YXQKICAgICBtX3ByaXZhdGVDb29yZGluYXRv
ci0+cmVhZHlTdGF0ZUNoYW5nZWQoc3RhdGUpOwogfQogCit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yUHJveHk6OmNvb3JkaW5hdG9yU3RhdGVDaGFuZ2VkKFdlYkNvcmU6Ok1lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGUgc3RhdGUpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVO
VElGSUVSKTsKKyAgICBtX3ByaXZhdGVDb29yZGluYXRvci0+Y29vcmRpbmF0b3JTdGF0ZUNoYW5n
ZWQoc3RhdGUpOworfQorCiB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6
OnNlZWtTZXNzaW9uVG9UaW1lKGRvdWJsZSB0aW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNhbGxiYWNrKQogewogICAgIG1fd2ViUGFnZVByb3h5LnNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OlNlZWtTZXNzaW9uVG9U
aW1lIHsgdGltZSB9LCBjYWxsYmFjayk7CkBAIC0xNDgsMjAgKzE4NiwxOSBAQCB2b2lkIFJlbW90
ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OnBsYXlTZXNzaW9uKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbAogICAgIG1fd2ViUGFnZVByb3h5LnNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OlBsYXlTZXNzaW9uIHsgfSwgY2Fs
bGJhY2spOwogfQogCi12b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OnBh
dXNlU2Vzc2lvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiBjYWxsYmFjaykKK3ZvaWQg
UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6cGF1c2VTZXNzaW9uKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCiB7CiAgICAgbV93ZWJQYWdlUHJveHku
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRv
cjo6UGF1c2VTZXNzaW9uIHsgfSwgY2FsbGJhY2spOwogfQogCi12b2lkIFJlbW90ZU1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yUHJveHk6OnNldFNlc3Npb25UcmFjayhjb25zdCBTdHJpbmcmIHRyYWNr
SWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+IGNhbGxiYWNrKQordm9pZCBSZW1vdGVN
ZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5OjpzZXRTZXNzaW9uVHJhY2soY29uc3QgU3RyaW5n
JiB0cmFja0lkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQogewog
ICAgIG1fd2ViUGFnZVByb3h5LnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3I6OlNldFNlc3Npb25UcmFjayB7IHRyYWNrSWQgfSwgY2FsbGJh
Y2spOwogfQogCi12b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OmNvb3Jk
aW5hdG9yU3RhdGVDaGFuZ2VkKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGUg
c3RhdGUpCitXVEZMb2dDaGFubmVsJiBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5
Ojpsb2dDaGFubmVsKCkgY29uc3QKIHsKLSAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwot
ICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5jb29yZGluYXRvclN0YXRlQ2hhbmdlZChzdGF0ZSk7
CisgICAgcmV0dXJuIExvZ01lZGlhOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL01lZGlhL1JlbW90ZU1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL01lZGlhL1JlbW90ZU1l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHkuaAppbmRleCAwNjhhNWY1NmRkNGRiYjY2NjU1MWE3
ZjYxOTgzYjhlMzU3NGQwMjU0Li5jOWNmNmFkMjQ5NDFmMTNkNTZmZTZiNzMyNDU1ZTZhMTUxNTdk
NTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRpYS9SZW1vdGVNZWRp
YVNlc3Npb25Db29yZGluYXRvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TWVkaWEvUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eS5oCkBAIC02MCwxOSArNjAs
MTkgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBSZW1vdGVNZWRpYVNlc3Npb25D
b29yZGluYXRvclByb3h5KFdlYlBhZ2VQcm94eSYsIFJlZjxNZWRpYVNlc3Npb25Db29yZGluYXRv
clByb3h5UHJpdmF0ZT4mJik7CiAKLSAgICB1c2luZyBDb29yZGluYXRlQ29tcGxldGlvbkhhbmRs
ZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEm
KT47CisgICAgdXNpbmcgQ29vcmRpbmF0ZUNvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmKT47CiAKICAgICAv
LyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCiAgICAgLy8gUmVjZWl2ZXJz
LgotICAgIHZvaWQgam9pbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkV4
Y2VwdGlvbkRhdGEmKT4mJik7CisgICAgdm9pZCBqb2luKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
T3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJik+JiYpOwogICAgIHZvaWQgbGVhdmUo
KTsKLSAgICB2b2lkIGNvb3JkaW5hdGVTZWVrVG8oZG91YmxlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmKT4mJik7Ci0gICAgdm9pZCBjb29yZGlu
YXRlUGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRh
dGEmKT4mJik7Ci0gICAgdm9pZCBjb29yZGluYXRlUGF1c2UoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJik+JiYpOwotICAgIHZvaWQgY29vcmRpbmF0
ZVNldFRyYWNrKGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2Vi
Q29yZTo6RXhjZXB0aW9uRGF0YSYpPiYmKTsKLSAgICB2b2lkIHBvc2l0aW9uU3RhdGVDaGFuZ2Vk
KE9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhUG9zaXRpb25TdGF0ZT4pOworICAgIHZvaWQgY29vcmRp
bmF0ZVNlZWtUbyhkb3VibGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29y
ZTo6RXhjZXB0aW9uRGF0YT4mJik+JiYpOworICAgIHZvaWQgY29vcmRpbmF0ZVBsYXkoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmKT4mJik7
CisgICAgdm9pZCBjb29yZGluYXRlUGF1c2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25h
bDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmKT4mJik7CisgICAgdm9pZCBjb29yZGluYXRlU2V0
VHJhY2soY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJD
b3JlOjpFeGNlcHRpb25EYXRhPiYmKT4mJik7CisgICAgdm9pZCBwb3NpdGlvblN0YXRlQ2hhbmdl
ZChjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpNZWRpYVBvc2l0aW9uU3RhdGU+Jik7CiAgICAgdm9p
ZCByZWFkeVN0YXRlQ2hhbmdlZChXZWJDb3JlOjpNZWRpYVNlc3Npb25SZWFkeVN0YXRlKTsKICAg
ICB2b2lkIHBsYXliYWNrU3RhdGVDaGFuZ2VkKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvblBsYXliYWNr
U3RhdGUpOwogICAgIHZvaWQgY29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQoV2ViQ29yZTo6TWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZSk7CkBAIC04MCw4ICs4MCwxMyBAQCBwcml2YXRlOgogICAg
IC8vIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yQ2xpZW50CiAgICAgdm9pZCBzZWVrU2Vzc2lvblRv
VGltZShkb3VibGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwogICAg
IHZvaWQgcGxheVNlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7
Ci0gICAgdm9pZCBwYXVzZVNlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4pIGZp
bmFsOwotICAgIHZvaWQgc2V0U2Vzc2lvblRyYWNrKGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+KSBmaW5hbDsKKyAgICB2b2lkIHBhdXNlU2Vzc2lvbihDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlc3Npb25UcmFj
ayhjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsK
KworICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dnZXIuZ2V0
KCk7IH0KKyAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9s
b2dJZGVudGlmaWVyOyB9CisgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgeyBy
ZXR1cm4gIlJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHkiOyB9CisgICAgV1RGTG9n
Q2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0OwogCiAgICAgV2ViUGFnZVByb3h5JiBtX3dlYlBh
Z2VQcm94eTsKICAgICBSZWY8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eVByaXZhdGU+IG1f
cHJpdmF0ZUNvb3JkaW5hdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKaW5kZXggNzU4YTBmMzVhYTU5NzkzOTA3YTkxMTA1ODdlMjllY2I5OWIxZjFmNi4uYTA1NmQ5
YTJlYmE2ODdhMjA1Zjc1Y2JlNzk5OTgyNzE1ZWNlZjIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMDM4MywxOSArMTAzODMsMTkgQEAgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlQXJyYXkgV2ViUGFnZVByb3h5OjpjcmVhdGVOZXR3b3JrRXh0ZW5zaW9u
c1NhbmRib3hFeHRlbnMKICNlbmRpZgogCiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT05fQ09PUkRJ
TkFUT1IpCi12b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3Io
UmVmPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHlQcml2YXRlPiYmIHByaXZhdGVDb29yZGlu
YXRvciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWFrUHRyPFJlbW90ZU1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yUHJveHk+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFnZVByb3h5
OjpjcmVhdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcihSZWY8TWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JQcm94eVByaXZhdGU+JiYgcHJpdmF0ZUNvb3JkaW5hdG9yLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghbV9tZWRpYVNl
c3Npb25Db29yZGluYXRvclByb3h5KTsKIAogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6V2ViUGFnZTo6Q3JlYXRlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IocHJpdmF0ZUNvb3JkaW5h
dG9yLT5pZGVudGlmaWVyKCkpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHByaXZh
dGVDb29yZGluYXRvciA9IFdURk1vdmUocHJpdmF0ZUNvb3JkaW5hdG9yKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCBzdWNjZXNzKSBtdXRhYmxl
IHsKIAogICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICFzdWNjZXNzKSB7Ci0gICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFs
c2UpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgd2Vha1RoaXMt
Pm1fbWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eSA9IFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yUHJveHk6OmNyZWF0ZSgqd2Vha1RoaXMsIFdURk1vdmUocHJpdmF0ZUNvb3JkaW5hdG9y
KSk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VXZWFrUHRyKHdlYWtUaGlzLT5tX21l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHkuZ2V0KCkpKTsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIodHJ1ZSk7CiAgICAgfSk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKaW5kZXggZWE5YjBjMTRhMWRjNmRhODg3NDRjNmFmMDYzN2ZlOTQxMjRmMTNm
Yy4uNGNhZmU3YzFiNzllY2NhYjM4ZmUwOWJhOTk4ZGM0MmFmYjBiNzM2YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE4ODgsNyArMTg4OCw3IEBAIHB1YmxpYzoK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT05fQ09PUkRJTkFUT1IpCi0gICAgdm9p
ZCBjcmVhdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcihSZWY8TWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JQcm94eVByaXZhdGU+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vha1B0cjxSZW1vdGVN
ZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5Pik+JiYpOworICAgIHZvaWQgY3JlYXRlTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3IoUmVmPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHlQcml2YXRl
PiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICNlbmRpZgogCiAjaWYgUExB
VEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBjMmE1ZjUwOTYwNjI3MWY0MzMxN2JhNWJmODI2YjJhZmVhY2UxZDkyLi5h
ZjM3MTdmMzk4MjllOTY1NjM3YTMzM2VjNTlhNzIwMjMwYzNjNjcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwNSw5ICsxMDUsOSBA
QAogCQkwNzI5N0ZBMzFDMTg2QURCMDAzRjA3MzUgLyogV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hl
Y2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Mjk3
RkExMUMxODZBREIwMDNGMDczNSAvKiBXS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3NDg3OUI5MjM3
M0E5MDkwMEY1Njc4RSAvKiBBcHBLaXRTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc0ODc5QjcyMzczQTkwOTAwRjU2NzhFIC8qIEFwcEtp
dFNvZnRMaW5rLmggKi87IH07CiAJCTA3NEU3NUZFMURGMjIxMTkwMEQzMThFQyAvKiBVc2VyTWVk
aWFQcm9jZXNzTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDc0RTc1RkIxREYxRkQxMzAwRDMxOEVDIC8qIFVzZXJNZWRpYVByb2Nlc3NNYW5h
Z2VyLmggKi87IH07CisJCTA3NUE5Q0YzMjYxNjlCQUIwMDZERkEzQSAvKiBNZWRpYVNlc3Npb25D
b29yZGluYXRvclByb3h5UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDc3QkE1NzAyNjBFOEY2MzAwNzJGMTlGIC8qIE1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yUHJveHlQcml2YXRlLmggKi87IH07CiAJCTA3NkU4ODRFMUExM0NBREYwMDVFOTBG
QyAvKiBBUElDb250ZXh0TWVudUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDc2RTg4NEQxQTEzQ0FERjAwNUU5MEZDIC8qIEFQSUNvbnRleHRN
ZW51Q2xpZW50LmggKi87IH07CiAJCTA3NzI4MTFEMjEyMzRGRjYwMEM4RUYyRSAvKiBVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDRBNDEwRjQzMTlBRjdCMjcwMDJFQkFCNSAvKiBVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCAqLzsgfTsKLQkJMDc3QkE1NkUyNjBFNkQxQzAwNzJG
MTlGIC8qIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MzZCNzU1MjYwRDAzQTAwMEUwNjk5NCAv
KiBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvci5jcHAgKi87IH07CiAJCTA3OTIzMTQ4MjM5
Q0JDQjgwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzUmVw
bGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5
MjMxNDIyMzlDQkNCNTAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVz
c2FnZXNSZXBsaWVzLmggKi87IH07CiAJCTA3OTIzMTRCMjM5Q0JDQjgwMDk1OThFMiAvKiBSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzkyMzE0NTIzOUNCQ0I3MDA5NTk4
RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICov
OyB9OwogCQkwNzkyMzE0QzIzOUNCQ0I4MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDc5MjMxNDYyMzlDQkNCNzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5TWVzc2FnZXMuaCAqLzsgfTsKQEAgLTExOTA2LDYgKzExOTA2LDcgQEAKIAkJCQkw
N0UxOUVGRDIzRDQwMUYxMDA5NEZGQjQgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlTWVzc2Fn
ZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUI0RENFMTI1QTc5MjNDMDA3RDE3OEMg
LyogTWVkaWFTYW1wbGVCeXRlUmFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUExNTc5OUJEMjU4
NDQzMzIwMDUyODIzNiAvKiBNZWRpYVNhbXBsZUN1cnNvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MDc1QTlDRjMyNjE2OUJBQjAwNkRGQTNBIC8qIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHlQ
cml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTU3OTlCNzI1ODQ0MzMyMDA1MjgyMzYgLyog
TWVkaWFUcmFja1JlYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE5MzNERUYxOTY1RUIzMTAw
OEFDM0VBIC8qIE1lbnVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTlCNDc5MDhEMjUz
MTREODMwMEVDMTFBQiAvKiBNZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMuaCBpbiBIZWFkZXJz
ICovLApAQCAtMTM5ODEsNyArMTM5ODIsNiBAQAogCQkJCTA3MDE3ODlFMjNCRTlDRkMwMDVGMEZB
QSAvKiBSZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMDcxQkM1OEYyM0NFMUVBQTAwNjgwRDdDIC8qIFJlbW90ZU1lZGlhUGxheWVyUHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUQ0RDczNzAyM0E5RTU0NzAwNzE3
QTI1IC8qIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCTA3N0JBNTZFMjYwRTZEMUMwMDcyRjE5RiAvKiBSZW1vdGVNZWRpYVNl
c3Npb25Db29yZGluYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxREQyQTY2MzI1NjEyNDZG
MDBGRjdCNkYgLyogUmVtb3RlTWVkaWFTb3VyY2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxQUMxMzM4NTE4NTkwQzQ2MDBGM0VDMDUgLyogUmVtb3RlT2JqZWN0
UmVnaXN0cnlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q4MjUyRTIy
NUQ0OTE5MTAwODYyRkQ4IC8qIFJlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lck1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9NZWRpYVNlc3Npb24vUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU2Vzc2lvbi9SZW1vdGVNZWRpYVNlc3Npb25Db29y
ZGluYXRvci5jcHAKaW5kZXggMGNjM2Y4MWNmMWY0YTZiNTljNjM2ODdjNmIyMjk3ZWY1ZDJiNDg0
NS4uM2I5ZjUxMzYzZWJlNGI5M2U0ZDQ2ZDdhZmY3NjMxNjE5YjEyOWY4MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU2Vzc2lvbi9SZW1vdGVNZWRpYVNlc3Npb25D
b29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU2Vzc2lv
bi9SZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvci5jcHAKQEAgLTcyLDE3ICs3MiwxNyBAQCB2
b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpqb2luKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoT3B0aW9uYWw8V2ViQ29yZQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGV4Y2VwdGlv
bikgewotICAgICAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uIHsgZXhjZXB0aW9uLT5jb2RlLCBX
VEZNb3ZlKGV4Y2VwdGlvbi0+bWVzc2FnZSkgfSk7CisgICAgICAgICAgICBjYWxsYmFjayhleGNl
cHRpb24tPnRvRXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
ICAgICAgICAgY2FsbGJhY2soeyB9KTsKLSAgICB9LCAwKTsKKyAgICB9KTsKIH0KIAogdm9pZCBS
ZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6bGVhdmUoKQogewotICAgIG1fcGFnZS5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5OjpMZWF2ZSB7IH0s
IDApOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25Db29yZGlu
YXRvclByb3h5OjpMZWF2ZSB7IH0pOwogfQogCiB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yOjpzZWVrVG8oZG91YmxlIHRpbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9u
YWw8V2ViQ29yZTo6RXhjZXB0aW9uPiYmKT4mJiBjYWxsYmFjaykKQEAgLTk1LDEyICs5NSwxMiBA
QCB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpzZWVrVG8oZG91YmxlIHRpbWUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGV4Y2Vw
dGlvbikgewotICAgICAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uIHsgZXhjZXB0aW9uLT5jb2Rl
LCBXVEZNb3ZlKGV4Y2VwdGlvbi0+bWVzc2FnZSkgfSk7CisgICAgICAgICAgICBjYWxsYmFjayhl
eGNlcHRpb24tPnRvRXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKICAgICAgICAgY2FsbGJhY2soeyB9KTsKLSAgICB9LCAwKTsKKyAgICB9KTsKIH0KIAogdm9p
ZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6cGxheShDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbj4mJik+JiYgY2FsbGJhY2spCkBAIC0xMTMs
MTIgKzExMywxMiBAQCB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpwbGF5KENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZQogICAgICAgICB9CiAKICAgICAg
ICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uIHsgZXhj
ZXB0aW9uLT5jb2RlLCBXVEZNb3ZlKGV4Y2VwdGlvbi0+bWVzc2FnZSkgfSk7CisgICAgICAgICAg
ICBjYWxsYmFjayhleGNlcHRpb24tPnRvRXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKICAgICAgICAgY2FsbGJhY2soeyB9KTsKLSAgICB9LCAwKTsKKyAgICB9
KTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6cGF1c2UoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb24+JiYpPiYmIGNhbGxi
YWNrKQpAQCAtMTMxLDEyICsxMzEsMTIgQEAgdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGlu
YXRvcjo6cGF1c2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3IKICAgICAg
ICAgfQogCiAgICAgICAgIGlmIChleGNlcHRpb24pIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKEV4
Y2VwdGlvbiB7IGV4Y2VwdGlvbi0+Y29kZSwgV1RGTW92ZShleGNlcHRpb24tPm1lc3NhZ2UpIH0p
OworICAgICAgICAgICAgY2FsbGJhY2soZXhjZXB0aW9uLT50b0V4Y2VwdGlvbigpKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGNhbGxiYWNrKHsgfSk7Ci0gICAg
fSwgMCk7CisgICAgfSk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6
OnNldFRyYWNrKGNvbnN0IFN0cmluZyYgdHJhY2tJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbj4mJik+JiYgY2FsbGJhY2spCkBAIC0x
NDksMzYgKzE0OSwzNiBAQCB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpzZXRU
cmFjayhjb25zdCBTdHJpbmcmIHRyYWNrSWRlbnRpZmllciwgQ29tcAogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uIHsg
ZXhjZXB0aW9uLT5jb2RlLCBXVEZNb3ZlKGV4Y2VwdGlvbi0+bWVzc2FnZSkgfSk7CisgICAgICAg
ICAgICBjYWxsYmFjayhleGNlcHRpb24tPnRvRXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKICAgICAgICAgY2FsbGJhY2soeyB9KTsKLSAgICB9LCAwKTsKKyAg
ICB9KTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6cG9zaXRpb25T
dGF0ZUNoYW5nZWQoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFQb3NpdGlvblN0YXRlPiYg
c3RhdGUpCiB7CiAgICAgQUxXQVlTX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSKTsKLSAg
ICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94
eTo6UG9zaXRpb25TdGF0ZUNoYW5nZWQgeyBzdGF0ZSB9LCAwKTsKKyAgICBtX3BhZ2Uuc2VuZChN
ZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6UG9zaXRpb25TdGF0
ZUNoYW5nZWQgeyBzdGF0ZSB9KTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGlu
YXRvcjo6cmVhZHlTdGF0ZUNoYW5nZWQoV2ViQ29yZTo6TWVkaWFTZXNzaW9uUmVhZHlTdGF0ZSBz
dGF0ZSkKIHsKICAgICBBTFdBWVNfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsIHN0YXRl
KTsKLSAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JQcm94eTo6UmVhZHlTdGF0ZUNoYW5nZWQgeyBzdGF0ZSB9LCAwKTsKKyAgICBtX3BhZ2Uuc2Vu
ZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6UmVhZHlTdGF0
ZUNoYW5nZWQgeyBzdGF0ZSB9KTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGlu
YXRvcjo6cGxheWJhY2tTdGF0ZUNoYW5nZWQoV2ViQ29yZTo6TWVkaWFTZXNzaW9uUGxheWJhY2tT
dGF0ZSBzdGF0ZSkKIHsKICAgICBBTFdBWVNfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIs
IHN0YXRlKTsKLSAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3JQcm94eTo6UGxheWJhY2tTdGF0ZUNoYW5nZWQgeyBzdGF0ZSB9LCAwKTsKKyAgICBt
X3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6
UGxheWJhY2tTdGF0ZUNoYW5nZWQgeyBzdGF0ZSB9KTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVNl
c3Npb25Db29yZGluYXRvcjo6Y29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQoV2ViQ29yZTo6TWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZSBzdGF0ZSkKIHsKICAgICBBTFdBWVNfTE9HX0lGX1BPU1NJ
QkxFKExPR0lERU5USUZJRVIsIHN0YXRlKTsKLSAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVt
b3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6Q29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQg
eyBzdGF0ZSB9LCAwKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3JQcm94eTo6Q29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQgeyBzdGF0ZSB9KTsK
IH0KIAogdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6c2Vla1Nlc3Npb25Ub1Rp
bWUoZG91YmxlIHRpbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggOTk4YWNmM2ZmZjA0Zjg2ODAwNjNhYmM3MDc0MTdmMDQ3NDcxZWY0Yi4uNmUyYTA3ZTU5
ODI0ZDI4ZTkzNzJmMGNjMDQ2M2Y1ZGI5MzI4MmJjNyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIxLTA0LTAyICBF
cmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10g
QWRkIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yIEFQSSB0ZXN0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQxNDAKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzc2MTcxMTczPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai94
Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1Rlc3RXZWJLaXRBUEkueGNzY2hlbWU6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JUZXN0Lm1t
OiBBZGRlZC4KKyAgICAgICAgKC1bX1dLTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yIGxhc3RT
dGF0ZUNoYW5nZV0pOgorICAgICAgICAoLVtfV0tNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3Ig
bGFzdE1ldGhvZENhbGxlZF0pOgorICAgICAgICAoLVtfV0tNb2NrTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3IgaWRlbnRpZmllcl0pOgorICAgICAgICAoLVtfV0tNb2NrTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3Igam9pbldpdGhDb21wbGV0aW9uOl0pOgorICAgICAgICAoLVtfV0tNb2NrTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3IgbGVhdmVdKToKKyAgICAgICAgKC1bX1dLTW9ja01lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yIHNlZWtUbzp3aXRoQ29tcGxldGlvbjpdKToKKyAgICAgICAgKC1bX1dLTW9ja01l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yIHBsYXlXaXRoQ29tcGxldGlvbjpdKToKKyAgICAgICAgKC1b
X1dLTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yIHBhdXNlV2l0aENvbXBsZXRpb246XSk6Cisg
ICAgICAgICgtW19XS01vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvciBzZXRUcmFjazp3aXRoQ29t
cGxldGlvbjpdKToKKyAgICAgICAgKC1bX1dLTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yIHBv
c2l0aW9uU3RhdGVDaGFuZ2VkOl0pOgorICAgICAgICAoLVtfV0tNb2NrTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3IgcmVhZHlTdGF0ZUNoYW5nZWQ6XSk6CisgICAgICAgICgtW19XS01vY2tNZWRpYVNl
c3Npb25Db29yZGluYXRvciBwbGF5YmFja1N0YXRlQ2hhbmdlZDpdKToKKyAgICAgICAgKC1bX1dL
TW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yIGNvb3JkaW5hdG9yU3RhdGVDaGFuZ2VkOl0pOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JUZXN0OjpjcmVh
dGVDb29yZGluYXRvcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25Db29y
ZGluYXRvclRlc3Q6OndlYlZpZXcgY29uc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3JUZXN0Ojpjb29yZGluYXRvciBjb25zdCk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3Q6OmxvYWRQYWdlQW5kQmVj
b21lUmVhZHkpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JUZXN0OjpydW5TY3JpcHRXaXRoVXNlckdlc3R1cmUpOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JUZXN0OjpwbGF5KToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdDo6cGF1c2UpOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JUZXN0OjpsaXN0ZW5Gb3JFdmVudE1l
c3NhZ2VzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
VGVzdDo6ZXZlbnRMaXN0ZW5lcldhc0NhbGxlZCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpN
ZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3Q6OmNsZWFyRXZlbnRMaXN0ZW5lclN0YXRlKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdDo6ZXhlY3V0
ZVVudGlsKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
VGVzdDo6d2FpdEZvckV2ZW50TGlzdGVuZXJUb0JlQ2FsbGVkKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdDo6bGlzdGVuRm9yTWVzc2FnZXNQb3N0
ZWQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JUZXN0
OjpjbGVhck1lc3NhZ2VzUG9zdGVkKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yVGVzdDo6bGlzdGVuRm9yU2Vzc2lvbkhhbmRsZXJNZXNzYWdlcyk6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3Q6OnNlc3Np
b25IYW5kbGVyV2FzQ2FsbGVkKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yVGVzdDo6d2FpdEZvclNlc3Npb25IYW5kbGVyVG9CZUNhbGxlZCk6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3Q6Omxpc3RlbkZv
clByb21pc2VNZXNzYWdlcyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25D
b29yZGluYXRvclRlc3Q6OmNsZWFyUHJvbWlzZU1lc3NhZ2VzKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdDo6cHJvbWlzZVdhc1Jlc29sdmVkKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdDo6cHJv
bWlzZVdhc1JlamVjdGVkKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yVGVzdDo6d2FpdEZvclByb21pc2UpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL21lZGlh
LXJlbW90ZS5odG1sOgorCiAyMDIxLTAzLTMxICBCSiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgog
CiAgICAgICAgIFN0eWxlIGNoZWNrZXIgc2hvdWxkIHdhcm4gYWJvdXQgdXNlIG9mIGZ1dHVyZSBP
UyB2ZXJzaW9ucyBpbiBXS19BUElfQVZBSUxBQkxFCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGQyMzg4ZWY4ZWZjOWRhYmQ5NTRkMjJkOTE5ZjNmNzQ0MDViMDJmMzguLjgyNDFmZmIzMjgzMTJl
MjMwOGNhYTcyYTM3MzFkYmJjNThlOTI3OTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01
NCw2ICs1NCw3IEBACiAJCTA3NDk5NDQyMUVBNTAzNEIwMDBEQTQ0RiAvKiBvbmRldmljZWNoYW5n
ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDRBNDEwRjREMTlBRjdCRUYwMDJFQkFCNiAvKiBvbmRldmljZWNoYW5nZS5odG1sICovOyB9
OwogCQkwNzQ5OTQ0MjFFQTUwMzRCMDAwREE0NUUgLyogZ2V0VXNlck1lZGlhQXVkaW9WaWRlb0Nh
cHR1cmUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0QTQxMEY0RDE5QUY3QkVGMDAyRUJBQzUgLyogZ2V0VXNlck1lZGlhQXVkaW9WaWRl
b0NhcHR1cmUuaHRtbCAqLzsgfTsKIAkJMDc0OTk0NTIxRUE1MDM0QjAwMERBNDRFIC8qIGdldFVz
ZXJNZWRpYTIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MUJBRjRFMjI1QUM5REI4MDBEODJGMzIgLyogZ2V0VXNlck1lZGlhMi5odG1s
ICovOyB9OworCQkwNzVBOUNGNTI2MTc3MjE4MDA2REZBM0EgLyogTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3JUZXN0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDc1QTlDRjQyNjE3NzIxNzAwNkRGQTNBIC8qIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVz
dC5tbSAqLzsgfTsKIAkJMDc2RTUwN0YxRjQ1MTNENjAwNkU5RjVBIC8qIExvZ2dpbmcuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2RTUwN0UxRjQ1
MDMxRTAwNkU5RjVBIC8qIExvZ2dpbmcuY3BwICovOyB9OwogCQkwNzdBNUFGMzIzMDYzOEE2MDBB
NzEwNUMgLyogQWNjZXNzaWJpbGl0eVRlc3RQbHVnaW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzQ2NjQ1ODIyRkY2MzA1MDBFMzQ1MUEgLyogQWNj
ZXNzaWJpbGl0eVRlc3RQbHVnaW4ubW0gKi87IH07CiAJCTA3OTQ3NDBEMjVDQTBCREUwMEM1OTdF
QiAvKiBNZWRpYVNlc3Npb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwNzk0NzQwQzI1Q0EwQkRFMDBDNTk3RUIgLyogTWVkaWFTZXNzaW9uLm1tICov
OyB9OwpAQCAtMTc1Niw2ICsxNzU3LDcgQEAKIAkJMDc0NjY0NTgyMkZGNjMwNTAwRTM0NTFBIC8q
IEFjY2Vzc2liaWxpdHlUZXN0UGx1Z2luLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQWNjZXNz
aWJpbGl0eVRlc3RQbHVnaW4ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NDky
QjM5MURGOEFEQTQwMDYzM0RFMSAvKiBlbnVtZXJhdGVNZWRpYURldmljZXMuaHRtbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuaHRtbDsgcGF0aCA9IGVudW1lcmF0ZU1lZGlhRGV2aWNlcy5odG1sOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwNzQ5MkIzQTFERjhBRTJEMDA2MzNERTEgLyogRW51bWVy
YXRlTWVkaWFEZXZpY2VzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEVudW1lcmF0ZU1lZGlhRGV2aWNlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTA3NUE5Q0Y0MjYxNzcyMTcwMDZERkEzQSAvKiBNZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3Qu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZWRpYVNlc3Npb25D
b29yZGluYXRvclRlc3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NjZERDFG
MUE1QUQ1MjAwMDIzRTNCQiAvKiBQZW5kaW5nQVBJUmVxdWVzdFVSTC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQZW5kaW5nQVBJUmVxdWVzdFVSTC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NkU1MDdFMUY0NTAzMUUwMDZFOUY1QSAvKiBMb2dn
aW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvZ2dpbmcuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzk0NzQwQzI1Q0EwQkRFMDBDNTk3RUIg
LyogTWVkaWFTZXNzaW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gTWVkaWFTZXNzaW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDI2Nyw2
ICs0MjY5LDcgQEAKIAkJCQkzM0RDODkxMDE0MTk1M0EzMDA3NDdFRjcgLyogTG9hZENhbmNlbGVk
Tm9TZXJ2ZXJSZWRpcmVjdENhbGxiYWNrLmNwcCAqLywKIAkJCQkzM0RDODkxMzE0MTk1NzlGMDA3
NDdFRjcgLyogTG9hZENhbmNlbGVkTm9TZXJ2ZXJSZWRpcmVjdENhbGxiYWNrX0J1bmRsZS5jcHAg
Ki8sCiAJCQkJOEFBMjhDMTkxNkQyRkE3QjAwMkZGNERCIC8qIExvYWRQYWdlT25DcmFzaC5jcHAg
Ki8sCisJCQkJMDc1QTlDRjQyNjE3NzIxNzAwNkRGQTNBIC8qIE1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yVGVzdC5tbSAqLywKIAkJCQlDREM5NDQyQzFFRjFGQzA4MDA1OUMzQzQgLyogTWVkaWFTdHJl
YW1UcmFja0RldGFjaGVkLm1tICovLAogCQkJCTdBNTYyMzEwMUFENUFGM0UwMDk2QjkyMCAvKiBN
ZW51VHlwZXNGb3JNb3VzZUV2ZW50cy5jcHAgKi8sCiAJCQkJNTFDQjRBRDcxQjNBMDc5QzAwQzFC
MUM2IC8qIE1vZGFsQWxlcnRzU1BJLmNwcCAqLywKQEAgLTU0ODgsNiArNTQ5MSw3IEBACiAJCQkJ
MDdFRjc2RDUyNTQwRkMwNjAwNTNFRDUzIC8qIE1lZGlhTXV0ZWRTdGF0ZS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUNEQTMxNTk4MUVENTM2NTEwMDlGNjBEMyAvKiBNZWRpYVBsYXliYWNrU2xlZXBB
c3NlcnRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQkwNzk0NzQwRDI1Q0EwQkRFMDBDNTk3RUIg
LyogTWVkaWFTZXNzaW9uLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMDc1QTlDRjUyNjE3NzIxODAw
NkRGQTNBIC8qIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdC5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUNEQzk0NDJFMUVGMUZDMDgwMDU5QzNDNCAvKiBNZWRpYVN0cmVhbVRyYWNrRGV0YWNoZWQu
bW0gaW4gU291cmNlcyAqLywKIAkJCQk1MUJFOUU2NjIzNzYwODlGMDBCNEUxMTcgLyogTWVkaWFU
eXBlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQzUxQTQxMUE3RTAwNDQ3QzRDIC8qIE1l
bW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvVGVzdFdlYktpdEFQSS54Y3NjaGVtZSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2No
ZW1lcy9UZXN0V2ViS2l0QVBJLnhjc2NoZW1lCmluZGV4IDVmNWVjMmU0YWVjMzllZGMzOWZjN2Y4
NWM3ZDk2N2U1YzQ5NDY5NGUuLjg2ODllMDQxMzg3ZTljYjBiYmIxMDY5Y2ExZGYzNzJmNjkwNDgx
MmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9UZXN0V2ViS2l0QVBJLnhjc2NoZW1lCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hj
c2NoZW1lcy9UZXN0V2ViS2l0QVBJLnhjc2NoZW1lCkBAIC01MCw2ICs1MCwxMiBAQAogICAgICAg
ICAgICAgUmVmZXJlbmNlZENvbnRhaW5lciA9ICJjb250YWluZXI6VGVzdFdlYktpdEFQSS54Y29k
ZXByb2oiPgogICAgICAgICAgPC9CdWlsZGFibGVSZWZlcmVuY2U+CiAgICAgICA8L0J1aWxkYWJs
ZVByb2R1Y3RSdW5uYWJsZT4KKyAgICAgIDxDb21tYW5kTGluZUFyZ3VtZW50cz4KKyAgICAgICAg
IDxDb21tYW5kTGluZUFyZ3VtZW50CisgICAgICAgICAgICBhcmd1bWVudCA9ICItLWd0ZXN0X2Zp
bHRlcj1NZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3QuKiIKKyAgICAgICAgICAgIGlzRW5hYmxl
ZCA9ICJZRVMiPgorICAgICAgICAgPC9Db21tYW5kTGluZUFyZ3VtZW50PgorICAgICAgPC9Db21t
YW5kTGluZUFyZ3VtZW50cz4KICAgIDwvTGF1bmNoQWN0aW9uPgogICAgPFByb2ZpbGVBY3Rpb24K
ICAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbiA9ICJSZWxlYXNlIgpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JUZXN0Lm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JUZXN0Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1NmI4MzNhN2QzYjY0MmE1OGQwZmU1YzE5ZTg1ZWE2NTBl
ZjExYzUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dC9NZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3QubW0KQEAgLTAsMCArMSwzODggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OX0NP
T1JESU5BVE9SKQorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVz
dFdLV2ViVmlldy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+Cisj
aW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9X
S1dlYlZpZXdQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZUZvclRl
c3RpbmcuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tFeHBlcmltZW50YWxGZWF0dXJlLmg+CisjaW1w
b3J0IDxXZWJLaXQvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg+CisjaW1wb3J0IDx3dGYv
QmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9IYXNoU2V0Lmg+CisjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CisjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgorI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRy
Lmg+CisjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisKK0BpbnRlcmZhY2UgX1dLTW9j
a01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yIDogTlNPYmplY3QgPF9XS01lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yPgorQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmluZyAqbGFzdFN0
YXRlQ2hhbmdlOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmluZyAqbGFz
dE1ldGhvZENhbGxlZDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGZhaWxzQ29tbWFuZHM7
CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBfV0tNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3Ig
eworICAgIFJldGFpblB0cjxOU1N0cmluZz4gX2xhc3RTdGF0ZUNoYW5nZTsKKyAgICBSZXRhaW5Q
dHI8TlNTdHJpbmc+IF9sYXN0TWV0aG9kQ2FsbGVkOworfQorCitAc3ludGhlc2l6ZSBkZWxlZ2F0
ZTsKKworLSAoTlNTdHJpbmcgKilsYXN0U3RhdGVDaGFuZ2UKK3sKKyAgICByZXR1cm4gc3RkOjpl
eGNoYW5nZShfbGFzdFN0YXRlQ2hhbmdlLCBAIiIpLmdldCgpOworfQorCistIChOU1N0cmluZyAq
KWxhc3RNZXRob2RDYWxsZWQKK3sKKyAgICByZXR1cm4gc3RkOjpleGNoYW5nZShfbGFzdE1ldGhv
ZENhbGxlZCwgQCIiKS5nZXQoKTsKK30KKworLSAoTlNTdHJpbmcgKilpZGVudGlmaWVyCit7Cisg
ICAgcmV0dXJuIEAiVGVzdENvb3JkaW5hdG9yIjsKK30KKworLSAodm9pZClqb2luV2l0aENvbXBs
ZXRpb246KHZvaWQoXiBfTm9ubnVsbCkoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBf
bGFzdE1ldGhvZENhbGxlZCA9IEAiam9pbiI7CisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hf
Z2V0X21haW5fcXVldWUoKSwgXigpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoIV9mYWls
c0NvbW1hbmRzKTsKKyAgICB9KTsKK30KKworLSAodm9pZClsZWF2ZQoreworICAgIF9sYXN0TWV0
aG9kQ2FsbGVkID0gQCJsZWF2ZSI7Cit9CisKKy0gKHZvaWQpc2Vla1RvOihkb3VibGUpdGltZSB3
aXRoQ29tcGxldGlvbjoodm9pZCheIF9Ob25udWxsKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgor
eworICAgIF9sYXN0TWV0aG9kQ2FsbGVkID0gQCJzZWVrVG8iOworICAgIGRpc3BhdGNoX2FzeW5j
KGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF4oKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKCFfZmFpbHNDb21tYW5kcyk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQpcGxheVdpdGhDb21w
bGV0aW9uOih2b2lkKF4gX05vbm51bGwpKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAg
X2xhc3RNZXRob2RDYWxsZWQgPSBAInBsYXkiOworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNo
X2dldF9tYWluX3F1ZXVlKCksIF4oKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCFfZmFp
bHNDb21tYW5kcyk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQpcGF1c2VXaXRoQ29tcGxldGlvbjoo
dm9pZCheIF9Ob25udWxsKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9sYXN0TWV0
aG9kQ2FsbGVkID0gQCJwYXVzZSI7CisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgXigpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoIV9mYWlsc0NvbW1h
bmRzKTsKKyAgICB9KTsKK30KKworLSAodm9pZClzZXRUcmFjazooTlNTdHJpbmcqKXRyYWNrSWRl
bnRpZmllciB3aXRoQ29tcGxldGlvbjoodm9pZCheIF9Ob25udWxsKShCT09MKSljb21wbGV0aW9u
SGFuZGxlcgoreworICAgIF9sYXN0TWV0aG9kQ2FsbGVkID0gQCJzZXRUcmFjayI7CisgICAgZGlz
cGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXigpIHsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoIV9mYWlsc0NvbW1hbmRzKTsKKyAgICB9KTsKK30KKworLSAodm9pZClw
b3NpdGlvblN0YXRlQ2hhbmdlZDoobnVsbGFibGUgX1dLTWVkaWFQb3NpdGlvblN0YXRlICopc3Rh
dGUKK3sKKyAgICBfbGFzdFN0YXRlQ2hhbmdlID0gQCJwb3NpdGlvblN0YXRlQ2hhbmdlZCI7Cit9
CisKKy0gKHZvaWQpcmVhZHlTdGF0ZUNoYW5nZWQ6KF9XS01lZGlhU2Vzc2lvblJlYWR5U3RhdGUp
c3RhdGUKK3sKKyAgICBfbGFzdFN0YXRlQ2hhbmdlID0gQCJyZWFkeVN0YXRlQ2hhbmdlZCI7Cit9
CisKKy0gKHZvaWQpcGxheWJhY2tTdGF0ZUNoYW5nZWQ6KF9XS01lZGlhU2Vzc2lvblBsYXliYWNr
U3RhdGUpc3RhdGUKK3sKKyAgICBfbGFzdFN0YXRlQ2hhbmdlID0gQCJwbGF5YmFja1N0YXRlQ2hh
bmdlZCI7Cit9CisKKy0gKHZvaWQpY29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQ6KF9XS01lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yU3RhdGUpc3RhdGUKK3sKKyAgICBfbGFzdFN0YXRlQ2hhbmdlID0gQCJj
b29yZGluYXRvclN0YXRlQ2hhbmdlZCI7Cit9CitAZW5kCisKK25hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKKworY2xhc3MgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JUZXN0IDogcHVibGljIHRlc3Rp
bmc6OlRlc3QgeworcHVibGljOgorICAgIHZvaWQgU2V0VXAoKSBmaW5hbAorICAgIHsKKyAgICAg
ICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKKyAgICAgICAgYXV0byBwcmVmZXJlbmNlcyA9IFtjb25maWd1cmF0aW9u
IHByZWZlcmVuY2VzXTsKKworICAgICAgICBmb3IgKF9XS0V4cGVyaW1lbnRhbEZlYXR1cmUgKmZl
YXR1cmUgaW4gW1dLUHJlZmVyZW5jZXMgX2V4cGVyaW1lbnRhbEZlYXR1cmVzXSkgeworICAgICAg
ICAgICAgaWYgKFtmZWF0dXJlLmtleSBpc0VxdWFsVG9TdHJpbmc6QCJNZWRpYVNlc3Npb25Db29y
ZGluYXRvckVuYWJsZWQiXSkKKyAgICAgICAgICAgICAgICBbcHJlZmVyZW5jZXMgX3NldEVuYWJs
ZWQ6WUVTIGZvckZlYXR1cmU6ZmVhdHVyZV07CisgICAgICAgICAgICBpZiAoW2ZlYXR1cmUua2V5
IGlzRXF1YWxUb1N0cmluZzpAIk1lZGlhU2Vzc2lvbkVuYWJsZWQiXSkKKyAgICAgICAgICAgICAg
ICBbcHJlZmVyZW5jZXMgX3NldEVuYWJsZWQ6WUVTIGZvckZlYXR1cmU6ZmVhdHVyZV07CisgICAg
ICAgIH0KKworICAgICAgICBfd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgNDAwLCA0MDApIGNvbmZpZ3VyYXRpb246
Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIH0KKworICAgIHZvaWQgVGVhckRvd24oKSBvdmVy
cmlkZQorICAgIHsKKyAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBhcnJheSA9IGFk
b3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgICAgICBmb3IgKGF1dG8m
IHNlc3Npb25NZXNzYWdlIDogY29weVRvVmVjdG9yKF9zZXNzaW9uTWVzc2FnZXNQb3N0ZWQpKQor
ICAgICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpzZXNzaW9uTWVzc2FnZV07CisgICAgICAgIFtf
d2ViVmlldyBjbGVhck1lc3NhZ2VIYW5kbGVyczphcnJheS5nZXQoKV07CisKKyAgICAgICAgW2Fy
cmF5IHJlbW92ZUFsbE9iamVjdHNdOworICAgICAgICBmb3IgKGF1dG8mIGV2ZW50TGlzdGVuZXIg
OiBjb3B5VG9WZWN0b3IoX2V2ZW50TGlzdGVuZXJzQ2FsbGVkKSkKKyAgICAgICAgICAgIFthcnJh
eSBhZGRPYmplY3Q6ZXZlbnRMaXN0ZW5lcl07CisgICAgICAgIFtfd2ViVmlldyBjbGVhck1lc3Nh
Z2VIYW5kbGVyczphcnJheS5nZXQoKV07CisgICAgfQorCisgICAgdm9pZCBjcmVhdGVDb29yZGlu
YXRvcigpCisgICAgeworICAgICAgICBfY29vcmRpbmF0b3IgPSBbW19XS01vY2tNZWRpYVNlc3Np
b25Db29yZGluYXRvciBhbGxvY10gaW5pdF07CisKKyAgICAgICAgX19ibG9jayBib29sIHJlc3Vs
dCA9IGZhbHNlOworICAgICAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgICAgICBb
d2ViVmlldygpIF9jcmVhdGVNZWRpYVNlc3Npb25Db29yZGluYXRvckZvclRlc3Rpbmc6KGlkIDxf
V0tNZWRpYVNlc3Npb25Db29yZGluYXRvcj4pX2Nvb3JkaW5hdG9yLmdldCgpIGNvbXBsZXRpb25I
YW5kbGVyOl4oQk9PTCBzdWNjZXNzKSB7CisgICAgICAgICAgICByZXN1bHQgPSBzdWNjZXNzOwor
ICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH1dOworICAgICAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisgICAgICAgIEVYUEVDVF9UUlVFKHJlc3VsdCk7Cisg
ICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAgTlNMb2coQCItW19jcmVhdGVNZWRpYVNl
c3Npb25Db29yZGluYXRvckZvclRlc3Rpbmc6Y29tcGxldGlvbkhhbmRsZXI6XSBmYWlsZWQhIik7
CisKKyAgICAgICAgd2FpdEZvckV2ZW50TGlzdGVuZXJUb0JlQ2FsbGVkKCJjb29yZGluYXRvcmNo
YW5nZSJfcyk7CisgICAgICAgIEFTU0VSVF9UUlVFKGV2ZW50TGlzdGVuZXJXYXNDYWxsZWQoImNv
b3JkaW5hdG9yY2hhbmdlIl9zKSk7CisgICAgfQorCisgICAgVGVzdFdLV2ViVmlldyogd2ViVmll
dygpIGNvbnN0IHsgcmV0dXJuIF93ZWJWaWV3LmdldCgpOyB9CisgICAgX1dLTW9ja01lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yKiBjb29yZGluYXRvcigpIGNvbnN0IHsgcmV0dXJuIF9jb29yZGluYXRv
ci5nZXQoKTsgfQorCisgICAgdm9pZCBsb2FkUGFnZUFuZEJlY29tZVJlYWR5KGNvbnN0IFN0cmlu
ZyYgcGFnZU5hbWUpCisgICAgeworICAgICAgICBbX3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRU
ZXN0UGFnZU5hbWVkOnBhZ2VOYW1lXTsKKworICAgICAgICBib29sIGNhbnBsYXl0aHJvdWdoID0g
ZmFsc2U7CisgICAgICAgIFt3ZWJWaWV3KCkgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpA
ImNhbnBsYXl0aHJvdWdoIGV2ZW50IiBhY3Rpb246WyZdIHsKKyAgICAgICAgICAgIGNhbnBsYXl0
aHJvdWdoID0gdHJ1ZTsKKyAgICAgICAgfV07CisgICAgICAgIHJ1blNjcmlwdFdpdGhVc2VyR2Vz
dHVyZSgibG9hZCgpIik7CisgICAgICAgIFV0aWw6OnJ1bigmY2FucGxheXRocm91Z2gpOworICAg
IH0KKworICAgIHZvaWQgcnVuU2NyaXB0V2l0aFVzZXJHZXN0dXJlKGNvbnN0IFN0cmluZyYgc2Ny
aXB0KQorICAgIHsKKyAgICAgICAgYm9vbCBjb21wbGV0ZSA9IGZhbHNlOworICAgICAgICBbX3dl
YlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OnNjcmlwdCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlk
LCBOU0Vycm9yICopIHsgY29tcGxldGUgPSB0cnVlOyB9XTsKKyAgICAgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZjb21wbGV0ZSk7CisgICAgfQorCisgICAgdm9pZCBwbGF5KCkKKyAgICB7
CisgICAgICAgIGJvb2wgcGxheWluZyA9IGZhbHNlOworICAgICAgICBbX3dlYlZpZXcgcGVyZm9y
bUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAInBsYXkgZXZlbnQiIGFjdGlvbjpbJl0geyBwbGF5aW5n
ID0gdHJ1ZTsgfV07CisgICAgICAgIHJ1blNjcmlwdFdpdGhVc2VyR2VzdHVyZSgiYXVkaW8ucGxh
eSgpIik7CisgICAgICAgIFV0aWw6OnJ1bigmcGxheWluZyk7CisgICAgfQorCisgICAgdm9pZCBw
YXVzZSgpCisgICAgeworICAgICAgICBib29sIHBhdXNlZCA9IGZhbHNlOworICAgICAgICBbX3dl
YlZpZXcgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAInBhdXNlIGV2ZW50IiBhY3Rpb246
WyZdIHsgcGF1c2VkID0gdHJ1ZTsgfV07CisgICAgICAgIHJ1blNjcmlwdFdpdGhVc2VyR2VzdHVy
ZSgiYXVkaW8ucGF1c2UoKSIpOworICAgICAgICBVdGlsOjpydW4oJnBhdXNlZCk7CisgICAgfQor
CisgICAgdm9pZCBsaXN0ZW5Gb3JFdmVudE1lc3NhZ2VzKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxj
b25zdCBjaGFyKj4gZXZlbnRzKQorICAgIHsKKyAgICAgICAgZm9yIChhdXRvKiBldmVudCA6IGV2
ZW50cykgeworICAgICAgICAgICAgYXV0byBldmVudE1lc3NhZ2UgPSBtYWtlU3RyaW5nKGV2ZW50
LCAiIGV2ZW50Iik7CisgICAgICAgICAgICBbd2ViVmlldygpIHBlcmZvcm1BZnRlclJlY2Vpdmlu
Z01lc3NhZ2U6ZXZlbnRNZXNzYWdlIGFjdGlvbjpbdGhpcywgZXZlbnRNZXNzYWdlID0gV1RGTW92
ZShldmVudE1lc3NhZ2UpXSB7CisgICAgICAgICAgICAgICAgX2V2ZW50TGlzdGVuZXJzQ2FsbGVk
LmFkZChldmVudE1lc3NhZ2UpOworICAgICAgICAgICAgfV07CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBib29sIGV2ZW50TGlzdGVuZXJXYXNDYWxsZWQoY29uc3QgU3RyaW5nJiBldmVudCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBfZXZlbnRMaXN0ZW5lcnNDYWxsZWQuY29udGFpbnMobWFrZVN0
cmluZyhldmVudCwgIiBldmVudCIpKTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyRXZlbnRMaXN0
ZW5lclN0YXRlKCkKKyAgICB7CisgICAgICAgIF9ldmVudExpc3RlbmVyc0NhbGxlZC5jbGVhcigp
OworICAgIH0KKworICAgIHZvaWQgZXhlY3V0ZVVudGlsKEZ1bmN0aW9uPGJvb2woKT4mJiBjYWxs
YmFjaywgaW50IHJldHJpZXMgPSA1MCkKKyAgICB7CisgICAgICAgIGludCB0cmllcyA9IDA7Cisg
ICAgICAgIGRvIHsKKyAgICAgICAgICAgIGlmIChjYWxsYmFjaygpKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIFV0aWw6OnNsZWVwKDAuMSk7CisgICAgICAgIH0gd2hpbGUg
KCsrdHJpZXMgPD0gcmV0cmllcyk7CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHZv
aWQgd2FpdEZvckV2ZW50TGlzdGVuZXJUb0JlQ2FsbGVkKGNvbnN0IFN0cmluZyYgZXZlbnQpCisg
ICAgeworICAgICAgICBleGVjdXRlVW50aWwoWyZdIHsKKyAgICAgICAgICAgIHJldHVybiBldmVu
dExpc3RlbmVyV2FzQ2FsbGVkKGV2ZW50KTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgdm9p
ZCBsaXN0ZW5Gb3JNZXNzYWdlc1Bvc3RlZChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8Y29uc3QgY2hh
cio+IGhhbmRsZXJzLCBjb25zdCBjaGFyKiBzdWZmaXgpCisgICAgeworICAgICAgICBmb3IgKGF1
dG8qIGhhbmRsZXIgOiBoYW5kbGVycykgeworICAgICAgICAgICAgYXV0byBoYW5kbGVyTWVzc2Fn
ZSA9IG1ha2VTdHJpbmcoaGFuZGxlciwgc3VmZml4KTsKKyAgICAgICAgICAgIFt3ZWJWaWV3KCkg
cGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpoYW5kbGVyTWVzc2FnZSBhY3Rpb246W3RoaXMs
IGhhbmRsZXJNZXNzYWdlID0gV1RGTW92ZShoYW5kbGVyTWVzc2FnZSldIHsKKyAgICAgICAgICAg
ICAgICBfc2Vzc2lvbk1lc3NhZ2VzUG9zdGVkLmFkZChoYW5kbGVyTWVzc2FnZSk7CisgICAgICAg
ICAgICB9XTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgY2xlYXJNZXNzYWdlc1Bvc3Rl
ZCgpCisgICAgeworICAgICAgICBfc2Vzc2lvbk1lc3NhZ2VzUG9zdGVkLmNsZWFyKCk7CisgICAg
fQorCisgICAgdm9pZCBsaXN0ZW5Gb3JTZXNzaW9uSGFuZGxlck1lc3NhZ2VzKHN0ZDo6aW5pdGlh
bGl6ZXJfbGlzdDxjb25zdCBjaGFyKj4gaGFuZGxlcnMpCisgICAgeworICAgICAgICBsaXN0ZW5G
b3JNZXNzYWdlc1Bvc3RlZChoYW5kbGVycywgIiBoYW5kbGVyIik7CisgICAgfQorCisgICAgYm9v
bCBzZXNzaW9uSGFuZGxlcldhc0NhbGxlZChjb25zdCBTdHJpbmcmIGhhbmRsZXIpCisgICAgewor
ICAgICAgICByZXR1cm4gX3Nlc3Npb25NZXNzYWdlc1Bvc3RlZC5jb250YWlucyhtYWtlU3RyaW5n
KGhhbmRsZXIsICIgaGFuZGxlciIpKTsKKyAgICB9CisKKyAgICB2b2lkIHdhaXRGb3JTZXNzaW9u
SGFuZGxlclRvQmVDYWxsZWQoY29uc3QgU3RyaW5nJiBoYW5kbGVyKQorICAgIHsKKyAgICAgICAg
ZXhlY3V0ZVVudGlsKFsmXSB7CisgICAgICAgICAgICByZXR1cm4gc2Vzc2lvbkhhbmRsZXJXYXND
YWxsZWQoaGFuZGxlcik7CisgICAgICAgIH0pOworICAgIH0KKworICAgIHZvaWQgbGlzdGVuRm9y
UHJvbWlzZU1lc3NhZ2VzKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxjb25zdCBjaGFyKj4gaGFuZGxl
cnMpCisgICAgeworICAgICAgICBsaXN0ZW5Gb3JNZXNzYWdlc1Bvc3RlZChoYW5kbGVycywgIiBy
ZXNvbHZlZCIpOworICAgICAgICBsaXN0ZW5Gb3JNZXNzYWdlc1Bvc3RlZChoYW5kbGVycywgIiBy
ZWplY3RlZCIpOworICAgIH0KKworICAgIHZvaWQgY2xlYXJQcm9taXNlTWVzc2FnZXMoY29uc3Qg
U3RyaW5nJiBwcm9taXNlKQorICAgIHsKKyAgICAgICAgX3Nlc3Npb25NZXNzYWdlc1Bvc3RlZC5y
ZW1vdmUobWFrZVN0cmluZyhwcm9taXNlLCAiIHJlc29sdmVkIikpOworICAgICAgICBfc2Vzc2lv
bk1lc3NhZ2VzUG9zdGVkLnJlbW92ZShtYWtlU3RyaW5nKHByb21pc2UsICIgcmVqZWN0ZWQiKSk7
CisgICAgfQorCisgICAgYm9vbCBwcm9taXNlV2FzUmVzb2x2ZWQoY29uc3QgU3RyaW5nJiBwcm9t
aXNlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIF9zZXNzaW9uTWVzc2FnZXNQb3N0ZWQuY29udGFp
bnMobWFrZVN0cmluZyhwcm9taXNlLCAiIHJlc29sdmVkIikpOworICAgIH0KKworICAgIGJvb2wg
cHJvbWlzZVdhc1JlamVjdGVkKGNvbnN0IFN0cmluZyYgcHJvbWlzZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBfc2Vzc2lvbk1lc3NhZ2VzUG9zdGVkLmNvbnRhaW5zKG1ha2VTdHJpbmcocHJvbWlz
ZSwgIiByZWplY3RlZCIpKTsKKyAgICB9CisKKyAgICB2b2lkIHdhaXRGb3JQcm9taXNlKGNvbnN0
IFN0cmluZyYgcHJvbWlzZSkKKyAgICB7CisgICAgICAgIGV4ZWN1dGVVbnRpbChbJl0geworICAg
ICAgICAgICAgcmV0dXJuIHByb21pc2VXYXNSZXNvbHZlZChwcm9taXNlKSB8fCBwcm9taXNlV2Fz
UmVqZWN0ZWQocHJvbWlzZSk7CisgICAgICAgIH0sIDIwMCk7CisgICAgfQorCitwcml2YXRlOgor
ICAgIFJldGFpblB0cjxfV0tNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I+IF9jb29yZGluYXRv
cjsKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gX2NvbmZpZ3VyYXRpb247
CisgICAgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IF93ZWJWaWV3OworICAgIEhhc2hTZXQ8U3Ry
aW5nPiBfc2Vzc2lvbk1lc3NhZ2VzUG9zdGVkOworICAgIEhhc2hTZXQ8U3RyaW5nPiBfZXZlbnRM
aXN0ZW5lcnNDYWxsZWQ7Cit9OworCitURVNUX0YoTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JUZXN0
LCBKb2luQW5kTGVhdmUpCit7CisgICAgbG9hZFBhZ2VBbmRCZWNvbWVSZWFkeSgibWVkaWEtcmVt
b3RlIl9zKTsKKyAgICBsaXN0ZW5Gb3JTZXNzaW9uSGFuZGxlck1lc3NhZ2VzKHsgInBsYXkiX3Ms
ICJwYXVzZSJfcywgInNlZWt0byJfcywgInNlZWtmb3J3YXJkIl9zLCAic2Vla2JhY2t3YXJkIl9z
LCAicHJldmlvdXN0cmFjayJfcywgIm5leHR0cmFjayJfcyB9KTsKKyAgICBsaXN0ZW5Gb3JFdmVu
dE1lc3NhZ2VzKHsgImNvb3JkaW5hdG9yY2hhbmdlIl9zIH0pOworICAgIGxpc3RlbkZvclByb21p
c2VNZXNzYWdlcyh7ICJqb2luIl9zIH0pOworCisgICAgY3JlYXRlQ29vcmRpbmF0b3IoKTsKKwor
ICAgIFJldGFpblB0cjxOU1N0cmluZz4gc3RhdGUgPSBbd2ViVmlldygpIG9iamVjdEJ5RXZhbHVh
dGluZ0phdmFTY3JpcHQ6QCJuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yLnN0YXRl
Il07CisgICAgRVhQRUNUX1NUUkVRKCJ3YWl0aW5nIiwgW3N0YXRlIFVURjhTdHJpbmddKTsKKwor
ICAgIC8vICdqb2luKCknIHNob3VsZCBmYWlsIGlmIHRoZSByZW1vdGUgY29vcmRpbmF0b3IgcmVm
dXNlcy4KKyAgICBjb29yZGluYXRvcigpLmZhaWxzQ29tbWFuZHMgPSBZRVM7CisgICAgcnVuU2Ny
aXB0V2l0aFVzZXJHZXN0dXJlKCJqb2luU2Vzc2lvbigpIik7CisgICAgd2FpdEZvclByb21pc2Uo
ImpvaW4iX3MpOworICAgIEFTU0VSVF9UUlVFKHByb21pc2VXYXNSZWplY3RlZCgiam9pbiJfcykp
OworICAgIGNsZWFyUHJvbWlzZU1lc3NhZ2VzKCJqb2luIl9zKTsKKyAgICBFWFBFQ1RfU1RSRVEo
ImpvaW4iLCBjb29yZGluYXRvcigpLmxhc3RNZXRob2RDYWxsZWQuVVRGOFN0cmluZyk7CisKKyAg
ICAvLyBBbmQgaXQgc2hvdWQgc3VjY2VlZCBpZiBpdCBhbGxvd3MgaXQuCisgICAgY29vcmRpbmF0
b3IoKS5mYWlsc0NvbW1hbmRzID0gTk87CisgICAgcnVuU2NyaXB0V2l0aFVzZXJHZXN0dXJlKCJq
b2luU2Vzc2lvbigpIik7CisgICAgd2FpdEZvclByb21pc2UoImpvaW4iX3MpOworICAgIEFTU0VS
VF9UUlVFKHByb21pc2VXYXNSZXNvbHZlZCgiam9pbiJfcykpOworICAgIGNsZWFyUHJvbWlzZU1l
c3NhZ2VzKCJqb2luIl9zKTsKKyAgICBFWFBFQ1RfU1RSRVEoImpvaW4iLCBjb29yZGluYXRvcigp
Lmxhc3RNZXRob2RDYWxsZWQuVVRGOFN0cmluZyk7CisKKyAgICBzdGF0ZSA9IFt3ZWJWaWV3KCkg
b2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIm5hdmlnYXRvci5tZWRpYVNlc3Npb24uY29v
cmRpbmF0b3Iuc3RhdGUiXTsKKyAgICBFWFBFQ1RfU1RSRVEoImpvaW5lZCIsIFtzdGF0ZSBVVEY4
U3RyaW5nXSk7CisKKyAgICBydW5TY3JpcHRXaXRoVXNlckdlc3R1cmUoIm5hdmlnYXRvci5tZWRp
YVNlc3Npb24uY29vcmRpbmF0b3IubGVhdmUoKSIpOworICAgIFN0cmluZyBsYXN0TWV0aG9kQ2Fs
bGVkOworICAgIGV4ZWN1dGVVbnRpbChbJl0geworICAgICAgICBsYXN0TWV0aG9kQ2FsbGVkID0g
Y29vcmRpbmF0b3IoKS5sYXN0TWV0aG9kQ2FsbGVkOworICAgICAgICByZXR1cm4gbGFzdE1ldGhv
ZENhbGxlZCA9PSAibGVhdmUiOworICAgIH0pOworICAgIEVYUEVDVF9TVFJFUSgibGVhdmUiLCBs
YXN0TWV0aG9kQ2FsbGVkLnV0ZjgoKS5kYXRhKCkpOworCisgICAgc3RhdGUgPSBbd2ViVmlldygp
IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNv
b3JkaW5hdG9yLnN0YXRlIl07CisgICAgRVhQRUNUX1NUUkVRKCJjbG9zZWQiLCBbc3RhdGUgVVRG
OFN0cmluZ10pOworCisgICAgLy8gSXQgc2hvdWxkbid0IGJlIHBvc3NpYmxlIHRvIHJlLWpvaW4g
YSBjbG9zZSBjb29yZGluYXRvci4KKyAgICBydW5TY3JpcHRXaXRoVXNlckdlc3R1cmUoImpvaW5T
ZXNzaW9uKCkiKTsKKyAgICB3YWl0Rm9yUHJvbWlzZSgiam9pbiJfcyk7CisgICAgQVNTRVJUX1RS
VUUocHJvbWlzZVdhc1JlamVjdGVkKCJqb2luIl9zKSk7CisgICAgRVhQRUNUX1NUUkVRKCIiLCBj
b29yZGluYXRvcigpLmxhc3RNZXRob2RDYWxsZWQuVVRGOFN0cmluZyk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TRVNTSU9OX0NP
T1JESU5BVE9SKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9tZWRpYS1yZW1vdGUuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvbWVkaWEtcmVtb3RlLmh0bWwKaW5kZXggMWM5OTNjN2NkNDAxYWZmMzJjZjIzMmVkYmM4
ODNlY2RjNzliYjM1Zi4uYjU3YzBlM2YyZjc0N2QxYjc1MDAxMmJlNTA3OGQwY2ZiNGY0NGZhMSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9tZWRpYS1y
ZW1vdGUuaHRtbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL21l
ZGlhLXJlbW90ZS5odG1sCkBAIC00MCw2ICs0MCwxMiBAQAogICAgICAgICAgICAgbmF2aWdhdG9y
Lm1lZGlhU2Vzc2lvbi5tZXRhZGF0YSA9IG5ldyBNZWRpYU1ldGFkYXRhKGRhdGEpOwogICAgICAg
ICAgICAgcG9zdE1lc3NhZ2UoJ3NldCBtZXRhZGF0YScpCiAgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIGZ1bmN0aW9uIGpvaW5TZXNzaW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgbGV0
IHByb21pc2UgPSBuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yLmpvaW4oKTsKKyAg
ICAgICAgICAgIHBvc3RQcm9taXNlKCJqb2luIiwgcHJvbWlzZSk7CisgICAgICAgIH0KIAogICAg
ICAgICBmdW5jdGlvbiBzZXRQbGF5bGlzdE1ldGFkYXRhKGluZGV4KQogICAgICAgICB7CkBAIC05
NSw2ICsxMDEsMTUgQEAKICAgICAgICAgICAgIHBvc3RNZXNzYWdlKGAke2V2dC50eXBlfSBldmVu
dGApOwogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICBhc3luYyBmdW5jdGlvbiBwb3N0UHJv
bWlzZSh0eXBlLCBwcm9taXNlKQorICAgICAgICB7CisgICAgICAgICAgICBsb2coYHdhaXRpbmcg
Zm9yICR7dHlwZX0gcHJvbWlzZWApOworICAgICAgICAgICAgYXdhaXQgcHJvbWlzZQorICAgICAg
ICAgICAgICAgIC50aGVuKCAgKCkgPT4geyBwb3N0TWVzc2FnZShgJHt0eXBlfSByZXNvbHZlZGAp
OyB9ICkKKyAgICAgICAgICAgICAgICAuY2F0Y2goICgpID0+IHsgcG9zdE1lc3NhZ2UoYCR7dHlw
ZX0gcmVqZWN0ZWRgKTsgfSApOworICAgICAgICAgICAgbG9nKGAke3R5cGV9IHByb21pc2Ugc2V0
dGxlZGApOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBmdW5jdGlvbiBsb2FkKCkKICAg
ICAgICAgewogICAgICAgICAgICAgbGV0IHNyYyA9IHBsYXlsaXN0Lm1ldGFkYXRhWzBdLnVybDsK
QEAgLTExMiwxMyArMTI3LDE1IEBACiAgICAgICAgICAgICBldmVudExvZy5pbnNlcnRCZWZvcmUo
bm90ZSwgZXZlbnRMb2cuZmlyc3RDaGlsZCk7CiAgICAgICAgIH0KIAotICAgICAgICAKKyAgICAg
ICAgY29uc3Qgc2Vzc2lvbiA9IG5hdmlnYXRvci5tZWRpYVNlc3Npb247CisKICAgICAgICAgd2lu
ZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBldnQgPT4gewogICAgICAgICAgICAgYXVkaW8g
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYXVkaW8nKVswXTsKICAgICAgICAgICAg
IGF1ZGlvLmFkZEV2ZW50TGlzdGVuZXIoJ2NhbnBsYXl0aHJvdWdoJywgcG9zdEV2ZW50KTsKICAg
ICAgICAgICAgIGF1ZGlvLmFkZEV2ZW50TGlzdGVuZXIoJ3BsYXknLCBwb3N0RXZlbnQpOwogICAg
ICAgICAgICAgYXVkaW8uYWRkRXZlbnRMaXN0ZW5lcigncGF1c2UnLCBwb3N0RXZlbnQpOwogICAg
ICAgICAgICAgYXVkaW8uYWRkRXZlbnRMaXN0ZW5lcignc2Vla2VkJywgcG9zdEV2ZW50KTsKKyAg
ICAgICAgICAgIG5hdmlnYXRvci5tZWRpYVNlc3Npb24uYWRkRXZlbnRMaXN0ZW5lcignY29vcmRp
bmF0b3JjaGFuZ2UnLCBwb3N0RXZlbnQpOwogICAgICAgICB9LCBmYWxzZSk7CiAKICAgICA8L3Nj
cmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425101</attachid>
            <date>2021-04-03 11:02:36 -0700</date>
            <delta_ts>2021-04-06 10:07:01 -0700</delta_ts>
            <desc>WIP, with state change tests</desc>
            <filename>bug-224140-20210403110235.patch</filename>
            <type>text/plain</type>
            <size>80162</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzA5ZmRjYzBkZWVkYmI0
NDFlOGI3MWEyZTliYjQ5OTliY2IwZjQ2Ni4uZTUwZWExNGNhMGUxZmMzNDExNjM1MjliODVlYzE0
ZjQ0NmE2NDRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTA0LTAyICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gQWRk
IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yIEFQSSB0ZXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQxNDAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
Lzc2MTcxMTczPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnBhdXNlU2Vzc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6c2V0U2Vzc2lvblRy
YWNrKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGlu
YXRvci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yUHJpdmF0ZS5oOgorICAgICAgICAqIHBhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdEb21haW4u
aDoKKwogMjAyMS0wNC0wMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBQZW5kaW5nSW1hZ2VCaXRtYXAgZ2V0cyBjcmVhdGVkIG9uIGEgc3RvcHBlZCBzY3JpcHQg
ZXhlY3V0aW9uIGNvbnRleHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY1ZDY3NTE3ZmYyMGM3NWM4NzBlNjJlMDE4
OWFhMmI5ZDllNGI1ODEuLjA1YWM4MDcwOTY0NzUzOTI5ODAzOTliZWJlMTM5M2U3Njg2ZWJkNzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNTggQEAKKzIwMjEtMDQtMDIgIEVyaWMgQ2FybHNvbiAgPGVy
aWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXSBBZGQgTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3IgQVBJIHRlc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNDE0MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzYxNzExNzM+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGVGb3JU
ZXN0aW5nLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5n
Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2NyZWF0ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
Rm9yVGVzdGluZzpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tNZWRpYVNlc3Np
b25Db29yZGluYXRvckhlbHBlciBpbml0V2l0aENvb3JkaW5hdG9yOl0pOgorICAgICAgICAoLVtX
S01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9ySGVscGVyIHNlZWtTZXNzaW9uVG9UaW1lOndpdGhDb21w
bGV0aW9uOl0pOgorICAgICAgICAoLVtXS01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9ySGVscGVyIHBs
YXlTZXNzaW9uV2l0aENvbXBsZXRpb246XSk6CisgICAgICAgICgtW1dLTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3JIZWxwZXIgcGF1c2VTZXNzaW9uV2l0aENvbXBsZXRpb246XSk6CisgICAgICAgICgt
W1dLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JIZWxwZXIgc2V0U2Vzc2lvblRyYWNrOndpdGhDb21w
bGV0aW9uOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JGb3JUZXN0
aW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRNZWRpYVNlc3Npb25Db29yZGluYXRvckZvclRlc3Rp
bmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9NZWRpYS9NZWRpYVNlc3Npb25Db29yZGluYXRvclBy
b3h5UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9NZWRpYS9SZW1vdGVNZWRpYVNlc3Np
b25Db29yZGluYXRvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3JQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQ
cm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJv
eHk6OmpvaW4pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRv
clByb3h5Ojpjb29yZGluYXRlU2Vla1RvKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6Y29vcmRpbmF0ZVBsYXkpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5Ojpjb29yZGluYXRlUGF1c2UpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5Ojpjb29y
ZGluYXRlU2V0VHJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25Db29y
ZGluYXRvclByb3h5Ojpjb29yZGluYXRvclN0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OnBhdXNlU2Vzc2lvbik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OnNldFNlc3Np
b25UcmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
UHJveHk6OmxvZ0NoYW5uZWwgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNl
c3Npb25Db29yZGluYXRvclByb3h5Ojo6OmNvb3JkaW5hdGVTZXRUcmFjayk6IERlbGV0ZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL01lZGlhL1JlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJv
eHkuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94
eTo6bG9nZ2VyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3JQcm94eTo6bG9nSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OmxvZ0NsYXNzTmFtZSBjb25zdCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6Y3JlYXRlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL01lZGlhU2Vzc2lvbi9SZW1vdGVNZWRp
YVNlc3Npb25Db29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yOjpqb2luKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3I6OmxlYXZlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3I6OnNlZWtUbyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yOjpwbGF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3I6OnBhdXNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3I6OnNldFRyYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3I6OnBvc2l0aW9uU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnJlYWR5U3RhdGVDaGFuZ2VkKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnBsYXliYWNrU3Rh
dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3I6OmNvb3JkaW5hdG9yU3RhdGVDaGFuZ2VkKToKKwogMjAyMS0wNC0wMiAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVUF0gUG93ZXIgcmVncmVzc2lvbjog
YXVkaW8gaGFyZHdhcmUgaXMgY29uZmlndXJlZCBmb3IgMTI4IGZyYW1lIHByZWZlcnJlZCBidWZm
ZXIgc2l6ZSBkdXJpbmcgVmlkZW9BdWRpbyBwbGF5YmFjawpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3IuY3BwCmluZGV4IDIwODE5OGJjMzQwMDhlYTk0NmQzOWIxYWFkYzRmODQ0Yzg1NWE4M2EuLjk3
MmQ3OGY4ODc0NjViMmVlZjFiOGY4N2Y0MzJmMTllNWFiM2ZlYWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25D
b29yZGluYXRvci5jcHAKQEAgLTMwNyw3ICszMDcsNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yOjpwbGF5U2Vzc2lvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZQogICAgIGNvbXBsZXRpb25IYW5kbGVyKGludGVybmFsUGxheSgpKTsKIH0KIAotdm9pZCBNZWRp
YVNlc3Npb25Db29yZGluYXRvcjo6cGF1c2VTZXNzaW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6
cGF1c2VTZXNzaW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBtX3N0YXRlKTsKIApAQCAt
MzE5LDcgKzMxOSw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnBhdXNlU2Vzc2lv
bihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiBjb21wbGV0CiAgICAgY29tcGxldGlvbkhh
bmRsZXIoaW50ZXJuYWxQYXVzZSgpKTsKIH0KIAotdm9pZCBNZWRpYVNlc3Npb25Db29yZGluYXRv
cjo6c2V0U2Vzc2lvblRyYWNrKGNvbnN0IFN0cmluZyYgdHJhY2ssIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBNZWRpYVNlc3Npb25Db29yZGlu
YXRvcjo6c2V0U2Vzc2lvblRyYWNrKGNvbnN0IFN0cmluZyYgdHJhY2ssIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQUxXQVlTX0xPRyhM
T0dJREVOVElGSUVSLCBtX3N0YXRlLCAiLCAiLCB0cmFjayk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGlu
YXRvci5oCmluZGV4IGZkNGE4NzNkMWJjOWMyZWVlZGM3M2EzODQ0YTcwNWE2YmVhMjAzMDcuLjc1
ZTZjZDA3ZThhM2QwMjBiZjg0NzNhYTNkMGI2NGNiMjE2NzMwZmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3IuaApAQCAtNzMsOCArNzMsOCBAQCBwcml2YXRlOgogICAgIC8vIE1lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yQ2xpZW50CiAgICAgdm9pZCBzZWVrU2Vzc2lvblRvVGltZShkb3VibGUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwogICAgIHZvaWQgcGxheVNlc3Np
b24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7Ci0gICAgdm9pZCBwYXVz
ZVNlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4pIGZpbmFsOwotICAgIHZvaWQg
c2V0U2Vzc2lvblRyYWNrKGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+KSBmaW5hbDsKKyAgICB2b2lkIHBhdXNlU2Vzc2lvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlc3Npb25UcmFjayhjb25zdCBTdHJpbmcm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKIAogICAgIGJvb2wgaW50
ZXJuYWxTZWVrVG8oZG91YmxlKTsKICAgICBib29sIGludGVybmFsUGxheSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3JQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRp
YVNlc3Npb25Db29yZGluYXRvclByaXZhdGUuaAppbmRleCBmODAzMGU3ODcyMDgyZjAyNzRhN2Fm
NTg5NjJmZWQ4YzE0MGIwYjMyLi42ZDAwYzBiMWI4MjBlMDllNGNmMjNiYjIxMjFkYzQyYTdjY2Qy
MzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRp
YVNlc3Npb25Db29yZGluYXRvclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGluYXRvclByaXZhdGUuaApAQCAtNDYsOCAr
NDYsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgc2Vla1Nlc3Npb25Ub1RpbWUoZG91
YmxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHBsYXlTZXNzaW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgcGF1c2VTZXNzaW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNlc3Npb25UcmFjayhjb25zdCBTdHJpbmcmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwYXVz
ZVNlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBzZXRTZXNzaW9uVHJhY2soY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJikgPSAwOwogfTsKIAogY2xhc3MgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQ
cml2YXRlIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRl
PiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RpYWdub3N0aWNMb2dnaW5nRG9t
YWluLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RpYWdub3N0aWNMb2dnaW5nRG9tYWluLmgKaW5k
ZXggMjliM2EwMzBkZTIyNWYwZWZjMmE2ZTM5YzU4ZTJiZGVkMjA5MDNjMC4uYjA1NDlhODY0MWRj
YjE0MzU1Mjg1OGEzYTYxYzU3NWY5ODczZWIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9EaWFnbm9zdGljTG9nZ2luZ0RvbWFpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RGlhZ25vc3RpY0xvZ2dpbmdEb21haW4uaApAQCAtMjUsNiArMjUsOCBAQAogCiAjcHJhZ21hIG9u
Y2UKIAorI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogZW51bSBjbGFzcyBEaWFnbm9zdGljTG9nZ2luZ0RvbWFpbiA6IHVpbnQ4X3QgeyBNZWRpYSB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
U2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IDIwNTcxMjY5OTgyMGZiZmY3NjYxYjUwMjdkYjg1MDJh
M2M2MTU5ZjEuLmYzZDRhMmFmNTQ1OWZmY2Q0YjgyMmIwOTk4MzYzYmI4MWUwNTAyMjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25D
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtT
ZXNzaW9uQ29jb2EubW0KQEAgLTY1LDcgKzY1LDcgQEAKICNlbHNlCiAjZGVmaW5lIE5FVFdPUktf
U0VTU0lPTl9DT0NPQV9BRERJVElPTlNfMQogI2RlZmluZSBORVRXT1JLX1NFU1NJT05fQ09DT0Ff
SFRUUF9SRURJUkVDVF9BRERJVElPTlMKLXZvaWQgV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29h
OjpyZW1vdmVOZXR3b3JrV2Vic2l0ZURhdGEoV2FsbFRpbWUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigpOyB9Cit2b2lk
IFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6IChXYWxsVGltZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKCk7IH0K
ICNlbmRpZgogCiAjaW1wb3J0ICJEZXZpY2VNYW5hZ2VtZW50U29mdExpbmsuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
CmluZGV4IDk0ZWE3MWMzNTg3ZmU0ZjgzOWIwOTA3MjQzZjhlMjQxYzk4OTFmMGUuLmNiZjY3ZTg3
ZjU5MGY4MDJiNjBkY2I4Mzk1MmRhYzA0YThjODM4MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtNDY5LDYg
KzQ2OSw3IEBAIFVJUHJvY2Vzcy9JbnNwZWN0b3IvQWdlbnRzL0luc3BlY3RvckJyb3dzZXJBZ2Vu
dC5jcHAKIAogVUlQcm9jZXNzL01lZGlhL0F1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJv
eHkuY3BwCiBVSVByb2Nlc3MvTWVkaWEvTWVkaWFVc2FnZU1hbmFnZXIuY3BwCitVSVByb2Nlc3Mv
TWVkaWEvUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eS5jcHAKIAogVUlQcm9jZXNz
L05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHku
Y3BwCiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb24uY3BwCkBAIC01ODEs
NiArNTgyLDggQEAgV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViUGFnZUluc3BlY3RvclRhcmdldC5j
cHAKIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXRDb250cm9sbGVy
LmNwcAogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViUGFnZUluc3BlY3RvclRhcmdldEZyb250ZW5k
Q2hhbm5lbC5jcHAKIAorV2ViUHJvY2Vzcy9NZWRpYVNlc3Npb24vUmVtb3RlTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3IuY3BwCisKIFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0vTWVkaWFEZXZpY2VTYW5k
Ym94RXh0ZW5zaW9ucy5jcHAKIFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oCmluZGV4
IGRiYjg0ZDhjY2JiNWNmMjVmZjFmYzNmNzY5NDE2MTA4NzM4NDQwOTAuLmMwNTg5ZDg4YmJiZTUw
ZmIwZWJiZTA3NTcyNDFhNDc3ODc0NTFlYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5o
CkBAIC0yNiw2ICsyNiw4IEBACiAjaW1wb3J0ICJXS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZ0lP
Uy5oIgogI2ltcG9ydCAiV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmdNYWMuaCIKIAorTlNfQVNT
VU1FX05PTk5VTExfQkVHSU4KKwogdHlwZWRlZiBlbnVtIHsKICAgICBXS1dlYlZpZXdBdWRpb1Jv
dXRpbmdBcmJpdHJhdGlvblN0YXR1c05vbmUsCiAgICAgV0tXZWJWaWV3QXVkaW9Sb3V0aW5nQXJi
aXRyYXRpb25TdGF0dXNQZW5kaW5nLApAQCAtMzcsNiArMzksOCBAQCBzdHJ1Y3QgV0tBcHBCb3Vu
ZE5hdmlnYXRpb25UZXN0aW5nRGF0YSB7CiAgICAgQk9PTCBoYXNMb2FkZWROb25BcHBCb3VuZFJl
cXVlc3RUZXN0aW5nOwogfTsKIAorQHByb3RvY29sIF9XS01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
OworCiBAaW50ZXJmYWNlIFdLV2ViVmlldyAoV0tUZXN0aW5nKQogCiAtICh2b2lkKV9zZXRQYWdl
U2NhbGU6KENHRmxvYXQpc2NhbGUgd2l0aE9yaWdpbjooQ0dQb2ludClvcmlnaW47CkBAIC05OSw0
ICsxMDMsNTYgQEAgc3RydWN0IFdLQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEgewogLSAo
dm9pZClfYXBwQm91bmROYXZpZ2F0aW9uRGF0YToodm9pZCheKShzdHJ1Y3QgV0tBcHBCb3VuZE5h
dmlnYXRpb25UZXN0aW5nRGF0YSBkYXRhKSljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpX2Ns
ZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YToodm9pZCheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxl
cjsKIAorLSAodm9pZClfY3JlYXRlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JGb3JUZXN0aW5nOihp
ZCA8X1dLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I+KXByaXZhdGVDb29yZGluYXRvciBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcjsKKworQGVuZAorCit0
eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tNZWRpYVNlc3Npb25SZWFkeVN0YXRlKSB7Cisg
ICAgV0tNZWRpYVNlc3Npb25SZWFkeVN0YXRlSGF2ZU5vdGhpbmcsCisgICAgV0tNZWRpYVNlc3Np
b25SZWFkeVN0YXRlSGF2ZU1ldGFkYXRhLAorICAgIFdLTWVkaWFTZXNzaW9uUmVhZHlTdGF0ZUhh
dmVDdXJyZW50RGF0YSwKKyAgICBXS01lZGlhU2Vzc2lvblJlYWR5U3RhdGVIYXZlRnV0dXJlRGF0
YSwKKyAgICBXS01lZGlhU2Vzc2lvblJlYWR5U3RhdGVIYXZlRW5vdWdoRGF0YQorfTsKKwordHlw
ZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLTWVkaWFTZXNzaW9uUGxheWJhY2tTdGF0ZSkgewor
ICAgIFdLTWVkaWFTZXNzaW9uUGxheWJhY2tTdGF0ZU5vbmUsCisgICAgV0tNZWRpYVNlc3Npb25Q
bGF5YmFja1N0YXRlUGF1c2VkLAorICAgIFdLTWVkaWFTZXNzaW9uUGxheWJhY2tTdGF0ZVBsYXlp
bmcKK307CisKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS01lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yU3RhdGUpIHsKKyAgICBXS01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGVXYWl0aW5n
LAorICAgIFdLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZUpvaW5lZCwKKyAgICBXS01lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGVDbG9zZWQKK307CisKK3N0cnVjdCBfV0tNZWRpYVBvc2l0
aW9uU3RhdGUgeworICAgIGRvdWJsZSBkdXJhdGlvbjsKKyAgICBkb3VibGUgcGxheWJhY2tSYXRl
OworICAgIGRvdWJsZSBwb3NpdGlvbjsKK307CisKK0Bwcm90b2NvbCBfV0tNZWRpYVNlc3Npb25D
b29yZGluYXRvckRlbGVnYXRlIDxOU09iamVjdD4KKy0gKHZvaWQpc2Vla1Nlc3Npb25Ub1RpbWU6
KGRvdWJsZSl0aW1lIHdpdGhDb21wbGV0aW9uOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5k
bGVyOworLSAodm9pZClwbGF5U2Vzc2lvbldpdGhDb21wbGV0aW9uOih2b2lkKF4pKEJPT0wpKWNv
bXBsZXRpb25IYW5kbGVyOworLSAodm9pZClwYXVzZVNlc3Npb25XaXRoQ29tcGxldGlvbjoodm9p
ZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpc2V0U2Vzc2lvblRyYWNrOihO
U1N0cmluZyopdHJhY2tJZGVudGlmaWVyIHdpdGhDb21wbGV0aW9uOih2b2lkKF4pKEJPT0wpKWNv
bXBsZXRpb25IYW5kbGVyOworQGVuZAorCitAcHJvdG9jb2wgX1dLTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3IgPE5TT2JqZWN0PgorQHByb3BlcnR5IChudWxsYWJsZSwgd2VhaykgaWQgPF9XS01lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yRGVsZWdhdGU+IGRlbGVnYXRlOworQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5KSBOU1N0cmluZyAqIF9Ob25udWxsIGlkZW50aWZpZXI7CistICh2b2lkKWpv
aW5XaXRoQ29tcGxldGlvbjoodm9pZCheIF9Ob25udWxsKShCT09MKSljb21wbGV0aW9uSGFuZGxl
cjsKKy0gKHZvaWQpbGVhdmU7CistICh2b2lkKXNlZWtUbzooZG91YmxlKXRpbWUgd2l0aENvbXBs
ZXRpb246KHZvaWQoXiBfTm9ubnVsbCkoQk9PTCkpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lk
KXBsYXlXaXRoQ29tcGxldGlvbjoodm9pZCheIF9Ob25udWxsKShCT09MKSljb21wbGV0aW9uSGFu
ZGxlcjsKKy0gKHZvaWQpcGF1c2VXaXRoQ29tcGxldGlvbjoodm9pZCheIF9Ob25udWxsKShCT09M
KSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpc2V0VHJhY2s6KE5TU3RyaW5nICpfTm9ubnVs
bCl0cmFja0lkZW50aWZpZXIgd2l0aENvbXBsZXRpb246KHZvaWQoXiBfTm9ubnVsbCkoQk9PTCkp
Y29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKXBvc2l0aW9uU3RhdGVDaGFuZ2VkOihfV0tNZWRp
YVBvc2l0aW9uU3RhdGUgKiBfTnVsbGFibGUpc3RhdGU7CistICh2b2lkKXJlYWR5U3RhdGVDaGFu
Z2VkOihfV0tNZWRpYVNlc3Npb25SZWFkeVN0YXRlKXN0YXRlOworLSAodm9pZClwbGF5YmFja1N0
YXRlQ2hhbmdlZDooX1dLTWVkaWFTZXNzaW9uUGxheWJhY2tTdGF0ZSlzdGF0ZTsKKy0gKHZvaWQp
Y29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQ6KF9XS01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGUp
c3RhdGU7CiBAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1Rlc3RpbmcubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVzdGluZy5tbQppbmRleCA0Zjky
OGUyODgxNzc2N2Q3NTBlZjM1OWRhODQ2OTBiNzE3OGUyN2ZiLi5iZDlkNjYwOTk4YjZhMzA2N2I5
NjVlNzRiMzcwZmEyMzE3YWM4OGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVzdGluZy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVzdGluZy5tbQpAQCAtMjcsNiArMjcsNyBAQAogI2lt
cG9ydCAiV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaCIKIAogI2ltcG9ydCAiQXVkaW9TZXNz
aW9uUm91dGluZ0FyYml0cmF0b3JQcm94eS5oIgorI2ltcG9ydCAiTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3JQcm94eVByaXZhdGUuaCIKICNpbXBvcnQgIlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eS5oIgogI2ltcG9ydCAiVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuaCIKICNpbXBvcnQgIlZpZXdH
ZXN0dXJlQ29udHJvbGxlci5oIgpAQCAtMzksNyArNDAsMTcgQEAKICNpbXBvcnQgIl9XS0luc3Bl
Y3RvckludGVybmFsLmgiCiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNr
cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9WYWxpZGF0aW9uQnViYmxlLmg+Ci0KKyNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KKworI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OX0NPT1JESU5BVE9SKQor
QGludGVyZmFjZSBXS01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9ySGVscGVyIDogTlNPYmplY3QgPF9X
S01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yRGVsZWdhdGU+CistIChpZClpbml0V2l0aENvb3JkaW5h
dG9yOihXZWJDb3JlOjpNZWRpYVNlc3Npb25Db29yZGluYXRvckNsaWVudCopY29vcmRpbmF0b3I7
CistICh2b2lkKXNlZWtTZXNzaW9uVG9UaW1lOihkb3VibGUpdGltZSB3aXRoQ29tcGxldGlvbjoo
dm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpcGxheVNlc3Npb25XaXRo
Q29tcGxldGlvbjoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpcGF1
c2VTZXNzaW9uV2l0aENvbXBsZXRpb246KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXI7
CistICh2b2lkKXNldFNlc3Npb25UcmFjazooTlNTdHJpbmcqKXRyYWNrSWRlbnRpZmllciB3aXRo
Q29tcGxldGlvbjoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcjsKK0BlbmQKKyNlbmRp
ZgogCiBAaW1wbGVtZW50YXRpb24gV0tXZWJWaWV3IChXS1Rlc3RpbmcpCiAKQEAgLTM2MCw0ICsz
NzEsMjQwIEBACiAgICAgfSk7CiB9CiAKKy0gKHZvaWQpX2NyZWF0ZU1lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yRm9yVGVzdGluZzooaWQgPF9XS01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yPilwcml2YXRl
Q29vcmRpbmF0b3IgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhh
bmRsZXIKK3sKKyNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTl9DT09SRElOQVRPUikKKyAgICBjbGFz
cyBXS01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yRm9yVGVzdGluZworICAgICAgICA6IHB1YmxpYyBX
ZWJLaXQ6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHlQcml2YXRlCisgICAgICAgICwgcHVi
bGljIFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yQ2xpZW50IHsKKyAgICAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgorCisgICAgICAgIHN0YXRpYyBSZWY8
V0tNZWRpYVNlc3Npb25Db29yZGluYXRvckZvclRlc3Rpbmc+IGNyZWF0ZShpZCA8X1dLTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3I+IHByaXZhdGVDb29yZGluYXRvcikKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV0tNZWRpYVNlc3Npb25Db29yZGluYXRvckZvclRl
c3RpbmcocHJpdmF0ZUNvb3JkaW5hdG9yKSk7CisgICAgICAgIH0KKworICAgICAgICB1c2luZyBX
ZWJDb3JlOjpNZWRpYVNlc3Npb25Db29yZGluYXRvckNsaWVudDo6d2Vha1B0ckZhY3Rvcnk7Cisg
ICAgICAgIHVzaW5nIFdlYWtWYWx1ZVR5cGUgPSBXZWJDb3JlOjpNZWRpYVNlc3Npb25Db29yZGlu
YXRvckNsaWVudDo6V2Vha1ZhbHVlVHlwZTsKKworICAgIHByaXZhdGU6CisgICAgICAgIGV4cGxp
Y2l0IFdLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JGb3JUZXN0aW5nKGlkIDxfV0tNZWRpYVNlc3Np
b25Db29yZGluYXRvcj4gY2xpZW50Q29vcmRpbmF0b3IpCisgICAgICAgICAgICA6IFdlYktpdDo6
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eVByaXZhdGUoKQorICAgICAgICAgICAgLCBtX2Ns
aWVudENvb3JkaW5hdG9yKGNsaWVudENvb3JkaW5hdG9yKQorICAgICAgICB7CisgICAgICAgICAg
ICBhdXRvKiBkZWxlZ2F0ZUhlbHBlciA9IFtbV0tNZWRpYVNlc3Npb25Db29yZGluYXRvckhlbHBl
ciBhbGxvY10gaW5pdFdpdGhDb29yZGluYXRvcjp0aGlzXTsKKyAgICAgICAgICAgIFttX2NsaWVu
dENvb3JkaW5hdG9yIHNldERlbGVnYXRlOmRlbGVnYXRlSGVscGVyXTsKKyAgICAgICAgICAgIG1f
Y29vcmRpbmF0b3JEZWxlZ2F0ZSA9IGFkb3B0TlMoZGVsZWdhdGVIZWxwZXIpOworICAgICAgICB9
CisKKyAgICAgICAgdm9pZCBzZWVrU2Vzc2lvblRvVGltZShkb3VibGUgdGltZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykgZmluYWwKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKGF1dG8gY29vcmRpbmF0b3JDbGllbnQgPSBjbGllbnQoKSkKKyAgICAgICAgICAg
ICAgICBjb29yZGluYXRvckNsaWVudC0+c2Vla1Nlc3Npb25Ub1RpbWUodGltZSwgV1RGTW92ZShj
YWxsYmFjaykpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGNhbGxiYWNrKGZh
bHNlKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgcGxheVNlc3Npb24oQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykgZmluYWwKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKGF1dG8gY29vcmRpbmF0b3JDbGllbnQgPSBjbGllbnQoKSkKKyAgICAgICAgICAgICAg
ICBjb29yZGluYXRvckNsaWVudC0+cGxheVNlc3Npb24oV1RGTW92ZShjYWxsYmFjaykpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKKyAgICAgICAg
fQorCisgICAgICAgIHZvaWQgcGF1c2VTZXNzaW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY2FsbGJhY2spIGZpbmFsCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGNv
b3JkaW5hdG9yQ2xpZW50ID0gY2xpZW50KCkpCisgICAgICAgICAgICAgICAgY29vcmRpbmF0b3JD
bGllbnQtPnBhdXNlU2Vzc2lvbihXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UpOworICAgICAgICB9CisKKyAgICAgICAg
dm9pZCBzZXRTZXNzaW9uVHJhY2soY29uc3QgU3RyaW5nJiB0cmFja0lkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spIGZpbmFsCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmIChhdXRvIGNvb3JkaW5hdG9yQ2xpZW50ID0gY2xpZW50KCkpCisgICAgICAg
ICAgICAgICAgY29vcmRpbmF0b3JDbGllbnQtPnNldFNlc3Npb25UcmFjayh0cmFja0lkZW50aWZp
ZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBjYWxsYmFjayhmYWxzZSk7CisgICAgICAgIH0KKworICAgICAgICBPcHRpb25hbDxXZWJDb3Jl
OjpFeGNlcHRpb25EYXRhPiByZXN1bHQoYm9vbCBzdWNjZXNzKSBjb25zdAorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgICAgICAgICAgcmV0dXJuIHsgV2ViQ29y
ZTo6RXhjZXB0aW9uRGF0YSB7IFdlYkNvcmU6OkludmFsaWRTdGF0ZUVycm9yIH0gfTsKKworICAg
ICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgfQorCisgICAgICAgIFN0cmluZyBpZGVudGlm
aWVyKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIFttX2NsaWVudENvb3Jk
aW5hdG9yIGlkZW50aWZpZXJdOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBqb2luKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJik+JiYg
Y2FsbGJhY2spIGZpbmFsCisgICAgICAgIHsKKyAgICAgICAgICAgIFttX2NsaWVudENvb3JkaW5h
dG9yIGpvaW5XaXRoQ29tcGxldGlvbjptYWtlQmxvY2tQdHIoW3dlYWtUaGlzID0gbWFrZVdlYWtQ
dHIodGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChCT09MIHN1Y2Nlc3MpIG11
dGFibGUgeworICAgICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpIHsKKyAgICAgICAgICAgICAg
ICAgICAgY2FsbGJhY2soV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSB7IFdlYkNvcmU6OkludmFsaWRT
dGF0ZUVycm9yIH0pOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgY2FsbGJhY2sod2Vha1RoaXMtPnJlc3VsdChzdWNjZXNz
KSk7CisgICAgICAgICAgICB9KS5nZXQoKV07CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGxl
YXZlKCkgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgW21fY2xpZW50Q29vcmRpbmF0b3Ig
bGVhdmVdOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBzZWVrVG8oZG91YmxlIHRpbWUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJik+
JiYgY2FsbGJhY2spIGZpbmFsCisgICAgICAgIHsKKyAgICAgICAgICAgIFttX2NsaWVudENvb3Jk
aW5hdG9yIHNlZWtUbzp0aW1lIHdpdGhDb21wbGV0aW9uOm1ha2VCbG9ja1B0cihbd2Vha1RoaXMg
PSBtYWtlV2Vha1B0cih0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKEJPT0wg
c3VjY2VzcykgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykgeworICAg
ICAgICAgICAgICAgICAgICBjYWxsYmFjayhXZWJDb3JlOjpFeGNlcHRpb25EYXRhIHsgV2ViQ29y
ZTo6SW52YWxpZFN0YXRlRXJyb3IgfSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBjYWxsYmFjayh3ZWFrVGhpcy0+cmVz
dWx0KHN1Y2Nlc3MpKTsKKyAgICAgICAgICAgIH0pLmdldCgpXTsKKyAgICAgICAgfQorCisgICAg
ICAgIHZvaWQgcGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OkV4
Y2VwdGlvbkRhdGE+JiYpPiYmIGNhbGxiYWNrKSBmaW5hbAorICAgICAgICB7CisgICAgICAgICAg
ICBbbV9jbGllbnRDb29yZGluYXRvciBwbGF5V2l0aENvbXBsZXRpb246bWFrZUJsb2NrUHRyKFt3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XSAoQk9PTCBzdWNjZXNzKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlz
KSB7CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEg
eyBXZWJDb3JlOjpJbnZhbGlkU3RhdGVFcnJvciB9KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGNhbGxiYWNrKHdlYWtU
aGlzLT5yZXN1bHQoc3VjY2VzcykpOworICAgICAgICAgICAgfSkuZ2V0KCldOworICAgICAgICB9
CisKKyAgICAgICAgdm9pZCBwYXVzZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdl
YkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYpPiYmIGNhbGxiYWNrKSBmaW5hbAorICAgICAgICB7Cisg
ICAgICAgICAgICBbbV9jbGllbnRDb29yZGluYXRvciBwYXVzZVdpdGhDb21wbGV0aW9uOm1ha2VC
bG9ja1B0cihbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0gKEJPT0wgc3VjY2VzcykgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgaWYg
KCF3ZWFrVGhpcykgeworICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhXZWJDb3JlOjpFeGNl
cHRpb25EYXRhIHsgV2ViQ29yZTo6SW52YWxpZFN0YXRlRXJyb3IgfSk7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBjYWxs
YmFjayh3ZWFrVGhpcy0+cmVzdWx0KHN1Y2Nlc3MpKTsKKyAgICAgICAgICAgIH0pLmdldCgpXTsK
KyAgICAgICAgfQorCisgICAgICAgIHZvaWQgc2V0VHJhY2soY29uc3QgU3RyaW5nJiB0cmFjaywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYm
KT4mJiBjYWxsYmFjaykgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgW21fY2xpZW50Q29v
cmRpbmF0b3Igc2V0VHJhY2s6dHJhY2sgd2l0aENvbXBsZXRpb246bWFrZUJsb2NrUHRyKFt3ZWFr
VGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAo
Qk9PTCBzdWNjZXNzKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKSB7
CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEgeyBX
ZWJDb3JlOjpJbnZhbGlkU3RhdGVFcnJvciB9KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGNhbGxiYWNrKHdlYWtUaGlz
LT5yZXN1bHQoc3VjY2VzcykpOworICAgICAgICAgICAgfSkuZ2V0KCldOworICAgICAgICB9CisK
KyAgICAgICAgdm9pZCBwb3NpdGlvblN0YXRlQ2hhbmdlZChjb25zdCBPcHRpb25hbDxXZWJDb3Jl
OjpNZWRpYVBvc2l0aW9uU3RhdGU+JiBzdGF0ZSkgZmluYWwKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKCFzdGF0ZSkgeworICAgICAgICAgICAgICAgIFttX2NsaWVudENvb3JkaW5hdG9yIHBv
c2l0aW9uU3RhdGVDaGFuZ2VkOm5pbF07CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBfV0tNZWRpYVBvc2l0aW9uU3RhdGUgcG9zaXRpb24gPSB7
CisgICAgICAgICAgICAgICAgLmR1cmF0aW9uID0gc3RhdGUtPmR1cmF0aW9uLAorICAgICAgICAg
ICAgICAgIC5wbGF5YmFja1JhdGUgPSBzdGF0ZS0+cGxheWJhY2tSYXRlLAorICAgICAgICAgICAg
ICAgIC5wb3NpdGlvbiA9IHN0YXRlLT5wb3NpdGlvbgorICAgICAgICAgICAgfTsKKyAgICAgICAg
ICAgIFttX2NsaWVudENvb3JkaW5hdG9yIHBvc2l0aW9uU3RhdGVDaGFuZ2VkOiZwb3NpdGlvbl07
CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHJlYWR5U3RhdGVDaGFuZ2VkKFdlYkNvcmU6Ok1l
ZGlhU2Vzc2lvblJlYWR5U3RhdGUgc3RhdGUpIGZpbmFsCisgICAgICAgIHsKKyAgICAgICAgICAg
IHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihXZWJDb3JlOjpNZWRpYVNlc3Npb25S
ZWFkeVN0YXRlOjpIYXZlTm90aGluZykgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihXS01lZGlhU2Vz
c2lvblJlYWR5U3RhdGVIYXZlTm90aGluZyksICJXS01lZGlhU2Vzc2lvblJlYWR5U3RhdGVIYXZl
Tm90aGluZyBkb2VzIG5vdCBtYXRjaCBXZWJLaXQgdmFsdWUiKTsKKyAgICAgICAgICAgIHN0YXRp
Y19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihXZWJDb3JlOjpNZWRpYVNlc3Npb25SZWFkeVN0
YXRlOjpIYXZlTWV0YWRhdGEpID09IHN0YXRpY19jYXN0PHNpemVfdD4oV0tNZWRpYVNlc3Npb25S
ZWFkeVN0YXRlSGF2ZU1ldGFkYXRhKSwgIldLTWVkaWFTZXNzaW9uUmVhZHlTdGF0ZUhhdmVNZXRh
ZGF0YSBkb2VzIG5vdCBtYXRjaCBXZWJLaXQgdmFsdWUiKTsKKyAgICAgICAgICAgIHN0YXRpY19h
c3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihXZWJDb3JlOjpNZWRpYVNlc3Npb25SZWFkeVN0YXRl
OjpIYXZlQ3VycmVudERhdGEpID09IHN0YXRpY19jYXN0PHNpemVfdD4oV0tNZWRpYVNlc3Npb25S
ZWFkeVN0YXRlSGF2ZUN1cnJlbnREYXRhKSwgIldLTWVkaWFTZXNzaW9uUmVhZHlTdGF0ZUhhdmVD
dXJyZW50RGF0YSBkb2VzIG5vdCBtYXRjaCBXZWJLaXQgdmFsdWUiKTsKKyAgICAgICAgICAgIHN0
YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihXZWJDb3JlOjpNZWRpYVNlc3Npb25SZWFk
eVN0YXRlOjpIYXZlRnV0dXJlRGF0YSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihXS01lZGlhU2Vz
c2lvblJlYWR5U3RhdGVIYXZlRnV0dXJlRGF0YSksICJXS01lZGlhU2Vzc2lvblJlYWR5U3RhdGVI
YXZlRnV0dXJlRGF0YSBkb2VzIG5vdCBtYXRjaCBXZWJLaXQgdmFsdWUiKTsKKyAgICAgICAgICAg
IHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihXZWJDb3JlOjpNZWRpYVNlc3Npb25S
ZWFkeVN0YXRlOjpIYXZlRW5vdWdoRGF0YSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihXS01lZGlh
U2Vzc2lvblJlYWR5U3RhdGVIYXZlRW5vdWdoRGF0YSksICJXS01lZGlhU2Vzc2lvblJlYWR5U3Rh
dGVIYXZlRW5vdWdoRGF0YSBkb2VzIG5vdCBtYXRjaCBXZWJLaXQgdmFsdWUiKTsKKworICAgICAg
ICAgICAgW21fY2xpZW50Q29vcmRpbmF0b3IgcmVhZHlTdGF0ZUNoYW5nZWQ6c3RhdGljX2Nhc3Q8
X1dLTWVkaWFTZXNzaW9uUmVhZHlTdGF0ZT4oc3RhdGUpXTsKKyAgICAgICAgfQorCisgICAgICAg
IHZvaWQgcGxheWJhY2tTdGF0ZUNoYW5nZWQoV2ViQ29yZTo6TWVkaWFTZXNzaW9uUGxheWJhY2tT
dGF0ZSBzdGF0ZSkgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljX2Fzc2VydChz
dGF0aWNfY2FzdDxzaXplX3Q+KFdlYkNvcmU6Ok1lZGlhU2Vzc2lvblBsYXliYWNrU3RhdGU6Ok5v
bmUpID09IHN0YXRpY19jYXN0PHNpemVfdD4oV0tNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRlTm9u
ZSksICJXS01lZGlhU2Vzc2lvblBsYXliYWNrU3RhdGVOb25lIGRvZXMgbm90IG1hdGNoIFdlYktp
dCB2YWx1ZSIpOworICAgICAgICAgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+
KFdlYkNvcmU6Ok1lZGlhU2Vzc2lvblBsYXliYWNrU3RhdGU6OlBhdXNlZCkgPT0gc3RhdGljX2Nh
c3Q8c2l6ZV90PihXS01lZGlhU2Vzc2lvblBsYXliYWNrU3RhdGVQYXVzZWQpLCAiV0tNZWRpYVNl
c3Npb25QbGF5YmFja1N0YXRlUGF1c2VkIGRvZXMgbm90IG1hdGNoIFdlYktpdCB2YWx1ZSIpOwor
ICAgICAgICAgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFdlYkNvcmU6Ok1l
ZGlhU2Vzc2lvblBsYXliYWNrU3RhdGU6OlBsYXlpbmcpID09IHN0YXRpY19jYXN0PHNpemVfdD4o
V0tNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRlUGxheWluZyksICJXS01lZGlhU2Vzc2lvblBsYXli
YWNrU3RhdGVQbGF5aW5nIGRvZXMgbm90IG1hdGNoIFdlYktpdCB2YWx1ZSIpOworCisgICAgICAg
ICAgICBbbV9jbGllbnRDb29yZGluYXRvciBwbGF5YmFja1N0YXRlQ2hhbmdlZDpzdGF0aWNfY2Fz
dDxfV0tNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRlPihzdGF0ZSldOworICAgICAgICB9CisKKyAg
ICAgICAgdm9pZCBjb29yZGluYXRvclN0YXRlQ2hhbmdlZChXZWJDb3JlOjpNZWRpYVNlc3Npb25D
b29yZGluYXRvclN0YXRlIHN0YXRlKSBmaW5hbAorICAgICAgICB7CisgICAgICAgICAgICBzdGF0
aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oV2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3JTdGF0ZTo6V2FpdGluZykgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihXS01lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yU3RhdGVXYWl0aW5nKSwgIldLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0
ZVdhaXRpbmcgZG9lcyBub3QgbWF0Y2ggV2ViS2l0IHZhbHVlIik7CisgICAgICAgICAgICBzdGF0
aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oV2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3JTdGF0ZTo6Sm9pbmVkKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KFdLTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3JTdGF0ZUpvaW5lZCksICJXS01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGVK
b2luZWQgZG9lcyBub3QgbWF0Y2ggV2ViS2l0IHZhbHVlIik7CisgICAgICAgICAgICBzdGF0aWNf
YXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oV2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JTdGF0ZTo6Q2xvc2VkKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KFdLTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3JTdGF0ZUNsb3NlZCksICJXS01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGVDbG9z
ZWQgZG9lcyBub3QgbWF0Y2ggV2ViS2l0IHZhbHVlIik7CisKKyAgICAgICAgICAgIFttX2NsaWVu
dENvb3JkaW5hdG9yIGNvb3JkaW5hdG9yU3RhdGVDaGFuZ2VkOnN0YXRpY19jYXN0PF9XS01lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGU+KHN0YXRlKV07CisgICAgICAgIH0KKworICAgIHByaXZh
dGU6CisgICAgICAgIFJldGFpblB0cjxpZCA8X1dLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I+PiBt
X2NsaWVudENvb3JkaW5hdG9yOworICAgICAgICBSZXRhaW5QdHI8V0tNZWRpYVNlc3Npb25Db29y
ZGluYXRvckhlbHBlcj4gbV9jb29yZGluYXRvckRlbGVnYXRlOworICAgIH07CisKKyAgICBBU1NF
UlQoIV9pbXBsLT5tZWRpYVNlc3Npb25Db29yZGluYXRvckZvclRlc3RpbmcoKSk7CisKKyAgICBf
aW1wbC0+c2V0TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JGb3JUZXN0aW5nKFdLTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3JGb3JUZXN0aW5nOjpjcmVhdGUocHJpdmF0ZUNvb3JkaW5hdG9yKS5wdHIoKSk7
CisgICAgX2ltcGwtPnBhZ2UoKS5jcmVhdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcigqX2ltcGwt
Pm1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yRm9yVGVzdGluZygpLCBbY29tcGxldGlvbkhhbmRsZXIg
PSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoYm9vbCBzdWNjZXNzKSB7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHN1Y2Nlc3MpOworICAgIH0pOworI2Vsc2UKKworICAgIGNv
bXBsZXRpb25IYW5kbGVyKE5PKTsKKworI2VuZGlmCit9CisKK0BlbmQKKworI2lmIEVOQUJMRShN
RURJQV9TRVNTSU9OX0NPT1JESU5BVE9SKQorQGltcGxlbWVudGF0aW9uIFdLTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3JIZWxwZXIgeworICAgIFdlYWtQdHI8V2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3JDbGllbnQ+IG1fY29vcmRpbmF0b3JDbGllbnQ7Cit9CisKKy0gKGlkKWluaXRXaXRo
Q29vcmRpbmF0b3I6KFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yQ2xpZW50Kiljb29y
ZGluYXRvcgoreworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAg
ICAgICByZXR1cm4gbmlsOworICAgIG1fY29vcmRpbmF0b3JDbGllbnQgPSBtYWtlV2Vha1B0cihj
b29yZGluYXRvcik7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpc2Vla1Nlc3Npb25U
b1RpbWU6KGRvdWJsZSl0aW1lIHdpdGhDb21wbGV0aW9uOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRp
b25IYW5kbGVyCit7CisgICAgbV9jb29yZGluYXRvckNsaWVudC0+c2Vla1Nlc3Npb25Ub1RpbWUo
dGltZSwgbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKKy0gKHZvaWQpcGxh
eVNlc3Npb25XaXRoQ29tcGxldGlvbjoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgor
eworICAgIG1fY29vcmRpbmF0b3JDbGllbnQtPnBsYXlTZXNzaW9uKG1ha2VCbG9ja1B0cihjb21w
bGV0aW9uSGFuZGxlcikpOworfQorCistICh2b2lkKXBhdXNlU2Vzc2lvbldpdGhDb21wbGV0aW9u
Oih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgbV9jb29yZGluYXRvckNs
aWVudC0+cGF1c2VTZXNzaW9uKG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcikpOworfQor
CistICh2b2lkKXNldFNlc3Npb25UcmFjazooTlNTdHJpbmcqKXRyYWNrSWRlbnRpZmllciB3aXRo
Q29tcGxldGlvbjoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIG1fY29v
cmRpbmF0b3JDbGllbnQtPnNldFNlc3Npb25UcmFjayh0cmFja0lkZW50aWZpZXIsIG1ha2VCbG9j
a1B0cihjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiBAZW5kCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCmluZGV4IDg1ODU0NGQyN2Q3MDRiM2Yw
MjM4ZmI5ODhhNTU2ZDViZDhmMGNiOTQuLjdkNjliMmMyZDJiMDQ0ZTk5NzZmYjdkMTE5ODM2ZDlh
ZDAyMWU0ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
aApAQCAtMTUxLDYgKzE1MSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgUGFnZUNsaWVu
dDsKIGNsYXNzIFBhZ2VDbGllbnRJbXBsOwogY2xhc3MgRHJhd2luZ0FyZWFQcm94eTsKK2NsYXNz
IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHlQcml2YXRlOwogY2xhc3MgU2FmZUJyb3dzaW5n
V2FybmluZzsKIGNsYXNzIFZpZXdHZXN0dXJlQ29udHJvbGxlcjsKIGNsYXNzIFZpZXdTbmFwc2hv
dDsKQEAgLTY0Myw2ICs2NDQsMTEgQEAgcHVibGljOgogICAgIHZvaWQgaGFuZGxlQ29udGV4dE1l
bnVUcmFuc2xhdGlvbihjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IGJvdW5kc0luVmlldywgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIG1lbnVMb2NhdGlvbik7CiAj
ZW5kaWYKIAorI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OX0NPT1JESU5BVE9SKQorICAgIE1lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yUHJveHlQcml2YXRlKiBtZWRpYVNlc3Npb25Db29yZGluYXRvckZv
clRlc3RpbmcoKSB7IHJldHVybiBtX2Nvb3JkaW5hdG9yRm9yVGVzdGluZy5nZXQoKTsgfQorICAg
IHZvaWQgc2V0TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JGb3JUZXN0aW5nKE1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yUHJveHlQcml2YXRlKik7CisjZW5kaWYKKwogcHJpdmF0ZToKICNpZiBIQVZFKFRP
VUNIX0JBUikKICAgICB2b2lkIHNldFVwVGV4dFRvdWNoQmFyKE5TVG91Y2hCYXIgKik7CkBAIC04
NDksNiArODU1LDEwIEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPFdLRE9NUGFzdGVNZW51RGVs
ZWdhdGU+IG1fZG9tUGFzdGVNZW51RGVsZWdhdGU7CiAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlKT4gbV9kb21QYXN0ZVJlcXVlc3RIYW5k
bGVyOwogCisjaWYgRU5BQkxFKE1FRElBX1NFU1NJT05fQ09PUkRJTkFUT1IpCisgICAgUmVmUHRy
PE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHlQcml2YXRlPiBtX2Nvb3JkaW5hdG9yRm9yVGVz
dGluZzsKKyNlbmRpZgorCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICNpbXBvcnQgPFdl
YktpdEFkZGl0aW9ucy9XZWJWaWV3SW1wbEFkZGl0aW9uc0FmdGVyLmg+CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggNmQzZDEyOWQ1
OGM2OTUwODUyMWZhZTI5NWIzNGFhNWJmNTFhOTBlNC4uODdiYWQyYjRjNDBhODM2YzEzNGZmYTc0
YjA2ODA3ZWNjYzI0NzBkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwubW0KQEAgLTEzOSw2ICsxMzksMTAgQEAKICNpbXBvcnQgPFdlYkNvcmUvSW1hZ2VF
eHRyYWN0aW9uUmVzdWx0Lmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OX0NP
T1JESU5BVE9SKQorI2luY2x1ZGUgPFdlYktpdC9NZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5
UHJpdmF0ZS5oPgorI2VuZGlmCisKICNpZiBIQVZFKFRSQU5TTEFUSU9OX1VJX1NFUlZJQ0VTKQog
I2ltcG9ydCA8VHJhbnNsYXRpb25VSVNlcnZpY2VzL0xUVUlUcmFuc2xhdGlvblZpZXdDb250cm9s
bGVyLmg+CiAKQEAgLTU1ODIsNiArNTU4NiwxMyBAQCBib29sIFdlYlZpZXdJbXBsOjplZmZlY3Rp
dmVVc2VySW50ZXJmYWNlTGV2ZWxJc0VsZXZhdGVkKCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
KyNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTl9DT09SRElOQVRPUikKK3ZvaWQgV2ViVmlld0ltcGw6
OnNldE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yRm9yVGVzdGluZyhNZWRpYVNlc3Npb25Db29yZGlu
YXRvclByb3h5UHJpdmF0ZSogY29vcmRpbmF0b3IpCit7CisgICAgbV9jb29yZGluYXRvckZvclRl
c3RpbmcgPSBjb29yZGluYXRvcjsKK30KKyNlbmRpZgorCiAjaWYgSEFWRShUUkFOU0xBVElPTl9V
SV9TRVJWSUNFUykgJiYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAKIGJvb2wgV2ViVmlld0ltcGw6
OmNhbkhhbmRsZUNvbnRleHRNZW51VHJhbnNsYXRpb24oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWEvTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eVBy
aXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL01lZGlhL01lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yUHJveHlQcml2YXRlLmgKaW5kZXggMjJkZGRlZDBhODlmODM0OGJmN2U2ZGMyODhkYmNj
MzNmY2Y1ZWM2ZS4uNWJjNjIwNzMxM2NiMzQyMDA5N2FmMDY0MTllOGE3NTAyZTc4NTkzMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWEvTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3JQcm94eVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRpYS9N
ZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5UHJpdmF0ZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAK
ICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTl9DT09SRElOQVRPUikKIAorI2luY2x1ZGUgPFdlYkNv
cmUvRXhjZXB0aW9uRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3JQcml2YXRlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9X
ZWFrUHRyLmg+CkBAIC00MSwxMCArNDIsMTMgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBTdHJp
bmcgaWRlbnRpZmllcigpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBzZWVrVG8oZG91
YmxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEm
KT4mJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYpPiYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IHBhdXNlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0
YSYpPiYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldFRyYWNrKGNvbnN0IFN0cmluZyYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYpPiYmKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGpvaW4oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25h
bDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBs
ZWF2ZSgpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzZWVrVG8oZG91YmxlLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYpPiYmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHBsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxX
ZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwYXVz
ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+
JiYpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFRyYWNrKGNvbnN0IFN0cmluZyYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJik+
JiYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBwb3NpdGlvblN0YXRlQ2hhbmdlZChjb25zdCBP
cHRpb25hbDxXZWJDb3JlOjpNZWRpYVBvc2l0aW9uU3RhdGU+JikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCByZWFkeVN0YXRlQ2hhbmdlZChXZWJDb3JlOjpNZWRpYVNlc3Npb25SZWFkeVN0YXRlKSA9
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRpYS9SZW1vdGVNZWRp
YVNlc3Npb25Db29yZGluYXRvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL01l
ZGlhL1JlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHkuY3BwCmluZGV4IDcyN2ZlMmQ3
NjMxZjRlNWRlNzQxN2Y2MzJkMTFjNjM5YTY0YjJlMDYuLjEwNzNlNjY2YzQ4YmQ3Nzc1YWY1YjAw
MzhmOTg4NTU1NTA0OTdiOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL01l
ZGlhL1JlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL01lZGlhL1JlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHku
Y3BwCkBAIC0zMCwxNiArMzAsMjIgQEAKIAogI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yUHJveHlQcml2YXRlLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJv
eHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0aW9uRGF0YS5oPgorI2luY2x1
ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2V4dGVybiBXVEZM
b2dDaGFubmVsIExvZ01lZGlhOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCi1SZWZQdHI8UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94
eT4gUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6Y3JlYXRlKFdlYlBhZ2VQcm94
eSYgd2ViUGFnZVByb3h5LCBSZWY8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eVByaXZhdGU+
JiYgcHJpdmF0ZUNvb3JkaW5hdG9yKQorUmVmPFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
UHJveHk+IFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OmNyZWF0ZShXZWJQYWdl
UHJveHkmIHdlYlBhZ2VQcm94eSwgUmVmPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHlQcml2
YXRlPiYmIHByaXZhdGVDb29yZGluYXRvcikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBS
ZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5KHdlYlBhZ2VQcm94eSwgV1RGTW92ZShw
cml2YXRlQ29vcmRpbmF0b3IpKSk7CiB9CkBAIC00OCw4ICs1NCw5IEBAIFJlbW90ZU1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yUHJveHk6OlJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHko
V2ViUGFnZVByCiAgICAgOiBtX3dlYlBhZ2VQcm94eSh3ZWJQYWdlUHJveHkpCiAgICAgLCBtX3By
aXZhdGVDb29yZGluYXRvcihXVEZNb3ZlKHByaXZhdGVDb29yZGluYXRvcikpCiAgICAgLCBtX2xv
Z2dlcihtX3dlYlBhZ2VQcm94eS5sb2dnZXIoKSkKLSAgICAsIG1fbG9nSWRlbnRpZmllcih1bmlx
dWVMb2dJZGVudGlmaWVyKCkpCisgICAgLCBtX2xvZ0lkZW50aWZpZXIoTG9nZ2VySGVscGVyOjp1
bmlxdWVMb2dJZGVudGlmaWVyKCkpCiB7CisgICAgbV9wcml2YXRlQ29vcmRpbmF0b3ItPnNldENs
aWVudChtYWtlV2Vha1B0cih0aGlzKSk7CiAgICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLmFk
ZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQ
cm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VQcm94eS53ZWJQYWdlSUQoKSwg
KnRoaXMpOwogfQogCkBAIC01OCwxNCArNjUsMTkgQEAgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3JQcm94eTo6flJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHkoKQogICAgIG1f
d2ViUGFnZVByb3h5LnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJl
bW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV93ZWJQYWdlUHJveHkud2ViUGFnZUlEKCkpOwogfQogCi12b2lkIFJlbW90ZU1lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yUHJveHk6OmpvaW4oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJD
b3JlOjpFeGNlcHRpb25EYXRhJik+JiYpCit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yUHJveHk6OmpvaW4oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpF
eGNlcHRpb25EYXRhPiYmKT4mJiBjYWxsYmFjaykKIHsKICAgICBhdXRvIGlkZW50aWZpZXIgPSBM
T0dJREVOVElGSUVSOwogICAgIEFMV0FZU19MT0coaWRlbnRpZmllcik7CiAKLSAgICBtX3ByaXZh
dGVDb29yZGluYXRvci0+am9pbihbaWRlbnRpZmllcl0gKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlv
bkRhdGEmJiBleGNlcHRpb24pIG11dGFibGUgeworICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5q
b2luKFtpZGVudGlmaWVyLCB0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoYXV0byBleGNlcHRpb24pIG11dGFibGUgeworICAg
ICAgICBpZiAoIXdlYWtUaGlzKSB7CisgICAgICAgICAgICBjYWxsYmFjayhFeGNlcHRpb25EYXRh
IHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KwogICAgICAgICBBTFdBWVNfTE9HKGlkZW50aWZpZXIsICJjb21wbGV0aW9uIik7Ci0gICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZXhjZXB0aW9uKSk7CisgICAgICAgIGNhbGxiYWNr
KFdURk1vdmUoZXhjZXB0aW9uKSk7CiAgICAgfSk7CiB9CiAKQEAgLTc2LDQ3ICs4OCw2NyBAQCB2
b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OmxlYXZlKCkKICAgICBtX3By
aXZhdGVDb29yZGluYXRvci0+bGVhdmUoKTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25D
b29yZGluYXRvclByb3h5Ojpjb29yZGluYXRlU2Vla1RvKGRvdWJsZSB0aW1lLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3ZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6Y29vcmRp
bmF0ZVNlZWtUbyhkb3VibGUgdGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxX
ZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmKT4mJiBjYWxsYmFjaykKIHsKICAgICBhdXRvIGlkZW50
aWZpZXIgPSBMT0dJREVOVElGSUVSOwogICAgIEFMV0FZU19MT0coaWRlbnRpZmllciwgdGltZSk7
CiAKLSAgICBtX3ByaXZhdGVDb29yZGluYXRvci0+c2Vla1RvKHRpbWUsIFtpZGVudGlmaWVyXSAo
Y29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7CisgICAg
bV9wcml2YXRlQ29vcmRpbmF0b3ItPnNlZWtUbyh0aW1lLCBbaWRlbnRpZmllciwgdGhpcywgd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0g
KGF1dG8gZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykgeworICAg
ICAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uRGF0YSB7IEludmFsaWRTdGF0ZUVycm9yIH0pOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKICAgICAgICAgQUxXQVlTX0xPRyhpZGVu
dGlmaWVyLCAiY29tcGxldGlvbiIpOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KGV4Y2VwdGlvbikpOworICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGV4Y2VwdGlvbikpOwogICAg
IH0pOwogfQogCi12b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OmNvb3Jk
aW5hdGVQbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9u
RGF0YSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29y
ZGluYXRvclByb3h5Ojpjb29yZGluYXRlUGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlv
bmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYpPiYmIGNhbGxiYWNrKQogewogICAgIGF1dG8g
aWRlbnRpZmllciA9IExPR0lERU5USUZJRVI7CiAgICAgQUxXQVlTX0xPRyhpZGVudGlmaWVyKTsK
IAotICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5wbGF5KFtpZGVudGlmaWVyXSAoY29uc3QgV2Vi
Q29yZTo6RXhjZXB0aW9uRGF0YSYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7CisgICAgbV9wcml2YXRl
Q29vcmRpbmF0b3ItPnBsYXkoW2lkZW50aWZpZXIsIHRoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQ
dHIodGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChhdXRvIGV4Y2VwdGlvbikg
bXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpIHsKKyAgICAgICAgICAgIGNhbGxiYWNr
KEV4Y2VwdGlvbkRhdGEgeyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCiAgICAgICAgIEFMV0FZU19MT0coaWRlbnRpZmllciwgImNvbXBsZXRp
b24iKTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShleGNlcHRpb24pKTsKKyAg
ICAgICAgY2FsbGJhY2soV1RGTW92ZShleGNlcHRpb24pKTsKICAgICB9KTsKIH0KIAotdm9pZCBS
ZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5Ojpjb29yZGluYXRlUGF1c2UoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OmNv
b3JkaW5hdGVQYXVzZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OkV4
Y2VwdGlvbkRhdGE+JiYpPiYmIGNhbGxiYWNrKQogewogICAgIGF1dG8gaWRlbnRpZmllciA9IExP
R0lERU5USUZJRVI7CiAgICAgQUxXQVlTX0xPRyhpZGVudGlmaWVyKTsKIAotICAgIG1fcHJpdmF0
ZUNvb3JkaW5hdG9yLT5wYXVzZShbaWRlbnRpZmllcl0gKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlv
bkRhdGEmJiBleGNlcHRpb24pIG11dGFibGUgeworICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5w
YXVzZShbaWRlbnRpZmllciwgdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKGF1dG8gZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAg
ICAgICAgaWYgKCF3ZWFrVGhpcykgeworICAgICAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uRGF0
YSB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKICAgICAgICAgQUxXQVlTX0xPRyhpZGVudGlmaWVyLCAiY29tcGxldGlvbiIpOwotICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGV4Y2VwdGlvbikpOworICAgICAgICBjYWxsYmFj
ayhXVEZNb3ZlKGV4Y2VwdGlvbikpOwogICAgIH0pOwogfQogCi12b2lkIFJlbW90ZU1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yUHJveHk6Ojo6Y29vcmRpbmF0ZVNldFRyYWNrKGNvbnN0IFN0cmluZyYg
dHJhY2ssIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0
YSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGlu
YXRvclByb3h5Ojpjb29yZGluYXRlU2V0VHJhY2soY29uc3QgU3RyaW5nJiB0cmFjaywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmKT4mJiBj
YWxsYmFjaykKIHsKICAgICBhdXRvIGlkZW50aWZpZXIgPSBMT0dJREVOVElGSUVSOwogICAgIEFM
V0FZU19MT0coaWRlbnRpZmllcik7CiAKLSAgICBtX3ByaXZhdGVDb29yZGluYXRvci0+c2V0VHJh
Y2sodHJhY2ssIFtpZGVudGlmaWVyXSAoY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYmIGV4
Y2VwdGlvbikgbXV0YWJsZSB7CisgICAgbV9wcml2YXRlQ29vcmRpbmF0b3ItPnNldFRyYWNrKHRy
YWNrLCBbaWRlbnRpZmllciwgdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKGF1dG8gZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAg
ICAgICAgaWYgKCF3ZWFrVGhpcykgeworICAgICAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uRGF0
YSB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKICAgICAgICAgQUxXQVlTX0xPRyhpZGVudGlmaWVyLCAiY29tcGxldGlvbiIpOwotICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGV4Y2VwdGlvbikpOworICAgICAgICBjYWxsYmFj
ayhXVEZNb3ZlKGV4Y2VwdGlvbikpOwogICAgIH0pOwogfQogCkBAIC0xMzgsNiArMTcwLDEyIEBA
IHZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6cmVhZHlTdGF0ZUNoYW5n
ZWQoTWVkaWFTZXNzaW9uUmVhZHlTdGF0CiAgICAgbV9wcml2YXRlQ29vcmRpbmF0b3ItPnJlYWR5
U3RhdGVDaGFuZ2VkKHN0YXRlKTsKIH0KIAordm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGlu
YXRvclByb3h5Ojpjb29yZGluYXRvclN0YXRlQ2hhbmdlZChXZWJDb3JlOjpNZWRpYVNlc3Npb25D
b29yZGluYXRvclN0YXRlIHN0YXRlKQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7
CisgICAgbV9wcml2YXRlQ29vcmRpbmF0b3ItPmNvb3JkaW5hdG9yU3RhdGVDaGFuZ2VkKHN0YXRl
KTsKK30KKwogdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5OjpzZWVrU2Vz
c2lvblRvVGltZShkb3VibGUgdGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
YWxsYmFjaykKIHsKICAgICBtX3dlYlBhZ2VQcm94eS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OlJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpTZWVrU2Vzc2lvblRvVGltZSB7IHRp
bWUgfSwgY2FsbGJhY2spOwpAQCAtMTQ4LDIwICsxODYsMTkgQEAgdm9pZCBSZW1vdGVNZWRpYVNl
c3Npb25Db29yZGluYXRvclByb3h5OjpwbGF5U2Vzc2lvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wKICAgICBtX3dlYlBhZ2VQcm94eS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJl
bW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpQbGF5U2Vzc2lvbiB7IH0sIGNhbGxiYWNrKTsK
IH0KIAotdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5OjpwYXVzZVNlc3Np
b24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4gY2FsbGJhY2spCit2b2lkIFJlbW90ZU1l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OnBhdXNlU2Vzc2lvbihDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQogewogICAgIG1fd2ViUGFnZVByb3h5LnNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OlBhdXNl
U2Vzc2lvbiB7IH0sIGNhbGxiYWNrKTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29y
ZGluYXRvclByb3h5OjpzZXRTZXNzaW9uVHJhY2soY29uc3QgU3RyaW5nJiB0cmFja0lkLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiBjYWxsYmFjaykKK3ZvaWQgUmVtb3RlTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3JQcm94eTo6c2V0U2Vzc2lvblRyYWNrKGNvbnN0IFN0cmluZyYgdHJhY2tJ
ZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKIHsKICAgICBtX3dl
YlBhZ2VQcm94eS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yOjpTZXRTZXNzaW9uVHJhY2sgeyB0cmFja0lkIH0sIGNhbGxiYWNrKTsKIH0K
IAotdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5Ojpjb29yZGluYXRvclN0
YXRlQ2hhbmdlZChXZWJDb3JlOjpNZWRpYVNlc3Npb25Db29yZGluYXRvclN0YXRlIHN0YXRlKQor
V1RGTG9nQ2hhbm5lbCYgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6bG9nQ2hh
bm5lbCgpIGNvbnN0CiB7Ci0gICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKLSAgICBtX3By
aXZhdGVDb29yZGluYXRvci0+Y29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQoc3RhdGUpOworICAgIHJl
dHVybiBMb2dNZWRpYTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRpYS9SZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRv
clByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRpYS9SZW1vdGVNZWRpYVNlc3Np
b25Db29yZGluYXRvclByb3h5LmgKaW5kZXggMDY4YTVmNTZkZDRkYmI2NjY1NTFhN2Y2MTk4M2I4
ZTM1NzRkMDI1NC4uYzljZjZhZDI0OTQxZjEzZDU2ZmU2YjczMjQ1NWU2YTE1MTU3ZDU3YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWEvUmVtb3RlTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL01lZGlhL1Jl
bW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHkuaApAQCAtNjAsMTkgKzYwLDE5IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JQcm94eShXZWJQYWdlUHJveHkmLCBSZWY8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eVBy
aXZhdGU+JiYpOwogCi0gICAgdXNpbmcgQ29vcmRpbmF0ZUNvbXBsZXRpb25IYW5kbGVyID0gQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJik+OworICAg
IHVzaW5nIENvb3JkaW5hdGVDb21wbGV0aW9uSGFuZGxlciA9IENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJik+OwogCiAgICAgLy8gSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIuCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAogICAgIC8vIFJlY2VpdmVycy4KLSAgICB2
b2lkIGpvaW4oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25E
YXRhJik+JiYpOworICAgIHZvaWQgam9pbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFs
PFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYpPiYmKTsKICAgICB2b2lkIGxlYXZlKCk7Ci0gICAg
dm9pZCBjb29yZGluYXRlU2Vla1RvKGRvdWJsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJik+JiYpOwotICAgIHZvaWQgY29vcmRpbmF0ZVBsYXko
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJik+JiYp
OwotICAgIHZvaWQgY29vcmRpbmF0ZVBhdXNlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
V2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYpPiYmKTsKLSAgICB2b2lkIGNvb3JkaW5hdGVTZXRUcmFj
ayhjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkV4
Y2VwdGlvbkRhdGEmKT4mJik7Ci0gICAgdm9pZCBwb3NpdGlvblN0YXRlQ2hhbmdlZChPcHRpb25h
bDxXZWJDb3JlOjpNZWRpYVBvc2l0aW9uU3RhdGU+KTsKKyAgICB2b2lkIGNvb3JkaW5hdGVTZWVr
VG8oZG91YmxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2Vw
dGlvbkRhdGE+JiYpPiYmKTsKKyAgICB2b2lkIGNvb3JkaW5hdGVQbGF5KENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJik+JiYpOworICAgIHZv
aWQgY29vcmRpbmF0ZVBhdXNlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29y
ZTo6RXhjZXB0aW9uRGF0YT4mJik+JiYpOworICAgIHZvaWQgY29vcmRpbmF0ZVNldFRyYWNrKGNv
bnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6RXhj
ZXB0aW9uRGF0YT4mJik+JiYpOworICAgIHZvaWQgcG9zaXRpb25TdGF0ZUNoYW5nZWQoY29uc3Qg
T3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFQb3NpdGlvblN0YXRlPiYpOwogICAgIHZvaWQgcmVhZHlT
dGF0ZUNoYW5nZWQoV2ViQ29yZTo6TWVkaWFTZXNzaW9uUmVhZHlTdGF0ZSk7CiAgICAgdm9pZCBw
bGF5YmFja1N0YXRlQ2hhbmdlZChXZWJDb3JlOjpNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRlKTsK
ICAgICB2b2lkIGNvb3JkaW5hdG9yU3RhdGVDaGFuZ2VkKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yU3RhdGUpOwpAQCAtODAsOCArODAsMTMgQEAgcHJpdmF0ZToKICAgICAvLyBNZWRp
YVNlc3Npb25Db29yZGluYXRvckNsaWVudAogICAgIHZvaWQgc2Vla1Nlc3Npb25Ub1RpbWUoZG91
YmxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKICAgICB2b2lkIHBs
YXlTZXNzaW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwotICAgIHZv
aWQgcGF1c2VTZXNzaW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+KSBmaW5hbDsKLSAg
ICB2b2lkIHNldFNlc3Npb25UcmFjayhjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPikgZmluYWw7CisgICAgdm9pZCBwYXVzZVNlc3Npb24oQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXNzaW9uVHJhY2soY29uc3Qg
U3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CisKKyAgICBj
b25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nZ2VyLmdldCgpOyB9Cisg
ICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nSWRlbnRp
ZmllcjsgfQorICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJS
ZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5IjsgfQorICAgIFdURkxvZ0NoYW5uZWwm
IGxvZ0NoYW5uZWwoKSBjb25zdDsKIAogICAgIFdlYlBhZ2VQcm94eSYgbV93ZWJQYWdlUHJveHk7
CiAgICAgUmVmPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHlQcml2YXRlPiBtX3ByaXZhdGVD
b29yZGluYXRvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4
IGRlNWNlMTk2MGQ1NzRiZTYxMzBmNTFmMGVlNjgxMDhmZmY2YmI5OTAuLjZkNzE0ODhkZmM4MmEy
MmViOTk2MDBkMjI2Y2IwNjNkZjFmNDEwZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcApAQCAtMTAzNzEsMTkgKzEwMzcxLDE5IEBAIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZUFycmF5IFdlYlBhZ2VQcm94eTo6Y3JlYXRlTmV0d29ya0V4dGVuc2lvbnNTYW5kYm94
RXh0ZW5zCiAjZW5kaWYKIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OX0NPT1JESU5BVE9SKQot
dm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKFJlZjxNZWRp
YVNlc3Npb25Db29yZGluYXRvclByb3h5UHJpdmF0ZT4mJiBwcml2YXRlQ29vcmRpbmF0b3IsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vha1B0cjxSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRv
clByb3h5Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRl
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IoUmVmPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHlQ
cml2YXRlPiYmIHByaXZhdGVDb29yZGluYXRvciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIW1fbWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3JQcm94eSk7CiAKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBh
Z2U6OkNyZWF0ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKHByaXZhdGVDb29yZGluYXRvci0+aWRl
bnRpZmllcigpKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBwcml2YXRlQ29vcmRp
bmF0b3IgPSBXVEZNb3ZlKHByaXZhdGVDb29yZGluYXRvciksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGJvb2wgc3VjY2VzcykgbXV0YWJsZSB7CiAKICAg
ICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhc3VjY2VzcykgewotICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoeyB9KTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIHdlYWtUaGlzLT5tX21lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yUHJveHkgPSBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclBy
b3h5OjpjcmVhdGUoKndlYWtUaGlzLCBXVEZNb3ZlKHByaXZhdGVDb29yZGluYXRvcikpOwotICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlV2Vha1B0cih3ZWFrVGhpcy0+bV9tZWRpYVNlc3Np
b25Db29yZGluYXRvclByb3h5LmdldCgpKSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRy
dWUpOwogICAgIH0pOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCmluZGV4IGRlNmU4MjI2Mzk5NTZkOGQ2OTllMmEyNGI2MzFjYTQ3ZDg2NWM3YzQuLjllOGQx
YzcxZTA3M2Q4NjBkMTlkNGM0ZWMxMGVhYmQ1ODgwMDdjZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xODg5LDcgKzE4ODksNyBAQCBwdWJsaWM6CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OX0NPT1JESU5BVE9SKQotICAgIHZvaWQgY3JlYXRl
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IoUmVmPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHlQ
cml2YXRlPiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYWtQdHI8UmVtb3RlTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3JQcm94eT4pPiYmKTsKKyAgICB2b2lkIGNyZWF0ZU1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yKFJlZjxNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5UHJpdmF0ZT4mJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENP
Q09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggMjMzZDcwMmYzZjk1ZWJkMGY5NDZiNjkzMzk3YThlZTFkMjQ5ZGExMC4uM2I0YTFiZTM3
MzQ4ZTdhODYxYTkzOWE4YjIzMjRiY2IyYWYyODc5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDUsOSArMTA1LDkgQEAKIAkJMDcy
OTdGQTMxQzE4NkFEQjAwM0YwNzM1IC8qIFdLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzI5N0ZBMTFDMTg2
QURCMDAzRjA3MzUgLyogV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwNzQ4NzlCOTIzNzNBOTA5MDBG
NTY3OEUgLyogQXBwS2l0U29mdExpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3NDg3OUI3MjM3M0E5MDkwMEY1Njc4RSAvKiBBcHBLaXRTb2Z0TGlu
ay5oICovOyB9OwogCQkwNzRFNzVGRTFERjIyMTE5MDBEMzE4RUMgLyogVXNlck1lZGlhUHJvY2Vz
c01hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3NEU3NUZCMURGMUZEMTMwMEQzMThFQyAvKiBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5oICov
OyB9OworCQkwNzVBOUNGMzI2MTY5QkFCMDA2REZBM0EgLyogTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JQcm94eVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3N0JBNTcwMjYwRThGNjMwMDcyRjE5RiAvKiBNZWRpYVNlc3Npb25Db29yZGluYXRv
clByb3h5UHJpdmF0ZS5oICovOyB9OwogCQkwNzZFODg0RTFBMTNDQURGMDA1RTkwRkMgLyogQVBJ
Q29udGV4dE1lbnVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3NkU4ODREMUExM0NBREYwMDVFOTBGQyAvKiBBUElDb250ZXh0TWVudUNsaWVu
dC5oICovOyB9OwogCQkwNzcyODExRDIxMjM0RkY2MDBDOEVGMkUgLyogVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0QTQxMEY0MzE5QUY3QjI3MDAyRUJBQjUgLyogVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyLmggKi87IH07Ci0JCTA3N0JBNTZFMjYwRTZEMUMwMDcyRjE5RiAvKiBS
ZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzM2Qjc1NTI2MEQwM0EwMDBFMDY5OTQgLyogUmVtb3Rl
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuY3BwICovOyB9OwogCQkwNzkyMzE0ODIzOUNCQ0I4MDA5
NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlc1JlcGxpZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3OTIzMTQyMjM5
Q0JDQjUwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzUmVw
bGllcy5oICovOyB9OwogCQkwNzkyMzE0QjIzOUNCQ0I4MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5MjMxNDUyMzlDQkNCNzAwOTU5OEUyIC8qIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJ
MDc5MjMxNEMyMzlDQkNCODAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3OTIzMTQ2MjM5Q0JDQjcwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eU1lc3NhZ2VzLmggKi87IH07CkBAIC05MjY3LDEwICs5MjY3LDEwIEBACiAJCQkJNTMyMTU5NEYx
REJBRTZENzAwNTRBQTNDIC8qIE5ldHdvcmtEYXRhVGFza0NvY29hLmggKi8sCiAJCQkJNUNCQzlC
OEIxQzY1MjU3MzAwQThGRENGIC8qIE5ldHdvcmtEYXRhVGFza0NvY29hLm1tICovLAogCQkJCTdF
QzRGMEY5MThFNEE5NDUwMDgwNTZBRiAvKiBOZXR3b3JrUHJvY2Vzc0NvY29hLm1tICovLAotCQkJ
CTUzMjE1OTUwMURCQUU2RDcwMDU0QUEzQyAvKiBOZXR3b3JrU2Vzc2lvbkNvY29hLmggKi8sCi0J
CQkJNUMyMENCOUIxQkIwRENEMjAwODk1QkIxIC8qIE5ldHdvcmtTZXNzaW9uQ29jb2EubW0gKi8s
CiAJCQkJNTE4MzI0NzgyNjE1QjAwRDAwM0YyMzlFIC8qIE5ldHdvcmtTY2hlbWVVUkxQcm90b2Nv
bC5oICovLAogCQkJCTUxODMyNDc5MjYxNUIwMEQwMDNGMjM5RSAvKiBOZXR3b3JrU2NoZW1lVVJM
UHJvdG9jb2wubW0gKi8sCisJCQkJNTMyMTU5NTAxREJBRTZENzAwNTRBQTNDIC8qIE5ldHdvcmtT
ZXNzaW9uQ29jb2EuaCAqLywKKwkJCQk1QzIwQ0I5QjFCQjBEQ0QyMDA4OTVCQjEgLyogTmV0d29y
a1Nlc3Npb25Db2NvYS5tbSAqLywKIAkJCQk0MTI4N0Q0QzIyNUMwNUM1MDA5QTNFMjYgLyogV2Vi
U29ja2V0VGFza0NvY29hLmggKi8sCiAJCQkJNDEyODdENEIyMjVDMDVDNDAwOUEzRTI2IC8qIFdl
YlNvY2tldFRhc2tDb2NvYS5tbSAqLywKIAkJCSk7CkBAIC0xMTY3NSw3ICsxMTY3NSw2IEBACiAJ
CQkJMzE3RkU3QzUxQzQ4N0E2QzAwQTBDQTg5IC8qIEFQSUV4cGVyaW1lbnRhbEZlYXR1cmUuaCBp
biBIZWFkZXJzICovLAogCQkJCTAwQjk2NjE2MThFMjRDQkEwMENFMUY4OCAvKiBBUElGaW5kQ2xp
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkyREQ2N0EyRTFCRDgxOTczMDA1M0IyNTEgLyogQVBJ
RmluZE1hdGNoZXNDbGllbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxODMyNDdEMjYxNjhGRjcw
MDNGMjM5RSAvKiBOZXR3b3JrVVJMU2NoZW1lVGFzay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzdF
MjVENkUxOEZERTVENjAwNUQzQTAwIC8qIEFQSUZvcm1DbGllbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBQzEzMzcyMTg1NjZDN0MwMEYzRUMwNSAvKiBBUElGcmFtZUhhbmRsZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMkRGOUVFRTYxQTc4MUZCNDAwQjZDRkJFIC8qIEFQSUZyYW1lSW5mby5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0xMTkyOCw2ICsxMTkyNyw3IEBACiAJCQkJMDdFMTlFRkQyM0Q0MDFG
MTAwOTRGRkI0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZU1lc3NhZ2VzUmVwbGllcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTFCNERDRTEyNUE3OTIzQzAwN0QxNzhDIC8qIE1lZGlhU2FtcGxl
Qnl0ZVJhbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTU3OTlCRDI1ODQ0MzMyMDA1MjgyMzYg
LyogTWVkaWFTYW1wbGVDdXJzb3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3NUE5Q0YzMjYxNjlC
QUIwMDZERkEzQSAvKiBNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5UHJpdmF0ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTE1Nzk5QjcyNTg0NDMzMjAwNTI4MjM2IC8qIE1lZGlhVHJhY2tSZWFk
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxOTMzREVGMTk2NUVCMzEwMDhBQzNFQSAvKiBNZW51
VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QjQ3OTA4RDI1MzE0RDgzMDBFQzExQUIg
LyogTWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zLmggaW4gSGVhZGVycyAqLywKQEAgLTExOTk2
LDYgKzExOTk2LDggQEAKIAkJCQk1QzIwQ0JBMDFCQjFFQ0Q4MDA4OTVCQjEgLyogTmV0d29ya1Nl
c3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTUzMjE1OTU1MURCQUU3MjkwMDU0QUEzQyAvKiBO
ZXR3b3JrU2Vzc2lvbkNvY29hLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTc5MTVCOTIyNTcwNDZG
MDBENkY5N0UgLyogTmV0d29ya1NvY2tldENoYW5uZWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTUx
ODMyNDdDMjYxNjhDNjIwMDNGMjM5RSAvKiBOZXR3b3JrVVJMU2NoZW1lSGFuZGxlci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNTE4MzI0N0QyNjE2OEZGNzAwM0YyMzlFIC8qIE5ldHdvcmtVUkxTY2hl
bWVUYXNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzBEQUFDMjIzMDM3MzAzMDBFOEZDMDQgLyog
TmZjQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTcwREFBQUUyMzAyNkY1QzAwRThG
QzA0IC8qIE5mY1NlcnZpY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxQTJFQzU2MTQ4OTlDMDkw
MDgxMEQ3MSAvKiBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8s
CkBAIC0xMjgyNiw3ICsxMjgyOCw2IEBACiAJCQkJMEZDQjRFNjgxOEJCRTNEOTAwMEZDRkM5IC8q
IFdLVGV4dElucHV0V2luZG93Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0UyMTIx
NUYyNDBFRTU3MTAwNkVENDQzIC8qIFdLVGV4dFBsYWNlaG9sZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDRTQ1OTQ1QzI0MEY4ODU1MDA3ODAxOUYgLyogV0tUZXh0U2VsZWN0aW9uUmVjdC5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJNTE4MzI0N0MyNjE2OEM2MjAwM0YyMzlFIC8qIE5ldHdvcmtVUkxT
Y2hlbWVIYW5kbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRUI2RkMwMTIwMzAyMTk2MDAxN0U2
MTkgLyogV0tUaW1lUGlja2VyVmlld0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTcx
QTY3NkE2MjJDNjIzMjUwMDdENjI5NSAvKiBXS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDA3NjA4MTI0RkYwMjcwMDY4RjIwQSAvKiBXS1R5cGUu
aCBpbiBIZWFkZXJzICovLApAQCAtMTQwMDQsNyArMTQwMDUsNiBAQAogCQkJCTA3MDE3ODlFMjNC
RTlDRkMwMDVGMEZBQSAvKiBSZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMDcxQkM1OEYyM0NFMUVBQTAwNjgwRDdDIC8qIFJlbW90ZU1lZGlhUGxh
eWVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUQ0RDczNzAy
M0E5RTU0NzAwNzE3QTI1IC8qIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyTWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTA3N0JBNTZFMjYwRTZEMUMwMDcyRjE5RiAvKiBS
ZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxREQy
QTY2MzI1NjEyNDZGMDBGRjdCNkYgLyogUmVtb3RlTWVkaWFTb3VyY2VQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUMxMzM4NTE4NTkwQzQ2MDBGM0VDMDUgLyog
UmVtb3RlT2JqZWN0UmVnaXN0cnlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQ0Q4MjUyRTIyNUQ0OTE5MTAwODYyRkQ4IC8qIFJlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5l
ck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVNlc3Npb24vUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3IuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU2Vzc2lvbi9SZW1vdGVNZWRp
YVNlc3Npb25Db29yZGluYXRvci5jcHAKaW5kZXggMGNjM2Y4MWNmMWY0YTZiNTljNjM2ODdjNmIy
Mjk3ZWY1ZDJiNDg0NS4uM2I5ZjUxMzYzZWJlNGI5M2U0ZDQ2ZDdhZmY3NjMxNjE5YjEyOWY4MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU2Vzc2lvbi9SZW1vdGVN
ZWRpYVNlc3Npb25Db29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L01lZGlhU2Vzc2lvbi9SZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvci5jcHAKQEAgLTcyLDE3
ICs3MiwxNyBAQCB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpqb2luKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZQogICAgICAgICB9CiAKICAgICAgICAg
aWYgKGV4Y2VwdGlvbikgewotICAgICAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uIHsgZXhjZXB0
aW9uLT5jb2RlLCBXVEZNb3ZlKGV4Y2VwdGlvbi0+bWVzc2FnZSkgfSk7CisgICAgICAgICAgICBj
YWxsYmFjayhleGNlcHRpb24tPnRvRXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKICAgICAgICAgY2FsbGJhY2soeyB9KTsKLSAgICB9LCAwKTsKKyAgICB9KTsK
IH0KIAogdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6bGVhdmUoKQogewotICAg
IG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5
OjpMZWF2ZSB7IH0sIDApOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNl
c3Npb25Db29yZGluYXRvclByb3h5OjpMZWF2ZSB7IH0pOwogfQogCiB2b2lkIFJlbW90ZU1lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yOjpzZWVrVG8oZG91YmxlIHRpbWUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uPiYmKT4mJiBjYWxsYmFjaykKQEAgLTk1
LDEyICs5NSwxMiBAQCB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpzZWVrVG8o
ZG91YmxlIHRpbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTwogICAgICAgICB9CiAKICAgICAg
ICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uIHsgZXhj
ZXB0aW9uLT5jb2RlLCBXVEZNb3ZlKGV4Y2VwdGlvbi0+bWVzc2FnZSkgfSk7CisgICAgICAgICAg
ICBjYWxsYmFjayhleGNlcHRpb24tPnRvRXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKICAgICAgICAgY2FsbGJhY2soeyB9KTsKLSAgICB9LCAwKTsKKyAgICB9
KTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6cGxheShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbj4mJik+JiYgY2FsbGJh
Y2spCkBAIC0xMTMsMTIgKzExMywxMiBAQCB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yOjpwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZQogICAgICAg
ICB9CiAKICAgICAgICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAgICAgICAgY2FsbGJhY2soRXhj
ZXB0aW9uIHsgZXhjZXB0aW9uLT5jb2RlLCBXVEZNb3ZlKGV4Y2VwdGlvbi0+bWVzc2FnZSkgfSk7
CisgICAgICAgICAgICBjYWxsYmFjayhleGNlcHRpb24tPnRvRXhjZXB0aW9uKCkpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgY2FsbGJhY2soeyB9KTsKLSAgICB9
LCAwKTsKKyAgICB9KTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6
cGF1c2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb24+
JiYpPiYmIGNhbGxiYWNrKQpAQCAtMTMxLDEyICsxMzEsMTIgQEAgdm9pZCBSZW1vdGVNZWRpYVNl
c3Npb25Db29yZGluYXRvcjo6cGF1c2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxX
ZWJDb3IKICAgICAgICAgfQogCiAgICAgICAgIGlmIChleGNlcHRpb24pIHsKLSAgICAgICAgICAg
IGNhbGxiYWNrKEV4Y2VwdGlvbiB7IGV4Y2VwdGlvbi0+Y29kZSwgV1RGTW92ZShleGNlcHRpb24t
Pm1lc3NhZ2UpIH0pOworICAgICAgICAgICAgY2FsbGJhY2soZXhjZXB0aW9uLT50b0V4Y2VwdGlv
bigpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGNhbGxiYWNr
KHsgfSk7Ci0gICAgfSwgMCk7CisgICAgfSk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3I6OnNldFRyYWNrKGNvbnN0IFN0cmluZyYgdHJhY2tJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbj4mJik+JiYgY2Fs
bGJhY2spCkBAIC0xNDksMzYgKzE0OSwzNiBAQCB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yOjpzZXRUcmFjayhjb25zdCBTdHJpbmcmIHRyYWNrSWRlbnRpZmllciwgQ29tcAogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAgICAgICAgY2FsbGJhY2so
RXhjZXB0aW9uIHsgZXhjZXB0aW9uLT5jb2RlLCBXVEZNb3ZlKGV4Y2VwdGlvbi0+bWVzc2FnZSkg
fSk7CisgICAgICAgICAgICBjYWxsYmFjayhleGNlcHRpb24tPnRvRXhjZXB0aW9uKCkpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgY2FsbGJhY2soeyB9KTsKLSAg
ICB9LCAwKTsKKyAgICB9KTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRv
cjo6cG9zaXRpb25TdGF0ZUNoYW5nZWQoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFQb3Np
dGlvblN0YXRlPiYgc3RhdGUpCiB7CiAgICAgQUxXQVlTX0xPR19JRl9QT1NTSUJMRShMT0dJREVO
VElGSUVSKTsKLSAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3JQcm94eTo6UG9zaXRpb25TdGF0ZUNoYW5nZWQgeyBzdGF0ZSB9LCAwKTsKKyAgICBt
X3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6
UG9zaXRpb25TdGF0ZUNoYW5nZWQgeyBzdGF0ZSB9KTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVNl
c3Npb25Db29yZGluYXRvcjo6cmVhZHlTdGF0ZUNoYW5nZWQoV2ViQ29yZTo6TWVkaWFTZXNzaW9u
UmVhZHlTdGF0ZSBzdGF0ZSkKIHsKICAgICBBTFdBWVNfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5U
SUZJRVIsIHN0YXRlKTsKLSAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3JQcm94eTo6UmVhZHlTdGF0ZUNoYW5nZWQgeyBzdGF0ZSB9LCAwKTsKKyAg
ICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94
eTo6UmVhZHlTdGF0ZUNoYW5nZWQgeyBzdGF0ZSB9KTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVNl
c3Npb25Db29yZGluYXRvcjo6cGxheWJhY2tTdGF0ZUNoYW5nZWQoV2ViQ29yZTo6TWVkaWFTZXNz
aW9uUGxheWJhY2tTdGF0ZSBzdGF0ZSkKIHsKICAgICBBTFdBWVNfTE9HX0lGX1BPU1NJQkxFKExP
R0lERU5USUZJRVIsIHN0YXRlKTsKLSAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6UGxheWJhY2tTdGF0ZUNoYW5nZWQgeyBzdGF0ZSB9
LCAwKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3JQcm94eTo6UGxheWJhY2tTdGF0ZUNoYW5nZWQgeyBzdGF0ZSB9KTsKIH0KIAogdm9pZCBS
ZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6Y29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQoV2Vi
Q29yZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZSBzdGF0ZSkKIHsKICAgICBBTFdBWVNf
TE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsIHN0YXRlKTsKLSAgICBtX3BhZ2Uuc2VuZChN
ZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6Q29vcmRpbmF0b3JT
dGF0ZUNoYW5nZWQgeyBzdGF0ZSB9LCAwKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVt
b3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6Q29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQg
eyBzdGF0ZSB9KTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6c2Vl
a1Nlc3Npb25Ub1RpbWUoZG91YmxlIHRpbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggMTA0ZDY3ODk2Mzg3MjMzNmE0ZjEwZThiMzg0YmViZWIxN2RjM2Vi
YS4uM2JlNWMwNDQ2MGVlYzUzYzU4Y2Q4NmY0YmUyNjg5MTcxMWFmNGIyYSAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisy
MDIxLTA0LTAyICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIFttYWNPU10gQWRkIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yIEFQSSB0ZXN0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQxNDAKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzc2MTcxMTczPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1Rlc3RXZWJLaXRBUEkueGNzY2hlbWU6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3JUZXN0Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bX1dLTW9ja01lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yIGxhc3RTdGF0ZUNoYW5nZV0pOgorICAgICAgICAoLVtfV0tNb2NrTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3IgbGFzdE1ldGhvZENhbGxlZF0pOgorICAgICAgICAoLVtfV0tNb2NrTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3IgaWRlbnRpZmllcl0pOgorICAgICAgICAoLVtfV0tNb2NrTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3Igam9pbldpdGhDb21wbGV0aW9uOl0pOgorICAgICAgICAoLVtfV0tN
b2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IgbGVhdmVdKToKKyAgICAgICAgKC1bX1dLTW9ja01l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yIHNlZWtUbzp3aXRoQ29tcGxldGlvbjpdKToKKyAgICAgICAg
KC1bX1dLTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yIHBsYXlXaXRoQ29tcGxldGlvbjpdKToK
KyAgICAgICAgKC1bX1dLTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yIHBhdXNlV2l0aENvbXBs
ZXRpb246XSk6CisgICAgICAgICgtW19XS01vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvciBzZXRU
cmFjazp3aXRoQ29tcGxldGlvbjpdKToKKyAgICAgICAgKC1bX1dLTW9ja01lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yIHBvc2l0aW9uU3RhdGVDaGFuZ2VkOl0pOgorICAgICAgICAoLVtfV0tNb2NrTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3IgcmVhZHlTdGF0ZUNoYW5nZWQ6XSk6CisgICAgICAgICgtW19X
S01vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvciBwbGF5YmFja1N0YXRlQ2hhbmdlZDpdKToKKyAg
ICAgICAgKC1bX1dLTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yIGNvb3JkaW5hdG9yU3RhdGVD
aGFuZ2VkOl0pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JUZXN0OjpjcmVhdGVDb29yZGluYXRvcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRp
YVNlc3Npb25Db29yZGluYXRvclRlc3Q6OndlYlZpZXcgY29uc3QpOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JUZXN0Ojpjb29yZGluYXRvciBjb25zdCk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3Q6Omxv
YWRQYWdlQW5kQmVjb21lUmVhZHkpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3JUZXN0OjpydW5TY3JpcHRXaXRoVXNlckdlc3R1cmUpOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JUZXN0OjpwbGF5KToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdDo6cGF1c2UpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JUZXN0OjpsaXN0
ZW5Gb3JFdmVudE1lc3NhZ2VzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yVGVzdDo6ZXZlbnRMaXN0ZW5lcldhc0NhbGxlZCk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3Q6OmNsZWFyRXZlbnRMaXN0ZW5l
clN0YXRlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
VGVzdDo6ZXhlY3V0ZVVudGlsKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yVGVzdDo6d2FpdEZvckV2ZW50TGlzdGVuZXJUb0JlQ2FsbGVkKToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdDo6bGlzdGVuRm9y
TWVzc2FnZXNQb3N0ZWQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3JUZXN0OjpjbGVhck1lc3NhZ2VzUG9zdGVkKToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdDo6bGlzdGVuRm9yU2Vzc2lvbkhhbmRsZXJN
ZXNzYWdlcyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25Db29yZGluYXRv
clRlc3Q6OnNlc3Npb25IYW5kbGVyV2FzQ2FsbGVkKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdDo6d2FpdEZvclNlc3Npb25IYW5kbGVyVG9CZUNh
bGxlZCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25Db29yZGluYXRvclRl
c3Q6Omxpc3RlbkZvclByb21pc2VNZXNzYWdlcyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpN
ZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3Q6OmNsZWFyUHJvbWlzZU1lc3NhZ2VzKToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdDo6cHJvbWlzZVdh
c1Jlc29sdmVkKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yVGVzdDo6cHJvbWlzZVdhc1JlamVjdGVkKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdDo6d2FpdEZvclByb21pc2UpOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL21lZGlhLXJlbW90ZS5odG1sOgorCiAyMDIxLTA0LTAyICBCcmFkeSBFaWRzb24gIDxi
ZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgV0tVUkxTY2hlbWVUYXNrIHJlZGlyZWN0
IEFQSS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTZlY2VmZWU2MWQ2ZDJjNjUzNzg0MDhi
ZmU3ZWVmOTQ1NjY4MmU5Mi4uMzQzODI0Y2EyOTk2NGE3ZmQ0N2ZlMTUyZjcxM2E0ZjAzMzU0OTY5
ZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU0LDYgKzU0LDcgQEAKIAkJMDc0OTk0NDIx
RUE1MDM0QjAwMERBNDRGIC8qIG9uZGV2aWNlY2hhbmdlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE0MTBGNEQxOUFGN0JFRjAwMkVC
QUI2IC8qIG9uZGV2aWNlY2hhbmdlLmh0bWwgKi87IH07CiAJCTA3NDk5NDQyMUVBNTAzNEIwMDBE
QTQ1RSAvKiBnZXRVc2VyTWVkaWFBdWRpb1ZpZGVvQ2FwdHVyZS5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBNDEwRjREMTlBRjdCRUYw
MDJFQkFDNSAvKiBnZXRVc2VyTWVkaWFBdWRpb1ZpZGVvQ2FwdHVyZS5odG1sICovOyB9OwogCQkw
NzQ5OTQ1MjFFQTUwMzRCMDAwREE0NEUgLyogZ2V0VXNlck1lZGlhMi5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQkFGNEUyMjVBQzlE
QjgwMEQ4MkYzMiAvKiBnZXRVc2VyTWVkaWEyLmh0bWwgKi87IH07CisJCTA3NUE5Q0Y1MjYxNzcy
MTgwMDZERkEzQSAvKiBNZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3QubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzVBOUNGNDI2MTc3MjE3MDA2REZB
M0EgLyogTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JUZXN0Lm1tICovOyB9OwogCQkwNzZFNTA3RjFG
NDUxM0Q2MDA2RTlGNUEgLyogTG9nZ2luZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwNzZFNTA3RTFGNDUwMzFFMDA2RTlGNUEgLyogTG9nZ2luZy5j
cHAgKi87IH07CiAJCTA3N0E1QUYzMjMwNjM4QTYwMEE3MTA1QyAvKiBBY2Nlc3NpYmlsaXR5VGVz
dFBsdWdpbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3NDY2NDU4MjJGRjYzMDUwMEUzNDUxQSAvKiBBY2Nlc3NpYmlsaXR5VGVzdFBsdWdpbi5tbSAq
LzsgfTsKIAkJMDc5NDc0MEQyNUNBMEJERTAwQzU5N0VCIC8qIE1lZGlhU2Vzc2lvbi5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3OTQ3NDBDMjVDQTBC
REUwMEM1OTdFQiAvKiBNZWRpYVNlc3Npb24ubW0gKi87IH07CkBAIC0xNzYwLDYgKzE3NjEsNyBA
QAogCQkwNzQ2NjQ1ODIyRkY2MzA1MDBFMzQ1MUEgLyogQWNjZXNzaWJpbGl0eVRlc3RQbHVnaW4u
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5VGVzdFBsdWdpbi5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc0OTJCMzkxREY4QURBNDAwNjMzREUxIC8qIGVu
dW1lcmF0ZU1lZGlhRGV2aWNlcy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gZW51
bWVyYXRlTWVkaWFEZXZpY2VzLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3
NDkyQjNBMURGOEFFMkQwMDYzM0RFMSAvKiBFbnVtZXJhdGVNZWRpYURldmljZXMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRW51bWVyYXRlTWVkaWFEZXZpY2VzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc1QTlDRjQyNjE3NzIxNzAwNkRGQTNB
IC8qIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdC5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2NkREMUYxQTVBRDUyMDAwMjNFM0JCIC8qIFBlbmRp
bmdBUElSZXF1ZXN0VVJMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFBlbmRpbmdBUElSZXF1ZXN0VVJMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDc2RTUwN0UxRjQ1MDMxRTAwNkU5RjVBIC8qIExvZ2dpbmcuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTG9nZ2luZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTA3OTQ3NDBDMjVDQTBCREUwMEM1OTdFQiAvKiBNZWRpYVNlc3Npb24ubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZWRpYVNlc3Npb24ubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00Mjc0LDYgKzQyNzYsNyBAQAogCQkJCTMzREM4OTEw
MTQxOTUzQTMwMDc0N0VGNyAvKiBMb2FkQ2FuY2VsZWROb1NlcnZlclJlZGlyZWN0Q2FsbGJhY2su
Y3BwICovLAogCQkJCTMzREM4OTEzMTQxOTU3OUYwMDc0N0VGNyAvKiBMb2FkQ2FuY2VsZWROb1Nl
cnZlclJlZGlyZWN0Q2FsbGJhY2tfQnVuZGxlLmNwcCAqLywKIAkJCQk4QUEyOEMxOTE2RDJGQTdC
MDAyRkY0REIgLyogTG9hZFBhZ2VPbkNyYXNoLmNwcCAqLywKKwkJCQkwNzVBOUNGNDI2MTc3MjE3
MDA2REZBM0EgLyogTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JUZXN0Lm1tICovLAogCQkJCUNEQzk0
NDJDMUVGMUZDMDgwMDU5QzNDNCAvKiBNZWRpYVN0cmVhbVRyYWNrRGV0YWNoZWQubW0gKi8sCiAJ
CQkJN0E1NjIzMTAxQUQ1QUYzRTAwOTZCOTIwIC8qIE1lbnVUeXBlc0Zvck1vdXNlRXZlbnRzLmNw
cCAqLywKIAkJCQk1MUNCNEFENzFCM0EwNzlDMDBDMUIxQzYgLyogTW9kYWxBbGVydHNTUEkuY3Bw
ICovLApAQCAtNTUwMCw2ICs1NTAzLDcgQEAKIAkJCQkwN0VGNzZENTI1NDBGQzA2MDA1M0VENTMg
LyogTWVkaWFNdXRlZFN0YXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBMzE1OTgxRUQ1MzY1
MTAwOUY2MEQzIC8qIE1lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvbi5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTA3OTQ3NDBEMjVDQTBCREUwMEM1OTdFQiAvKiBNZWRpYVNlc3Npb24ubW0gaW4gU291
cmNlcyAqLywKKwkJCQkwNzVBOUNGNTI2MTc3MjE4MDA2REZBM0EgLyogTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3JUZXN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RDOTQ0MkUxRUYxRkMwODAwNTlD
M0M0IC8qIE1lZGlhU3RyZWFtVHJhY2tEZXRhY2hlZC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUx
QkU5RTY2MjM3NjA4OUYwMEI0RTExNyAvKiBNZWRpYVR5cGUubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk3Q0NFN0VDNTFBNDExQTdFMDA0NDdDNEMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVz
b3VyY2VMb2FkRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1l
cy9UZXN0V2ViS2l0QVBJLnhjc2NoZW1lIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1Rlc3RXZWJLaXRBUEkueGNzY2hl
bWUKaW5kZXggNWY1ZWMyZTRhZWMzOWVkYzM5ZmM3Zjg1YzdkOTY3ZTVjNDk0Njk0ZS4uODY4OWUw
NDEzODdlOWNiMGJiYjEwNjljYTFkZjM3MmY2OTA0ODEyYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVz
L1Rlc3RXZWJLaXRBUEkueGNzY2hlbWUKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1Rlc3RXZWJLaXRBUEkueGNz
Y2hlbWUKQEAgLTUwLDYgKzUwLDEyIEBACiAgICAgICAgICAgICBSZWZlcmVuY2VkQ29udGFpbmVy
ID0gImNvbnRhaW5lcjpUZXN0V2ViS2l0QVBJLnhjb2RlcHJvaiI+CiAgICAgICAgICA8L0J1aWxk
YWJsZVJlZmVyZW5jZT4KICAgICAgIDwvQnVpbGRhYmxlUHJvZHVjdFJ1bm5hYmxlPgorICAgICAg
PENvbW1hbmRMaW5lQXJndW1lbnRzPgorICAgICAgICAgPENvbW1hbmRMaW5lQXJndW1lbnQKKyAg
ICAgICAgICAgIGFyZ3VtZW50ID0gIi0tZ3Rlc3RfZmlsdGVyPU1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yVGVzdC4qIgorICAgICAgICAgICAgaXNFbmFibGVkID0gIllFUyI+CisgICAgICAgICA8L0Nv
bW1hbmRMaW5lQXJndW1lbnQ+CisgICAgICA8L0NvbW1hbmRMaW5lQXJndW1lbnRzPgogICAgPC9M
YXVuY2hBY3Rpb24+CiAgICA8UHJvZmlsZUFjdGlvbgogICAgICAgYnVpbGRDb25maWd1cmF0aW9u
ID0gIlJlbGVhc2UiCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dC9NZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3QubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdC9NZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3QubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzdl
OWI5ZmNkMjcxMDU2ZmYyN2VlZjhjOWFiMmE5NjkyYmFjOTE1MwotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
VGVzdC5tbQpAQCAtMCwwICsxLDQzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5o
IgorCisjaWYgRU5BQkxFKE1FRElBX1NFU1NJT05fQ09PUkRJTkFUT1IpCisKKyNpbXBvcnQgIlBs
YXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0IDxX
ZWJLaXQvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQ
b29sUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KKyNpbXBv
cnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oPgorI2ltcG9ydCA8V2ViS2l0
L19XS0V4cGVyaW1lbnRhbEZlYXR1cmUuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgorI2ltcG9ydCA8d3Rm
L0hhc2hTZXQuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9SdW5M
b29wLmg+CisjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0
cmluZ0hhc2guaD4KKworQGludGVyZmFjZSBfV0tNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3Ig
OiBOU09iamVjdCA8X1dLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I+CitAcHJvcGVydHkgKG5vbmF0
b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nICpsYXN0U3RhdGVDaGFuZ2U7CitAcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nICpsYXN0TWV0aG9kQ2FsbGVkOworQHByb3BlcnR5
IChub25hdG9taWMpIEJPT0wgZmFpbHNDb21tYW5kczsKK0BlbmQKKworQGltcGxlbWVudGF0aW9u
IF9XS01vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvciB7CisgICAgUmV0YWluUHRyPE5TU3RyaW5n
PiBfbGFzdFN0YXRlQ2hhbmdlOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gX2xhc3RNZXRob2RD
YWxsZWQ7Cit9CisKK0BzeW50aGVzaXplIGRlbGVnYXRlOworCistIChOU1N0cmluZyAqKWxhc3RT
dGF0ZUNoYW5nZQoreworICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKF9sYXN0U3RhdGVDaGFuZ2Us
IEAiIikuZ2V0KCk7Cit9CisKKy0gKE5TU3RyaW5nICopbGFzdE1ldGhvZENhbGxlZAoreworICAg
IHJldHVybiBzdGQ6OmV4Y2hhbmdlKF9sYXN0TWV0aG9kQ2FsbGVkLCBAIiIpLmdldCgpOworfQor
CistIChOU1N0cmluZyAqKWlkZW50aWZpZXIKK3sKKyAgICByZXR1cm4gQCJUZXN0Q29vcmRpbmF0
b3IiOworfQorCistICh2b2lkKWpvaW5XaXRoQ29tcGxldGlvbjoodm9pZCheIF9Ob25udWxsKShC
T09MKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9sYXN0TWV0aG9kQ2FsbGVkID0gQCJqb2lu
IjsKKyAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeKCkgewor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcighX2ZhaWxzQ29tbWFuZHMpOworICAgIH0pOworfQor
CistICh2b2lkKWxlYXZlCit7CisgICAgX2xhc3RNZXRob2RDYWxsZWQgPSBAImxlYXZlIjsKK30K
KworLSAodm9pZClzZWVrVG86KGRvdWJsZSl0aW1lIHdpdGhDb21wbGV0aW9uOih2b2lkKF4gX05v
bm51bGwpKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX2xhc3RNZXRob2RDYWxsZWQg
PSBAInNlZWtUbyI7CisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSwgXigpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoIV9mYWlsc0NvbW1hbmRzKTsKKyAg
ICB9KTsKK30KKworLSAodm9pZClwbGF5V2l0aENvbXBsZXRpb246KHZvaWQoXiBfTm9ubnVsbCko
Qk9PTCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBfbGFzdE1ldGhvZENhbGxlZCA9IEAicGxh
eSI7CisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXigpIHsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoIV9mYWlsc0NvbW1hbmRzKTsKKyAgICB9KTsKK30K
KworLSAodm9pZClwYXVzZVdpdGhDb21wbGV0aW9uOih2b2lkKF4gX05vbm51bGwpKEJPT0wpKWNv
bXBsZXRpb25IYW5kbGVyCit7CisgICAgX2xhc3RNZXRob2RDYWxsZWQgPSBAInBhdXNlIjsKKyAg
ICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeKCkgeworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcighX2ZhaWxzQ29tbWFuZHMpOworICAgIH0pOworfQorCistICh2
b2lkKXNldFRyYWNrOihOU1N0cmluZyopdHJhY2tJZGVudGlmaWVyIHdpdGhDb21wbGV0aW9uOih2
b2lkKF4gX05vbm51bGwpKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX2xhc3RNZXRo
b2RDYWxsZWQgPSBAInNldFRyYWNrIjsKKyAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpLCBeKCkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcighX2ZhaWxzQ29t
bWFuZHMpOworICAgIH0pOworfQorCistICh2b2lkKXBvc2l0aW9uU3RhdGVDaGFuZ2VkOihudWxs
YWJsZSBfV0tNZWRpYVBvc2l0aW9uU3RhdGUgKilzdGF0ZQoreworICAgIF9sYXN0U3RhdGVDaGFu
Z2UgPSBAInBvc2l0aW9uU3RhdGVDaGFuZ2VkIjsKK30KKworLSAodm9pZClyZWFkeVN0YXRlQ2hh
bmdlZDooX1dLTWVkaWFTZXNzaW9uUmVhZHlTdGF0ZSlzdGF0ZQoreworICAgIF9sYXN0U3RhdGVD
aGFuZ2UgPSBAInJlYWR5U3RhdGVDaGFuZ2VkIjsKK30KKworLSAodm9pZClwbGF5YmFja1N0YXRl
Q2hhbmdlZDooX1dLTWVkaWFTZXNzaW9uUGxheWJhY2tTdGF0ZSlzdGF0ZQoreworICAgIF9sYXN0
U3RhdGVDaGFuZ2UgPSBAInBsYXliYWNrU3RhdGVDaGFuZ2VkIjsKK30KKworLSAodm9pZCljb29y
ZGluYXRvclN0YXRlQ2hhbmdlZDooX1dLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZSlzdGF0
ZQoreworICAgIF9sYXN0U3RhdGVDaGFuZ2UgPSBAImNvb3JkaW5hdG9yU3RhdGVDaGFuZ2VkIjsK
K30KK0BlbmQKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitjbGFzcyBNZWRpYVNlc3Np
b25Db29yZGluYXRvclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CitwdWJsaWM6CisgICAg
dm9pZCBTZXRVcCgpIGZpbmFsCisgICAgeworICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgICAgICBh
dXRvIHByZWZlcmVuY2VzID0gW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdOworCisgICAgICAg
IGZvciAoX1dLRXhwZXJpbWVudGFsRmVhdHVyZSAqZmVhdHVyZSBpbiBbV0tQcmVmZXJlbmNlcyBf
ZXhwZXJpbWVudGFsRmVhdHVyZXNdKSB7CisgICAgICAgICAgICBpZiAoW2ZlYXR1cmUua2V5IGlz
RXF1YWxUb1N0cmluZzpAIk1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yRW5hYmxlZCJdKQorICAgICAg
ICAgICAgICAgIFtwcmVmZXJlbmNlcyBfc2V0RW5hYmxlZDpZRVMgZm9yRmVhdHVyZTpmZWF0dXJl
XTsKKyAgICAgICAgICAgIGlmIChbZmVhdHVyZS5rZXkgaXNFcXVhbFRvU3RyaW5nOkAiTWVkaWFT
ZXNzaW9uRW5hYmxlZCJdKQorICAgICAgICAgICAgICAgIFtwcmVmZXJlbmNlcyBfc2V0RW5hYmxl
ZDpZRVMgZm9yRmVhdHVyZTpmZWF0dXJlXTsKKyAgICAgICAgfQorCisgICAgICAgIF93ZWJWaWV3
ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFr
ZSgwLCAwLCA0MDAsIDQwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Cisg
ICAgfQorCisgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCisgICAgeworICAgICAgICBbX3dl
YlZpZXcgY2xlYXJNZXNzYWdlSGFuZGxlcnM6X21lc3NhZ2VIYW5kbGVycy5nZXQoKV07CisgICAg
fQorCisgICAgdm9pZCBjcmVhdGVDb29yZGluYXRvcigpCisgICAgeworICAgICAgICBfY29vcmRp
bmF0b3IgPSBbW19XS01vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvciBhbGxvY10gaW5pdF07CisK
KyAgICAgICAgX19ibG9jayBib29sIHJlc3VsdCA9IGZhbHNlOworICAgICAgICBfX2Jsb2NrIGJv
b2wgZG9uZSA9IGZhbHNlOworICAgICAgICBbd2ViVmlldygpIF9jcmVhdGVNZWRpYVNlc3Npb25D
b29yZGluYXRvckZvclRlc3Rpbmc6KGlkIDxfV0tNZWRpYVNlc3Npb25Db29yZGluYXRvcj4pX2Nv
b3JkaW5hdG9yLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oQk9PTCBzdWNjZXNzKSB7CisgICAg
ICAgICAgICByZXN1bHQgPSBzdWNjZXNzOworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAg
ICAgIH1dOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisgICAg
ICAgIEVYUEVDVF9UUlVFKHJlc3VsdCk7CisgICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAg
ICAgTlNMb2coQCItW19jcmVhdGVNZWRpYVNlc3Npb25Db29yZGluYXRvckZvclRlc3Rpbmc6Y29t
cGxldGlvbkhhbmRsZXI6XSBmYWlsZWQhIik7CisKKyAgICAgICAgd2FpdEZvckV2ZW50TGlzdGVu
ZXJUb0JlQ2FsbGVkKCJjb29yZGluYXRvcmNoYW5nZSJfcyk7CisgICAgICAgIEFTU0VSVF9UUlVF
KGV2ZW50TGlzdGVuZXJXYXNDYWxsZWQoImNvb3JkaW5hdG9yY2hhbmdlIl9zKSk7CisgICAgfQor
CisgICAgVGVzdFdLV2ViVmlldyogd2ViVmlldygpIGNvbnN0IHsgcmV0dXJuIF93ZWJWaWV3Lmdl
dCgpOyB9CisgICAgX1dLTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKiBjb29yZGluYXRvcigp
IGNvbnN0IHsgcmV0dXJuIF9jb29yZGluYXRvci5nZXQoKTsgfQorCisgICAgdm9pZCBsb2FkUGFn
ZUFuZEJlY29tZVJlYWR5KGNvbnN0IFN0cmluZyYgcGFnZU5hbWUpCisgICAgeworICAgICAgICBb
X3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOnBhZ2VOYW1lXTsKKworICAg
ICAgICBib29sIGNhbnBsYXl0aHJvdWdoID0gZmFsc2U7CisgICAgICAgIFt3ZWJWaWV3KCkgcGVy
Zm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAImNhbnBsYXl0aHJvdWdoIGV2ZW50IiBhY3Rpb246
WyZdIHsKKyAgICAgICAgICAgIGNhbnBsYXl0aHJvdWdoID0gdHJ1ZTsKKyAgICAgICAgfV07Cisg
ICAgICAgIHJ1blNjcmlwdFdpdGhVc2VyR2VzdHVyZSgibG9hZCgpIik7CisgICAgICAgIFV0aWw6
OnJ1bigmY2FucGxheXRocm91Z2gpOworICAgIH0KKworICAgIHZvaWQgcnVuU2NyaXB0V2l0aFVz
ZXJHZXN0dXJlKGNvbnN0IFN0cmluZyYgc2NyaXB0KQorICAgIHsKKyAgICAgICAgW193ZWJWaWV3
IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHRXaXRoVXNlckdlc3R1cmU6c2NyaXB0XTsKKyAg
ICB9CisKKyAgICB2b2lkIHBsYXkoKQorICAgIHsKKyAgICAgICAgYm9vbCBwbGF5aW5nID0gZmFs
c2U7CisgICAgICAgIFtfd2ViVmlldyBwZXJmb3JtQWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOkAicGxh
eSBldmVudCIgYWN0aW9uOlsmXSB7IHBsYXlpbmcgPSB0cnVlOyB9XTsKKyAgICAgICAgcnVuU2Ny
aXB0V2l0aFVzZXJHZXN0dXJlKCJhdWRpby5wbGF5KCkiKTsKKyAgICAgICAgVXRpbDo6cnVuKCZw
bGF5aW5nKTsKKyAgICB9CisKKyAgICB2b2lkIHBhdXNlKCkKKyAgICB7CisgICAgICAgIGJvb2wg
cGF1c2VkID0gZmFsc2U7CisgICAgICAgIFtfd2ViVmlldyBwZXJmb3JtQWZ0ZXJSZWNlaXZpbmdN
ZXNzYWdlOkAicGF1c2UgZXZlbnQiIGFjdGlvbjpbJl0geyBwYXVzZWQgPSB0cnVlOyB9XTsKKyAg
ICAgICAgcnVuU2NyaXB0V2l0aFVzZXJHZXN0dXJlKCJhdWRpby5wYXVzZSgpIik7CisgICAgICAg
IFV0aWw6OnJ1bigmcGF1c2VkKTsKKyAgICB9CisKKyAgICB2b2lkIGxpc3RlbkZvckV2ZW50TWVz
c2FnZXMoc3RkOjppbml0aWFsaXplcl9saXN0PGNvbnN0IGNoYXIqPiBldmVudHMpCisgICAgewor
ICAgICAgICBmb3IgKGF1dG8qIGV2ZW50IDogZXZlbnRzKSB7CisgICAgICAgICAgICBhdXRvIGV2
ZW50TWVzc2FnZSA9IG1ha2VTdHJpbmcoZXZlbnQsICIgZXZlbnQiKTsKKyAgICAgICAgICAgIFt3
ZWJWaWV3KCkgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpldmVudE1lc3NhZ2UgYWN0aW9u
Olt0aGlzLCBldmVudE1lc3NhZ2UgPSBXVEZNb3ZlKGV2ZW50TWVzc2FnZSldIHsKKyAgICAgICAg
ICAgICAgICBfZXZlbnRMaXN0ZW5lcnNDYWxsZWQuYWRkKGV2ZW50TWVzc2FnZSk7CisgICAgICAg
ICAgICB9XTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGJvb2wgZXZlbnRMaXN0ZW5lcldhc0Nh
bGxlZChjb25zdCBTdHJpbmcmIGV2ZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIF9ldmVudExp
c3RlbmVyc0NhbGxlZC5jb250YWlucyhtYWtlU3RyaW5nKGV2ZW50LCAiIGV2ZW50IikpOworICAg
IH0KKworICAgIHZvaWQgY2xlYXJFdmVudExpc3RlbmVyU3RhdGUoKQorICAgIHsKKyAgICAgICAg
X2V2ZW50TGlzdGVuZXJzQ2FsbGVkLmNsZWFyKCk7CisgICAgfQorCisgICAgdm9pZCBleGVjdXRl
VW50aWwoRnVuY3Rpb248Ym9vbCgpPiYmIGNhbGxiYWNrLCBpbnQgcmV0cmllcyA9IDUwKQorICAg
IHsKKyAgICAgICAgaW50IHRyaWVzID0gMDsKKyAgICAgICAgZG8geworICAgICAgICAgICAgaWYg
KGNhbGxiYWNrKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgVXRpbDo6
c2xlZXAoMC4xKTsKKyAgICAgICAgfSB3aGlsZSAoKyt0cmllcyA8PSByZXRyaWVzKTsKKworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgdm9pZCB3YWl0Rm9yRXZlbnRMaXN0ZW5lclRvQmVD
YWxsZWQoY29uc3QgU3RyaW5nJiBldmVudCkKKyAgICB7CisgICAgICAgIGV4ZWN1dGVVbnRpbChb
Jl0geworICAgICAgICAgICAgcmV0dXJuIGV2ZW50TGlzdGVuZXJXYXNDYWxsZWQoZXZlbnQpOwor
ICAgICAgICB9KTsKKyAgICB9CisKKyAgICB2b2lkIGxpc3RlbkZvck1lc3NhZ2VzUG9zdGVkKHN0
ZDo6aW5pdGlhbGl6ZXJfbGlzdDxjb25zdCBjaGFyKj4gaGFuZGxlcnMsIGNvbnN0IGNoYXIqIHN1
ZmZpeCkKKyAgICB7CisgICAgICAgIGZvciAoYXV0byogaGFuZGxlciA6IGhhbmRsZXJzKSB7Cisg
ICAgICAgICAgICBhdXRvIGhhbmRsZXJNZXNzYWdlID0gbWFrZVN0cmluZyhoYW5kbGVyLCBzdWZm
aXgpOworICAgICAgICAgICAgW19tZXNzYWdlSGFuZGxlcnMgYWRkT2JqZWN0OmhhbmRsZXJNZXNz
YWdlXTsKKyAgICAgICAgICAgIFt3ZWJWaWV3KCkgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2Fn
ZTpoYW5kbGVyTWVzc2FnZSBhY3Rpb246W3RoaXMsIGhhbmRsZXJNZXNzYWdlID0gV1RGTW92ZSho
YW5kbGVyTWVzc2FnZSldIHsKKyAgICAgICAgICAgICAgICBfc2Vzc2lvbk1lc3NhZ2VzUG9zdGVk
LmFkZChoYW5kbGVyTWVzc2FnZSk7CisgICAgICAgICAgICB9XTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIHZvaWQgY2xlYXJNZXNzYWdlc1Bvc3RlZCgpCisgICAgeworICAgICAgICBfc2Vzc2lv
bk1lc3NhZ2VzUG9zdGVkLmNsZWFyKCk7CisgICAgfQorCisgICAgdm9pZCBsaXN0ZW5Gb3JTZXNz
aW9uSGFuZGxlck1lc3NhZ2VzKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxjb25zdCBjaGFyKj4gaGFu
ZGxlcnMpCisgICAgeworICAgICAgICBsaXN0ZW5Gb3JNZXNzYWdlc1Bvc3RlZChoYW5kbGVycywg
IiBoYW5kbGVyIik7CisgICAgfQorCisgICAgYm9vbCBzZXNzaW9uSGFuZGxlcldhc0NhbGxlZChj
b25zdCBTdHJpbmcmIGhhbmRsZXIpCisgICAgeworICAgICAgICByZXR1cm4gX3Nlc3Npb25NZXNz
YWdlc1Bvc3RlZC5jb250YWlucyhtYWtlU3RyaW5nKGhhbmRsZXIsICIgaGFuZGxlciIpKTsKKyAg
ICB9CisKKyAgICB2b2lkIHdhaXRGb3JTZXNzaW9uSGFuZGxlclRvQmVDYWxsZWQoY29uc3QgU3Ry
aW5nJiBoYW5kbGVyKQorICAgIHsKKyAgICAgICAgZXhlY3V0ZVVudGlsKFsmXSB7CisgICAgICAg
ICAgICByZXR1cm4gc2Vzc2lvbkhhbmRsZXJXYXNDYWxsZWQoaGFuZGxlcik7CisgICAgICAgIH0p
OworICAgIH0KKworICAgIHZvaWQgbGlzdGVuRm9yUHJvbWlzZU1lc3NhZ2VzKHN0ZDo6aW5pdGlh
bGl6ZXJfbGlzdDxjb25zdCBjaGFyKj4gaGFuZGxlcnMpCisgICAgeworICAgICAgICBsaXN0ZW5G
b3JNZXNzYWdlc1Bvc3RlZChoYW5kbGVycywgIiByZXNvbHZlZCIpOworICAgICAgICBsaXN0ZW5G
b3JNZXNzYWdlc1Bvc3RlZChoYW5kbGVycywgIiByZWplY3RlZCIpOworICAgIH0KKworICAgIHZv
aWQgY2xlYXJQcm9taXNlTWVzc2FnZXMoY29uc3QgU3RyaW5nJiBwcm9taXNlKQorICAgIHsKKyAg
ICAgICAgX3Nlc3Npb25NZXNzYWdlc1Bvc3RlZC5yZW1vdmUobWFrZVN0cmluZyhwcm9taXNlLCAi
IHJlc29sdmVkIikpOworICAgICAgICBfc2Vzc2lvbk1lc3NhZ2VzUG9zdGVkLnJlbW92ZShtYWtl
U3RyaW5nKHByb21pc2UsICIgcmVqZWN0ZWQiKSk7CisgICAgfQorCisgICAgYm9vbCBwcm9taXNl
V2FzUmVzb2x2ZWQoY29uc3QgU3RyaW5nJiBwcm9taXNlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IF9zZXNzaW9uTWVzc2FnZXNQb3N0ZWQuY29udGFpbnMobWFrZVN0cmluZyhwcm9taXNlLCAiIHJl
c29sdmVkIikpOworICAgIH0KKworICAgIGJvb2wgcHJvbWlzZVdhc1JlamVjdGVkKGNvbnN0IFN0
cmluZyYgcHJvbWlzZSkKKyAgICB7CisgICAgICAgIHJldHVybiBfc2Vzc2lvbk1lc3NhZ2VzUG9z
dGVkLmNvbnRhaW5zKG1ha2VTdHJpbmcocHJvbWlzZSwgIiByZWplY3RlZCIpKTsKKyAgICB9CisK
KyAgICB2b2lkIHdhaXRGb3JQcm9taXNlKGNvbnN0IFN0cmluZyYgcHJvbWlzZSkKKyAgICB7Cisg
ICAgICAgIGV4ZWN1dGVVbnRpbChbJl0geworICAgICAgICAgICAgcmV0dXJuIHByb21pc2VXYXNS
ZXNvbHZlZChwcm9taXNlKSB8fCBwcm9taXNlV2FzUmVqZWN0ZWQocHJvbWlzZSk7CisgICAgICAg
IH0sIDIwMCk7CisgICAgfQorCitwcml2YXRlOgorICAgIFJldGFpblB0cjxfV0tNb2NrTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3I+IF9jb29yZGluYXRvcjsKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3
Q29uZmlndXJhdGlvbj4gX2NvbmZpZ3VyYXRpb247CisgICAgUmV0YWluUHRyPFRlc3RXS1dlYlZp
ZXc+IF93ZWJWaWV3OworICAgIEhhc2hTZXQ8U3RyaW5nPiBfc2Vzc2lvbk1lc3NhZ2VzUG9zdGVk
OworICAgIEhhc2hTZXQ8U3RyaW5nPiBfZXZlbnRMaXN0ZW5lcnNDYWxsZWQ7CisgICAgUmV0YWlu
UHRyPE5TTXV0YWJsZUFycmF5PiBfbWVzc2FnZUhhbmRsZXJzOworfTsKKworVEVTVF9GKE1lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yVGVzdCwgSm9pbkFuZExlYXZlKQoreworICAgIGxvYWRQYWdlQW5k
QmVjb21lUmVhZHkoIm1lZGlhLXJlbW90ZSJfcyk7CisgICAgbGlzdGVuRm9yRXZlbnRNZXNzYWdl
cyh7ICJjb29yZGluYXRvcmNoYW5nZSJfcyB9KTsKKyAgICBsaXN0ZW5Gb3JQcm9taXNlTWVzc2Fn
ZXMoeyAiam9pbiJfcyB9KTsKKworICAgIGNyZWF0ZUNvb3JkaW5hdG9yKCk7CisKKyAgICBSZXRh
aW5QdHI8TlNTdHJpbmc+IHN0YXRlID0gW3dlYlZpZXcoKSBzdHJpbmdCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0OkAibmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5zdGF0ZSJdOworICAg
IEVYUEVDVF9TVFJFUSgid2FpdGluZyIsIFtzdGF0ZSBVVEY4U3RyaW5nXSk7CisKKyAgICAvLyAn
am9pbigpJyBzaG91bGQgZmFpbCBpZiB0aGUgcmVtb3RlIGNvb3JkaW5hdG9yIHJlZnVzZXMuCisg
ICAgY29vcmRpbmF0b3IoKS5mYWlsc0NvbW1hbmRzID0gWUVTOworICAgIFt3ZWJWaWV3KCkgb2Jq
ZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImpvaW5TZXNzaW9uKCkiXTsKKyAgICB3YWl0Rm9y
UHJvbWlzZSgiam9pbiJfcyk7CisgICAgQVNTRVJUX1RSVUUocHJvbWlzZVdhc1JlamVjdGVkKCJq
b2luIl9zKSk7CisgICAgY2xlYXJQcm9taXNlTWVzc2FnZXMoImpvaW4iX3MpOworICAgIEVYUEVD
VF9TVFJFUSgiam9pbiIsIGNvb3JkaW5hdG9yKCkubGFzdE1ldGhvZENhbGxlZC5VVEY4U3RyaW5n
KTsKKworICAgIC8vIEFuZCBpdCBzaG91ZCBzdWNjZWVkIGlmIGl0IGFsbG93cyBpdC4KKyAgICBj
b29yZGluYXRvcigpLmZhaWxzQ29tbWFuZHMgPSBOTzsKKyAgICBbd2ViVmlldygpIG9iamVjdEJ5
RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJqb2luU2Vzc2lvbigpIl07CisgICAgd2FpdEZvclByb21p
c2UoImpvaW4iX3MpOworICAgIEFTU0VSVF9UUlVFKHByb21pc2VXYXNSZXNvbHZlZCgiam9pbiJf
cykpOworICAgIGNsZWFyUHJvbWlzZU1lc3NhZ2VzKCJqb2luIl9zKTsKKyAgICBFWFBFQ1RfU1RS
RVEoImpvaW4iLCBjb29yZGluYXRvcigpLmxhc3RNZXRob2RDYWxsZWQuVVRGOFN0cmluZyk7CisK
KyAgICBzdGF0ZSA9IFt3ZWJWaWV3KCkgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIm5h
dmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3Iuc3RhdGUiXTsKKyAgICBFWFBFQ1RfU1RS
RVEoImpvaW5lZCIsIFtzdGF0ZSBVVEY4U3RyaW5nXSk7CisKKyAgICBbd2ViVmlldygpIG9iamVj
dEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5h
dG9yLmxlYXZlKCkiXTsKKyAgICBTdHJpbmcgbGFzdE1ldGhvZENhbGxlZDsKKyAgICBleGVjdXRl
VW50aWwoWyZdIHsKKyAgICAgICAgbGFzdE1ldGhvZENhbGxlZCA9IGNvb3JkaW5hdG9yKCkubGFz
dE1ldGhvZENhbGxlZDsKKyAgICAgICAgcmV0dXJuIGxhc3RNZXRob2RDYWxsZWQgPT0gImxlYXZl
IjsKKyAgICB9KTsKKyAgICBFWFBFQ1RfU1RSRVEoImxlYXZlIiwgbGFzdE1ldGhvZENhbGxlZC51
dGY4KCkuZGF0YSgpKTsKKworICAgIHN0YXRlID0gW3dlYlZpZXcoKSBzdHJpbmdCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0OkAibmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5zdGF0ZSJd
OworICAgIEVYUEVDVF9TVFJFUSgiY2xvc2VkIiwgW3N0YXRlIFVURjhTdHJpbmddKTsKKworICAg
IC8vIEl0IHNob3VsZG4ndCBiZSBwb3NzaWJsZSB0byByZS1qb2luIGEgY2xvc2UgY29vcmRpbmF0
b3IuCisgICAgW3dlYlZpZXcoKSBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiam9pblNl
c3Npb24oKSJdOworICAgIHdhaXRGb3JQcm9taXNlKCJqb2luIl9zKTsKKyAgICBBU1NFUlRfVFJV
RShwcm9taXNlV2FzUmVqZWN0ZWQoImpvaW4iX3MpKTsKKyAgICBFWFBFQ1RfU1RSRVEoIiIsIGNv
b3JkaW5hdG9yKCkubGFzdE1ldGhvZENhbGxlZC5VVEY4U3RyaW5nKTsKK30KKworVEVTVF9GKE1l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdCwgU3RhdGVDaGFuZ2VzKQoreworICAgIGxvYWRQYWdl
QW5kQmVjb21lUmVhZHkoIm1lZGlhLXJlbW90ZSJfcyk7CisgICAgbGlzdGVuRm9yU2Vzc2lvbkhh
bmRsZXJNZXNzYWdlcyh7ICJwbGF5Il9zLCAicGF1c2UiX3MsICJzZWVrdG8iX3MsICJzZWVrZm9y
d2FyZCJfcywgInNlZWtiYWNrd2FyZCJfcywgInByZXZpb3VzdHJhY2siX3MsICJuZXh0dHJhY2si
X3MgfSk7CisgICAgbGlzdGVuRm9yRXZlbnRNZXNzYWdlcyh7ICJjb29yZGluYXRvcmNoYW5nZSJf
cyB9KTsKKyAgICBsaXN0ZW5Gb3JQcm9taXNlTWVzc2FnZXMoeyAiam9pbiJfcyB9KTsKKworICAg
IGNyZWF0ZUNvb3JkaW5hdG9yKCk7CisgICAgW3dlYlZpZXcoKSBvYmplY3RCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0OkAiam9pblNlc3Npb24oKSJdOworICAgIHdhaXRGb3JQcm9taXNlKCJqb2luIl9z
KTsKKyAgICBBU1NFUlRfVFJVRShwcm9taXNlV2FzUmVzb2x2ZWQoImpvaW4iX3MpKTsKKyAgICBj
bGVhclByb21pc2VNZXNzYWdlcygiam9pbiJfcyk7CisgICAgRVhQRUNUX1NUUkVRKCJqb2luIiwg
Y29vcmRpbmF0b3IoKS5sYXN0TWV0aG9kQ2FsbGVkLlVURjhTdHJpbmcpOworCisgICAgW3dlYlZp
ZXcoKSBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAibmF2aWdhdG9yLm1lZGlhU2Vzc2lv
bi5zZXRQb3NpdGlvblN0YXRlKHsgZHVyYXRpb246IDEsIHBsYXliYWNrUmF0ZTogMSwgcG9zaXRp
b246IDAgfSkiXTsKKyAgICBTdHJpbmcgbGFzdFN0YXRlQ2hhbmdlOworICAgIGV4ZWN1dGVVbnRp
bChbJl0geworICAgICAgICBsYXN0U3RhdGVDaGFuZ2UgPSBjb29yZGluYXRvcigpLmxhc3RTdGF0
ZUNoYW5nZTsKKyAgICAgICAgcmV0dXJuIGxhc3RTdGF0ZUNoYW5nZSA9PSAicG9zaXRpb25TdGF0
ZUNoYW5nZWQiOworICAgIH0pOworICAgIEVYUEVDVF9TVFJFUSgicG9zaXRpb25TdGF0ZUNoYW5n
ZWQiLCBsYXN0U3RhdGVDaGFuZ2UudXRmOCgpLmRhdGEoKSk7CisKKyAgICBmb3IgKE5TU3RyaW5n
ICpzdGF0ZSBpbiBAWyBAImhhdmVNZXRhZGF0YSIsIEAiaGF2ZUN1cnJlbnREYXRhIiwgQCJoYXZl
RnV0dXJlRGF0YSIsIEAiaGF2ZUVub3VnaERhdGEiLCBAImhhdmVOb3RoaW5nIiBdKSB7CisgICAg
ICAgIFt3ZWJWaWV3KCkgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpbTlNTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDpAIm5hdmlnYXRvci5tZWRpYVNlc3Npb24ucmVhZHlTdGF0ZSA9ICVAIiwg
c3RhdGVdXTsKKyAgICAgICAgZXhlY3V0ZVVudGlsKFsmXSB7CisgICAgICAgICAgICBsYXN0U3Rh
dGVDaGFuZ2UgPSBjb29yZGluYXRvcigpLmxhc3RTdGF0ZUNoYW5nZTsKKyAgICAgICAgICAgIHJl
dHVybiBsYXN0U3RhdGVDaGFuZ2UgPT0gInJlYWR5U3RhdGVDaGFuZ2VkIjsKKyAgICAgICAgfSk7
CisgICAgICAgIEVYUEVDVF9TVFJFUSgicmVhZHlTdGF0ZUNoYW5nZWQiLCBsYXN0U3RhdGVDaGFu
Z2UudXRmOCgpLmRhdGEoKSk7CisKKyAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBjdXJyZW50
U3RhdGUgPSBbd2ViVmlldygpIHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJuYXZpZ2F0
b3IubWVkaWFTZXNzaW9uLnJlYWR5U3RhdGUiXTsKKyAgICAgICAgRVhQRUNUX1NUUkVRKHN0YXRl
LlVURjhTdHJpbmcsIGN1cnJlbnRTdGF0ZS5nZXQoKS5VVEY4U3RyaW5nKTsKKyAgICB9CisKKyAg
ICBmb3IgKE5TU3RyaW5nICpzdGF0ZSBpbiBAWyBAInBhdXNlZCIsIEAicGxheWluZyIsIEAibm9u
ZSIgXSkgeworICAgICAgICBbd2ViVmlldygpIG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLnBsYXli
YWNrU3RhdGUgPSAlQCIsIHN0YXRlXV07CisgICAgICAgIGV4ZWN1dGVVbnRpbChbJl0geworICAg
ICAgICAgICAgbGFzdFN0YXRlQ2hhbmdlID0gY29vcmRpbmF0b3IoKS5sYXN0U3RhdGVDaGFuZ2U7
CisgICAgICAgICAgICByZXR1cm4gbGFzdFN0YXRlQ2hhbmdlID09ICJwbGF5YmFja1N0YXRlQ2hh
bmdlZCI7CisgICAgICAgIH0pOworICAgICAgICBFWFBFQ1RfU1RSRVEoInBsYXliYWNrU3RhdGVD
aGFuZ2VkIiwgbGFzdFN0YXRlQ2hhbmdlLnV0ZjgoKS5kYXRhKCkpOworCisgICAgICAgIFJldGFp
blB0cjxOU1N0cmluZz4gY3VycmVudFN0YXRlID0gW3dlYlZpZXcoKSBzdHJpbmdCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0OkAibmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5wbGF5YmFja1N0YXRlIl07Cisg
ICAgICAgIEVYUEVDVF9TVFJFUShzdGF0ZS5VVEY4U3RyaW5nLCBjdXJyZW50U3RhdGUuZ2V0KCku
VVRGOFN0cmluZyk7CisgICAgfQorCisgICAgW3dlYlZpZXcoKSBvYmplY3RCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0OkAibmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5sZWF2ZSgpIl07
CisgICAgU3RyaW5nIGxhc3RNZXRob2RDYWxsZWQ7CisgICAgZXhlY3V0ZVVudGlsKFsmXSB7Cisg
ICAgICAgIGxhc3RTdGF0ZUNoYW5nZSA9IGNvb3JkaW5hdG9yKCkubGFzdFN0YXRlQ2hhbmdlOwor
ICAgICAgICByZXR1cm4gbGFzdFN0YXRlQ2hhbmdlID09ICJjb29yZGluYXRvclN0YXRlQ2hhbmdl
ZCI7CisgICAgfSk7CisgICAgRVhQRUNUX1NUUkVRKCJjb29yZGluYXRvclN0YXRlQ2hhbmdlZCIs
IGxhc3RTdGF0ZUNoYW5nZS51dGY4KCkuZGF0YSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVz
dFdlYktpdEFQSQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT05fQ09PUkRJTkFUT1Ip
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL21lZGlh
LXJlbW90ZS5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9tZWRp
YS1yZW1vdGUuaHRtbAppbmRleCAxYzk5M2M3Y2Q0MDFhZmYzMmNmMjMyZWRiYzg4M2VjZGM3OWJi
MzVmLi4xNjdkZGNiNmFkNWFkNjdlYmQ1NDdlMTQ3MTdiNjI5YjBkZmFjNzQ5IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL21lZGlhLXJlbW90ZS5odG1s
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvbWVkaWEtcmVtb3Rl
Lmh0bWwKQEAgLTQwLDYgKzQwLDEyIEBACiAgICAgICAgICAgICBuYXZpZ2F0b3IubWVkaWFTZXNz
aW9uLm1ldGFkYXRhID0gbmV3IE1lZGlhTWV0YWRhdGEoZGF0YSk7CiAgICAgICAgICAgICBwb3N0
TWVzc2FnZSgnc2V0IG1ldGFkYXRhJykKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZnVu
Y3Rpb24gam9pblNlc3Npb24oKQorICAgICAgICB7CisgICAgICAgICAgICBsZXQgcHJvbWlzZSA9
IG5hdmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3Iuam9pbigpOworICAgICAgICAgICAg
cG9zdFByb21pc2UoImpvaW4iLCBwcm9taXNlKTsKKyAgICAgICAgfQogCiAgICAgICAgIGZ1bmN0
aW9uIHNldFBsYXlsaXN0TWV0YWRhdGEoaW5kZXgpCiAgICAgICAgIHsKQEAgLTU2LDE3ICs2Miwx
MSBAQAogICAgICAgICB7CiAgICAgICAgICAgICBjb25zdCBhY3Rpb25zID0gewogICAgICAgICAg
ICAgICAgICdwbGF5JyA6ICgpID0+IHsgcG9zdE1lc3NhZ2UoJ3BsYXkgaGFuZGxlcicpOyB9LAot
CiAgICAgICAgICAgICAgICAgJ3BhdXNlJyA6ICgpID0+IHsgcG9zdE1lc3NhZ2UoJ3BhdXNlIGhh
bmRsZXInKSB9LAotICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICdzZWVrdG8nIDog
KGRldGFpbHMpID0+IHsgcG9zdE1lc3NhZ2UoJ3NlZWt0byBoYW5kbGVyJykgfSwKLQogICAgICAg
ICAgICAgICAgICdzZWVrZm9yd2FyZCcgOiAoZGV0YWlscykgPT4geyBwb3N0TWVzc2FnZSgnc2Vl
a2ZvcndhcmQgaGFuZGxlcicpIH0sCi0KLSAgICAgICAgICAgICAgICAnc2Vla2JhY2t3YXJkJyA6
IChkZXRhaWxzKSA9PiB7IHBvc3RNZXNzYWdlKCdzZWVrYmFja3dhcmQgaGFuZGxlcicpIH0sIAot
Ci0gICAgICAgICAgICAgICAgJ3ByZXZpb3VzdHJhY2snIDogKCkgPT4geyBwb3N0TWVzc2FnZSgn
cHJldmlvdXN0cmFjayBoYW5kbGVyJykgfSwgCi0KKyAgICAgICAgICAgICAgICAnc2Vla2JhY2t3
YXJkJyA6IChkZXRhaWxzKSA9PiB7IHBvc3RNZXNzYWdlKCdzZWVrYmFja3dhcmQgaGFuZGxlcicp
IH0sCisgICAgICAgICAgICAgICAgJ3ByZXZpb3VzdHJhY2snIDogKCkgPT4geyBwb3N0TWVzc2Fn
ZSgncHJldmlvdXN0cmFjayBoYW5kbGVyJykgfSwKICAgICAgICAgICAgICAgICAnbmV4dHRyYWNr
JyA6ICgpID0+IHsgcG9zdE1lc3NhZ2UoJ25leHR0cmFjayBoYW5kbGVyJykgfSwgCiAgICAgICAg
ICAgICB9OwogCkBAIC05NSw2ICs5NSwxNSBAQAogICAgICAgICAgICAgcG9zdE1lc3NhZ2UoYCR7
ZXZ0LnR5cGV9IGV2ZW50YCk7CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIGFzeW5jIGZ1
bmN0aW9uIHBvc3RQcm9taXNlKHR5cGUsIHByb21pc2UpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGxvZyhgd2FpdGluZyBmb3IgJHt0eXBlfSBwcm9taXNlYCk7CisgICAgICAgICAgICBhd2FpdCBw
cm9taXNlCisgICAgICAgICAgICAgICAgLnRoZW4oICAoKSA9PiB7IHBvc3RNZXNzYWdlKGAke3R5
cGV9IHJlc29sdmVkYCk7IH0gKQorICAgICAgICAgICAgICAgIC5jYXRjaCggKCkgPT4geyBwb3N0
TWVzc2FnZShgJHt0eXBlfSByZWplY3RlZGApOyB9ICk7CisgICAgICAgICAgICBsb2coYCR7dHlw
ZX0gcHJvbWlzZSBzZXR0bGVkYCk7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIGZ1bmN0
aW9uIGxvYWQoKQogICAgICAgICB7CiAgICAgICAgICAgICBsZXQgc3JjID0gcGxheWxpc3QubWV0
YWRhdGFbMF0udXJsOwpAQCAtMTEyLDEzICsxMjEsMTUgQEAKICAgICAgICAgICAgIGV2ZW50TG9n
Lmluc2VydEJlZm9yZShub3RlLCBldmVudExvZy5maXJzdENoaWxkKTsKICAgICAgICAgfQogCi0g
ICAgICAgIAorICAgICAgICBjb25zdCBzZXNzaW9uID0gbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbjsK
KwogICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGV2dCA9PiB7CiAgICAg
ICAgICAgICBhdWRpbyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdhdWRpbycpWzBd
OwogICAgICAgICAgICAgYXVkaW8uYWRkRXZlbnRMaXN0ZW5lcignY2FucGxheXRocm91Z2gnLCBw
b3N0RXZlbnQpOwogICAgICAgICAgICAgYXVkaW8uYWRkRXZlbnRMaXN0ZW5lcigncGxheScsIHBv
c3RFdmVudCk7CiAgICAgICAgICAgICBhdWRpby5hZGRFdmVudExpc3RlbmVyKCdwYXVzZScsIHBv
c3RFdmVudCk7CiAgICAgICAgICAgICBhdWRpby5hZGRFdmVudExpc3RlbmVyKCdzZWVrZWQnLCBw
b3N0RXZlbnQpOworICAgICAgICAgICAgbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5hZGRFdmVudExp
c3RlbmVyKCdjb29yZGluYXRvcmNoYW5nZScsIHBvc3RFdmVudCk7CiAgICAgICAgIH0sIGZhbHNl
KTsKIAogICAgIDwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425293</attachid>
            <date>2021-04-06 10:07:03 -0700</date>
            <delta_ts>2021-04-06 10:31:01 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-224140-20210406100702.patch</filename>
            <type>text/plain</type>
            <size>75010</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY0ZDRhNWQwMjViY2Y3ZTBm
YWE3Mzk3NzBiYzBmN2U2M2NjZjk3OGYuLmI5Mzc0NmFmMGM2NDEyMTU4MjYyNmI3MGEyNzU5Mjgz
YzZiMDA2MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjkgQEAKKzIwMjEtMDQtMDYgIEVyaWMgQ2Fy
bHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXSBBZGQgTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3IgQVBJIHRlc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDE0MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzYx
NzExNzM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmVyIE5vYmxlLgorCisgICAgICAgICogU291
cmNlcy50eHQ6IEluY2x1ZGUgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eS5jcHAg
YW5kIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmNwcAorICAgICAgICBzbyB0aGV5IGRv
bid0IGhhdmUgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIFhjb2RlIHByb2plY3QuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmg6IERlY2xh
cmUgZW51bXMsIHN0cnVjdCwgYW5kIHByb3RvY29scworICAgICAgICBuZWNlc3NhcnkgdG8gaW1w
bGVtZW50IGFuZCB1c2UgYW4gb2JqZWN0IGRlcml2ZWQgZnJvbSBNZWRpYVNlc3Npb25Db29yZGlu
YXRvclByb3h5UHJpdmF0ZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d1Rlc3RpbmcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfY3JlYXRlTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3JGb3JUZXN0aW5nOmNvbXBsZXRpb25IYW5kbGVyOl0pOiBOZXcgcHJpdmF0ZQorICAg
ICAgICBtZXRob2QgdG8gY3JlYXRlIGEgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eVByaXZh
dGUuCisgICAgICAgICgtW1dLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JIZWxwZXIgaW5pdFdpdGhD
b29yZGluYXRvcjpdKToKKyAgICAgICAgKC1bV0tNZWRpYVNlc3Npb25Db29yZGluYXRvckhlbHBl
ciBzZWVrU2Vzc2lvblRvVGltZTp3aXRoQ29tcGxldGlvbjpdKToKKyAgICAgICAgKC1bV0tNZWRp
YVNlc3Npb25Db29yZGluYXRvckhlbHBlciBwbGF5U2Vzc2lvbldpdGhDb21wbGV0aW9uOl0pOgor
ICAgICAgICAoLVtXS01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9ySGVscGVyIHBhdXNlU2Vzc2lvbldp
dGhDb21wbGV0aW9uOl0pOgorICAgICAgICAoLVtXS01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9ySGVs
cGVyIHNldFNlc3Npb25UcmFjazp3aXRoQ29tcGxldGlvbjpdKToKKworICAgICAgICAqIFVJUHJv
Y2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
bWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JGb3JUZXN0aW5nKTogTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JQcm94eVByaXZhdGUKKyAgICAgICAgZ2V0dGVyLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldE1lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yRm9yVGVzdGluZyk6IFNldHRlciBmb3IgCisgICAgICAgIE1lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yUHJveHlQcml2YXRlIGRyaXZlZCBvYmplY3QuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvTWVkaWEvTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eVByaXZhdGUuaDog
QWRkIHR5cGVkZWYgZm9yIHRoZSBjb21wbGV0aW9uCisgICAgICAgIGhhbmRsZXIgdXNlZCBieSBt
YW55IGNvb3JkaW5hdG9yIHByb3h5IG1ldGhvZHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvTWVk
aWEvUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OlJlbW90ZU1lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yUHJveHkpOgorICAgICAgICBTZXQgdGhlIHByaXZhdGUgY29vcmRpbmF0b3Ig
Y2xpZW50IHNvIGNhbGxzIHRvIHRoZSBzZXNzaW9uIGNhbiBiZSBmb3J3YXJkZWQuCisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OmpvaW4pOiBVc2Ug
TWVkaWFTZXNzaW9uQ29tbWFuZENvbXBsZXRpb25IYW5kbGVyLgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5Ojpjb29yZGluYXRlU2Vla1RvKTogRGl0
dG8uCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6
OmNvb3JkaW5hdGVQbGF5KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yUHJveHk6OmNvb3JkaW5hdGVQYXVzZSk6IERpdHRvLgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5Ojpjb29yZGluYXRlU2V0
VHJhY2spOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3JQcm94eTo6Y29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQpOiBEaXR0by4KKyAgICAgICAgKiBV
SVByb2Nlc3MvTWVkaWEvUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eS5oOgorCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6Y3JlYXRlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IpOiBDaGFuZ2UgY29tcGxl
dGlvbiBoYW5kbGVyCisgICAgICAgIHBhcmFtZXRlciB0byByZXR1cm4gYSBib29sIGluc3RlYWQg
b2YgYSBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5IGFzIHRoZQorICAgICAgICBj
bGllbnQgaW50ZXJmYWNlIHByb3ZpZGVzIGFsbCBvZiB0aGUgc2Vzc2lvbiBhY2Nlc3MgbmVlZGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKworICAgICAgICAqIFdlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBSZW1vdmUgUmVtb3RlTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3JQcm94eS5jcHAgCisgICAgICAgIGFuZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGlu
YXRvci5jcHAKKyAgICAgICAgCisgICAgICAgICogV2ViUHJvY2Vzcy9NZWRpYVNlc3Npb24vUmVt
b3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVN
ZWRpYVNlc3Npb25Db29yZGluYXRvcjo6am9pbik6IFVzZSBFeGNlcHRpb25EYXRhJ3MgdG9FeGNl
cHRpb24oKQorICAgICAgICBtZXRob2QgaW5zdGVhZCBvZiBjcmVhdGluZyBhbiBFeGNlcHRpb24g
ZGlyZWN0bHkuIFJlbW92ZSB0aGUgZGVzdGluYXRpb24gSUQgcGFyYW1ldGVyCisgICAgICAgIHRv
IHNlbmRXaXRoQXN5bmNSZXBseSBzbyBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIHdpbGwg
YmUgdXNlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6
OmxlYXZlKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yOjpzZWVrVG8pIERpdHRvLjoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3I6OnBsYXkpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3I6OnBhdXNlKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpzZXRUcmFjayk6IERpdHRvLgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6cG9zaXRpb25TdGF0ZUNoYW5n
ZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3I6OnJlYWR5U3RhdGVDaGFuZ2VkKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpwbGF5YmFja1N0YXRlQ2hhbmdlZCk6IERpdHRvLgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6Y29vcmRpbmF0b3JT
dGF0ZUNoYW5nZWQpOiBEaXR0by4KKwogMjAyMS0wNC0wNiAgUGhpbGlwcGUgTm9ybWFuZCAgPHBu
b3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV0gRW5hYmxlIENvZydzIEdUSzQgYmFj
a2VuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKaW5kZXggOTRlYTcxYzM1ODdmZTRmODM5YjA5MDcyNDNmOGUyNDFjOTg5
MWYwZS4uY2JmNjdlODdmNTkwZjgwMmI2MGRjYjgzOTUyZGFjMDRhOGM4MzgxYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0CkBAIC00NjksNiArNDY5LDcgQEAgVUlQcm9jZXNzL0luc3BlY3Rvci9BZ2VudHMvSW5zcGVj
dG9yQnJvd3NlckFnZW50LmNwcAogCiBVSVByb2Nlc3MvTWVkaWEvQXVkaW9TZXNzaW9uUm91dGlu
Z0FyYml0cmF0b3JQcm94eS5jcHAKIFVJUHJvY2Vzcy9NZWRpYS9NZWRpYVVzYWdlTWFuYWdlci5j
cHAKK1VJUHJvY2Vzcy9NZWRpYS9SZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5LmNw
cAogCiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eS5jcHAKIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlv
bi5jcHAKQEAgLTU4MSw2ICs1ODIsOCBAQCBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJQYWdlSW5z
cGVjdG9yVGFyZ2V0LmNwcAogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViUGFnZUluc3BlY3RvclRh
cmdldENvbnRyb2xsZXIuY3BwCiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJQYWdlSW5zcGVjdG9y
VGFyZ2V0RnJvbnRlbmRDaGFubmVsLmNwcAogCitXZWJQcm9jZXNzL01lZGlhU2Vzc2lvbi9SZW1v
dGVNZWRpYVNlc3Npb25Db29yZGluYXRvci5jcHAKKwogV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9N
ZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zLmNwcAogV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9V
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGVGb3JU
ZXN0aW5nLmgKaW5kZXggZGJiODRkOGNjYmI1Y2YyNWZmMWZjM2Y3Njk0MTYxMDg3Mzg0NDA5MC4u
YzA1ODlkODhiYmJlNTBmYjBlYmJlMDc1NzI0MWE0Nzc4NzQ1MWVhNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5n
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZh
dGVGb3JUZXN0aW5nLmgKQEAgLTI2LDYgKzI2LDggQEAKICNpbXBvcnQgIldLV2ViVmlld1ByaXZh
dGVGb3JUZXN0aW5nSU9TLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZ01h
Yy5oIgogCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCiB0eXBlZGVmIGVudW0gewogICAgIFdL
V2ViVmlld0F1ZGlvUm91dGluZ0FyYml0cmF0aW9uU3RhdHVzTm9uZSwKICAgICBXS1dlYlZpZXdB
dWRpb1JvdXRpbmdBcmJpdHJhdGlvblN0YXR1c1BlbmRpbmcsCkBAIC0zNyw2ICszOSw4IEBAIHN0
cnVjdCBXS0FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhIHsKICAgICBCT09MIGhhc0xvYWRl
ZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3Rpbmc7CiB9OwogCitAcHJvdG9jb2wgX1dLTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3I7CisKIEBpbnRlcmZhY2UgV0tXZWJWaWV3IChXS1Rlc3RpbmcpCiAKIC0g
KHZvaWQpX3NldFBhZ2VTY2FsZTooQ0dGbG9hdClzY2FsZSB3aXRoT3JpZ2luOihDR1BvaW50KW9y
aWdpbjsKQEAgLTk5LDQgKzEwMyw1NiBAQCBzdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0
aW5nRGF0YSB7CiAtICh2b2lkKV9hcHBCb3VuZE5hdmlnYXRpb25EYXRhOih2b2lkKF4pKHN0cnVj
dCBXS0FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhIGRhdGEpKWNvbXBsZXRpb25IYW5kbGVy
OwogLSAodm9pZClfY2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhOih2b2lkKF4pKHZvaWQpKWNv
bXBsZXRpb25IYW5kbGVyOwogCistICh2b2lkKV9jcmVhdGVNZWRpYVNlc3Npb25Db29yZGluYXRv
ckZvclRlc3Rpbmc6KGlkIDxfV0tNZWRpYVNlc3Npb25Db29yZGluYXRvcj4pcHJpdmF0ZUNvb3Jk
aW5hdG9yIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVy
OworCitAZW5kCisKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS01lZGlhU2Vzc2lvblJl
YWR5U3RhdGUpIHsKKyAgICBXS01lZGlhU2Vzc2lvblJlYWR5U3RhdGVIYXZlTm90aGluZywKKyAg
ICBXS01lZGlhU2Vzc2lvblJlYWR5U3RhdGVIYXZlTWV0YWRhdGEsCisgICAgV0tNZWRpYVNlc3Np
b25SZWFkeVN0YXRlSGF2ZUN1cnJlbnREYXRhLAorICAgIFdLTWVkaWFTZXNzaW9uUmVhZHlTdGF0
ZUhhdmVGdXR1cmVEYXRhLAorICAgIFdLTWVkaWFTZXNzaW9uUmVhZHlTdGF0ZUhhdmVFbm91Z2hE
YXRhCit9OworCit0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tNZWRpYVNlc3Npb25QbGF5
YmFja1N0YXRlKSB7CisgICAgV0tNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRlTm9uZSwKKyAgICBX
S01lZGlhU2Vzc2lvblBsYXliYWNrU3RhdGVQYXVzZWQsCisgICAgV0tNZWRpYVNlc3Npb25QbGF5
YmFja1N0YXRlUGxheWluZworfTsKKwordHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZSkgeworICAgIFdLTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JTdGF0ZVdhaXRpbmcsCisgICAgV0tNZWRpYVNlc3Npb25Db29yZGluYXRvclN0YXRlSm9pbmVk
LAorICAgIFdLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZUNsb3NlZAorfTsKKworc3RydWN0
IF9XS01lZGlhUG9zaXRpb25TdGF0ZSB7CisgICAgZG91YmxlIGR1cmF0aW9uOworICAgIGRvdWJs
ZSBwbGF5YmFja1JhdGU7CisgICAgZG91YmxlIHBvc2l0aW9uOworfTsKKworQHByb3RvY29sIF9X
S01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yRGVsZWdhdGUgPE5TT2JqZWN0PgorLSAodm9pZClzZWVr
U2Vzc2lvblRvVGltZTooZG91YmxlKXRpbWUgd2l0aENvbXBsZXRpb246KHZvaWQoXikoQk9PTCkp
Y29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKXBsYXlTZXNzaW9uV2l0aENvbXBsZXRpb246KHZv
aWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKXBhdXNlU2Vzc2lvbldpdGhD
b21wbGV0aW9uOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClzZXRT
ZXNzaW9uVHJhY2s6KE5TU3RyaW5nKil0cmFja0lkZW50aWZpZXIgd2l0aENvbXBsZXRpb246KHZv
aWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXI7CitAZW5kCisKK0Bwcm90b2NvbCBfV0tNZWRp
YVNlc3Npb25Db29yZGluYXRvciA8TlNPYmplY3Q+CitAcHJvcGVydHkgKG51bGxhYmxlLCB3ZWFr
KSBpZCA8X1dLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JEZWxlZ2F0ZT4gZGVsZWdhdGU7CitAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nICogX05vbm51bGwgaWRlbnRpZmll
cjsKKy0gKHZvaWQpam9pbldpdGhDb21wbGV0aW9uOih2b2lkKF4gX05vbm51bGwpKEJPT0wpKWNv
bXBsZXRpb25IYW5kbGVyOworLSAodm9pZClsZWF2ZTsKKy0gKHZvaWQpc2Vla1RvOihkb3VibGUp
dGltZSB3aXRoQ29tcGxldGlvbjoodm9pZCheIF9Ob25udWxsKShCT09MKSljb21wbGV0aW9uSGFu
ZGxlcjsKKy0gKHZvaWQpcGxheVdpdGhDb21wbGV0aW9uOih2b2lkKF4gX05vbm51bGwpKEJPT0wp
KWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClwYXVzZVdpdGhDb21wbGV0aW9uOih2b2lkKF4g
X05vbm51bGwpKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClzZXRUcmFjazooTlNT
dHJpbmcgKl9Ob25udWxsKXRyYWNrSWRlbnRpZmllciB3aXRoQ29tcGxldGlvbjoodm9pZCheIF9O
b25udWxsKShCT09MKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpcG9zaXRpb25TdGF0ZUNo
YW5nZWQ6KF9XS01lZGlhUG9zaXRpb25TdGF0ZSAqIF9OdWxsYWJsZSlzdGF0ZTsKKy0gKHZvaWQp
cmVhZHlTdGF0ZUNoYW5nZWQ6KF9XS01lZGlhU2Vzc2lvblJlYWR5U3RhdGUpc3RhdGU7CistICh2
b2lkKXBsYXliYWNrU3RhdGVDaGFuZ2VkOihfV0tNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRlKXN0
YXRlOworLSAodm9pZCljb29yZGluYXRvclN0YXRlQ2hhbmdlZDooX1dLTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3JTdGF0ZSlzdGF0ZTsKIEBlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVzdGlu
Zy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5n
Lm1tCmluZGV4IDRmOTI4ZTI4ODE3NzY3ZDc1MGVmMzU5ZGE4NDY5MGI3MTc4ZTI3ZmIuLmM5NTFi
ZGY0YjJlMjVhYjJlYzllZmMyMmFmOTQwM2E2ZjQwYWJiYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5nLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5nLm1tCkBAIC0yNyw2
ICsyNyw3IEBACiAjaW1wb3J0ICJXS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oIgogCiAjaW1w
b3J0ICJBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5LmgiCisjaW1wb3J0ICJNZWRp
YVNlc3Npb25Db29yZGluYXRvclByb3h5UHJpdmF0ZS5oIgogI2ltcG9ydCAiUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5LmgiCiAjaW1wb3J0ICJVc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5oIgog
I2ltcG9ydCAiVmlld0dlc3R1cmVDb250cm9sbGVyLmgiCkBAIC0zOSw3ICs0MCwxNyBAQAogI2lt
cG9ydCAiX1dLSW5zcGVjdG9ySW50ZXJuYWwuaCIKICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1ZhbGlkYXRpb25CdWJibGUuaD4K
LQorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCisjaWYgRU5BQkxFKE1FRElBX1NFU1NJT05f
Q09PUkRJTkFUT1IpCitAaW50ZXJmYWNlIFdLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JIZWxwZXIg
OiBOU09iamVjdCA8X1dLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JEZWxlZ2F0ZT4KKy0gKGlkKWlu
aXRXaXRoQ29vcmRpbmF0b3I6KFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yQ2xpZW50
Kiljb29yZGluYXRvcjsKKy0gKHZvaWQpc2Vla1Nlc3Npb25Ub1RpbWU6KGRvdWJsZSl0aW1lIHdp
dGhDb21wbGV0aW9uOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClw
bGF5U2Vzc2lvbldpdGhDb21wbGV0aW9uOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVy
OworLSAodm9pZClwYXVzZVNlc3Npb25XaXRoQ29tcGxldGlvbjoodm9pZCheKShCT09MKSljb21w
bGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpc2V0U2Vzc2lvblRyYWNrOihOU1N0cmluZyopdHJhY2tJ
ZGVudGlmaWVyIHdpdGhDb21wbGV0aW9uOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVy
OworQGVuZAorI2VuZGlmCiAKIEBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcgKFdLVGVzdGluZykK
IApAQCAtMzYwLDQgKzM3MSwyNDAgQEAKICAgICB9KTsKIH0KIAorLSAodm9pZClfY3JlYXRlTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3JGb3JUZXN0aW5nOihpZCA8X1dLTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3I+KXByaXZhdGVDb29yZGluYXRvciBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShCT09M
KSljb21wbGV0aW9uSGFuZGxlcgoreworI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OX0NPT1JESU5B
VE9SKQorICAgIGNsYXNzIFdLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JGb3JUZXN0aW5nCisgICAg
ICAgIDogcHVibGljIFdlYktpdDo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eVByaXZhdGUK
KyAgICAgICAgLCBwdWJsaWMgV2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JDbGllbnQg
eworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisKKyAgICAg
ICAgc3RhdGljIFJlZjxXS01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yRm9yVGVzdGluZz4gY3JlYXRl
KGlkIDxfV0tNZWRpYVNlc3Npb25Db29yZGluYXRvcj4gcHJpdmF0ZUNvb3JkaW5hdG9yKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXS01lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yRm9yVGVzdGluZyhwcml2YXRlQ29vcmRpbmF0b3IpKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHVzaW5nIFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yQ2xpZW50Ojp3ZWFr
UHRyRmFjdG9yeTsKKyAgICAgICAgdXNpbmcgV2Vha1ZhbHVlVHlwZSA9IFdlYkNvcmU6Ok1lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yQ2xpZW50OjpXZWFrVmFsdWVUeXBlOworCisgICAgcHJpdmF0ZToK
KyAgICAgICAgZXhwbGljaXQgV0tNZWRpYVNlc3Npb25Db29yZGluYXRvckZvclRlc3RpbmcoaWQg
PF9XS01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yPiBjbGllbnRDb29yZGluYXRvcikKKyAgICAgICAg
ICAgIDogV2ViS2l0OjpNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5UHJpdmF0ZSgpCisgICAg
ICAgICAgICAsIG1fY2xpZW50Q29vcmRpbmF0b3IoY2xpZW50Q29vcmRpbmF0b3IpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGF1dG8qIGRlbGVnYXRlSGVscGVyID0gW1tXS01lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9ySGVscGVyIGFsbG9jXSBpbml0V2l0aENvb3JkaW5hdG9yOnRoaXNdOworICAgICAg
ICAgICAgW21fY2xpZW50Q29vcmRpbmF0b3Igc2V0RGVsZWdhdGU6ZGVsZWdhdGVIZWxwZXJdOwor
ICAgICAgICAgICAgbV9jb29yZGluYXRvckRlbGVnYXRlID0gYWRvcHROUyhkZWxlZ2F0ZUhlbHBl
cik7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHNlZWtTZXNzaW9uVG9UaW1lKGRvdWJsZSB0
aW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKSBmaW5hbAorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAoYXV0byBjb29yZGluYXRvckNsaWVudCA9IGNsaWVudCgp
KQorICAgICAgICAgICAgICAgIGNvb3JkaW5hdG9yQ2xpZW50LT5zZWVrU2Vzc2lvblRvVGltZSh0
aW1lLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgY2FsbGJhY2soZmFsc2UpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBwbGF5U2Vzc2lv
bihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKSBmaW5hbAorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAoYXV0byBjb29yZGluYXRvckNsaWVudCA9IGNsaWVudCgpKQor
ICAgICAgICAgICAgICAgIGNvb3JkaW5hdG9yQ2xpZW50LT5wbGF5U2Vzc2lvbihXVEZNb3ZlKGNh
bGxiYWNrKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY2FsbGJhY2soZmFs
c2UpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBwYXVzZVNlc3Npb24oQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykgZmluYWwKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKGF1dG8gY29vcmRpbmF0b3JDbGllbnQgPSBjbGllbnQoKSkKKyAgICAgICAgICAgICAg
ICBjb29yZGluYXRvckNsaWVudC0+cGF1c2VTZXNzaW9uKFdURk1vdmUoY2FsbGJhY2spKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSk7CisgICAgICAg
IH0KKworICAgICAgICB2b2lkIHNldFNlc3Npb25UcmFjayhjb25zdCBTdHJpbmcmIHRyYWNrSWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykgZmluYWwK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKGF1dG8gY29vcmRpbmF0b3JDbGllbnQgPSBjbGll
bnQoKSkKKyAgICAgICAgICAgICAgICBjb29yZGluYXRvckNsaWVudC0+c2V0U2Vzc2lvblRyYWNr
KHRyYWNrSWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKKyAgICAgICAgfQorCisgICAgICAgIE9w
dGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+IHJlc3VsdChib29sIHN1Y2Nlc3MpIGNvbnN0
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghc3VjY2VzcykKKyAgICAgICAgICAgICAgICBy
ZXR1cm4geyBXZWJDb3JlOjpFeGNlcHRpb25EYXRhIHsgV2ViQ29yZTo6SW52YWxpZFN0YXRlRXJy
b3IgfSB9OworCisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICB9CisKKyAgICAgICAg
U3RyaW5nIGlkZW50aWZpZXIoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
W21fY2xpZW50Q29vcmRpbmF0b3IgaWRlbnRpZmllcl07CisgICAgICAgIH0KKworICAgICAgICB2
b2lkIGpvaW4oV2ViS2l0OjpNZWRpYVNlc3Npb25Db21tYW5kQ29tcGxldGlvbkhhbmRsZXImJiBj
YWxsYmFjaykgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgW21fY2xpZW50Q29vcmRpbmF0
b3Igam9pbldpdGhDb21wbGV0aW9uOm1ha2VCbG9ja1B0cihbd2Vha1RoaXMgPSBtYWtlV2Vha1B0
cih0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKEJPT0wgc3VjY2VzcykgbXV0
YWJsZSB7CisgICAgICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykgeworICAgICAgICAgICAgICAg
ICAgICBjYWxsYmFjayhXZWJDb3JlOjpFeGNlcHRpb25EYXRhIHsgV2ViQ29yZTo6SW52YWxpZFN0
YXRlRXJyb3IgfSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICBjYWxsYmFjayh3ZWFrVGhpcy0+cmVzdWx0KHN1Y2Nlc3Mp
KTsKKyAgICAgICAgICAgIH0pLmdldCgpXTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgbGVh
dmUoKSBmaW5hbAorICAgICAgICB7CisgICAgICAgICAgICBbbV9jbGllbnRDb29yZGluYXRvciBs
ZWF2ZV07CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHNlZWtUbyhkb3VibGUgdGltZSwgV2Vi
S2l0OjpNZWRpYVNlc3Npb25Db21tYW5kQ29tcGxldGlvbkhhbmRsZXImJiBjYWxsYmFjaykgZmlu
YWwKKyAgICAgICAgeworICAgICAgICAgICAgW21fY2xpZW50Q29vcmRpbmF0b3Igc2Vla1RvOnRp
bWUgd2l0aENvbXBsZXRpb246bWFrZUJsb2NrUHRyKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRo
aXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoQk9PTCBzdWNjZXNzKSBtdXRhYmxl
IHsKKyAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKSB7CisgICAgICAgICAgICAgICAgICAg
IGNhbGxiYWNrKFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEgeyBXZWJDb3JlOjpJbnZhbGlkU3RhdGVF
cnJvciB9KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgIGNhbGxiYWNrKHdlYWtUaGlzLT5yZXN1bHQoc3VjY2VzcykpOwor
ICAgICAgICAgICAgfSkuZ2V0KCldOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBwbGF5KFdl
YktpdDo6TWVkaWFTZXNzaW9uQ29tbWFuZENvbXBsZXRpb25IYW5kbGVyJiYgY2FsbGJhY2spIGZp
bmFsCisgICAgICAgIHsKKyAgICAgICAgICAgIFttX2NsaWVudENvb3JkaW5hdG9yIHBsYXlXaXRo
Q29tcGxldGlvbjptYWtlQmxvY2tQdHIoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChCT09MIHN1Y2Nlc3MpIG11dGFibGUgeworICAg
ICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJh
Y2soV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSB7IFdlYkNvcmU6OkludmFsaWRTdGF0ZUVycm9yIH0p
OworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgY2FsbGJhY2sod2Vha1RoaXMtPnJlc3VsdChzdWNjZXNzKSk7CisgICAgICAg
ICAgICB9KS5nZXQoKV07CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHBhdXNlKFdlYktpdDo6
TWVkaWFTZXNzaW9uQ29tbWFuZENvbXBsZXRpb25IYW5kbGVyJiYgY2FsbGJhY2spIGZpbmFsCisg
ICAgICAgIHsKKyAgICAgICAgICAgIFttX2NsaWVudENvb3JkaW5hdG9yIHBhdXNlV2l0aENvbXBs
ZXRpb246bWFrZUJsb2NrUHRyKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXSAoQk9PTCBzdWNjZXNzKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgICAgICBpZiAoIXdlYWtUaGlzKSB7CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKFdl
YkNvcmU6OkV4Y2VwdGlvbkRhdGEgeyBXZWJDb3JlOjpJbnZhbGlkU3RhdGVFcnJvciB9KTsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIGNhbGxiYWNrKHdlYWtUaGlzLT5yZXN1bHQoc3VjY2VzcykpOworICAgICAgICAgICAg
fSkuZ2V0KCldOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBzZXRUcmFjayhjb25zdCBTdHJp
bmcmIHRyYWNrLCBXZWJLaXQ6Ok1lZGlhU2Vzc2lvbkNvbW1hbmRDb21wbGV0aW9uSGFuZGxlciYm
IGNhbGxiYWNrKSBmaW5hbAorICAgICAgICB7CisgICAgICAgICAgICBbbV9jbGllbnRDb29yZGlu
YXRvciBzZXRUcmFjazp0cmFjayB3aXRoQ29tcGxldGlvbjptYWtlQmxvY2tQdHIoW3dlYWtUaGlz
ID0gbWFrZVdlYWtQdHIodGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChCT09M
IHN1Y2Nlc3MpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpIHsKKyAg
ICAgICAgICAgICAgICAgICAgY2FsbGJhY2soV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSB7IFdlYkNv
cmU6OkludmFsaWRTdGF0ZUVycm9yIH0pOworICAgICAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY2FsbGJhY2sod2Vha1RoaXMtPnJl
c3VsdChzdWNjZXNzKSk7CisgICAgICAgICAgICB9KS5nZXQoKV07CisgICAgICAgIH0KKworICAg
ICAgICB2b2lkIHBvc2l0aW9uU3RhdGVDaGFuZ2VkKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6Ok1l
ZGlhUG9zaXRpb25TdGF0ZT4mIHN0YXRlKSBmaW5hbAorICAgICAgICB7CisgICAgICAgICAgICBp
ZiAoIXN0YXRlKSB7CisgICAgICAgICAgICAgICAgW21fY2xpZW50Q29vcmRpbmF0b3IgcG9zaXRp
b25TdGF0ZUNoYW5nZWQ6bmlsXTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIF9XS01lZGlhUG9zaXRpb25TdGF0ZSBwb3NpdGlvbiA9IHsKKyAg
ICAgICAgICAgICAgICAuZHVyYXRpb24gPSBzdGF0ZS0+ZHVyYXRpb24sCisgICAgICAgICAgICAg
ICAgLnBsYXliYWNrUmF0ZSA9IHN0YXRlLT5wbGF5YmFja1JhdGUsCisgICAgICAgICAgICAgICAg
LnBvc2l0aW9uID0gc3RhdGUtPnBvc2l0aW9uCisgICAgICAgICAgICB9OworICAgICAgICAgICAg
W21fY2xpZW50Q29vcmRpbmF0b3IgcG9zaXRpb25TdGF0ZUNoYW5nZWQ6JnBvc2l0aW9uXTsKKyAg
ICAgICAgfQorCisgICAgICAgIHZvaWQgcmVhZHlTdGF0ZUNoYW5nZWQoV2ViQ29yZTo6TWVkaWFT
ZXNzaW9uUmVhZHlTdGF0ZSBzdGF0ZSkgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgc3Rh
dGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFdlYkNvcmU6Ok1lZGlhU2Vzc2lvblJlYWR5
U3RhdGU6OkhhdmVOb3RoaW5nKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KFdLTWVkaWFTZXNzaW9u
UmVhZHlTdGF0ZUhhdmVOb3RoaW5nKSwgIldLTWVkaWFTZXNzaW9uUmVhZHlTdGF0ZUhhdmVOb3Ro
aW5nIGRvZXMgbm90IG1hdGNoIFdlYktpdCB2YWx1ZSIpOworICAgICAgICAgICAgc3RhdGljX2Fz
c2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFdlYkNvcmU6Ok1lZGlhU2Vzc2lvblJlYWR5U3RhdGU6
OkhhdmVNZXRhZGF0YSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihXS01lZGlhU2Vzc2lvblJlYWR5
U3RhdGVIYXZlTWV0YWRhdGEpLCAiV0tNZWRpYVNlc3Npb25SZWFkeVN0YXRlSGF2ZU1ldGFkYXRh
IGRvZXMgbm90IG1hdGNoIFdlYktpdCB2YWx1ZSIpOworICAgICAgICAgICAgc3RhdGljX2Fzc2Vy
dChzdGF0aWNfY2FzdDxzaXplX3Q+KFdlYkNvcmU6Ok1lZGlhU2Vzc2lvblJlYWR5U3RhdGU6Okhh
dmVDdXJyZW50RGF0YSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihXS01lZGlhU2Vzc2lvblJlYWR5
U3RhdGVIYXZlQ3VycmVudERhdGEpLCAiV0tNZWRpYVNlc3Npb25SZWFkeVN0YXRlSGF2ZUN1cnJl
bnREYXRhIGRvZXMgbm90IG1hdGNoIFdlYktpdCB2YWx1ZSIpOworICAgICAgICAgICAgc3RhdGlj
X2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFdlYkNvcmU6Ok1lZGlhU2Vzc2lvblJlYWR5U3Rh
dGU6OkhhdmVGdXR1cmVEYXRhKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KFdLTWVkaWFTZXNzaW9u
UmVhZHlTdGF0ZUhhdmVGdXR1cmVEYXRhKSwgIldLTWVkaWFTZXNzaW9uUmVhZHlTdGF0ZUhhdmVG
dXR1cmVEYXRhIGRvZXMgbm90IG1hdGNoIFdlYktpdCB2YWx1ZSIpOworICAgICAgICAgICAgc3Rh
dGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFdlYkNvcmU6Ok1lZGlhU2Vzc2lvblJlYWR5
U3RhdGU6OkhhdmVFbm91Z2hEYXRhKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KFdLTWVkaWFTZXNz
aW9uUmVhZHlTdGF0ZUhhdmVFbm91Z2hEYXRhKSwgIldLTWVkaWFTZXNzaW9uUmVhZHlTdGF0ZUhh
dmVFbm91Z2hEYXRhIGRvZXMgbm90IG1hdGNoIFdlYktpdCB2YWx1ZSIpOworCisgICAgICAgICAg
ICBbbV9jbGllbnRDb29yZGluYXRvciByZWFkeVN0YXRlQ2hhbmdlZDpzdGF0aWNfY2FzdDxfV0tN
ZWRpYVNlc3Npb25SZWFkeVN0YXRlPihzdGF0ZSldOworICAgICAgICB9CisKKyAgICAgICAgdm9p
ZCBwbGF5YmFja1N0YXRlQ2hhbmdlZChXZWJDb3JlOjpNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRl
IHN0YXRlKSBmaW5hbAorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0YXRp
Y19jYXN0PHNpemVfdD4oV2ViQ29yZTo6TWVkaWFTZXNzaW9uUGxheWJhY2tTdGF0ZTo6Tm9uZSkg
PT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihXS01lZGlhU2Vzc2lvblBsYXliYWNrU3RhdGVOb25lKSwg
IldLTWVkaWFTZXNzaW9uUGxheWJhY2tTdGF0ZU5vbmUgZG9lcyBub3QgbWF0Y2ggV2ViS2l0IHZh
bHVlIik7CisgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oV2Vi
Q29yZTo6TWVkaWFTZXNzaW9uUGxheWJhY2tTdGF0ZTo6UGF1c2VkKSA9PSBzdGF0aWNfY2FzdDxz
aXplX3Q+KFdLTWVkaWFTZXNzaW9uUGxheWJhY2tTdGF0ZVBhdXNlZCksICJXS01lZGlhU2Vzc2lv
blBsYXliYWNrU3RhdGVQYXVzZWQgZG9lcyBub3QgbWF0Y2ggV2ViS2l0IHZhbHVlIik7CisgICAg
ICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oV2ViQ29yZTo6TWVkaWFT
ZXNzaW9uUGxheWJhY2tTdGF0ZTo6UGxheWluZykgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihXS01l
ZGlhU2Vzc2lvblBsYXliYWNrU3RhdGVQbGF5aW5nKSwgIldLTWVkaWFTZXNzaW9uUGxheWJhY2tT
dGF0ZVBsYXlpbmcgZG9lcyBub3QgbWF0Y2ggV2ViS2l0IHZhbHVlIik7CisKKyAgICAgICAgICAg
IFttX2NsaWVudENvb3JkaW5hdG9yIHBsYXliYWNrU3RhdGVDaGFuZ2VkOnN0YXRpY19jYXN0PF9X
S01lZGlhU2Vzc2lvblBsYXliYWNrU3RhdGU+KHN0YXRlKV07CisgICAgICAgIH0KKworICAgICAg
ICB2b2lkIGNvb3JkaW5hdG9yU3RhdGVDaGFuZ2VkKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yU3RhdGUgc3RhdGUpIGZpbmFsCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpY19h
c3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihXZWJDb3JlOjpNZWRpYVNlc3Npb25Db29yZGluYXRv
clN0YXRlOjpXYWl0aW5nKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KFdLTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3JTdGF0ZVdhaXRpbmcpLCAiV0tNZWRpYVNlc3Npb25Db29yZGluYXRvclN0YXRlV2Fp
dGluZyBkb2VzIG5vdCBtYXRjaCBXZWJLaXQgdmFsdWUiKTsKKyAgICAgICAgICAgIHN0YXRpY19h
c3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihXZWJDb3JlOjpNZWRpYVNlc3Npb25Db29yZGluYXRv
clN0YXRlOjpKb2luZWQpID09IHN0YXRpY19jYXN0PHNpemVfdD4oV0tNZWRpYVNlc3Npb25Db29y
ZGluYXRvclN0YXRlSm9pbmVkKSwgIldLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZUpvaW5l
ZCBkb2VzIG5vdCBtYXRjaCBXZWJLaXQgdmFsdWUiKTsKKyAgICAgICAgICAgIHN0YXRpY19hc3Nl
cnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihXZWJDb3JlOjpNZWRpYVNlc3Npb25Db29yZGluYXRvclN0
YXRlOjpDbG9zZWQpID09IHN0YXRpY19jYXN0PHNpemVfdD4oV0tNZWRpYVNlc3Npb25Db29yZGlu
YXRvclN0YXRlQ2xvc2VkKSwgIldLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZUNsb3NlZCBk
b2VzIG5vdCBtYXRjaCBXZWJLaXQgdmFsdWUiKTsKKworICAgICAgICAgICAgW21fY2xpZW50Q29v
cmRpbmF0b3IgY29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQ6c3RhdGljX2Nhc3Q8X1dLTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3JTdGF0ZT4oc3RhdGUpXTsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToK
KyAgICAgICAgUmV0YWluUHRyPGlkIDxfV0tNZWRpYVNlc3Npb25Db29yZGluYXRvcj4+IG1fY2xp
ZW50Q29vcmRpbmF0b3I7CisgICAgICAgIFJldGFpblB0cjxXS01lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9ySGVscGVyPiBtX2Nvb3JkaW5hdG9yRGVsZWdhdGU7CisgICAgfTsKKworICAgIEFTU0VSVCgh
X2ltcGwtPm1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yRm9yVGVzdGluZygpKTsKKworICAgIF9pbXBs
LT5zZXRNZWRpYVNlc3Npb25Db29yZGluYXRvckZvclRlc3RpbmcoV0tNZWRpYVNlc3Npb25Db29y
ZGluYXRvckZvclRlc3Rpbmc6OmNyZWF0ZShwcml2YXRlQ29vcmRpbmF0b3IpLnB0cigpKTsKKyAg
ICBfaW1wbC0+cGFnZSgpLmNyZWF0ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKCpfaW1wbC0+bWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3JGb3JUZXN0aW5nKCksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1h
a2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChib29sIHN1Y2Nlc3MpIHsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoc3VjY2Vzcyk7CisgICAgfSk7CisjZWxzZQorCisgICAgY29tcGxl
dGlvbkhhbmRsZXIoTk8pOworCisjZW5kaWYKK30KKworQGVuZAorCisjaWYgRU5BQkxFKE1FRElB
X1NFU1NJT05fQ09PUkRJTkFUT1IpCitAaW1wbGVtZW50YXRpb24gV0tNZWRpYVNlc3Npb25Db29y
ZGluYXRvckhlbHBlciB7CisgICAgV2Vha1B0cjxXZWJDb3JlOjpNZWRpYVNlc3Npb25Db29yZGlu
YXRvckNsaWVudD4gbV9jb29yZGluYXRvckNsaWVudDsKK30KKworLSAoaWQpaW5pdFdpdGhDb29y
ZGluYXRvcjooV2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JDbGllbnQqKWNvb3JkaW5h
dG9yCit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAg
IHJldHVybiBuaWw7CisgICAgbV9jb29yZGluYXRvckNsaWVudCA9IG1ha2VXZWFrUHRyKGNvb3Jk
aW5hdG9yKTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClzZWVrU2Vzc2lvblRvVGlt
ZTooZG91YmxlKXRpbWUgd2l0aENvbXBsZXRpb246KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhh
bmRsZXIKK3sKKyAgICBtX2Nvb3JkaW5hdG9yQ2xpZW50LT5zZWVrU2Vzc2lvblRvVGltZSh0aW1l
LCBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKworLSAodm9pZClwbGF5U2Vz
c2lvbldpdGhDb21wbGV0aW9uOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCit7Cisg
ICAgbV9jb29yZGluYXRvckNsaWVudC0+cGxheVNlc3Npb24obWFrZUJsb2NrUHRyKGNvbXBsZXRp
b25IYW5kbGVyKSk7Cit9CisKKy0gKHZvaWQpcGF1c2VTZXNzaW9uV2l0aENvbXBsZXRpb246KHZv
aWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBtX2Nvb3JkaW5hdG9yQ2xpZW50
LT5wYXVzZVNlc3Npb24obWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKKy0g
KHZvaWQpc2V0U2Vzc2lvblRyYWNrOihOU1N0cmluZyopdHJhY2tJZGVudGlmaWVyIHdpdGhDb21w
bGV0aW9uOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgbV9jb29yZGlu
YXRvckNsaWVudC0+c2V0U2Vzc2lvblRyYWNrKHRyYWNrSWRlbnRpZmllciwgbWFrZUJsb2NrUHRy
KGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKIEBlbmQKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKaW5kZXggYTQwNDEyZjNmYzBkZWI3ZmQxNDdj
ZjkzZmMzYmEyNjk0MGIxOGI3ZC4uNzQ4YjI3NDUxYWFmN2Q3ZWVjYzJjMTgwOTk3ODZhNjc5Mjhi
YzUxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCkBA
IC0xNTIsNiArMTUyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBQYWdlQ2xpZW50Owog
Y2xhc3MgUGFnZUNsaWVudEltcGw7CiBjbGFzcyBEcmF3aW5nQXJlYVByb3h5OworY2xhc3MgTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eVByaXZhdGU7CiBjbGFzcyBTYWZlQnJvd3NpbmdXYXJu
aW5nOwogY2xhc3MgVmlld0dlc3R1cmVDb250cm9sbGVyOwogY2xhc3MgVmlld1NuYXBzaG90OwpA
QCAtNjQ1LDYgKzY0NiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBoYW5kbGVDb250ZXh0TWVudVRy
YW5zbGF0aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgYm91
bmRzSW5WaWV3LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbWVudUxvY2F0aW9uKTsKICNlbmRp
ZgogCisjaWYgRU5BQkxFKE1FRElBX1NFU1NJT05fQ09PUkRJTkFUT1IpCisgICAgTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3JQcm94eVByaXZhdGUqIG1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yRm9yVGVz
dGluZygpIHsgcmV0dXJuIG1fY29vcmRpbmF0b3JGb3JUZXN0aW5nLmdldCgpOyB9CisgICAgdm9p
ZCBzZXRNZWRpYVNlc3Npb25Db29yZGluYXRvckZvclRlc3RpbmcoTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3JQcm94eVByaXZhdGUqKTsKKyNlbmRpZgorCiBwcml2YXRlOgogI2lmIEhBVkUoVE9VQ0hf
QkFSKQogICAgIHZvaWQgc2V0VXBUZXh0VG91Y2hCYXIoTlNUb3VjaEJhciAqKTsKQEAgLTg1MSw2
ICs4NTcsMTAgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8V0tET01QYXN0ZU1lbnVEZWxlZ2F0
ZT4gbV9kb21QYXN0ZU1lbnVEZWxlZ2F0ZTsKICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdl
YkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2UpPiBtX2RvbVBhc3RlUmVxdWVzdEhhbmRsZXI7
CiAKKyNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTl9DT09SRElOQVRPUikKKyAgICBSZWZQdHI8TWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eVByaXZhdGU+IG1fY29vcmRpbmF0b3JGb3JUZXN0aW5n
OworI2VuZGlmCisKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogI2ltcG9ydCA8V2ViS2l0
QWRkaXRpb25zL1dlYlZpZXdJbXBsQWRkaXRpb25zQWZ0ZXIuaD4KICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCA2ZDNkMTI5ZDU4YzY5
NTA4NTIxZmFlMjk1YjM0YWE1YmY1MWE5MGU0Li44N2JhZDJiNGM0MGE4MzZjMTM0ZmZhNzRiMDY4
MDdlY2NjMjQ3MGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5tbQpAQCAtMTM5LDYgKzEzOSwxMCBAQAogI2ltcG9ydCA8V2ViQ29yZS9JbWFnZUV4dHJh
Y3Rpb25SZXN1bHQuaD4KICNlbmRpZgogCisjaWYgRU5BQkxFKE1FRElBX1NFU1NJT05fQ09PUkRJ
TkFUT1IpCisjaW5jbHVkZSA8V2ViS2l0L01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHlQcml2
YXRlLmg+CisjZW5kaWYKKwogI2lmIEhBVkUoVFJBTlNMQVRJT05fVUlfU0VSVklDRVMpCiAjaW1w
b3J0IDxUcmFuc2xhdGlvblVJU2VydmljZXMvTFRVSVRyYW5zbGF0aW9uVmlld0NvbnRyb2xsZXIu
aD4KIApAQCAtNTU4Miw2ICs1NTg2LDEzIEBAIGJvb2wgV2ViVmlld0ltcGw6OmVmZmVjdGl2ZVVz
ZXJJbnRlcmZhY2VMZXZlbElzRWxldmF0ZWQoKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorI2lm
IEVOQUJMRShNRURJQV9TRVNTSU9OX0NPT1JESU5BVE9SKQordm9pZCBXZWJWaWV3SW1wbDo6c2V0
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JGb3JUZXN0aW5nKE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
UHJveHlQcml2YXRlKiBjb29yZGluYXRvcikKK3sKKyAgICBtX2Nvb3JkaW5hdG9yRm9yVGVzdGlu
ZyA9IGNvb3JkaW5hdG9yOworfQorI2VuZGlmCisKICNpZiBIQVZFKFRSQU5TTEFUSU9OX1VJX1NF
UlZJQ0VTKSAmJiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKIAogYm9vbCBXZWJWaWV3SW1wbDo6Y2Fu
SGFuZGxlQ29udGV4dE1lbnVUcmFuc2xhdGlvbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9NZWRpYS9NZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5UHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWEvTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JQcm94eVByaXZhdGUuaAppbmRleCBlM2ZmYzI0NmIzOWJmMTc5ZTc4N2YzNmQwNGM5N2ViNmY4
MzQ2Y2ViLi5hODE1MjBhNjIzOGFmNjZjZjRmMGNhNTk3ZDI1ZWZkOGVkZTI2YmMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRpYS9NZWRpYVNlc3Npb25Db29yZGluYXRv
clByb3h5UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL01lZGlhL01lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yUHJveHlQcml2YXRlLmgKQEAgLTM4LDYgKzM4LDggQEAgc3RydWN0
IEV4Y2VwdGlvbkRhdGE7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCit1c2luZyBNZWRpYVNlc3Np
b25Db21tYW5kQ29tcGxldGlvbkhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlv
bmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYpPjsKKwogY2xhc3MgTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3JQcm94eVByaXZhdGUKICAgICA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxNZWRpYVNl
c3Npb25Db29yZGluYXRvclByb3h5UHJpdmF0ZT4KICAgICAsIHB1YmxpYyBSZWZDb3VudGVkPE1l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHlQcml2YXRlPiB7CkBAIC00NiwxMiArNDgsMTIgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCBTdHJpbmcgaWRlbnRpZmllcigpIGNvbnN0ID0gMDsKIAot
ICAgIHZpcnR1YWwgdm9pZCBqb2luKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2Vi
Q29yZTo6RXhjZXB0aW9uRGF0YT4mJik+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgam9pbihN
ZWRpYVNlc3Npb25Db21tYW5kQ29tcGxldGlvbkhhbmRsZXImJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBsZWF2ZSgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2Vla1RvKGRvdWJsZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmKT4mJikg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9u
YWw8V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJik+JiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
cGF1c2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25E
YXRhPiYmKT4mJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRUcmFjayhjb25zdCBTdHJpbmcm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+
JiYpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNlZWtUbyhkb3VibGUsIE1lZGlhU2Vzc2lv
bkNvbW1hbmRDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBsYXko
TWVkaWFTZXNzaW9uQ29tbWFuZENvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgcGF1c2UoTWVkaWFTZXNzaW9uQ29tbWFuZENvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhY2soY29uc3QgU3RyaW5nJiwgTWVkaWFTZXNzaW9uQ29t
bWFuZENvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBwb3NpdGlv
blN0YXRlQ2hhbmdlZChjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpNZWRpYVBvc2l0aW9uU3RhdGU+
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWFkeVN0YXRlQ2hhbmdlZChXZWJDb3JlOjpNZWRp
YVNlc3Npb25SZWFkeVN0YXRlKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9NZWRpYS9SZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL01lZGlhL1JlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJv
eHkuY3BwCmluZGV4IDllZGYzM2UwYzA1OGY1OGNhZmI5NTJmMTIwNGM1ZmJmNmI1ZDdjNmUuLmY5
MDA4ZTY0Y2I3OWEwYzM4MTQxZDE5NWRlODg2ZGMzZGMyNjgxMzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL01lZGlhL1JlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL01lZGlhL1JlbW90ZU1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yUHJveHkuY3BwCkBAIC01OSw2ICs1OSw3IEBAIFJlbW90ZU1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yUHJveHk6OlJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHko
V2ViUGFnZVByCiAgICAgLCBtX2xvZ0lkZW50aWZpZXIoTG9nZ2VySGVscGVyOjp1bmlxdWVMb2dJ
ZGVudGlmaWVyKCkpCiAjZW5kaWYKIHsKKyAgICBtX3ByaXZhdGVDb29yZGluYXRvci0+c2V0Q2xp
ZW50KG1ha2VXZWFrUHRyKHRoaXMpKTsKICAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuYWRk
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclBy
b3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZVByb3h5LndlYlBhZ2VJRCgpLCAq
dGhpcyk7CiB9CiAKQEAgLTY3LDcgKzY4LDcgQEAgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JQcm94eTo6flJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHkoKQogICAgIG1fd2Vi
UGFnZVByb3h5LnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90
ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93
ZWJQYWdlUHJveHkud2ViUGFnZUlEKCkpOwogfQogCi12b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yUHJveHk6OmpvaW4oQ29tbWFuZENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OmpvaW4o
TWVkaWFTZXNzaW9uQ29tbWFuZENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgYXV0byBpZGVudGlmaWVyID0gTE9HSURFTlRJRklFUjsKICAgICBBTFdBWVNfTE9H
KGlkZW50aWZpZXIpOwpAQCAtODUsNyArODYsNyBAQCB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yUHJveHk6OmxlYXZlKCkKICAgICBtX3ByaXZhdGVDb29yZGluYXRvci0+bGVhdmUo
KTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5Ojpjb29yZGlu
YXRlU2Vla1RvKGRvdWJsZSB0aW1lLCBDb21tYW5kQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6Y29v
cmRpbmF0ZVNlZWtUbyhkb3VibGUgdGltZSwgTWVkaWFTZXNzaW9uQ29tbWFuZENvbXBsZXRpb25I
YW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBpZGVudGlmaWVyID0gTE9H
SURFTlRJRklFUjsKICAgICBBTFdBWVNfTE9HKGlkZW50aWZpZXIsIHRpbWUpOwpAQCAtOTYsNyAr
OTcsNyBAQCB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OmNvb3JkaW5h
dGVTZWVrVG8oZG91YmxlIHRpbWUsIENvbW1hbmRDbwogICAgIH0pOwogfQogCi12b2lkIFJlbW90
ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OmNvb3JkaW5hdGVQbGF5KENvbW1hbmRDb21w
bGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVNZWRpYVNlc3Np
b25Db29yZGluYXRvclByb3h5Ojpjb29yZGluYXRlUGxheShNZWRpYVNlc3Npb25Db21tYW5kQ29t
cGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIGlkZW50aWZp
ZXIgPSBMT0dJREVOVElGSUVSOwogICAgIEFMV0FZU19MT0coaWRlbnRpZmllcik7CkBAIC0xMDcs
NyArMTA4LDcgQEAgdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5Ojpjb29y
ZGluYXRlUGxheShDb21tYW5kQ29tcGxldGlvbkhhbmRsZXIKICAgICB9KTsKIH0KIAotdm9pZCBS
ZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5Ojpjb29yZGluYXRlUGF1c2UoQ29tbWFu
ZENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZU1lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OmNvb3JkaW5hdGVQYXVzZShNZWRpYVNlc3Npb25Db21t
YW5kQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIGlk
ZW50aWZpZXIgPSBMT0dJREVOVElGSUVSOwogICAgIEFMV0FZU19MT0coaWRlbnRpZmllcik7CkBA
IC0xMTgsNyArMTE5LDcgQEAgdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5
Ojpjb29yZGluYXRlUGF1c2UoQ29tbWFuZENvbXBsZXRpb25IYW5kbGUKICAgICB9KTsKIH0KIAot
dm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5Ojpjb29yZGluYXRlU2V0VHJh
Y2soY29uc3QgU3RyaW5nJiB0cmFjaywgQ29tbWFuZENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OmNv
b3JkaW5hdGVTZXRUcmFjayhjb25zdCBTdHJpbmcmIHRyYWNrLCBNZWRpYVNlc3Npb25Db21tYW5k
Q29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIGlkZW50
aWZpZXIgPSBMT0dJREVOVElGSUVSOwogICAgIEFMV0FZU19MT0coaWRlbnRpZmllcik7CkBAIC0x
NDcsNiArMTQ4LDEyIEBAIHZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6
cmVhZHlTdGF0ZUNoYW5nZWQoTWVkaWFTZXNzaW9uUmVhZHlTdGF0CiAgICAgbV9wcml2YXRlQ29v
cmRpbmF0b3ItPnJlYWR5U3RhdGVDaGFuZ2VkKHN0YXRlKTsKIH0KIAordm9pZCBSZW1vdGVNZWRp
YVNlc3Npb25Db29yZGluYXRvclByb3h5Ojpjb29yZGluYXRvclN0YXRlQ2hhbmdlZChXZWJDb3Jl
OjpNZWRpYVNlc3Npb25Db29yZGluYXRvclN0YXRlIHN0YXRlKQoreworICAgIEFMV0FZU19MT0co
TE9HSURFTlRJRklFUik7CisgICAgbV9wcml2YXRlQ29vcmRpbmF0b3ItPmNvb3JkaW5hdG9yU3Rh
dGVDaGFuZ2VkKHN0YXRlKTsKK30KKwogdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRv
clByb3h5OjpzZWVrU2Vzc2lvblRvVGltZShkb3VibGUgdGltZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjYWxsYmFjaykKIHsKICAgICBtX3dlYlBhZ2VQcm94eS5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpTZWVrU2Vz
c2lvblRvVGltZSB7IHRpbWUgfSwgY2FsbGJhY2spOwpAQCAtMTY3LDEyICsxNzQsNiBAQCB2b2lk
IFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OnNldFNlc3Npb25UcmFjayhjb25z
dCBTdHJpbmcmIHRyYWNrSWQsCiAgICAgbV93ZWJQYWdlUHJveHkuc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6U2V0U2Vzc2lvblRyYWNr
IHsgdHJhY2tJZCB9LCBjYWxsYmFjayk7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3JQcm94eTo6Y29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQoV2ViQ29yZTo6TWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3JTdGF0ZSBzdGF0ZSkKLXsKLSAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJ
RVIpOwotICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5jb29yZGluYXRvclN0YXRlQ2hhbmdlZChz
dGF0ZSk7Ci19Ci0KICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKIFdURkxvZ0NoYW5uZWwmIFJl
bW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OmxvZ0NoYW5uZWwoKSBjb25zdAogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWEvUmVtb3RlTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWEvUmVt
b3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eS5oCmluZGV4IGFmYjJmNWRhMGQ0YjkzZjdl
MTUxZWM0MWRmYThlYzgyMjMxZDdjZGQuLmRlYjc3OGU3OTM5ODNiZTQxY2IzM2E1ZDVhY2Q2YTIw
NGQ5MTc3ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL01lZGlhL1JlbW90
ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9NZWRpYS9SZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5LmgKQEAgLTQxLDcg
KzQxLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiAKIGNsYXNz
IFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHkKLSAgICA6IHB1YmxpYyBJUEM6Ok1l
c3NhZ2VSZWNlaXZlcgorICAgIDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgICwg
cHVibGljIFJlZkNvdW50ZWQ8UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eT4KICAg
ICAsIHB1YmxpYyBXZWJDb3JlOjpNZWRpYVNlc3Npb25Db29yZGluYXRvckNsaWVudCB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC02MCwxOSArNjAsMTYgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICBleHBsaWNpdCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5KFdl
YlBhZ2VQcm94eSYsIFJlZjxNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5UHJpdmF0ZT4mJik7
CiAKLSAgICB1c2luZyBDb29yZGluYXRlQ29tcGxldGlvbkhhbmRsZXIgPSBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmKT47Ci0KICAgICAvLyBJUEM6
Ok1lc3NhZ2VSZWNlaXZlci4KICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCiAgICAgLy8gUmVjZWl2ZXJzLgotICAg
IHVzaW5nIENvbW1hbmRDb21wbGV0aW9uSGFuZGxlciA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
T3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJik+OwotICAgIHZvaWQgam9pbihDb21t
YW5kQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAgdm9pZCBqb2luKE1lZGlhU2Vzc2lvbkNvbW1h
bmRDb21wbGV0aW9uSGFuZGxlciYmKTsKICAgICB2b2lkIGxlYXZlKCk7Ci0gICAgdm9pZCBjb29y
ZGluYXRlU2Vla1RvKGRvdWJsZSwgQ29tbWFuZENvbXBsZXRpb25IYW5kbGVyJiYpOwotICAgIHZv
aWQgY29vcmRpbmF0ZVBsYXkoQ29tbWFuZENvbXBsZXRpb25IYW5kbGVyJiYpOwotICAgIHZvaWQg
Y29vcmRpbmF0ZVBhdXNlKENvbW1hbmRDb21wbGV0aW9uSGFuZGxlciYmKTsKLSAgICB2b2lkIGNv
b3JkaW5hdGVTZXRUcmFjayhjb25zdCBTdHJpbmcmLCBDb21tYW5kQ29tcGxldGlvbkhhbmRsZXIm
Jik7CisgICAgdm9pZCBjb29yZGluYXRlU2Vla1RvKGRvdWJsZSwgTWVkaWFTZXNzaW9uQ29tbWFu
ZENvbXBsZXRpb25IYW5kbGVyJiYpOworICAgIHZvaWQgY29vcmRpbmF0ZVBsYXkoTWVkaWFTZXNz
aW9uQ29tbWFuZENvbXBsZXRpb25IYW5kbGVyJiYpOworICAgIHZvaWQgY29vcmRpbmF0ZVBhdXNl
KE1lZGlhU2Vzc2lvbkNvbW1hbmRDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2b2lkIGNvb3Jk
aW5hdGVTZXRUcmFjayhjb25zdCBTdHJpbmcmLCBNZWRpYVNlc3Npb25Db21tYW5kQ29tcGxldGlv
bkhhbmRsZXImJik7CiAgICAgdm9pZCBwb3NpdGlvblN0YXRlQ2hhbmdlZChjb25zdCBPcHRpb25h
bDxXZWJDb3JlOjpNZWRpYVBvc2l0aW9uU3RhdGU+Jik7CiAgICAgdm9pZCByZWFkeVN0YXRlQ2hh
bmdlZChXZWJDb3JlOjpNZWRpYVNlc3Npb25SZWFkeVN0YXRlKTsKICAgICB2b2lkIHBsYXliYWNr
U3RhdGVDaGFuZ2VkKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvblBsYXliYWNrU3RhdGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYzQ2ZjE3YWJmODY3MjYzMDk4
ODNmMGQ2NDBjNzY0NzM2MDM5ZWVkZi4uNjk3N2UzNjQyYzMxMjBhZGUxY2E5MmQ3MmJjMWU2ODE4
ZmUwODMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0x
MDQwMywxOSArMTA0MDMsMTkgQEAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgV2ViUGFn
ZVByb3h5OjpjcmVhdGVOZXR3b3JrRXh0ZW5zaW9uc1NhbmRib3hFeHRlbnMKICNlbmRpZgogCiAj
aWYgRU5BQkxFKE1FRElBX1NFU1NJT05fQ09PUkRJTkFUT1IpCi12b2lkIFdlYlBhZ2VQcm94eTo6
Y3JlYXRlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IoUmVmPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
UHJveHlQcml2YXRlPiYmIHByaXZhdGVDb29yZGluYXRvciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWFrUHRyPFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk+KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVNZWRpYVNlc3Npb25Db29yZGlu
YXRvcihSZWY8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eVByaXZhdGU+JiYgcHJpdmF0ZUNv
b3JkaW5hdG9yLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIEFTU0VSVCghbV9tZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5KTsKIAog
ICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6Q3JlYXRlTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3IocHJpdmF0ZUNvb3JkaW5hdG9yLT5pZGVudGlmaWVyKCkpLCBbd2Vha1Ro
aXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHByaXZhdGVDb29yZGluYXRvciA9IFdURk1vdmUocHJp
dmF0ZUNvb3JkaW5hdG9yKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oYm9vbCBzdWNjZXNzKSBtdXRhYmxlIHsKIAogICAgICAgICBpZiAoIXdlYWtUaGlz
IHx8ICFzdWNjZXNzKSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKICAgICAgICAgd2Vha1RoaXMtPm1fbWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQ
cm94eSA9IFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OmNyZWF0ZSgqd2Vha1Ro
aXMsIFdURk1vdmUocHJpdmF0ZUNvb3JkaW5hdG9yKSk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKG1ha2VXZWFrUHRyKHdlYWtUaGlzLT5tX21lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHku
Z2V0KCkpKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CiAgICAgfSk7CiB9CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggM2QzODhhNzJj
ZDY3MGE1ZTEwODY2OWRhNGE5NWM0MWI1YzZlYTg4MS4uNTkyOGQwNWZiYmQ5N2Y0MzY0YzRiNzc1
ODI2MDQ1OGUzNzllMmNkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
QEAgLTE4OTIsNyArMTg5Miw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKE1FRElB
X1NFU1NJT05fQ09PUkRJTkFUT1IpCi0gICAgdm9pZCBjcmVhdGVNZWRpYVNlc3Npb25Db29yZGlu
YXRvcihSZWY8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eVByaXZhdGU+JiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2Vha1B0cjxSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5
Pik+JiYpOworICAgIHZvaWQgY3JlYXRlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IoUmVmPE1lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yUHJveHlQcml2YXRlPiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzNWMxNzRjZjdkYjg5
MTNkODUyZmY0OWNhMmU0YjdmMmY1OTA2M2I2Li4zYjRhMWJlMzczNDhlN2E4NjFhOTM5YThiMjMy
NGJjYjJhZjI4NzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTEwNSw5ICsxMDUsOSBAQAogCQkwNzI5N0ZBMzFDMTg2QURCMDAzRjA3
MzUgLyogV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Mjk3RkExMUMxODZBREIwMDNGMDczNSAvKiBXS1Vz
ZXJNZWRpYVBlcm1pc3Npb25DaGVjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTA3NDg3OUI5MjM3M0E5MDkwMEY1Njc4RSAvKiBBcHBLaXRTb2Z0
TGluay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc0
ODc5QjcyMzczQTkwOTAwRjU2NzhFIC8qIEFwcEtpdFNvZnRMaW5rLmggKi87IH07CiAJCTA3NEU3
NUZFMURGMjIxMTkwMEQzMThFQyAvKiBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc0RTc1RkIxREYxRkQxMzAw
RDMxOEVDIC8qIFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmggKi87IH07CisJCTA3NUE5Q0YzMjYx
NjlCQUIwMDZERkEzQSAvKiBNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5UHJpdmF0ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc3QkE1NzAyNjBF
OEY2MzAwNzJGMTlGIC8qIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHlQcml2YXRlLmggKi87
IH07CiAJCTA3NkU4ODRFMUExM0NBREYwMDVFOTBGQyAvKiBBUElDb250ZXh0TWVudUNsaWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2RTg4NEQx
QTEzQ0FERjAwNUU5MEZDIC8qIEFQSUNvbnRleHRNZW51Q2xpZW50LmggKi87IH07CiAJCTA3NzI4
MTFEMjEyMzRGRjYwMEM4RUYyRSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBNDEwRjQz
MTlBRjdCMjcwMDJFQkFCNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCAq
LzsgfTsKLQkJMDc3QkE1NkUyNjBFNkQxQzAwNzJGMTlGIC8qIFJlbW90ZU1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA3MzZCNzU1MjYwRDAzQTAwMEUwNjk5NCAvKiBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGlu
YXRvci5jcHAgKi87IH07CiAJCTA3OTIzMTQ4MjM5Q0JDQjgwMDk1OThFMiAvKiBSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5MjMxNDIyMzlDQkNCNTAwOTU5OEUyIC8qIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi87IH07CiAJCTA3
OTIzMTRCMjM5Q0JDQjgwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwNzkyMzE0NTIzOUNCQ0I3MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQkwNzkyMzE0QzIzOUNCQ0I4MDA5
NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5MjMxNDYyMzlDQkNCNzAw
OTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaCAqLzsgfTsK
QEAgLTE4NjQsNyArMTg2NCw2IEBACiAJCUNEMEM2ODMxMjAxRkQxMDEwMEE1OTQwOSAvKiBXS0Z1
bGxTY3JlZW5WaWV3Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0QwQzY4MkYyMDFGRDEwMTAwQTU5NDA5IC8qIFdLRnVsbFNjcmVlblZp
ZXdDb250cm9sbGVyLmggKi87IH07CiAJCUNEMTlBMjZFMUExM0U4MzQwMDhENjUwRSAvKiBXZWJE
aWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0QxOUEyNkExQTEzRTgyMTAwOEQ2NTBFIC8qIFdlYkRpYWdub3N0aWNM
b2dnaW5nQ2xpZW50LmggKi87IH07CiAJCUNEMTlEMkVBMjA0NjQwNkYwMDE3MDc0QSAvKiBGdWxs
c2NyZWVuVG91Y2hTZWNoZXVyaXN0aWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEMTlEMkU4MjA0NjQwNkYwMDE3MDc0QSAvKiBGdWxsc2NyZWVuVG91
Y2hTZWNoZXVyaXN0aWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwotCQlDRDFGRTJENzI2MTNFMTg2MDBBREMyOUIgLyogUmVtb3RlTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3JQcm94eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwNzM2Qjc1QzI2MEQ0QTRFMDBFMDY5OTQgLyogUmVtb3RlTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3JQcm94eS5jcHAgKi87IH07CiAJCUNEM0VFRjQ2MjU3OUMyNjEwMDY1NjNCQiAv
KiBSZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Qz
RUVGNDQyNTc5QzFENDAwNjU2M0JCIC8qIFJlbW90ZU1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZh
Y3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCUNENDU3MEQzMjQ0MTEzQjUw
MEEzRENFQiAvKiBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
NDU3MEQwMjQ0MTAxNEEwMEEzRENFQiAvKiBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJQ0Q0NTcwRDQyNDQxMUQwRjAwQTNEQ0VC
IC8qIEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENDU3MENCMjQ0MEZCMkEwMEEzRENFQiAvKiBB
dWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvci5jcHAgKi87IH07CkBAIC05MjY4LDEwICs5MjY3
LDEwIEBACiAJCQkJNTMyMTU5NEYxREJBRTZENzAwNTRBQTNDIC8qIE5ldHdvcmtEYXRhVGFza0Nv
Y29hLmggKi8sCiAJCQkJNUNCQzlCOEIxQzY1MjU3MzAwQThGRENGIC8qIE5ldHdvcmtEYXRhVGFz
a0NvY29hLm1tICovLAogCQkJCTdFQzRGMEY5MThFNEE5NDUwMDgwNTZBRiAvKiBOZXR3b3JrUHJv
Y2Vzc0NvY29hLm1tICovLAotCQkJCTUzMjE1OTUwMURCQUU2RDcwMDU0QUEzQyAvKiBOZXR3b3Jr
U2Vzc2lvbkNvY29hLmggKi8sCi0JCQkJNUMyMENCOUIxQkIwRENEMjAwODk1QkIxIC8qIE5ldHdv
cmtTZXNzaW9uQ29jb2EubW0gKi8sCiAJCQkJNTE4MzI0NzgyNjE1QjAwRDAwM0YyMzlFIC8qIE5l
dHdvcmtTY2hlbWVVUkxQcm90b2NvbC5oICovLAogCQkJCTUxODMyNDc5MjYxNUIwMEQwMDNGMjM5
RSAvKiBOZXR3b3JrU2NoZW1lVVJMUHJvdG9jb2wubW0gKi8sCisJCQkJNTMyMTU5NTAxREJBRTZE
NzAwNTRBQTNDIC8qIE5ldHdvcmtTZXNzaW9uQ29jb2EuaCAqLywKKwkJCQk1QzIwQ0I5QjFCQjBE
Q0QyMDA4OTVCQjEgLyogTmV0d29ya1Nlc3Npb25Db2NvYS5tbSAqLywKIAkJCQk0MTI4N0Q0QzIy
NUMwNUM1MDA5QTNFMjYgLyogV2ViU29ja2V0VGFza0NvY29hLmggKi8sCiAJCQkJNDEyODdENEIy
MjVDMDVDNDAwOUEzRTI2IC8qIFdlYlNvY2tldFRhc2tDb2NvYS5tbSAqLywKIAkJCSk7CkBAIC0x
MTY3Niw3ICsxMTY3NSw2IEBACiAJCQkJMzE3RkU3QzUxQzQ4N0E2QzAwQTBDQTg5IC8qIEFQSUV4
cGVyaW1lbnRhbEZlYXR1cmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTAwQjk2NjE2MThFMjRDQkEw
MENFMUY4OCAvKiBBUElGaW5kQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkyREQ2N0EyRTFC
RDgxOTczMDA1M0IyNTEgLyogQVBJRmluZE1hdGNoZXNDbGllbnQuaCBpbiBIZWFkZXJzICovLAot
CQkJCTUxODMyNDdEMjYxNjhGRjcwMDNGMjM5RSAvKiBOZXR3b3JrVVJMU2NoZW1lVGFzay5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzdFMjVENkUxOEZERTVENjAwNUQzQTAwIC8qIEFQSUZvcm1DbGll
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQzEzMzcyMTg1NjZDN0MwMEYzRUMwNSAvKiBBUElG
cmFtZUhhbmRsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRGOUVFRTYxQTc4MUZCNDAwQjZDRkJF
IC8qIEFQSUZyYW1lSW5mby5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTkyOSw2ICsxMTkyNyw3IEBA
CiAJCQkJMDdFMTlFRkQyM0Q0MDFGMTAwOTRGRkI0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZU1lc3NhZ2VzUmVwbGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFCNERDRTEyNUE3OTIzQzAw
N0QxNzhDIC8qIE1lZGlhU2FtcGxlQnl0ZVJhbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTU3
OTlCRDI1ODQ0MzMyMDA1MjgyMzYgLyogTWVkaWFTYW1wbGVDdXJzb3IuaCBpbiBIZWFkZXJzICov
LAorCQkJCTA3NUE5Q0YzMjYxNjlCQUIwMDZERkEzQSAvKiBNZWRpYVNlc3Npb25Db29yZGluYXRv
clByb3h5UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE1Nzk5QjcyNTg0NDMzMjAwNTI4
MjM2IC8qIE1lZGlhVHJhY2tSZWFkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxOTMzREVGMTk2
NUVCMzEwMDhBQzNFQSAvKiBNZW51VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QjQ3
OTA4RDI1MzE0RDgzMDBFQzExQUIgLyogTWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zLmggaW4g
SGVhZGVycyAqLywKQEAgLTExOTk3LDYgKzExOTk2LDggQEAKIAkJCQk1QzIwQ0JBMDFCQjFFQ0Q4
MDA4OTVCQjEgLyogTmV0d29ya1Nlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTUzMjE1OTU1
MURCQUU3MjkwMDU0QUEzQyAvKiBOZXR3b3JrU2Vzc2lvbkNvY29hLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MTc5MTVCOTIyNTcwNDZGMDBENkY5N0UgLyogTmV0d29ya1NvY2tldENoYW5uZWwuaCBp
biBIZWFkZXJzICovLAorCQkJCTUxODMyNDdDMjYxNjhDNjIwMDNGMjM5RSAvKiBOZXR3b3JrVVJM
U2NoZW1lSGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE4MzI0N0QyNjE2OEZGNzAwM0Yy
MzlFIC8qIE5ldHdvcmtVUkxTY2hlbWVUYXNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzBEQUFD
MjIzMDM3MzAzMDBFOEZDMDQgLyogTmZjQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTcwREFBQUUyMzAyNkY1QzAwRThGQzA0IC8qIE5mY1NlcnZpY2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCTMxQTJFQzU2MTQ4OTlDMDkwMDgxMEQ3MSAvKiBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVx
dWVzdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjgyNyw3ICsxMjgyOCw2IEBACiAJCQkJMEZDQjRF
NjgxOEJCRTNEOTAwMEZDRkM5IC8qIFdLVGV4dElucHV0V2luZG93Q29udHJvbGxlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQ0UyMTIxNUYyNDBFRTU3MTAwNkVENDQzIC8qIFdLVGV4dFBsYWNlaG9s
ZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRTQ1OTQ1QzI0MEY4ODU1MDA3ODAxOUYgLyogV0tU
ZXh0U2VsZWN0aW9uUmVjdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE4MzI0N0MyNjE2OEM2MjAw
M0YyMzlFIC8qIE5ldHdvcmtVUkxTY2hlbWVIYW5kbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQky
RUI2RkMwMTIwMzAyMTk2MDAxN0U2MTkgLyogV0tUaW1lUGlja2VyVmlld0NvbnRyb2xsZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTcxQTY3NkE2MjJDNjIzMjUwMDdENjI5NSAvKiBXS1RvdWNoQWN0
aW9uR2VzdHVyZVJlY29nbml6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDA3NjA4MTI0RkYw
MjcwMDY4RjIwQSAvKiBXS1R5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtMTQwMDUsOCArMTQwMDUs
NiBAQAogCQkJCTA3MDE3ODlFMjNCRTlDRkMwMDVGMEZBQSAvKiBSZW1vdGVNZWRpYVBsYXllck1J
TUVUeXBlQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcxQkM1OEYyM0NFMUVBQTAwNjgw
RDdDIC8qIFJlbW90ZU1lZGlhUGxheWVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUQ0RDczNzAyM0E5RTU0NzAwNzE3QTI1IC8qIFJlbW90ZU1lZGlhUmVzb3Vy
Y2VNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTA3N0JBNTZF
MjYwRTZEMUMwMDcyRjE5RiAvKiBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvci5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQlDRDFGRTJENzI2MTNFMTg2MDBBREMyOUIgLyogUmVtb3RlTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3JQcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxREQyQTY2MzI1
NjEyNDZGMDBGRjdCNkYgLyogUmVtb3RlTWVkaWFTb3VyY2VQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUMxMzM4NTE4NTkwQzQ2MDBGM0VDMDUgLyogUmVtb3Rl
T2JqZWN0UmVnaXN0cnlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q4
MjUyRTIyNUQ0OTE5MTAwODYyRkQ4IC8qIFJlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lck1lc3Nh
Z2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9NZWRpYVNlc3Npb24vUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU2Vzc2lvbi9SZW1vdGVNZWRpYVNlc3Np
b25Db29yZGluYXRvci5jcHAKaW5kZXggMGNjM2Y4MWNmMWY0YTZiNTljNjM2ODdjNmIyMjk3ZWY1
ZDJiNDg0NS4uM2I5ZjUxMzYzZWJlNGI5M2U0ZDQ2ZDdhZmY3NjMxNjE5YjEyOWY4MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU2Vzc2lvbi9SZW1vdGVNZWRpYVNl
c3Npb25Db29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlh
U2Vzc2lvbi9SZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvci5jcHAKQEAgLTcyLDE3ICs3Miwx
NyBAQCB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpqb2luKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGV4
Y2VwdGlvbikgewotICAgICAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uIHsgZXhjZXB0aW9uLT5j
b2RlLCBXVEZNb3ZlKGV4Y2VwdGlvbi0+bWVzc2FnZSkgfSk7CisgICAgICAgICAgICBjYWxsYmFj
ayhleGNlcHRpb24tPnRvRXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKICAgICAgICAgY2FsbGJhY2soeyB9KTsKLSAgICB9LCAwKTsKKyAgICB9KTsKIH0KIAog
dm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6bGVhdmUoKQogewotICAgIG1fcGFn
ZS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5OjpMZWF2
ZSB7IH0sIDApOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25D
b29yZGluYXRvclByb3h5OjpMZWF2ZSB7IH0pOwogfQogCiB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yOjpzZWVrVG8oZG91YmxlIHRpbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
T3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uPiYmKT4mJiBjYWxsYmFjaykKQEAgLTk1LDEyICs5
NSwxMiBAQCB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpzZWVrVG8oZG91Ymxl
IHRpbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTwogICAgICAgICB9CiAKICAgICAgICAgaWYg
KGV4Y2VwdGlvbikgewotICAgICAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uIHsgZXhjZXB0aW9u
LT5jb2RlLCBXVEZNb3ZlKGV4Y2VwdGlvbi0+bWVzc2FnZSkgfSk7CisgICAgICAgICAgICBjYWxs
YmFjayhleGNlcHRpb24tPnRvRXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKICAgICAgICAgY2FsbGJhY2soeyB9KTsKLSAgICB9LCAwKTsKKyAgICB9KTsKIH0K
IAogdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6cGxheShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbj4mJik+JiYgY2FsbGJhY2spCkBA
IC0xMTMsMTIgKzExMywxMiBAQCB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpw
bGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZQogICAgICAgICB9CiAK
ICAgICAgICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9u
IHsgZXhjZXB0aW9uLT5jb2RlLCBXVEZNb3ZlKGV4Y2VwdGlvbi0+bWVzc2FnZSkgfSk7CisgICAg
ICAgICAgICBjYWxsYmFjayhleGNlcHRpb24tPnRvRXhjZXB0aW9uKCkpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgY2FsbGJhY2soeyB9KTsKLSAgICB9LCAwKTsK
KyAgICB9KTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6cGF1c2Uo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb24+JiYpPiYm
IGNhbGxiYWNrKQpAQCAtMTMxLDEyICsxMzEsMTIgQEAgdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25D
b29yZGluYXRvcjo6cGF1c2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3IK
ICAgICAgICAgfQogCiAgICAgICAgIGlmIChleGNlcHRpb24pIHsKLSAgICAgICAgICAgIGNhbGxi
YWNrKEV4Y2VwdGlvbiB7IGV4Y2VwdGlvbi0+Y29kZSwgV1RGTW92ZShleGNlcHRpb24tPm1lc3Nh
Z2UpIH0pOworICAgICAgICAgICAgY2FsbGJhY2soZXhjZXB0aW9uLT50b0V4Y2VwdGlvbigpKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGNhbGxiYWNrKHsgfSk7
Ci0gICAgfSwgMCk7CisgICAgfSk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3I6OnNldFRyYWNrKGNvbnN0IFN0cmluZyYgdHJhY2tJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbj4mJik+JiYgY2FsbGJhY2sp
CkBAIC0xNDksMzYgKzE0OSwzNiBAQCB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
OjpzZXRUcmFjayhjb25zdCBTdHJpbmcmIHRyYWNrSWRlbnRpZmllciwgQ29tcAogICAgICAgICB9
CiAKICAgICAgICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAgICAgICAgY2FsbGJhY2soRXhjZXB0
aW9uIHsgZXhjZXB0aW9uLT5jb2RlLCBXVEZNb3ZlKGV4Y2VwdGlvbi0+bWVzc2FnZSkgfSk7Cisg
ICAgICAgICAgICBjYWxsYmFjayhleGNlcHRpb24tPnRvRXhjZXB0aW9uKCkpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgY2FsbGJhY2soeyB9KTsKLSAgICB9LCAw
KTsKKyAgICB9KTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6cG9z
aXRpb25TdGF0ZUNoYW5nZWQoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFQb3NpdGlvblN0
YXRlPiYgc3RhdGUpCiB7CiAgICAgQUxXQVlTX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVS
KTsKLSAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JQcm94eTo6UG9zaXRpb25TdGF0ZUNoYW5nZWQgeyBzdGF0ZSB9LCAwKTsKKyAgICBtX3BhZ2Uu
c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6UG9zaXRp
b25TdGF0ZUNoYW5nZWQgeyBzdGF0ZSB9KTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25D
b29yZGluYXRvcjo6cmVhZHlTdGF0ZUNoYW5nZWQoV2ViQ29yZTo6TWVkaWFTZXNzaW9uUmVhZHlT
dGF0ZSBzdGF0ZSkKIHsKICAgICBBTFdBWVNfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIs
IHN0YXRlKTsKLSAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3JQcm94eTo6UmVhZHlTdGF0ZUNoYW5nZWQgeyBzdGF0ZSB9LCAwKTsKKyAgICBtX3Bh
Z2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6UmVh
ZHlTdGF0ZUNoYW5nZWQgeyBzdGF0ZSB9KTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25D
b29yZGluYXRvcjo6cGxheWJhY2tTdGF0ZUNoYW5nZWQoV2ViQ29yZTo6TWVkaWFTZXNzaW9uUGxh
eWJhY2tTdGF0ZSBzdGF0ZSkKIHsKICAgICBBTFdBWVNfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5U
SUZJRVIsIHN0YXRlKTsKLSAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3JQcm94eTo6UGxheWJhY2tTdGF0ZUNoYW5nZWQgeyBzdGF0ZSB9LCAwKTsK
KyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQ
cm94eTo6UGxheWJhY2tTdGF0ZUNoYW5nZWQgeyBzdGF0ZSB9KTsKIH0KIAogdm9pZCBSZW1vdGVN
ZWRpYVNlc3Npb25Db29yZGluYXRvcjo6Y29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQoV2ViQ29yZTo6
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZSBzdGF0ZSkKIHsKICAgICBBTFdBWVNfTE9HX0lG
X1BPU1NJQkxFKExPR0lERU5USUZJRVIsIHN0YXRlKTsKLSAgICBtX3BhZ2Uuc2VuZChNZXNzYWdl
czo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6Q29vcmRpbmF0b3JTdGF0ZUNo
YW5nZWQgeyBzdGF0ZSB9LCAwKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6Q29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQgeyBzdGF0
ZSB9KTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6c2Vla1Nlc3Np
b25Ub1RpbWUoZG91YmxlIHRpbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggMjdjYTFiM2NhYWZkNGI5NzdjYjgxZTc4ZmM1ZDFjYWQxZTJkNjkzNi4uOThk
ZGRhMmI3ZTdjMWQwNDVkYTIzMzlhNTljMTNkYzljMDk0Y2VjNyAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDIxLTA0
LTA2ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtt
YWNPU10gQWRkIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yIEFQSSB0ZXN0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQxNDAKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzc2MTcxMTczPgorCisgICAgICAgIFJldmlld2VkIGJ5IEplciBOb2JsZS4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
eGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9UZXN0V2ViS2l0QVBJLnhjc2NoZW1lOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdC5t
bTogQWRkZWQuCisgICAgICAgICgtW19XS01vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvciBsYXN0
U3RhdGVDaGFuZ2VdKToKKyAgICAgICAgKC1bX1dLTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
IGxhc3RNZXRob2RDYWxsZWRdKToKKyAgICAgICAgKC1bX1dLTW9ja01lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yIGlkZW50aWZpZXJdKToKKyAgICAgICAgKC1bX1dLTW9ja01lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yIGpvaW5XaXRoQ29tcGxldGlvbjpdKToKKyAgICAgICAgKC1bX1dLTW9ja01lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yIGxlYXZlXSk6CisgICAgICAgICgtW19XS01vY2tNZWRpYVNlc3Npb25D
b29yZGluYXRvciBzZWVrVG86d2l0aENvbXBsZXRpb246XSk6CisgICAgICAgICgtW19XS01vY2tN
ZWRpYVNlc3Npb25Db29yZGluYXRvciBwbGF5V2l0aENvbXBsZXRpb246XSk6CisgICAgICAgICgt
W19XS01vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvciBwYXVzZVdpdGhDb21wbGV0aW9uOl0pOgor
ICAgICAgICAoLVtfV0tNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3Igc2V0VHJhY2s6d2l0aENv
bXBsZXRpb246XSk6CisgICAgICAgICgtW19XS01vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvciBw
b3NpdGlvblN0YXRlQ2hhbmdlZDpdKToKKyAgICAgICAgKC1bX1dLTW9ja01lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yIHJlYWR5U3RhdGVDaGFuZ2VkOl0pOgorICAgICAgICAoLVtfV0tNb2NrTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3IgcGxheWJhY2tTdGF0ZUNoYW5nZWQ6XSk6CisgICAgICAgICgtW19X
S01vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvciBjb29yZGluYXRvclN0YXRlQ2hhbmdlZDpdKToK
KyAgICAgICAgKC1bX1dLTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yIHNlZWtTZXNzaW9uVG9U
aW1lOl0pOgorICAgICAgICAoLVtfV0tNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IgcGxheVNl
c3Npb25dKToKKyAgICAgICAgKC1bX1dLTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yIHBhdXNl
U2Vzc2lvbl0pOgorICAgICAgICAoLVtfV0tNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3Igc2V0
U2Vzc2lvblRyYWNrOl0pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3JUZXN0OjpjcmVhdGVDb29yZGluYXRvcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpNZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3Q6OndlYlZpZXcgY29uc3QpOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JUZXN0Ojpjb29yZGluYXRvciBj
b25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25Db29yZGluYXRvclRl
c3Q6OmxvYWRQYWdlQW5kQmVjb21lUmVhZHkpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3JUZXN0OjpydW5TY3JpcHRXaXRoVXNlckdlc3R1cmUpOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JUZXN0OjpwbGF5KToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdDo6cGF1
c2UpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JUZXN0
OjpsaXN0ZW5Gb3JFdmVudE1lc3NhZ2VzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yVGVzdDo6ZXZlbnRMaXN0ZW5lcldhc0NhbGxlZCk6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3Q6OmNsZWFyRXZlbnRM
aXN0ZW5lclN0YXRlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yVGVzdDo6ZXhlY3V0ZVVudGlsKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yVGVzdDo6d2FpdEZvckV2ZW50TGlzdGVuZXJUb0JlQ2FsbGVkKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdDo6bGlz
dGVuRm9yTWVzc2FnZXNQb3N0ZWQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3JUZXN0OjpjbGVhck1lc3NhZ2VzUG9zdGVkKToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdDo6bGlzdGVuRm9yU2Vzc2lvbkhh
bmRsZXJNZXNzYWdlcyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25Db29y
ZGluYXRvclRlc3Q6OnNlc3Npb25IYW5kbGVyV2FzQ2FsbGVkKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdDo6d2FpdEZvclNlc3Npb25IYW5kbGVy
VG9CZUNhbGxlZCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25Db29yZGlu
YXRvclRlc3Q6Omxpc3RlbkZvclByb21pc2VNZXNzYWdlcyk6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpNZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3Q6OmNsZWFyUHJvbWlzZU1lc3NhZ2VzKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdDo6cHJv
bWlzZVdhc1Jlc29sdmVkKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yVGVzdDo6cHJvbWlzZVdhc1JlamVjdGVkKToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdDo6d2FpdEZvclByb21pc2UpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL21lZGlhLXJlbW90ZS5odG1sOgorCiAyMDIxLTA0LTA2ICBQaGlsaXBwZSBO
b3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXSBFbmFibGUgQ29n
J3MgR1RLNCBiYWNrZW5kCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDU2ZWNlZmVlNjFkNmQy
YzY1Mzc4NDA4YmZlN2VlZjk0NTY2ODJlOTIuLjM0MzgyNGNhMjk5NjRhN2ZkNDdmZTE1MmY3MTNh
NGYwMzM1NDk2OWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01NCw2ICs1NCw3IEBACiAJ
CTA3NDk5NDQyMUVBNTAzNEIwMDBEQTQ0RiAvKiBvbmRldmljZWNoYW5nZS5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBNDEwRjREMTlB
RjdCRUYwMDJFQkFCNiAvKiBvbmRldmljZWNoYW5nZS5odG1sICovOyB9OwogCQkwNzQ5OTQ0MjFF
QTUwMzRCMDAwREE0NUUgLyogZ2V0VXNlck1lZGlhQXVkaW9WaWRlb0NhcHR1cmUuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTQxMEY0
RDE5QUY3QkVGMDAyRUJBQzUgLyogZ2V0VXNlck1lZGlhQXVkaW9WaWRlb0NhcHR1cmUuaHRtbCAq
LzsgfTsKIAkJMDc0OTk0NTIxRUE1MDM0QjAwMERBNDRFIC8qIGdldFVzZXJNZWRpYTIuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUJB
RjRFMjI1QUM5REI4MDBEODJGMzIgLyogZ2V0VXNlck1lZGlhMi5odG1sICovOyB9OworCQkwNzVB
OUNGNTI2MTc3MjE4MDA2REZBM0EgLyogTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JUZXN0Lm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc1QTlDRjQyNjE3
NzIxNzAwNkRGQTNBIC8qIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdC5tbSAqLzsgfTsKIAkJ
MDc2RTUwN0YxRjQ1MTNENjAwNkU5RjVBIC8qIExvZ2dpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2RTUwN0UxRjQ1MDMxRTAwNkU5RjVBIC8q
IExvZ2dpbmcuY3BwICovOyB9OwogCQkwNzdBNUFGMzIzMDYzOEE2MDBBNzEwNUMgLyogQWNjZXNz
aWJpbGl0eVRlc3RQbHVnaW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwNzQ2NjQ1ODIyRkY2MzA1MDBFMzQ1MUEgLyogQWNjZXNzaWJpbGl0eVRlc3RQ
bHVnaW4ubW0gKi87IH07CiAJCTA3OTQ3NDBEMjVDQTBCREUwMEM1OTdFQiAvKiBNZWRpYVNlc3Np
b24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzk0
NzQwQzI1Q0EwQkRFMDBDNTk3RUIgLyogTWVkaWFTZXNzaW9uLm1tICovOyB9OwpAQCAtMTc2MCw2
ICsxNzYxLDcgQEAKIAkJMDc0NjY0NTgyMkZGNjMwNTAwRTM0NTFBIC8qIEFjY2Vzc2liaWxpdHlU
ZXN0UGx1Z2luLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eVRlc3RQbHVn
aW4ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NDkyQjM5MURGOEFEQTQwMDYz
M0RFMSAvKiBlbnVtZXJhdGVNZWRpYURldmljZXMuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsg
cGF0aCA9IGVudW1lcmF0ZU1lZGlhRGV2aWNlcy5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwNzQ5MkIzQTFERjhBRTJEMDA2MzNERTEgLyogRW51bWVyYXRlTWVkaWFEZXZpY2Vz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVudW1lcmF0ZU1lZGlh
RGV2aWNlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3NUE5Q0Y0MjYxNzcy
MTcwMDZERkEzQSAvKiBNZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3QubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3Qu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NjZERDFGMUE1QUQ1MjAwMDIzRTNC
QiAvKiBQZW5kaW5nQVBJUmVxdWVzdFVSTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBQZW5kaW5nQVBJUmVxdWVzdFVSTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTA3NkU1MDdFMUY0NTAzMUUwMDZFOUY1QSAvKiBMb2dnaW5nLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvZ2dpbmcuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwNzk0NzQwQzI1Q0EwQkRFMDBDNTk3RUIgLyogTWVkaWFTZXNzaW9u
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVkaWFTZXNzaW9u
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDI3NCw2ICs0Mjc2LDcgQEAKIAkJ
CQkzM0RDODkxMDE0MTk1M0EzMDA3NDdFRjcgLyogTG9hZENhbmNlbGVkTm9TZXJ2ZXJSZWRpcmVj
dENhbGxiYWNrLmNwcCAqLywKIAkJCQkzM0RDODkxMzE0MTk1NzlGMDA3NDdFRjcgLyogTG9hZENh
bmNlbGVkTm9TZXJ2ZXJSZWRpcmVjdENhbGxiYWNrX0J1bmRsZS5jcHAgKi8sCiAJCQkJOEFBMjhD
MTkxNkQyRkE3QjAwMkZGNERCIC8qIExvYWRQYWdlT25DcmFzaC5jcHAgKi8sCisJCQkJMDc1QTlD
RjQyNjE3NzIxNzAwNkRGQTNBIC8qIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdC5tbSAqLywK
IAkJCQlDREM5NDQyQzFFRjFGQzA4MDA1OUMzQzQgLyogTWVkaWFTdHJlYW1UcmFja0RldGFjaGVk
Lm1tICovLAogCQkJCTdBNTYyMzEwMUFENUFGM0UwMDk2QjkyMCAvKiBNZW51VHlwZXNGb3JNb3Vz
ZUV2ZW50cy5jcHAgKi8sCiAJCQkJNTFDQjRBRDcxQjNBMDc5QzAwQzFCMUM2IC8qIE1vZGFsQWxl
cnRzU1BJLmNwcCAqLywKQEAgLTU1MDAsNiArNTUwMyw3IEBACiAJCQkJMDdFRjc2RDUyNTQwRkMw
NjAwNTNFRDUzIC8qIE1lZGlhTXV0ZWRTdGF0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQTMx
NTk4MUVENTM2NTEwMDlGNjBEMyAvKiBNZWRpYVBsYXliYWNrU2xlZXBBc3NlcnRpb24ubW0gaW4g
U291cmNlcyAqLywKIAkJCQkwNzk0NzQwRDI1Q0EwQkRFMDBDNTk3RUIgLyogTWVkaWFTZXNzaW9u
Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMDc1QTlDRjUyNjE3NzIxODAwNkRGQTNBIC8qIE1lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yVGVzdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQzk0NDJFMUVG
MUZDMDgwMDU5QzNDNCAvKiBNZWRpYVN0cmVhbVRyYWNrRGV0YWNoZWQubW0gaW4gU291cmNlcyAq
LywKIAkJCQk1MUJFOUU2NjIzNzYwODlGMDBCNEUxMTcgLyogTWVkaWFUeXBlLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0NDRTdFQzUxQTQxMUE3RTAwNDQ3QzRDIC8qIE1lbW9yeUNhY2hlRGlzYWJs
ZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9NZWRpYVNlc3Npb25Db29yZGluYXRv
clRlc3QubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9NZWRpYVNlc3Npb25D
b29yZGluYXRvclRlc3QubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNThlNTExY2U3OTA0NGFmNzIyY2VmZjIyMTMz
NTQ2ZDAyMDQyNWYxNQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0L01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdC5tbQpAQCAtMCwwICsxLDU0MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NF
U1NJT05fQ09PUkRJTkFUT1IpCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1w
b3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1ByaXZh
dGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgorI2ltcG9ydCA8
V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2
YXRlRm9yVGVzdGluZy5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0V4cGVyaW1lbnRhbEZlYXR1cmUu
aD4KKyNpbXBvcnQgPFdlYktpdC9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaD4KKyNpbXBv
cnQgPHd0Zi9CbG9ja1B0ci5oPgorI2ltcG9ydCA8d3RmL0hhc2hTZXQuaD4KKyNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CisjaW1wb3J0IDx3dGYvV2Vh
a09iakNQdHIuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworQGludGVyZmFj
ZSBfV0tNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IgOiBOU09iamVjdCA8X1dLTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3I+CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TU3RyaW5n
ICpsYXN0U3RhdGVDaGFuZ2U7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TU3Ry
aW5nICpsYXN0TWV0aG9kQ2FsbGVkOworQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgZmFpbHND
b21tYW5kczsKKworLSAodm9pZClzZWVrU2Vzc2lvblRvVGltZTooZG91YmxlKXRpbWU7CistICh2
b2lkKXBsYXlTZXNzaW9uOworLSAodm9pZClwYXVzZVNlc3Npb247CistICh2b2lkKXNldFNlc3Np
b25UcmFjazooTlNTdHJpbmcqKXRyYWNrSWRlbnRpZmllcjsKK0BlbmQKKworQGltcGxlbWVudGF0
aW9uIF9XS01vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvciB7CisgICAgUmV0YWluUHRyPE5TU3Ry
aW5nPiBfbGFzdFN0YXRlQ2hhbmdlOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gX2xhc3RNZXRo
b2RDYWxsZWQ7CisgICAgaWQgPF9XS01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yRGVsZWdhdGU+IF9k
ZWxlZ2F0ZTsKK30KKworQHN5bnRoZXNpemUgZGVsZWdhdGU7CisKKy0gKE5TU3RyaW5nICopbGFz
dFN0YXRlQ2hhbmdlCit7CisgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UoX2xhc3RTdGF0ZUNoYW5n
ZSwgQCIiKS5nZXQoKTsKK30KKworLSAoTlNTdHJpbmcgKilsYXN0TWV0aG9kQ2FsbGVkCit7Cisg
ICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UoX2xhc3RNZXRob2RDYWxsZWQsIEAiIikuZ2V0KCk7Cit9
CisKKy0gKE5TU3RyaW5nICopaWRlbnRpZmllcgoreworICAgIHJldHVybiBAIlRlc3RDb29yZGlu
YXRvciI7Cit9CisKKy0gKHZvaWQpam9pbldpdGhDb21wbGV0aW9uOih2b2lkKF4gX05vbm51bGwp
KEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX2xhc3RNZXRob2RDYWxsZWQgPSBAImpv
aW4iOworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF4oKSB7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCFfZmFpbHNDb21tYW5kcyk7CisgICAgfSk7Cit9
CisKKy0gKHZvaWQpbGVhdmUKK3sKKyAgICBfbGFzdE1ldGhvZENhbGxlZCA9IEAibGVhdmUiOwor
fQorCistICh2b2lkKXNlZWtUbzooZG91YmxlKXRpbWUgd2l0aENvbXBsZXRpb246KHZvaWQoXiBf
Tm9ubnVsbCkoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBfbGFzdE1ldGhvZENhbGxl
ZCA9IEAic2Vla1RvIjsKKyAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1
ZSgpLCBeKCkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcighX2ZhaWxzQ29tbWFuZHMpOwor
ICAgIH0pOworfQorCistICh2b2lkKXBsYXlXaXRoQ29tcGxldGlvbjoodm9pZCheIF9Ob25udWxs
KShCT09MKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9sYXN0TWV0aG9kQ2FsbGVkID0gQCJw
bGF5IjsKKyAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeKCkg
eworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcighX2ZhaWxzQ29tbWFuZHMpOworICAgIH0pOwor
fQorCistICh2b2lkKXBhdXNlV2l0aENvbXBsZXRpb246KHZvaWQoXiBfTm9ubnVsbCkoQk9PTCkp
Y29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBfbGFzdE1ldGhvZENhbGxlZCA9IEAicGF1c2UiOwor
ICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF4oKSB7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCFfZmFpbHNDb21tYW5kcyk7CisgICAgfSk7Cit9CisKKy0g
KHZvaWQpc2V0VHJhY2s6KE5TU3RyaW5nKil0cmFja0lkZW50aWZpZXIgd2l0aENvbXBsZXRpb246
KHZvaWQoXiBfTm9ubnVsbCkoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBfbGFzdE1l
dGhvZENhbGxlZCA9IEAic2V0VHJhY2siOworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dl
dF9tYWluX3F1ZXVlKCksIF4oKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCFfZmFpbHND
b21tYW5kcyk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQpcG9zaXRpb25TdGF0ZUNoYW5nZWQ6KG51
bGxhYmxlIF9XS01lZGlhUG9zaXRpb25TdGF0ZSAqKXN0YXRlCit7CisgICAgX2xhc3RTdGF0ZUNo
YW5nZSA9IEAicG9zaXRpb25TdGF0ZUNoYW5nZWQiOworfQorCistICh2b2lkKXJlYWR5U3RhdGVD
aGFuZ2VkOihfV0tNZWRpYVNlc3Npb25SZWFkeVN0YXRlKXN0YXRlCit7CisgICAgX2xhc3RTdGF0
ZUNoYW5nZSA9IEAicmVhZHlTdGF0ZUNoYW5nZWQiOworfQorCistICh2b2lkKXBsYXliYWNrU3Rh
dGVDaGFuZ2VkOihfV0tNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRlKXN0YXRlCit7CisgICAgX2xh
c3RTdGF0ZUNoYW5nZSA9IEAicGxheWJhY2tTdGF0ZUNoYW5nZWQiOworfQorCistICh2b2lkKWNv
b3JkaW5hdG9yU3RhdGVDaGFuZ2VkOihfV0tNZWRpYVNlc3Npb25Db29yZGluYXRvclN0YXRlKXN0
YXRlCit7CisgICAgX2xhc3RTdGF0ZUNoYW5nZSA9IEAiY29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQi
OworfQorCistICh2b2lkKXNlZWtTZXNzaW9uVG9UaW1lOihkb3VibGUpdGltZQoreworICAgIFtz
ZWxmLmRlbGVnYXRlIHNlZWtTZXNzaW9uVG9UaW1lOnRpbWUgd2l0aENvbXBsZXRpb246XihCT09M
IHJlc3VsdCkgeworICAgICAgICBfbGFzdE1ldGhvZENhbGxlZCA9IEAic2Vla1Nlc3Npb25Ub1Rp
bWUiOworICAgIH1dOworfQorCistICh2b2lkKXBsYXlTZXNzaW9uCit7CisgICAgW3NlbGYuZGVs
ZWdhdGUgcGxheVNlc3Npb25XaXRoQ29tcGxldGlvbjpeKEJPT0wgcmVzdWx0KSB7CisgICAgICAg
IF9sYXN0TWV0aG9kQ2FsbGVkID0gQCJwbGF5U2Vzc2lvbiI7CisgICAgfV07Cit9CisKKy0gKHZv
aWQpcGF1c2VTZXNzaW9uCit7CisgICAgW3NlbGYuZGVsZWdhdGUgcGF1c2VTZXNzaW9uV2l0aENv
bXBsZXRpb246XihCT09MIHJlc3VsdCkgeworICAgICAgICBfbGFzdE1ldGhvZENhbGxlZCA9IEAi
cGF1c2VTZXNzaW9uIjsKKyAgICB9XTsKK30KKworLSAodm9pZClzZXRTZXNzaW9uVHJhY2s6KE5T
U3RyaW5nKil0cmFja0lkZW50aWZpZXIKK3sKKyAgICBbc2VsZi5kZWxlZ2F0ZSBzZXRTZXNzaW9u
VHJhY2s6dHJhY2tJZGVudGlmaWVyIHdpdGhDb21wbGV0aW9uOl4oQk9PTCByZXN1bHQpIHsKKyAg
ICAgICAgX2xhc3RNZXRob2RDYWxsZWQgPSBAInNldFNlc3Npb25UcmFjayI7CisgICAgfV07Cit9
CisKK0BlbmQKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitjbGFzcyBNZWRpYVNlc3Np
b25Db29yZGluYXRvclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CitwdWJsaWM6CisgICAg
dm9pZCBTZXRVcCgpIGZpbmFsCisgICAgeworICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgICAgICBh
dXRvIHByZWZlcmVuY2VzID0gW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdOworCisgICAgICAg
IGZvciAoX1dLRXhwZXJpbWVudGFsRmVhdHVyZSAqZmVhdHVyZSBpbiBbV0tQcmVmZXJlbmNlcyBf
ZXhwZXJpbWVudGFsRmVhdHVyZXNdKSB7CisgICAgICAgICAgICBpZiAoW2ZlYXR1cmUua2V5IGlz
RXF1YWxUb1N0cmluZzpAIk1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yRW5hYmxlZCJdKQorICAgICAg
ICAgICAgICAgIFtwcmVmZXJlbmNlcyBfc2V0RW5hYmxlZDpZRVMgZm9yRmVhdHVyZTpmZWF0dXJl
XTsKKyAgICAgICAgICAgIGlmIChbZmVhdHVyZS5rZXkgaXNFcXVhbFRvU3RyaW5nOkAiTWVkaWFT
ZXNzaW9uRW5hYmxlZCJdKQorICAgICAgICAgICAgICAgIFtwcmVmZXJlbmNlcyBfc2V0RW5hYmxl
ZDpZRVMgZm9yRmVhdHVyZTpmZWF0dXJlXTsKKyAgICAgICAgfQorCisgICAgICAgIF93ZWJWaWV3
ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFr
ZSgwLCAwLCA0MDAsIDQwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Cisg
ICAgfQorCisgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCisgICAgeworICAgICAgICBbX3dl
YlZpZXcgY2xlYXJNZXNzYWdlSGFuZGxlcnM6X21lc3NhZ2VIYW5kbGVycy5nZXQoKV07CisgICAg
fQorCisgICAgdm9pZCBjcmVhdGVDb29yZGluYXRvcigpCisgICAgeworICAgICAgICBfY29vcmRp
bmF0b3IgPSBbW19XS01vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvciBhbGxvY10gaW5pdF07CisK
KyAgICAgICAgX19ibG9jayBib29sIHJlc3VsdCA9IGZhbHNlOworICAgICAgICBfX2Jsb2NrIGJv
b2wgZG9uZSA9IGZhbHNlOworICAgICAgICBbd2ViVmlldygpIF9jcmVhdGVNZWRpYVNlc3Npb25D
b29yZGluYXRvckZvclRlc3Rpbmc6KGlkIDxfV0tNZWRpYVNlc3Npb25Db29yZGluYXRvcj4pX2Nv
b3JkaW5hdG9yLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oQk9PTCBzdWNjZXNzKSB7CisgICAg
ICAgICAgICByZXN1bHQgPSBzdWNjZXNzOworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAg
ICAgIH1dOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisgICAg
ICAgIGxpc3RlbkZvckV2ZW50TWVzc2FnZXMoeyAiY29vcmRpbmF0b3JjaGFuZ2UiX3MgfSk7CisK
KyAgICAgICAgRVhQRUNUX1RSVUUocmVzdWx0KTsKKyAgICAgICAgaWYgKCFyZXN1bHQpCisgICAg
ICAgICAgICBOU0xvZyhAIi1bX2NyZWF0ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yRm9yVGVzdGlu
Zzpjb21wbGV0aW9uSGFuZGxlcjpdIGZhaWxlZCEiKTsKKworICAgICAgICB3YWl0Rm9yRXZlbnRM
aXN0ZW5lclRvQmVDYWxsZWQoImNvb3JkaW5hdG9yY2hhbmdlIl9zKTsKKyAgICAgICAgQVNTRVJU
X1RSVUUoZXZlbnRMaXN0ZW5lcldhc0NhbGxlZCgiY29vcmRpbmF0b3JjaGFuZ2UiX3MpKTsKKyAg
ICB9CisKKyAgICBUZXN0V0tXZWJWaWV3KiB3ZWJWaWV3KCkgY29uc3QgeyByZXR1cm4gX3dlYlZp
ZXcuZ2V0KCk7IH0KKyAgICBfV0tNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IqIGNvb3JkaW5h
dG9yKCkgY29uc3QgeyByZXR1cm4gX2Nvb3JkaW5hdG9yLmdldCgpOyB9CisKKyAgICB2b2lkIGxv
YWRQYWdlQW5kQmVjb21lUmVhZHkoY29uc3QgU3RyaW5nJiBwYWdlTmFtZSkKKyAgICB7CisgICAg
ICAgIFtfd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6cGFnZU5hbWVdOwor
CisgICAgICAgIGJvb2wgY2FucGxheXRocm91Z2ggPSBmYWxzZTsKKyAgICAgICAgW3dlYlZpZXco
KSBwZXJmb3JtQWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOkAiY2FucGxheXRocm91Z2ggZXZlbnQiIGFj
dGlvbjpbJl0geworICAgICAgICAgICAgY2FucGxheXRocm91Z2ggPSB0cnVlOworICAgICAgICB9
XTsKKyAgICAgICAgcnVuU2NyaXB0V2l0aFVzZXJHZXN0dXJlKCJsb2FkKCkiKTsKKyAgICAgICAg
VXRpbDo6cnVuKCZjYW5wbGF5dGhyb3VnaCk7CisgICAgfQorCisgICAgdm9pZCBydW5TY3JpcHRX
aXRoVXNlckdlc3R1cmUoY29uc3QgU3RyaW5nJiBzY3JpcHQpCisgICAgeworICAgICAgICBbX3dl
YlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdFdpdGhVc2VyR2VzdHVyZTpzY3JpcHRd
OworICAgIH0KKworICAgIHZvaWQgcGxheSgpCisgICAgeworICAgICAgICBib29sIHBsYXlpbmcg
PSBmYWxzZTsKKyAgICAgICAgW193ZWJWaWV3IHBlcmZvcm1BZnRlclJlY2VpdmluZ01lc3NhZ2U6
QCJwbGF5IGV2ZW50IiBhY3Rpb246WyZdIHsgcGxheWluZyA9IHRydWU7IH1dOworICAgICAgICBy
dW5TY3JpcHRXaXRoVXNlckdlc3R1cmUoImF1ZGlvLnBsYXkoKSIpOworICAgICAgICBVdGlsOjpy
dW4oJnBsYXlpbmcpOworICAgIH0KKworICAgIHZvaWQgcGF1c2UoKQorICAgIHsKKyAgICAgICAg
Ym9vbCBwYXVzZWQgPSBmYWxzZTsKKyAgICAgICAgW193ZWJWaWV3IHBlcmZvcm1BZnRlclJlY2Vp
dmluZ01lc3NhZ2U6QCJwYXVzZSBldmVudCIgYWN0aW9uOlsmXSB7IHBhdXNlZCA9IHRydWU7IH1d
OworICAgICAgICBydW5TY3JpcHRXaXRoVXNlckdlc3R1cmUoImF1ZGlvLnBhdXNlKCkiKTsKKyAg
ICAgICAgVXRpbDo6cnVuKCZwYXVzZWQpOworICAgIH0KKworICAgIHZvaWQgbGlzdGVuRm9yRXZl
bnRNZXNzYWdlcyhzdGQ6OmluaXRpYWxpemVyX2xpc3Q8Y29uc3QgY2hhcio+IGV2ZW50cykKKyAg
ICB7CisgICAgICAgIGZvciAoYXV0byogZXZlbnQgOiBldmVudHMpIHsKKyAgICAgICAgICAgIGF1
dG8gZXZlbnRNZXNzYWdlID0gbWFrZVN0cmluZyhldmVudCwgIiBldmVudCIpOworICAgICAgICAg
ICAgW3dlYlZpZXcoKSBwZXJmb3JtQWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOmV2ZW50TWVzc2FnZSBh
Y3Rpb246W3RoaXMsIGV2ZW50TWVzc2FnZSA9IFdURk1vdmUoZXZlbnRNZXNzYWdlKV0geworICAg
ICAgICAgICAgICAgIF9ldmVudExpc3RlbmVyc0NhbGxlZC5hZGQoZXZlbnRNZXNzYWdlKTsKKyAg
ICAgICAgICAgIH1dOworICAgICAgICB9CisgICAgfQorCisgICAgYm9vbCBldmVudExpc3RlbmVy
V2FzQ2FsbGVkKGNvbnN0IFN0cmluZyYgZXZlbnQpCisgICAgeworICAgICAgICByZXR1cm4gX2V2
ZW50TGlzdGVuZXJzQ2FsbGVkLmNvbnRhaW5zKG1ha2VTdHJpbmcoZXZlbnQsICIgZXZlbnQiKSk7
CisgICAgfQorCisgICAgdm9pZCBjbGVhckV2ZW50TGlzdGVuZXJTdGF0ZSgpCisgICAgeworICAg
ICAgICBfZXZlbnRMaXN0ZW5lcnNDYWxsZWQuY2xlYXIoKTsKKyAgICB9CisKKyAgICB2b2lkIGV4
ZWN1dGVVbnRpbChGdW5jdGlvbjxib29sKCk+JiYgY2FsbGJhY2ssIGludCByZXRyaWVzID0gNTAp
CisgICAgeworICAgICAgICBpbnQgdHJpZXMgPSAwOworICAgICAgICBkbyB7CisgICAgICAgICAg
ICBpZiAoY2FsbGJhY2soKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBV
dGlsOjpzbGVlcCgwLjEpOworICAgICAgICB9IHdoaWxlICgrK3RyaWVzIDw9IHJldHJpZXMpOwor
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2b2lkIHdhaXRGb3JFdmVudExpc3RlbmVy
VG9CZUNhbGxlZChjb25zdCBTdHJpbmcmIGV2ZW50KQorICAgIHsKKyAgICAgICAgZXhlY3V0ZVVu
dGlsKFsmXSB7CisgICAgICAgICAgICByZXR1cm4gZXZlbnRMaXN0ZW5lcldhc0NhbGxlZChldmVu
dCk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIHZvaWQgbGlzdGVuRm9yTWVzc2FnZXNQb3N0
ZWQoc3RkOjppbml0aWFsaXplcl9saXN0PGNvbnN0IGNoYXIqPiBoYW5kbGVycywgY29uc3QgY2hh
ciogc3VmZml4KQorICAgIHsKKyAgICAgICAgZm9yIChhdXRvKiBoYW5kbGVyIDogaGFuZGxlcnMp
IHsKKyAgICAgICAgICAgIGF1dG8gaGFuZGxlck1lc3NhZ2UgPSBtYWtlU3RyaW5nKGhhbmRsZXIs
IHN1ZmZpeCk7CisgICAgICAgICAgICBbX21lc3NhZ2VIYW5kbGVycyBhZGRPYmplY3Q6aGFuZGxl
ck1lc3NhZ2VdOworICAgICAgICAgICAgW3dlYlZpZXcoKSBwZXJmb3JtQWZ0ZXJSZWNlaXZpbmdN
ZXNzYWdlOmhhbmRsZXJNZXNzYWdlIGFjdGlvbjpbdGhpcywgaGFuZGxlck1lc3NhZ2UgPSBXVEZN
b3ZlKGhhbmRsZXJNZXNzYWdlKV0geworICAgICAgICAgICAgICAgIF9zZXNzaW9uTWVzc2FnZXNQ
b3N0ZWQuYWRkKGhhbmRsZXJNZXNzYWdlKTsKKyAgICAgICAgICAgIH1dOworICAgICAgICB9Cisg
ICAgfQorCisgICAgdm9pZCBjbGVhck1lc3NhZ2VzUG9zdGVkKCkKKyAgICB7CisgICAgICAgIF9z
ZXNzaW9uTWVzc2FnZXNQb3N0ZWQuY2xlYXIoKTsKKyAgICB9CisKKyAgICB2b2lkIGxpc3RlbkZv
clNlc3Npb25IYW5kbGVyTWVzc2FnZXMoc3RkOjppbml0aWFsaXplcl9saXN0PGNvbnN0IGNoYXIq
PiBoYW5kbGVycykKKyAgICB7CisgICAgICAgIGxpc3RlbkZvck1lc3NhZ2VzUG9zdGVkKGhhbmRs
ZXJzLCAiIGhhbmRsZXIiKTsKKyAgICB9CisKKyAgICBib29sIHNlc3Npb25IYW5kbGVyV2FzQ2Fs
bGVkKGNvbnN0IFN0cmluZyYgaGFuZGxlcikKKyAgICB7CisgICAgICAgIHJldHVybiBfc2Vzc2lv
bk1lc3NhZ2VzUG9zdGVkLmNvbnRhaW5zKG1ha2VTdHJpbmcoaGFuZGxlciwgIiBoYW5kbGVyIikp
OworICAgIH0KKworICAgIHZvaWQgd2FpdEZvclNlc3Npb25IYW5kbGVyVG9CZUNhbGxlZChjb25z
dCBTdHJpbmcmIGhhbmRsZXIpCisgICAgeworICAgICAgICBleGVjdXRlVW50aWwoWyZdIHsKKyAg
ICAgICAgICAgIHJldHVybiBzZXNzaW9uSGFuZGxlcldhc0NhbGxlZChoYW5kbGVyKTsKKyAgICAg
ICAgfSk7CisgICAgfQorCisgICAgdm9pZCBsaXN0ZW5Gb3JQcm9taXNlTWVzc2FnZXMoc3RkOjpp
bml0aWFsaXplcl9saXN0PGNvbnN0IGNoYXIqPiBoYW5kbGVycykKKyAgICB7CisgICAgICAgIGxp
c3RlbkZvck1lc3NhZ2VzUG9zdGVkKGhhbmRsZXJzLCAiIHJlc29sdmVkIik7CisgICAgICAgIGxp
c3RlbkZvck1lc3NhZ2VzUG9zdGVkKGhhbmRsZXJzLCAiIHJlamVjdGVkIik7CisgICAgfQorCisg
ICAgdm9pZCBjbGVhclByb21pc2VNZXNzYWdlcyhjb25zdCBTdHJpbmcmIHByb21pc2UpCisgICAg
eworICAgICAgICBfc2Vzc2lvbk1lc3NhZ2VzUG9zdGVkLnJlbW92ZShtYWtlU3RyaW5nKHByb21p
c2UsICIgcmVzb2x2ZWQiKSk7CisgICAgICAgIF9zZXNzaW9uTWVzc2FnZXNQb3N0ZWQucmVtb3Zl
KG1ha2VTdHJpbmcocHJvbWlzZSwgIiByZWplY3RlZCIpKTsKKyAgICB9CisKKyAgICBib29sIHBy
b21pc2VXYXNSZXNvbHZlZChjb25zdCBTdHJpbmcmIHByb21pc2UpCisgICAgeworICAgICAgICBy
ZXR1cm4gX3Nlc3Npb25NZXNzYWdlc1Bvc3RlZC5jb250YWlucyhtYWtlU3RyaW5nKHByb21pc2Us
ICIgcmVzb2x2ZWQiKSk7CisgICAgfQorCisgICAgYm9vbCBwcm9taXNlV2FzUmVqZWN0ZWQoY29u
c3QgU3RyaW5nJiBwcm9taXNlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIF9zZXNzaW9uTWVzc2Fn
ZXNQb3N0ZWQuY29udGFpbnMobWFrZVN0cmluZyhwcm9taXNlLCAiIHJlamVjdGVkIikpOworICAg
IH0KKworICAgIHZvaWQgd2FpdEZvclByb21pc2UoY29uc3QgU3RyaW5nJiBwcm9taXNlKQorICAg
IHsKKyAgICAgICAgZXhlY3V0ZVVudGlsKFsmXSB7CisgICAgICAgICAgICByZXR1cm4gcHJvbWlz
ZVdhc1Jlc29sdmVkKHByb21pc2UpIHx8IHByb21pc2VXYXNSZWplY3RlZChwcm9taXNlKTsKKyAg
ICAgICAgfSwgMjAwKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgUmV0YWluUHRyPF9XS01vY2tN
ZWRpYVNlc3Npb25Db29yZGluYXRvcj4gX2Nvb3JkaW5hdG9yOworICAgIFJldGFpblB0cjxXS1dl
YlZpZXdDb25maWd1cmF0aW9uPiBfY29uZmlndXJhdGlvbjsKKyAgICBSZXRhaW5QdHI8VGVzdFdL
V2ViVmlldz4gX3dlYlZpZXc7CisgICAgSGFzaFNldDxTdHJpbmc+IF9zZXNzaW9uTWVzc2FnZXNQ
b3N0ZWQ7CisgICAgSGFzaFNldDxTdHJpbmc+IF9ldmVudExpc3RlbmVyc0NhbGxlZDsKKyAgICBS
ZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IF9tZXNzYWdlSGFuZGxlcnM7Cit9OworCitURVNUX0Yo
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JUZXN0LCBKb2luQW5kTGVhdmUpCit7CisgICAgbG9hZFBh
Z2VBbmRCZWNvbWVSZWFkeSgibWVkaWEtcmVtb3RlIl9zKTsKKyAgICBsaXN0ZW5Gb3JQcm9taXNl
TWVzc2FnZXMoeyAiam9pbiJfcyB9KTsKKworICAgIGNyZWF0ZUNvb3JkaW5hdG9yKCk7CisKKyAg
ICBSZXRhaW5QdHI8TlNTdHJpbmc+IHN0YXRlID0gW3dlYlZpZXcoKSBzdHJpbmdCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0OkAibmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5zdGF0ZSJd
OworICAgIEVYUEVDVF9TVFJFUSgid2FpdGluZyIsIFtzdGF0ZSBVVEY4U3RyaW5nXSk7CisKKyAg
ICAvLyAnam9pbigpJyBzaG91bGQgZmFpbCBpZiB0aGUgcmVtb3RlIGNvb3JkaW5hdG9yIHJlZnVz
ZXMuCisgICAgY29vcmRpbmF0b3IoKS5mYWlsc0NvbW1hbmRzID0gWUVTOworICAgIFt3ZWJWaWV3
KCkgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImpvaW5TZXNzaW9uKCkiXTsKKyAgICB3
YWl0Rm9yUHJvbWlzZSgiam9pbiJfcyk7CisgICAgQVNTRVJUX1RSVUUocHJvbWlzZVdhc1JlamVj
dGVkKCJqb2luIl9zKSk7CisgICAgY2xlYXJQcm9taXNlTWVzc2FnZXMoImpvaW4iX3MpOworICAg
IEVYUEVDVF9TVFJFUSgiam9pbiIsIGNvb3JkaW5hdG9yKCkubGFzdE1ldGhvZENhbGxlZC5VVEY4
U3RyaW5nKTsKKworICAgIC8vIEFuZCBpdCBzaG91ZCBzdWNjZWVkIGlmIGl0IGFsbG93cyBpdC4K
KyAgICBjb29yZGluYXRvcigpLmZhaWxzQ29tbWFuZHMgPSBOTzsKKyAgICBbd2ViVmlldygpIG9i
amVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJqb2luU2Vzc2lvbigpIl07CisgICAgd2FpdEZv
clByb21pc2UoImpvaW4iX3MpOworICAgIEFTU0VSVF9UUlVFKHByb21pc2VXYXNSZXNvbHZlZCgi
am9pbiJfcykpOworICAgIGNsZWFyUHJvbWlzZU1lc3NhZ2VzKCJqb2luIl9zKTsKKyAgICBFWFBF
Q1RfU1RSRVEoImpvaW4iLCBjb29yZGluYXRvcigpLmxhc3RNZXRob2RDYWxsZWQuVVRGOFN0cmlu
Zyk7CisKKyAgICBzdGF0ZSA9IFt3ZWJWaWV3KCkgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dDpAIm5hdmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3Iuc3RhdGUiXTsKKyAgICBFWFBF
Q1RfU1RSRVEoImpvaW5lZCIsIFtzdGF0ZSBVVEY4U3RyaW5nXSk7CisKKyAgICBbd2ViVmlldygp
IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNv
b3JkaW5hdG9yLmxlYXZlKCkiXTsKKyAgICBTdHJpbmcgbGFzdE1ldGhvZENhbGxlZDsKKyAgICBl
eGVjdXRlVW50aWwoWyZdIHsKKyAgICAgICAgbGFzdE1ldGhvZENhbGxlZCA9IGNvb3JkaW5hdG9y
KCkubGFzdE1ldGhvZENhbGxlZDsKKyAgICAgICAgcmV0dXJuIGxhc3RNZXRob2RDYWxsZWQgPT0g
ImxlYXZlIjsKKyAgICB9KTsKKyAgICBFWFBFQ1RfU1RSRVEoImxlYXZlIiwgbGFzdE1ldGhvZENh
bGxlZC51dGY4KCkuZGF0YSgpKTsKKworICAgIHN0YXRlID0gW3dlYlZpZXcoKSBzdHJpbmdCeUV2
YWx1YXRpbmdKYXZhU2NyaXB0OkAibmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5z
dGF0ZSJdOworICAgIEVYUEVDVF9TVFJFUSgiY2xvc2VkIiwgW3N0YXRlIFVURjhTdHJpbmddKTsK
KworICAgIC8vIEl0IHNob3VsZG4ndCBiZSBwb3NzaWJsZSB0byByZS1qb2luIGEgY2xvc2UgY29v
cmRpbmF0b3IuCisgICAgW3dlYlZpZXcoKSBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAi
am9pblNlc3Npb24oKSJdOworICAgIHdhaXRGb3JQcm9taXNlKCJqb2luIl9zKTsKKyAgICBBU1NF
UlRfVFJVRShwcm9taXNlV2FzUmVqZWN0ZWQoImpvaW4iX3MpKTsKKyAgICBFWFBFQ1RfU1RSRVEo
IiIsIGNvb3JkaW5hdG9yKCkubGFzdE1ldGhvZENhbGxlZC5VVEY4U3RyaW5nKTsKK30KKworVEVT
VF9GKE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdCwgU3RhdGVDaGFuZ2VzKQoreworICAgIGxv
YWRQYWdlQW5kQmVjb21lUmVhZHkoIm1lZGlhLXJlbW90ZSJfcyk7CisKKyAgICBsaXN0ZW5Gb3JQ
cm9taXNlTWVzc2FnZXMoeyAiam9pbiJfcyB9KTsKKyAgICBjcmVhdGVDb29yZGluYXRvcigpOwor
ICAgIFt3ZWJWaWV3KCkgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImpvaW5TZXNzaW9u
KCkiXTsKKyAgICB3YWl0Rm9yUHJvbWlzZSgiam9pbiJfcyk7CisgICAgQVNTRVJUX1RSVUUocHJv
bWlzZVdhc1Jlc29sdmVkKCJqb2luIl9zKSk7CisgICAgY2xlYXJQcm9taXNlTWVzc2FnZXMoImpv
aW4iX3MpOworICAgIEVYUEVDVF9TVFJFUSgiam9pbiIsIGNvb3JkaW5hdG9yKCkubGFzdE1ldGhv
ZENhbGxlZC5VVEY4U3RyaW5nKTsKKworICAgIFt3ZWJWaWV3KCkgb2JqZWN0QnlFdmFsdWF0aW5n
SmF2YVNjcmlwdDpAIm5hdmlnYXRvci5tZWRpYVNlc3Npb24uc2V0UG9zaXRpb25TdGF0ZSh7IGR1
cmF0aW9uOiAxLCBwbGF5YmFja1JhdGU6IDEsIHBvc2l0aW9uOiAwIH0pIl07CisgICAgU3RyaW5n
IGxhc3RTdGF0ZUNoYW5nZTsKKyAgICBleGVjdXRlVW50aWwoWyZdIHsKKyAgICAgICAgbGFzdFN0
YXRlQ2hhbmdlID0gY29vcmRpbmF0b3IoKS5sYXN0U3RhdGVDaGFuZ2U7CisgICAgICAgIHJldHVy
biBsYXN0U3RhdGVDaGFuZ2UgPT0gInBvc2l0aW9uU3RhdGVDaGFuZ2VkIjsKKyAgICB9KTsKKyAg
ICBFWFBFQ1RfU1RSRVEoInBvc2l0aW9uU3RhdGVDaGFuZ2VkIiwgbGFzdFN0YXRlQ2hhbmdlLnV0
ZjgoKS5kYXRhKCkpOworCisgICAgZm9yIChOU1N0cmluZyAqc3RhdGUgaW4gQFsgQCJoYXZlTWV0
YWRhdGEiLCBAImhhdmVDdXJyZW50RGF0YSIsIEAiaGF2ZUZ1dHVyZURhdGEiLCBAImhhdmVFbm91
Z2hEYXRhIiwgQCJoYXZlTm90aGluZyIgXSkgeworICAgICAgICBbd2ViVmlldygpIG9iamVjdEJ5
RXZhbHVhdGluZ0phdmFTY3JpcHQ6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJuYXZpZ2F0
b3IubWVkaWFTZXNzaW9uLnJlYWR5U3RhdGUgPSAnJUAnIiwgc3RhdGVdXTsKKyAgICAgICAgZXhl
Y3V0ZVVudGlsKFsmXSB7CisgICAgICAgICAgICBsYXN0U3RhdGVDaGFuZ2UgPSBjb29yZGluYXRv
cigpLmxhc3RTdGF0ZUNoYW5nZTsKKyAgICAgICAgICAgIHJldHVybiBsYXN0U3RhdGVDaGFuZ2Ug
PT0gInJlYWR5U3RhdGVDaGFuZ2VkIjsKKyAgICAgICAgfSk7CisgICAgICAgIEVYUEVDVF9TVFJF
USgicmVhZHlTdGF0ZUNoYW5nZWQiLCBsYXN0U3RhdGVDaGFuZ2UudXRmOCgpLmRhdGEoKSk7CisK
KyAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBjdXJyZW50U3RhdGUgPSBbd2ViVmlldygpIHN0
cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLnJlYWR5
U3RhdGUiXTsKKyAgICAgICAgRVhQRUNUX1NUUkVRKHN0YXRlLlVURjhTdHJpbmcsIGN1cnJlbnRT
dGF0ZS5nZXQoKS5VVEY4U3RyaW5nKTsKKyAgICB9CisKKyAgICBmb3IgKE5TU3RyaW5nICpzdGF0
ZSBpbiBAWyBAInBhdXNlZCIsIEAicGxheWluZyIsIEAibm9uZSIgXSkgeworICAgICAgICBbd2Vi
VmlldygpIG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6W05TU3RyaW5nIHN0cmluZ1dpdGhG
b3JtYXQ6QCJuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLnBsYXliYWNrU3RhdGUgPSAnJUAnIiwgc3Rh
dGVdXTsKKyAgICAgICAgZXhlY3V0ZVVudGlsKFsmXSB7CisgICAgICAgICAgICBsYXN0U3RhdGVD
aGFuZ2UgPSBjb29yZGluYXRvcigpLmxhc3RTdGF0ZUNoYW5nZTsKKyAgICAgICAgICAgIHJldHVy
biBsYXN0U3RhdGVDaGFuZ2UgPT0gInBsYXliYWNrU3RhdGVDaGFuZ2VkIjsKKyAgICAgICAgfSk7
CisgICAgICAgIEVYUEVDVF9TVFJFUSgicGxheWJhY2tTdGF0ZUNoYW5nZWQiLCBsYXN0U3RhdGVD
aGFuZ2UudXRmOCgpLmRhdGEoKSk7CisKKyAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBjdXJy
ZW50U3RhdGUgPSBbd2ViVmlldygpIHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJuYXZp
Z2F0b3IubWVkaWFTZXNzaW9uLnBsYXliYWNrU3RhdGUiXTsKKyAgICAgICAgRVhQRUNUX1NUUkVR
KHN0YXRlLlVURjhTdHJpbmcsIGN1cnJlbnRTdGF0ZS5nZXQoKS5VVEY4U3RyaW5nKTsKKyAgICB9
CisKKyAgICBbd2ViVmlldygpIG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJuYXZpZ2F0
b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yLmxlYXZlKCkiXTsKKyAgICBTdHJpbmcgbGFzdE1l
dGhvZENhbGxlZDsKKyAgICBleGVjdXRlVW50aWwoWyZdIHsKKyAgICAgICAgbGFzdFN0YXRlQ2hh
bmdlID0gY29vcmRpbmF0b3IoKS5sYXN0U3RhdGVDaGFuZ2U7CisgICAgICAgIHJldHVybiBsYXN0
U3RhdGVDaGFuZ2UgPT0gImNvb3JkaW5hdG9yU3RhdGVDaGFuZ2VkIjsKKyAgICB9KTsKKyAgICBF
WFBFQ1RfU1RSRVEoImNvb3JkaW5hdG9yU3RhdGVDaGFuZ2VkIiwgbGFzdFN0YXRlQ2hhbmdlLnV0
ZjgoKS5kYXRhKCkpOworfQorCitURVNUX0YoTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JUZXN0LCBD
b29yZGluYXRvck1ldGhvZENhbGxiYWNrcykKK3sKKyAgICBsb2FkUGFnZUFuZEJlY29tZVJlYWR5
KCJtZWRpYS1yZW1vdGUiX3MpOworCisgICAgbGlzdGVuRm9yUHJvbWlzZU1lc3NhZ2VzKHsgImpv
aW4iX3MgfSk7CisgICAgY3JlYXRlQ29vcmRpbmF0b3IoKTsKKyAgICBbd2ViVmlldygpIG9iamVj
dEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJqb2luU2Vzc2lvbigpIl07CisgICAgd2FpdEZvclBy
b21pc2UoImpvaW4iX3MpOworICAgIEFTU0VSVF9UUlVFKHByb21pc2VXYXNSZXNvbHZlZCgiam9p
biJfcykpOworICAgIGNsZWFyUHJvbWlzZU1lc3NhZ2VzKCJqb2luIl9zKTsKKyAgICBFWFBFQ1Rf
U1RSRVEoImpvaW4iLCBjb29yZGluYXRvcigpLmxhc3RNZXRob2RDYWxsZWQuVVRGOFN0cmluZyk7
CisKKyAgICBsaXN0ZW5Gb3JQcm9taXNlTWVzc2FnZXMoeyAicGxheSJfcywgInBhdXNlIl9zLCAi
c2Vla1RvIl9zLCAic2V0VHJhY2siX3MgfSk7CisgICAgYXV0byBtZXRob2RzQW5kQXJncyA9IEBb
CisgICAgICAgIEBbIEAicGxheSIsIEAiIiBdLAorICAgICAgICBAWyBAInBhdXNlIiwgQCIiIF0s
CisgICAgICAgIEBbIEAic2Vla1RvIiwgQCIxMCIgXSwKKyAgICAgICAgQFsgQCJzZXRUcmFjayIs
IEAiJ1xcJ3Rlc3QtdHJhY2stMVxcJyciIF0sCisgICAgXTsKKyAgICBmb3IgKE5TQXJyYXkgKm1l
dGhvZEluZm8gaW4gbWV0aG9kc0FuZEFyZ3MpIHsKKyAgICAgICAgTlNTdHJpbmcgKm1ldGhvZCA9
IG1ldGhvZEluZm9bMF07CisgICAgICAgIE5TU3RyaW5nICphcmdzID0gbWV0aG9kSW5mb1sxXTsK
KyAgICAgICAgYXV0byBzdHIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImNhbGxNZXRo
b2QoJyVAJywgJUApIiwgbWV0aG9kLCBhcmdzXTsKKyAgICAgICAgW3dlYlZpZXcoKSBvYmplY3RC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0OnN0cl07CisgICAgICAgIHdhaXRGb3JQcm9taXNlKG1ldGhv
ZCk7CisgICAgICAgIEFTU0VSVF9UUlVFKHByb21pc2VXYXNSZXNvbHZlZChtZXRob2QpKTsKKyAg
ICAgICAgY2xlYXJQcm9taXNlTWVzc2FnZXMobWV0aG9kKTsKKyAgICAgICAgRVhQRUNUX1NUUkVR
KG1ldGhvZC5VVEY4U3RyaW5nLCBjb29yZGluYXRvcigpLmxhc3RNZXRob2RDYWxsZWQuVVRGOFN0
cmluZyk7CisgICAgfQorfQorCitURVNUX0YoTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JUZXN0LCBD
YWxsU2Vzc2lvbk1ldGhvZHMpCit7CisgICAgbG9hZFBhZ2VBbmRCZWNvbWVSZWFkeSgibWVkaWEt
cmVtb3RlIl9zKTsKKyAgICBsaXN0ZW5Gb3JTZXNzaW9uSGFuZGxlck1lc3NhZ2VzKHsgInBsYXki
X3MsICJwYXVzZSJfcywgInNlZWt0byJfcywgIm5leHR0cmFjayJfcyB9KTsKKworICAgIGxpc3Rl
bkZvclByb21pc2VNZXNzYWdlcyh7ICJqb2luIl9zIH0pOworICAgIGNyZWF0ZUNvb3JkaW5hdG9y
KCk7CisgICAgW3dlYlZpZXcoKSBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiam9pblNl
c3Npb24oKSJdOworICAgIHdhaXRGb3JQcm9taXNlKCJqb2luIl9zKTsKKyAgICBBU1NFUlRfVFJV
RShwcm9taXNlV2FzUmVzb2x2ZWQoImpvaW4iX3MpKTsKKyAgICBjbGVhclByb21pc2VNZXNzYWdl
cygiam9pbiJfcyk7CisgICAgRVhQRUNUX1NUUkVRKCJqb2luIiwgY29vcmRpbmF0b3IoKS5sYXN0
TWV0aG9kQ2FsbGVkLlVURjhTdHJpbmcpOworCisgICAgU3RyaW5nIGxhc3RNZXRob2RDYWxsZWQ7
CisKKyAgICBbY29vcmRpbmF0b3IoKSBzZWVrU2Vzc2lvblRvVGltZToyMF07CisgICAgZXhlY3V0
ZVVudGlsKFsmXSB7CisgICAgICAgIGxhc3RNZXRob2RDYWxsZWQgPSBjb29yZGluYXRvcigpLmxh
c3RNZXRob2RDYWxsZWQ7CisgICAgICAgIHJldHVybiBsYXN0TWV0aG9kQ2FsbGVkID09ICJzZWVr
U2Vzc2lvblRvVGltZSI7CisgICAgfSk7CisgICAgRVhQRUNUX1NUUkVRKCJzZWVrU2Vzc2lvblRv
VGltZSIsIGxhc3RNZXRob2RDYWxsZWQudXRmOCgpLmRhdGEoKSk7CisKKyAgICBbY29vcmRpbmF0
b3IoKSBwbGF5U2Vzc2lvbl07CisgICAgZXhlY3V0ZVVudGlsKFsmXSB7CisgICAgICAgIGxhc3RN
ZXRob2RDYWxsZWQgPSBjb29yZGluYXRvcigpLmxhc3RNZXRob2RDYWxsZWQ7CisgICAgICAgIHJl
dHVybiBsYXN0TWV0aG9kQ2FsbGVkID09ICJwbGF5U2Vzc2lvbiI7CisgICAgfSk7CisgICAgRVhQ
RUNUX1NUUkVRKCJwbGF5U2Vzc2lvbiIsIGxhc3RNZXRob2RDYWxsZWQudXRmOCgpLmRhdGEoKSk7
CisKKyAgICBbY29vcmRpbmF0b3IoKSBwYXVzZVNlc3Npb25dOworICAgIGV4ZWN1dGVVbnRpbChb
Jl0geworICAgICAgICBsYXN0TWV0aG9kQ2FsbGVkID0gY29vcmRpbmF0b3IoKS5sYXN0TWV0aG9k
Q2FsbGVkOworICAgICAgICByZXR1cm4gbGFzdE1ldGhvZENhbGxlZCA9PSAicGF1c2VTZXNzaW9u
IjsKKyAgICB9KTsKKyAgICBFWFBFQ1RfU1RSRVEoInBhdXNlU2Vzc2lvbiIsIGxhc3RNZXRob2RD
YWxsZWQudXRmOCgpLmRhdGEoKSk7CisKKyAgICBbY29vcmRpbmF0b3IoKSBzZXRTZXNzaW9uVHJh
Y2s6QCJUcmFjayAwIl07CisgICAgZXhlY3V0ZVVudGlsKFsmXSB7CisgICAgICAgIGxhc3RNZXRo
b2RDYWxsZWQgPSBjb29yZGluYXRvcigpLmxhc3RNZXRob2RDYWxsZWQ7CisgICAgICAgIHJldHVy
biBsYXN0TWV0aG9kQ2FsbGVkID09ICJzZXRTZXNzaW9uVHJhY2siOworICAgIH0pOworICAgIEVY
UEVDVF9TVFJFUSgic2V0U2Vzc2lvblRyYWNrIiwgbGFzdE1ldGhvZENhbGxlZC51dGY4KCkuZGF0
YSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCisjZW5kaWYgLy8gRU5B
QkxFKE1FRElBX1NFU1NJT05fQ09PUkRJTkFUT1IpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL21lZGlhLXJlbW90ZS5odG1sIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9tZWRpYS1yZW1vdGUuaHRtbAppbmRleCAxYzk5M2M3
Y2Q0MDFhZmYzMmNmMjMyZWRiYzg4M2VjZGM3OWJiMzVmLi5mZDRkOTk2YTFiYjFiNDgwOWZmZmM2
MjUyZTBlNDQ5YTA0NDVlYmZiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL21lZGlhLXJlbW90ZS5odG1sCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvbWVkaWEtcmVtb3RlLmh0bWwKQEAgLTQwLDExICs0MCwyMyBAQAog
ICAgICAgICAgICAgbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5tZXRhZGF0YSA9IG5ldyBNZWRpYU1l
dGFkYXRhKGRhdGEpOwogICAgICAgICAgICAgcG9zdE1lc3NhZ2UoJ3NldCBtZXRhZGF0YScpCiAg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGZ1bmN0aW9uIGpvaW5TZXNzaW9uKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgbGV0IHByb21pc2UgPSBuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNv
b3JkaW5hdG9yLmpvaW4oKTsKKyAgICAgICAgICAgIHBvc3RQcm9taXNlKCJqb2luIiwgcHJvbWlz
ZSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjYWxsTWV0aG9kKG1ldGhvZCwgYXJn
cykKKyAgICAgICAgeworICAgICAgICAgICAgbGV0IGNvZGUgPSBgbmF2aWdhdG9yLm1lZGlhU2Vz
c2lvbi5jb29yZGluYXRvci4ke21ldGhvZH0oJHthcmdzfSlgOworICAgICAgICAgICAgbGV0IHBy
b21pc2UgPSBldmFsKGNvZGUpOworICAgICAgICAgICAgcG9zdFByb21pc2UobWV0aG9kLCBwcm9t
aXNlKTsKKyAgICAgICAgfQogCiAgICAgICAgIGZ1bmN0aW9uIHNldFBsYXlsaXN0TWV0YWRhdGEo
aW5kZXgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHNldE1ldGFkYXRhKHBsYXlsaXN0Lm1ldGFk
YXRhW2luZGV4XSk7Ci0gICAgICAgIAogICAgICAgICB9CiAKICAgICAgICAgZnVuY3Rpb24gY2xl
YXJBY3Rpb25IYW5kbGVycygpCkBAIC01NiwxNyArNjgsMTEgQEAKICAgICAgICAgewogICAgICAg
ICAgICAgY29uc3QgYWN0aW9ucyA9IHsKICAgICAgICAgICAgICAgICAncGxheScgOiAoKSA9PiB7
IHBvc3RNZXNzYWdlKCdwbGF5IGhhbmRsZXInKTsgfSwKLQogICAgICAgICAgICAgICAgICdwYXVz
ZScgOiAoKSA9PiB7IHBvc3RNZXNzYWdlKCdwYXVzZSBoYW5kbGVyJykgfSwKLSAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICAnc2Vla3RvJyA6IChkZXRhaWxzKSA9PiB7IHBvc3RNZXNz
YWdlKCdzZWVrdG8gaGFuZGxlcicpIH0sCi0KICAgICAgICAgICAgICAgICAnc2Vla2ZvcndhcmQn
IDogKGRldGFpbHMpID0+IHsgcG9zdE1lc3NhZ2UoJ3NlZWtmb3J3YXJkIGhhbmRsZXInKSB9LAot
Ci0gICAgICAgICAgICAgICAgJ3NlZWtiYWNrd2FyZCcgOiAoZGV0YWlscykgPT4geyBwb3N0TWVz
c2FnZSgnc2Vla2JhY2t3YXJkIGhhbmRsZXInKSB9LCAKLQotICAgICAgICAgICAgICAgICdwcmV2
aW91c3RyYWNrJyA6ICgpID0+IHsgcG9zdE1lc3NhZ2UoJ3ByZXZpb3VzdHJhY2sgaGFuZGxlcicp
IH0sIAotCisgICAgICAgICAgICAgICAgJ3NlZWtiYWNrd2FyZCcgOiAoZGV0YWlscykgPT4geyBw
b3N0TWVzc2FnZSgnc2Vla2JhY2t3YXJkIGhhbmRsZXInKSB9LAorICAgICAgICAgICAgICAgICdw
cmV2aW91c3RyYWNrJyA6ICgpID0+IHsgcG9zdE1lc3NhZ2UoJ3ByZXZpb3VzdHJhY2sgaGFuZGxl
cicpIH0sCiAgICAgICAgICAgICAgICAgJ25leHR0cmFjaycgOiAoKSA9PiB7IHBvc3RNZXNzYWdl
KCduZXh0dHJhY2sgaGFuZGxlcicpIH0sIAogICAgICAgICAgICAgfTsKIApAQCAtOTUsNiArMTAx
LDE1IEBACiAgICAgICAgICAgICBwb3N0TWVzc2FnZShgJHtldnQudHlwZX0gZXZlbnRgKTsKICAg
ICAgICAgfQogICAgICAgICAKKyAgICAgICAgYXN5bmMgZnVuY3Rpb24gcG9zdFByb21pc2UodHlw
ZSwgcHJvbWlzZSkKKyAgICAgICAgeworICAgICAgICAgICAgbG9nKGB3YWl0aW5nIGZvciAke3R5
cGV9IHByb21pc2VgKTsKKyAgICAgICAgICAgIGF3YWl0IHByb21pc2UKKyAgICAgICAgICAgICAg
ICAudGhlbiggICgpID0+IHsgcG9zdE1lc3NhZ2UoYCR7dHlwZX0gcmVzb2x2ZWRgKTsgfSApCisg
ICAgICAgICAgICAgICAgLmNhdGNoKCAoKSA9PiB7IHBvc3RNZXNzYWdlKGAke3R5cGV9IHJlamVj
dGVkYCk7IH0gKTsKKyAgICAgICAgICAgIGxvZyhgJHt0eXBlfSBwcm9taXNlIHNldHRsZWRgKTsK
KyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgZnVuY3Rpb24gbG9hZCgpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIGxldCBzcmMgPSBwbGF5bGlzdC5tZXRhZGF0YVswXS51cmw7CkBAIC0xMTIs
MTMgKzEyNywxNSBAQAogICAgICAgICAgICAgZXZlbnRMb2cuaW5zZXJ0QmVmb3JlKG5vdGUsIGV2
ZW50TG9nLmZpcnN0Q2hpbGQpOwogICAgICAgICB9CiAKLSAgICAgICAgCisgICAgICAgIGNvbnN0
IHNlc3Npb24gPSBuYXZpZ2F0b3IubWVkaWFTZXNzaW9uOworCiAgICAgICAgIHdpbmRvdy5hZGRF
dmVudExpc3RlbmVyKCJsb2FkIiwgZXZ0ID0+IHsKICAgICAgICAgICAgIGF1ZGlvID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2F1ZGlvJylbMF07CiAgICAgICAgICAgICBhdWRpby5h
ZGRFdmVudExpc3RlbmVyKCdjYW5wbGF5dGhyb3VnaCcsIHBvc3RFdmVudCk7CiAgICAgICAgICAg
ICBhdWRpby5hZGRFdmVudExpc3RlbmVyKCdwbGF5JywgcG9zdEV2ZW50KTsKICAgICAgICAgICAg
IGF1ZGlvLmFkZEV2ZW50TGlzdGVuZXIoJ3BhdXNlJywgcG9zdEV2ZW50KTsKICAgICAgICAgICAg
IGF1ZGlvLmFkZEV2ZW50TGlzdGVuZXIoJ3NlZWtlZCcsIHBvc3RFdmVudCk7CisgICAgICAgICAg
ICBuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmFkZEV2ZW50TGlzdGVuZXIoJ2Nvb3JkaW5hdG9yY2hh
bmdlJywgcG9zdEV2ZW50KTsKICAgICAgICAgfSwgZmFsc2UpOwogCiAgICAgPC9zY3JpcHQ+Cg==
</data>
<flag name="commit-queue"
          id="445196"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425297</attachid>
            <date>2021-04-06 10:16:32 -0700</date>
            <delta_ts>2021-04-06 12:06:58 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-224140-20210406101631.patch</filename>
            <type>text/plain</type>
            <size>75017</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY0ZDRhNWQwMjViY2Y3ZTBm
YWE3Mzk3NzBiYzBmN2U2M2NjZjk3OGYuLmI5Mzc0NmFmMGM2NDEyMTU4MjYyNmI3MGEyNzU5Mjgz
YzZiMDA2MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjkgQEAKKzIwMjEtMDQtMDYgIEVyaWMgQ2Fy
bHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXSBBZGQgTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3IgQVBJIHRlc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDE0MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzYx
NzExNzM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmVyIE5vYmxlLgorCisgICAgICAgICogU291
cmNlcy50eHQ6IEluY2x1ZGUgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eS5jcHAg
YW5kIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmNwcAorICAgICAgICBzbyB0aGV5IGRv
bid0IGhhdmUgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIFhjb2RlIHByb2plY3QuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmg6IERlY2xh
cmUgZW51bXMsIHN0cnVjdCwgYW5kIHByb3RvY29scworICAgICAgICBuZWNlc3NhcnkgdG8gaW1w
bGVtZW50IGFuZCB1c2UgYW4gb2JqZWN0IGRlcml2ZWQgZnJvbSBNZWRpYVNlc3Npb25Db29yZGlu
YXRvclByb3h5UHJpdmF0ZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d1Rlc3RpbmcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfY3JlYXRlTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3JGb3JUZXN0aW5nOmNvbXBsZXRpb25IYW5kbGVyOl0pOiBOZXcgcHJpdmF0ZQorICAg
ICAgICBtZXRob2QgdG8gY3JlYXRlIGEgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eVByaXZh
dGUuCisgICAgICAgICgtW1dLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JIZWxwZXIgaW5pdFdpdGhD
b29yZGluYXRvcjpdKToKKyAgICAgICAgKC1bV0tNZWRpYVNlc3Npb25Db29yZGluYXRvckhlbHBl
ciBzZWVrU2Vzc2lvblRvVGltZTp3aXRoQ29tcGxldGlvbjpdKToKKyAgICAgICAgKC1bV0tNZWRp
YVNlc3Npb25Db29yZGluYXRvckhlbHBlciBwbGF5U2Vzc2lvbldpdGhDb21wbGV0aW9uOl0pOgor
ICAgICAgICAoLVtXS01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9ySGVscGVyIHBhdXNlU2Vzc2lvbldp
dGhDb21wbGV0aW9uOl0pOgorICAgICAgICAoLVtXS01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9ySGVs
cGVyIHNldFNlc3Npb25UcmFjazp3aXRoQ29tcGxldGlvbjpdKToKKworICAgICAgICAqIFVJUHJv
Y2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
bWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JGb3JUZXN0aW5nKTogTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JQcm94eVByaXZhdGUKKyAgICAgICAgZ2V0dGVyLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldE1lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yRm9yVGVzdGluZyk6IFNldHRlciBmb3IgCisgICAgICAgIE1lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yUHJveHlQcml2YXRlIGRyaXZlZCBvYmplY3QuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvTWVkaWEvTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eVByaXZhdGUuaDog
QWRkIHR5cGVkZWYgZm9yIHRoZSBjb21wbGV0aW9uCisgICAgICAgIGhhbmRsZXIgdXNlZCBieSBt
YW55IGNvb3JkaW5hdG9yIHByb3h5IG1ldGhvZHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvTWVk
aWEvUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OlJlbW90ZU1lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yUHJveHkpOgorICAgICAgICBTZXQgdGhlIHByaXZhdGUgY29vcmRpbmF0b3Ig
Y2xpZW50IHNvIGNhbGxzIHRvIHRoZSBzZXNzaW9uIGNhbiBiZSBmb3J3YXJkZWQuCisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OmpvaW4pOiBVc2Ug
TWVkaWFTZXNzaW9uQ29tbWFuZENvbXBsZXRpb25IYW5kbGVyLgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5Ojpjb29yZGluYXRlU2Vla1RvKTogRGl0
dG8uCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6
OmNvb3JkaW5hdGVQbGF5KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yUHJveHk6OmNvb3JkaW5hdGVQYXVzZSk6IERpdHRvLgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5Ojpjb29yZGluYXRlU2V0
VHJhY2spOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3JQcm94eTo6Y29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQpOiBEaXR0by4KKyAgICAgICAgKiBV
SVByb2Nlc3MvTWVkaWEvUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eS5oOgorCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6Y3JlYXRlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IpOiBDaGFuZ2UgY29tcGxl
dGlvbiBoYW5kbGVyCisgICAgICAgIHBhcmFtZXRlciB0byByZXR1cm4gYSBib29sIGluc3RlYWQg
b2YgYSBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5IGFzIHRoZQorICAgICAgICBj
bGllbnQgaW50ZXJmYWNlIHByb3ZpZGVzIGFsbCBvZiB0aGUgc2Vzc2lvbiBhY2Nlc3MgbmVlZGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKworICAgICAgICAqIFdlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBSZW1vdmUgUmVtb3RlTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3JQcm94eS5jcHAgCisgICAgICAgIGFuZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGlu
YXRvci5jcHAKKyAgICAgICAgCisgICAgICAgICogV2ViUHJvY2Vzcy9NZWRpYVNlc3Npb24vUmVt
b3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVN
ZWRpYVNlc3Npb25Db29yZGluYXRvcjo6am9pbik6IFVzZSBFeGNlcHRpb25EYXRhJ3MgdG9FeGNl
cHRpb24oKQorICAgICAgICBtZXRob2QgaW5zdGVhZCBvZiBjcmVhdGluZyBhbiBFeGNlcHRpb24g
ZGlyZWN0bHkuIFJlbW92ZSB0aGUgZGVzdGluYXRpb24gSUQgcGFyYW1ldGVyCisgICAgICAgIHRv
IHNlbmRXaXRoQXN5bmNSZXBseSBzbyBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIHdpbGwg
YmUgdXNlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6
OmxlYXZlKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yOjpzZWVrVG8pIERpdHRvLjoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3I6OnBsYXkpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3I6OnBhdXNlKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpzZXRUcmFjayk6IERpdHRvLgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6cG9zaXRpb25TdGF0ZUNoYW5n
ZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3I6OnJlYWR5U3RhdGVDaGFuZ2VkKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpwbGF5YmFja1N0YXRlQ2hhbmdlZCk6IERpdHRvLgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6Y29vcmRpbmF0b3JT
dGF0ZUNoYW5nZWQpOiBEaXR0by4KKwogMjAyMS0wNC0wNiAgUGhpbGlwcGUgTm9ybWFuZCAgPHBu
b3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV0gRW5hYmxlIENvZydzIEdUSzQgYmFj
a2VuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKaW5kZXggOTRlYTcxYzM1ODdmZTRmODM5YjA5MDcyNDNmOGUyNDFjOTg5
MWYwZS4uY2JmNjdlODdmNTkwZjgwMmI2MGRjYjgzOTUyZGFjMDRhOGM4MzgxYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0CkBAIC00NjksNiArNDY5LDcgQEAgVUlQcm9jZXNzL0luc3BlY3Rvci9BZ2VudHMvSW5zcGVj
dG9yQnJvd3NlckFnZW50LmNwcAogCiBVSVByb2Nlc3MvTWVkaWEvQXVkaW9TZXNzaW9uUm91dGlu
Z0FyYml0cmF0b3JQcm94eS5jcHAKIFVJUHJvY2Vzcy9NZWRpYS9NZWRpYVVzYWdlTWFuYWdlci5j
cHAKK1VJUHJvY2Vzcy9NZWRpYS9SZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5LmNw
cAogCiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eS5jcHAKIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlv
bi5jcHAKQEAgLTU4MSw2ICs1ODIsOCBAQCBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJQYWdlSW5z
cGVjdG9yVGFyZ2V0LmNwcAogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViUGFnZUluc3BlY3RvclRh
cmdldENvbnRyb2xsZXIuY3BwCiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJQYWdlSW5zcGVjdG9y
VGFyZ2V0RnJvbnRlbmRDaGFubmVsLmNwcAogCitXZWJQcm9jZXNzL01lZGlhU2Vzc2lvbi9SZW1v
dGVNZWRpYVNlc3Npb25Db29yZGluYXRvci5jcHAKKwogV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9N
ZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zLmNwcAogV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9V
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGVGb3JU
ZXN0aW5nLmgKaW5kZXggZGJiODRkOGNjYmI1Y2YyNWZmMWZjM2Y3Njk0MTYxMDg3Mzg0NDA5MC4u
ZTg1YzIwNjEzNjkwOTgzOTQ0MjVhMjhmYzQxMzVmODRlYmVkNjU4NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5n
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZh
dGVGb3JUZXN0aW5nLmgKQEAgLTI2LDYgKzI2LDggQEAKICNpbXBvcnQgIldLV2ViVmlld1ByaXZh
dGVGb3JUZXN0aW5nSU9TLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZ01h
Yy5oIgogCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCiB0eXBlZGVmIGVudW0gewogICAgIFdL
V2ViVmlld0F1ZGlvUm91dGluZ0FyYml0cmF0aW9uU3RhdHVzTm9uZSwKICAgICBXS1dlYlZpZXdB
dWRpb1JvdXRpbmdBcmJpdHJhdGlvblN0YXR1c1BlbmRpbmcsCkBAIC0zNyw2ICszOSw4IEBAIHN0
cnVjdCBXS0FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhIHsKICAgICBCT09MIGhhc0xvYWRl
ZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3Rpbmc7CiB9OwogCitAcHJvdG9jb2wgX1dLTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3I7CisKIEBpbnRlcmZhY2UgV0tXZWJWaWV3IChXS1Rlc3RpbmcpCiAKIC0g
KHZvaWQpX3NldFBhZ2VTY2FsZTooQ0dGbG9hdClzY2FsZSB3aXRoT3JpZ2luOihDR1BvaW50KW9y
aWdpbjsKQEAgLTk5LDQgKzEwMyw1NiBAQCBzdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0
aW5nRGF0YSB7CiAtICh2b2lkKV9hcHBCb3VuZE5hdmlnYXRpb25EYXRhOih2b2lkKF4pKHN0cnVj
dCBXS0FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhIGRhdGEpKWNvbXBsZXRpb25IYW5kbGVy
OwogLSAodm9pZClfY2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhOih2b2lkKF4pKHZvaWQpKWNv
bXBsZXRpb25IYW5kbGVyOwogCistICh2b2lkKV9jcmVhdGVNZWRpYVNlc3Npb25Db29yZGluYXRv
ckZvclRlc3Rpbmc6KGlkIDxfV0tNZWRpYVNlc3Npb25Db29yZGluYXRvcj4pcHJpdmF0ZUNvb3Jk
aW5hdG9yIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVy
OworCitAZW5kCisKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS01lZGlhU2Vzc2lvblJl
YWR5U3RhdGUpIHsKKyAgICBXS01lZGlhU2Vzc2lvblJlYWR5U3RhdGVIYXZlTm90aGluZywKKyAg
ICBXS01lZGlhU2Vzc2lvblJlYWR5U3RhdGVIYXZlTWV0YWRhdGEsCisgICAgV0tNZWRpYVNlc3Np
b25SZWFkeVN0YXRlSGF2ZUN1cnJlbnREYXRhLAorICAgIFdLTWVkaWFTZXNzaW9uUmVhZHlTdGF0
ZUhhdmVGdXR1cmVEYXRhLAorICAgIFdLTWVkaWFTZXNzaW9uUmVhZHlTdGF0ZUhhdmVFbm91Z2hE
YXRhCit9OworCit0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tNZWRpYVNlc3Npb25QbGF5
YmFja1N0YXRlKSB7CisgICAgV0tNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRlTm9uZSwKKyAgICBX
S01lZGlhU2Vzc2lvblBsYXliYWNrU3RhdGVQYXVzZWQsCisgICAgV0tNZWRpYVNlc3Npb25QbGF5
YmFja1N0YXRlUGxheWluZworfTsKKwordHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZSkgeworICAgIFdLTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JTdGF0ZVdhaXRpbmcsCisgICAgV0tNZWRpYVNlc3Npb25Db29yZGluYXRvclN0YXRlSm9pbmVk
LAorICAgIFdLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZUNsb3NlZAorfTsKKworc3RydWN0
IF9XS01lZGlhUG9zaXRpb25TdGF0ZSB7CisgICAgZG91YmxlIGR1cmF0aW9uOworICAgIGRvdWJs
ZSBwbGF5YmFja1JhdGU7CisgICAgZG91YmxlIHBvc2l0aW9uOworfTsKKworQHByb3RvY29sIF9X
S01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yRGVsZWdhdGUgPE5TT2JqZWN0PgorLSAodm9pZClzZWVr
U2Vzc2lvblRvVGltZTooZG91YmxlKXRpbWUgd2l0aENvbXBsZXRpb246KHZvaWQoXikoQk9PTCkp
Y29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKXBsYXlTZXNzaW9uV2l0aENvbXBsZXRpb246KHZv
aWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKXBhdXNlU2Vzc2lvbldpdGhD
b21wbGV0aW9uOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClzZXRT
ZXNzaW9uVHJhY2s6KE5TU3RyaW5nKil0cmFja0lkZW50aWZpZXIgd2l0aENvbXBsZXRpb246KHZv
aWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXI7CitAZW5kCisKK0Bwcm90b2NvbCBfV0tNZWRp
YVNlc3Npb25Db29yZGluYXRvciA8TlNPYmplY3Q+CitAcHJvcGVydHkgKG51bGxhYmxlLCB3ZWFr
KSBpZCA8X1dLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JEZWxlZ2F0ZT4gZGVsZWdhdGU7CitAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nICogX05vbm51bGwgaWRlbnRpZmll
cjsKKy0gKHZvaWQpam9pbldpdGhDb21wbGV0aW9uOih2b2lkKF4gX05vbm51bGwpKEJPT0wpKWNv
bXBsZXRpb25IYW5kbGVyOworLSAodm9pZClsZWF2ZTsKKy0gKHZvaWQpc2Vla1RvOihkb3VibGUp
dGltZSB3aXRoQ29tcGxldGlvbjoodm9pZCheIF9Ob25udWxsKShCT09MKSljb21wbGV0aW9uSGFu
ZGxlcjsKKy0gKHZvaWQpcGxheVdpdGhDb21wbGV0aW9uOih2b2lkKF4gX05vbm51bGwpKEJPT0wp
KWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClwYXVzZVdpdGhDb21wbGV0aW9uOih2b2lkKF4g
X05vbm51bGwpKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClzZXRUcmFjazooTlNT
dHJpbmcgKl9Ob25udWxsKXRyYWNrSWRlbnRpZmllciB3aXRoQ29tcGxldGlvbjoodm9pZCheIF9O
b25udWxsKShCT09MKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpcG9zaXRpb25TdGF0ZUNo
YW5nZWQ6KHN0cnVjdCBfV0tNZWRpYVBvc2l0aW9uU3RhdGUgKiBfTnVsbGFibGUpc3RhdGU7Cist
ICh2b2lkKXJlYWR5U3RhdGVDaGFuZ2VkOihfV0tNZWRpYVNlc3Npb25SZWFkeVN0YXRlKXN0YXRl
OworLSAodm9pZClwbGF5YmFja1N0YXRlQ2hhbmdlZDooX1dLTWVkaWFTZXNzaW9uUGxheWJhY2tT
dGF0ZSlzdGF0ZTsKKy0gKHZvaWQpY29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQ6KF9XS01lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yU3RhdGUpc3RhdGU7CiBAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VO
RApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d1Rlc3RpbmcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
VGVzdGluZy5tbQppbmRleCA0ZjkyOGUyODgxNzc2N2Q3NTBlZjM1OWRhODQ2OTBiNzE3OGUyN2Zi
Li5jOTUxYmRmNGIyZTI1YWIyZWM5ZWZjMjJhZjk0MDNhNmY0MGFiYmM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVzdGluZy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVzdGluZy5tbQpA
QCAtMjcsNiArMjcsNyBAQAogI2ltcG9ydCAiV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaCIK
IAogI2ltcG9ydCAiQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eS5oIgorI2ltcG9y
dCAiTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eVByaXZhdGUuaCIKICNpbXBvcnQgIlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oIgogI2ltcG9ydCAiVXNlck1lZGlhUHJvY2Vzc01hbmFn
ZXIuaCIKICNpbXBvcnQgIlZpZXdHZXN0dXJlQ29udHJvbGxlci5oIgpAQCAtMzksNyArNDAsMTcg
QEAKICNpbXBvcnQgIl9XS0luc3BlY3RvckludGVybmFsLmgiCiAjaW1wb3J0IDxXZWJDb3JlL1J1
bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9WYWxpZGF0aW9uQnVi
YmxlLmg+Ci0KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIEVOQUJMRShNRURJQV9T
RVNTSU9OX0NPT1JESU5BVE9SKQorQGludGVyZmFjZSBXS01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
SGVscGVyIDogTlNPYmplY3QgPF9XS01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yRGVsZWdhdGU+Cist
IChpZClpbml0V2l0aENvb3JkaW5hdG9yOihXZWJDb3JlOjpNZWRpYVNlc3Npb25Db29yZGluYXRv
ckNsaWVudCopY29vcmRpbmF0b3I7CistICh2b2lkKXNlZWtTZXNzaW9uVG9UaW1lOihkb3VibGUp
dGltZSB3aXRoQ29tcGxldGlvbjoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcjsKKy0g
KHZvaWQpcGxheVNlc3Npb25XaXRoQ29tcGxldGlvbjoodm9pZCheKShCT09MKSljb21wbGV0aW9u
SGFuZGxlcjsKKy0gKHZvaWQpcGF1c2VTZXNzaW9uV2l0aENvbXBsZXRpb246KHZvaWQoXikoQk9P
TCkpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKXNldFNlc3Npb25UcmFjazooTlNTdHJpbmcq
KXRyYWNrSWRlbnRpZmllciB3aXRoQ29tcGxldGlvbjoodm9pZCheKShCT09MKSljb21wbGV0aW9u
SGFuZGxlcjsKK0BlbmQKKyNlbmRpZgogCiBAaW1wbGVtZW50YXRpb24gV0tXZWJWaWV3IChXS1Rl
c3RpbmcpCiAKQEAgLTM2MCw0ICszNzEsMjQwIEBACiAgICAgfSk7CiB9CiAKKy0gKHZvaWQpX2Ny
ZWF0ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yRm9yVGVzdGluZzooaWQgPF9XS01lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yPilwcml2YXRlQ29vcmRpbmF0b3IgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQo
XikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTl9D
T09SRElOQVRPUikKKyAgICBjbGFzcyBXS01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yRm9yVGVzdGlu
ZworICAgICAgICA6IHB1YmxpYyBXZWJLaXQ6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHlQ
cml2YXRlCisgICAgICAgICwgcHVibGljIFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
Q2xpZW50IHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgor
CisgICAgICAgIHN0YXRpYyBSZWY8V0tNZWRpYVNlc3Npb25Db29yZGluYXRvckZvclRlc3Rpbmc+
IGNyZWF0ZShpZCA8X1dLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I+IHByaXZhdGVDb29yZGluYXRv
cikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV0tNZWRpYVNl
c3Npb25Db29yZGluYXRvckZvclRlc3RpbmcocHJpdmF0ZUNvb3JkaW5hdG9yKSk7CisgICAgICAg
IH0KKworICAgICAgICB1c2luZyBXZWJDb3JlOjpNZWRpYVNlc3Npb25Db29yZGluYXRvckNsaWVu
dDo6d2Vha1B0ckZhY3Rvcnk7CisgICAgICAgIHVzaW5nIFdlYWtWYWx1ZVR5cGUgPSBXZWJDb3Jl
OjpNZWRpYVNlc3Npb25Db29yZGluYXRvckNsaWVudDo6V2Vha1ZhbHVlVHlwZTsKKworICAgIHBy
aXZhdGU6CisgICAgICAgIGV4cGxpY2l0IFdLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JGb3JUZXN0
aW5nKGlkIDxfV0tNZWRpYVNlc3Npb25Db29yZGluYXRvcj4gY2xpZW50Q29vcmRpbmF0b3IpCisg
ICAgICAgICAgICA6IFdlYktpdDo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eVByaXZhdGUo
KQorICAgICAgICAgICAgLCBtX2NsaWVudENvb3JkaW5hdG9yKGNsaWVudENvb3JkaW5hdG9yKQor
ICAgICAgICB7CisgICAgICAgICAgICBhdXRvKiBkZWxlZ2F0ZUhlbHBlciA9IFtbV0tNZWRpYVNl
c3Npb25Db29yZGluYXRvckhlbHBlciBhbGxvY10gaW5pdFdpdGhDb29yZGluYXRvcjp0aGlzXTsK
KyAgICAgICAgICAgIFttX2NsaWVudENvb3JkaW5hdG9yIHNldERlbGVnYXRlOmRlbGVnYXRlSGVs
cGVyXTsKKyAgICAgICAgICAgIG1fY29vcmRpbmF0b3JEZWxlZ2F0ZSA9IGFkb3B0TlMoZGVsZWdh
dGVIZWxwZXIpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBzZWVrU2Vzc2lvblRvVGltZShk
b3VibGUgdGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykgZmlu
YWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGF1dG8gY29vcmRpbmF0b3JDbGllbnQgPSBj
bGllbnQoKSkKKyAgICAgICAgICAgICAgICBjb29yZGluYXRvckNsaWVudC0+c2Vla1Nlc3Npb25U
b1RpbWUodGltZSwgV1RGTW92ZShjYWxsYmFjaykpOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgcGxh
eVNlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykgZmluYWwK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKGF1dG8gY29vcmRpbmF0b3JDbGllbnQgPSBjbGll
bnQoKSkKKyAgICAgICAgICAgICAgICBjb29yZGluYXRvckNsaWVudC0+cGxheVNlc3Npb24oV1RG
TW92ZShjYWxsYmFjaykpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGNhbGxi
YWNrKGZhbHNlKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgcGF1c2VTZXNzaW9uKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spIGZpbmFsCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmIChhdXRvIGNvb3JkaW5hdG9yQ2xpZW50ID0gY2xpZW50KCkpCisgICAgICAg
ICAgICAgICAgY29vcmRpbmF0b3JDbGllbnQtPnBhdXNlU2Vzc2lvbihXVEZNb3ZlKGNhbGxiYWNr
KSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UpOwor
ICAgICAgICB9CisKKyAgICAgICAgdm9pZCBzZXRTZXNzaW9uVHJhY2soY29uc3QgU3RyaW5nJiB0
cmFja0lkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2sp
IGZpbmFsCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGNvb3JkaW5hdG9yQ2xpZW50
ID0gY2xpZW50KCkpCisgICAgICAgICAgICAgICAgY29vcmRpbmF0b3JDbGllbnQtPnNldFNlc3Np
b25UcmFjayh0cmFja0lkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSk7CisgICAgICAgIH0KKworICAg
ICAgICBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiByZXN1bHQoYm9vbCBzdWNjZXNz
KSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHsgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSB7IFdlYkNvcmU6OkludmFsaWRT
dGF0ZUVycm9yIH0gfTsKKworICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgfQorCisg
ICAgICAgIFN0cmluZyBpZGVudGlmaWVyKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIFttX2NsaWVudENvb3JkaW5hdG9yIGlkZW50aWZpZXJdOworICAgICAgICB9CisKKyAg
ICAgICAgdm9pZCBqb2luKFdlYktpdDo6TWVkaWFTZXNzaW9uQ29tbWFuZENvbXBsZXRpb25IYW5k
bGVyJiYgY2FsbGJhY2spIGZpbmFsCisgICAgICAgIHsKKyAgICAgICAgICAgIFttX2NsaWVudENv
b3JkaW5hdG9yIGpvaW5XaXRoQ29tcGxldGlvbjptYWtlQmxvY2tQdHIoW3dlYWtUaGlzID0gbWFr
ZVdlYWtQdHIodGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChCT09MIHN1Y2Nl
c3MpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpIHsKKyAgICAgICAg
ICAgICAgICAgICAgY2FsbGJhY2soV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSB7IFdlYkNvcmU6Oklu
dmFsaWRTdGF0ZUVycm9yIH0pOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY2FsbGJhY2sod2Vha1RoaXMtPnJlc3VsdChz
dWNjZXNzKSk7CisgICAgICAgICAgICB9KS5nZXQoKV07CisgICAgICAgIH0KKworICAgICAgICB2
b2lkIGxlYXZlKCkgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgW21fY2xpZW50Q29vcmRp
bmF0b3IgbGVhdmVdOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBzZWVrVG8oZG91YmxlIHRp
bWUsIFdlYktpdDo6TWVkaWFTZXNzaW9uQ29tbWFuZENvbXBsZXRpb25IYW5kbGVyJiYgY2FsbGJh
Y2spIGZpbmFsCisgICAgICAgIHsKKyAgICAgICAgICAgIFttX2NsaWVudENvb3JkaW5hdG9yIHNl
ZWtUbzp0aW1lIHdpdGhDb21wbGV0aW9uOm1ha2VCbG9ja1B0cihbd2Vha1RoaXMgPSBtYWtlV2Vh
a1B0cih0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKEJPT0wgc3VjY2Vzcykg
bXV0YWJsZSB7CisgICAgICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykgeworICAgICAgICAgICAg
ICAgICAgICBjYWxsYmFjayhXZWJDb3JlOjpFeGNlcHRpb25EYXRhIHsgV2ViQ29yZTo6SW52YWxp
ZFN0YXRlRXJyb3IgfSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICBjYWxsYmFjayh3ZWFrVGhpcy0+cmVzdWx0KHN1Y2Nl
c3MpKTsKKyAgICAgICAgICAgIH0pLmdldCgpXTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQg
cGxheShXZWJLaXQ6Ok1lZGlhU2Vzc2lvbkNvbW1hbmRDb21wbGV0aW9uSGFuZGxlciYmIGNhbGxi
YWNrKSBmaW5hbAorICAgICAgICB7CisgICAgICAgICAgICBbbV9jbGllbnRDb29yZGluYXRvciBw
bGF5V2l0aENvbXBsZXRpb246bWFrZUJsb2NrUHRyKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRo
aXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoQk9PTCBzdWNjZXNzKSBtdXRhYmxl
IHsKKyAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKSB7CisgICAgICAgICAgICAgICAgICAg
IGNhbGxiYWNrKFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEgeyBXZWJDb3JlOjpJbnZhbGlkU3RhdGVF
cnJvciB9KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgIGNhbGxiYWNrKHdlYWtUaGlzLT5yZXN1bHQoc3VjY2VzcykpOwor
ICAgICAgICAgICAgfSkuZ2V0KCldOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBwYXVzZShX
ZWJLaXQ6Ok1lZGlhU2Vzc2lvbkNvbW1hbmRDb21wbGV0aW9uSGFuZGxlciYmIGNhbGxiYWNrKSBm
aW5hbAorICAgICAgICB7CisgICAgICAgICAgICBbbV9jbGllbnRDb29yZGluYXRvciBwYXVzZVdp
dGhDb21wbGV0aW9uOm1ha2VCbG9ja1B0cihbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwg
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKEJPT0wgc3VjY2VzcykgbXV0YWJsZSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykgeworICAgICAgICAgICAgICAgICAgICBjYWxs
YmFjayhXZWJDb3JlOjpFeGNlcHRpb25EYXRhIHsgV2ViQ29yZTo6SW52YWxpZFN0YXRlRXJyb3Ig
fSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICBjYWxsYmFjayh3ZWFrVGhpcy0+cmVzdWx0KHN1Y2Nlc3MpKTsKKyAgICAg
ICAgICAgIH0pLmdldCgpXTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgc2V0VHJhY2soY29u
c3QgU3RyaW5nJiB0cmFjaywgV2ViS2l0OjpNZWRpYVNlc3Npb25Db21tYW5kQ29tcGxldGlvbkhh
bmRsZXImJiBjYWxsYmFjaykgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgW21fY2xpZW50
Q29vcmRpbmF0b3Igc2V0VHJhY2s6dHJhY2sgd2l0aENvbXBsZXRpb246bWFrZUJsb2NrUHRyKFt3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XSAoQk9PTCBzdWNjZXNzKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlz
KSB7CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEg
eyBXZWJDb3JlOjpJbnZhbGlkU3RhdGVFcnJvciB9KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGNhbGxiYWNrKHdlYWtU
aGlzLT5yZXN1bHQoc3VjY2VzcykpOworICAgICAgICAgICAgfSkuZ2V0KCldOworICAgICAgICB9
CisKKyAgICAgICAgdm9pZCBwb3NpdGlvblN0YXRlQ2hhbmdlZChjb25zdCBPcHRpb25hbDxXZWJD
b3JlOjpNZWRpYVBvc2l0aW9uU3RhdGU+JiBzdGF0ZSkgZmluYWwKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKCFzdGF0ZSkgeworICAgICAgICAgICAgICAgIFttX2NsaWVudENvb3JkaW5hdG9y
IHBvc2l0aW9uU3RhdGVDaGFuZ2VkOm5pbF07CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBfV0tNZWRpYVBvc2l0aW9uU3RhdGUgcG9zaXRpb24g
PSB7CisgICAgICAgICAgICAgICAgLmR1cmF0aW9uID0gc3RhdGUtPmR1cmF0aW9uLAorICAgICAg
ICAgICAgICAgIC5wbGF5YmFja1JhdGUgPSBzdGF0ZS0+cGxheWJhY2tSYXRlLAorICAgICAgICAg
ICAgICAgIC5wb3NpdGlvbiA9IHN0YXRlLT5wb3NpdGlvbgorICAgICAgICAgICAgfTsKKyAgICAg
ICAgICAgIFttX2NsaWVudENvb3JkaW5hdG9yIHBvc2l0aW9uU3RhdGVDaGFuZ2VkOiZwb3NpdGlv
bl07CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHJlYWR5U3RhdGVDaGFuZ2VkKFdlYkNvcmU6
Ok1lZGlhU2Vzc2lvblJlYWR5U3RhdGUgc3RhdGUpIGZpbmFsCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihXZWJDb3JlOjpNZWRpYVNlc3Np
b25SZWFkeVN0YXRlOjpIYXZlTm90aGluZykgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihXS01lZGlh
U2Vzc2lvblJlYWR5U3RhdGVIYXZlTm90aGluZyksICJXS01lZGlhU2Vzc2lvblJlYWR5U3RhdGVI
YXZlTm90aGluZyBkb2VzIG5vdCBtYXRjaCBXZWJLaXQgdmFsdWUiKTsKKyAgICAgICAgICAgIHN0
YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihXZWJDb3JlOjpNZWRpYVNlc3Npb25SZWFk
eVN0YXRlOjpIYXZlTWV0YWRhdGEpID09IHN0YXRpY19jYXN0PHNpemVfdD4oV0tNZWRpYVNlc3Np
b25SZWFkeVN0YXRlSGF2ZU1ldGFkYXRhKSwgIldLTWVkaWFTZXNzaW9uUmVhZHlTdGF0ZUhhdmVN
ZXRhZGF0YSBkb2VzIG5vdCBtYXRjaCBXZWJLaXQgdmFsdWUiKTsKKyAgICAgICAgICAgIHN0YXRp
Y19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihXZWJDb3JlOjpNZWRpYVNlc3Npb25SZWFkeVN0
YXRlOjpIYXZlQ3VycmVudERhdGEpID09IHN0YXRpY19jYXN0PHNpemVfdD4oV0tNZWRpYVNlc3Np
b25SZWFkeVN0YXRlSGF2ZUN1cnJlbnREYXRhKSwgIldLTWVkaWFTZXNzaW9uUmVhZHlTdGF0ZUhh
dmVDdXJyZW50RGF0YSBkb2VzIG5vdCBtYXRjaCBXZWJLaXQgdmFsdWUiKTsKKyAgICAgICAgICAg
IHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihXZWJDb3JlOjpNZWRpYVNlc3Npb25S
ZWFkeVN0YXRlOjpIYXZlRnV0dXJlRGF0YSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihXS01lZGlh
U2Vzc2lvblJlYWR5U3RhdGVIYXZlRnV0dXJlRGF0YSksICJXS01lZGlhU2Vzc2lvblJlYWR5U3Rh
dGVIYXZlRnV0dXJlRGF0YSBkb2VzIG5vdCBtYXRjaCBXZWJLaXQgdmFsdWUiKTsKKyAgICAgICAg
ICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihXZWJDb3JlOjpNZWRpYVNlc3Np
b25SZWFkeVN0YXRlOjpIYXZlRW5vdWdoRGF0YSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihXS01l
ZGlhU2Vzc2lvblJlYWR5U3RhdGVIYXZlRW5vdWdoRGF0YSksICJXS01lZGlhU2Vzc2lvblJlYWR5
U3RhdGVIYXZlRW5vdWdoRGF0YSBkb2VzIG5vdCBtYXRjaCBXZWJLaXQgdmFsdWUiKTsKKworICAg
ICAgICAgICAgW21fY2xpZW50Q29vcmRpbmF0b3IgcmVhZHlTdGF0ZUNoYW5nZWQ6c3RhdGljX2Nh
c3Q8X1dLTWVkaWFTZXNzaW9uUmVhZHlTdGF0ZT4oc3RhdGUpXTsKKyAgICAgICAgfQorCisgICAg
ICAgIHZvaWQgcGxheWJhY2tTdGF0ZUNoYW5nZWQoV2ViQ29yZTo6TWVkaWFTZXNzaW9uUGxheWJh
Y2tTdGF0ZSBzdGF0ZSkgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljX2Fzc2Vy
dChzdGF0aWNfY2FzdDxzaXplX3Q+KFdlYkNvcmU6Ok1lZGlhU2Vzc2lvblBsYXliYWNrU3RhdGU6
Ok5vbmUpID09IHN0YXRpY19jYXN0PHNpemVfdD4oV0tNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRl
Tm9uZSksICJXS01lZGlhU2Vzc2lvblBsYXliYWNrU3RhdGVOb25lIGRvZXMgbm90IG1hdGNoIFdl
YktpdCB2YWx1ZSIpOworICAgICAgICAgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXpl
X3Q+KFdlYkNvcmU6Ok1lZGlhU2Vzc2lvblBsYXliYWNrU3RhdGU6OlBhdXNlZCkgPT0gc3RhdGlj
X2Nhc3Q8c2l6ZV90PihXS01lZGlhU2Vzc2lvblBsYXliYWNrU3RhdGVQYXVzZWQpLCAiV0tNZWRp
YVNlc3Npb25QbGF5YmFja1N0YXRlUGF1c2VkIGRvZXMgbm90IG1hdGNoIFdlYktpdCB2YWx1ZSIp
OworICAgICAgICAgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFdlYkNvcmU6
Ok1lZGlhU2Vzc2lvblBsYXliYWNrU3RhdGU6OlBsYXlpbmcpID09IHN0YXRpY19jYXN0PHNpemVf
dD4oV0tNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRlUGxheWluZyksICJXS01lZGlhU2Vzc2lvblBs
YXliYWNrU3RhdGVQbGF5aW5nIGRvZXMgbm90IG1hdGNoIFdlYktpdCB2YWx1ZSIpOworCisgICAg
ICAgICAgICBbbV9jbGllbnRDb29yZGluYXRvciBwbGF5YmFja1N0YXRlQ2hhbmdlZDpzdGF0aWNf
Y2FzdDxfV0tNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRlPihzdGF0ZSldOworICAgICAgICB9CisK
KyAgICAgICAgdm9pZCBjb29yZGluYXRvclN0YXRlQ2hhbmdlZChXZWJDb3JlOjpNZWRpYVNlc3Np
b25Db29yZGluYXRvclN0YXRlIHN0YXRlKSBmaW5hbAorICAgICAgICB7CisgICAgICAgICAgICBz
dGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oV2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3JTdGF0ZTo6V2FpdGluZykgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihXS01lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yU3RhdGVXYWl0aW5nKSwgIldLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JT
dGF0ZVdhaXRpbmcgZG9lcyBub3QgbWF0Y2ggV2ViS2l0IHZhbHVlIik7CisgICAgICAgICAgICBz
dGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oV2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3JTdGF0ZTo6Sm9pbmVkKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KFdLTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3JTdGF0ZUpvaW5lZCksICJXS01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3Rh
dGVKb2luZWQgZG9lcyBub3QgbWF0Y2ggV2ViS2l0IHZhbHVlIik7CisgICAgICAgICAgICBzdGF0
aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oV2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3JTdGF0ZTo6Q2xvc2VkKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KFdLTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3JTdGF0ZUNsb3NlZCksICJXS01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGVD
bG9zZWQgZG9lcyBub3QgbWF0Y2ggV2ViS2l0IHZhbHVlIik7CisKKyAgICAgICAgICAgIFttX2Ns
aWVudENvb3JkaW5hdG9yIGNvb3JkaW5hdG9yU3RhdGVDaGFuZ2VkOnN0YXRpY19jYXN0PF9XS01l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGU+KHN0YXRlKV07CisgICAgICAgIH0KKworICAgIHBy
aXZhdGU6CisgICAgICAgIFJldGFpblB0cjxpZCA8X1dLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I+
PiBtX2NsaWVudENvb3JkaW5hdG9yOworICAgICAgICBSZXRhaW5QdHI8V0tNZWRpYVNlc3Npb25D
b29yZGluYXRvckhlbHBlcj4gbV9jb29yZGluYXRvckRlbGVnYXRlOworICAgIH07CisKKyAgICBB
U1NFUlQoIV9pbXBsLT5tZWRpYVNlc3Npb25Db29yZGluYXRvckZvclRlc3RpbmcoKSk7CisKKyAg
ICBfaW1wbC0+c2V0TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JGb3JUZXN0aW5nKFdLTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3JGb3JUZXN0aW5nOjpjcmVhdGUocHJpdmF0ZUNvb3JkaW5hdG9yKS5wdHIo
KSk7CisgICAgX2ltcGwtPnBhZ2UoKS5jcmVhdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcigqX2lt
cGwtPm1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yRm9yVGVzdGluZygpLCBbY29tcGxldGlvbkhhbmRs
ZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoYm9vbCBzdWNjZXNzKSB7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN1Y2Nlc3MpOworICAgIH0pOworI2Vsc2UKKworICAg
IGNvbXBsZXRpb25IYW5kbGVyKE5PKTsKKworI2VuZGlmCit9CisKK0BlbmQKKworI2lmIEVOQUJM
RShNRURJQV9TRVNTSU9OX0NPT1JESU5BVE9SKQorQGltcGxlbWVudGF0aW9uIFdLTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3JIZWxwZXIgeworICAgIFdlYWtQdHI8V2ViQ29yZTo6TWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3JDbGllbnQ+IG1fY29vcmRpbmF0b3JDbGllbnQ7Cit9CisKKy0gKGlkKWluaXRX
aXRoQ29vcmRpbmF0b3I6KFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yQ2xpZW50Kilj
b29yZGluYXRvcgoreworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQor
ICAgICAgICByZXR1cm4gbmlsOworICAgIG1fY29vcmRpbmF0b3JDbGllbnQgPSBtYWtlV2Vha1B0
cihjb29yZGluYXRvcik7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpc2Vla1Nlc3Np
b25Ub1RpbWU6KGRvdWJsZSl0aW1lIHdpdGhDb21wbGV0aW9uOih2b2lkKF4pKEJPT0wpKWNvbXBs
ZXRpb25IYW5kbGVyCit7CisgICAgbV9jb29yZGluYXRvckNsaWVudC0+c2Vla1Nlc3Npb25Ub1Rp
bWUodGltZSwgbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKKy0gKHZvaWQp
cGxheVNlc3Npb25XaXRoQ29tcGxldGlvbjoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxl
cgoreworICAgIG1fY29vcmRpbmF0b3JDbGllbnQtPnBsYXlTZXNzaW9uKG1ha2VCbG9ja1B0cihj
b21wbGV0aW9uSGFuZGxlcikpOworfQorCistICh2b2lkKXBhdXNlU2Vzc2lvbldpdGhDb21wbGV0
aW9uOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgbV9jb29yZGluYXRv
ckNsaWVudC0+cGF1c2VTZXNzaW9uKG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcikpOwor
fQorCistICh2b2lkKXNldFNlc3Npb25UcmFjazooTlNTdHJpbmcqKXRyYWNrSWRlbnRpZmllciB3
aXRoQ29tcGxldGlvbjoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIG1f
Y29vcmRpbmF0b3JDbGllbnQtPnNldFNlc3Npb25UcmFjayh0cmFja0lkZW50aWZpZXIsIG1ha2VC
bG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiBAZW5kCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCmluZGV4IGE0MDQxMmYzZmMwZGVi
N2ZkMTQ3Y2Y5M2ZjM2JhMjY5NDBiMThiN2QuLjc0OGIyNzQ1MWFhZjdkN2VlY2MyYzE4MDk5Nzg2
YTY3OTI4YmM1MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwuaApAQCAtMTUyLDYgKzE1Miw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgUGFnZUNs
aWVudDsKIGNsYXNzIFBhZ2VDbGllbnRJbXBsOwogY2xhc3MgRHJhd2luZ0FyZWFQcm94eTsKK2Ns
YXNzIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHlQcml2YXRlOwogY2xhc3MgU2FmZUJyb3dz
aW5nV2FybmluZzsKIGNsYXNzIFZpZXdHZXN0dXJlQ29udHJvbGxlcjsKIGNsYXNzIFZpZXdTbmFw
c2hvdDsKQEAgLTY0NSw2ICs2NDYsMTEgQEAgcHVibGljOgogICAgIHZvaWQgaGFuZGxlQ29udGV4
dE1lbnVUcmFuc2xhdGlvbihjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIGJvdW5kc0luVmlldywgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIG1lbnVMb2NhdGlvbik7
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OX0NPT1JESU5BVE9SKQorICAgIE1l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHlQcml2YXRlKiBtZWRpYVNlc3Npb25Db29yZGluYXRv
ckZvclRlc3RpbmcoKSB7IHJldHVybiBtX2Nvb3JkaW5hdG9yRm9yVGVzdGluZy5nZXQoKTsgfQor
ICAgIHZvaWQgc2V0TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JGb3JUZXN0aW5nKE1lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yUHJveHlQcml2YXRlKik7CisjZW5kaWYKKwogcHJpdmF0ZToKICNpZiBIQVZF
KFRPVUNIX0JBUikKICAgICB2b2lkIHNldFVwVGV4dFRvdWNoQmFyKE5TVG91Y2hCYXIgKik7CkBA
IC04NTEsNiArODU3LDEwIEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPFdLRE9NUGFzdGVNZW51
RGVsZWdhdGU+IG1fZG9tUGFzdGVNZW51RGVsZWdhdGU7CiAgICAgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlKT4gbV9kb21QYXN0ZVJlcXVlc3RI
YW5kbGVyOwogCisjaWYgRU5BQkxFKE1FRElBX1NFU1NJT05fQ09PUkRJTkFUT1IpCisgICAgUmVm
UHRyPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHlQcml2YXRlPiBtX2Nvb3JkaW5hdG9yRm9y
VGVzdGluZzsKKyNlbmRpZgorCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICNpbXBvcnQg
PFdlYktpdEFkZGl0aW9ucy9XZWJWaWV3SW1wbEFkZGl0aW9uc0FmdGVyLmg+CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggNmQzZDEy
OWQ1OGM2OTUwODUyMWZhZTI5NWIzNGFhNWJmNTFhOTBlNC4uODdiYWQyYjRjNDBhODM2YzEzNGZm
YTc0YjA2ODA3ZWNjYzI0NzBkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwubW0KQEAgLTEzOSw2ICsxMzksMTAgQEAKICNpbXBvcnQgPFdlYkNvcmUvSW1h
Z2VFeHRyYWN0aW9uUmVzdWx0Lmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShNRURJQV9TRVNTSU9O
X0NPT1JESU5BVE9SKQorI2luY2x1ZGUgPFdlYktpdC9NZWRpYVNlc3Npb25Db29yZGluYXRvclBy
b3h5UHJpdmF0ZS5oPgorI2VuZGlmCisKICNpZiBIQVZFKFRSQU5TTEFUSU9OX1VJX1NFUlZJQ0VT
KQogI2ltcG9ydCA8VHJhbnNsYXRpb25VSVNlcnZpY2VzL0xUVUlUcmFuc2xhdGlvblZpZXdDb250
cm9sbGVyLmg+CiAKQEAgLTU1ODIsNiArNTU4NiwxMyBAQCBib29sIFdlYlZpZXdJbXBsOjplZmZl
Y3RpdmVVc2VySW50ZXJmYWNlTGV2ZWxJc0VsZXZhdGVkKCkKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKKyNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTl9DT09SRElOQVRPUikKK3ZvaWQgV2ViVmlld0lt
cGw6OnNldE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yRm9yVGVzdGluZyhNZWRpYVNlc3Npb25Db29y
ZGluYXRvclByb3h5UHJpdmF0ZSogY29vcmRpbmF0b3IpCit7CisgICAgbV9jb29yZGluYXRvckZv
clRlc3RpbmcgPSBjb29yZGluYXRvcjsKK30KKyNlbmRpZgorCiAjaWYgSEFWRShUUkFOU0xBVElP
Tl9VSV9TRVJWSUNFUykgJiYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAKIGJvb2wgV2ViVmlld0lt
cGw6OmNhbkhhbmRsZUNvbnRleHRNZW51VHJhbnNsYXRpb24oKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWEvTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94
eVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL01lZGlhL01lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yUHJveHlQcml2YXRlLmgKaW5kZXggZTNmZmMyNDZiMzliZjE3OWU3ODdmMzZkMDRj
OTdlYjZmODM0NmNlYi4uYTgxNTIwYTYyMzhhZjY2Y2Y0ZjBjYTU5N2QyNWVmZDhlZGUyNmJjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWEvTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3JQcm94eVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRp
YS9NZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5UHJpdmF0ZS5oCkBAIC0zOCw2ICszOCw4IEBA
IHN0cnVjdCBFeGNlcHRpb25EYXRhOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAordXNpbmcgTWVk
aWFTZXNzaW9uQ29tbWFuZENvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmKT47CisKIGNsYXNzIE1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yUHJveHlQcml2YXRlCiAgICAgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eVByaXZhdGU+CiAgICAgLCBwdWJsaWMgUmVmQ291
bnRlZDxNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5UHJpdmF0ZT4gewpAQCAtNDYsMTIgKzQ4
LDEyIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgU3RyaW5nIGlkZW50aWZpZXIoKSBjb25zdCA9
IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgam9pbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlv
bmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGpvaW4oTWVkaWFTZXNzaW9uQ29tbWFuZENvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgbGVhdmUoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNlZWtUbyhkb3VibGUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4m
Jik+JiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYpPiYmKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHBhdXNlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6RXhj
ZXB0aW9uRGF0YT4mJik+JiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhY2soY29uc3Qg
U3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRp
b25EYXRhPiYmKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZWVrVG8oZG91YmxlLCBNZWRp
YVNlc3Npb25Db21tYW5kQ29tcGxldGlvbkhhbmRsZXImJikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBwbGF5KE1lZGlhU2Vzc2lvbkNvbW1hbmRDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHBhdXNlKE1lZGlhU2Vzc2lvbkNvbW1hbmRDb21wbGV0aW9uSGFuZGxlciYm
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFRyYWNrKGNvbnN0IFN0cmluZyYsIE1lZGlhU2Vz
c2lvbkNvbW1hbmRDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQg
cG9zaXRpb25TdGF0ZUNoYW5nZWQoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFQb3NpdGlv
blN0YXRlPiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVhZHlTdGF0ZUNoYW5nZWQoV2ViQ29y
ZTo6TWVkaWFTZXNzaW9uUmVhZHlTdGF0ZSkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTWVkaWEvUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRpYS9SZW1vdGVNZWRpYVNlc3Npb25Db29yZGlu
YXRvclByb3h5LmNwcAppbmRleCA5ZWRmMzNlMGMwNThmNThjYWZiOTUyZjEyMDRjNWZiZjZiNWQ3
YzZlLi5mOTAwOGU2NGNiNzlhMGMzODE0MWQxOTVkZTg4NmRjM2RjMjY4MTM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRpYS9SZW1vdGVNZWRpYVNlc3Npb25Db29yZGlu
YXRvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRpYS9SZW1vdGVN
ZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5LmNwcApAQCAtNTksNiArNTksNyBAQCBSZW1vdGVN
ZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5OjpSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRv
clByb3h5KFdlYlBhZ2VQcgogICAgICwgbV9sb2dJZGVudGlmaWVyKExvZ2dlckhlbHBlcjo6dW5p
cXVlTG9nSWRlbnRpZmllcigpKQogI2VuZGlmCiB7CisgICAgbV9wcml2YXRlQ29vcmRpbmF0b3It
PnNldENsaWVudChtYWtlV2Vha1B0cih0aGlzKSk7CiAgICAgbV93ZWJQYWdlUHJveHkucHJvY2Vz
cygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VQcm94eS53ZWJQYWdl
SUQoKSwgKnRoaXMpOwogfQogCkBAIC02Nyw3ICs2OCw3IEBAIFJlbW90ZU1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yUHJveHk6On5SZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5KCkKICAg
ICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIG1fd2ViUGFnZVByb3h5LndlYlBhZ2VJRCgpKTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVNl
c3Npb25Db29yZGluYXRvclByb3h5Ojpqb2luKENvbW1hbmRDb21wbGV0aW9uSGFuZGxlciYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5
Ojpqb2luKE1lZGlhU2Vzc2lvbkNvbW1hbmRDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGF1dG8gaWRlbnRpZmllciA9IExPR0lERU5USUZJRVI7CiAgICAgQUxX
QVlTX0xPRyhpZGVudGlmaWVyKTsKQEAgLTg1LDcgKzg2LDcgQEAgdm9pZCBSZW1vdGVNZWRpYVNl
c3Npb25Db29yZGluYXRvclByb3h5OjpsZWF2ZSgpCiAgICAgbV9wcml2YXRlQ29vcmRpbmF0b3It
PmxlYXZlKCk7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6
Y29vcmRpbmF0ZVNlZWtUbyhkb3VibGUgdGltZSwgQ29tbWFuZENvbXBsZXRpb25IYW5kbGVyJiYg
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJv
eHk6OmNvb3JkaW5hdGVTZWVrVG8oZG91YmxlIHRpbWUsIE1lZGlhU2Vzc2lvbkNvbW1hbmRDb21w
bGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gaWRlbnRpZmll
ciA9IExPR0lERU5USUZJRVI7CiAgICAgQUxXQVlTX0xPRyhpZGVudGlmaWVyLCB0aW1lKTsKQEAg
LTk2LDcgKzk3LDcgQEAgdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5Ojpj
b29yZGluYXRlU2Vla1RvKGRvdWJsZSB0aW1lLCBDb21tYW5kQ28KICAgICB9KTsKIH0KIAotdm9p
ZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5Ojpjb29yZGluYXRlUGxheShDb21t
YW5kQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6Y29vcmRpbmF0ZVBsYXkoTWVkaWFTZXNzaW9uQ29t
bWFuZENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBp
ZGVudGlmaWVyID0gTE9HSURFTlRJRklFUjsKICAgICBBTFdBWVNfTE9HKGlkZW50aWZpZXIpOwpA
QCAtMTA3LDcgKzEwOCw3IEBAIHZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94
eTo6Y29vcmRpbmF0ZVBsYXkoQ29tbWFuZENvbXBsZXRpb25IYW5kbGVyCiAgICAgfSk7CiB9CiAK
LXZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6Y29vcmRpbmF0ZVBhdXNl
KENvbW1hbmRDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1v
dGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5Ojpjb29yZGluYXRlUGF1c2UoTWVkaWFTZXNz
aW9uQ29tbWFuZENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
YXV0byBpZGVudGlmaWVyID0gTE9HSURFTlRJRklFUjsKICAgICBBTFdBWVNfTE9HKGlkZW50aWZp
ZXIpOwpAQCAtMTE4LDcgKzExOSw3IEBAIHZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JQcm94eTo6Y29vcmRpbmF0ZVBhdXNlKENvbW1hbmRDb21wbGV0aW9uSGFuZGxlCiAgICAgfSk7
CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6Y29vcmRpbmF0
ZVNldFRyYWNrKGNvbnN0IFN0cmluZyYgdHJhY2ssIENvbW1hbmRDb21wbGV0aW9uSGFuZGxlciYm
IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclBy
b3h5Ojpjb29yZGluYXRlU2V0VHJhY2soY29uc3QgU3RyaW5nJiB0cmFjaywgTWVkaWFTZXNzaW9u
Q29tbWFuZENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0
byBpZGVudGlmaWVyID0gTE9HSURFTlRJRklFUjsKICAgICBBTFdBWVNfTE9HKGlkZW50aWZpZXIp
OwpAQCAtMTQ3LDYgKzE0OCwxMiBAQCB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
UHJveHk6OnJlYWR5U3RhdGVDaGFuZ2VkKE1lZGlhU2Vzc2lvblJlYWR5U3RhdAogICAgIG1fcHJp
dmF0ZUNvb3JkaW5hdG9yLT5yZWFkeVN0YXRlQ2hhbmdlZChzdGF0ZSk7CiB9CiAKK3ZvaWQgUmVt
b3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6Y29vcmRpbmF0b3JTdGF0ZUNoYW5nZWQo
V2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZSBzdGF0ZSkKK3sKKyAgICBBTFdB
WVNfTE9HKExPR0lERU5USUZJRVIpOworICAgIG1fcHJpdmF0ZUNvb3JkaW5hdG9yLT5jb29yZGlu
YXRvclN0YXRlQ2hhbmdlZChzdGF0ZSk7Cit9CisKIHZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3JQcm94eTo6c2Vla1Nlc3Npb25Ub1RpbWUoZG91YmxlIHRpbWUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCiB7CiAgICAgbV93ZWJQYWdlUHJveHkuc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6
U2Vla1Nlc3Npb25Ub1RpbWUgeyB0aW1lIH0sIGNhbGxiYWNrKTsKQEAgLTE2NywxMiArMTc0LDYg
QEAgdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5OjpzZXRTZXNzaW9uVHJh
Y2soY29uc3QgU3RyaW5nJiB0cmFja0lkLAogICAgIG1fd2ViUGFnZVByb3h5LnNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OlNldFNlc3Np
b25UcmFjayB7IHRyYWNrSWQgfSwgY2FsbGJhY2spOwogfQogCi12b2lkIFJlbW90ZU1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yUHJveHk6OmNvb3JkaW5hdG9yU3RhdGVDaGFuZ2VkKFdlYkNvcmU6Ok1l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGUgc3RhdGUpCi17Ci0gICAgQUxXQVlTX0xPRyhMT0dJ
REVOVElGSUVSKTsKLSAgICBtX3ByaXZhdGVDb29yZGluYXRvci0+Y29vcmRpbmF0b3JTdGF0ZUNo
YW5nZWQoc3RhdGUpOwotfQotCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiBXVEZMb2dDaGFu
bmVsJiBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5Ojpsb2dDaGFubmVsKCkgY29u
c3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL01lZGlhL1JlbW90ZU1l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL01l
ZGlhL1JlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHkuaAppbmRleCBhZmIyZjVkYTBk
NGI5M2Y3ZTE1MWVjNDFkZmE4ZWM4MjIzMWQ3Y2RkLi5kZWI3NzhlNzkzOTgzYmU0MWNiMzNhNWQ1
YWNkNmEyMDRkOTE3N2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRp
YS9SZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTWVkaWEvUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eS5oCkBA
IC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZVByb3h5Owog
CiBjbGFzcyBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5Ci0gICAgOiBwdWJsaWMg
SVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIK
ICAgICAsIHB1YmxpYyBSZWZDb3VudGVkPFJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJv
eHk+CiAgICAgLCBwdWJsaWMgV2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JDbGllbnQg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNjAsMTkgKzYwLDE2IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQ
cm94eShXZWJQYWdlUHJveHkmLCBSZWY8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eVByaXZh
dGU+JiYpOwogCi0gICAgdXNpbmcgQ29vcmRpbmF0ZUNvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJik+OwotCiAgICAg
Ly8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIuCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAogICAgIC8vIFJlY2VpdmVy
cy4KLSAgICB1c2luZyBDb21tYW5kQ29tcGxldGlvbkhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYpPjsKLSAgICB2b2lkIGpv
aW4oQ29tbWFuZENvbXBsZXRpb25IYW5kbGVyJiYpOworICAgIHZvaWQgam9pbihNZWRpYVNlc3Np
b25Db21tYW5kQ29tcGxldGlvbkhhbmRsZXImJik7CiAgICAgdm9pZCBsZWF2ZSgpOwotICAgIHZv
aWQgY29vcmRpbmF0ZVNlZWtUbyhkb3VibGUsIENvbW1hbmRDb21wbGV0aW9uSGFuZGxlciYmKTsK
LSAgICB2b2lkIGNvb3JkaW5hdGVQbGF5KENvbW1hbmRDb21wbGV0aW9uSGFuZGxlciYmKTsKLSAg
ICB2b2lkIGNvb3JkaW5hdGVQYXVzZShDb21tYW5kQ29tcGxldGlvbkhhbmRsZXImJik7Ci0gICAg
dm9pZCBjb29yZGluYXRlU2V0VHJhY2soY29uc3QgU3RyaW5nJiwgQ29tbWFuZENvbXBsZXRpb25I
YW5kbGVyJiYpOworICAgIHZvaWQgY29vcmRpbmF0ZVNlZWtUbyhkb3VibGUsIE1lZGlhU2Vzc2lv
bkNvbW1hbmRDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2b2lkIGNvb3JkaW5hdGVQbGF5KE1l
ZGlhU2Vzc2lvbkNvbW1hbmRDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2b2lkIGNvb3JkaW5h
dGVQYXVzZShNZWRpYVNlc3Npb25Db21tYW5kQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAgdm9p
ZCBjb29yZGluYXRlU2V0VHJhY2soY29uc3QgU3RyaW5nJiwgTWVkaWFTZXNzaW9uQ29tbWFuZENv
bXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQgcG9zaXRpb25TdGF0ZUNoYW5nZWQoY29uc3Qg
T3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFQb3NpdGlvblN0YXRlPiYpOwogICAgIHZvaWQgcmVhZHlT
dGF0ZUNoYW5nZWQoV2ViQ29yZTo6TWVkaWFTZXNzaW9uUmVhZHlTdGF0ZSk7CiAgICAgdm9pZCBw
bGF5YmFja1N0YXRlQ2hhbmdlZChXZWJDb3JlOjpNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGM0NmYxN2FiZjg2
NzI2MzA5ODgzZjBkNjQwYzc2NDczNjAzOWVlZGYuLjY5NzdlMzY0MmMzMTIwYWRlMWNhOTJkNzJi
YzFlNjgxOGZlMDgzMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cApAQCAtMTA0MDMsMTkgKzEwNDAzLDE5IEBAIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5
IFdlYlBhZ2VQcm94eTo6Y3JlYXRlTmV0d29ya0V4dGVuc2lvbnNTYW5kYm94RXh0ZW5zCiAjZW5k
aWYKIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OX0NPT1JESU5BVE9SKQotdm9pZCBXZWJQYWdl
UHJveHk6OmNyZWF0ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKFJlZjxNZWRpYVNlc3Npb25Db29y
ZGluYXRvclByb3h5UHJpdmF0ZT4mJiBwcml2YXRlQ29vcmRpbmF0b3IsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoV2Vha1B0cjxSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5Pik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3IoUmVmPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHlQcml2YXRlPiYmIHBy
aXZhdGVDb29yZGluYXRvciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIW1fbWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94
eSk7CiAKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkNyZWF0ZU1l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKHByaXZhdGVDb29yZGluYXRvci0+aWRlbnRpZmllcigpKSwg
W3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBwcml2YXRlQ29vcmRpbmF0b3IgPSBXVEZN
b3ZlKHByaXZhdGVDb29yZGluYXRvciksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKGJvb2wgc3VjY2VzcykgbXV0YWJsZSB7CiAKICAgICAgICAgaWYgKCF3
ZWFrVGhpcyB8fCAhc3VjY2VzcykgewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9
KTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCiAgICAgICAgIHdlYWtUaGlzLT5tX21lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yUHJveHkgPSBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5OjpjcmVhdGUo
KndlYWtUaGlzLCBXVEZNb3ZlKHByaXZhdGVDb29yZGluYXRvcikpOwotICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihtYWtlV2Vha1B0cih3ZWFrVGhpcy0+bV9tZWRpYVNlc3Npb25Db29yZGluYXRv
clByb3h5LmdldCgpKSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOwogICAgIH0p
OwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDNk
Mzg4YTcyY2Q2NzBhNWUxMDg2NjlkYTRhOTVjNDFiNWM2ZWE4ODEuLjU5MjhkMDVmYmJkOTdmNDM2
NGM0Yjc3NTgyNjA0NThlMzc5ZTJjZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCkBAIC0xODkyLDcgKzE4OTIsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShNRURJQV9TRVNTSU9OX0NPT1JESU5BVE9SKQotICAgIHZvaWQgY3JlYXRlTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3IoUmVmPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHlQcml2YXRlPiYmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYWtQdHI8UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JQcm94eT4pPiYmKTsKKyAgICB2b2lkIGNyZWF0ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKFJl
ZjxNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5UHJpdmF0ZT4mJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzVjMTc0
Y2Y3ZGI4OTEzZDg1MmZmNDljYTJlNGI3ZjJmNTkwNjNiNi4uM2I0YTFiZTM3MzQ4ZTdhODYxYTkz
OWE4YjIzMjRiY2IyYWYyODc5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDUsOSArMTA1LDkgQEAKIAkJMDcyOTdGQTMxQzE4NkFE
QjAwM0YwNzM1IC8qIFdLVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzI5N0ZBMTFDMTg2QURCMDAzRjA3MzUg
LyogV0tVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwNzQ4NzlCOTIzNzNBOTA5MDBGNTY3OEUgLyogQXBw
S2l0U29mdExpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA3NDg3OUI3MjM3M0E5MDkwMEY1Njc4RSAvKiBBcHBLaXRTb2Z0TGluay5oICovOyB9Owog
CQkwNzRFNzVGRTFERjIyMTE5MDBEMzE4RUMgLyogVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NEU3NUZCMURG
MUZEMTMwMEQzMThFQyAvKiBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5oICovOyB9OworCQkwNzVB
OUNGMzI2MTY5QkFCMDA2REZBM0EgLyogTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94eVByaXZh
dGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3N0JB
NTcwMjYwRThGNjMwMDcyRjE5RiAvKiBNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5UHJpdmF0
ZS5oICovOyB9OwogCQkwNzZFODg0RTFBMTNDQURGMDA1RTkwRkMgLyogQVBJQ29udGV4dE1lbnVD
bGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3
NkU4ODREMUExM0NBREYwMDVFOTBGQyAvKiBBUElDb250ZXh0TWVudUNsaWVudC5oICovOyB9Owog
CQkwNzcyODExRDIxMjM0RkY2MDBDOEVGMkUgLyogVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
QTQxMEY0MzE5QUY3QjI3MDAyRUJBQjUgLyogVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyLmggKi87IH07Ci0JCTA3N0JBNTZFMjYwRTZEMUMwMDcyRjE5RiAvKiBSZW1vdGVNZWRpYVNl
c3Npb25Db29yZGluYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwNzM2Qjc1NTI2MEQwM0EwMDBFMDY5OTQgLyogUmVtb3RlTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3IuY3BwICovOyB9OwogCQkwNzkyMzE0ODIzOUNCQ0I4MDA5NTk4RTIgLyogUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3OTIzMTQyMjM5Q0JDQjUwMDk1OThF
MiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5oICovOyB9
OwogCQkwNzkyMzE0QjIzOUNCQ0I4MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDc5MjMxNDUyMzlDQkNCNzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJMDc5MjMxNEMyMzlD
QkNCODAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3OTIzMTQ2MjM5
Q0JDQjcwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzLmgg
Ki87IH07CkBAIC0xODY0LDcgKzE4NjQsNiBAQAogCQlDRDBDNjgzMTIwMUZEMTAxMDBBNTk0MDkg
LyogV0tGdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMEM2ODJGMjAxRkQxMDEwMEE1OTQwOSAvKiBXS0Z1bGxT
Y3JlZW5WaWV3Q29udHJvbGxlci5oICovOyB9OwogCQlDRDE5QTI2RTFBMTNFODM0MDA4RDY1MEUg
LyogV2ViRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMTlBMjZBMUExM0U4MjEwMDhENjUwRSAvKiBXZWJEaWFn
bm9zdGljTG9nZ2luZ0NsaWVudC5oICovOyB9OwogCQlDRDE5RDJFQTIwNDY0MDZGMDAxNzA3NEEg
LyogRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDE5RDJFODIwNDY0MDZGMDAxNzA3NEEgLyogRnVsbHNj
cmVlblRvdWNoU2VjaGV1cmlzdGljLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKLQkJQ0QxRkUyRDcyNjEzRTE4NjAwQURDMjlCIC8qIFJlbW90ZU1lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yUHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDczNkI3NUMyNjBENEE0RTAwRTA2OTk0IC8qIFJlbW90ZU1lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yUHJveHkuY3BwICovOyB9OwogCQlDRDNFRUY0NjI1NzlDMjYxMDA2
NTYzQkIgLyogUmVtb3RlTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeVByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEM0VFRjQ0MjU3OUMxRDQwMDY1NjNCQiAvKiBSZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3Vy
YXRpb25GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQlDRDQ1NzBEMzI0
NDExM0I1MDBBM0RDRUIgLyogQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRDQ1NzBEMDI0NDEwMTRBMDBBM0RDRUIgLyogQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0
cmF0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCUNENDU3MEQ0MjQ0MTFEMEYw
MEEzRENFQiAvKiBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDQ1NzBDQjI0NDBGQjJBMDBBM0RD
RUIgLyogQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3IuY3BwICovOyB9OwpAQCAtOTI2OCwx
MCArOTI2NywxMCBAQAogCQkJCTUzMjE1OTRGMURCQUU2RDcwMDU0QUEzQyAvKiBOZXR3b3JrRGF0
YVRhc2tDb2NvYS5oICovLAogCQkJCTVDQkM5QjhCMUM2NTI1NzMwMEE4RkRDRiAvKiBOZXR3b3Jr
RGF0YVRhc2tDb2NvYS5tbSAqLywKIAkJCQk3RUM0RjBGOTE4RTRBOTQ1MDA4MDU2QUYgLyogTmV0
d29ya1Byb2Nlc3NDb2NvYS5tbSAqLywKLQkJCQk1MzIxNTk1MDFEQkFFNkQ3MDA1NEFBM0MgLyog
TmV0d29ya1Nlc3Npb25Db2NvYS5oICovLAotCQkJCTVDMjBDQjlCMUJCMERDRDIwMDg5NUJCMSAv
KiBOZXR3b3JrU2Vzc2lvbkNvY29hLm1tICovLAogCQkJCTUxODMyNDc4MjYxNUIwMEQwMDNGMjM5
RSAvKiBOZXR3b3JrU2NoZW1lVVJMUHJvdG9jb2wuaCAqLywKIAkJCQk1MTgzMjQ3OTI2MTVCMDBE
MDAzRjIzOUUgLyogTmV0d29ya1NjaGVtZVVSTFByb3RvY29sLm1tICovLAorCQkJCTUzMjE1OTUw
MURCQUU2RDcwMDU0QUEzQyAvKiBOZXR3b3JrU2Vzc2lvbkNvY29hLmggKi8sCisJCQkJNUMyMENC
OUIxQkIwRENEMjAwODk1QkIxIC8qIE5ldHdvcmtTZXNzaW9uQ29jb2EubW0gKi8sCiAJCQkJNDEy
ODdENEMyMjVDMDVDNTAwOUEzRTI2IC8qIFdlYlNvY2tldFRhc2tDb2NvYS5oICovLAogCQkJCTQx
Mjg3RDRCMjI1QzA1QzQwMDlBM0UyNiAvKiBXZWJTb2NrZXRUYXNrQ29jb2EubW0gKi8sCiAJCQkp
OwpAQCAtMTE2NzYsNyArMTE2NzUsNiBAQAogCQkJCTMxN0ZFN0M1MUM0ODdBNkMwMEEwQ0E4OSAv
KiBBUElFeHBlcmltZW50YWxGZWF0dXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwMEI5NjYxNjE4
RTI0Q0JBMDBDRTFGODggLyogQVBJRmluZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRE
NjdBMkUxQkQ4MTk3MzAwNTNCMjUxIC8qIEFQSUZpbmRNYXRjaGVzQ2xpZW50LmggaW4gSGVhZGVy
cyAqLywKLQkJCQk1MTgzMjQ3RDI2MTY4RkY3MDAzRjIzOUUgLyogTmV0d29ya1VSTFNjaGVtZVRh
c2suaCBpbiBIZWFkZXJzICovLAogCQkJCTM3RTI1RDZFMThGREU1RDYwMDVEM0EwMCAvKiBBUElG
b3JtQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUMxMzM3MjE4NTY2QzdDMDBGM0VDMDUg
LyogQVBJRnJhbWVIYW5kbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTJERjlFRUU2MUE3ODFGQjQw
MEI2Q0ZCRSAvKiBBUElGcmFtZUluZm8uaCBpbiBIZWFkZXJzICovLApAQCAtMTE5MjksNiArMTE5
MjcsNyBAQAogCQkJCTA3RTE5RUZEMjNENDAxRjEwMDk0RkZCNCAvKiBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGVNZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUExQjREQ0UxMjVB
NzkyM0MwMDdEMTc4QyAvKiBNZWRpYVNhbXBsZUJ5dGVSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTE1Nzk5QkQyNTg0NDMzMjAwNTI4MjM2IC8qIE1lZGlhU2FtcGxlQ3Vyc29yLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwNzVBOUNGMzI2MTY5QkFCMDA2REZBM0EgLyogTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3JQcm94eVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUExNTc5OUI3MjU4NDQz
MzIwMDUyODIzNiAvKiBNZWRpYVRyYWNrUmVhZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTkz
M0RFRjE5NjVFQjMxMDA4QUMzRUEgLyogTWVudVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOUI0NzkwOEQyNTMxNEQ4MzAwRUMxMUFCIC8qIE1lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9u
cy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTk5Nyw2ICsxMTk5Niw4IEBACiAJCQkJNUMyMENCQTAx
QkIxRUNEODAwODk1QkIxIC8qIE5ldHdvcmtTZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MzIxNTk1NTFEQkFFNzI5MDA1NEFBM0MgLyogTmV0d29ya1Nlc3Npb25Db2NvYS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDE3OTE1QjkyMjU3MDQ2RjAwRDZGOTdFIC8qIE5ldHdvcmtTb2NrZXRDaGFu
bmVsLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTgzMjQ3QzI2MTY4QzYyMDAzRjIzOUUgLyogTmV0
d29ya1VSTFNjaGVtZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxODMyNDdEMjYxNjhG
RjcwMDNGMjM5RSAvKiBOZXR3b3JrVVJMU2NoZW1lVGFzay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTcwREFBQzIyMzAzNzMwMzAwRThGQzA0IC8qIE5mY0Nvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTU3MERBQUFFMjMwMjZGNUMwMEU4RkMwNCAvKiBOZmNTZXJ2aWNlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkzMUEyRUM1NjE0ODk5QzA5MDA4MTBENzEgLyogTm90aWZpY2F0aW9uUGVybWlz
c2lvblJlcXVlc3QuaCBpbiBIZWFkZXJzICovLApAQCAtMTI4MjcsNyArMTI4MjgsNiBAQAogCQkJ
CTBGQ0I0RTY4MThCQkUzRDkwMDBGQ0ZDOSAvKiBXS1RleHRJbnB1dFdpbmRvd0NvbnRyb2xsZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUNFMjEyMTVGMjQwRUU1NzEwMDZFRDQ0MyAvKiBXS1RleHRQ
bGFjZWhvbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0U0NTk0NUMyNDBGODg1NTAwNzgwMTlG
IC8qIFdLVGV4dFNlbGVjdGlvblJlY3QuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxODMyNDdDMjYx
NjhDNjIwMDNGMjM5RSAvKiBOZXR3b3JrVVJMU2NoZW1lSGFuZGxlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMkVCNkZDMDEyMDMwMjE5NjAwMTdFNjE5IC8qIFdLVGltZVBpY2tlclZpZXdDb250cm9s
bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MUE2NzZBNjIyQzYyMzI1MDA3RDYyOTUgLyogV0tU
b3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQwNzYw
ODEyNEZGMDI3MDA2OEYyMEEgLyogV0tUeXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTE0MDA1LDgg
KzE0MDA1LDYgQEAKIAkJCQkwNzAxNzg5RTIzQkU5Q0ZDMDA1RjBGQUEgLyogUmVtb3RlTWVkaWFQ
bGF5ZXJNSU1FVHlwZUNhY2hlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3MUJDNThGMjNDRTFF
QUEwMDY4MEQ3QyAvKiBSZW1vdGVNZWRpYVBsYXllclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTFENEQ3MzcwMjNBOUU1NDcwMDcxN0EyNSAvKiBSZW1vdGVNZWRp
YVJlc291cmNlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkw
NzdCQTU2RTI2MEU2RDFDMDA3MkYxOUYgLyogUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQ0QxRkUyRDcyNjEzRTE4NjAwQURDMjlCIC8qIFJlbW90
ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMURE
MkE2NjMyNTYxMjQ2RjAwRkY3QjZGIC8qIFJlbW90ZU1lZGlhU291cmNlUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFDMTMzODUxODU5MEM0NjAwRjNFQzA1IC8q
IFJlbW90ZU9iamVjdFJlZ2lzdHJ5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUNEODI1MkUyMjVENDkxOTEwMDg2MkZEOCAvKiBSZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVu
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTZXNzaW9uL1JlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVNlc3Npb24vUmVtb3RlTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3IuY3BwCmluZGV4IDBjYzNmODFjZjFmNGE2YjU5YzYzNjg3YzZi
MjI5N2VmNWQyYjQ4NDUuLjNiOWY1MTM2M2ViZTRiOTNlNGQ0NmQ3YWZmNzYzMTYxOWIxMjlmODAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVNlc3Npb24vUmVtb3Rl
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9NZWRpYVNlc3Npb24vUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuY3BwCkBAIC03Miwx
NyArNzIsMTcgQEAgdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6am9pbihDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmUKICAgICAgICAgfQogCiAgICAgICAg
IGlmIChleGNlcHRpb24pIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKEV4Y2VwdGlvbiB7IGV4Y2Vw
dGlvbi0+Y29kZSwgV1RGTW92ZShleGNlcHRpb24tPm1lc3NhZ2UpIH0pOworICAgICAgICAgICAg
Y2FsbGJhY2soZXhjZXB0aW9uLT50b0V4Y2VwdGlvbigpKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCiAgICAgICAgIGNhbGxiYWNrKHsgfSk7Ci0gICAgfSwgMCk7CisgICAgfSk7
CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OmxlYXZlKCkKIHsKLSAg
ICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcm94
eTo6TGVhdmUgeyB9LCAwKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3JQcm94eTo6TGVhdmUgeyB9KTsKIH0KIAogdm9pZCBSZW1vdGVNZWRp
YVNlc3Npb25Db29yZGluYXRvcjo6c2Vla1RvKGRvdWJsZSB0aW1lLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbj4mJik+JiYgY2FsbGJhY2spCkBAIC05
NSwxMiArOTUsMTIgQEAgdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcjo6c2Vla1Rv
KGRvdWJsZSB0aW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE8KICAgICAgICAgfQogCiAgICAg
ICAgIGlmIChleGNlcHRpb24pIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKEV4Y2VwdGlvbiB7IGV4
Y2VwdGlvbi0+Y29kZSwgV1RGTW92ZShleGNlcHRpb24tPm1lc3NhZ2UpIH0pOworICAgICAgICAg
ICAgY2FsbGJhY2soZXhjZXB0aW9uLT50b0V4Y2VwdGlvbigpKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCiAgICAgICAgIGNhbGxiYWNrKHsgfSk7Ci0gICAgfSwgMCk7CisgICAg
fSk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnBsYXkoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb24+JiYpPiYmIGNhbGxi
YWNrKQpAQCAtMTEzLDEyICsxMTMsMTIgQEAgdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29yZGlu
YXRvcjo6cGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmUKICAgICAg
ICAgfQogCiAgICAgICAgIGlmIChleGNlcHRpb24pIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKEV4
Y2VwdGlvbiB7IGV4Y2VwdGlvbi0+Y29kZSwgV1RGTW92ZShleGNlcHRpb24tPm1lc3NhZ2UpIH0p
OworICAgICAgICAgICAgY2FsbGJhY2soZXhjZXB0aW9uLT50b0V4Y2VwdGlvbigpKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGNhbGxiYWNrKHsgfSk7Ci0gICAg
fSwgMCk7CisgICAgfSk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6
OnBhdXNlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9u
PiYmKT4mJiBjYWxsYmFjaykKQEAgLTEzMSwxMiArMTMxLDEyIEBAIHZvaWQgUmVtb3RlTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3I6OnBhdXNlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8
V2ViQ29yCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgICAg
ICBjYWxsYmFjayhFeGNlcHRpb24geyBleGNlcHRpb24tPmNvZGUsIFdURk1vdmUoZXhjZXB0aW9u
LT5tZXNzYWdlKSB9KTsKKyAgICAgICAgICAgIGNhbGxiYWNrKGV4Y2VwdGlvbi0+dG9FeGNlcHRp
b24oKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBjYWxsYmFj
ayh7IH0pOwotICAgIH0sIDApOworICAgIH0pOwogfQogCiB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yOjpzZXRUcmFjayhjb25zdCBTdHJpbmcmIHRyYWNrSWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb24+JiYpPiYmIGNh
bGxiYWNrKQpAQCAtMTQ5LDM2ICsxNDksMzYgQEAgdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25Db29y
ZGluYXRvcjo6c2V0VHJhY2soY29uc3QgU3RyaW5nJiB0cmFja0lkZW50aWZpZXIsIENvbXAKICAg
ICAgICAgfQogCiAgICAgICAgIGlmIChleGNlcHRpb24pIHsKLSAgICAgICAgICAgIGNhbGxiYWNr
KEV4Y2VwdGlvbiB7IGV4Y2VwdGlvbi0+Y29kZSwgV1RGTW92ZShleGNlcHRpb24tPm1lc3NhZ2Up
IH0pOworICAgICAgICAgICAgY2FsbGJhY2soZXhjZXB0aW9uLT50b0V4Y2VwdGlvbigpKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGNhbGxiYWNrKHsgfSk7Ci0g
ICAgfSwgMCk7CisgICAgfSk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3I6OnBvc2l0aW9uU3RhdGVDaGFuZ2VkKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhUG9z
aXRpb25TdGF0ZT4mIHN0YXRlKQogewogICAgIEFMV0FZU19MT0dfSUZfUE9TU0lCTEUoTE9HSURF
TlRJRklFUik7Ci0gICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yUHJveHk6OlBvc2l0aW9uU3RhdGVDaGFuZ2VkIHsgc3RhdGUgfSwgMCk7CisgICAg
bV9wYWdlLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6
OlBvc2l0aW9uU3RhdGVDaGFuZ2VkIHsgc3RhdGUgfSk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3I6OnJlYWR5U3RhdGVDaGFuZ2VkKFdlYkNvcmU6Ok1lZGlhU2Vzc2lv
blJlYWR5U3RhdGUgc3RhdGUpCiB7CiAgICAgQUxXQVlTX0xPR19JRl9QT1NTSUJMRShMT0dJREVO
VElGSUVSLCBzdGF0ZSk7Ci0gICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yUHJveHk6OlJlYWR5U3RhdGVDaGFuZ2VkIHsgc3RhdGUgfSwgMCk7Cisg
ICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJv
eHk6OlJlYWR5U3RhdGVDaGFuZ2VkIHsgc3RhdGUgfSk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3I6OnBsYXliYWNrU3RhdGVDaGFuZ2VkKFdlYkNvcmU6Ok1lZGlhU2Vz
c2lvblBsYXliYWNrU3RhdGUgc3RhdGUpCiB7CiAgICAgQUxXQVlTX0xPR19JRl9QT1NTSUJMRShM
T0dJREVOVElGSUVSLCBzdGF0ZSk7Ci0gICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OlBsYXliYWNrU3RhdGVDaGFuZ2VkIHsgc3RhdGUg
fSwgMCk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yUHJveHk6OlBsYXliYWNrU3RhdGVDaGFuZ2VkIHsgc3RhdGUgfSk7CiB9CiAKIHZvaWQg
UmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OmNvb3JkaW5hdG9yU3RhdGVDaGFuZ2VkKFdl
YkNvcmU6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yU3RhdGUgc3RhdGUpCiB7CiAgICAgQUxXQVlT
X0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCBzdGF0ZSk7Ci0gICAgbV9wYWdlLnNlbmQo
TWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OkNvb3JkaW5hdG9y
U3RhdGVDaGFuZ2VkIHsgc3RhdGUgfSwgMCk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OlJl
bW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHk6OkNvb3JkaW5hdG9yU3RhdGVDaGFuZ2Vk
IHsgc3RhdGUgfSk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OnNl
ZWtTZXNzaW9uVG9UaW1lKGRvdWJsZSB0aW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDI3Y2ExYjNjYWFmZDRiOTc3Y2I4MWU3OGZjNWQxY2FkMWUyZDY5
MzYuLjk4ZGRkYTJiN2U3YzFkMDQ1ZGEyMzM5YTU5YzEzZGM5YzA5NGNlYzcgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NiBAQAor
MjAyMS0wNC0wNiAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAg
ICAgICBbbWFjT1NdIEFkZCBNZWRpYVNlc3Npb25Db29yZGluYXRvciBBUEkgdGVzdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0MTQwCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS83NjE3MTE3Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBKZXIgTm9i
bGUuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvVGVzdFdlYktpdEFQSS54Y3NjaGVtZToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9NZWRpYVNlc3Npb25Db29yZGluYXRv
clRlc3QubW06IEFkZGVkLgorICAgICAgICAoLVtfV0tNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3IgbGFzdFN0YXRlQ2hhbmdlXSk6CisgICAgICAgICgtW19XS01vY2tNZWRpYVNlc3Npb25Db29y
ZGluYXRvciBsYXN0TWV0aG9kQ2FsbGVkXSk6CisgICAgICAgICgtW19XS01vY2tNZWRpYVNlc3Np
b25Db29yZGluYXRvciBpZGVudGlmaWVyXSk6CisgICAgICAgICgtW19XS01vY2tNZWRpYVNlc3Np
b25Db29yZGluYXRvciBqb2luV2l0aENvbXBsZXRpb246XSk6CisgICAgICAgICgtW19XS01vY2tN
ZWRpYVNlc3Npb25Db29yZGluYXRvciBsZWF2ZV0pOgorICAgICAgICAoLVtfV0tNb2NrTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3Igc2Vla1RvOndpdGhDb21wbGV0aW9uOl0pOgorICAgICAgICAoLVtf
V0tNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IgcGxheVdpdGhDb21wbGV0aW9uOl0pOgorICAg
ICAgICAoLVtfV0tNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IgcGF1c2VXaXRoQ29tcGxldGlv
bjpdKToKKyAgICAgICAgKC1bX1dLTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yIHNldFRyYWNr
OndpdGhDb21wbGV0aW9uOl0pOgorICAgICAgICAoLVtfV0tNb2NrTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3IgcG9zaXRpb25TdGF0ZUNoYW5nZWQ6XSk6CisgICAgICAgICgtW19XS01vY2tNZWRpYVNl
c3Npb25Db29yZGluYXRvciByZWFkeVN0YXRlQ2hhbmdlZDpdKToKKyAgICAgICAgKC1bX1dLTW9j
a01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yIHBsYXliYWNrU3RhdGVDaGFuZ2VkOl0pOgorICAgICAg
ICAoLVtfV0tNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IgY29vcmRpbmF0b3JTdGF0ZUNoYW5n
ZWQ6XSk6CisgICAgICAgICgtW19XS01vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvciBzZWVrU2Vz
c2lvblRvVGltZTpdKToKKyAgICAgICAgKC1bX1dLTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
IHBsYXlTZXNzaW9uXSk6CisgICAgICAgICgtW19XS01vY2tNZWRpYVNlc3Npb25Db29yZGluYXRv
ciBwYXVzZVNlc3Npb25dKToKKyAgICAgICAgKC1bX1dLTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yIHNldFNlc3Npb25UcmFjazpdKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yVGVzdDo6Y3JlYXRlQ29vcmRpbmF0b3IpOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JUZXN0Ojp3ZWJWaWV3IGNvbnN0KToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdDo6Y29vcmRp
bmF0b3IgY29uc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3JUZXN0Ojpsb2FkUGFnZUFuZEJlY29tZVJlYWR5KToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdDo6cnVuU2NyaXB0V2l0aFVzZXJHZXN0dXJl
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdDo6
cGxheSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25Db29yZGluYXRvclRl
c3Q6OnBhdXNlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yVGVzdDo6bGlzdGVuRm9yRXZlbnRNZXNzYWdlcyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpNZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3Q6OmV2ZW50TGlzdGVuZXJXYXNDYWxsZWQpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JUZXN0OjpjbGVh
ckV2ZW50TGlzdGVuZXJTdGF0ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Np
b25Db29yZGluYXRvclRlc3Q6OmV4ZWN1dGVVbnRpbCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpNZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3Q6OndhaXRGb3JFdmVudExpc3RlbmVyVG9CZUNh
bGxlZCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25Db29yZGluYXRvclRl
c3Q6Omxpc3RlbkZvck1lc3NhZ2VzUG9zdGVkKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdDo6Y2xlYXJNZXNzYWdlc1Bvc3RlZCk6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3Q6Omxpc3RlbkZvclNl
c3Npb25IYW5kbGVyTWVzc2FnZXMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3JUZXN0OjpzZXNzaW9uSGFuZGxlcldhc0NhbGxlZCk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3Q6OndhaXRGb3JTZXNzaW9u
SGFuZGxlclRvQmVDYWxsZWQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3JUZXN0OjpsaXN0ZW5Gb3JQcm9taXNlTWVzc2FnZXMpOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JUZXN0OjpjbGVhclByb21pc2VNZXNz
YWdlcyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25Db29yZGluYXRvclRl
c3Q6OnByb21pc2VXYXNSZXNvbHZlZCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNZWRpYVNl
c3Npb25Db29yZGluYXRvclRlc3Q6OnByb21pc2VXYXNSZWplY3RlZCk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpNZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3Q6OndhaXRGb3JQcm9taXNlKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9tZWRpYS1yZW1vdGUuaHRtbDoKKwogMjAyMS0wNC0wNiAgUGhp
bGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV0gRW5h
YmxlIENvZydzIEdUSzQgYmFja2VuZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1NmVjZWZl
ZTYxZDZkMmM2NTM3ODQwOGJmZTdlZWY5NDU2NjgyZTkyLi4zNDM4MjRjYTI5OTY0YTdmZDQ3ZmUx
NTJmNzEzYTRmMDMzNTQ5NjlmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTQsNiArNTQs
NyBAQAogCQkwNzQ5OTQ0MjFFQTUwMzRCMDAwREE0NEYgLyogb25kZXZpY2VjaGFuZ2UuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTQx
MEY0RDE5QUY3QkVGMDAyRUJBQjYgLyogb25kZXZpY2VjaGFuZ2UuaHRtbCAqLzsgfTsKIAkJMDc0
OTk0NDIxRUE1MDM0QjAwMERBNDVFIC8qIGdldFVzZXJNZWRpYUF1ZGlvVmlkZW9DYXB0dXJlLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NEE0MTBGNEQxOUFGN0JFRjAwMkVCQUM1IC8qIGdldFVzZXJNZWRpYUF1ZGlvVmlkZW9DYXB0dXJl
Lmh0bWwgKi87IH07CiAJCTA3NDk5NDUyMUVBNTAzNEIwMDBEQTQ0RSAvKiBnZXRVc2VyTWVkaWEy
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDFCQUY0RTIyNUFDOURCODAwRDgyRjMyIC8qIGdldFVzZXJNZWRpYTIuaHRtbCAqLzsgfTsK
KwkJMDc1QTlDRjUyNjE3NzIxODAwNkRGQTNBIC8qIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVz
dC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NUE5
Q0Y0MjYxNzcyMTcwMDZERkEzQSAvKiBNZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3QubW0gKi87
IH07CiAJCTA3NkU1MDdGMUY0NTEzRDYwMDZFOUY1QSAvKiBMb2dnaW5nLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NkU1MDdFMUY0NTAzMUUwMDZF
OUY1QSAvKiBMb2dnaW5nLmNwcCAqLzsgfTsKIAkJMDc3QTVBRjMyMzA2MzhBNjAwQTcxMDVDIC8q
IEFjY2Vzc2liaWxpdHlUZXN0UGx1Z2luLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDc0NjY0NTgyMkZGNjMwNTAwRTM0NTFBIC8qIEFjY2Vzc2liaWxp
dHlUZXN0UGx1Z2luLm1tICovOyB9OwogCQkwNzk0NzQwRDI1Q0EwQkRFMDBDNTk3RUIgLyogTWVk
aWFTZXNzaW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDc5NDc0MEMyNUNBMEJERTAwQzU5N0VCIC8qIE1lZGlhU2Vzc2lvbi5tbSAqLzsgfTsKQEAg
LTE3NjAsNiArMTc2MSw3IEBACiAJCTA3NDY2NDU4MjJGRjYzMDUwMEUzNDUxQSAvKiBBY2Nlc3Np
YmlsaXR5VGVzdFBsdWdpbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlU
ZXN0UGx1Z2luLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzQ5MkIzOTFERjhB
REE0MDA2MzNERTEgLyogZW51bWVyYXRlTWVkaWFEZXZpY2VzLmh0bWwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
Lmh0bWw7IHBhdGggPSBlbnVtZXJhdGVNZWRpYURldmljZXMuaHRtbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMDc0OTJCM0ExREY4QUUyRDAwNjMzREUxIC8qIEVudW1lcmF0ZU1lZGlh
RGV2aWNlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFbnVtZXJh
dGVNZWRpYURldmljZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzVBOUNG
NDI2MTc3MjE3MDA2REZBM0EgLyogTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JUZXN0Lm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JUZXN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzY2REQxRjFBNUFENTIw
MDAyM0UzQkIgLyogUGVuZGluZ0FQSVJlcXVlc3RVUkwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUGVuZGluZ0FQSVJlcXVlc3RVUkwuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwNzZFNTA3RTFGNDUwMzFFMDA2RTlGNUEgLyogTG9nZ2luZy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2dnaW5nLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc5NDc0MEMyNUNBMEJERTAwQzU5N0VCIC8qIE1lZGlh
U2Vzc2lvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lZGlh
U2Vzc2lvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyNzQsNiArNDI3Niw3
IEBACiAJCQkJMzNEQzg5MTAxNDE5NTNBMzAwNzQ3RUY3IC8qIExvYWRDYW5jZWxlZE5vU2VydmVy
UmVkaXJlY3RDYWxsYmFjay5jcHAgKi8sCiAJCQkJMzNEQzg5MTMxNDE5NTc5RjAwNzQ3RUY3IC8q
IExvYWRDYW5jZWxlZE5vU2VydmVyUmVkaXJlY3RDYWxsYmFja19CdW5kbGUuY3BwICovLAogCQkJ
CThBQTI4QzE5MTZEMkZBN0IwMDJGRjREQiAvKiBMb2FkUGFnZU9uQ3Jhc2guY3BwICovLAorCQkJ
CTA3NUE5Q0Y0MjYxNzcyMTcwMDZERkEzQSAvKiBNZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3Qu
bW0gKi8sCiAJCQkJQ0RDOTQ0MkMxRUYxRkMwODAwNTlDM0M0IC8qIE1lZGlhU3RyZWFtVHJhY2tE
ZXRhY2hlZC5tbSAqLywKIAkJCQk3QTU2MjMxMDFBRDVBRjNFMDA5NkI5MjAgLyogTWVudVR5cGVz
Rm9yTW91c2VFdmVudHMuY3BwICovLAogCQkJCTUxQ0I0QUQ3MUIzQTA3OUMwMEMxQjFDNiAvKiBN
b2RhbEFsZXJ0c1NQSS5jcHAgKi8sCkBAIC01NTAwLDYgKzU1MDMsNyBAQAogCQkJCTA3RUY3NkQ1
MjU0MEZDMDYwMDUzRUQ1MyAvKiBNZWRpYU11dGVkU3RhdGUubW0gaW4gU291cmNlcyAqLywKIAkJ
CQlDREEzMTU5ODFFRDUzNjUxMDA5RjYwRDMgLyogTWVkaWFQbGF5YmFja1NsZWVwQXNzZXJ0aW9u
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc5NDc0MEQyNUNBMEJERTAwQzU5N0VCIC8qIE1lZGlh
U2Vzc2lvbi5tbSBpbiBTb3VyY2VzICovLAorCQkJCTA3NUE5Q0Y1MjYxNzcyMTgwMDZERkEzQSAv
KiBNZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3QubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREM5
NDQyRTFFRjFGQzA4MDA1OUMzQzQgLyogTWVkaWFTdHJlYW1UcmFja0RldGFjaGVkLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTFCRTlFNjYyMzc2MDg5RjAwQjRFMTE3IC8qIE1lZGlhVHlwZS5tbSBp
biBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUM1MUE0MTFBN0UwMDQ0N0M0QyAvKiBNZW1vcnlDYWNo
ZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3JUZXN0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3JUZXN0Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4ZTUxMWNlNzkwNDRhZjcyMmNl
ZmYyMjEzMzU0NmQwMjA0MjVmMTUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdC9NZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3QubW0KQEAgLTAsMCAr
MSw1NDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2lmIEVOQUJMRShN
RURJQV9TRVNTSU9OX0NPT1JESU5BVE9SKQorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5o
IgorI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5j
ZXNQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KKyNp
bXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJW
aWV3UHJpdmF0ZUZvclRlc3RpbmcuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tFeHBlcmltZW50YWxG
ZWF0dXJlLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg+
CisjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9IYXNoU2V0Lmg+CisjaW1w
b3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgorI2ltcG9ydCA8
d3RmL1dlYWtPYmpDUHRyLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisKK0Bp
bnRlcmZhY2UgX1dLTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yIDogTlNPYmplY3QgPF9XS01l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yPgorQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBO
U1N0cmluZyAqbGFzdFN0YXRlQ2hhbmdlOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5
KSBOU1N0cmluZyAqbGFzdE1ldGhvZENhbGxlZDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09M
IGZhaWxzQ29tbWFuZHM7CisKKy0gKHZvaWQpc2Vla1Nlc3Npb25Ub1RpbWU6KGRvdWJsZSl0aW1l
OworLSAodm9pZClwbGF5U2Vzc2lvbjsKKy0gKHZvaWQpcGF1c2VTZXNzaW9uOworLSAodm9pZClz
ZXRTZXNzaW9uVHJhY2s6KE5TU3RyaW5nKil0cmFja0lkZW50aWZpZXI7CitAZW5kCisKK0BpbXBs
ZW1lbnRhdGlvbiBfV0tNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IgeworICAgIFJldGFpblB0
cjxOU1N0cmluZz4gX2xhc3RTdGF0ZUNoYW5nZTsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9s
YXN0TWV0aG9kQ2FsbGVkOworICAgIGlkIDxfV0tNZWRpYVNlc3Npb25Db29yZGluYXRvckRlbGVn
YXRlPiBfZGVsZWdhdGU7Cit9CisKK0BzeW50aGVzaXplIGRlbGVnYXRlOworCistIChOU1N0cmlu
ZyAqKWxhc3RTdGF0ZUNoYW5nZQoreworICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKF9sYXN0U3Rh
dGVDaGFuZ2UsIEAiIikuZ2V0KCk7Cit9CisKKy0gKE5TU3RyaW5nICopbGFzdE1ldGhvZENhbGxl
ZAoreworICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKF9sYXN0TWV0aG9kQ2FsbGVkLCBAIiIpLmdl
dCgpOworfQorCistIChOU1N0cmluZyAqKWlkZW50aWZpZXIKK3sKKyAgICByZXR1cm4gQCJUZXN0
Q29vcmRpbmF0b3IiOworfQorCistICh2b2lkKWpvaW5XaXRoQ29tcGxldGlvbjoodm9pZCheIF9O
b25udWxsKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9sYXN0TWV0aG9kQ2FsbGVk
ID0gQCJqb2luIjsKKyAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBeKCkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcighX2ZhaWxzQ29tbWFuZHMpOworICAg
IH0pOworfQorCistICh2b2lkKWxlYXZlCit7CisgICAgX2xhc3RNZXRob2RDYWxsZWQgPSBAImxl
YXZlIjsKK30KKworLSAodm9pZClzZWVrVG86KGRvdWJsZSl0aW1lIHdpdGhDb21wbGV0aW9uOih2
b2lkKF4gX05vbm51bGwpKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX2xhc3RNZXRo
b2RDYWxsZWQgPSBAInNlZWtUbyI7CisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgXigpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoIV9mYWlsc0NvbW1h
bmRzKTsKKyAgICB9KTsKK30KKworLSAodm9pZClwbGF5V2l0aENvbXBsZXRpb246KHZvaWQoXiBf
Tm9ubnVsbCkoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBfbGFzdE1ldGhvZENhbGxl
ZCA9IEAicGxheSI7CisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSwgXigpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoIV9mYWlsc0NvbW1hbmRzKTsKKyAg
ICB9KTsKK30KKworLSAodm9pZClwYXVzZVdpdGhDb21wbGV0aW9uOih2b2lkKF4gX05vbm51bGwp
KEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX2xhc3RNZXRob2RDYWxsZWQgPSBAInBh
dXNlIjsKKyAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeKCkg
eworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcighX2ZhaWxzQ29tbWFuZHMpOworICAgIH0pOwor
fQorCistICh2b2lkKXNldFRyYWNrOihOU1N0cmluZyopdHJhY2tJZGVudGlmaWVyIHdpdGhDb21w
bGV0aW9uOih2b2lkKF4gX05vbm51bGwpKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAg
X2xhc3RNZXRob2RDYWxsZWQgPSBAInNldFRyYWNrIjsKKyAgICBkaXNwYXRjaF9hc3luYyhkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeKCkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigh
X2ZhaWxzQ29tbWFuZHMpOworICAgIH0pOworfQorCistICh2b2lkKXBvc2l0aW9uU3RhdGVDaGFu
Z2VkOihudWxsYWJsZSBfV0tNZWRpYVBvc2l0aW9uU3RhdGUgKilzdGF0ZQoreworICAgIF9sYXN0
U3RhdGVDaGFuZ2UgPSBAInBvc2l0aW9uU3RhdGVDaGFuZ2VkIjsKK30KKworLSAodm9pZClyZWFk
eVN0YXRlQ2hhbmdlZDooX1dLTWVkaWFTZXNzaW9uUmVhZHlTdGF0ZSlzdGF0ZQoreworICAgIF9s
YXN0U3RhdGVDaGFuZ2UgPSBAInJlYWR5U3RhdGVDaGFuZ2VkIjsKK30KKworLSAodm9pZClwbGF5
YmFja1N0YXRlQ2hhbmdlZDooX1dLTWVkaWFTZXNzaW9uUGxheWJhY2tTdGF0ZSlzdGF0ZQorewor
ICAgIF9sYXN0U3RhdGVDaGFuZ2UgPSBAInBsYXliYWNrU3RhdGVDaGFuZ2VkIjsKK30KKworLSAo
dm9pZCljb29yZGluYXRvclN0YXRlQ2hhbmdlZDooX1dLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JT
dGF0ZSlzdGF0ZQoreworICAgIF9sYXN0U3RhdGVDaGFuZ2UgPSBAImNvb3JkaW5hdG9yU3RhdGVD
aGFuZ2VkIjsKK30KKworLSAodm9pZClzZWVrU2Vzc2lvblRvVGltZTooZG91YmxlKXRpbWUKK3sK
KyAgICBbc2VsZi5kZWxlZ2F0ZSBzZWVrU2Vzc2lvblRvVGltZTp0aW1lIHdpdGhDb21wbGV0aW9u
Ol4oQk9PTCByZXN1bHQpIHsKKyAgICAgICAgX2xhc3RNZXRob2RDYWxsZWQgPSBAInNlZWtTZXNz
aW9uVG9UaW1lIjsKKyAgICB9XTsKK30KKworLSAodm9pZClwbGF5U2Vzc2lvbgoreworICAgIFtz
ZWxmLmRlbGVnYXRlIHBsYXlTZXNzaW9uV2l0aENvbXBsZXRpb246XihCT09MIHJlc3VsdCkgewor
ICAgICAgICBfbGFzdE1ldGhvZENhbGxlZCA9IEAicGxheVNlc3Npb24iOworICAgIH1dOworfQor
CistICh2b2lkKXBhdXNlU2Vzc2lvbgoreworICAgIFtzZWxmLmRlbGVnYXRlIHBhdXNlU2Vzc2lv
bldpdGhDb21wbGV0aW9uOl4oQk9PTCByZXN1bHQpIHsKKyAgICAgICAgX2xhc3RNZXRob2RDYWxs
ZWQgPSBAInBhdXNlU2Vzc2lvbiI7CisgICAgfV07Cit9CisKKy0gKHZvaWQpc2V0U2Vzc2lvblRy
YWNrOihOU1N0cmluZyopdHJhY2tJZGVudGlmaWVyCit7CisgICAgW3NlbGYuZGVsZWdhdGUgc2V0
U2Vzc2lvblRyYWNrOnRyYWNrSWRlbnRpZmllciB3aXRoQ29tcGxldGlvbjpeKEJPT0wgcmVzdWx0
KSB7CisgICAgICAgIF9sYXN0TWV0aG9kQ2FsbGVkID0gQCJzZXRTZXNzaW9uVHJhY2siOworICAg
IH1dOworfQorCitAZW5kCisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworY2xhc3MgTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3JUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworcHVibGlj
OgorICAgIHZvaWQgU2V0VXAoKSBmaW5hbAorICAgIHsKKyAgICAgICAgYXV0byBjb25maWd1cmF0
aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAg
ICAgICAgYXV0byBwcmVmZXJlbmNlcyA9IFtjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXTsKKwor
ICAgICAgICBmb3IgKF9XS0V4cGVyaW1lbnRhbEZlYXR1cmUgKmZlYXR1cmUgaW4gW1dLUHJlZmVy
ZW5jZXMgX2V4cGVyaW1lbnRhbEZlYXR1cmVzXSkgeworICAgICAgICAgICAgaWYgKFtmZWF0dXJl
LmtleSBpc0VxdWFsVG9TdHJpbmc6QCJNZWRpYVNlc3Npb25Db29yZGluYXRvckVuYWJsZWQiXSkK
KyAgICAgICAgICAgICAgICBbcHJlZmVyZW5jZXMgX3NldEVuYWJsZWQ6WUVTIGZvckZlYXR1cmU6
ZmVhdHVyZV07CisgICAgICAgICAgICBpZiAoW2ZlYXR1cmUua2V5IGlzRXF1YWxUb1N0cmluZzpA
Ik1lZGlhU2Vzc2lvbkVuYWJsZWQiXSkKKyAgICAgICAgICAgICAgICBbcHJlZmVyZW5jZXMgX3Nl
dEVuYWJsZWQ6WUVTIGZvckZlYXR1cmU6ZmVhdHVyZV07CisgICAgICAgIH0KKworICAgICAgICBf
d2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNH
UmVjdE1ha2UoMCwgMCwgNDAwLCA0MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQo
KV0pOworICAgIH0KKworICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQorICAgIHsKKyAgICAg
ICAgW193ZWJWaWV3IGNsZWFyTWVzc2FnZUhhbmRsZXJzOl9tZXNzYWdlSGFuZGxlcnMuZ2V0KCld
OworICAgIH0KKworICAgIHZvaWQgY3JlYXRlQ29vcmRpbmF0b3IoKQorICAgIHsKKyAgICAgICAg
X2Nvb3JkaW5hdG9yID0gW1tfV0tNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IgYWxsb2NdIGlu
aXRdOworCisgICAgICAgIF9fYmxvY2sgYm9vbCByZXN1bHQgPSBmYWxzZTsKKyAgICAgICAgX19i
bG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICAgICAgW3dlYlZpZXcoKSBfY3JlYXRlTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3JGb3JUZXN0aW5nOihpZCA8X1dLTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3I+KV9jb29yZGluYXRvci5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKEJPT0wgc3VjY2Vzcykg
eworICAgICAgICAgICAgcmVzdWx0ID0gc3VjY2VzczsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVl
OworICAgICAgICB9XTsKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsK
KworICAgICAgICBsaXN0ZW5Gb3JFdmVudE1lc3NhZ2VzKHsgImNvb3JkaW5hdG9yY2hhbmdlIl9z
IH0pOworCisgICAgICAgIEVYUEVDVF9UUlVFKHJlc3VsdCk7CisgICAgICAgIGlmICghcmVzdWx0
KQorICAgICAgICAgICAgTlNMb2coQCItW19jcmVhdGVNZWRpYVNlc3Npb25Db29yZGluYXRvckZv
clRlc3Rpbmc6Y29tcGxldGlvbkhhbmRsZXI6XSBmYWlsZWQhIik7CisKKyAgICAgICAgd2FpdEZv
ckV2ZW50TGlzdGVuZXJUb0JlQ2FsbGVkKCJjb29yZGluYXRvcmNoYW5nZSJfcyk7CisgICAgICAg
IEFTU0VSVF9UUlVFKGV2ZW50TGlzdGVuZXJXYXNDYWxsZWQoImNvb3JkaW5hdG9yY2hhbmdlIl9z
KSk7CisgICAgfQorCisgICAgVGVzdFdLV2ViVmlldyogd2ViVmlldygpIGNvbnN0IHsgcmV0dXJu
IF93ZWJWaWV3LmdldCgpOyB9CisgICAgX1dLTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yKiBj
b29yZGluYXRvcigpIGNvbnN0IHsgcmV0dXJuIF9jb29yZGluYXRvci5nZXQoKTsgfQorCisgICAg
dm9pZCBsb2FkUGFnZUFuZEJlY29tZVJlYWR5KGNvbnN0IFN0cmluZyYgcGFnZU5hbWUpCisgICAg
eworICAgICAgICBbX3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOnBhZ2VO
YW1lXTsKKworICAgICAgICBib29sIGNhbnBsYXl0aHJvdWdoID0gZmFsc2U7CisgICAgICAgIFt3
ZWJWaWV3KCkgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAImNhbnBsYXl0aHJvdWdoIGV2
ZW50IiBhY3Rpb246WyZdIHsKKyAgICAgICAgICAgIGNhbnBsYXl0aHJvdWdoID0gdHJ1ZTsKKyAg
ICAgICAgfV07CisgICAgICAgIHJ1blNjcmlwdFdpdGhVc2VyR2VzdHVyZSgibG9hZCgpIik7Cisg
ICAgICAgIFV0aWw6OnJ1bigmY2FucGxheXRocm91Z2gpOworICAgIH0KKworICAgIHZvaWQgcnVu
U2NyaXB0V2l0aFVzZXJHZXN0dXJlKGNvbnN0IFN0cmluZyYgc2NyaXB0KQorICAgIHsKKyAgICAg
ICAgW193ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHRXaXRoVXNlckdlc3R1cmU6
c2NyaXB0XTsKKyAgICB9CisKKyAgICB2b2lkIHBsYXkoKQorICAgIHsKKyAgICAgICAgYm9vbCBw
bGF5aW5nID0gZmFsc2U7CisgICAgICAgIFtfd2ViVmlldyBwZXJmb3JtQWZ0ZXJSZWNlaXZpbmdN
ZXNzYWdlOkAicGxheSBldmVudCIgYWN0aW9uOlsmXSB7IHBsYXlpbmcgPSB0cnVlOyB9XTsKKyAg
ICAgICAgcnVuU2NyaXB0V2l0aFVzZXJHZXN0dXJlKCJhdWRpby5wbGF5KCkiKTsKKyAgICAgICAg
VXRpbDo6cnVuKCZwbGF5aW5nKTsKKyAgICB9CisKKyAgICB2b2lkIHBhdXNlKCkKKyAgICB7Cisg
ICAgICAgIGJvb2wgcGF1c2VkID0gZmFsc2U7CisgICAgICAgIFtfd2ViVmlldyBwZXJmb3JtQWZ0
ZXJSZWNlaXZpbmdNZXNzYWdlOkAicGF1c2UgZXZlbnQiIGFjdGlvbjpbJl0geyBwYXVzZWQgPSB0
cnVlOyB9XTsKKyAgICAgICAgcnVuU2NyaXB0V2l0aFVzZXJHZXN0dXJlKCJhdWRpby5wYXVzZSgp
Iik7CisgICAgICAgIFV0aWw6OnJ1bigmcGF1c2VkKTsKKyAgICB9CisKKyAgICB2b2lkIGxpc3Rl
bkZvckV2ZW50TWVzc2FnZXMoc3RkOjppbml0aWFsaXplcl9saXN0PGNvbnN0IGNoYXIqPiBldmVu
dHMpCisgICAgeworICAgICAgICBmb3IgKGF1dG8qIGV2ZW50IDogZXZlbnRzKSB7CisgICAgICAg
ICAgICBhdXRvIGV2ZW50TWVzc2FnZSA9IG1ha2VTdHJpbmcoZXZlbnQsICIgZXZlbnQiKTsKKyAg
ICAgICAgICAgIFt3ZWJWaWV3KCkgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpldmVudE1l
c3NhZ2UgYWN0aW9uOlt0aGlzLCBldmVudE1lc3NhZ2UgPSBXVEZNb3ZlKGV2ZW50TWVzc2FnZSld
IHsKKyAgICAgICAgICAgICAgICBfZXZlbnRMaXN0ZW5lcnNDYWxsZWQuYWRkKGV2ZW50TWVzc2Fn
ZSk7CisgICAgICAgICAgICB9XTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGJvb2wgZXZlbnRM
aXN0ZW5lcldhc0NhbGxlZChjb25zdCBTdHJpbmcmIGV2ZW50KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIF9ldmVudExpc3RlbmVyc0NhbGxlZC5jb250YWlucyhtYWtlU3RyaW5nKGV2ZW50LCAiIGV2
ZW50IikpOworICAgIH0KKworICAgIHZvaWQgY2xlYXJFdmVudExpc3RlbmVyU3RhdGUoKQorICAg
IHsKKyAgICAgICAgX2V2ZW50TGlzdGVuZXJzQ2FsbGVkLmNsZWFyKCk7CisgICAgfQorCisgICAg
dm9pZCBleGVjdXRlVW50aWwoRnVuY3Rpb248Ym9vbCgpPiYmIGNhbGxiYWNrLCBpbnQgcmV0cmll
cyA9IDUwKQorICAgIHsKKyAgICAgICAgaW50IHRyaWVzID0gMDsKKyAgICAgICAgZG8geworICAg
ICAgICAgICAgaWYgKGNhbGxiYWNrKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgVXRpbDo6c2xlZXAoMC4xKTsKKyAgICAgICAgfSB3aGlsZSAoKyt0cmllcyA8PSByZXRy
aWVzKTsKKworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdm9pZCB3YWl0Rm9yRXZlbnRM
aXN0ZW5lclRvQmVDYWxsZWQoY29uc3QgU3RyaW5nJiBldmVudCkKKyAgICB7CisgICAgICAgIGV4
ZWN1dGVVbnRpbChbJl0geworICAgICAgICAgICAgcmV0dXJuIGV2ZW50TGlzdGVuZXJXYXNDYWxs
ZWQoZXZlbnQpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICB2b2lkIGxpc3RlbkZvck1lc3Nh
Z2VzUG9zdGVkKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxjb25zdCBjaGFyKj4gaGFuZGxlcnMsIGNv
bnN0IGNoYXIqIHN1ZmZpeCkKKyAgICB7CisgICAgICAgIGZvciAoYXV0byogaGFuZGxlciA6IGhh
bmRsZXJzKSB7CisgICAgICAgICAgICBhdXRvIGhhbmRsZXJNZXNzYWdlID0gbWFrZVN0cmluZyho
YW5kbGVyLCBzdWZmaXgpOworICAgICAgICAgICAgW19tZXNzYWdlSGFuZGxlcnMgYWRkT2JqZWN0
OmhhbmRsZXJNZXNzYWdlXTsKKyAgICAgICAgICAgIFt3ZWJWaWV3KCkgcGVyZm9ybUFmdGVyUmVj
ZWl2aW5nTWVzc2FnZTpoYW5kbGVyTWVzc2FnZSBhY3Rpb246W3RoaXMsIGhhbmRsZXJNZXNzYWdl
ID0gV1RGTW92ZShoYW5kbGVyTWVzc2FnZSldIHsKKyAgICAgICAgICAgICAgICBfc2Vzc2lvbk1l
c3NhZ2VzUG9zdGVkLmFkZChoYW5kbGVyTWVzc2FnZSk7CisgICAgICAgICAgICB9XTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHZvaWQgY2xlYXJNZXNzYWdlc1Bvc3RlZCgpCisgICAgeworICAg
ICAgICBfc2Vzc2lvbk1lc3NhZ2VzUG9zdGVkLmNsZWFyKCk7CisgICAgfQorCisgICAgdm9pZCBs
aXN0ZW5Gb3JTZXNzaW9uSGFuZGxlck1lc3NhZ2VzKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxjb25z
dCBjaGFyKj4gaGFuZGxlcnMpCisgICAgeworICAgICAgICBsaXN0ZW5Gb3JNZXNzYWdlc1Bvc3Rl
ZChoYW5kbGVycywgIiBoYW5kbGVyIik7CisgICAgfQorCisgICAgYm9vbCBzZXNzaW9uSGFuZGxl
cldhc0NhbGxlZChjb25zdCBTdHJpbmcmIGhhbmRsZXIpCisgICAgeworICAgICAgICByZXR1cm4g
X3Nlc3Npb25NZXNzYWdlc1Bvc3RlZC5jb250YWlucyhtYWtlU3RyaW5nKGhhbmRsZXIsICIgaGFu
ZGxlciIpKTsKKyAgICB9CisKKyAgICB2b2lkIHdhaXRGb3JTZXNzaW9uSGFuZGxlclRvQmVDYWxs
ZWQoY29uc3QgU3RyaW5nJiBoYW5kbGVyKQorICAgIHsKKyAgICAgICAgZXhlY3V0ZVVudGlsKFsm
XSB7CisgICAgICAgICAgICByZXR1cm4gc2Vzc2lvbkhhbmRsZXJXYXNDYWxsZWQoaGFuZGxlcik7
CisgICAgICAgIH0pOworICAgIH0KKworICAgIHZvaWQgbGlzdGVuRm9yUHJvbWlzZU1lc3NhZ2Vz
KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxjb25zdCBjaGFyKj4gaGFuZGxlcnMpCisgICAgeworICAg
ICAgICBsaXN0ZW5Gb3JNZXNzYWdlc1Bvc3RlZChoYW5kbGVycywgIiByZXNvbHZlZCIpOworICAg
ICAgICBsaXN0ZW5Gb3JNZXNzYWdlc1Bvc3RlZChoYW5kbGVycywgIiByZWplY3RlZCIpOworICAg
IH0KKworICAgIHZvaWQgY2xlYXJQcm9taXNlTWVzc2FnZXMoY29uc3QgU3RyaW5nJiBwcm9taXNl
KQorICAgIHsKKyAgICAgICAgX3Nlc3Npb25NZXNzYWdlc1Bvc3RlZC5yZW1vdmUobWFrZVN0cmlu
Zyhwcm9taXNlLCAiIHJlc29sdmVkIikpOworICAgICAgICBfc2Vzc2lvbk1lc3NhZ2VzUG9zdGVk
LnJlbW92ZShtYWtlU3RyaW5nKHByb21pc2UsICIgcmVqZWN0ZWQiKSk7CisgICAgfQorCisgICAg
Ym9vbCBwcm9taXNlV2FzUmVzb2x2ZWQoY29uc3QgU3RyaW5nJiBwcm9taXNlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIF9zZXNzaW9uTWVzc2FnZXNQb3N0ZWQuY29udGFpbnMobWFrZVN0cmluZyhw
cm9taXNlLCAiIHJlc29sdmVkIikpOworICAgIH0KKworICAgIGJvb2wgcHJvbWlzZVdhc1JlamVj
dGVkKGNvbnN0IFN0cmluZyYgcHJvbWlzZSkKKyAgICB7CisgICAgICAgIHJldHVybiBfc2Vzc2lv
bk1lc3NhZ2VzUG9zdGVkLmNvbnRhaW5zKG1ha2VTdHJpbmcocHJvbWlzZSwgIiByZWplY3RlZCIp
KTsKKyAgICB9CisKKyAgICB2b2lkIHdhaXRGb3JQcm9taXNlKGNvbnN0IFN0cmluZyYgcHJvbWlz
ZSkKKyAgICB7CisgICAgICAgIGV4ZWN1dGVVbnRpbChbJl0geworICAgICAgICAgICAgcmV0dXJu
IHByb21pc2VXYXNSZXNvbHZlZChwcm9taXNlKSB8fCBwcm9taXNlV2FzUmVqZWN0ZWQocHJvbWlz
ZSk7CisgICAgICAgIH0sIDIwMCk7CisgICAgfQorCitwcml2YXRlOgorICAgIFJldGFpblB0cjxf
V0tNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I+IF9jb29yZGluYXRvcjsKKyAgICBSZXRhaW5Q
dHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gX2NvbmZpZ3VyYXRpb247CisgICAgUmV0YWluUHRy
PFRlc3RXS1dlYlZpZXc+IF93ZWJWaWV3OworICAgIEhhc2hTZXQ8U3RyaW5nPiBfc2Vzc2lvbk1l
c3NhZ2VzUG9zdGVkOworICAgIEhhc2hTZXQ8U3RyaW5nPiBfZXZlbnRMaXN0ZW5lcnNDYWxsZWQ7
CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBfbWVzc2FnZUhhbmRsZXJzOworfTsKKwor
VEVTVF9GKE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yVGVzdCwgSm9pbkFuZExlYXZlKQoreworICAg
IGxvYWRQYWdlQW5kQmVjb21lUmVhZHkoIm1lZGlhLXJlbW90ZSJfcyk7CisgICAgbGlzdGVuRm9y
UHJvbWlzZU1lc3NhZ2VzKHsgImpvaW4iX3MgfSk7CisKKyAgICBjcmVhdGVDb29yZGluYXRvcigp
OworCisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBzdGF0ZSA9IFt3ZWJWaWV3KCkgc3RyaW5nQnlF
dmFsdWF0aW5nSmF2YVNjcmlwdDpAIm5hdmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRpbmF0b3Iu
c3RhdGUiXTsKKyAgICBFWFBFQ1RfU1RSRVEoIndhaXRpbmciLCBbc3RhdGUgVVRGOFN0cmluZ10p
OworCisgICAgLy8gJ2pvaW4oKScgc2hvdWxkIGZhaWwgaWYgdGhlIHJlbW90ZSBjb29yZGluYXRv
ciByZWZ1c2VzLgorICAgIGNvb3JkaW5hdG9yKCkuZmFpbHNDb21tYW5kcyA9IFlFUzsKKyAgICBb
d2ViVmlldygpIG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJqb2luU2Vzc2lvbigpIl07
CisgICAgd2FpdEZvclByb21pc2UoImpvaW4iX3MpOworICAgIEFTU0VSVF9UUlVFKHByb21pc2VX
YXNSZWplY3RlZCgiam9pbiJfcykpOworICAgIGNsZWFyUHJvbWlzZU1lc3NhZ2VzKCJqb2luIl9z
KTsKKyAgICBFWFBFQ1RfU1RSRVEoImpvaW4iLCBjb29yZGluYXRvcigpLmxhc3RNZXRob2RDYWxs
ZWQuVVRGOFN0cmluZyk7CisKKyAgICAvLyBBbmQgaXQgc2hvdWQgc3VjY2VlZCBpZiBpdCBhbGxv
d3MgaXQuCisgICAgY29vcmRpbmF0b3IoKS5mYWlsc0NvbW1hbmRzID0gTk87CisgICAgW3dlYlZp
ZXcoKSBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiam9pblNlc3Npb24oKSJdOworICAg
IHdhaXRGb3JQcm9taXNlKCJqb2luIl9zKTsKKyAgICBBU1NFUlRfVFJVRShwcm9taXNlV2FzUmVz
b2x2ZWQoImpvaW4iX3MpKTsKKyAgICBjbGVhclByb21pc2VNZXNzYWdlcygiam9pbiJfcyk7Cisg
ICAgRVhQRUNUX1NUUkVRKCJqb2luIiwgY29vcmRpbmF0b3IoKS5sYXN0TWV0aG9kQ2FsbGVkLlVU
RjhTdHJpbmcpOworCisgICAgc3RhdGUgPSBbd2ViVmlldygpIHN0cmluZ0J5RXZhbHVhdGluZ0ph
dmFTY3JpcHQ6QCJuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLmNvb3JkaW5hdG9yLnN0YXRlIl07Cisg
ICAgRVhQRUNUX1NUUkVRKCJqb2luZWQiLCBbc3RhdGUgVVRGOFN0cmluZ10pOworCisgICAgW3dl
YlZpZXcoKSBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAibmF2aWdhdG9yLm1lZGlhU2Vz
c2lvbi5jb29yZGluYXRvci5sZWF2ZSgpIl07CisgICAgU3RyaW5nIGxhc3RNZXRob2RDYWxsZWQ7
CisgICAgZXhlY3V0ZVVudGlsKFsmXSB7CisgICAgICAgIGxhc3RNZXRob2RDYWxsZWQgPSBjb29y
ZGluYXRvcigpLmxhc3RNZXRob2RDYWxsZWQ7CisgICAgICAgIHJldHVybiBsYXN0TWV0aG9kQ2Fs
bGVkID09ICJsZWF2ZSI7CisgICAgfSk7CisgICAgRVhQRUNUX1NUUkVRKCJsZWF2ZSIsIGxhc3RN
ZXRob2RDYWxsZWQudXRmOCgpLmRhdGEoKSk7CisKKyAgICBzdGF0ZSA9IFt3ZWJWaWV3KCkgc3Ry
aW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIm5hdmlnYXRvci5tZWRpYVNlc3Npb24uY29vcmRp
bmF0b3Iuc3RhdGUiXTsKKyAgICBFWFBFQ1RfU1RSRVEoImNsb3NlZCIsIFtzdGF0ZSBVVEY4U3Ry
aW5nXSk7CisKKyAgICAvLyBJdCBzaG91bGRuJ3QgYmUgcG9zc2libGUgdG8gcmUtam9pbiBhIGNs
b3NlIGNvb3JkaW5hdG9yLgorICAgIFt3ZWJWaWV3KCkgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpAImpvaW5TZXNzaW9uKCkiXTsKKyAgICB3YWl0Rm9yUHJvbWlzZSgiam9pbiJfcyk7Cisg
ICAgQVNTRVJUX1RSVUUocHJvbWlzZVdhc1JlamVjdGVkKCJqb2luIl9zKSk7CisgICAgRVhQRUNU
X1NUUkVRKCIiLCBjb29yZGluYXRvcigpLmxhc3RNZXRob2RDYWxsZWQuVVRGOFN0cmluZyk7Cit9
CisKK1RFU1RfRihNZWRpYVNlc3Npb25Db29yZGluYXRvclRlc3QsIFN0YXRlQ2hhbmdlcykKK3sK
KyAgICBsb2FkUGFnZUFuZEJlY29tZVJlYWR5KCJtZWRpYS1yZW1vdGUiX3MpOworCisgICAgbGlz
dGVuRm9yUHJvbWlzZU1lc3NhZ2VzKHsgImpvaW4iX3MgfSk7CisgICAgY3JlYXRlQ29vcmRpbmF0
b3IoKTsKKyAgICBbd2ViVmlldygpIG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJqb2lu
U2Vzc2lvbigpIl07CisgICAgd2FpdEZvclByb21pc2UoImpvaW4iX3MpOworICAgIEFTU0VSVF9U
UlVFKHByb21pc2VXYXNSZXNvbHZlZCgiam9pbiJfcykpOworICAgIGNsZWFyUHJvbWlzZU1lc3Nh
Z2VzKCJqb2luIl9zKTsKKyAgICBFWFBFQ1RfU1RSRVEoImpvaW4iLCBjb29yZGluYXRvcigpLmxh
c3RNZXRob2RDYWxsZWQuVVRGOFN0cmluZyk7CisKKyAgICBbd2ViVmlldygpIG9iamVjdEJ5RXZh
bHVhdGluZ0phdmFTY3JpcHQ6QCJuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLnNldFBvc2l0aW9uU3Rh
dGUoeyBkdXJhdGlvbjogMSwgcGxheWJhY2tSYXRlOiAxLCBwb3NpdGlvbjogMCB9KSJdOworICAg
IFN0cmluZyBsYXN0U3RhdGVDaGFuZ2U7CisgICAgZXhlY3V0ZVVudGlsKFsmXSB7CisgICAgICAg
IGxhc3RTdGF0ZUNoYW5nZSA9IGNvb3JkaW5hdG9yKCkubGFzdFN0YXRlQ2hhbmdlOworICAgICAg
ICByZXR1cm4gbGFzdFN0YXRlQ2hhbmdlID09ICJwb3NpdGlvblN0YXRlQ2hhbmdlZCI7CisgICAg
fSk7CisgICAgRVhQRUNUX1NUUkVRKCJwb3NpdGlvblN0YXRlQ2hhbmdlZCIsIGxhc3RTdGF0ZUNo
YW5nZS51dGY4KCkuZGF0YSgpKTsKKworICAgIGZvciAoTlNTdHJpbmcgKnN0YXRlIGluIEBbIEAi
aGF2ZU1ldGFkYXRhIiwgQCJoYXZlQ3VycmVudERhdGEiLCBAImhhdmVGdXR1cmVEYXRhIiwgQCJo
YXZlRW5vdWdoRGF0YSIsIEAiaGF2ZU5vdGhpbmciIF0pIHsKKyAgICAgICAgW3dlYlZpZXcoKSBv
YmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAi
bmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5yZWFkeVN0YXRlID0gJyVAJyIsIHN0YXRlXV07CisgICAg
ICAgIGV4ZWN1dGVVbnRpbChbJl0geworICAgICAgICAgICAgbGFzdFN0YXRlQ2hhbmdlID0gY29v
cmRpbmF0b3IoKS5sYXN0U3RhdGVDaGFuZ2U7CisgICAgICAgICAgICByZXR1cm4gbGFzdFN0YXRl
Q2hhbmdlID09ICJyZWFkeVN0YXRlQ2hhbmdlZCI7CisgICAgICAgIH0pOworICAgICAgICBFWFBF
Q1RfU1RSRVEoInJlYWR5U3RhdGVDaGFuZ2VkIiwgbGFzdFN0YXRlQ2hhbmdlLnV0ZjgoKS5kYXRh
KCkpOworCisgICAgICAgIFJldGFpblB0cjxOU1N0cmluZz4gY3VycmVudFN0YXRlID0gW3dlYlZp
ZXcoKSBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAibmF2aWdhdG9yLm1lZGlhU2Vzc2lv
bi5yZWFkeVN0YXRlIl07CisgICAgICAgIEVYUEVDVF9TVFJFUShzdGF0ZS5VVEY4U3RyaW5nLCBj
dXJyZW50U3RhdGUuZ2V0KCkuVVRGOFN0cmluZyk7CisgICAgfQorCisgICAgZm9yIChOU1N0cmlu
ZyAqc3RhdGUgaW4gQFsgQCJwYXVzZWQiLCBAInBsYXlpbmciLCBAIm5vbmUiIF0pIHsKKyAgICAg
ICAgW3dlYlZpZXcoKSBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OltOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAibmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5wbGF5YmFja1N0YXRlID0gJyVA
JyIsIHN0YXRlXV07CisgICAgICAgIGV4ZWN1dGVVbnRpbChbJl0geworICAgICAgICAgICAgbGFz
dFN0YXRlQ2hhbmdlID0gY29vcmRpbmF0b3IoKS5sYXN0U3RhdGVDaGFuZ2U7CisgICAgICAgICAg
ICByZXR1cm4gbGFzdFN0YXRlQ2hhbmdlID09ICJwbGF5YmFja1N0YXRlQ2hhbmdlZCI7CisgICAg
ICAgIH0pOworICAgICAgICBFWFBFQ1RfU1RSRVEoInBsYXliYWNrU3RhdGVDaGFuZ2VkIiwgbGFz
dFN0YXRlQ2hhbmdlLnV0ZjgoKS5kYXRhKCkpOworCisgICAgICAgIFJldGFpblB0cjxOU1N0cmlu
Zz4gY3VycmVudFN0YXRlID0gW3dlYlZpZXcoKSBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
OkAibmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5wbGF5YmFja1N0YXRlIl07CisgICAgICAgIEVYUEVD
VF9TVFJFUShzdGF0ZS5VVEY4U3RyaW5nLCBjdXJyZW50U3RhdGUuZ2V0KCkuVVRGOFN0cmluZyk7
CisgICAgfQorCisgICAgW3dlYlZpZXcoKSBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAi
bmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5jb29yZGluYXRvci5sZWF2ZSgpIl07CisgICAgU3RyaW5n
IGxhc3RNZXRob2RDYWxsZWQ7CisgICAgZXhlY3V0ZVVudGlsKFsmXSB7CisgICAgICAgIGxhc3RT
dGF0ZUNoYW5nZSA9IGNvb3JkaW5hdG9yKCkubGFzdFN0YXRlQ2hhbmdlOworICAgICAgICByZXR1
cm4gbGFzdFN0YXRlQ2hhbmdlID09ICJjb29yZGluYXRvclN0YXRlQ2hhbmdlZCI7CisgICAgfSk7
CisgICAgRVhQRUNUX1NUUkVRKCJjb29yZGluYXRvclN0YXRlQ2hhbmdlZCIsIGxhc3RTdGF0ZUNo
YW5nZS51dGY4KCkuZGF0YSgpKTsKK30KKworVEVTVF9GKE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
VGVzdCwgQ29vcmRpbmF0b3JNZXRob2RDYWxsYmFja3MpCit7CisgICAgbG9hZFBhZ2VBbmRCZWNv
bWVSZWFkeSgibWVkaWEtcmVtb3RlIl9zKTsKKworICAgIGxpc3RlbkZvclByb21pc2VNZXNzYWdl
cyh7ICJqb2luIl9zIH0pOworICAgIGNyZWF0ZUNvb3JkaW5hdG9yKCk7CisgICAgW3dlYlZpZXco
KSBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiam9pblNlc3Npb24oKSJdOworICAgIHdh
aXRGb3JQcm9taXNlKCJqb2luIl9zKTsKKyAgICBBU1NFUlRfVFJVRShwcm9taXNlV2FzUmVzb2x2
ZWQoImpvaW4iX3MpKTsKKyAgICBjbGVhclByb21pc2VNZXNzYWdlcygiam9pbiJfcyk7CisgICAg
RVhQRUNUX1NUUkVRKCJqb2luIiwgY29vcmRpbmF0b3IoKS5sYXN0TWV0aG9kQ2FsbGVkLlVURjhT
dHJpbmcpOworCisgICAgbGlzdGVuRm9yUHJvbWlzZU1lc3NhZ2VzKHsgInBsYXkiX3MsICJwYXVz
ZSJfcywgInNlZWtUbyJfcywgInNldFRyYWNrIl9zIH0pOworICAgIGF1dG8gbWV0aG9kc0FuZEFy
Z3MgPSBAWworICAgICAgICBAWyBAInBsYXkiLCBAIiIgXSwKKyAgICAgICAgQFsgQCJwYXVzZSIs
IEAiIiBdLAorICAgICAgICBAWyBAInNlZWtUbyIsIEAiMTAiIF0sCisgICAgICAgIEBbIEAic2V0
VHJhY2siLCBAIidcXCd0ZXN0LXRyYWNrLTFcXCcnIiBdLAorICAgIF07CisgICAgZm9yIChOU0Fy
cmF5ICptZXRob2RJbmZvIGluIG1ldGhvZHNBbmRBcmdzKSB7CisgICAgICAgIE5TU3RyaW5nICpt
ZXRob2QgPSBtZXRob2RJbmZvWzBdOworICAgICAgICBOU1N0cmluZyAqYXJncyA9IG1ldGhvZElu
Zm9bMV07CisgICAgICAgIGF1dG8gc3RyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJj
YWxsTWV0aG9kKCclQCcsICVAKSIsIG1ldGhvZCwgYXJnc107CisgICAgICAgIFt3ZWJWaWV3KCkg
b2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpzdHJdOworICAgICAgICB3YWl0Rm9yUHJvbWlz
ZShtZXRob2QpOworICAgICAgICBBU1NFUlRfVFJVRShwcm9taXNlV2FzUmVzb2x2ZWQobWV0aG9k
KSk7CisgICAgICAgIGNsZWFyUHJvbWlzZU1lc3NhZ2VzKG1ldGhvZCk7CisgICAgICAgIEVYUEVD
VF9TVFJFUShtZXRob2QuVVRGOFN0cmluZywgY29vcmRpbmF0b3IoKS5sYXN0TWV0aG9kQ2FsbGVk
LlVURjhTdHJpbmcpOworICAgIH0KK30KKworVEVTVF9GKE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
VGVzdCwgQ2FsbFNlc3Npb25NZXRob2RzKQoreworICAgIGxvYWRQYWdlQW5kQmVjb21lUmVhZHko
Im1lZGlhLXJlbW90ZSJfcyk7CisgICAgbGlzdGVuRm9yU2Vzc2lvbkhhbmRsZXJNZXNzYWdlcyh7
ICJwbGF5Il9zLCAicGF1c2UiX3MsICJzZWVrdG8iX3MsICJuZXh0dHJhY2siX3MgfSk7CisKKyAg
ICBsaXN0ZW5Gb3JQcm9taXNlTWVzc2FnZXMoeyAiam9pbiJfcyB9KTsKKyAgICBjcmVhdGVDb29y
ZGluYXRvcigpOworICAgIFt3ZWJWaWV3KCkgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
ImpvaW5TZXNzaW9uKCkiXTsKKyAgICB3YWl0Rm9yUHJvbWlzZSgiam9pbiJfcyk7CisgICAgQVNT
RVJUX1RSVUUocHJvbWlzZVdhc1Jlc29sdmVkKCJqb2luIl9zKSk7CisgICAgY2xlYXJQcm9taXNl
TWVzc2FnZXMoImpvaW4iX3MpOworICAgIEVYUEVDVF9TVFJFUSgiam9pbiIsIGNvb3JkaW5hdG9y
KCkubGFzdE1ldGhvZENhbGxlZC5VVEY4U3RyaW5nKTsKKworICAgIFN0cmluZyBsYXN0TWV0aG9k
Q2FsbGVkOworCisgICAgW2Nvb3JkaW5hdG9yKCkgc2Vla1Nlc3Npb25Ub1RpbWU6MjBdOworICAg
IGV4ZWN1dGVVbnRpbChbJl0geworICAgICAgICBsYXN0TWV0aG9kQ2FsbGVkID0gY29vcmRpbmF0
b3IoKS5sYXN0TWV0aG9kQ2FsbGVkOworICAgICAgICByZXR1cm4gbGFzdE1ldGhvZENhbGxlZCA9
PSAic2Vla1Nlc3Npb25Ub1RpbWUiOworICAgIH0pOworICAgIEVYUEVDVF9TVFJFUSgic2Vla1Nl
c3Npb25Ub1RpbWUiLCBsYXN0TWV0aG9kQ2FsbGVkLnV0ZjgoKS5kYXRhKCkpOworCisgICAgW2Nv
b3JkaW5hdG9yKCkgcGxheVNlc3Npb25dOworICAgIGV4ZWN1dGVVbnRpbChbJl0geworICAgICAg
ICBsYXN0TWV0aG9kQ2FsbGVkID0gY29vcmRpbmF0b3IoKS5sYXN0TWV0aG9kQ2FsbGVkOworICAg
ICAgICByZXR1cm4gbGFzdE1ldGhvZENhbGxlZCA9PSAicGxheVNlc3Npb24iOworICAgIH0pOwor
ICAgIEVYUEVDVF9TVFJFUSgicGxheVNlc3Npb24iLCBsYXN0TWV0aG9kQ2FsbGVkLnV0ZjgoKS5k
YXRhKCkpOworCisgICAgW2Nvb3JkaW5hdG9yKCkgcGF1c2VTZXNzaW9uXTsKKyAgICBleGVjdXRl
VW50aWwoWyZdIHsKKyAgICAgICAgbGFzdE1ldGhvZENhbGxlZCA9IGNvb3JkaW5hdG9yKCkubGFz
dE1ldGhvZENhbGxlZDsKKyAgICAgICAgcmV0dXJuIGxhc3RNZXRob2RDYWxsZWQgPT0gInBhdXNl
U2Vzc2lvbiI7CisgICAgfSk7CisgICAgRVhQRUNUX1NUUkVRKCJwYXVzZVNlc3Npb24iLCBsYXN0
TWV0aG9kQ2FsbGVkLnV0ZjgoKS5kYXRhKCkpOworCisgICAgW2Nvb3JkaW5hdG9yKCkgc2V0U2Vz
c2lvblRyYWNrOkAiVHJhY2sgMCJdOworICAgIGV4ZWN1dGVVbnRpbChbJl0geworICAgICAgICBs
YXN0TWV0aG9kQ2FsbGVkID0gY29vcmRpbmF0b3IoKS5sYXN0TWV0aG9kQ2FsbGVkOworICAgICAg
ICByZXR1cm4gbGFzdE1ldGhvZENhbGxlZCA9PSAic2V0U2Vzc2lvblRyYWNrIjsKKyAgICB9KTsK
KyAgICBFWFBFQ1RfU1RSRVEoInNldFNlc3Npb25UcmFjayIsIGxhc3RNZXRob2RDYWxsZWQudXRm
OCgpLmRhdGEoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworI2VuZGlm
IC8vIEVOQUJMRShNRURJQV9TRVNTSU9OX0NPT1JESU5BVE9SKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9tZWRpYS1yZW1vdGUuaHRtbCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvbWVkaWEtcmVtb3RlLmh0bWwKaW5kZXgg
MWM5OTNjN2NkNDAxYWZmMzJjZjIzMmVkYmM4ODNlY2RjNzliYjM1Zi4uZmQ0ZDk5NmExYmIxYjQ4
MDlmZmZjNjI1MmUwZTQ0OWEwNDQ1ZWJmYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9tZWRpYS1yZW1vdGUuaHRtbAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL21lZGlhLXJlbW90ZS5odG1sCkBAIC00MCwxMSArNDAs
MjMgQEAKICAgICAgICAgICAgIG5hdmlnYXRvci5tZWRpYVNlc3Npb24ubWV0YWRhdGEgPSBuZXcg
TWVkaWFNZXRhZGF0YShkYXRhKTsKICAgICAgICAgICAgIHBvc3RNZXNzYWdlKCdzZXQgbWV0YWRh
dGEnKQogICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmdW5jdGlvbiBqb2luU2Vzc2lvbigp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGxldCBwcm9taXNlID0gbmF2aWdhdG9yLm1lZGlhU2Vz
c2lvbi5jb29yZGluYXRvci5qb2luKCk7CisgICAgICAgICAgICBwb3N0UHJvbWlzZSgiam9pbiIs
IHByb21pc2UpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2FsbE1ldGhvZChtZXRo
b2QsIGFyZ3MpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxldCBjb2RlID0gYG5hdmlnYXRvci5t
ZWRpYVNlc3Npb24uY29vcmRpbmF0b3IuJHttZXRob2R9KCR7YXJnc30pYDsKKyAgICAgICAgICAg
IGxldCBwcm9taXNlID0gZXZhbChjb2RlKTsKKyAgICAgICAgICAgIHBvc3RQcm9taXNlKG1ldGhv
ZCwgcHJvbWlzZSk7CisgICAgICAgIH0KIAogICAgICAgICBmdW5jdGlvbiBzZXRQbGF5bGlzdE1l
dGFkYXRhKGluZGV4KQogICAgICAgICB7CiAgICAgICAgICAgICBzZXRNZXRhZGF0YShwbGF5bGlz
dC5tZXRhZGF0YVtpbmRleF0pOwotICAgICAgICAKICAgICAgICAgfQogCiAgICAgICAgIGZ1bmN0
aW9uIGNsZWFyQWN0aW9uSGFuZGxlcnMoKQpAQCAtNTYsMTcgKzY4LDExIEBACiAgICAgICAgIHsK
ICAgICAgICAgICAgIGNvbnN0IGFjdGlvbnMgPSB7CiAgICAgICAgICAgICAgICAgJ3BsYXknIDog
KCkgPT4geyBwb3N0TWVzc2FnZSgncGxheSBoYW5kbGVyJyk7IH0sCi0KICAgICAgICAgICAgICAg
ICAncGF1c2UnIDogKCkgPT4geyBwb3N0TWVzc2FnZSgncGF1c2UgaGFuZGxlcicpIH0sCi0gICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgJ3NlZWt0bycgOiAoZGV0YWlscykgPT4geyBw
b3N0TWVzc2FnZSgnc2Vla3RvIGhhbmRsZXInKSB9LAotCiAgICAgICAgICAgICAgICAgJ3NlZWtm
b3J3YXJkJyA6IChkZXRhaWxzKSA9PiB7IHBvc3RNZXNzYWdlKCdzZWVrZm9yd2FyZCBoYW5kbGVy
JykgfSwKLQotICAgICAgICAgICAgICAgICdzZWVrYmFja3dhcmQnIDogKGRldGFpbHMpID0+IHsg
cG9zdE1lc3NhZ2UoJ3NlZWtiYWNrd2FyZCBoYW5kbGVyJykgfSwgCi0KLSAgICAgICAgICAgICAg
ICAncHJldmlvdXN0cmFjaycgOiAoKSA9PiB7IHBvc3RNZXNzYWdlKCdwcmV2aW91c3RyYWNrIGhh
bmRsZXInKSB9LCAKLQorICAgICAgICAgICAgICAgICdzZWVrYmFja3dhcmQnIDogKGRldGFpbHMp
ID0+IHsgcG9zdE1lc3NhZ2UoJ3NlZWtiYWNrd2FyZCBoYW5kbGVyJykgfSwKKyAgICAgICAgICAg
ICAgICAncHJldmlvdXN0cmFjaycgOiAoKSA9PiB7IHBvc3RNZXNzYWdlKCdwcmV2aW91c3RyYWNr
IGhhbmRsZXInKSB9LAogICAgICAgICAgICAgICAgICduZXh0dHJhY2snIDogKCkgPT4geyBwb3N0
TWVzc2FnZSgnbmV4dHRyYWNrIGhhbmRsZXInKSB9LCAKICAgICAgICAgICAgIH07CiAKQEAgLTk1
LDYgKzEwMSwxNSBAQAogICAgICAgICAgICAgcG9zdE1lc3NhZ2UoYCR7ZXZ0LnR5cGV9IGV2ZW50
YCk7CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIGFzeW5jIGZ1bmN0aW9uIHBvc3RQcm9t
aXNlKHR5cGUsIHByb21pc2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxvZyhgd2FpdGluZyBm
b3IgJHt0eXBlfSBwcm9taXNlYCk7CisgICAgICAgICAgICBhd2FpdCBwcm9taXNlCisgICAgICAg
ICAgICAgICAgLnRoZW4oICAoKSA9PiB7IHBvc3RNZXNzYWdlKGAke3R5cGV9IHJlc29sdmVkYCk7
IH0gKQorICAgICAgICAgICAgICAgIC5jYXRjaCggKCkgPT4geyBwb3N0TWVzc2FnZShgJHt0eXBl
fSByZWplY3RlZGApOyB9ICk7CisgICAgICAgICAgICBsb2coYCR7dHlwZX0gcHJvbWlzZSBzZXR0
bGVkYCk7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIGZ1bmN0aW9uIGxvYWQoKQogICAg
ICAgICB7CiAgICAgICAgICAgICBsZXQgc3JjID0gcGxheWxpc3QubWV0YWRhdGFbMF0udXJsOwpA
QCAtMTEyLDEzICsxMjcsMTUgQEAKICAgICAgICAgICAgIGV2ZW50TG9nLmluc2VydEJlZm9yZShu
b3RlLCBldmVudExvZy5maXJzdENoaWxkKTsKICAgICAgICAgfQogCi0gICAgICAgIAorICAgICAg
ICBjb25zdCBzZXNzaW9uID0gbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbjsKKwogICAgICAgICB3aW5k
b3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGV2dCA9PiB7CiAgICAgICAgICAgICBhdWRpbyA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdhdWRpbycpWzBdOwogICAgICAgICAgICAg
YXVkaW8uYWRkRXZlbnRMaXN0ZW5lcignY2FucGxheXRocm91Z2gnLCBwb3N0RXZlbnQpOwogICAg
ICAgICAgICAgYXVkaW8uYWRkRXZlbnRMaXN0ZW5lcigncGxheScsIHBvc3RFdmVudCk7CiAgICAg
ICAgICAgICBhdWRpby5hZGRFdmVudExpc3RlbmVyKCdwYXVzZScsIHBvc3RFdmVudCk7CiAgICAg
ICAgICAgICBhdWRpby5hZGRFdmVudExpc3RlbmVyKCdzZWVrZWQnLCBwb3N0RXZlbnQpOworICAg
ICAgICAgICAgbmF2aWdhdG9yLm1lZGlhU2Vzc2lvbi5hZGRFdmVudExpc3RlbmVyKCdjb29yZGlu
YXRvcmNoYW5nZScsIHBvc3RFdmVudCk7CiAgICAgICAgIH0sIGZhbHNlKTsKIAogICAgIDwvc2Ny
aXB0Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>