<?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>158326</bug_id>
          
          <creation_ts>2016-06-02 16:12:55 -0700</creation_ts>
          <short_desc>Rename CheckedRadioButtons into RadioButtonGroups</short_desc>
          <delta_ts>2016-06-03 14:35:34 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1198732</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-06-02 16:12:55 -0700</bug_when>
    <thetext>Rename CheckedRadioButtons into RadioButtonGroups</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198733</commentid>
    <comment_count>1</comment_count>
      <attachid>280381</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-06-02 16:17:08 -0700</bug_when>
    <thetext>Created attachment 280381
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198767</commentid>
    <comment_count>2</comment_count>
      <attachid>280392</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-06-02 17:43:39 -0700</bug_when>
    <thetext>Created attachment 280392
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198941</commentid>
    <comment_count>3</comment_count>
      <attachid>280392</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-03 09:13:12 -0700</bug_when>
    <thetext>Comment on attachment 280392
Patch

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

&gt; Source/WebCore/dom/RadioButtonGroups.h:22
&gt; +#ifndef RadioButtonGroups_h
&gt; +#define RadioButtonGroups_h

#pragma once</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198958</commentid>
    <comment_count>4</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-06-03 09:56:40 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 280392 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=280392&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/RadioButtonGroups.h:22
&gt; &gt; +#ifndef RadioButtonGroups_h
&gt; &gt; +#define RadioButtonGroups_h
&gt; 
&gt; #pragma once

I thought we were running into issues with #pragma once
Am I mistaken or did we fix them somehow?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199026</commentid>
    <comment_count>5</comment_count>
      <attachid>280462</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-06-03 14:12:47 -0700</bug_when>
    <thetext>Created attachment 280462
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199043</commentid>
    <comment_count>6</comment_count>
      <attachid>280462</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-03 14:35:30 -0700</bug_when>
    <thetext>Comment on attachment 280462
Patch for landing

Clearing flags on attachment: 280462

Committed r201659: &lt;http://trac.webkit.org/changeset/201659&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199044</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-03 14:35:34 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280381</attachid>
            <date>2016-06-02 16:17:08 -0700</date>
            <delta_ts>2016-06-02 17:43:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158326-20160602161827.patch</filename>
            <type>text/plain</type>
            <size>41999</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmFiYjJkMTVjZWQ4YWEx
YTRhNzA2Y2YyMDJiMTg2YWNlOGJiMDhkMS4uY2Y5NjBiNDI1NmVmMjZlMDc0ODE4NzQ3MDdmMjc0
NjAzMGJhN2MzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDE2LTA2LTAyICBCZW5q
YW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW5hbWUgQ2hl
Y2tlZFJhZGlvQnV0dG9ucyBpbnRvIFJhZGlvQnV0dG9uR3JvdXBzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgzMjYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGVja2VkUmFkaW9CdXR0b25zIGhhbmRs
ZXMgdGhlIHNldCBvZiBhbGwgdGhlIFJhZGlvIEJ1dHRvbiBHcm91cHMKKyAgICAgICAgZm9yIGEg
cGFydGljdWxhciBmb3JtIG9yIGRvY3VtZW50LgorICAgICAgICBUaGUgbmFtZSBpcyB3cm9uZyBh
bmQgYXBwYXJlbnRseSBjb21lcyBmcm9tIGZvcm1lciB1c2VzIG9mIHRoaXMgY2xhc3MKKyAgICAg
ICAgKHNlZSB0aGUgY29tbWVudCBhYm92ZSB0aGUgY2xhc3MgZGVjbGFyYXRpb24pLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggcmVuYW1lcyAiQ2hlY2tlZFJhZGlvQnV0dG9ucyIgdG8gIlJhZGlvQnV0
dG9uR3JvdXBzIiB0byByZWZsZWN0IHRoYXQgaXQgaGFuZGxlcworICAgICAgICBhbGwgdGhlIFJh
ZGlvIEJ1dHRvbiBHcm91cCBmcm9tIGEgZ2l2ZW4gY29udGV4dCAoZm9ybSBvciBkb2N1bWVudCku
CisgICAgICAgIEludGVybmFsbHkgaXQgaGFzIGEgc2V0IG9mIFJhZGlvQnV0dG9uR3JvdXAgYnV0
IHRoYXQgaXMgbmV2ZXIgZXhwbGljaXRlbHkKKyAgICAgICAgZXhwb3NlZC4KKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBkb20vQ2hlY2tlZFJhZGlvQnV0dG9ucy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSYWRpb0J1dHRvbkdyb3VwOjppc0VtcHR5KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJhZGlvQnV0dG9uR3JvdXA6OmlzUmVxdWlyZWQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UmFkaW9CdXR0b25Hcm91cDo6Y2hlY2tlZEJ1dHRvbik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpSYWRpb0J1dHRvbkdyb3VwOjpSYWRpb0J1dHRvbkdyb3VwKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJhZGlvQnV0dG9uR3JvdXA6OmlzVmFsaWQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9CdXR0b25Hcm91cDo6bWVtYmVycyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpSYWRpb0J1dHRvbkdyb3VwOjpzZXRDaGVja2VkQnV0dG9uKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJhZGlvQnV0dG9uR3JvdXA6OmFkZCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpSYWRpb0J1dHRvbkdyb3VwOjp1cGRhdGVDaGVja2VkU3Rh
dGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9CdXR0b25Hcm91cDo6cmVxdWly
ZWRBdHRyaWJ1dGVDaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJhZGlvQnV0
dG9uR3JvdXA6OnJlbW92ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSYWRpb0J1dHRv
bkdyb3VwOjp1cGRhdGVWYWxpZGl0eUZvckFsbEJ1dHRvbnMpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UmFkaW9CdXR0b25Hcm91cDo6Y29udGFpbnMpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q2hlY2tlZFJhZGlvQnV0dG9uczo6Q2hlY2tlZFJhZGlvQnV0dG9ucyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpDaGVja2VkUmFkaW9CdXR0b25zOjp+Q2hlY2tlZFJhZGlv
QnV0dG9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDaGVja2VkUmFkaW9CdXR0b25z
OjphZGRCdXR0b24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2hlY2tlZFJhZGlvQnV0
dG9uczo6Z3JvdXBNZW1iZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNoZWNrZWRS
YWRpb0J1dHRvbnM6OnVwZGF0ZUNoZWNrZWRTdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpDaGVja2VkUmFkaW9CdXR0b25zOjpyZXF1aXJlZEF0dHJpYnV0ZUNoYW5nZWQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2hlY2tlZFJhZGlvQnV0dG9uczo6Y2hlY2tlZEJ1dHRv
bkZvckdyb3VwKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNoZWNrZWRSYWRpb0J1dHRv
bnM6OmlzSW5SZXF1aXJlZEdyb3VwKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNoZWNr
ZWRSYWRpb0J1dHRvbnM6OnJlbW92ZUJ1dHRvbik6IERlbGV0ZWQuCisgICAgICAgICogZG9tL1Jh
ZGlvQnV0dG9uR3JvdXBzLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2RvbS9DaGVj
a2VkUmFkaW9CdXR0b25zLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OlJhZGlvQnV0dG9uR3JvdXA6
OmlzRW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9CdXR0b25Hcm91cDo6aXNSZXF1aXJl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpSYWRpb0J1dHRvbkdyb3VwOjpjaGVja2VkQnV0dG9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlJhZGlvQnV0dG9uR3JvdXA6OlJhZGlvQnV0dG9uR3JvdXApOgor
ICAgICAgICAoV2ViQ29yZTo6UmFkaW9CdXR0b25Hcm91cDo6aXNWYWxpZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSYWRpb0J1dHRvbkdyb3VwOjptZW1iZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJh
ZGlvQnV0dG9uR3JvdXA6OnNldENoZWNrZWRCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmFk
aW9CdXR0b25Hcm91cDo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OlJhZGlvQnV0dG9uR3JvdXA6
OnVwZGF0ZUNoZWNrZWRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSYWRpb0J1dHRvbkdyb3Vw
OjpyZXF1aXJlZEF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9CdXR0
b25Hcm91cDo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OlJhZGlvQnV0dG9uR3JvdXA6OnVw
ZGF0ZVZhbGlkaXR5Rm9yQWxsQnV0dG9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSYWRpb0J1dHRv
bkdyb3VwOjpjb250YWlucyk6CisgICAgICAgIChXZWJDb3JlOjpSYWRpb0J1dHRvbkdyb3Vwczo6
UmFkaW9CdXR0b25Hcm91cHMpOgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9CdXR0b25Hcm91cHM6
On5SYWRpb0J1dHRvbkdyb3Vwcyk6CisgICAgICAgIChXZWJDb3JlOjpSYWRpb0J1dHRvbkdyb3Vw
czo6YWRkQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJhZGlvQnV0dG9uR3JvdXBzOjpncm91
cE1lbWJlcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9CdXR0b25Hcm91cHM6OnVwZGF0ZUNo
ZWNrZWRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSYWRpb0J1dHRvbkdyb3Vwczo6cmVxdWly
ZWRBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJhZGlvQnV0dG9uR3JvdXBz
OjpjaGVja2VkQnV0dG9uRm9yR3JvdXApOgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9CdXR0b25H
cm91cHM6OmlzSW5SZXF1aXJlZEdyb3VwKToKKyAgICAgICAgKFdlYkNvcmU6OlJhZGlvQnV0dG9u
R3JvdXBzOjpyZW1vdmVCdXR0b24pOgorICAgICAgICAqIGRvbS9SYWRpb0J1dHRvbkdyb3Vwcy5o
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvZG9tL0NoZWNrZWRSYWRpb0J1dHRvbnMuaC4K
KyAgICAgICAgKiBodG1sL0Zvcm1Db250cm9sbGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpGb3Jt
Q29udHJvbGxlcjo6cmFkaW9CdXR0b25Hcm91cHMpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUNv
bnRyb2xsZXI6OmNoZWNrZWRSYWRpb0J1dHRvbnMpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwv
SFRNTEZvcm1FbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6On5IVE1MSW5wdXRFbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNldENoZWNrZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cmVxdWlyZWRBdHRyaWJ1dGVDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmlzSW5SZXF1aXJlZFJhZGlv
QnV0dG9uR3JvdXApOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cmFkaW9C
dXR0b25Hcm91cCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpjaGVja2Vk
UmFkaW9CdXR0b25Gb3JHcm91cCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50
OjpyYWRpb0J1dHRvbkdyb3Vwcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50
OjphZGRUb1JhZGlvQnV0dG9uR3JvdXApOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxl
bWVudDo6cmVtb3ZlRnJvbVJhZGlvQnV0dG9uR3JvdXApOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TElucHV0RWxlbWVudDo6Y2hlY2tlZFJhZGlvQnV0dG9ucyk6IERlbGV0ZWQuCisgICAgICAgICog
aHRtbC9IVE1MSW5wdXRFbGVtZW50Lmg6CisKIDIwMTYtMDYtMDEgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgSGFzaE1hcDo6ZW5zdXJlKCkgaW4gRG9jdW1l
bnRPcmRlcmVkTWFwOjphZGQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBkMGQzMjQ3MTM1MTRh
M2Y3YWNiYWE5N2MxYjBhYzdkNTlhMjZkOWNjLi5hYzE4ODE4MGFiOTgzMzkwNTQxZmYzNTZmZjZi
N2VkNTlmZDBiZTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTM5Niw3ICsxMzk2LDYgQEAg
c2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGRvbS9CZWZvcmVVbmxvYWRFdmVudC5jcHAKICAgICBk
b20vQ0RBVEFTZWN0aW9uLmNwcAogICAgIGRvbS9DaGFyYWN0ZXJEYXRhLmNwcAotICAgIGRvbS9D
aGVja2VkUmFkaW9CdXR0b25zLmNwcAogICAgIGRvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNw
cAogICAgIGRvbS9DaGlsZE5vZGVMaXN0LmNwcAogICAgIGRvbS9DbGFzc0NvbGxlY3Rpb24uY3Bw
CkBAIC0xNDkxLDYgKzE0OTAsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgZG9tL1Byb2dy
ZXNzRXZlbnQuY3BwCiAgICAgZG9tL1BzZXVkb0VsZW1lbnQuY3BwCiAgICAgZG9tL1F1YWxpZmll
ZE5hbWUuY3BwCisgICAgZG9tL1JhZGlvQnV0dG9uR3JvdXBzLmNwcAogICAgIGRvbS9SYW5nZS5j
cHAKICAgICBkb20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuY3BwCiAgICAgZG9tL1Njb3BlZEV2
ZW50UXVldWUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggYjQxMWI2MzgzZTVjMjdhYTZmMWQ1ZWMzODZiMzdiYzE5MmM0ZjM3
MS4uNzA0OTQxMjRjODhhOTRlN2NmYTE4N2I3N2M5MjMwNGRjYzJiYzNjZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzc2NCw4
ICszNzY0LDggQEAKIAkJOTNGMUUxRUMxQTQwRkREQzAwMzQ4RDEzIC8qIE5TUG9wb3ZlclNQSS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGMUUxRUIx
QTQwRkREQzAwMzQ4RDEzIC8qIE5TUG9wb3ZlclNQSS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRjZGMUVEMTI3RjcwQjEwMDU1Q0IwNiAvKiBX
ZWJHTENvbnRleHRFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5M0Y2RjFFQTEyN0Y3MEIxMDA1NUNCMDYgLyogV2ViR0xDb250ZXh0RXZlbnQu
Y3BwICovOyB9OwogCQk5M0Y2RjFFRTEyN0Y3MEIxMDA1NUNCMDYgLyogV2ViR0xDb250ZXh0RXZl
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjZG
MUVCMTI3RjcwQjEwMDU1Q0IwNiAvKiBXZWJHTENvbnRleHRFdmVudC5oICovOyB9OwotCQk5M0Y5
MjU0MzBGN0VGNUI4MDA3RTM3QzkgLyogQ2hlY2tlZFJhZGlvQnV0dG9ucy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGOTI1NDEwRjdFRjVCODAwN0Uz
N0M5IC8qIENoZWNrZWRSYWRpb0J1dHRvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwotCQk5M0Y5MjU0NDBGN0VGNUI4MDA3RTM3QzkgLyogQ2hlY2tl
ZFJhZGlvQnV0dG9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5M0Y5MjU0MjBGN0VGNUI4MDA3RTM3QzkgLyogQ2hlY2tlZFJhZGlvQnV0dG9ucy5j
cHAgKi87IH07CisJCTkzRjkyNTQzMEY3RUY1QjgwMDdFMzdDOSAvKiBSYWRpb0J1dHRvbkdyb3Vw
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGOTI1
NDEwRjdFRjVCODAwN0UzN0M5IC8qIFJhZGlvQnV0dG9uR3JvdXBzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTNGOTI1NDQwRjdFRjVCODAwN0Uz
N0M5IC8qIFJhZGlvQnV0dG9uR3JvdXBzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjkyNTQyMEY3RUY1QjgwMDdFMzdDOSAvKiBSYWRpb0J1dHRv
bkdyb3Vwcy5jcHAgKi87IH07CiAJCTkzRjlCNjU3MEJBMEYzNUUwMDg1NDA2NCAvKiBET01IVE1M
Q2FudmFzRWxlbWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzRjlCNjU0MEJBMEYzNUUwMDg1NDA2NCAvKiBET01IVE1MQ2FudmFzRWxlbWVudC5t
bSAqLzsgfTsKIAkJOTNGOUI2NTgwQkEwRjM1RTAwODU0MDY0IC8qIERPTUhUTUxDYW52YXNFbGVt
ZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzRjlCNjU1MEJBMEYzNUUwMDg1NDA2NCAvKiBET01IVE1MQ2FudmFzRWxlbWVudEludGVy
bmFsLmggKi87IH07CiAJCTkzRjlCNkUwMEJBMEZCNzIwMDg1NDA2NCAvKiBKU0NvbW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGOUI2REUw
QkEwRkI3MjAwODU0MDY0IC8qIEpTQ29tbWVudC5jcHAgKi87IH07CkBAIC0xMTQxNiw4ICsxMTQx
Niw4IEBACiAJCTkzRjhCMzA1MEEzMDBGRTEwMEY2MUFCOCAvKiBDb2RlR2VuZXJhdG9yLnBtICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgbmFtZSA9IENvZGVHZW5lcmF0b3IucG07IHBhdGgg
PSBzY3JpcHRzL0NvZGVHZW5lcmF0b3IucG07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzRjhCMzA2MEEzMDBGRUEwMEY2MUFCOCAvKiBDb2RlR2VuZXJhdG9ySlMucG0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0gQ29kZUdlbmVyYXRvckpTLnBtOyBwYXRoID0gLi4v
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHdyYXBz
TGluZXMgPSAwOyB9OwogCQk5M0Y4QjMwNzBBMzAwRkVBMDBGNjFBQjggLyogZ2VuZXJhdGUtYmlu
ZGluZ3MucGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0gImdlbmVyYXRlLWJp
bmRpbmdzLnBsIjsgcGF0aCA9ICJzY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsIjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTNGOTI1NDEwRjdFRjVCODAwN0UzN0M5IC8qIENoZWNr
ZWRSYWRpb0J1dHRvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2hlY2tl
ZFJhZGlvQnV0dG9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5M0Y5MjU0MjBG
N0VGNUI4MDA3RTM3QzkgLyogQ2hlY2tlZFJhZGlvQnV0dG9ucy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDaGVja2VkUmFkaW9CdXR0b25zLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNGOTI1NDEwRjdFRjVCODAwN0UzN0M5IC8qIFJhZGlvQnV0
dG9uR3JvdXBzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJhZGlvQnV0dG9u
R3JvdXBzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRjkyNTQyMEY3RUY1Qjgw
MDdFMzdDOSAvKiBSYWRpb0J1dHRvbkdyb3Vwcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSYWRpb0J1dHRvbkdyb3Vwcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTkzRjlCNjU0MEJBMEYzNUUwMDg1NDA2NCAvKiBET01IVE1MQ2FudmFzRWxlbWVu
dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUhUTUxDYW52
YXNFbGVtZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Y5QjY1NTBCQTBG
MzVFMDA4NTQwNjQgLyogRE9NSFRNTENhbnZhc0VsZW1lbnRJbnRlcm5hbC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBET01IVE1MQ2FudmFzRWxlbWVudEludGVybmFsLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRjlCNkRFMEJBMEZCNzIwMDg1NDA2NCAvKiBK
U0NvbW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDb21t
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0MjM2LDggKzI0MjM2LDYg
QEAKIAkJCQk2NTUwQjY5NTA5OURGMDI3MDA5MEQ3ODEgLyogQ2hhcmFjdGVyRGF0YS5jcHAgKi8s
CiAJCQkJNjU1MEI2OTYwOTlERjAyNzAwOTBENzgxIC8qIENoYXJhY3RlckRhdGEuaCAqLywKIAkJ
CQk5M0VFQzFFNjA5QzI4Nzc3MDBDNTE1RDEgLyogQ2hhcmFjdGVyRGF0YS5pZGwgKi8sCi0JCQkJ
OTNGOTI1NDIwRjdFRjVCODAwN0UzN0M5IC8qIENoZWNrZWRSYWRpb0J1dHRvbnMuY3BwICovLAot
CQkJCTkzRjkyNTQxMEY3RUY1QjgwMDdFMzdDOSAvKiBDaGVja2VkUmFkaW9CdXR0b25zLmggKi8s
CiAJCQkJRDYxOUEzMDUxNDRFMDBCRTAwNEJDMzAyIC8qIENoaWxkTGlzdE11dGF0aW9uU2NvcGUu
Y3BwICovLAogCQkJCUQ2MTlBMzA2MTQ0RTAwQkUwMDRCQzMwMiAvKiBDaGlsZExpc3RNdXRhdGlv
blNjb3BlLmggKi8sCiAJCQkJODNEMjZEM0MxQUZEQ0M1MDAwMUIzODczIC8qIENoaWxkTm9kZS5p
ZGwgKi8sCkBAIC0yNDUxNiw2ICsyNDUxNCw4IEBACiAJCQkJRkY5NDVFQ0ExNjFGN0YzNjAwOTcx
QkM4IC8qIFBzZXVkb0VsZW1lbnQuaCAqLywKIAkJCQk1NTBBMEJDNzA4NUY2MDM5MDA3MzUzRDYg
LyogUXVhbGlmaWVkTmFtZS5jcHAgKi8sCiAJCQkJNTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2IC8q
IFF1YWxpZmllZE5hbWUuaCAqLywKKwkJCQk5M0Y5MjU0MjBGN0VGNUI4MDA3RTM3QzkgLyogUmFk
aW9CdXR0b25Hcm91cHMuY3BwICovLAorCQkJCTkzRjkyNTQxMEY3RUY1QjgwMDdFMzdDOSAvKiBS
YWRpb0J1dHRvbkdyb3Vwcy5oICovLAogCQkJCUY1MjNEMzAzMDJERTQ0NzYwMTg2MzVDQSAvKiBS
YW5nZS5jcHAgKi8sCiAJCQkJRjUyM0QzMDQwMkRFNDQ3NjAxODYzNUNBIC8qIFJhbmdlLmggKi8s
CiAJCQkJOTM2REQwM0EwOUNFQUMyNzAwNTZBRThDIC8qIFJhbmdlLmlkbCAqLywKQEAgLTI1Mjc2
LDcgKzI1Mjc2LDcgQEAKIAkJCQk5N0I4RkZEMTE2QUU3Rjk2MDAzODM4OEQgLyogQ2hhcmFjdGVy
UmVmZXJlbmNlUGFyc2VySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RBMkEwRDAw
NkMxRDAwRUY2RjI2IC8qIENoYXJzZXREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RC
MjEyNTFGMTJEMDAzRUYyNjkgLyogQ2hlY2tib3hJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAot
CQkJCTkzRjkyNTQzMEY3RUY1QjgwMDdFMzdDOSAvKiBDaGVja2VkUmFkaW9CdXR0b25zLmggaW4g
SGVhZGVycyAqLywKKwkJCQk5M0Y5MjU0MzBGN0VGNUI4MDA3RTM3QzkgLyogUmFkaW9CdXR0b25H
cm91cHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUQ2MTlBMzA4MTQ0RTAwQkUwMDRCQzMwMiAvKiBD
aGlsZExpc3RNdXRhdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODE4NzIyMDA5NzdE
M0MwMDA1ODI2RDkgLyogQ2hpbGROb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTREODIz
NTIwQUY5MkE3OTAwMDRGMDU3IC8qIENocm9tZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTIyMCw3
ICsyOTIyMCw3IEBACiAJCQkJNjU1MEI2OUYwOTlERjAyNzAwOTBENzgxIC8qIENoYXJhY3RlckRh
dGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMyNkRDMEMwOURBRDVENjAwQUZDODQ3IC8qIENo
YXJzZXREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY1NUIzREIxMTI1MUYxMkQwMDNFRjI2
OSAvKiBDaGVja2JveElucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk5M0Y5MjU0NDBG
N0VGNUI4MDA3RTM3QzkgLyogQ2hlY2tlZFJhZGlvQnV0dG9ucy5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk5M0Y5MjU0NDBGN0VGNUI4MDA3RTM3QzkgLyogUmFkaW9CdXR0b25Hcm91cHMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRDYxOUEzMDcxNDRFMDBCRTAwNEJDMzAyIC8qIENoaWxkTGlzdE11
dGF0aW9uU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgxODcyMjUwOTc3RDNDMDAwNTgy
NkQ5IC8qIENoaWxkTm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTREODIzOEIwQUY5
MkRGNjAwMDRGMDU3IC8qIENocm9tZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DaGVja2VkUmFkaW9CdXR0b25zLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9DaGVja2VkUmFkaW9CdXR0b25zLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNzAyYjkyYmM0YTA2NjAwOTY4Mjg5NDFmYWQzNzYwYjU2NzBkNGFkOC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hl
Y2tlZFJhZGlvQnV0dG9ucy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyODcgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAq
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgotICoKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ2hlY2tlZFJhZGlv
QnV0dG9ucy5oIgotI2luY2x1ZGUgIlJhbmdlLmgiCi0KLSNpbmNsdWRlICJIVE1MSW5wdXRFbGVt
ZW50LmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBSYWRpb0J1dHRvbkdyb3VwIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
LXB1YmxpYzoKLSAgICBSYWRpb0J1dHRvbkdyb3VwKCk7Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29u
c3QgeyByZXR1cm4gbV9tZW1iZXJzLmlzRW1wdHkoKTsgfQotICAgIGJvb2wgaXNSZXF1aXJlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVxdWlyZWRDb3VudDsgfQotICAgIEhUTUxJbnB1dEVsZW1lbnQq
IGNoZWNrZWRCdXR0b24oKSBjb25zdCB7IHJldHVybiBtX2NoZWNrZWRCdXR0b247IH0KLSAgICB2
b2lkIGFkZChIVE1MSW5wdXRFbGVtZW50Kik7Ci0gICAgdm9pZCB1cGRhdGVDaGVja2VkU3RhdGUo
SFRNTElucHV0RWxlbWVudCopOwotICAgIHZvaWQgcmVxdWlyZWRBdHRyaWJ1dGVDaGFuZ2VkKEhU
TUxJbnB1dEVsZW1lbnQqKTsKLSAgICB2b2lkIHJlbW92ZShIVE1MSW5wdXRFbGVtZW50Kik7Ci0g
ICAgYm9vbCBjb250YWlucyhIVE1MSW5wdXRFbGVtZW50KikgY29uc3Q7Ci0gICAgVmVjdG9yPEhU
TUxJbnB1dEVsZW1lbnQqPiBtZW1iZXJzKCkgY29uc3Q7Ci0gICAgCi1wcml2YXRlOgotICAgIHZv
aWQgdXBkYXRlVmFsaWRpdHlGb3JBbGxCdXR0b25zKCk7Ci0gICAgYm9vbCBpc1ZhbGlkKCkgY29u
c3Q7Ci0gICAgdm9pZCBzZXRDaGVja2VkQnV0dG9uKEhUTUxJbnB1dEVsZW1lbnQqKTsKLQotICAg
IEhhc2hTZXQ8SFRNTElucHV0RWxlbWVudCo+IG1fbWVtYmVyczsKLSAgICBIVE1MSW5wdXRFbGVt
ZW50KiBtX2NoZWNrZWRCdXR0b247Ci0gICAgc2l6ZV90IG1fcmVxdWlyZWRDb3VudDsKLX07Ci0K
LVJhZGlvQnV0dG9uR3JvdXA6OlJhZGlvQnV0dG9uR3JvdXAoKQotICAgIDogbV9jaGVja2VkQnV0
dG9uKG51bGxwdHIpCi0gICAgLCBtX3JlcXVpcmVkQ291bnQoMCkKLXsKLX0KLQotaW5saW5lIGJv
b2wgUmFkaW9CdXR0b25Hcm91cDo6aXNWYWxpZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICFpc1Jl
cXVpcmVkKCkgfHwgbV9jaGVja2VkQnV0dG9uOwotfQotCi1WZWN0b3I8SFRNTElucHV0RWxlbWVu
dCo+IFJhZGlvQnV0dG9uR3JvdXA6Om1lbWJlcnMoKSBjb25zdAotewotICAgIFZlY3RvcjxIVE1M
SW5wdXRFbGVtZW50Kj4gbWVtYmVyczsKLSAgICBjb3B5VG9WZWN0b3IobV9tZW1iZXJzLCBtZW1i
ZXJzKTsKLSAgICBzdGQ6OnNvcnQobWVtYmVycy5iZWdpbigpLCBtZW1iZXJzLmVuZCgpLCBkb2N1
bWVudE9yZGVyQ29tcGFyYXRvcik7Ci0gICAgcmV0dXJuIG1lbWJlcnM7Ci19Ci0gICAgCi12b2lk
IFJhZGlvQnV0dG9uR3JvdXA6OnNldENoZWNrZWRCdXR0b24oSFRNTElucHV0RWxlbWVudCogYnV0
dG9uKQotewotICAgIEhUTUxJbnB1dEVsZW1lbnQqIG9sZENoZWNrZWRCdXR0b24gPSBtX2NoZWNr
ZWRCdXR0b247Ci0gICAgaWYgKG9sZENoZWNrZWRCdXR0b24gPT0gYnV0dG9uKQotICAgICAgICBy
ZXR1cm47Ci0gICAgbV9jaGVja2VkQnV0dG9uID0gYnV0dG9uOwotICAgIGlmIChvbGRDaGVja2Vk
QnV0dG9uKQotICAgICAgICBvbGRDaGVja2VkQnV0dG9uLT5zZXRDaGVja2VkKGZhbHNlKTsKLX0K
LQotdm9pZCBSYWRpb0J1dHRvbkdyb3VwOjphZGQoSFRNTElucHV0RWxlbWVudCogYnV0dG9uKQot
ewotICAgIEFTU0VSVChidXR0b24tPmlzUmFkaW9CdXR0b24oKSk7Ci0gICAgaWYgKCFtX21lbWJl
cnMuYWRkKGJ1dHRvbikuaXNOZXdFbnRyeSkKLSAgICAgICAgcmV0dXJuOwotICAgIGJvb2wgZ3Jv
dXBXYXNWYWxpZCA9IGlzVmFsaWQoKTsKLSAgICBpZiAoYnV0dG9uLT5pc1JlcXVpcmVkKCkpCi0g
ICAgICAgICsrbV9yZXF1aXJlZENvdW50OwotICAgIGlmIChidXR0b24tPmNoZWNrZWQoKSkKLSAg
ICAgICAgc2V0Q2hlY2tlZEJ1dHRvbihidXR0b24pOwotCi0gICAgYm9vbCBncm91cElzVmFsaWQg
PSBpc1ZhbGlkKCk7Ci0gICAgaWYgKGdyb3VwV2FzVmFsaWQgIT0gZ3JvdXBJc1ZhbGlkKQotICAg
ICAgICB1cGRhdGVWYWxpZGl0eUZvckFsbEJ1dHRvbnMoKTsKLSAgICBlbHNlIGlmICghZ3JvdXBJ
c1ZhbGlkKSB7Ci0gICAgICAgIC8vIEEgcmFkaW8gYnV0dG9uIG5vdCBpbiBhIGdyb3VwIGlzIGFs
d2F5cyB2YWxpZC4gV2UgbmVlZCB0byBtYWtlIGl0Ci0gICAgICAgIC8vIGludmFsaWQgb25seSBp
ZiB0aGUgZ3JvdXAgaXMgaW52YWxpZC4KLSAgICAgICAgYnV0dG9uLT51cGRhdGVWYWxpZGl0eSgp
OwotICAgIH0KLX0KLQotdm9pZCBSYWRpb0J1dHRvbkdyb3VwOjp1cGRhdGVDaGVja2VkU3RhdGUo
SFRNTElucHV0RWxlbWVudCogYnV0dG9uKQotewotICAgIEFTU0VSVChidXR0b24tPmlzUmFkaW9C
dXR0b24oKSk7Ci0gICAgQVNTRVJUKG1fbWVtYmVycy5jb250YWlucyhidXR0b24pKTsKLSAgICBi
b29sIHdhc1ZhbGlkID0gaXNWYWxpZCgpOwotICAgIGlmIChidXR0b24tPmNoZWNrZWQoKSkKLSAg
ICAgICAgc2V0Q2hlY2tlZEJ1dHRvbihidXR0b24pOwotICAgIGVsc2UgewotICAgICAgICBpZiAo
bV9jaGVja2VkQnV0dG9uID09IGJ1dHRvbikKLSAgICAgICAgICAgIG1fY2hlY2tlZEJ1dHRvbiA9
IG51bGxwdHI7Ci0gICAgfQotICAgIGlmICh3YXNWYWxpZCAhPSBpc1ZhbGlkKCkpCi0gICAgICAg
IHVwZGF0ZVZhbGlkaXR5Rm9yQWxsQnV0dG9ucygpOwotfQotCi12b2lkIFJhZGlvQnV0dG9uR3Jv
dXA6OnJlcXVpcmVkQXR0cmlidXRlQ2hhbmdlZChIVE1MSW5wdXRFbGVtZW50KiBidXR0b24pCi17
Ci0gICAgQVNTRVJUKGJ1dHRvbi0+aXNSYWRpb0J1dHRvbigpKTsKLSAgICBBU1NFUlQobV9tZW1i
ZXJzLmNvbnRhaW5zKGJ1dHRvbikpOwotICAgIGJvb2wgd2FzVmFsaWQgPSBpc1ZhbGlkKCk7Ci0g
ICAgaWYgKGJ1dHRvbi0+aXNSZXF1aXJlZCgpKQotICAgICAgICArK21fcmVxdWlyZWRDb3VudDsK
LSAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKG1fcmVxdWlyZWRDb3VudCk7Ci0gICAgICAgIC0t
bV9yZXF1aXJlZENvdW50OwotICAgIH0KLSAgICBpZiAod2FzVmFsaWQgIT0gaXNWYWxpZCgpKQot
ICAgICAgICB1cGRhdGVWYWxpZGl0eUZvckFsbEJ1dHRvbnMoKTsKLX0KLQotdm9pZCBSYWRpb0J1
dHRvbkdyb3VwOjpyZW1vdmUoSFRNTElucHV0RWxlbWVudCogYnV0dG9uKQotewotICAgIEFTU0VS
VChidXR0b24tPmlzUmFkaW9CdXR0b24oKSk7Ci0gICAgSGFzaFNldDxIVE1MSW5wdXRFbGVtZW50
Kj46Oml0ZXJhdG9yIGl0ID0gbV9tZW1iZXJzLmZpbmQoYnV0dG9uKTsKLSAgICBpZiAoaXQgPT0g
bV9tZW1iZXJzLmVuZCgpKQotICAgICAgICByZXR1cm47Ci0gICAgYm9vbCB3YXNWYWxpZCA9IGlz
VmFsaWQoKTsKLSAgICBtX21lbWJlcnMucmVtb3ZlKGl0KTsKLSAgICBpZiAoYnV0dG9uLT5pc1Jl
cXVpcmVkKCkpIHsKLSAgICAgICAgQVNTRVJUKG1fcmVxdWlyZWRDb3VudCk7Ci0gICAgICAgIC0t
bV9yZXF1aXJlZENvdW50OwotICAgIH0KLSAgICBpZiAobV9jaGVja2VkQnV0dG9uID09IGJ1dHRv
bikKLSAgICAgICAgbV9jaGVja2VkQnV0dG9uID0gbnVsbHB0cjsKLQotICAgIGlmIChtX21lbWJl
cnMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEFTU0VSVCghbV9yZXF1aXJlZENvdW50KTsKLSAgICAg
ICAgQVNTRVJUKCFtX2NoZWNrZWRCdXR0b24pOwotICAgIH0gZWxzZSBpZiAod2FzVmFsaWQgIT0g
aXNWYWxpZCgpKQotICAgICAgICB1cGRhdGVWYWxpZGl0eUZvckFsbEJ1dHRvbnMoKTsKLSAgICBp
ZiAoIXdhc1ZhbGlkKSB7Ci0gICAgICAgIC8vIEEgcmFkaW8gYnV0dG9uIG5vdCBpbiBhIGdyb3Vw
IGlzIGFsd2F5cyB2YWxpZC4gV2UgbmVlZCB0byBtYWtlIGl0Ci0gICAgICAgIC8vIHZhbGlkIG9u
bHkgaWYgdGhlIGdyb3VwIHdhcyBpbnZhbGlkLgotICAgICAgICBidXR0b24tPnVwZGF0ZVZhbGlk
aXR5KCk7Ci0gICAgfQotfQotCi12b2lkIFJhZGlvQnV0dG9uR3JvdXA6OnVwZGF0ZVZhbGlkaXR5
Rm9yQWxsQnV0dG9ucygpCi17Ci0gICAgZm9yIChhdXRvJiBidXR0b24gOiBtX21lbWJlcnMpIHsK
LSAgICAgICAgQVNTRVJUKGJ1dHRvbi0+aXNSYWRpb0J1dHRvbigpKTsKLSAgICAgICAgYnV0dG9u
LT51cGRhdGVWYWxpZGl0eSgpOwotICAgIH0KLX0KLQotYm9vbCBSYWRpb0J1dHRvbkdyb3VwOjpj
b250YWlucyhIVE1MSW5wdXRFbGVtZW50KiBidXR0b24pIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
bWVtYmVycy5jb250YWlucyhidXR0b24pOwotfQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIEV4cGxpY2l0
eSBkZWZpbmUgZW1wdHkgY29uc3RydWN0b3IgYW5kIGRlc3RydWN0b3IgaW4gb3JkZXIgdG8gcHJl
dmVudCB0aGUKLS8vIGNvbXBpbGVyIGZyb20gZ2VuZXJhdGluZyB0aGVtIGFzIGlubGluZXMuIFNv
IHdlIGRvbid0IG5lZWQgdG8gdG8gZGVmaW5lCi0vLyBSYWRpb0J1dHRvbkdyb3VwIGluIHRoZSBo
ZWFkZXIuCi1DaGVja2VkUmFkaW9CdXR0b25zOjpDaGVja2VkUmFkaW9CdXR0b25zKCkKLXsKLX0K
LQotQ2hlY2tlZFJhZGlvQnV0dG9uczo6fkNoZWNrZWRSYWRpb0J1dHRvbnMoKQotewotfQotCi12
b2lkIENoZWNrZWRSYWRpb0J1dHRvbnM6OmFkZEJ1dHRvbihIVE1MSW5wdXRFbGVtZW50KiBlbGVt
ZW50KQotewotICAgIEFTU0VSVChlbGVtZW50LT5pc1JhZGlvQnV0dG9uKCkpOwotICAgIGlmIChl
bGVtZW50LT5uYW1lKCkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1f
bmFtZVRvR3JvdXBNYXApCi0gICAgICAgIG1fbmFtZVRvR3JvdXBNYXAgPSBzdGQ6Om1ha2VfdW5p
cXVlPE5hbWVUb0dyb3VwTWFwPigpOwotCi0gICAgYXV0byYgZ3JvdXAgPSBtX25hbWVUb0dyb3Vw
TWFwLT5hZGQoZWxlbWVudC0+bmFtZSgpLmltcGwoKSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVl
OwotICAgIGlmICghZ3JvdXApCi0gICAgICAgIGdyb3VwID0gc3RkOjptYWtlX3VuaXF1ZTxSYWRp
b0J1dHRvbkdyb3VwPigpOwotICAgIGdyb3VwLT5hZGQoZWxlbWVudCk7Ci19Ci0KLVZlY3RvcjxI
VE1MSW5wdXRFbGVtZW50Kj4gQ2hlY2tlZFJhZGlvQnV0dG9uczo6Z3JvdXBNZW1iZXJzKGNvbnN0
IEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGVsZW1lbnQu
aXNSYWRpb0J1dHRvbigpKTsKLSAgICBpZiAoIWVsZW1lbnQuaXNSYWRpb0J1dHRvbigpKQotICAg
ICAgICByZXR1cm4geyB9OwotICAgIAotICAgIGF1dG8qIG5hbWUgPSBlbGVtZW50Lm5hbWUoKS5p
bXBsKCk7Ci0gICAgaWYgKCFuYW1lKQotICAgICAgICByZXR1cm4geyB9OwotCi0gICAgYXV0byog
Z3JvdXAgPSBtX25hbWVUb0dyb3VwTWFwLT5nZXQobmFtZSk7Ci0gICAgaWYgKCFncm91cCkKLSAg
ICAgICAgcmV0dXJuIHsgfTsKLSAgICByZXR1cm4gZ3JvdXAtPm1lbWJlcnMoKTsKLX0KLSAgICAK
LXZvaWQgQ2hlY2tlZFJhZGlvQnV0dG9uczo6dXBkYXRlQ2hlY2tlZFN0YXRlKEhUTUxJbnB1dEVs
ZW1lbnQqIGVsZW1lbnQpCi17Ci0gICAgQVNTRVJUKGVsZW1lbnQtPmlzUmFkaW9CdXR0b24oKSk7
Ci0gICAgaWYgKGVsZW1lbnQtPm5hbWUoKS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAg
ICBBU1NFUlQobV9uYW1lVG9Hcm91cE1hcCk7Ci0gICAgaWYgKCFtX25hbWVUb0dyb3VwTWFwKQot
ICAgICAgICByZXR1cm47Ci0gICAgUmFkaW9CdXR0b25Hcm91cCogZ3JvdXAgPSBtX25hbWVUb0dy
b3VwTWFwLT5nZXQoZWxlbWVudC0+bmFtZSgpLmltcGwoKSk7Ci0gICAgQVNTRVJUKGdyb3VwKTsK
LSAgICBncm91cC0+dXBkYXRlQ2hlY2tlZFN0YXRlKGVsZW1lbnQpOwotfQotCi12b2lkIENoZWNr
ZWRSYWRpb0J1dHRvbnM6OnJlcXVpcmVkQXR0cmlidXRlQ2hhbmdlZChIVE1MSW5wdXRFbGVtZW50
KiBlbGVtZW50KQotewotICAgIEFTU0VSVChlbGVtZW50LT5pc1JhZGlvQnV0dG9uKCkpOwotICAg
IGlmIChlbGVtZW50LT5uYW1lKCkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0gICAgQVNT
RVJUKG1fbmFtZVRvR3JvdXBNYXApOwotICAgIGlmICghbV9uYW1lVG9Hcm91cE1hcCkKLSAgICAg
ICAgcmV0dXJuOwotICAgIFJhZGlvQnV0dG9uR3JvdXAqIGdyb3VwID0gbV9uYW1lVG9Hcm91cE1h
cC0+Z2V0KGVsZW1lbnQtPm5hbWUoKS5pbXBsKCkpOwotICAgIEFTU0VSVChncm91cCk7Ci0gICAg
Z3JvdXAtPnJlcXVpcmVkQXR0cmlidXRlQ2hhbmdlZChlbGVtZW50KTsKLX0KLQotSFRNTElucHV0
RWxlbWVudCogQ2hlY2tlZFJhZGlvQnV0dG9uczo6Y2hlY2tlZEJ1dHRvbkZvckdyb3VwKGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QKLXsKLSAgICBpZiAoIW1fbmFtZVRvR3JvdXBNYXAp
Ci0gICAgICAgIHJldHVybiAwOwotICAgIG1fbmFtZVRvR3JvdXBNYXAtPmNoZWNrQ29uc2lzdGVu
Y3koKTsKLSAgICBSYWRpb0J1dHRvbkdyb3VwKiBncm91cCA9IG1fbmFtZVRvR3JvdXBNYXAtPmdl
dChuYW1lLmltcGwoKSk7Ci0gICAgcmV0dXJuIGdyb3VwID8gZ3JvdXAtPmNoZWNrZWRCdXR0b24o
KSA6IG51bGxwdHI7Ci19Ci0KLWJvb2wgQ2hlY2tlZFJhZGlvQnV0dG9uczo6aXNJblJlcXVpcmVk
R3JvdXAoSFRNTElucHV0RWxlbWVudCogZWxlbWVudCkgY29uc3QKLXsKLSAgICBBU1NFUlQoZWxl
bWVudC0+aXNSYWRpb0J1dHRvbigpKTsKLSAgICBpZiAoZWxlbWVudC0+bmFtZSgpLmlzRW1wdHko
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghbV9uYW1lVG9Hcm91cE1hcCkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFJhZGlvQnV0dG9uR3JvdXAqIGdyb3VwID0gbV9uYW1l
VG9Hcm91cE1hcC0+Z2V0KGVsZW1lbnQtPm5hbWUoKS5pbXBsKCkpOwotICAgIHJldHVybiBncm91
cCAmJiBncm91cC0+aXNSZXF1aXJlZCgpICYmIGdyb3VwLT5jb250YWlucyhlbGVtZW50KTsKLX0K
LQotdm9pZCBDaGVja2VkUmFkaW9CdXR0b25zOjpyZW1vdmVCdXR0b24oSFRNTElucHV0RWxlbWVu
dCogZWxlbWVudCkKLXsKLSAgICBBU1NFUlQoZWxlbWVudC0+aXNSYWRpb0J1dHRvbigpKTsKLSAg
ICBpZiAoZWxlbWVudC0+bmFtZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlm
ICghbV9uYW1lVG9Hcm91cE1hcCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9uYW1lVG9Hcm91
cE1hcC0+Y2hlY2tDb25zaXN0ZW5jeSgpOwotICAgIE5hbWVUb0dyb3VwTWFwOjppdGVyYXRvciBp
dCA9IG1fbmFtZVRvR3JvdXBNYXAtPmZpbmQoZWxlbWVudC0+bmFtZSgpLmltcGwoKSk7Ci0gICAg
aWYgKGl0ID09IG1fbmFtZVRvR3JvdXBNYXAtPmVuZCgpKQotICAgICAgICByZXR1cm47Ci0gICAg
aXQtPnZhbHVlLT5yZW1vdmUoZWxlbWVudCk7Ci0gICAgaWYgKGl0LT52YWx1ZS0+aXNFbXB0eSgp
KSB7Ci0gICAgICAgIC8vIEZJWE1FOiBXZSBtYXkgc2tpcCBkZWFsbG9jYXRpbmcgdGhlIGVtcHR5
IFJhZGlvQnV0dG9uR3JvdXAgZm9yCi0gICAgICAgIC8vIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50
LiBJZiB3ZSBkbyBzbywgd2UgbmVlZCB0byBjaGFuZ2UgdGhlIGtleSB0eXBlCi0gICAgICAgIC8v
IG9mIG1fbmFtZVRvR3JvdXBNYXAgZnJvbSBBdG9taWNTdHJpbmdJbXBsKiB0byBSZWZQdHI8QXRv
bWljU3RyaW5nSW1wbD4uCi0gICAgICAgIG1fbmFtZVRvR3JvdXBNYXAtPnJlbW92ZShpdCk7Ci0g
ICAgICAgIGlmIChtX25hbWVUb0dyb3VwTWFwLT5pc0VtcHR5KCkpCi0gICAgICAgICAgICBtX25h
bWVUb0dyb3VwTWFwID0gbnVsbHB0cjsKLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hlY2tlZFJhZGlvQnV0dG9ucy5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0NoZWNrZWRSYWRpb0J1dHRvbnMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYzU5NWE0MTY0ZDNlMmM0OTRjMWE2NDJkZmZlOWY0NjUwZjFkMzdjZC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ2hlY2tlZFJhZGlvQnV0dG9ucy5oCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoK
LSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0g
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgotICoKLSAqLwotCi0jaWZuZGVmIENoZWNrZWRSYWRpb0J1dHRvbnNfaAotI2RlZmluZSBD
aGVja2VkUmFkaW9CdXR0b25zX2gKLQotI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEhUTUxJbnB1dEVsZW1lbnQ7Ci1j
bGFzcyBSYWRpb0J1dHRvbkdyb3VwOwotCi0vLyBGSVhNRTogUmVuYW1lIHRoZSBjbGFzcy4gVGhl
IGNsYXNzIHdhcyBhIHNpbXBsZSBtYXAgZnJvbSBhIG5hbWUgdG8gYSBjaGVja2VkCi0vLyByYWRp
byBidXR0b24uIEl0IG1hbmFnZXMgUmFkaW9CdXR0b25Hcm91cCBvYmplY3RzIG5vdy4KLWNsYXNz
IENoZWNrZWRSYWRpb0J1dHRvbnMgewotcHVibGljOgotICAgIENoZWNrZWRSYWRpb0J1dHRvbnMo
KTsKLSAgICB+Q2hlY2tlZFJhZGlvQnV0dG9ucygpOwotICAgIHZvaWQgYWRkQnV0dG9uKEhUTUxJ
bnB1dEVsZW1lbnQqKTsKLSAgICB2b2lkIHVwZGF0ZUNoZWNrZWRTdGF0ZShIVE1MSW5wdXRFbGVt
ZW50Kik7Ci0gICAgdm9pZCByZXF1aXJlZEF0dHJpYnV0ZUNoYW5nZWQoSFRNTElucHV0RWxlbWVu
dCopOwotICAgIHZvaWQgcmVtb3ZlQnV0dG9uKEhUTUxJbnB1dEVsZW1lbnQqKTsKLSAgICBIVE1M
SW5wdXRFbGVtZW50KiBjaGVja2VkQnV0dG9uRm9yR3JvdXAoY29uc3QgQXRvbWljU3RyaW5nJiBn
cm91cE5hbWUpIGNvbnN0OwotICAgIGJvb2wgaXNJblJlcXVpcmVkR3JvdXAoSFRNTElucHV0RWxl
bWVudCopIGNvbnN0OwotICAgIFZlY3RvcjxIVE1MSW5wdXRFbGVtZW50Kj4gZ3JvdXBNZW1iZXJz
KGNvbnN0IEhUTUxJbnB1dEVsZW1lbnQmKSBjb25zdDsKLSAgICAKLXByaXZhdGU6Ci0gICAgdHlw
ZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBzdGQ6OnVuaXF1ZV9wdHI8UmFkaW9CdXR0
b25Hcm91cD4+IE5hbWVUb0dyb3VwTWFwOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxOYW1lVG9Hcm91
cE1hcD4gbV9uYW1lVG9Hcm91cE1hcDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIENoZWNrZWRSYWRpb0J1dHRvbnNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1JhZGlvQnV0dG9uR3JvdXBzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYWRpb0J1
dHRvbkdyb3Vwcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGE1NzVlMGI3ZGJhYmFhODFiZWExYzQ5ZmZhMzM0
ZTQ2YmNlNGIzZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYWRpb0J1
dHRvbkdyb3Vwcy5jcHAKQEAgLTAsMCArMSwyODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJhZGlvQnV0dG9uR3JvdXBzLmgiCisKKyNpbmNsdWRl
ICJIVE1MSW5wdXRFbGVtZW50LmgiCisjaW5jbHVkZSAiUmFuZ2UuaCIKKyNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJhZGlvQnV0dG9uR3Jv
dXAgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFJhZGlvQnV0
dG9uR3JvdXAoKTsKKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX21lbWJlcnMu
aXNFbXB0eSgpOyB9CisgICAgYm9vbCBpc1JlcXVpcmVkKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1
aXJlZENvdW50OyB9CisgICAgSFRNTElucHV0RWxlbWVudCogY2hlY2tlZEJ1dHRvbigpIGNvbnN0
IHsgcmV0dXJuIG1fY2hlY2tlZEJ1dHRvbjsgfQorICAgIHZvaWQgYWRkKEhUTUxJbnB1dEVsZW1l
bnQqKTsKKyAgICB2b2lkIHVwZGF0ZUNoZWNrZWRTdGF0ZShIVE1MSW5wdXRFbGVtZW50Kik7Cisg
ICAgdm9pZCByZXF1aXJlZEF0dHJpYnV0ZUNoYW5nZWQoSFRNTElucHV0RWxlbWVudCopOworICAg
IHZvaWQgcmVtb3ZlKEhUTUxJbnB1dEVsZW1lbnQqKTsKKyAgICBib29sIGNvbnRhaW5zKEhUTUxJ
bnB1dEVsZW1lbnQqKSBjb25zdDsKKyAgICBWZWN0b3I8SFRNTElucHV0RWxlbWVudCo+IG1lbWJl
cnMoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICB2b2lkIHVwZGF0ZVZhbGlkaXR5Rm9yQWxsQnV0
dG9ucygpOworICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0OworICAgIHZvaWQgc2V0Q2hlY2tlZEJ1
dHRvbihIVE1MSW5wdXRFbGVtZW50Kik7CisKKyAgICBIYXNoU2V0PEhUTUxJbnB1dEVsZW1lbnQq
PiBtX21lbWJlcnM7CisgICAgSFRNTElucHV0RWxlbWVudCogbV9jaGVja2VkQnV0dG9uOworICAg
IHNpemVfdCBtX3JlcXVpcmVkQ291bnQ7Cit9OworCitSYWRpb0J1dHRvbkdyb3VwOjpSYWRpb0J1
dHRvbkdyb3VwKCkKKyAgICA6IG1fY2hlY2tlZEJ1dHRvbihudWxscHRyKQorICAgICwgbV9yZXF1
aXJlZENvdW50KDApCit7Cit9CisKK2lubGluZSBib29sIFJhZGlvQnV0dG9uR3JvdXA6OmlzVmFs
aWQoKSBjb25zdAoreworICAgIHJldHVybiAhaXNSZXF1aXJlZCgpIHx8IG1fY2hlY2tlZEJ1dHRv
bjsKK30KKworVmVjdG9yPEhUTUxJbnB1dEVsZW1lbnQqPiBSYWRpb0J1dHRvbkdyb3VwOjptZW1i
ZXJzKCkgY29uc3QKK3sKKyAgICBWZWN0b3I8SFRNTElucHV0RWxlbWVudCo+IG1lbWJlcnM7Cisg
ICAgY29weVRvVmVjdG9yKG1fbWVtYmVycywgbWVtYmVycyk7CisgICAgc3RkOjpzb3J0KG1lbWJl
cnMuYmVnaW4oKSwgbWVtYmVycy5lbmQoKSwgZG9jdW1lbnRPcmRlckNvbXBhcmF0b3IpOworICAg
IHJldHVybiBtZW1iZXJzOworfQorCit2b2lkIFJhZGlvQnV0dG9uR3JvdXA6OnNldENoZWNrZWRC
dXR0b24oSFRNTElucHV0RWxlbWVudCogYnV0dG9uKQoreworICAgIEhUTUxJbnB1dEVsZW1lbnQq
IG9sZENoZWNrZWRCdXR0b24gPSBtX2NoZWNrZWRCdXR0b247CisgICAgaWYgKG9sZENoZWNrZWRC
dXR0b24gPT0gYnV0dG9uKQorICAgICAgICByZXR1cm47CisgICAgbV9jaGVja2VkQnV0dG9uID0g
YnV0dG9uOworICAgIGlmIChvbGRDaGVja2VkQnV0dG9uKQorICAgICAgICBvbGRDaGVja2VkQnV0
dG9uLT5zZXRDaGVja2VkKGZhbHNlKTsKK30KKwordm9pZCBSYWRpb0J1dHRvbkdyb3VwOjphZGQo
SFRNTElucHV0RWxlbWVudCogYnV0dG9uKQoreworICAgIEFTU0VSVChidXR0b24tPmlzUmFkaW9C
dXR0b24oKSk7CisgICAgaWYgKCFtX21lbWJlcnMuYWRkKGJ1dHRvbikuaXNOZXdFbnRyeSkKKyAg
ICAgICAgcmV0dXJuOworICAgIGJvb2wgZ3JvdXBXYXNWYWxpZCA9IGlzVmFsaWQoKTsKKyAgICBp
ZiAoYnV0dG9uLT5pc1JlcXVpcmVkKCkpCisgICAgICAgICsrbV9yZXF1aXJlZENvdW50OworICAg
IGlmIChidXR0b24tPmNoZWNrZWQoKSkKKyAgICAgICAgc2V0Q2hlY2tlZEJ1dHRvbihidXR0b24p
OworCisgICAgYm9vbCBncm91cElzVmFsaWQgPSBpc1ZhbGlkKCk7CisgICAgaWYgKGdyb3VwV2Fz
VmFsaWQgIT0gZ3JvdXBJc1ZhbGlkKQorICAgICAgICB1cGRhdGVWYWxpZGl0eUZvckFsbEJ1dHRv
bnMoKTsKKyAgICBlbHNlIGlmICghZ3JvdXBJc1ZhbGlkKSB7CisgICAgICAgIC8vIEEgcmFkaW8g
YnV0dG9uIG5vdCBpbiBhIGdyb3VwIGlzIGFsd2F5cyB2YWxpZC4gV2UgbmVlZCB0byBtYWtlIGl0
CisgICAgICAgIC8vIGludmFsaWQgb25seSBpZiB0aGUgZ3JvdXAgaXMgaW52YWxpZC4KKyAgICAg
ICAgYnV0dG9uLT51cGRhdGVWYWxpZGl0eSgpOworICAgIH0KK30KKwordm9pZCBSYWRpb0J1dHRv
bkdyb3VwOjp1cGRhdGVDaGVja2VkU3RhdGUoSFRNTElucHV0RWxlbWVudCogYnV0dG9uKQorewor
ICAgIEFTU0VSVChidXR0b24tPmlzUmFkaW9CdXR0b24oKSk7CisgICAgQVNTRVJUKG1fbWVtYmVy
cy5jb250YWlucyhidXR0b24pKTsKKyAgICBib29sIHdhc1ZhbGlkID0gaXNWYWxpZCgpOworICAg
IGlmIChidXR0b24tPmNoZWNrZWQoKSkKKyAgICAgICAgc2V0Q2hlY2tlZEJ1dHRvbihidXR0b24p
OworICAgIGVsc2UgeworICAgICAgICBpZiAobV9jaGVja2VkQnV0dG9uID09IGJ1dHRvbikKKyAg
ICAgICAgICAgIG1fY2hlY2tlZEJ1dHRvbiA9IG51bGxwdHI7CisgICAgfQorICAgIGlmICh3YXNW
YWxpZCAhPSBpc1ZhbGlkKCkpCisgICAgICAgIHVwZGF0ZVZhbGlkaXR5Rm9yQWxsQnV0dG9ucygp
OworfQorCit2b2lkIFJhZGlvQnV0dG9uR3JvdXA6OnJlcXVpcmVkQXR0cmlidXRlQ2hhbmdlZChI
VE1MSW5wdXRFbGVtZW50KiBidXR0b24pCit7CisgICAgQVNTRVJUKGJ1dHRvbi0+aXNSYWRpb0J1
dHRvbigpKTsKKyAgICBBU1NFUlQobV9tZW1iZXJzLmNvbnRhaW5zKGJ1dHRvbikpOworICAgIGJv
b2wgd2FzVmFsaWQgPSBpc1ZhbGlkKCk7CisgICAgaWYgKGJ1dHRvbi0+aXNSZXF1aXJlZCgpKQor
ICAgICAgICArK21fcmVxdWlyZWRDb3VudDsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG1f
cmVxdWlyZWRDb3VudCk7CisgICAgICAgIC0tbV9yZXF1aXJlZENvdW50OworICAgIH0KKyAgICBp
ZiAod2FzVmFsaWQgIT0gaXNWYWxpZCgpKQorICAgICAgICB1cGRhdGVWYWxpZGl0eUZvckFsbEJ1
dHRvbnMoKTsKK30KKwordm9pZCBSYWRpb0J1dHRvbkdyb3VwOjpyZW1vdmUoSFRNTElucHV0RWxl
bWVudCogYnV0dG9uKQoreworICAgIEFTU0VSVChidXR0b24tPmlzUmFkaW9CdXR0b24oKSk7Cisg
ICAgSGFzaFNldDxIVE1MSW5wdXRFbGVtZW50Kj46Oml0ZXJhdG9yIGl0ID0gbV9tZW1iZXJzLmZp
bmQoYnV0dG9uKTsKKyAgICBpZiAoaXQgPT0gbV9tZW1iZXJzLmVuZCgpKQorICAgICAgICByZXR1
cm47CisgICAgYm9vbCB3YXNWYWxpZCA9IGlzVmFsaWQoKTsKKyAgICBtX21lbWJlcnMucmVtb3Zl
KGl0KTsKKyAgICBpZiAoYnV0dG9uLT5pc1JlcXVpcmVkKCkpIHsKKyAgICAgICAgQVNTRVJUKG1f
cmVxdWlyZWRDb3VudCk7CisgICAgICAgIC0tbV9yZXF1aXJlZENvdW50OworICAgIH0KKyAgICBp
ZiAobV9jaGVja2VkQnV0dG9uID09IGJ1dHRvbikKKyAgICAgICAgbV9jaGVja2VkQnV0dG9uID0g
bnVsbHB0cjsKKworICAgIGlmIChtX21lbWJlcnMuaXNFbXB0eSgpKSB7CisgICAgICAgIEFTU0VS
VCghbV9yZXF1aXJlZENvdW50KTsKKyAgICAgICAgQVNTRVJUKCFtX2NoZWNrZWRCdXR0b24pOwor
ICAgIH0gZWxzZSBpZiAod2FzVmFsaWQgIT0gaXNWYWxpZCgpKQorICAgICAgICB1cGRhdGVWYWxp
ZGl0eUZvckFsbEJ1dHRvbnMoKTsKKyAgICBpZiAoIXdhc1ZhbGlkKSB7CisgICAgICAgIC8vIEEg
cmFkaW8gYnV0dG9uIG5vdCBpbiBhIGdyb3VwIGlzIGFsd2F5cyB2YWxpZC4gV2UgbmVlZCB0byBt
YWtlIGl0CisgICAgICAgIC8vIHZhbGlkIG9ubHkgaWYgdGhlIGdyb3VwIHdhcyBpbnZhbGlkLgor
ICAgICAgICBidXR0b24tPnVwZGF0ZVZhbGlkaXR5KCk7CisgICAgfQorfQorCit2b2lkIFJhZGlv
QnV0dG9uR3JvdXA6OnVwZGF0ZVZhbGlkaXR5Rm9yQWxsQnV0dG9ucygpCit7CisgICAgZm9yIChh
dXRvJiBidXR0b24gOiBtX21lbWJlcnMpIHsKKyAgICAgICAgQVNTRVJUKGJ1dHRvbi0+aXNSYWRp
b0J1dHRvbigpKTsKKyAgICAgICAgYnV0dG9uLT51cGRhdGVWYWxpZGl0eSgpOworICAgIH0KK30K
KworYm9vbCBSYWRpb0J1dHRvbkdyb3VwOjpjb250YWlucyhIVE1MSW5wdXRFbGVtZW50KiBidXR0
b24pIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbWVtYmVycy5jb250YWlucyhidXR0b24pOworfQor
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKKy8vIEV4cGxpY2l0eSBkZWZpbmUgZW1wdHkgY29uc3RydWN0b3IgYW5k
IGRlc3RydWN0b3IgaW4gb3JkZXIgdG8gcHJldmVudCB0aGUKKy8vIGNvbXBpbGVyIGZyb20gZ2Vu
ZXJhdGluZyB0aGVtIGFzIGlubGluZXMuIFNvIHdlIGRvbid0IG5lZWQgdG8gdG8gZGVmaW5lCisv
LyBSYWRpb0J1dHRvbkdyb3VwIGluIHRoZSBoZWFkZXIuCitSYWRpb0J1dHRvbkdyb3Vwczo6UmFk
aW9CdXR0b25Hcm91cHMoKQoreworfQorCitSYWRpb0J1dHRvbkdyb3Vwczo6flJhZGlvQnV0dG9u
R3JvdXBzKCkKK3sKK30KKwordm9pZCBSYWRpb0J1dHRvbkdyb3Vwczo6YWRkQnV0dG9uKEhUTUxJ
bnB1dEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgQVNTRVJUKGVsZW1lbnQtPmlzUmFkaW9CdXR0
b24oKSk7CisgICAgaWYgKGVsZW1lbnQtPm5hbWUoKS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmICghbV9uYW1lVG9Hcm91cE1hcCkKKyAgICAgICAgbV9uYW1lVG9Hcm91cE1h
cCA9IHN0ZDo6bWFrZV91bmlxdWU8TmFtZVRvR3JvdXBNYXA+KCk7CisKKyAgICBhdXRvJiBncm91
cCA9IG1fbmFtZVRvR3JvdXBNYXAtPmFkZChlbGVtZW50LT5uYW1lKCkuaW1wbCgpLCBudWxscHRy
KS5pdGVyYXRvci0+dmFsdWU7CisgICAgaWYgKCFncm91cCkKKyAgICAgICAgZ3JvdXAgPSBzdGQ6
Om1ha2VfdW5pcXVlPFJhZGlvQnV0dG9uR3JvdXA+KCk7CisgICAgZ3JvdXAtPmFkZChlbGVtZW50
KTsKK30KKworVmVjdG9yPEhUTUxJbnB1dEVsZW1lbnQqPiBSYWRpb0J1dHRvbkdyb3Vwczo6Z3Jv
dXBNZW1iZXJzKGNvbnN0IEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0Cit7CisgICAg
QVNTRVJUKGVsZW1lbnQuaXNSYWRpb0J1dHRvbigpKTsKKyAgICBpZiAoIWVsZW1lbnQuaXNSYWRp
b0J1dHRvbigpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byogbmFtZSA9IGVsZW1l
bnQubmFtZSgpLmltcGwoKTsKKyAgICBpZiAoIW5hbWUpCisgICAgICAgIHJldHVybiB7IH07CisK
KyAgICBhdXRvKiBncm91cCA9IG1fbmFtZVRvR3JvdXBNYXAtPmdldChuYW1lKTsKKyAgICBpZiAo
IWdyb3VwKQorICAgICAgICByZXR1cm4geyB9OworICAgIHJldHVybiBncm91cC0+bWVtYmVycygp
OworfQorCit2b2lkIFJhZGlvQnV0dG9uR3JvdXBzOjp1cGRhdGVDaGVja2VkU3RhdGUoSFRNTElu
cHV0RWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBBU1NFUlQoZWxlbWVudC0+aXNSYWRpb0J1dHRv
bigpKTsKKyAgICBpZiAoZWxlbWVudC0+bmFtZSgpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
OworICAgIEFTU0VSVChtX25hbWVUb0dyb3VwTWFwKTsKKyAgICBpZiAoIW1fbmFtZVRvR3JvdXBN
YXApCisgICAgICAgIHJldHVybjsKKyAgICBSYWRpb0J1dHRvbkdyb3VwKiBncm91cCA9IG1fbmFt
ZVRvR3JvdXBNYXAtPmdldChlbGVtZW50LT5uYW1lKCkuaW1wbCgpKTsKKyAgICBBU1NFUlQoZ3Jv
dXApOworICAgIGdyb3VwLT51cGRhdGVDaGVja2VkU3RhdGUoZWxlbWVudCk7Cit9CisKK3ZvaWQg
UmFkaW9CdXR0b25Hcm91cHM6OnJlcXVpcmVkQXR0cmlidXRlQ2hhbmdlZChIVE1MSW5wdXRFbGVt
ZW50KiBlbGVtZW50KQoreworICAgIEFTU0VSVChlbGVtZW50LT5pc1JhZGlvQnV0dG9uKCkpOwor
ICAgIGlmIChlbGVtZW50LT5uYW1lKCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAg
QVNTRVJUKG1fbmFtZVRvR3JvdXBNYXApOworICAgIGlmICghbV9uYW1lVG9Hcm91cE1hcCkKKyAg
ICAgICAgcmV0dXJuOworICAgIFJhZGlvQnV0dG9uR3JvdXAqIGdyb3VwID0gbV9uYW1lVG9Hcm91
cE1hcC0+Z2V0KGVsZW1lbnQtPm5hbWUoKS5pbXBsKCkpOworICAgIEFTU0VSVChncm91cCk7Cisg
ICAgZ3JvdXAtPnJlcXVpcmVkQXR0cmlidXRlQ2hhbmdlZChlbGVtZW50KTsKK30KKworSFRNTElu
cHV0RWxlbWVudCogUmFkaW9CdXR0b25Hcm91cHM6OmNoZWNrZWRCdXR0b25Gb3JHcm91cChjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0Cit7CisgICAgaWYgKCFtX25hbWVUb0dyb3VwTWFw
KQorICAgICAgICByZXR1cm4gMDsKKyAgICBtX25hbWVUb0dyb3VwTWFwLT5jaGVja0NvbnNpc3Rl
bmN5KCk7CisgICAgUmFkaW9CdXR0b25Hcm91cCogZ3JvdXAgPSBtX25hbWVUb0dyb3VwTWFwLT5n
ZXQobmFtZS5pbXBsKCkpOworICAgIHJldHVybiBncm91cCA/IGdyb3VwLT5jaGVja2VkQnV0dG9u
KCkgOiBudWxscHRyOworfQorCitib29sIFJhZGlvQnV0dG9uR3JvdXBzOjppc0luUmVxdWlyZWRH
cm91cChIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KSBjb25zdAoreworICAgIEFTU0VSVChlbGVt
ZW50LT5pc1JhZGlvQnV0dG9uKCkpOworICAgIGlmIChlbGVtZW50LT5uYW1lKCkuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFtX25hbWVUb0dyb3VwTWFwKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgUmFkaW9CdXR0b25Hcm91cCogZ3JvdXAgPSBtX25hbWVU
b0dyb3VwTWFwLT5nZXQoZWxlbWVudC0+bmFtZSgpLmltcGwoKSk7CisgICAgcmV0dXJuIGdyb3Vw
ICYmIGdyb3VwLT5pc1JlcXVpcmVkKCkgJiYgZ3JvdXAtPmNvbnRhaW5zKGVsZW1lbnQpOworfQor
Cit2b2lkIFJhZGlvQnV0dG9uR3JvdXBzOjpyZW1vdmVCdXR0b24oSFRNTElucHV0RWxlbWVudCog
ZWxlbWVudCkKK3sKKyAgICBBU1NFUlQoZWxlbWVudC0+aXNSYWRpb0J1dHRvbigpKTsKKyAgICBp
ZiAoZWxlbWVudC0+bmFtZSgpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmICgh
bV9uYW1lVG9Hcm91cE1hcCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9uYW1lVG9Hcm91cE1h
cC0+Y2hlY2tDb25zaXN0ZW5jeSgpOworICAgIE5hbWVUb0dyb3VwTWFwOjppdGVyYXRvciBpdCA9
IG1fbmFtZVRvR3JvdXBNYXAtPmZpbmQoZWxlbWVudC0+bmFtZSgpLmltcGwoKSk7CisgICAgaWYg
KGl0ID09IG1fbmFtZVRvR3JvdXBNYXAtPmVuZCgpKQorICAgICAgICByZXR1cm47CisgICAgaXQt
PnZhbHVlLT5yZW1vdmUoZWxlbWVudCk7CisgICAgaWYgKGl0LT52YWx1ZS0+aXNFbXB0eSgpKSB7
CisgICAgICAgIC8vIEZJWE1FOiBXZSBtYXkgc2tpcCBkZWFsbG9jYXRpbmcgdGhlIGVtcHR5IFJh
ZGlvQnV0dG9uR3JvdXAgZm9yCisgICAgICAgIC8vIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50LiBJ
ZiB3ZSBkbyBzbywgd2UgbmVlZCB0byBjaGFuZ2UgdGhlIGtleSB0eXBlCisgICAgICAgIC8vIG9m
IG1fbmFtZVRvR3JvdXBNYXAgZnJvbSBBdG9taWNTdHJpbmdJbXBsKiB0byBSZWZQdHI8QXRvbWlj
U3RyaW5nSW1wbD4uCisgICAgICAgIG1fbmFtZVRvR3JvdXBNYXAtPnJlbW92ZShpdCk7CisgICAg
ICAgIGlmIChtX25hbWVUb0dyb3VwTWFwLT5pc0VtcHR5KCkpCisgICAgICAgICAgICBtX25hbWVU
b0dyb3VwTWFwID0gbnVsbHB0cjsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFkaW9CdXR0b25Hcm91cHMuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9SYWRpb0J1dHRvbkdyb3Vwcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2NGQyNWJmNjkxYzc0OTdh
OWJlNmIwZjQ1YjM4ZDdlYmJhMGFiZWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vUmFkaW9CdXR0b25Hcm91cHMuaApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisg
KgorICovCisKKyNpZm5kZWYgUmFkaW9CdXR0b25Hcm91cHNfaAorI2RlZmluZSBSYWRpb0J1dHRv
bkdyb3Vwc19oCisKKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
KyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBIVE1MSW5wdXRFbGVtZW50OworY2xhc3MgUmFkaW9C
dXR0b25Hcm91cDsKKworY2xhc3MgUmFkaW9CdXR0b25Hcm91cHMgeworcHVibGljOgorICAgIFJh
ZGlvQnV0dG9uR3JvdXBzKCk7CisgICAgflJhZGlvQnV0dG9uR3JvdXBzKCk7CisgICAgdm9pZCBh
ZGRCdXR0b24oSFRNTElucHV0RWxlbWVudCopOworICAgIHZvaWQgdXBkYXRlQ2hlY2tlZFN0YXRl
KEhUTUxJbnB1dEVsZW1lbnQqKTsKKyAgICB2b2lkIHJlcXVpcmVkQXR0cmlidXRlQ2hhbmdlZChI
VE1MSW5wdXRFbGVtZW50Kik7CisgICAgdm9pZCByZW1vdmVCdXR0b24oSFRNTElucHV0RWxlbWVu
dCopOworICAgIEhUTUxJbnB1dEVsZW1lbnQqIGNoZWNrZWRCdXR0b25Gb3JHcm91cChjb25zdCBB
dG9taWNTdHJpbmcmIGdyb3VwTmFtZSkgY29uc3Q7CisgICAgYm9vbCBpc0luUmVxdWlyZWRHcm91
cChIVE1MSW5wdXRFbGVtZW50KikgY29uc3Q7CisgICAgVmVjdG9yPEhUTUxJbnB1dEVsZW1lbnQq
PiBncm91cE1lbWJlcnMoY29uc3QgSFRNTElucHV0RWxlbWVudCYpIGNvbnN0OworCitwcml2YXRl
OgorICAgIHR5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgc3RkOjp1bmlxdWVfcHRy
PFJhZGlvQnV0dG9uR3JvdXA+PiBOYW1lVG9Hcm91cE1hcDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
TmFtZVRvR3JvdXBNYXA+IG1fbmFtZVRvR3JvdXBNYXA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBSYWRpb0J1dHRvbkdyb3Vwc19oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zv
cm1Db250cm9sbGVyLmgKaW5kZXggMTQ2MjA1NjZhNWNlZjE5MTg0OWZiNGQyYjIzOWEyZTNiMDIz
OGY2Yy4uM2I5YjQxOGJhZDc3YmM1NDgyNzlmNTgwZTE2OTRkODUxYWM4YzkyZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuaApAQCAtMjIsNyArMjIsNyBAQAogI2lmbmRlZiBGb3Jt
Q29udHJvbGxlcl9oCiAjZGVmaW5lIEZvcm1Db250cm9sbGVyX2gKIAotI2luY2x1ZGUgIkNoZWNr
ZWRSYWRpb0J1dHRvbnMuaCIKKyNpbmNsdWRlICJSYWRpb0J1dHRvbkdyb3Vwcy5oIgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgRm9ybUNvbnRy
b2xsZXIoKTsKICAgICB+Rm9ybUNvbnRyb2xsZXIoKTsKIAotICAgIENoZWNrZWRSYWRpb0J1dHRv
bnMmIGNoZWNrZWRSYWRpb0J1dHRvbnMoKSB7IHJldHVybiBtX2NoZWNrZWRSYWRpb0J1dHRvbnM7
IH0KKyAgICBSYWRpb0J1dHRvbkdyb3VwcyYgcmFkaW9CdXR0b25Hcm91cHMoKSB7IHJldHVybiBt
X3JhZGlvQnV0dG9uR3JvdXBzOyB9CiAKICAgICB2b2lkIHJlZ2lzdGVyRm9ybUVsZW1lbnRXaXRo
U3RhdGUoSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZSopOwogICAgIHZvaWQgdW5yZWdp
c3RlckZvcm1FbGVtZW50V2l0aFN0YXRlKEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUq
KTsKQEAgLTEwMiw3ICsxMDIsNyBAQCBwcml2YXRlOgogICAgIEZvcm1Db250cm9sU3RhdGUgdGFr
ZVN0YXRlRm9yRm9ybUVsZW1lbnQoY29uc3QgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0
ZSYpOwogICAgIHN0YXRpYyB2b2lkIGZvcm1TdGF0ZXNGcm9tU3RhdGVWZWN0b3IoY29uc3QgVmVj
dG9yPFN0cmluZz4mLCBTYXZlZEZvcm1TdGF0ZU1hcCYpOwogCi0gICAgQ2hlY2tlZFJhZGlvQnV0
dG9ucyBtX2NoZWNrZWRSYWRpb0J1dHRvbnM7CisgICAgUmFkaW9CdXR0b25Hcm91cHMgbV9yYWRp
b0J1dHRvbkdyb3VwczsKICAgICBGb3JtRWxlbWVudExpc3RIYXNoU2V0IG1fZm9ybUVsZW1lbnRz
V2l0aFN0YXRlOwogICAgIFNhdmVkRm9ybVN0YXRlTWFwIG1fc2F2ZWRGb3JtU3RhdGVNYXA7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEZvcm1LZXlHZW5lcmF0b3I+IG1fZm9ybUtleUdlbmVyYXRvcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCmluZGV4IDI3NWVlMzYyNTgwZTY0NzMy
YTM1N2QxNDA2YTk2NTdhYzc3ODkzNjIuLmMwNTc2YmVjN2NkYmNjNDExZDViYzRmZmNiYzc5OWFl
MWE2NmExMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaApAQCAtMjQsMTAg
KzI0LDEwIEBACiAjaWZuZGVmIEhUTUxGb3JtRWxlbWVudF9oCiAjZGVmaW5lIEhUTUxGb3JtRWxl
bWVudF9oCiAKLSNpbmNsdWRlICJDaGVja2VkUmFkaW9CdXR0b25zLmgiCiAjaW5jbHVkZSAiRm9y
bVN0YXRlLmgiCiAjaW5jbHVkZSAiRm9ybVN1Ym1pc3Npb24uaCIKICNpbmNsdWRlICJIVE1MRWxl
bWVudC5oIgorI2luY2x1ZGUgIlJhZGlvQnV0dG9uR3JvdXBzLmgiCiAjaW5jbHVkZSA8bWVtb3J5
PgogCiAjaWYgRU5BQkxFKElPU19BVVRPQ09SUkVDVF9BTkRfQVVUT0NBUElUQUxJWkUpCkBAIC0x
MzEsNyArMTMxLDcgQEAgcHVibGljOgogICAgIHZvaWQgZmluaXNoUmVxdWVzdEF1dG9jb21wbGV0
ZShBdXRvY29tcGxldGVSZXN1bHQpOwogI2VuZGlmCiAKLSAgICBDaGVja2VkUmFkaW9CdXR0b25z
JiBjaGVja2VkUmFkaW9CdXR0b25zKCkgeyByZXR1cm4gbV9jaGVja2VkUmFkaW9CdXR0b25zOyB9
CisgICAgUmFkaW9CdXR0b25Hcm91cHMmIHJhZGlvQnV0dG9uR3JvdXBzKCkgeyByZXR1cm4gbV9y
YWRpb0J1dHRvbkdyb3VwczsgfQogCiAgICAgY29uc3QgVmVjdG9yPEZvcm1Bc3NvY2lhdGVkRWxl
bWVudCo+JiBhc3NvY2lhdGVkRWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBtX2Fzc29jaWF0ZWRF
bGVtZW50czsgfQogICAgIGNvbnN0IFZlY3RvcjxIVE1MSW1hZ2VFbGVtZW50Kj4mIGltYWdlRWxl
bWVudHMoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlRWxlbWVudHM7IH0KQEAgLTE4NSw3ICsxODUs
NyBAQCBwcml2YXRlOgogICAgIEZvcm1TdWJtaXNzaW9uOjpBdHRyaWJ1dGVzIG1fYXR0cmlidXRl
czsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFzdE5hbWVzTWFwPiBtX3Bhc3ROYW1lc01hcDsKIAot
ICAgIENoZWNrZWRSYWRpb0J1dHRvbnMgbV9jaGVja2VkUmFkaW9CdXR0b25zOworICAgIFJhZGlv
QnV0dG9uR3JvdXBzIG1fcmFkaW9CdXR0b25Hcm91cHM7CiAKICAgICB1bnNpZ25lZCBtX2Fzc29j
aWF0ZWRFbGVtZW50c0JlZm9yZUluZGV4OwogICAgIHVuc2lnbmVkIG1fYXNzb2NpYXRlZEVsZW1l
bnRzQWZ0ZXJJbmRleDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmlu
ZGV4IGFjMmUwMzNkMGFjMTI5NzBhODc5YjFlZGMwOTM4NDFiZGM5ZTgzYmYuLjJkNDg5NzdiM2Zi
NTk0ZTJlYzRhYWU4MGEyZDVhNTY0OTlhNjFhM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmNwcApAQCAtMTU4LDcgKzE1OCw3IEBAIEhUTUxJbnB1dEVsZW1lbnQ6On5I
VE1MSW5wdXRFbGVtZW50KCkKICAgICAvLyBzZXRGb3JtKDApIG1heSByZWdpc3RlciB0aGlzIHRv
IGEgZG9jdW1lbnQtbGV2ZWwgcmFkaW8gYnV0dG9uIGdyb3VwLgogICAgIC8vIFdlIHNob3VsZCB1
bnJlZ2lzdGVyIGl0IHRvIGF2b2lkIGFjY2Vzc2luZyBhIGRlbGV0ZWQgb2JqZWN0LgogICAgIGlm
IChpc1JhZGlvQnV0dG9uKCkpCi0gICAgICAgIGRvY3VtZW50KCkuZm9ybUNvbnRyb2xsZXIoKS5j
aGVja2VkUmFkaW9CdXR0b25zKCkucmVtb3ZlQnV0dG9uKHRoaXMpOworICAgICAgICBkb2N1bWVu
dCgpLmZvcm1Db250cm9sbGVyKCkucmFkaW9CdXR0b25Hcm91cHMoKS5yZW1vdmVCdXR0b24odGhp
cyk7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICBpZiAobV9oYXNUb3VjaEV2ZW50SGFu
ZGxlcikKICAgICAgICAgZG9jdW1lbnQoKS5kaWRSZW1vdmVFdmVudFRhcmdldE5vZGUoKnRoaXMp
OwpAQCAtODU0LDcgKzg1NCw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0Q2hlY2tlZChi
b29sIG5vd0NoZWNrZWQsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IgZXZlbnRCCiAgICAgbV9pc0No
ZWNrZWQgPSBub3dDaGVja2VkOwogICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKIAotICAgIGlm
IChDaGVja2VkUmFkaW9CdXR0b25zKiBidXR0b25zID0gY2hlY2tlZFJhZGlvQnV0dG9ucygpKQor
ICAgIGlmIChSYWRpb0J1dHRvbkdyb3VwcyogYnV0dG9ucyA9IHJhZGlvQnV0dG9uR3JvdXBzKCkp
CiAgICAgICAgICAgICBidXR0b25zLT51cGRhdGVDaGVja2VkU3RhdGUodGhpcyk7CiAgICAgaWYg
KHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+c3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkpCiAgICAg
ICAgIHJlbmRlcmVyKCktPnRoZW1lKCkuc3RhdGVDaGFuZ2VkKCpyZW5kZXJlcigpLCBDb250cm9s
U3RhdGVzOjpDaGVja2VkU3RhdGUpOwpAQCAtMTQ5NSw3ICsxNDk1LDcgQEAgdm9pZCBIVE1MSW5w
dXRFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQpCiAg
ICAgICAgIGlmIChuZWVkc1N1c3BlbnNpb25DYWxsYmFjaykKICAgICAgICAgICAgIG9sZERvY3Vt
ZW50LT51bnJlZ2lzdGVyRm9yRG9jdW1lbnRTdXNwZW5zaW9uQ2FsbGJhY2tzKHRoaXMpOwogICAg
ICAgICBpZiAoaXNSYWRpb0J1dHRvbigpKQotICAgICAgICAgICAgb2xkRG9jdW1lbnQtPmZvcm1D
b250cm9sbGVyKCkuY2hlY2tlZFJhZGlvQnV0dG9ucygpLnJlbW92ZUJ1dHRvbih0aGlzKTsKKyAg
ICAgICAgICAgIG9sZERvY3VtZW50LT5mb3JtQ29udHJvbGxlcigpLnJhZGlvQnV0dG9uR3JvdXBz
KCkucmVtb3ZlQnV0dG9uKHRoaXMpOwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgICAg
IGlmIChtX2hhc1RvdWNoRXZlbnRIYW5kbGVyKQogICAgICAgICAgICAgb2xkRG9jdW1lbnQtPmRp
ZFJlbW92ZUV2ZW50VGFyZ2V0Tm9kZSgqdGhpcyk7CkBAIC0xNTI4LDcgKzE1MjgsNyBAQCBib29s
IEhUTUxJbnB1dEVsZW1lbnQ6OmNvbXB1dGVXaWxsVmFsaWRhdGUoKSBjb25zdAogdm9pZCBIVE1M
SW5wdXRFbGVtZW50OjpyZXF1aXJlZEF0dHJpYnV0ZUNoYW5nZWQoKQogewogICAgIEhUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50OjpyZXF1aXJlZEF0dHJpYnV0ZUNoYW5nZWQoKTsKLSAgICBpZiAo
Q2hlY2tlZFJhZGlvQnV0dG9ucyogYnV0dG9ucyA9IGNoZWNrZWRSYWRpb0J1dHRvbnMoKSkKKyAg
ICBpZiAoUmFkaW9CdXR0b25Hcm91cHMqIGJ1dHRvbnMgPSByYWRpb0J1dHRvbkdyb3VwcygpKQog
ICAgICAgICBidXR0b25zLT5yZXF1aXJlZEF0dHJpYnV0ZUNoYW5nZWQodGhpcyk7CiAgICAgbV9p
bnB1dFR5cGUtPnJlcXVpcmVkQXR0cmlidXRlQ2hhbmdlZCgpOwogfQpAQCAtMTc3MiwxNCArMTc3
MiwxNCBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnNob3VsZFVzZU1lZGlhQ2FwdHVyZSgpIGNv
bnN0CiBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmlzSW5SZXF1aXJlZFJhZGlvQnV0dG9uR3JvdXAo
KQogewogICAgIEFTU0VSVChpc1JhZGlvQnV0dG9uKCkpOwotICAgIGlmIChDaGVja2VkUmFkaW9C
dXR0b25zKiBidXR0b25zID0gY2hlY2tlZFJhZGlvQnV0dG9ucygpKQorICAgIGlmIChSYWRpb0J1
dHRvbkdyb3VwcyogYnV0dG9ucyA9IHJhZGlvQnV0dG9uR3JvdXBzKCkpCiAgICAgICAgIHJldHVy
biBidXR0b25zLT5pc0luUmVxdWlyZWRHcm91cCh0aGlzKTsKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKIFZlY3RvcjxIVE1MSW5wdXRFbGVtZW50Kj4gSFRNTElucHV0RWxlbWVudDo6cmFkaW9CdXR0
b25Hcm91cCgpIGNvbnN0CiB7Ci0gICAgQ2hlY2tlZFJhZGlvQnV0dG9ucyogYnV0dG9ucyA9IGNo
ZWNrZWRSYWRpb0J1dHRvbnMoKTsKKyAgICBSYWRpb0J1dHRvbkdyb3VwcyogYnV0dG9ucyA9IHJh
ZGlvQnV0dG9uR3JvdXBzKCk7CiAgICAgaWYgKCFidXR0b25zKQogICAgICAgICByZXR1cm4geyB9
OwogICAgIHJldHVybiBidXR0b25zLT5ncm91cE1lbWJlcnMoKnRoaXMpOwpAQCAtMTc4NywzMSAr
MTc4NywzMSBAQCBWZWN0b3I8SFRNTElucHV0RWxlbWVudCo+IEhUTUxJbnB1dEVsZW1lbnQ6OnJh
ZGlvQnV0dG9uR3JvdXAoKSBjb25zdAogICAgIAogSFRNTElucHV0RWxlbWVudCogSFRNTElucHV0
RWxlbWVudDo6Y2hlY2tlZFJhZGlvQnV0dG9uRm9yR3JvdXAoKSBjb25zdAogewotICAgIGlmIChD
aGVja2VkUmFkaW9CdXR0b25zKiBidXR0b25zID0gY2hlY2tlZFJhZGlvQnV0dG9ucygpKQorICAg
IGlmIChSYWRpb0J1dHRvbkdyb3VwcyogYnV0dG9ucyA9IHJhZGlvQnV0dG9uR3JvdXBzKCkpCiAg
ICAgICAgIHJldHVybiBidXR0b25zLT5jaGVja2VkQnV0dG9uRm9yR3JvdXAobmFtZSgpKTsKICAg
ICByZXR1cm4gMDsKIH0KIAotQ2hlY2tlZFJhZGlvQnV0dG9ucyogSFRNTElucHV0RWxlbWVudDo6
Y2hlY2tlZFJhZGlvQnV0dG9ucygpIGNvbnN0CitSYWRpb0J1dHRvbkdyb3VwcyogSFRNTElucHV0
RWxlbWVudDo6cmFkaW9CdXR0b25Hcm91cHMoKSBjb25zdAogewogICAgIGlmICghaXNSYWRpb0J1
dHRvbigpKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoSFRNTEZvcm1FbGVtZW50KiBmb3Jt
RWxlbWVudCA9IGZvcm0oKSkKLSAgICAgICAgcmV0dXJuICZmb3JtRWxlbWVudC0+Y2hlY2tlZFJh
ZGlvQnV0dG9ucygpOworICAgICAgICByZXR1cm4gJmZvcm1FbGVtZW50LT5yYWRpb0J1dHRvbkdy
b3VwcygpOwogICAgIGlmIChpbkRvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiAmZG9jdW1lbnQo
KS5mb3JtQ29udHJvbGxlcigpLmNoZWNrZWRSYWRpb0J1dHRvbnMoKTsKKyAgICAgICAgcmV0dXJu
ICZkb2N1bWVudCgpLmZvcm1Db250cm9sbGVyKCkucmFkaW9CdXR0b25Hcm91cHMoKTsKICAgICBy
ZXR1cm4gMDsKIH0KIAogaW5saW5lIHZvaWQgSFRNTElucHV0RWxlbWVudDo6YWRkVG9SYWRpb0J1
dHRvbkdyb3VwKCkKIHsKLSAgICBpZiAoQ2hlY2tlZFJhZGlvQnV0dG9ucyogYnV0dG9ucyA9IGNo
ZWNrZWRSYWRpb0J1dHRvbnMoKSkKKyAgICBpZiAoUmFkaW9CdXR0b25Hcm91cHMqIGJ1dHRvbnMg
PSByYWRpb0J1dHRvbkdyb3VwcygpKQogICAgICAgICBidXR0b25zLT5hZGRCdXR0b24odGhpcyk7
CiB9CiAKIGlubGluZSB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnJlbW92ZUZyb21SYWRpb0J1dHRv
bkdyb3VwKCkKIHsKLSAgICBpZiAoQ2hlY2tlZFJhZGlvQnV0dG9ucyogYnV0dG9ucyA9IGNoZWNr
ZWRSYWRpb0J1dHRvbnMoKSkKKyAgICBpZiAoUmFkaW9CdXR0b25Hcm91cHMqIGJ1dHRvbnMgPSBy
YWRpb0J1dHRvbkdyb3VwcygpKQogICAgICAgICBidXR0b25zLT5yZW1vdmVCdXR0b24odGhpcyk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggZmYxNjdiMmQx
M2QwMzU0NWQ1OGUyOTEyNzIyZjIyZjJiNTZiZmVkNS4uYWRlZTdhYmVjMDYzODUzMGVkNzRlMTUz
ZTBjOTNhNzI2N2E2ODhjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgK
QEAgLTM2LDcgKzM2LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDaGVja2Vk
UmFkaW9CdXR0b25zOwogY2xhc3MgRHJhZ0RhdGE7CiBjbGFzcyBGaWxlTGlzdDsKIGNsYXNzIEhU
TUxEYXRhTGlzdEVsZW1lbnQ7CkBAIC00NSw2ICs0NCw3IEBAIGNsYXNzIEhUTUxPcHRpb25FbGVt
ZW50OwogY2xhc3MgSWNvbjsKIGNsYXNzIElucHV0VHlwZTsKIGNsYXNzIExpc3RBdHRyaWJ1dGVU
YXJnZXRPYnNlcnZlcjsKK2NsYXNzIFJhZGlvQnV0dG9uR3JvdXBzOwogY2xhc3MgVGV4dENvbnRy
b2xJbm5lclRleHRFbGVtZW50OwogY2xhc3MgVVJMOwogc3RydWN0IERhdGVUaW1lQ2hvb3NlclBh
cmFtZXRlcnM7CkBAIC00MjEsNyArNDIxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVZh
bHVlSWZOZWVkZWQoKTsKIAogICAgIC8vIFJldHVybnMgbnVsbCBpZiB0aGlzIGlzbid0IGFzc29j
aWF0ZWQgd2l0aCBhbnkgcmFkaW8gYnV0dG9uIGdyb3VwLgotICAgIENoZWNrZWRSYWRpb0J1dHRv
bnMqIGNoZWNrZWRSYWRpb0J1dHRvbnMoKSBjb25zdDsKKyAgICBSYWRpb0J1dHRvbkdyb3Vwcyog
cmFkaW9CdXR0b25Hcm91cHMoKSBjb25zdDsKICAgICB2b2lkIGFkZFRvUmFkaW9CdXR0b25Hcm91
cCgpOwogICAgIHZvaWQgcmVtb3ZlRnJvbVJhZGlvQnV0dG9uR3JvdXAoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280392</attachid>
            <date>2016-06-02 17:43:39 -0700</date>
            <delta_ts>2016-06-03 14:12:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158326-20160602174458.patch</filename>
            <type>text/plain</type>
            <size>42806</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmFiYjJkMTVjZWQ4YWEx
YTRhNzA2Y2YyMDJiMTg2YWNlOGJiMDhkMS4uY2Y5NjBiNDI1NmVmMjZlMDc0ODE4NzQ3MDdmMjc0
NjAzMGJhN2MzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDE2LTA2LTAyICBCZW5q
YW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW5hbWUgQ2hl
Y2tlZFJhZGlvQnV0dG9ucyBpbnRvIFJhZGlvQnV0dG9uR3JvdXBzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgzMjYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGVja2VkUmFkaW9CdXR0b25zIGhhbmRs
ZXMgdGhlIHNldCBvZiBhbGwgdGhlIFJhZGlvIEJ1dHRvbiBHcm91cHMKKyAgICAgICAgZm9yIGEg
cGFydGljdWxhciBmb3JtIG9yIGRvY3VtZW50LgorICAgICAgICBUaGUgbmFtZSBpcyB3cm9uZyBh
bmQgYXBwYXJlbnRseSBjb21lcyBmcm9tIGZvcm1lciB1c2VzIG9mIHRoaXMgY2xhc3MKKyAgICAg
ICAgKHNlZSB0aGUgY29tbWVudCBhYm92ZSB0aGUgY2xhc3MgZGVjbGFyYXRpb24pLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggcmVuYW1lcyAiQ2hlY2tlZFJhZGlvQnV0dG9ucyIgdG8gIlJhZGlvQnV0
dG9uR3JvdXBzIiB0byByZWZsZWN0IHRoYXQgaXQgaGFuZGxlcworICAgICAgICBhbGwgdGhlIFJh
ZGlvIEJ1dHRvbiBHcm91cCBmcm9tIGEgZ2l2ZW4gY29udGV4dCAoZm9ybSBvciBkb2N1bWVudCku
CisgICAgICAgIEludGVybmFsbHkgaXQgaGFzIGEgc2V0IG9mIFJhZGlvQnV0dG9uR3JvdXAgYnV0
IHRoYXQgaXMgbmV2ZXIgZXhwbGljaXRlbHkKKyAgICAgICAgZXhwb3NlZC4KKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBkb20vQ2hlY2tlZFJhZGlvQnV0dG9ucy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSYWRpb0J1dHRvbkdyb3VwOjppc0VtcHR5KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJhZGlvQnV0dG9uR3JvdXA6OmlzUmVxdWlyZWQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UmFkaW9CdXR0b25Hcm91cDo6Y2hlY2tlZEJ1dHRvbik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpSYWRpb0J1dHRvbkdyb3VwOjpSYWRpb0J1dHRvbkdyb3VwKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJhZGlvQnV0dG9uR3JvdXA6OmlzVmFsaWQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9CdXR0b25Hcm91cDo6bWVtYmVycyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpSYWRpb0J1dHRvbkdyb3VwOjpzZXRDaGVja2VkQnV0dG9uKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJhZGlvQnV0dG9uR3JvdXA6OmFkZCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpSYWRpb0J1dHRvbkdyb3VwOjp1cGRhdGVDaGVja2VkU3Rh
dGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9CdXR0b25Hcm91cDo6cmVxdWly
ZWRBdHRyaWJ1dGVDaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJhZGlvQnV0
dG9uR3JvdXA6OnJlbW92ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSYWRpb0J1dHRv
bkdyb3VwOjp1cGRhdGVWYWxpZGl0eUZvckFsbEJ1dHRvbnMpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UmFkaW9CdXR0b25Hcm91cDo6Y29udGFpbnMpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q2hlY2tlZFJhZGlvQnV0dG9uczo6Q2hlY2tlZFJhZGlvQnV0dG9ucyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpDaGVja2VkUmFkaW9CdXR0b25zOjp+Q2hlY2tlZFJhZGlv
QnV0dG9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDaGVja2VkUmFkaW9CdXR0b25z
OjphZGRCdXR0b24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2hlY2tlZFJhZGlvQnV0
dG9uczo6Z3JvdXBNZW1iZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNoZWNrZWRS
YWRpb0J1dHRvbnM6OnVwZGF0ZUNoZWNrZWRTdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpDaGVja2VkUmFkaW9CdXR0b25zOjpyZXF1aXJlZEF0dHJpYnV0ZUNoYW5nZWQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2hlY2tlZFJhZGlvQnV0dG9uczo6Y2hlY2tlZEJ1dHRv
bkZvckdyb3VwKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNoZWNrZWRSYWRpb0J1dHRv
bnM6OmlzSW5SZXF1aXJlZEdyb3VwKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNoZWNr
ZWRSYWRpb0J1dHRvbnM6OnJlbW92ZUJ1dHRvbik6IERlbGV0ZWQuCisgICAgICAgICogZG9tL1Jh
ZGlvQnV0dG9uR3JvdXBzLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2RvbS9DaGVj
a2VkUmFkaW9CdXR0b25zLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OlJhZGlvQnV0dG9uR3JvdXA6
OmlzRW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9CdXR0b25Hcm91cDo6aXNSZXF1aXJl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpSYWRpb0J1dHRvbkdyb3VwOjpjaGVja2VkQnV0dG9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlJhZGlvQnV0dG9uR3JvdXA6OlJhZGlvQnV0dG9uR3JvdXApOgor
ICAgICAgICAoV2ViQ29yZTo6UmFkaW9CdXR0b25Hcm91cDo6aXNWYWxpZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSYWRpb0J1dHRvbkdyb3VwOjptZW1iZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJh
ZGlvQnV0dG9uR3JvdXA6OnNldENoZWNrZWRCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmFk
aW9CdXR0b25Hcm91cDo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OlJhZGlvQnV0dG9uR3JvdXA6
OnVwZGF0ZUNoZWNrZWRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSYWRpb0J1dHRvbkdyb3Vw
OjpyZXF1aXJlZEF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9CdXR0
b25Hcm91cDo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OlJhZGlvQnV0dG9uR3JvdXA6OnVw
ZGF0ZVZhbGlkaXR5Rm9yQWxsQnV0dG9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSYWRpb0J1dHRv
bkdyb3VwOjpjb250YWlucyk6CisgICAgICAgIChXZWJDb3JlOjpSYWRpb0J1dHRvbkdyb3Vwczo6
UmFkaW9CdXR0b25Hcm91cHMpOgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9CdXR0b25Hcm91cHM6
On5SYWRpb0J1dHRvbkdyb3Vwcyk6CisgICAgICAgIChXZWJDb3JlOjpSYWRpb0J1dHRvbkdyb3Vw
czo6YWRkQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJhZGlvQnV0dG9uR3JvdXBzOjpncm91
cE1lbWJlcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9CdXR0b25Hcm91cHM6OnVwZGF0ZUNo
ZWNrZWRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSYWRpb0J1dHRvbkdyb3Vwczo6cmVxdWly
ZWRBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJhZGlvQnV0dG9uR3JvdXBz
OjpjaGVja2VkQnV0dG9uRm9yR3JvdXApOgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9CdXR0b25H
cm91cHM6OmlzSW5SZXF1aXJlZEdyb3VwKToKKyAgICAgICAgKFdlYkNvcmU6OlJhZGlvQnV0dG9u
R3JvdXBzOjpyZW1vdmVCdXR0b24pOgorICAgICAgICAqIGRvbS9SYWRpb0J1dHRvbkdyb3Vwcy5o
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvZG9tL0NoZWNrZWRSYWRpb0J1dHRvbnMuaC4K
KyAgICAgICAgKiBodG1sL0Zvcm1Db250cm9sbGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpGb3Jt
Q29udHJvbGxlcjo6cmFkaW9CdXR0b25Hcm91cHMpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUNv
bnRyb2xsZXI6OmNoZWNrZWRSYWRpb0J1dHRvbnMpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwv
SFRNTEZvcm1FbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6On5IVE1MSW5wdXRFbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNldENoZWNrZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cmVxdWlyZWRBdHRyaWJ1dGVDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmlzSW5SZXF1aXJlZFJhZGlv
QnV0dG9uR3JvdXApOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cmFkaW9C
dXR0b25Hcm91cCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpjaGVja2Vk
UmFkaW9CdXR0b25Gb3JHcm91cCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50
OjpyYWRpb0J1dHRvbkdyb3Vwcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50
OjphZGRUb1JhZGlvQnV0dG9uR3JvdXApOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxl
bWVudDo6cmVtb3ZlRnJvbVJhZGlvQnV0dG9uR3JvdXApOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TElucHV0RWxlbWVudDo6Y2hlY2tlZFJhZGlvQnV0dG9ucyk6IERlbGV0ZWQuCisgICAgICAgICog
aHRtbC9IVE1MSW5wdXRFbGVtZW50Lmg6CisKIDIwMTYtMDYtMDEgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgSGFzaE1hcDo6ZW5zdXJlKCkgaW4gRG9jdW1l
bnRPcmRlcmVkTWFwOjphZGQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBkMGQzMjQ3MTM1MTRh
M2Y3YWNiYWE5N2MxYjBhYzdkNTlhMjZkOWNjLi5hYzE4ODE4MGFiOTgzMzkwNTQxZmYzNTZmZjZi
N2VkNTlmZDBiZTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTM5Niw3ICsxMzk2LDYgQEAg
c2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGRvbS9CZWZvcmVVbmxvYWRFdmVudC5jcHAKICAgICBk
b20vQ0RBVEFTZWN0aW9uLmNwcAogICAgIGRvbS9DaGFyYWN0ZXJEYXRhLmNwcAotICAgIGRvbS9D
aGVja2VkUmFkaW9CdXR0b25zLmNwcAogICAgIGRvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNw
cAogICAgIGRvbS9DaGlsZE5vZGVMaXN0LmNwcAogICAgIGRvbS9DbGFzc0NvbGxlY3Rpb24uY3Bw
CkBAIC0xNDkxLDYgKzE0OTAsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgZG9tL1Byb2dy
ZXNzRXZlbnQuY3BwCiAgICAgZG9tL1BzZXVkb0VsZW1lbnQuY3BwCiAgICAgZG9tL1F1YWxpZmll
ZE5hbWUuY3BwCisgICAgZG9tL1JhZGlvQnV0dG9uR3JvdXBzLmNwcAogICAgIGRvbS9SYW5nZS5j
cHAKICAgICBkb20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuY3BwCiAgICAgZG9tL1Njb3BlZEV2
ZW50UXVldWUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggYjQxMWI2MzgzZTVjMjdhYTZmMWQ1ZWMzODZiMzdiYzE5MmM0ZjM3
MS4uNzA0OTQxMjRjODhhOTRlN2NmYTE4N2I3N2M5MjMwNGRjYzJiYzNjZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzc2NCw4
ICszNzY0LDggQEAKIAkJOTNGMUUxRUMxQTQwRkREQzAwMzQ4RDEzIC8qIE5TUG9wb3ZlclNQSS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGMUUxRUIx
QTQwRkREQzAwMzQ4RDEzIC8qIE5TUG9wb3ZlclNQSS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRjZGMUVEMTI3RjcwQjEwMDU1Q0IwNiAvKiBX
ZWJHTENvbnRleHRFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5M0Y2RjFFQTEyN0Y3MEIxMDA1NUNCMDYgLyogV2ViR0xDb250ZXh0RXZlbnQu
Y3BwICovOyB9OwogCQk5M0Y2RjFFRTEyN0Y3MEIxMDA1NUNCMDYgLyogV2ViR0xDb250ZXh0RXZl
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjZG
MUVCMTI3RjcwQjEwMDU1Q0IwNiAvKiBXZWJHTENvbnRleHRFdmVudC5oICovOyB9OwotCQk5M0Y5
MjU0MzBGN0VGNUI4MDA3RTM3QzkgLyogQ2hlY2tlZFJhZGlvQnV0dG9ucy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGOTI1NDEwRjdFRjVCODAwN0Uz
N0M5IC8qIENoZWNrZWRSYWRpb0J1dHRvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwotCQk5M0Y5MjU0NDBGN0VGNUI4MDA3RTM3QzkgLyogQ2hlY2tl
ZFJhZGlvQnV0dG9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5M0Y5MjU0MjBGN0VGNUI4MDA3RTM3QzkgLyogQ2hlY2tlZFJhZGlvQnV0dG9ucy5j
cHAgKi87IH07CisJCTkzRjkyNTQzMEY3RUY1QjgwMDdFMzdDOSAvKiBSYWRpb0J1dHRvbkdyb3Vw
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGOTI1
NDEwRjdFRjVCODAwN0UzN0M5IC8qIFJhZGlvQnV0dG9uR3JvdXBzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTNGOTI1NDQwRjdFRjVCODAwN0Uz
N0M5IC8qIFJhZGlvQnV0dG9uR3JvdXBzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjkyNTQyMEY3RUY1QjgwMDdFMzdDOSAvKiBSYWRpb0J1dHRv
bkdyb3Vwcy5jcHAgKi87IH07CiAJCTkzRjlCNjU3MEJBMEYzNUUwMDg1NDA2NCAvKiBET01IVE1M
Q2FudmFzRWxlbWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzRjlCNjU0MEJBMEYzNUUwMDg1NDA2NCAvKiBET01IVE1MQ2FudmFzRWxlbWVudC5t
bSAqLzsgfTsKIAkJOTNGOUI2NTgwQkEwRjM1RTAwODU0MDY0IC8qIERPTUhUTUxDYW52YXNFbGVt
ZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzRjlCNjU1MEJBMEYzNUUwMDg1NDA2NCAvKiBET01IVE1MQ2FudmFzRWxlbWVudEludGVy
bmFsLmggKi87IH07CiAJCTkzRjlCNkUwMEJBMEZCNzIwMDg1NDA2NCAvKiBKU0NvbW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGOUI2REUw
QkEwRkI3MjAwODU0MDY0IC8qIEpTQ29tbWVudC5jcHAgKi87IH07CkBAIC0xMTQxNiw4ICsxMTQx
Niw4IEBACiAJCTkzRjhCMzA1MEEzMDBGRTEwMEY2MUFCOCAvKiBDb2RlR2VuZXJhdG9yLnBtICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgbmFtZSA9IENvZGVHZW5lcmF0b3IucG07IHBhdGgg
PSBzY3JpcHRzL0NvZGVHZW5lcmF0b3IucG07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzRjhCMzA2MEEzMDBGRUEwMEY2MUFCOCAvKiBDb2RlR2VuZXJhdG9ySlMucG0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0gQ29kZUdlbmVyYXRvckpTLnBtOyBwYXRoID0gLi4v
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHdyYXBz
TGluZXMgPSAwOyB9OwogCQk5M0Y4QjMwNzBBMzAwRkVBMDBGNjFBQjggLyogZ2VuZXJhdGUtYmlu
ZGluZ3MucGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0gImdlbmVyYXRlLWJp
bmRpbmdzLnBsIjsgcGF0aCA9ICJzY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsIjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTNGOTI1NDEwRjdFRjVCODAwN0UzN0M5IC8qIENoZWNr
ZWRSYWRpb0J1dHRvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2hlY2tl
ZFJhZGlvQnV0dG9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5M0Y5MjU0MjBG
N0VGNUI4MDA3RTM3QzkgLyogQ2hlY2tlZFJhZGlvQnV0dG9ucy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDaGVja2VkUmFkaW9CdXR0b25zLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNGOTI1NDEwRjdFRjVCODAwN0UzN0M5IC8qIFJhZGlvQnV0
dG9uR3JvdXBzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJhZGlvQnV0dG9u
R3JvdXBzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRjkyNTQyMEY3RUY1Qjgw
MDdFMzdDOSAvKiBSYWRpb0J1dHRvbkdyb3Vwcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSYWRpb0J1dHRvbkdyb3Vwcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTkzRjlCNjU0MEJBMEYzNUUwMDg1NDA2NCAvKiBET01IVE1MQ2FudmFzRWxlbWVu
dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUhUTUxDYW52
YXNFbGVtZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Y5QjY1NTBCQTBG
MzVFMDA4NTQwNjQgLyogRE9NSFRNTENhbnZhc0VsZW1lbnRJbnRlcm5hbC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBET01IVE1MQ2FudmFzRWxlbWVudEludGVybmFsLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRjlCNkRFMEJBMEZCNzIwMDg1NDA2NCAvKiBK
U0NvbW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDb21t
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0MjM2LDggKzI0MjM2LDYg
QEAKIAkJCQk2NTUwQjY5NTA5OURGMDI3MDA5MEQ3ODEgLyogQ2hhcmFjdGVyRGF0YS5jcHAgKi8s
CiAJCQkJNjU1MEI2OTYwOTlERjAyNzAwOTBENzgxIC8qIENoYXJhY3RlckRhdGEuaCAqLywKIAkJ
CQk5M0VFQzFFNjA5QzI4Nzc3MDBDNTE1RDEgLyogQ2hhcmFjdGVyRGF0YS5pZGwgKi8sCi0JCQkJ
OTNGOTI1NDIwRjdFRjVCODAwN0UzN0M5IC8qIENoZWNrZWRSYWRpb0J1dHRvbnMuY3BwICovLAot
CQkJCTkzRjkyNTQxMEY3RUY1QjgwMDdFMzdDOSAvKiBDaGVja2VkUmFkaW9CdXR0b25zLmggKi8s
CiAJCQkJRDYxOUEzMDUxNDRFMDBCRTAwNEJDMzAyIC8qIENoaWxkTGlzdE11dGF0aW9uU2NvcGUu
Y3BwICovLAogCQkJCUQ2MTlBMzA2MTQ0RTAwQkUwMDRCQzMwMiAvKiBDaGlsZExpc3RNdXRhdGlv
blNjb3BlLmggKi8sCiAJCQkJODNEMjZEM0MxQUZEQ0M1MDAwMUIzODczIC8qIENoaWxkTm9kZS5p
ZGwgKi8sCkBAIC0yNDUxNiw2ICsyNDUxNCw4IEBACiAJCQkJRkY5NDVFQ0ExNjFGN0YzNjAwOTcx
QkM4IC8qIFBzZXVkb0VsZW1lbnQuaCAqLywKIAkJCQk1NTBBMEJDNzA4NUY2MDM5MDA3MzUzRDYg
LyogUXVhbGlmaWVkTmFtZS5jcHAgKi8sCiAJCQkJNTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2IC8q
IFF1YWxpZmllZE5hbWUuaCAqLywKKwkJCQk5M0Y5MjU0MjBGN0VGNUI4MDA3RTM3QzkgLyogUmFk
aW9CdXR0b25Hcm91cHMuY3BwICovLAorCQkJCTkzRjkyNTQxMEY3RUY1QjgwMDdFMzdDOSAvKiBS
YWRpb0J1dHRvbkdyb3Vwcy5oICovLAogCQkJCUY1MjNEMzAzMDJERTQ0NzYwMTg2MzVDQSAvKiBS
YW5nZS5jcHAgKi8sCiAJCQkJRjUyM0QzMDQwMkRFNDQ3NjAxODYzNUNBIC8qIFJhbmdlLmggKi8s
CiAJCQkJOTM2REQwM0EwOUNFQUMyNzAwNTZBRThDIC8qIFJhbmdlLmlkbCAqLywKQEAgLTI1Mjc2
LDcgKzI1Mjc2LDcgQEAKIAkJCQk5N0I4RkZEMTE2QUU3Rjk2MDAzODM4OEQgLyogQ2hhcmFjdGVy
UmVmZXJlbmNlUGFyc2VySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RBMkEwRDAw
NkMxRDAwRUY2RjI2IC8qIENoYXJzZXREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RC
MjEyNTFGMTJEMDAzRUYyNjkgLyogQ2hlY2tib3hJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAot
CQkJCTkzRjkyNTQzMEY3RUY1QjgwMDdFMzdDOSAvKiBDaGVja2VkUmFkaW9CdXR0b25zLmggaW4g
SGVhZGVycyAqLywKKwkJCQk5M0Y5MjU0MzBGN0VGNUI4MDA3RTM3QzkgLyogUmFkaW9CdXR0b25H
cm91cHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUQ2MTlBMzA4MTQ0RTAwQkUwMDRCQzMwMiAvKiBD
aGlsZExpc3RNdXRhdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODE4NzIyMDA5NzdE
M0MwMDA1ODI2RDkgLyogQ2hpbGROb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTREODIz
NTIwQUY5MkE3OTAwMDRGMDU3IC8qIENocm9tZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTIyMCw3
ICsyOTIyMCw3IEBACiAJCQkJNjU1MEI2OUYwOTlERjAyNzAwOTBENzgxIC8qIENoYXJhY3RlckRh
dGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMyNkRDMEMwOURBRDVENjAwQUZDODQ3IC8qIENo
YXJzZXREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY1NUIzREIxMTI1MUYxMkQwMDNFRjI2
OSAvKiBDaGVja2JveElucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk5M0Y5MjU0NDBG
N0VGNUI4MDA3RTM3QzkgLyogQ2hlY2tlZFJhZGlvQnV0dG9ucy5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk5M0Y5MjU0NDBGN0VGNUI4MDA3RTM3QzkgLyogUmFkaW9CdXR0b25Hcm91cHMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRDYxOUEzMDcxNDRFMDBCRTAwNEJDMzAyIC8qIENoaWxkTGlzdE11
dGF0aW9uU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgxODcyMjUwOTc3RDNDMDAwNTgy
NkQ5IC8qIENoaWxkTm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTREODIzOEIwQUY5
MkRGNjAwMDRGMDU3IC8qIENocm9tZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DaGVja2VkUmFkaW9CdXR0b25zLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9DaGVja2VkUmFkaW9CdXR0b25zLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNzAyYjkyYmM0YTA2NjAwOTY4Mjg5NDFmYWQzNzYwYjU2NzBkNGFkOC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hl
Y2tlZFJhZGlvQnV0dG9ucy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyODcgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAq
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgotICoKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ2hlY2tlZFJhZGlv
QnV0dG9ucy5oIgotI2luY2x1ZGUgIlJhbmdlLmgiCi0KLSNpbmNsdWRlICJIVE1MSW5wdXRFbGVt
ZW50LmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBSYWRpb0J1dHRvbkdyb3VwIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
LXB1YmxpYzoKLSAgICBSYWRpb0J1dHRvbkdyb3VwKCk7Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29u
c3QgeyByZXR1cm4gbV9tZW1iZXJzLmlzRW1wdHkoKTsgfQotICAgIGJvb2wgaXNSZXF1aXJlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVxdWlyZWRDb3VudDsgfQotICAgIEhUTUxJbnB1dEVsZW1lbnQq
IGNoZWNrZWRCdXR0b24oKSBjb25zdCB7IHJldHVybiBtX2NoZWNrZWRCdXR0b247IH0KLSAgICB2
b2lkIGFkZChIVE1MSW5wdXRFbGVtZW50Kik7Ci0gICAgdm9pZCB1cGRhdGVDaGVja2VkU3RhdGUo
SFRNTElucHV0RWxlbWVudCopOwotICAgIHZvaWQgcmVxdWlyZWRBdHRyaWJ1dGVDaGFuZ2VkKEhU
TUxJbnB1dEVsZW1lbnQqKTsKLSAgICB2b2lkIHJlbW92ZShIVE1MSW5wdXRFbGVtZW50Kik7Ci0g
ICAgYm9vbCBjb250YWlucyhIVE1MSW5wdXRFbGVtZW50KikgY29uc3Q7Ci0gICAgVmVjdG9yPEhU
TUxJbnB1dEVsZW1lbnQqPiBtZW1iZXJzKCkgY29uc3Q7Ci0gICAgCi1wcml2YXRlOgotICAgIHZv
aWQgdXBkYXRlVmFsaWRpdHlGb3JBbGxCdXR0b25zKCk7Ci0gICAgYm9vbCBpc1ZhbGlkKCkgY29u
c3Q7Ci0gICAgdm9pZCBzZXRDaGVja2VkQnV0dG9uKEhUTUxJbnB1dEVsZW1lbnQqKTsKLQotICAg
IEhhc2hTZXQ8SFRNTElucHV0RWxlbWVudCo+IG1fbWVtYmVyczsKLSAgICBIVE1MSW5wdXRFbGVt
ZW50KiBtX2NoZWNrZWRCdXR0b247Ci0gICAgc2l6ZV90IG1fcmVxdWlyZWRDb3VudDsKLX07Ci0K
LVJhZGlvQnV0dG9uR3JvdXA6OlJhZGlvQnV0dG9uR3JvdXAoKQotICAgIDogbV9jaGVja2VkQnV0
dG9uKG51bGxwdHIpCi0gICAgLCBtX3JlcXVpcmVkQ291bnQoMCkKLXsKLX0KLQotaW5saW5lIGJv
b2wgUmFkaW9CdXR0b25Hcm91cDo6aXNWYWxpZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICFpc1Jl
cXVpcmVkKCkgfHwgbV9jaGVja2VkQnV0dG9uOwotfQotCi1WZWN0b3I8SFRNTElucHV0RWxlbWVu
dCo+IFJhZGlvQnV0dG9uR3JvdXA6Om1lbWJlcnMoKSBjb25zdAotewotICAgIFZlY3RvcjxIVE1M
SW5wdXRFbGVtZW50Kj4gbWVtYmVyczsKLSAgICBjb3B5VG9WZWN0b3IobV9tZW1iZXJzLCBtZW1i
ZXJzKTsKLSAgICBzdGQ6OnNvcnQobWVtYmVycy5iZWdpbigpLCBtZW1iZXJzLmVuZCgpLCBkb2N1
bWVudE9yZGVyQ29tcGFyYXRvcik7Ci0gICAgcmV0dXJuIG1lbWJlcnM7Ci19Ci0gICAgCi12b2lk
IFJhZGlvQnV0dG9uR3JvdXA6OnNldENoZWNrZWRCdXR0b24oSFRNTElucHV0RWxlbWVudCogYnV0
dG9uKQotewotICAgIEhUTUxJbnB1dEVsZW1lbnQqIG9sZENoZWNrZWRCdXR0b24gPSBtX2NoZWNr
ZWRCdXR0b247Ci0gICAgaWYgKG9sZENoZWNrZWRCdXR0b24gPT0gYnV0dG9uKQotICAgICAgICBy
ZXR1cm47Ci0gICAgbV9jaGVja2VkQnV0dG9uID0gYnV0dG9uOwotICAgIGlmIChvbGRDaGVja2Vk
QnV0dG9uKQotICAgICAgICBvbGRDaGVja2VkQnV0dG9uLT5zZXRDaGVja2VkKGZhbHNlKTsKLX0K
LQotdm9pZCBSYWRpb0J1dHRvbkdyb3VwOjphZGQoSFRNTElucHV0RWxlbWVudCogYnV0dG9uKQot
ewotICAgIEFTU0VSVChidXR0b24tPmlzUmFkaW9CdXR0b24oKSk7Ci0gICAgaWYgKCFtX21lbWJl
cnMuYWRkKGJ1dHRvbikuaXNOZXdFbnRyeSkKLSAgICAgICAgcmV0dXJuOwotICAgIGJvb2wgZ3Jv
dXBXYXNWYWxpZCA9IGlzVmFsaWQoKTsKLSAgICBpZiAoYnV0dG9uLT5pc1JlcXVpcmVkKCkpCi0g
ICAgICAgICsrbV9yZXF1aXJlZENvdW50OwotICAgIGlmIChidXR0b24tPmNoZWNrZWQoKSkKLSAg
ICAgICAgc2V0Q2hlY2tlZEJ1dHRvbihidXR0b24pOwotCi0gICAgYm9vbCBncm91cElzVmFsaWQg
PSBpc1ZhbGlkKCk7Ci0gICAgaWYgKGdyb3VwV2FzVmFsaWQgIT0gZ3JvdXBJc1ZhbGlkKQotICAg
ICAgICB1cGRhdGVWYWxpZGl0eUZvckFsbEJ1dHRvbnMoKTsKLSAgICBlbHNlIGlmICghZ3JvdXBJ
c1ZhbGlkKSB7Ci0gICAgICAgIC8vIEEgcmFkaW8gYnV0dG9uIG5vdCBpbiBhIGdyb3VwIGlzIGFs
d2F5cyB2YWxpZC4gV2UgbmVlZCB0byBtYWtlIGl0Ci0gICAgICAgIC8vIGludmFsaWQgb25seSBp
ZiB0aGUgZ3JvdXAgaXMgaW52YWxpZC4KLSAgICAgICAgYnV0dG9uLT51cGRhdGVWYWxpZGl0eSgp
OwotICAgIH0KLX0KLQotdm9pZCBSYWRpb0J1dHRvbkdyb3VwOjp1cGRhdGVDaGVja2VkU3RhdGUo
SFRNTElucHV0RWxlbWVudCogYnV0dG9uKQotewotICAgIEFTU0VSVChidXR0b24tPmlzUmFkaW9C
dXR0b24oKSk7Ci0gICAgQVNTRVJUKG1fbWVtYmVycy5jb250YWlucyhidXR0b24pKTsKLSAgICBi
b29sIHdhc1ZhbGlkID0gaXNWYWxpZCgpOwotICAgIGlmIChidXR0b24tPmNoZWNrZWQoKSkKLSAg
ICAgICAgc2V0Q2hlY2tlZEJ1dHRvbihidXR0b24pOwotICAgIGVsc2UgewotICAgICAgICBpZiAo
bV9jaGVja2VkQnV0dG9uID09IGJ1dHRvbikKLSAgICAgICAgICAgIG1fY2hlY2tlZEJ1dHRvbiA9
IG51bGxwdHI7Ci0gICAgfQotICAgIGlmICh3YXNWYWxpZCAhPSBpc1ZhbGlkKCkpCi0gICAgICAg
IHVwZGF0ZVZhbGlkaXR5Rm9yQWxsQnV0dG9ucygpOwotfQotCi12b2lkIFJhZGlvQnV0dG9uR3Jv
dXA6OnJlcXVpcmVkQXR0cmlidXRlQ2hhbmdlZChIVE1MSW5wdXRFbGVtZW50KiBidXR0b24pCi17
Ci0gICAgQVNTRVJUKGJ1dHRvbi0+aXNSYWRpb0J1dHRvbigpKTsKLSAgICBBU1NFUlQobV9tZW1i
ZXJzLmNvbnRhaW5zKGJ1dHRvbikpOwotICAgIGJvb2wgd2FzVmFsaWQgPSBpc1ZhbGlkKCk7Ci0g
ICAgaWYgKGJ1dHRvbi0+aXNSZXF1aXJlZCgpKQotICAgICAgICArK21fcmVxdWlyZWRDb3VudDsK
LSAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKG1fcmVxdWlyZWRDb3VudCk7Ci0gICAgICAgIC0t
bV9yZXF1aXJlZENvdW50OwotICAgIH0KLSAgICBpZiAod2FzVmFsaWQgIT0gaXNWYWxpZCgpKQot
ICAgICAgICB1cGRhdGVWYWxpZGl0eUZvckFsbEJ1dHRvbnMoKTsKLX0KLQotdm9pZCBSYWRpb0J1
dHRvbkdyb3VwOjpyZW1vdmUoSFRNTElucHV0RWxlbWVudCogYnV0dG9uKQotewotICAgIEFTU0VS
VChidXR0b24tPmlzUmFkaW9CdXR0b24oKSk7Ci0gICAgSGFzaFNldDxIVE1MSW5wdXRFbGVtZW50
Kj46Oml0ZXJhdG9yIGl0ID0gbV9tZW1iZXJzLmZpbmQoYnV0dG9uKTsKLSAgICBpZiAoaXQgPT0g
bV9tZW1iZXJzLmVuZCgpKQotICAgICAgICByZXR1cm47Ci0gICAgYm9vbCB3YXNWYWxpZCA9IGlz
VmFsaWQoKTsKLSAgICBtX21lbWJlcnMucmVtb3ZlKGl0KTsKLSAgICBpZiAoYnV0dG9uLT5pc1Jl
cXVpcmVkKCkpIHsKLSAgICAgICAgQVNTRVJUKG1fcmVxdWlyZWRDb3VudCk7Ci0gICAgICAgIC0t
bV9yZXF1aXJlZENvdW50OwotICAgIH0KLSAgICBpZiAobV9jaGVja2VkQnV0dG9uID09IGJ1dHRv
bikKLSAgICAgICAgbV9jaGVja2VkQnV0dG9uID0gbnVsbHB0cjsKLQotICAgIGlmIChtX21lbWJl
cnMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEFTU0VSVCghbV9yZXF1aXJlZENvdW50KTsKLSAgICAg
ICAgQVNTRVJUKCFtX2NoZWNrZWRCdXR0b24pOwotICAgIH0gZWxzZSBpZiAod2FzVmFsaWQgIT0g
aXNWYWxpZCgpKQotICAgICAgICB1cGRhdGVWYWxpZGl0eUZvckFsbEJ1dHRvbnMoKTsKLSAgICBp
ZiAoIXdhc1ZhbGlkKSB7Ci0gICAgICAgIC8vIEEgcmFkaW8gYnV0dG9uIG5vdCBpbiBhIGdyb3Vw
IGlzIGFsd2F5cyB2YWxpZC4gV2UgbmVlZCB0byBtYWtlIGl0Ci0gICAgICAgIC8vIHZhbGlkIG9u
bHkgaWYgdGhlIGdyb3VwIHdhcyBpbnZhbGlkLgotICAgICAgICBidXR0b24tPnVwZGF0ZVZhbGlk
aXR5KCk7Ci0gICAgfQotfQotCi12b2lkIFJhZGlvQnV0dG9uR3JvdXA6OnVwZGF0ZVZhbGlkaXR5
Rm9yQWxsQnV0dG9ucygpCi17Ci0gICAgZm9yIChhdXRvJiBidXR0b24gOiBtX21lbWJlcnMpIHsK
LSAgICAgICAgQVNTRVJUKGJ1dHRvbi0+aXNSYWRpb0J1dHRvbigpKTsKLSAgICAgICAgYnV0dG9u
LT51cGRhdGVWYWxpZGl0eSgpOwotICAgIH0KLX0KLQotYm9vbCBSYWRpb0J1dHRvbkdyb3VwOjpj
b250YWlucyhIVE1MSW5wdXRFbGVtZW50KiBidXR0b24pIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
bWVtYmVycy5jb250YWlucyhidXR0b24pOwotfQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIEV4cGxpY2l0
eSBkZWZpbmUgZW1wdHkgY29uc3RydWN0b3IgYW5kIGRlc3RydWN0b3IgaW4gb3JkZXIgdG8gcHJl
dmVudCB0aGUKLS8vIGNvbXBpbGVyIGZyb20gZ2VuZXJhdGluZyB0aGVtIGFzIGlubGluZXMuIFNv
IHdlIGRvbid0IG5lZWQgdG8gdG8gZGVmaW5lCi0vLyBSYWRpb0J1dHRvbkdyb3VwIGluIHRoZSBo
ZWFkZXIuCi1DaGVja2VkUmFkaW9CdXR0b25zOjpDaGVja2VkUmFkaW9CdXR0b25zKCkKLXsKLX0K
LQotQ2hlY2tlZFJhZGlvQnV0dG9uczo6fkNoZWNrZWRSYWRpb0J1dHRvbnMoKQotewotfQotCi12
b2lkIENoZWNrZWRSYWRpb0J1dHRvbnM6OmFkZEJ1dHRvbihIVE1MSW5wdXRFbGVtZW50KiBlbGVt
ZW50KQotewotICAgIEFTU0VSVChlbGVtZW50LT5pc1JhZGlvQnV0dG9uKCkpOwotICAgIGlmIChl
bGVtZW50LT5uYW1lKCkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1f
bmFtZVRvR3JvdXBNYXApCi0gICAgICAgIG1fbmFtZVRvR3JvdXBNYXAgPSBzdGQ6Om1ha2VfdW5p
cXVlPE5hbWVUb0dyb3VwTWFwPigpOwotCi0gICAgYXV0byYgZ3JvdXAgPSBtX25hbWVUb0dyb3Vw
TWFwLT5hZGQoZWxlbWVudC0+bmFtZSgpLmltcGwoKSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVl
OwotICAgIGlmICghZ3JvdXApCi0gICAgICAgIGdyb3VwID0gc3RkOjptYWtlX3VuaXF1ZTxSYWRp
b0J1dHRvbkdyb3VwPigpOwotICAgIGdyb3VwLT5hZGQoZWxlbWVudCk7Ci19Ci0KLVZlY3RvcjxI
VE1MSW5wdXRFbGVtZW50Kj4gQ2hlY2tlZFJhZGlvQnV0dG9uczo6Z3JvdXBNZW1iZXJzKGNvbnN0
IEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGVsZW1lbnQu
aXNSYWRpb0J1dHRvbigpKTsKLSAgICBpZiAoIWVsZW1lbnQuaXNSYWRpb0J1dHRvbigpKQotICAg
ICAgICByZXR1cm4geyB9OwotICAgIAotICAgIGF1dG8qIG5hbWUgPSBlbGVtZW50Lm5hbWUoKS5p
bXBsKCk7Ci0gICAgaWYgKCFuYW1lKQotICAgICAgICByZXR1cm4geyB9OwotCi0gICAgYXV0byog
Z3JvdXAgPSBtX25hbWVUb0dyb3VwTWFwLT5nZXQobmFtZSk7Ci0gICAgaWYgKCFncm91cCkKLSAg
ICAgICAgcmV0dXJuIHsgfTsKLSAgICByZXR1cm4gZ3JvdXAtPm1lbWJlcnMoKTsKLX0KLSAgICAK
LXZvaWQgQ2hlY2tlZFJhZGlvQnV0dG9uczo6dXBkYXRlQ2hlY2tlZFN0YXRlKEhUTUxJbnB1dEVs
ZW1lbnQqIGVsZW1lbnQpCi17Ci0gICAgQVNTRVJUKGVsZW1lbnQtPmlzUmFkaW9CdXR0b24oKSk7
Ci0gICAgaWYgKGVsZW1lbnQtPm5hbWUoKS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAg
ICBBU1NFUlQobV9uYW1lVG9Hcm91cE1hcCk7Ci0gICAgaWYgKCFtX25hbWVUb0dyb3VwTWFwKQot
ICAgICAgICByZXR1cm47Ci0gICAgUmFkaW9CdXR0b25Hcm91cCogZ3JvdXAgPSBtX25hbWVUb0dy
b3VwTWFwLT5nZXQoZWxlbWVudC0+bmFtZSgpLmltcGwoKSk7Ci0gICAgQVNTRVJUKGdyb3VwKTsK
LSAgICBncm91cC0+dXBkYXRlQ2hlY2tlZFN0YXRlKGVsZW1lbnQpOwotfQotCi12b2lkIENoZWNr
ZWRSYWRpb0J1dHRvbnM6OnJlcXVpcmVkQXR0cmlidXRlQ2hhbmdlZChIVE1MSW5wdXRFbGVtZW50
KiBlbGVtZW50KQotewotICAgIEFTU0VSVChlbGVtZW50LT5pc1JhZGlvQnV0dG9uKCkpOwotICAg
IGlmIChlbGVtZW50LT5uYW1lKCkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0gICAgQVNT
RVJUKG1fbmFtZVRvR3JvdXBNYXApOwotICAgIGlmICghbV9uYW1lVG9Hcm91cE1hcCkKLSAgICAg
ICAgcmV0dXJuOwotICAgIFJhZGlvQnV0dG9uR3JvdXAqIGdyb3VwID0gbV9uYW1lVG9Hcm91cE1h
cC0+Z2V0KGVsZW1lbnQtPm5hbWUoKS5pbXBsKCkpOwotICAgIEFTU0VSVChncm91cCk7Ci0gICAg
Z3JvdXAtPnJlcXVpcmVkQXR0cmlidXRlQ2hhbmdlZChlbGVtZW50KTsKLX0KLQotSFRNTElucHV0
RWxlbWVudCogQ2hlY2tlZFJhZGlvQnV0dG9uczo6Y2hlY2tlZEJ1dHRvbkZvckdyb3VwKGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QKLXsKLSAgICBpZiAoIW1fbmFtZVRvR3JvdXBNYXAp
Ci0gICAgICAgIHJldHVybiAwOwotICAgIG1fbmFtZVRvR3JvdXBNYXAtPmNoZWNrQ29uc2lzdGVu
Y3koKTsKLSAgICBSYWRpb0J1dHRvbkdyb3VwKiBncm91cCA9IG1fbmFtZVRvR3JvdXBNYXAtPmdl
dChuYW1lLmltcGwoKSk7Ci0gICAgcmV0dXJuIGdyb3VwID8gZ3JvdXAtPmNoZWNrZWRCdXR0b24o
KSA6IG51bGxwdHI7Ci19Ci0KLWJvb2wgQ2hlY2tlZFJhZGlvQnV0dG9uczo6aXNJblJlcXVpcmVk
R3JvdXAoSFRNTElucHV0RWxlbWVudCogZWxlbWVudCkgY29uc3QKLXsKLSAgICBBU1NFUlQoZWxl
bWVudC0+aXNSYWRpb0J1dHRvbigpKTsKLSAgICBpZiAoZWxlbWVudC0+bmFtZSgpLmlzRW1wdHko
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghbV9uYW1lVG9Hcm91cE1hcCkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFJhZGlvQnV0dG9uR3JvdXAqIGdyb3VwID0gbV9uYW1l
VG9Hcm91cE1hcC0+Z2V0KGVsZW1lbnQtPm5hbWUoKS5pbXBsKCkpOwotICAgIHJldHVybiBncm91
cCAmJiBncm91cC0+aXNSZXF1aXJlZCgpICYmIGdyb3VwLT5jb250YWlucyhlbGVtZW50KTsKLX0K
LQotdm9pZCBDaGVja2VkUmFkaW9CdXR0b25zOjpyZW1vdmVCdXR0b24oSFRNTElucHV0RWxlbWVu
dCogZWxlbWVudCkKLXsKLSAgICBBU1NFUlQoZWxlbWVudC0+aXNSYWRpb0J1dHRvbigpKTsKLSAg
ICBpZiAoZWxlbWVudC0+bmFtZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlm
ICghbV9uYW1lVG9Hcm91cE1hcCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9uYW1lVG9Hcm91
cE1hcC0+Y2hlY2tDb25zaXN0ZW5jeSgpOwotICAgIE5hbWVUb0dyb3VwTWFwOjppdGVyYXRvciBp
dCA9IG1fbmFtZVRvR3JvdXBNYXAtPmZpbmQoZWxlbWVudC0+bmFtZSgpLmltcGwoKSk7Ci0gICAg
aWYgKGl0ID09IG1fbmFtZVRvR3JvdXBNYXAtPmVuZCgpKQotICAgICAgICByZXR1cm47Ci0gICAg
aXQtPnZhbHVlLT5yZW1vdmUoZWxlbWVudCk7Ci0gICAgaWYgKGl0LT52YWx1ZS0+aXNFbXB0eSgp
KSB7Ci0gICAgICAgIC8vIEZJWE1FOiBXZSBtYXkgc2tpcCBkZWFsbG9jYXRpbmcgdGhlIGVtcHR5
IFJhZGlvQnV0dG9uR3JvdXAgZm9yCi0gICAgICAgIC8vIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50
LiBJZiB3ZSBkbyBzbywgd2UgbmVlZCB0byBjaGFuZ2UgdGhlIGtleSB0eXBlCi0gICAgICAgIC8v
IG9mIG1fbmFtZVRvR3JvdXBNYXAgZnJvbSBBdG9taWNTdHJpbmdJbXBsKiB0byBSZWZQdHI8QXRv
bWljU3RyaW5nSW1wbD4uCi0gICAgICAgIG1fbmFtZVRvR3JvdXBNYXAtPnJlbW92ZShpdCk7Ci0g
ICAgICAgIGlmIChtX25hbWVUb0dyb3VwTWFwLT5pc0VtcHR5KCkpCi0gICAgICAgICAgICBtX25h
bWVUb0dyb3VwTWFwID0gbnVsbHB0cjsKLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hlY2tlZFJhZGlvQnV0dG9ucy5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0NoZWNrZWRSYWRpb0J1dHRvbnMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYzU5NWE0MTY0ZDNlMmM0OTRjMWE2NDJkZmZlOWY0NjUwZjFkMzdjZC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ2hlY2tlZFJhZGlvQnV0dG9ucy5oCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoK
LSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0g
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgotICoKLSAqLwotCi0jaWZuZGVmIENoZWNrZWRSYWRpb0J1dHRvbnNfaAotI2RlZmluZSBD
aGVja2VkUmFkaW9CdXR0b25zX2gKLQotI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEhUTUxJbnB1dEVsZW1lbnQ7Ci1j
bGFzcyBSYWRpb0J1dHRvbkdyb3VwOwotCi0vLyBGSVhNRTogUmVuYW1lIHRoZSBjbGFzcy4gVGhl
IGNsYXNzIHdhcyBhIHNpbXBsZSBtYXAgZnJvbSBhIG5hbWUgdG8gYSBjaGVja2VkCi0vLyByYWRp
byBidXR0b24uIEl0IG1hbmFnZXMgUmFkaW9CdXR0b25Hcm91cCBvYmplY3RzIG5vdy4KLWNsYXNz
IENoZWNrZWRSYWRpb0J1dHRvbnMgewotcHVibGljOgotICAgIENoZWNrZWRSYWRpb0J1dHRvbnMo
KTsKLSAgICB+Q2hlY2tlZFJhZGlvQnV0dG9ucygpOwotICAgIHZvaWQgYWRkQnV0dG9uKEhUTUxJ
bnB1dEVsZW1lbnQqKTsKLSAgICB2b2lkIHVwZGF0ZUNoZWNrZWRTdGF0ZShIVE1MSW5wdXRFbGVt
ZW50Kik7Ci0gICAgdm9pZCByZXF1aXJlZEF0dHJpYnV0ZUNoYW5nZWQoSFRNTElucHV0RWxlbWVu
dCopOwotICAgIHZvaWQgcmVtb3ZlQnV0dG9uKEhUTUxJbnB1dEVsZW1lbnQqKTsKLSAgICBIVE1M
SW5wdXRFbGVtZW50KiBjaGVja2VkQnV0dG9uRm9yR3JvdXAoY29uc3QgQXRvbWljU3RyaW5nJiBn
cm91cE5hbWUpIGNvbnN0OwotICAgIGJvb2wgaXNJblJlcXVpcmVkR3JvdXAoSFRNTElucHV0RWxl
bWVudCopIGNvbnN0OwotICAgIFZlY3RvcjxIVE1MSW5wdXRFbGVtZW50Kj4gZ3JvdXBNZW1iZXJz
KGNvbnN0IEhUTUxJbnB1dEVsZW1lbnQmKSBjb25zdDsKLSAgICAKLXByaXZhdGU6Ci0gICAgdHlw
ZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBzdGQ6OnVuaXF1ZV9wdHI8UmFkaW9CdXR0
b25Hcm91cD4+IE5hbWVUb0dyb3VwTWFwOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxOYW1lVG9Hcm91
cE1hcD4gbV9uYW1lVG9Hcm91cE1hcDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIENoZWNrZWRSYWRpb0J1dHRvbnNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RPTUFsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5j
cHAKaW5kZXggNzIwMzBkYzc4ZDM1YTVjMzA5ZDBmZDkwMDYwZTA5ZjU2MDRmM2I4NS4uMjBiZDMz
OTlkNWM3OTUxYjRmZTE0MjRhNjA2M2EzZDI3OGNjMTllNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxs
SW5PbmUuY3BwCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAiQmVmb3JlVW5sb2FkRXZlbnQu
Y3BwIgogI2luY2x1ZGUgIkNEQVRBU2VjdGlvbi5jcHAiCiAjaW5jbHVkZSAiQ2hhcmFjdGVyRGF0
YS5jcHAiCi0jaW5jbHVkZSAiQ2hlY2tlZFJhZGlvQnV0dG9ucy5jcHAiCiAjaW5jbHVkZSAiQ2hp
bGRMaXN0TXV0YXRpb25TY29wZS5jcHAiCiAjaW5jbHVkZSAiQ2hpbGROb2RlTGlzdC5jcHAiCiAj
aW5jbHVkZSAiQ2xhc3NDb2xsZWN0aW9uLmNwcCIKQEAgLTEyOSw2ICsxMjgsNyBAQAogLy8gQnVp
bGQgZXJyb3IgaWYgYWRkaW5nIFF1YWxpZmllZE5hbWUuY3BwIHRvIERPTUFsbEluT25lLmNwcAog
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjU4NgogLy8gI2lu
Y2x1ZGUgIlF1YWxpZmllZE5hbWUuY3BwIgorI2luY2x1ZGUgIlJhZGlvQnV0dG9uR3JvdXBzLmNw
cCIKICNpbmNsdWRlICJSYW5nZS5jcHAiCiAjaW5jbHVkZSAiUmVnaXN0ZXJlZEV2ZW50TGlzdGVu
ZXIuY3BwIgogI2luY2x1ZGUgIlNjb3BlZEV2ZW50UXVldWUuY3BwIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1JhZGlvQnV0dG9uR3JvdXBzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9SYWRpb0J1dHRvbkdyb3Vwcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGE1NzVlMGI3ZGJhYmFhODFiZWEx
YzQ5ZmZhMzM0ZTQ2YmNlNGIzZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9SYWRpb0J1dHRvbkdyb3Vwcy5jcHAKQEAgLTAsMCArMSwyODcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJhZGlvQnV0dG9uR3JvdXBzLmgiCisK
KyNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCisjaW5jbHVkZSAiUmFuZ2UuaCIKKyNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJhZGlv
QnV0dG9uR3JvdXAgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAg
IFJhZGlvQnV0dG9uR3JvdXAoKTsKKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBt
X21lbWJlcnMuaXNFbXB0eSgpOyB9CisgICAgYm9vbCBpc1JlcXVpcmVkKCkgY29uc3QgeyByZXR1
cm4gbV9yZXF1aXJlZENvdW50OyB9CisgICAgSFRNTElucHV0RWxlbWVudCogY2hlY2tlZEJ1dHRv
bigpIGNvbnN0IHsgcmV0dXJuIG1fY2hlY2tlZEJ1dHRvbjsgfQorICAgIHZvaWQgYWRkKEhUTUxJ
bnB1dEVsZW1lbnQqKTsKKyAgICB2b2lkIHVwZGF0ZUNoZWNrZWRTdGF0ZShIVE1MSW5wdXRFbGVt
ZW50Kik7CisgICAgdm9pZCByZXF1aXJlZEF0dHJpYnV0ZUNoYW5nZWQoSFRNTElucHV0RWxlbWVu
dCopOworICAgIHZvaWQgcmVtb3ZlKEhUTUxJbnB1dEVsZW1lbnQqKTsKKyAgICBib29sIGNvbnRh
aW5zKEhUTUxJbnB1dEVsZW1lbnQqKSBjb25zdDsKKyAgICBWZWN0b3I8SFRNTElucHV0RWxlbWVu
dCo+IG1lbWJlcnMoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICB2b2lkIHVwZGF0ZVZhbGlkaXR5
Rm9yQWxsQnV0dG9ucygpOworICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0OworICAgIHZvaWQgc2V0
Q2hlY2tlZEJ1dHRvbihIVE1MSW5wdXRFbGVtZW50Kik7CisKKyAgICBIYXNoU2V0PEhUTUxJbnB1
dEVsZW1lbnQqPiBtX21lbWJlcnM7CisgICAgSFRNTElucHV0RWxlbWVudCogbV9jaGVja2VkQnV0
dG9uOworICAgIHNpemVfdCBtX3JlcXVpcmVkQ291bnQ7Cit9OworCitSYWRpb0J1dHRvbkdyb3Vw
OjpSYWRpb0J1dHRvbkdyb3VwKCkKKyAgICA6IG1fY2hlY2tlZEJ1dHRvbihudWxscHRyKQorICAg
ICwgbV9yZXF1aXJlZENvdW50KDApCit7Cit9CisKK2lubGluZSBib29sIFJhZGlvQnV0dG9uR3Jv
dXA6OmlzVmFsaWQoKSBjb25zdAoreworICAgIHJldHVybiAhaXNSZXF1aXJlZCgpIHx8IG1fY2hl
Y2tlZEJ1dHRvbjsKK30KKworVmVjdG9yPEhUTUxJbnB1dEVsZW1lbnQqPiBSYWRpb0J1dHRvbkdy
b3VwOjptZW1iZXJzKCkgY29uc3QKK3sKKyAgICBWZWN0b3I8SFRNTElucHV0RWxlbWVudCo+IG1l
bWJlcnM7CisgICAgY29weVRvVmVjdG9yKG1fbWVtYmVycywgbWVtYmVycyk7CisgICAgc3RkOjpz
b3J0KG1lbWJlcnMuYmVnaW4oKSwgbWVtYmVycy5lbmQoKSwgZG9jdW1lbnRPcmRlckNvbXBhcmF0
b3IpOworICAgIHJldHVybiBtZW1iZXJzOworfQorCit2b2lkIFJhZGlvQnV0dG9uR3JvdXA6OnNl
dENoZWNrZWRCdXR0b24oSFRNTElucHV0RWxlbWVudCogYnV0dG9uKQoreworICAgIEhUTUxJbnB1
dEVsZW1lbnQqIG9sZENoZWNrZWRCdXR0b24gPSBtX2NoZWNrZWRCdXR0b247CisgICAgaWYgKG9s
ZENoZWNrZWRCdXR0b24gPT0gYnV0dG9uKQorICAgICAgICByZXR1cm47CisgICAgbV9jaGVja2Vk
QnV0dG9uID0gYnV0dG9uOworICAgIGlmIChvbGRDaGVja2VkQnV0dG9uKQorICAgICAgICBvbGRD
aGVja2VkQnV0dG9uLT5zZXRDaGVja2VkKGZhbHNlKTsKK30KKwordm9pZCBSYWRpb0J1dHRvbkdy
b3VwOjphZGQoSFRNTElucHV0RWxlbWVudCogYnV0dG9uKQoreworICAgIEFTU0VSVChidXR0b24t
PmlzUmFkaW9CdXR0b24oKSk7CisgICAgaWYgKCFtX21lbWJlcnMuYWRkKGJ1dHRvbikuaXNOZXdF
bnRyeSkKKyAgICAgICAgcmV0dXJuOworICAgIGJvb2wgZ3JvdXBXYXNWYWxpZCA9IGlzVmFsaWQo
KTsKKyAgICBpZiAoYnV0dG9uLT5pc1JlcXVpcmVkKCkpCisgICAgICAgICsrbV9yZXF1aXJlZENv
dW50OworICAgIGlmIChidXR0b24tPmNoZWNrZWQoKSkKKyAgICAgICAgc2V0Q2hlY2tlZEJ1dHRv
bihidXR0b24pOworCisgICAgYm9vbCBncm91cElzVmFsaWQgPSBpc1ZhbGlkKCk7CisgICAgaWYg
KGdyb3VwV2FzVmFsaWQgIT0gZ3JvdXBJc1ZhbGlkKQorICAgICAgICB1cGRhdGVWYWxpZGl0eUZv
ckFsbEJ1dHRvbnMoKTsKKyAgICBlbHNlIGlmICghZ3JvdXBJc1ZhbGlkKSB7CisgICAgICAgIC8v
IEEgcmFkaW8gYnV0dG9uIG5vdCBpbiBhIGdyb3VwIGlzIGFsd2F5cyB2YWxpZC4gV2UgbmVlZCB0
byBtYWtlIGl0CisgICAgICAgIC8vIGludmFsaWQgb25seSBpZiB0aGUgZ3JvdXAgaXMgaW52YWxp
ZC4KKyAgICAgICAgYnV0dG9uLT51cGRhdGVWYWxpZGl0eSgpOworICAgIH0KK30KKwordm9pZCBS
YWRpb0J1dHRvbkdyb3VwOjp1cGRhdGVDaGVja2VkU3RhdGUoSFRNTElucHV0RWxlbWVudCogYnV0
dG9uKQoreworICAgIEFTU0VSVChidXR0b24tPmlzUmFkaW9CdXR0b24oKSk7CisgICAgQVNTRVJU
KG1fbWVtYmVycy5jb250YWlucyhidXR0b24pKTsKKyAgICBib29sIHdhc1ZhbGlkID0gaXNWYWxp
ZCgpOworICAgIGlmIChidXR0b24tPmNoZWNrZWQoKSkKKyAgICAgICAgc2V0Q2hlY2tlZEJ1dHRv
bihidXR0b24pOworICAgIGVsc2UgeworICAgICAgICBpZiAobV9jaGVja2VkQnV0dG9uID09IGJ1
dHRvbikKKyAgICAgICAgICAgIG1fY2hlY2tlZEJ1dHRvbiA9IG51bGxwdHI7CisgICAgfQorICAg
IGlmICh3YXNWYWxpZCAhPSBpc1ZhbGlkKCkpCisgICAgICAgIHVwZGF0ZVZhbGlkaXR5Rm9yQWxs
QnV0dG9ucygpOworfQorCit2b2lkIFJhZGlvQnV0dG9uR3JvdXA6OnJlcXVpcmVkQXR0cmlidXRl
Q2hhbmdlZChIVE1MSW5wdXRFbGVtZW50KiBidXR0b24pCit7CisgICAgQVNTRVJUKGJ1dHRvbi0+
aXNSYWRpb0J1dHRvbigpKTsKKyAgICBBU1NFUlQobV9tZW1iZXJzLmNvbnRhaW5zKGJ1dHRvbikp
OworICAgIGJvb2wgd2FzVmFsaWQgPSBpc1ZhbGlkKCk7CisgICAgaWYgKGJ1dHRvbi0+aXNSZXF1
aXJlZCgpKQorICAgICAgICArK21fcmVxdWlyZWRDb3VudDsKKyAgICBlbHNlIHsKKyAgICAgICAg
QVNTRVJUKG1fcmVxdWlyZWRDb3VudCk7CisgICAgICAgIC0tbV9yZXF1aXJlZENvdW50OworICAg
IH0KKyAgICBpZiAod2FzVmFsaWQgIT0gaXNWYWxpZCgpKQorICAgICAgICB1cGRhdGVWYWxpZGl0
eUZvckFsbEJ1dHRvbnMoKTsKK30KKwordm9pZCBSYWRpb0J1dHRvbkdyb3VwOjpyZW1vdmUoSFRN
TElucHV0RWxlbWVudCogYnV0dG9uKQoreworICAgIEFTU0VSVChidXR0b24tPmlzUmFkaW9CdXR0
b24oKSk7CisgICAgSGFzaFNldDxIVE1MSW5wdXRFbGVtZW50Kj46Oml0ZXJhdG9yIGl0ID0gbV9t
ZW1iZXJzLmZpbmQoYnV0dG9uKTsKKyAgICBpZiAoaXQgPT0gbV9tZW1iZXJzLmVuZCgpKQorICAg
ICAgICByZXR1cm47CisgICAgYm9vbCB3YXNWYWxpZCA9IGlzVmFsaWQoKTsKKyAgICBtX21lbWJl
cnMucmVtb3ZlKGl0KTsKKyAgICBpZiAoYnV0dG9uLT5pc1JlcXVpcmVkKCkpIHsKKyAgICAgICAg
QVNTRVJUKG1fcmVxdWlyZWRDb3VudCk7CisgICAgICAgIC0tbV9yZXF1aXJlZENvdW50OworICAg
IH0KKyAgICBpZiAobV9jaGVja2VkQnV0dG9uID09IGJ1dHRvbikKKyAgICAgICAgbV9jaGVja2Vk
QnV0dG9uID0gbnVsbHB0cjsKKworICAgIGlmIChtX21lbWJlcnMuaXNFbXB0eSgpKSB7CisgICAg
ICAgIEFTU0VSVCghbV9yZXF1aXJlZENvdW50KTsKKyAgICAgICAgQVNTRVJUKCFtX2NoZWNrZWRC
dXR0b24pOworICAgIH0gZWxzZSBpZiAod2FzVmFsaWQgIT0gaXNWYWxpZCgpKQorICAgICAgICB1
cGRhdGVWYWxpZGl0eUZvckFsbEJ1dHRvbnMoKTsKKyAgICBpZiAoIXdhc1ZhbGlkKSB7CisgICAg
ICAgIC8vIEEgcmFkaW8gYnV0dG9uIG5vdCBpbiBhIGdyb3VwIGlzIGFsd2F5cyB2YWxpZC4gV2Ug
bmVlZCB0byBtYWtlIGl0CisgICAgICAgIC8vIHZhbGlkIG9ubHkgaWYgdGhlIGdyb3VwIHdhcyBp
bnZhbGlkLgorICAgICAgICBidXR0b24tPnVwZGF0ZVZhbGlkaXR5KCk7CisgICAgfQorfQorCit2
b2lkIFJhZGlvQnV0dG9uR3JvdXA6OnVwZGF0ZVZhbGlkaXR5Rm9yQWxsQnV0dG9ucygpCit7Cisg
ICAgZm9yIChhdXRvJiBidXR0b24gOiBtX21lbWJlcnMpIHsKKyAgICAgICAgQVNTRVJUKGJ1dHRv
bi0+aXNSYWRpb0J1dHRvbigpKTsKKyAgICAgICAgYnV0dG9uLT51cGRhdGVWYWxpZGl0eSgpOwor
ICAgIH0KK30KKworYm9vbCBSYWRpb0J1dHRvbkdyb3VwOjpjb250YWlucyhIVE1MSW5wdXRFbGVt
ZW50KiBidXR0b24pIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbWVtYmVycy5jb250YWlucyhidXR0
b24pOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIEV4cGxpY2l0eSBkZWZpbmUgZW1wdHkgY29uc3Ry
dWN0b3IgYW5kIGRlc3RydWN0b3IgaW4gb3JkZXIgdG8gcHJldmVudCB0aGUKKy8vIGNvbXBpbGVy
IGZyb20gZ2VuZXJhdGluZyB0aGVtIGFzIGlubGluZXMuIFNvIHdlIGRvbid0IG5lZWQgdG8gdG8g
ZGVmaW5lCisvLyBSYWRpb0J1dHRvbkdyb3VwIGluIHRoZSBoZWFkZXIuCitSYWRpb0J1dHRvbkdy
b3Vwczo6UmFkaW9CdXR0b25Hcm91cHMoKQoreworfQorCitSYWRpb0J1dHRvbkdyb3Vwczo6flJh
ZGlvQnV0dG9uR3JvdXBzKCkKK3sKK30KKwordm9pZCBSYWRpb0J1dHRvbkdyb3Vwczo6YWRkQnV0
dG9uKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgQVNTRVJUKGVsZW1lbnQtPmlz
UmFkaW9CdXR0b24oKSk7CisgICAgaWYgKGVsZW1lbnQtPm5hbWUoKS5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmICghbV9uYW1lVG9Hcm91cE1hcCkKKyAgICAgICAgbV9uYW1l
VG9Hcm91cE1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8TmFtZVRvR3JvdXBNYXA+KCk7CisKKyAgICBh
dXRvJiBncm91cCA9IG1fbmFtZVRvR3JvdXBNYXAtPmFkZChlbGVtZW50LT5uYW1lKCkuaW1wbCgp
LCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CisgICAgaWYgKCFncm91cCkKKyAgICAgICAgZ3Jv
dXAgPSBzdGQ6Om1ha2VfdW5pcXVlPFJhZGlvQnV0dG9uR3JvdXA+KCk7CisgICAgZ3JvdXAtPmFk
ZChlbGVtZW50KTsKK30KKworVmVjdG9yPEhUTUxJbnB1dEVsZW1lbnQqPiBSYWRpb0J1dHRvbkdy
b3Vwczo6Z3JvdXBNZW1iZXJzKGNvbnN0IEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0
Cit7CisgICAgQVNTRVJUKGVsZW1lbnQuaXNSYWRpb0J1dHRvbigpKTsKKyAgICBpZiAoIWVsZW1l
bnQuaXNSYWRpb0J1dHRvbigpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byogbmFt
ZSA9IGVsZW1lbnQubmFtZSgpLmltcGwoKTsKKyAgICBpZiAoIW5hbWUpCisgICAgICAgIHJldHVy
biB7IH07CisKKyAgICBhdXRvKiBncm91cCA9IG1fbmFtZVRvR3JvdXBNYXAtPmdldChuYW1lKTsK
KyAgICBpZiAoIWdyb3VwKQorICAgICAgICByZXR1cm4geyB9OworICAgIHJldHVybiBncm91cC0+
bWVtYmVycygpOworfQorCit2b2lkIFJhZGlvQnV0dG9uR3JvdXBzOjp1cGRhdGVDaGVja2VkU3Rh
dGUoSFRNTElucHV0RWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBBU1NFUlQoZWxlbWVudC0+aXNS
YWRpb0J1dHRvbigpKTsKKyAgICBpZiAoZWxlbWVudC0+bmFtZSgpLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIEFTU0VSVChtX25hbWVUb0dyb3VwTWFwKTsKKyAgICBpZiAoIW1fbmFt
ZVRvR3JvdXBNYXApCisgICAgICAgIHJldHVybjsKKyAgICBSYWRpb0J1dHRvbkdyb3VwKiBncm91
cCA9IG1fbmFtZVRvR3JvdXBNYXAtPmdldChlbGVtZW50LT5uYW1lKCkuaW1wbCgpKTsKKyAgICBB
U1NFUlQoZ3JvdXApOworICAgIGdyb3VwLT51cGRhdGVDaGVja2VkU3RhdGUoZWxlbWVudCk7Cit9
CisKK3ZvaWQgUmFkaW9CdXR0b25Hcm91cHM6OnJlcXVpcmVkQXR0cmlidXRlQ2hhbmdlZChIVE1M
SW5wdXRFbGVtZW50KiBlbGVtZW50KQoreworICAgIEFTU0VSVChlbGVtZW50LT5pc1JhZGlvQnV0
dG9uKCkpOworICAgIGlmIChlbGVtZW50LT5uYW1lKCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm47CisgICAgQVNTRVJUKG1fbmFtZVRvR3JvdXBNYXApOworICAgIGlmICghbV9uYW1lVG9Hcm91
cE1hcCkKKyAgICAgICAgcmV0dXJuOworICAgIFJhZGlvQnV0dG9uR3JvdXAqIGdyb3VwID0gbV9u
YW1lVG9Hcm91cE1hcC0+Z2V0KGVsZW1lbnQtPm5hbWUoKS5pbXBsKCkpOworICAgIEFTU0VSVChn
cm91cCk7CisgICAgZ3JvdXAtPnJlcXVpcmVkQXR0cmlidXRlQ2hhbmdlZChlbGVtZW50KTsKK30K
KworSFRNTElucHV0RWxlbWVudCogUmFkaW9CdXR0b25Hcm91cHM6OmNoZWNrZWRCdXR0b25Gb3JH
cm91cChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0Cit7CisgICAgaWYgKCFtX25hbWVU
b0dyb3VwTWFwKQorICAgICAgICByZXR1cm4gMDsKKyAgICBtX25hbWVUb0dyb3VwTWFwLT5jaGVj
a0NvbnNpc3RlbmN5KCk7CisgICAgUmFkaW9CdXR0b25Hcm91cCogZ3JvdXAgPSBtX25hbWVUb0dy
b3VwTWFwLT5nZXQobmFtZS5pbXBsKCkpOworICAgIHJldHVybiBncm91cCA/IGdyb3VwLT5jaGVj
a2VkQnV0dG9uKCkgOiBudWxscHRyOworfQorCitib29sIFJhZGlvQnV0dG9uR3JvdXBzOjppc0lu
UmVxdWlyZWRHcm91cChIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KSBjb25zdAoreworICAgIEFT
U0VSVChlbGVtZW50LT5pc1JhZGlvQnV0dG9uKCkpOworICAgIGlmIChlbGVtZW50LT5uYW1lKCku
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFtX25hbWVUb0dyb3Vw
TWFwKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgUmFkaW9CdXR0b25Hcm91cCogZ3JvdXAg
PSBtX25hbWVUb0dyb3VwTWFwLT5nZXQoZWxlbWVudC0+bmFtZSgpLmltcGwoKSk7CisgICAgcmV0
dXJuIGdyb3VwICYmIGdyb3VwLT5pc1JlcXVpcmVkKCkgJiYgZ3JvdXAtPmNvbnRhaW5zKGVsZW1l
bnQpOworfQorCit2b2lkIFJhZGlvQnV0dG9uR3JvdXBzOjpyZW1vdmVCdXR0b24oSFRNTElucHV0
RWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBBU1NFUlQoZWxlbWVudC0+aXNSYWRpb0J1dHRvbigp
KTsKKyAgICBpZiAoZWxlbWVudC0+bmFtZSgpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIGlmICghbV9uYW1lVG9Hcm91cE1hcCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9uYW1l
VG9Hcm91cE1hcC0+Y2hlY2tDb25zaXN0ZW5jeSgpOworICAgIE5hbWVUb0dyb3VwTWFwOjppdGVy
YXRvciBpdCA9IG1fbmFtZVRvR3JvdXBNYXAtPmZpbmQoZWxlbWVudC0+bmFtZSgpLmltcGwoKSk7
CisgICAgaWYgKGl0ID09IG1fbmFtZVRvR3JvdXBNYXAtPmVuZCgpKQorICAgICAgICByZXR1cm47
CisgICAgaXQtPnZhbHVlLT5yZW1vdmUoZWxlbWVudCk7CisgICAgaWYgKGl0LT52YWx1ZS0+aXNF
bXB0eSgpKSB7CisgICAgICAgIC8vIEZJWE1FOiBXZSBtYXkgc2tpcCBkZWFsbG9jYXRpbmcgdGhl
IGVtcHR5IFJhZGlvQnV0dG9uR3JvdXAgZm9yCisgICAgICAgIC8vIHBlcmZvcm1hbmNlIGltcHJv
dmVtZW50LiBJZiB3ZSBkbyBzbywgd2UgbmVlZCB0byBjaGFuZ2UgdGhlIGtleSB0eXBlCisgICAg
ICAgIC8vIG9mIG1fbmFtZVRvR3JvdXBNYXAgZnJvbSBBdG9taWNTdHJpbmdJbXBsKiB0byBSZWZQ
dHI8QXRvbWljU3RyaW5nSW1wbD4uCisgICAgICAgIG1fbmFtZVRvR3JvdXBNYXAtPnJlbW92ZShp
dCk7CisgICAgICAgIGlmIChtX25hbWVUb0dyb3VwTWFwLT5pc0VtcHR5KCkpCisgICAgICAgICAg
ICBtX25hbWVUb0dyb3VwTWFwID0gbnVsbHB0cjsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFkaW9CdXR0b25Hcm91cHMuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9SYWRpb0J1dHRvbkdyb3Vwcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2NGQyNWJm
NjkxYzc0OTdhOWJlNmIwZjQ1YjM4ZDdlYmJhMGFiZWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUmFkaW9CdXR0b25Hcm91cHMuaApAQCAtMCwwICsxLDUzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgUmFkaW9CdXR0b25Hcm91cHNfaAorI2RlZmluZSBS
YWRpb0J1dHRvbkdyb3Vwc19oCisKKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBIVE1MSW5wdXRFbGVtZW50OworY2xh
c3MgUmFkaW9CdXR0b25Hcm91cDsKKworY2xhc3MgUmFkaW9CdXR0b25Hcm91cHMgeworcHVibGlj
OgorICAgIFJhZGlvQnV0dG9uR3JvdXBzKCk7CisgICAgflJhZGlvQnV0dG9uR3JvdXBzKCk7Cisg
ICAgdm9pZCBhZGRCdXR0b24oSFRNTElucHV0RWxlbWVudCopOworICAgIHZvaWQgdXBkYXRlQ2hl
Y2tlZFN0YXRlKEhUTUxJbnB1dEVsZW1lbnQqKTsKKyAgICB2b2lkIHJlcXVpcmVkQXR0cmlidXRl
Q2hhbmdlZChIVE1MSW5wdXRFbGVtZW50Kik7CisgICAgdm9pZCByZW1vdmVCdXR0b24oSFRNTElu
cHV0RWxlbWVudCopOworICAgIEhUTUxJbnB1dEVsZW1lbnQqIGNoZWNrZWRCdXR0b25Gb3JHcm91
cChjb25zdCBBdG9taWNTdHJpbmcmIGdyb3VwTmFtZSkgY29uc3Q7CisgICAgYm9vbCBpc0luUmVx
dWlyZWRHcm91cChIVE1MSW5wdXRFbGVtZW50KikgY29uc3Q7CisgICAgVmVjdG9yPEhUTUxJbnB1
dEVsZW1lbnQqPiBncm91cE1lbWJlcnMoY29uc3QgSFRNTElucHV0RWxlbWVudCYpIGNvbnN0Owor
Citwcml2YXRlOgorICAgIHR5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgc3RkOjp1
bmlxdWVfcHRyPFJhZGlvQnV0dG9uR3JvdXA+PiBOYW1lVG9Hcm91cE1hcDsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8TmFtZVRvR3JvdXBNYXA+IG1fbmFtZVRvR3JvdXBNYXA7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBSYWRpb0J1dHRvbkdyb3Vwc19oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0Zvcm1Db250cm9sbGVyLmgKaW5kZXggMTQ2MjA1NjZhNWNlZjE5MTg0OWZiNGQyYjIz
OWEyZTNiMDIzOGY2Yy4uM2I5YjQxOGJhZDc3YmM1NDgyNzlmNTgwZTE2OTRkODUxYWM4YzkyZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuaApAQCAtMjIsNyArMjIsNyBAQAogI2lm
bmRlZiBGb3JtQ29udHJvbGxlcl9oCiAjZGVmaW5lIEZvcm1Db250cm9sbGVyX2gKIAotI2luY2x1
ZGUgIkNoZWNrZWRSYWRpb0J1dHRvbnMuaCIKKyNpbmNsdWRlICJSYWRpb0J1dHRvbkdyb3Vwcy5o
IgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAg
Rm9ybUNvbnRyb2xsZXIoKTsKICAgICB+Rm9ybUNvbnRyb2xsZXIoKTsKIAotICAgIENoZWNrZWRS
YWRpb0J1dHRvbnMmIGNoZWNrZWRSYWRpb0J1dHRvbnMoKSB7IHJldHVybiBtX2NoZWNrZWRSYWRp
b0J1dHRvbnM7IH0KKyAgICBSYWRpb0J1dHRvbkdyb3VwcyYgcmFkaW9CdXR0b25Hcm91cHMoKSB7
IHJldHVybiBtX3JhZGlvQnV0dG9uR3JvdXBzOyB9CiAKICAgICB2b2lkIHJlZ2lzdGVyRm9ybUVs
ZW1lbnRXaXRoU3RhdGUoSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZSopOwogICAgIHZv
aWQgdW5yZWdpc3RlckZvcm1FbGVtZW50V2l0aFN0YXRlKEhUTUxGb3JtQ29udHJvbEVsZW1lbnRX
aXRoU3RhdGUqKTsKQEAgLTEwMiw3ICsxMDIsNyBAQCBwcml2YXRlOgogICAgIEZvcm1Db250cm9s
U3RhdGUgdGFrZVN0YXRlRm9yRm9ybUVsZW1lbnQoY29uc3QgSFRNTEZvcm1Db250cm9sRWxlbWVu
dFdpdGhTdGF0ZSYpOwogICAgIHN0YXRpYyB2b2lkIGZvcm1TdGF0ZXNGcm9tU3RhdGVWZWN0b3Io
Y29uc3QgVmVjdG9yPFN0cmluZz4mLCBTYXZlZEZvcm1TdGF0ZU1hcCYpOwogCi0gICAgQ2hlY2tl
ZFJhZGlvQnV0dG9ucyBtX2NoZWNrZWRSYWRpb0J1dHRvbnM7CisgICAgUmFkaW9CdXR0b25Hcm91
cHMgbV9yYWRpb0J1dHRvbkdyb3VwczsKICAgICBGb3JtRWxlbWVudExpc3RIYXNoU2V0IG1fZm9y
bUVsZW1lbnRzV2l0aFN0YXRlOwogICAgIFNhdmVkRm9ybVN0YXRlTWFwIG1fc2F2ZWRGb3JtU3Rh
dGVNYXA7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvcm1LZXlHZW5lcmF0b3I+IG1fZm9ybUtleUdl
bmVyYXRvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCmluZGV4IDI3NWVlMzYy
NTgwZTY0NzMyYTM1N2QxNDA2YTk2NTdhYzc3ODkzNjIuLmMwNTc2YmVjN2NkYmNjNDExZDViYzRm
ZmNiYzc5OWFlMWE2NmExMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaApA
QCAtMjQsMTAgKzI0LDEwIEBACiAjaWZuZGVmIEhUTUxGb3JtRWxlbWVudF9oCiAjZGVmaW5lIEhU
TUxGb3JtRWxlbWVudF9oCiAKLSNpbmNsdWRlICJDaGVja2VkUmFkaW9CdXR0b25zLmgiCiAjaW5j
bHVkZSAiRm9ybVN0YXRlLmgiCiAjaW5jbHVkZSAiRm9ybVN1Ym1pc3Npb24uaCIKICNpbmNsdWRl
ICJIVE1MRWxlbWVudC5oIgorI2luY2x1ZGUgIlJhZGlvQnV0dG9uR3JvdXBzLmgiCiAjaW5jbHVk
ZSA8bWVtb3J5PgogCiAjaWYgRU5BQkxFKElPU19BVVRPQ09SUkVDVF9BTkRfQVVUT0NBUElUQUxJ
WkUpCkBAIC0xMzEsNyArMTMxLDcgQEAgcHVibGljOgogICAgIHZvaWQgZmluaXNoUmVxdWVzdEF1
dG9jb21wbGV0ZShBdXRvY29tcGxldGVSZXN1bHQpOwogI2VuZGlmCiAKLSAgICBDaGVja2VkUmFk
aW9CdXR0b25zJiBjaGVja2VkUmFkaW9CdXR0b25zKCkgeyByZXR1cm4gbV9jaGVja2VkUmFkaW9C
dXR0b25zOyB9CisgICAgUmFkaW9CdXR0b25Hcm91cHMmIHJhZGlvQnV0dG9uR3JvdXBzKCkgeyBy
ZXR1cm4gbV9yYWRpb0J1dHRvbkdyb3VwczsgfQogCiAgICAgY29uc3QgVmVjdG9yPEZvcm1Bc3Nv
Y2lhdGVkRWxlbWVudCo+JiBhc3NvY2lhdGVkRWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBtX2Fz
c29jaWF0ZWRFbGVtZW50czsgfQogICAgIGNvbnN0IFZlY3RvcjxIVE1MSW1hZ2VFbGVtZW50Kj4m
IGltYWdlRWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlRWxlbWVudHM7IH0KQEAgLTE4
NSw3ICsxODUsNyBAQCBwcml2YXRlOgogICAgIEZvcm1TdWJtaXNzaW9uOjpBdHRyaWJ1dGVzIG1f
YXR0cmlidXRlczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFzdE5hbWVzTWFwPiBtX3Bhc3ROYW1l
c01hcDsKIAotICAgIENoZWNrZWRSYWRpb0J1dHRvbnMgbV9jaGVja2VkUmFkaW9CdXR0b25zOwor
ICAgIFJhZGlvQnV0dG9uR3JvdXBzIG1fcmFkaW9CdXR0b25Hcm91cHM7CiAKICAgICB1bnNpZ25l
ZCBtX2Fzc29jaWF0ZWRFbGVtZW50c0JlZm9yZUluZGV4OwogICAgIHVuc2lnbmVkIG1fYXNzb2Np
YXRlZEVsZW1lbnRzQWZ0ZXJJbmRleDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuY3BwCmluZGV4IGFjMmUwMzNkMGFjMTI5NzBhODc5YjFlZGMwOTM4NDFiZGM5ZTgzYmYuLjJk
NDg5NzdiM2ZiNTk0ZTJlYzRhYWU4MGEyZDVhNTY0OTlhNjFhM2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtMTU4LDcgKzE1OCw3IEBAIEhUTUxJbnB1dEVs
ZW1lbnQ6On5IVE1MSW5wdXRFbGVtZW50KCkKICAgICAvLyBzZXRGb3JtKDApIG1heSByZWdpc3Rl
ciB0aGlzIHRvIGEgZG9jdW1lbnQtbGV2ZWwgcmFkaW8gYnV0dG9uIGdyb3VwLgogICAgIC8vIFdl
IHNob3VsZCB1bnJlZ2lzdGVyIGl0IHRvIGF2b2lkIGFjY2Vzc2luZyBhIGRlbGV0ZWQgb2JqZWN0
LgogICAgIGlmIChpc1JhZGlvQnV0dG9uKCkpCi0gICAgICAgIGRvY3VtZW50KCkuZm9ybUNvbnRy
b2xsZXIoKS5jaGVja2VkUmFkaW9CdXR0b25zKCkucmVtb3ZlQnV0dG9uKHRoaXMpOworICAgICAg
ICBkb2N1bWVudCgpLmZvcm1Db250cm9sbGVyKCkucmFkaW9CdXR0b25Hcm91cHMoKS5yZW1vdmVC
dXR0b24odGhpcyk7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICBpZiAobV9oYXNUb3Vj
aEV2ZW50SGFuZGxlcikKICAgICAgICAgZG9jdW1lbnQoKS5kaWRSZW1vdmVFdmVudFRhcmdldE5v
ZGUoKnRoaXMpOwpAQCAtODU0LDcgKzg1NCw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0
Q2hlY2tlZChib29sIG5vd0NoZWNrZWQsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IgZXZlbnRCCiAg
ICAgbV9pc0NoZWNrZWQgPSBub3dDaGVja2VkOwogICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsK
IAotICAgIGlmIChDaGVja2VkUmFkaW9CdXR0b25zKiBidXR0b25zID0gY2hlY2tlZFJhZGlvQnV0
dG9ucygpKQorICAgIGlmIChSYWRpb0J1dHRvbkdyb3VwcyogYnV0dG9ucyA9IHJhZGlvQnV0dG9u
R3JvdXBzKCkpCiAgICAgICAgICAgICBidXR0b25zLT51cGRhdGVDaGVja2VkU3RhdGUodGhpcyk7
CiAgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+c3R5bGUoKS5oYXNBcHBlYXJhbmNl
KCkpCiAgICAgICAgIHJlbmRlcmVyKCktPnRoZW1lKCkuc3RhdGVDaGFuZ2VkKCpyZW5kZXJlcigp
LCBDb250cm9sU3RhdGVzOjpDaGVja2VkU3RhdGUpOwpAQCAtMTQ5NSw3ICsxNDk1LDcgQEAgdm9p
ZCBIVE1MSW5wdXRFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9j
dW1lbnQpCiAgICAgICAgIGlmIChuZWVkc1N1c3BlbnNpb25DYWxsYmFjaykKICAgICAgICAgICAg
IG9sZERvY3VtZW50LT51bnJlZ2lzdGVyRm9yRG9jdW1lbnRTdXNwZW5zaW9uQ2FsbGJhY2tzKHRo
aXMpOwogICAgICAgICBpZiAoaXNSYWRpb0J1dHRvbigpKQotICAgICAgICAgICAgb2xkRG9jdW1l
bnQtPmZvcm1Db250cm9sbGVyKCkuY2hlY2tlZFJhZGlvQnV0dG9ucygpLnJlbW92ZUJ1dHRvbih0
aGlzKTsKKyAgICAgICAgICAgIG9sZERvY3VtZW50LT5mb3JtQ29udHJvbGxlcigpLnJhZGlvQnV0
dG9uR3JvdXBzKCkucmVtb3ZlQnV0dG9uKHRoaXMpOwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
CiAgICAgICAgIGlmIChtX2hhc1RvdWNoRXZlbnRIYW5kbGVyKQogICAgICAgICAgICAgb2xkRG9j
dW1lbnQtPmRpZFJlbW92ZUV2ZW50VGFyZ2V0Tm9kZSgqdGhpcyk7CkBAIC0xNTI4LDcgKzE1Mjgs
NyBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmNvbXB1dGVXaWxsVmFsaWRhdGUoKSBjb25zdAog
dm9pZCBIVE1MSW5wdXRFbGVtZW50OjpyZXF1aXJlZEF0dHJpYnV0ZUNoYW5nZWQoKQogewogICAg
IEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpyZXF1aXJlZEF0dHJpYnV0ZUNoYW5nZWQoKTsK
LSAgICBpZiAoQ2hlY2tlZFJhZGlvQnV0dG9ucyogYnV0dG9ucyA9IGNoZWNrZWRSYWRpb0J1dHRv
bnMoKSkKKyAgICBpZiAoUmFkaW9CdXR0b25Hcm91cHMqIGJ1dHRvbnMgPSByYWRpb0J1dHRvbkdy
b3VwcygpKQogICAgICAgICBidXR0b25zLT5yZXF1aXJlZEF0dHJpYnV0ZUNoYW5nZWQodGhpcyk7
CiAgICAgbV9pbnB1dFR5cGUtPnJlcXVpcmVkQXR0cmlidXRlQ2hhbmdlZCgpOwogfQpAQCAtMTc3
MiwxNCArMTc3MiwxNCBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnNob3VsZFVzZU1lZGlhQ2Fw
dHVyZSgpIGNvbnN0CiBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmlzSW5SZXF1aXJlZFJhZGlvQnV0
dG9uR3JvdXAoKQogewogICAgIEFTU0VSVChpc1JhZGlvQnV0dG9uKCkpOwotICAgIGlmIChDaGVj
a2VkUmFkaW9CdXR0b25zKiBidXR0b25zID0gY2hlY2tlZFJhZGlvQnV0dG9ucygpKQorICAgIGlm
IChSYWRpb0J1dHRvbkdyb3VwcyogYnV0dG9ucyA9IHJhZGlvQnV0dG9uR3JvdXBzKCkpCiAgICAg
ICAgIHJldHVybiBidXR0b25zLT5pc0luUmVxdWlyZWRHcm91cCh0aGlzKTsKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKIFZlY3RvcjxIVE1MSW5wdXRFbGVtZW50Kj4gSFRNTElucHV0RWxlbWVudDo6
cmFkaW9CdXR0b25Hcm91cCgpIGNvbnN0CiB7Ci0gICAgQ2hlY2tlZFJhZGlvQnV0dG9ucyogYnV0
dG9ucyA9IGNoZWNrZWRSYWRpb0J1dHRvbnMoKTsKKyAgICBSYWRpb0J1dHRvbkdyb3VwcyogYnV0
dG9ucyA9IHJhZGlvQnV0dG9uR3JvdXBzKCk7CiAgICAgaWYgKCFidXR0b25zKQogICAgICAgICBy
ZXR1cm4geyB9OwogICAgIHJldHVybiBidXR0b25zLT5ncm91cE1lbWJlcnMoKnRoaXMpOwpAQCAt
MTc4NywzMSArMTc4NywzMSBAQCBWZWN0b3I8SFRNTElucHV0RWxlbWVudCo+IEhUTUxJbnB1dEVs
ZW1lbnQ6OnJhZGlvQnV0dG9uR3JvdXAoKSBjb25zdAogICAgIAogSFRNTElucHV0RWxlbWVudCog
SFRNTElucHV0RWxlbWVudDo6Y2hlY2tlZFJhZGlvQnV0dG9uRm9yR3JvdXAoKSBjb25zdAogewot
ICAgIGlmIChDaGVja2VkUmFkaW9CdXR0b25zKiBidXR0b25zID0gY2hlY2tlZFJhZGlvQnV0dG9u
cygpKQorICAgIGlmIChSYWRpb0J1dHRvbkdyb3VwcyogYnV0dG9ucyA9IHJhZGlvQnV0dG9uR3Jv
dXBzKCkpCiAgICAgICAgIHJldHVybiBidXR0b25zLT5jaGVja2VkQnV0dG9uRm9yR3JvdXAobmFt
ZSgpKTsKICAgICByZXR1cm4gMDsKIH0KIAotQ2hlY2tlZFJhZGlvQnV0dG9ucyogSFRNTElucHV0
RWxlbWVudDo6Y2hlY2tlZFJhZGlvQnV0dG9ucygpIGNvbnN0CitSYWRpb0J1dHRvbkdyb3Vwcyog
SFRNTElucHV0RWxlbWVudDo6cmFkaW9CdXR0b25Hcm91cHMoKSBjb25zdAogewogICAgIGlmICgh
aXNSYWRpb0J1dHRvbigpKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoSFRNTEZvcm1FbGVt
ZW50KiBmb3JtRWxlbWVudCA9IGZvcm0oKSkKLSAgICAgICAgcmV0dXJuICZmb3JtRWxlbWVudC0+
Y2hlY2tlZFJhZGlvQnV0dG9ucygpOworICAgICAgICByZXR1cm4gJmZvcm1FbGVtZW50LT5yYWRp
b0J1dHRvbkdyb3VwcygpOwogICAgIGlmIChpbkRvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiAm
ZG9jdW1lbnQoKS5mb3JtQ29udHJvbGxlcigpLmNoZWNrZWRSYWRpb0J1dHRvbnMoKTsKKyAgICAg
ICAgcmV0dXJuICZkb2N1bWVudCgpLmZvcm1Db250cm9sbGVyKCkucmFkaW9CdXR0b25Hcm91cHMo
KTsKICAgICByZXR1cm4gMDsKIH0KIAogaW5saW5lIHZvaWQgSFRNTElucHV0RWxlbWVudDo6YWRk
VG9SYWRpb0J1dHRvbkdyb3VwKCkKIHsKLSAgICBpZiAoQ2hlY2tlZFJhZGlvQnV0dG9ucyogYnV0
dG9ucyA9IGNoZWNrZWRSYWRpb0J1dHRvbnMoKSkKKyAgICBpZiAoUmFkaW9CdXR0b25Hcm91cHMq
IGJ1dHRvbnMgPSByYWRpb0J1dHRvbkdyb3VwcygpKQogICAgICAgICBidXR0b25zLT5hZGRCdXR0
b24odGhpcyk7CiB9CiAKIGlubGluZSB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnJlbW92ZUZyb21S
YWRpb0J1dHRvbkdyb3VwKCkKIHsKLSAgICBpZiAoQ2hlY2tlZFJhZGlvQnV0dG9ucyogYnV0dG9u
cyA9IGNoZWNrZWRSYWRpb0J1dHRvbnMoKSkKKyAgICBpZiAoUmFkaW9CdXR0b25Hcm91cHMqIGJ1
dHRvbnMgPSByYWRpb0J1dHRvbkdyb3VwcygpKQogICAgICAgICBidXR0b25zLT5yZW1vdmVCdXR0
b24odGhpcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXgg
ZmYxNjdiMmQxM2QwMzU0NWQ1OGUyOTEyNzIyZjIyZjJiNTZiZmVkNS4uYWRlZTdhYmVjMDYzODUz
MGVkNzRlMTUzZTBjOTNhNzI2N2E2ODhjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmgKQEAgLTM2LDcgKzM2LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBDaGVja2VkUmFkaW9CdXR0b25zOwogY2xhc3MgRHJhZ0RhdGE7CiBjbGFzcyBGaWxlTGlzdDsK
IGNsYXNzIEhUTUxEYXRhTGlzdEVsZW1lbnQ7CkBAIC00NSw2ICs0NCw3IEBAIGNsYXNzIEhUTUxP
cHRpb25FbGVtZW50OwogY2xhc3MgSWNvbjsKIGNsYXNzIElucHV0VHlwZTsKIGNsYXNzIExpc3RB
dHRyaWJ1dGVUYXJnZXRPYnNlcnZlcjsKK2NsYXNzIFJhZGlvQnV0dG9uR3JvdXBzOwogY2xhc3Mg
VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50OwogY2xhc3MgVVJMOwogc3RydWN0IERhdGVUaW1l
Q2hvb3NlclBhcmFtZXRlcnM7CkBAIC00MjEsNyArNDIxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHVwZGF0ZVZhbHVlSWZOZWVkZWQoKTsKIAogICAgIC8vIFJldHVybnMgbnVsbCBpZiB0aGlzIGlz
bid0IGFzc29jaWF0ZWQgd2l0aCBhbnkgcmFkaW8gYnV0dG9uIGdyb3VwLgotICAgIENoZWNrZWRS
YWRpb0J1dHRvbnMqIGNoZWNrZWRSYWRpb0J1dHRvbnMoKSBjb25zdDsKKyAgICBSYWRpb0J1dHRv
bkdyb3VwcyogcmFkaW9CdXR0b25Hcm91cHMoKSBjb25zdDsKICAgICB2b2lkIGFkZFRvUmFkaW9C
dXR0b25Hcm91cCgpOwogICAgIHZvaWQgcmVtb3ZlRnJvbVJhZGlvQnV0dG9uR3JvdXAoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280462</attachid>
            <date>2016-06-03 14:12:47 -0700</date>
            <delta_ts>2016-06-03 14:35:30 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-158326-20160603141407.patch</filename>
            <type>text/plain</type>
            <size>42731</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmFiYjJkMTVjZWQ4YWEx
YTRhNzA2Y2YyMDJiMTg2YWNlOGJiMDhkMS4uZTI3NmFkODkyYjAwOTY0MzNjYjMxNTE0YzRhYzM5
NTE4NTU0OWNmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDE2LTA2LTAzICBCZW5q
YW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW5hbWUgQ2hl
Y2tlZFJhZGlvQnV0dG9ucyBpbnRvIFJhZGlvQnV0dG9uR3JvdXBzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgzMjYKKworICAgICAgICBSZXZpZXdl
ZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgIENoZWNrZWRSYWRpb0J1dHRvbnMgaGFu
ZGxlcyB0aGUgc2V0IG9mIGFsbCB0aGUgUmFkaW8gQnV0dG9uIEdyb3VwcworICAgICAgICBmb3Ig
YSBwYXJ0aWN1bGFyIGZvcm0gb3IgZG9jdW1lbnQuCisgICAgICAgIFRoZSBuYW1lIGlzIHdyb25n
IGFuZCBhcHBhcmVudGx5IGNvbWVzIGZyb20gZm9ybWVyIHVzZXMgb2YgdGhpcyBjbGFzcworICAg
ICAgICAoc2VlIHRoZSBjb21tZW50IGFib3ZlIHRoZSBjbGFzcyBkZWNsYXJhdGlvbikuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCByZW5hbWVzICJDaGVja2VkUmFkaW9CdXR0b25zIiB0byAiUmFkaW9C
dXR0b25Hcm91cHMiIHRvIHJlZmxlY3QgdGhhdCBpdCBoYW5kbGVzCisgICAgICAgIGFsbCB0aGUg
UmFkaW8gQnV0dG9uIEdyb3VwIGZyb20gYSBnaXZlbiBjb250ZXh0IChmb3JtIG9yIGRvY3VtZW50
KS4KKyAgICAgICAgSW50ZXJuYWxseSBpdCBoYXMgYSBzZXQgb2YgUmFkaW9CdXR0b25Hcm91cCBi
dXQgdGhhdCBpcyBuZXZlciBleHBsaWNpdGVseQorICAgICAgICBleHBvc2VkLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGRvbS9DaGVja2VkUmFkaW9CdXR0b25zLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJhZGlvQnV0dG9uR3JvdXA6OmlzRW1wdHkpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UmFkaW9CdXR0b25Hcm91cDo6aXNSZXF1aXJlZCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpSYWRpb0J1dHRvbkdyb3VwOjpjaGVja2VkQnV0dG9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlJhZGlvQnV0dG9uR3JvdXA6OlJhZGlvQnV0dG9uR3JvdXApOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9CdXR0b25Hcm91cDo6aXNWYWxpZCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpSYWRpb0J1dHRvbkdyb3VwOjptZW1iZXJzKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJhZGlvQnV0dG9uR3JvdXA6OnNldENoZWNrZWRCdXR0b24p
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9CdXR0b25Hcm91cDo6YWRkKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJhZGlvQnV0dG9uR3JvdXA6OnVwZGF0ZUNoZWNrZWRT
dGF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSYWRpb0J1dHRvbkdyb3VwOjpyZXF1
aXJlZEF0dHJpYnV0ZUNoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9C
dXR0b25Hcm91cDo6cmVtb3ZlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJhZGlvQnV0
dG9uR3JvdXA6OnVwZGF0ZVZhbGlkaXR5Rm9yQWxsQnV0dG9ucyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpSYWRpb0J1dHRvbkdyb3VwOjpjb250YWlucyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpDaGVja2VkUmFkaW9CdXR0b25zOjpDaGVja2VkUmFkaW9CdXR0b25zKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNoZWNrZWRSYWRpb0J1dHRvbnM6On5DaGVja2VkUmFk
aW9CdXR0b25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNoZWNrZWRSYWRpb0J1dHRv
bnM6OmFkZEJ1dHRvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDaGVja2VkUmFkaW9C
dXR0b25zOjpncm91cE1lbWJlcnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2hlY2tl
ZFJhZGlvQnV0dG9uczo6dXBkYXRlQ2hlY2tlZFN0YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkNoZWNrZWRSYWRpb0J1dHRvbnM6OnJlcXVpcmVkQXR0cmlidXRlQ2hhbmdlZCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDaGVja2VkUmFkaW9CdXR0b25zOjpjaGVja2VkQnV0
dG9uRm9yR3JvdXApOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2hlY2tlZFJhZGlvQnV0
dG9uczo6aXNJblJlcXVpcmVkR3JvdXApOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2hl
Y2tlZFJhZGlvQnV0dG9uczo6cmVtb3ZlQnV0dG9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20v
UmFkaW9CdXR0b25Hcm91cHMuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvZG9tL0No
ZWNrZWRSYWRpb0J1dHRvbnMuY3BwLgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9CdXR0b25Hcm91
cDo6aXNFbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpSYWRpb0J1dHRvbkdyb3VwOjppc1JlcXVp
cmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJhZGlvQnV0dG9uR3JvdXA6OmNoZWNrZWRCdXR0b24p
OgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9CdXR0b25Hcm91cDo6UmFkaW9CdXR0b25Hcm91cCk6
CisgICAgICAgIChXZWJDb3JlOjpSYWRpb0J1dHRvbkdyb3VwOjppc1ZhbGlkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJhZGlvQnV0dG9uR3JvdXA6Om1lbWJlcnMpOgorICAgICAgICAoV2ViQ29yZTo6
UmFkaW9CdXR0b25Hcm91cDo6c2V0Q2hlY2tlZEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpS
YWRpb0J1dHRvbkdyb3VwOjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9CdXR0b25Hcm91
cDo6dXBkYXRlQ2hlY2tlZFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJhZGlvQnV0dG9uR3Jv
dXA6OnJlcXVpcmVkQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpSYWRpb0J1
dHRvbkdyb3VwOjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9CdXR0b25Hcm91cDo6
dXBkYXRlVmFsaWRpdHlGb3JBbGxCdXR0b25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJhZGlvQnV0
dG9uR3JvdXA6OmNvbnRhaW5zKToKKyAgICAgICAgKFdlYkNvcmU6OlJhZGlvQnV0dG9uR3JvdXBz
OjpSYWRpb0J1dHRvbkdyb3Vwcyk6CisgICAgICAgIChXZWJDb3JlOjpSYWRpb0J1dHRvbkdyb3Vw
czo6flJhZGlvQnV0dG9uR3JvdXBzKToKKyAgICAgICAgKFdlYkNvcmU6OlJhZGlvQnV0dG9uR3Jv
dXBzOjphZGRCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9CdXR0b25Hcm91cHM6Omdy
b3VwTWVtYmVycyk6CisgICAgICAgIChXZWJDb3JlOjpSYWRpb0J1dHRvbkdyb3Vwczo6dXBkYXRl
Q2hlY2tlZFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJhZGlvQnV0dG9uR3JvdXBzOjpyZXF1
aXJlZEF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9CdXR0b25Hcm91
cHM6OmNoZWNrZWRCdXR0b25Gb3JHcm91cCk6CisgICAgICAgIChXZWJDb3JlOjpSYWRpb0J1dHRv
bkdyb3Vwczo6aXNJblJlcXVpcmVkR3JvdXApOgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9CdXR0
b25Hcm91cHM6OnJlbW92ZUJ1dHRvbik6CisgICAgICAgICogZG9tL1JhZGlvQnV0dG9uR3JvdXBz
Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9kb20vQ2hlY2tlZFJhZGlvQnV0dG9ucy5o
LgorICAgICAgICAqIGh0bWwvRm9ybUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
cm1Db250cm9sbGVyOjpyYWRpb0J1dHRvbkdyb3Vwcyk6CisgICAgICAgIChXZWJDb3JlOjpGb3Jt
Q29udHJvbGxlcjo6Y2hlY2tlZFJhZGlvQnV0dG9ucyk6IERlbGV0ZWQuCisgICAgICAgICogaHRt
bC9IVE1MRm9ybUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6fkhUTUxJbnB1dEVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6c2V0Q2hlY2tlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpyZXF1aXJlZEF0dHJpYnV0ZUNoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6aXNJblJlcXVpcmVkUmFk
aW9CdXR0b25Hcm91cCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpyYWRp
b0J1dHRvbkdyb3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmNoZWNr
ZWRSYWRpb0J1dHRvbkZvckdyb3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1l
bnQ6OnJhZGlvQnV0dG9uR3JvdXBzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1l
bnQ6OmFkZFRvUmFkaW9CdXR0b25Hcm91cCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRF
bGVtZW50OjpyZW1vdmVGcm9tUmFkaW9CdXR0b25Hcm91cCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MSW5wdXRFbGVtZW50OjpjaGVja2VkUmFkaW9CdXR0b25zKTogRGVsZXRlZC4KKyAgICAgICAg
KiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaDoKKwogMjAxNi0wNi0wMSAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBIYXNoTWFwOjplbnN1cmUoKSBpbiBEb2N1
bWVudE9yZGVyZWRNYXA6OmFkZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGQwZDMyNDcxMzUx
NGEzZjdhY2JhYTk3YzFiMGFjN2Q1OWEyNmQ5Y2MuLmFjMTg4MTgwYWI5ODMzOTA1NDFmZjM1NmZm
NmI3ZWQ1OWZkMGJlNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMzk2LDcgKzEzOTYsNiBA
QCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgZG9tL0JlZm9yZVVubG9hZEV2ZW50LmNwcAogICAg
IGRvbS9DREFUQVNlY3Rpb24uY3BwCiAgICAgZG9tL0NoYXJhY3RlckRhdGEuY3BwCi0gICAgZG9t
L0NoZWNrZWRSYWRpb0J1dHRvbnMuY3BwCiAgICAgZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUu
Y3BwCiAgICAgZG9tL0NoaWxkTm9kZUxpc3QuY3BwCiAgICAgZG9tL0NsYXNzQ29sbGVjdGlvbi5j
cHAKQEAgLTE0OTEsNiArMTQ5MCw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBkb20vUHJv
Z3Jlc3NFdmVudC5jcHAKICAgICBkb20vUHNldWRvRWxlbWVudC5jcHAKICAgICBkb20vUXVhbGlm
aWVkTmFtZS5jcHAKKyAgICBkb20vUmFkaW9CdXR0b25Hcm91cHMuY3BwCiAgICAgZG9tL1Jhbmdl
LmNwcAogICAgIGRvbS9SZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5jcHAKICAgICBkb20vU2NvcGVk
RXZlbnRRdWV1ZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCBiNDExYjYzODNlNWMyN2FhNmYxZDVlYzM4NmIzN2JjMTkyYzRm
MzcxLi43MDQ5NDEyNGM4OGE5NGU3Y2ZhMTg3Yjc3YzkyMzA0ZGNjMmJjM2NkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNzY0
LDggKzM3NjQsOCBAQAogCQk5M0YxRTFFQzFBNDBGRERDMDAzNDhEMTMgLyogTlNQb3BvdmVyU1BJ
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0YxRTFF
QjFBNDBGRERDMDAzNDhEMTMgLyogTlNQb3BvdmVyU1BJLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNGNkYxRUQxMjdGNzBCMTAwNTVDQjA2IC8q
IFdlYkdMQ29udGV4dEV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzRjZGMUVBMTI3RjcwQjEwMDU1Q0IwNiAvKiBXZWJHTENvbnRleHRFdmVu
dC5jcHAgKi87IH07CiAJCTkzRjZGMUVFMTI3RjcwQjEwMDU1Q0IwNiAvKiBXZWJHTENvbnRleHRF
dmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNG
NkYxRUIxMjdGNzBCMTAwNTVDQjA2IC8qIFdlYkdMQ29udGV4dEV2ZW50LmggKi87IH07Ci0JCTkz
RjkyNTQzMEY3RUY1QjgwMDdFMzdDOSAvKiBDaGVja2VkUmFkaW9CdXR0b25zLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y5MjU0MTBGN0VGNUI4MDA3
RTM3QzkgLyogQ2hlY2tlZFJhZGlvQnV0dG9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTkzRjkyNTQ0MEY3RUY1QjgwMDdFMzdDOSAvKiBDaGVj
a2VkUmFkaW9CdXR0b25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzRjkyNTQyMEY3RUY1QjgwMDdFMzdDOSAvKiBDaGVja2VkUmFkaW9CdXR0b25z
LmNwcCAqLzsgfTsKKwkJOTNGOTI1NDMwRjdFRjVCODAwN0UzN0M5IC8qIFJhZGlvQnV0dG9uR3Jv
dXBzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y5
MjU0MTBGN0VGNUI4MDA3RTM3QzkgLyogUmFkaW9CdXR0b25Hcm91cHMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5M0Y5MjU0NDBGN0VGNUI4MDA3
RTM3QzkgLyogUmFkaW9CdXR0b25Hcm91cHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGOTI1NDIwRjdFRjVCODAwN0UzN0M5IC8qIFJhZGlvQnV0
dG9uR3JvdXBzLmNwcCAqLzsgfTsKIAkJOTNGOUI2NTcwQkEwRjM1RTAwODU0MDY0IC8qIERPTUhU
TUxDYW52YXNFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTNGOUI2NTQwQkEwRjM1RTAwODU0MDY0IC8qIERPTUhUTUxDYW52YXNFbGVtZW50
Lm1tICovOyB9OwogCQk5M0Y5QjY1ODBCQTBGMzVFMDA4NTQwNjQgLyogRE9NSFRNTENhbnZhc0Vs
ZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTNGOUI2NTUwQkEwRjM1RTAwODU0MDY0IC8qIERPTUhUTUxDYW52YXNFbGVtZW50SW50
ZXJuYWwuaCAqLzsgfTsKIAkJOTNGOUI2RTAwQkEwRkI3MjAwODU0MDY0IC8qIEpTQ29tbWVudC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y5QjZE
RTBCQTBGQjcyMDA4NTQwNjQgLyogSlNDb21tZW50LmNwcCAqLzsgfTsKQEAgLTExNDE2LDggKzEx
NDE2LDggQEAKIAkJOTNGOEIzMDUwQTMwMEZFMTAwRjYxQUI4IC8qIENvZGVHZW5lcmF0b3IucG0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0gQ29kZUdlbmVyYXRvci5wbTsgcGF0
aCA9IHNjcmlwdHMvQ29kZUdlbmVyYXRvci5wbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTNGOEIzMDYwQTMwMEZFQTAwRjYxQUI4IC8qIENvZGVHZW5lcmF0b3JKUy5wbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUgPSBDb2RlR2VuZXJhdG9ySlMucG07IHBhdGggPSAu
Li9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsgd3Jh
cHNMaW5lcyA9IDA7IH07CiAJCTkzRjhCMzA3MEEzMDBGRUEwMEY2MUFCOCAvKiBnZW5lcmF0ZS1i
aW5kaW5ncy5wbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUgPSAiZ2VuZXJhdGUt
YmluZGluZ3MucGwiOyBwYXRoID0gInNjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGwiOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5M0Y5MjU0MTBGN0VGNUI4MDA3RTM3QzkgLyogQ2hl
Y2tlZFJhZGlvQnV0dG9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDaGVj
a2VkUmFkaW9CdXR0b25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTkzRjkyNTQy
MEY3RUY1QjgwMDdFMzdDOSAvKiBDaGVja2VkUmFkaW9CdXR0b25zLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENoZWNrZWRSYWRpb0J1dHRvbnMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk5M0Y5MjU0MTBGN0VGNUI4MDA3RTM3QzkgLyogUmFkaW9C
dXR0b25Hcm91cHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmFkaW9CdXR0
b25Hcm91cHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNGOTI1NDIwRjdFRjVC
ODAwN0UzN0M5IC8qIFJhZGlvQnV0dG9uR3JvdXBzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJhZGlvQnV0dG9uR3JvdXBzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTNGOUI2NTQwQkEwRjM1RTAwODU0MDY0IC8qIERPTUhUTUxDYW52YXNFbGVt
ZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NSFRNTENh
bnZhc0VsZW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRjlCNjU1MEJB
MEYzNUUwMDg1NDA2NCAvKiBET01IVE1MQ2FudmFzRWxlbWVudEludGVybmFsLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUhUTUxDYW52YXNFbGVtZW50SW50ZXJuYWwuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGOUI2REUwQkEwRkI3MjAwODU0MDY0IC8q
IEpTQ29tbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Nv
bW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjQyMzYsOCArMjQyMzYs
NiBAQAogCQkJCTY1NTBCNjk1MDk5REYwMjcwMDkwRDc4MSAvKiBDaGFyYWN0ZXJEYXRhLmNwcCAq
LywKIAkJCQk2NTUwQjY5NjA5OURGMDI3MDA5MEQ3ODEgLyogQ2hhcmFjdGVyRGF0YS5oICovLAog
CQkJCTkzRUVDMUU2MDlDMjg3NzcwMEM1MTVEMSAvKiBDaGFyYWN0ZXJEYXRhLmlkbCAqLywKLQkJ
CQk5M0Y5MjU0MjBGN0VGNUI4MDA3RTM3QzkgLyogQ2hlY2tlZFJhZGlvQnV0dG9ucy5jcHAgKi8s
Ci0JCQkJOTNGOTI1NDEwRjdFRjVCODAwN0UzN0M5IC8qIENoZWNrZWRSYWRpb0J1dHRvbnMuaCAq
LywKIAkJCQlENjE5QTMwNTE0NEUwMEJFMDA0QkMzMDIgLyogQ2hpbGRMaXN0TXV0YXRpb25TY29w
ZS5jcHAgKi8sCiAJCQkJRDYxOUEzMDYxNDRFMDBCRTAwNEJDMzAyIC8qIENoaWxkTGlzdE11dGF0
aW9uU2NvcGUuaCAqLywKIAkJCQk4M0QyNkQzQzFBRkRDQzUwMDAxQjM4NzMgLyogQ2hpbGROb2Rl
LmlkbCAqLywKQEAgLTI0NTE2LDYgKzI0NTE0LDggQEAKIAkJCQlGRjk0NUVDQTE2MUY3RjM2MDA5
NzFCQzggLyogUHNldWRvRWxlbWVudC5oICovLAogCQkJCTU1MEEwQkM3MDg1RjYwMzkwMDczNTNE
NiAvKiBRdWFsaWZpZWROYW1lLmNwcCAqLywKIAkJCQk1NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYg
LyogUXVhbGlmaWVkTmFtZS5oICovLAorCQkJCTkzRjkyNTQyMEY3RUY1QjgwMDdFMzdDOSAvKiBS
YWRpb0J1dHRvbkdyb3Vwcy5jcHAgKi8sCisJCQkJOTNGOTI1NDEwRjdFRjVCODAwN0UzN0M5IC8q
IFJhZGlvQnV0dG9uR3JvdXBzLmggKi8sCiAJCQkJRjUyM0QzMDMwMkRFNDQ3NjAxODYzNUNBIC8q
IFJhbmdlLmNwcCAqLywKIAkJCQlGNTIzRDMwNDAyREU0NDc2MDE4NjM1Q0EgLyogUmFuZ2UuaCAq
LywKIAkJCQk5MzZERDAzQTA5Q0VBQzI3MDA1NkFFOEMgLyogUmFuZ2UuaWRsICovLApAQCAtMjUy
NzYsNyArMjUyNzYsNyBAQAogCQkJCTk3QjhGRkQxMTZBRTdGOTYwMDM4Mzg4RCAvKiBDaGFyYWN0
ZXJSZWZlcmVuY2VQYXJzZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMzREEyQTBE
MDA2QzFEMDBFRjZGMjYgLyogQ2hhcnNldERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUY1NUIz
REIyMTI1MUYxMkQwMDNFRjI2OSAvKiBDaGVja2JveElucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJOTNGOTI1NDMwRjdFRjVCODAwN0UzN0M5IC8qIENoZWNrZWRSYWRpb0J1dHRvbnMuaCBp
biBIZWFkZXJzICovLAorCQkJCTkzRjkyNTQzMEY3RUY1QjgwMDdFMzdDOSAvKiBSYWRpb0J1dHRv
bkdyb3Vwcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDYxOUEzMDgxNDRFMDBCRTAwNEJDMzAyIC8q
IENoaWxkTGlzdE11dGF0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTg3MjIwMDk3
N0QzQzAwMDU4MjZEOSAvKiBDaGlsZE5vZGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEQ4
MjM1MjBBRjkyQTc5MDAwNEYwNTcgLyogQ2hyb21lLmggaW4gSGVhZGVycyAqLywKQEAgLTI5MjIw
LDcgKzI5MjIwLDcgQEAKIAkJCQk2NTUwQjY5RjA5OURGMDI3MDA5MEQ3ODEgLyogQ2hhcmFjdGVy
RGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzI2REMwQzA5REFENUQ2MDBBRkM4NDcgLyog
Q2hhcnNldERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjU1QjNEQjExMjUxRjEyRDAwM0VG
MjY5IC8qIENoZWNrYm94SW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTkzRjkyNTQ0
MEY3RUY1QjgwMDdFMzdDOSAvKiBDaGVja2VkUmFkaW9CdXR0b25zLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTkzRjkyNTQ0MEY3RUY1QjgwMDdFMzdDOSAvKiBSYWRpb0J1dHRvbkdyb3Vwcy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlENjE5QTMwNzE0NEUwMEJFMDA0QkMzMDIgLyogQ2hpbGRMaXN0
TXV0YXRpb25TY29wZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODE4NzIyNTA5NzdEM0MwMDA1
ODI2RDkgLyogQ2hpbGROb2RlTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNEQ4MjM4QjBB
RjkyREY2MDAwNEYwNTcgLyogQ2hyb21lLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0NoZWNrZWRSYWRpb0J1dHRvbnMuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0NoZWNrZWRSYWRpb0J1dHRvbnMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA3MDJiOTJiYzRhMDY2MDA5NjgyODk0MWZhZDM3NjBiNTY3MGQ0YWQ4Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9D
aGVja2VkUmFkaW9CdXR0b25zLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4NyArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgot
ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAq
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCi0gKgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJDaGVja2VkUmFk
aW9CdXR0b25zLmgiCi0jaW5jbHVkZSAiUmFuZ2UuaCIKLQotI2luY2x1ZGUgIkhUTUxJbnB1dEVs
ZW1lbnQuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLWNsYXNzIFJhZGlvQnV0dG9uR3JvdXAgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwotcHVibGljOgotICAgIFJhZGlvQnV0dG9uR3JvdXAoKTsKLSAgICBib29sIGlzRW1wdHkoKSBj
b25zdCB7IHJldHVybiBtX21lbWJlcnMuaXNFbXB0eSgpOyB9Ci0gICAgYm9vbCBpc1JlcXVpcmVk
KCkgY29uc3QgeyByZXR1cm4gbV9yZXF1aXJlZENvdW50OyB9Ci0gICAgSFRNTElucHV0RWxlbWVu
dCogY2hlY2tlZEJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIG1fY2hlY2tlZEJ1dHRvbjsgfQotICAg
IHZvaWQgYWRkKEhUTUxJbnB1dEVsZW1lbnQqKTsKLSAgICB2b2lkIHVwZGF0ZUNoZWNrZWRTdGF0
ZShIVE1MSW5wdXRFbGVtZW50Kik7Ci0gICAgdm9pZCByZXF1aXJlZEF0dHJpYnV0ZUNoYW5nZWQo
SFRNTElucHV0RWxlbWVudCopOwotICAgIHZvaWQgcmVtb3ZlKEhUTUxJbnB1dEVsZW1lbnQqKTsK
LSAgICBib29sIGNvbnRhaW5zKEhUTUxJbnB1dEVsZW1lbnQqKSBjb25zdDsKLSAgICBWZWN0b3I8
SFRNTElucHV0RWxlbWVudCo+IG1lbWJlcnMoKSBjb25zdDsKLSAgICAKLXByaXZhdGU6Ci0gICAg
dm9pZCB1cGRhdGVWYWxpZGl0eUZvckFsbEJ1dHRvbnMoKTsKLSAgICBib29sIGlzVmFsaWQoKSBj
b25zdDsKLSAgICB2b2lkIHNldENoZWNrZWRCdXR0b24oSFRNTElucHV0RWxlbWVudCopOwotCi0g
ICAgSGFzaFNldDxIVE1MSW5wdXRFbGVtZW50Kj4gbV9tZW1iZXJzOwotICAgIEhUTUxJbnB1dEVs
ZW1lbnQqIG1fY2hlY2tlZEJ1dHRvbjsKLSAgICBzaXplX3QgbV9yZXF1aXJlZENvdW50OwotfTsK
LQotUmFkaW9CdXR0b25Hcm91cDo6UmFkaW9CdXR0b25Hcm91cCgpCi0gICAgOiBtX2NoZWNrZWRC
dXR0b24obnVsbHB0cikKLSAgICAsIG1fcmVxdWlyZWRDb3VudCgwKQotewotfQotCi1pbmxpbmUg
Ym9vbCBSYWRpb0J1dHRvbkdyb3VwOjppc1ZhbGlkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gIWlz
UmVxdWlyZWQoKSB8fCBtX2NoZWNrZWRCdXR0b247Ci19Ci0KLVZlY3RvcjxIVE1MSW5wdXRFbGVt
ZW50Kj4gUmFkaW9CdXR0b25Hcm91cDo6bWVtYmVycygpIGNvbnN0Ci17Ci0gICAgVmVjdG9yPEhU
TUxJbnB1dEVsZW1lbnQqPiBtZW1iZXJzOwotICAgIGNvcHlUb1ZlY3RvcihtX21lbWJlcnMsIG1l
bWJlcnMpOwotICAgIHN0ZDo6c29ydChtZW1iZXJzLmJlZ2luKCksIG1lbWJlcnMuZW5kKCksIGRv
Y3VtZW50T3JkZXJDb21wYXJhdG9yKTsKLSAgICByZXR1cm4gbWVtYmVyczsKLX0KLSAgICAKLXZv
aWQgUmFkaW9CdXR0b25Hcm91cDo6c2V0Q2hlY2tlZEJ1dHRvbihIVE1MSW5wdXRFbGVtZW50KiBi
dXR0b24pCi17Ci0gICAgSFRNTElucHV0RWxlbWVudCogb2xkQ2hlY2tlZEJ1dHRvbiA9IG1fY2hl
Y2tlZEJ1dHRvbjsKLSAgICBpZiAob2xkQ2hlY2tlZEJ1dHRvbiA9PSBidXR0b24pCi0gICAgICAg
IHJldHVybjsKLSAgICBtX2NoZWNrZWRCdXR0b24gPSBidXR0b247Ci0gICAgaWYgKG9sZENoZWNr
ZWRCdXR0b24pCi0gICAgICAgIG9sZENoZWNrZWRCdXR0b24tPnNldENoZWNrZWQoZmFsc2UpOwot
fQotCi12b2lkIFJhZGlvQnV0dG9uR3JvdXA6OmFkZChIVE1MSW5wdXRFbGVtZW50KiBidXR0b24p
Ci17Ci0gICAgQVNTRVJUKGJ1dHRvbi0+aXNSYWRpb0J1dHRvbigpKTsKLSAgICBpZiAoIW1fbWVt
YmVycy5hZGQoYnV0dG9uKS5pc05ld0VudHJ5KQotICAgICAgICByZXR1cm47Ci0gICAgYm9vbCBn
cm91cFdhc1ZhbGlkID0gaXNWYWxpZCgpOwotICAgIGlmIChidXR0b24tPmlzUmVxdWlyZWQoKSkK
LSAgICAgICAgKyttX3JlcXVpcmVkQ291bnQ7Ci0gICAgaWYgKGJ1dHRvbi0+Y2hlY2tlZCgpKQot
ICAgICAgICBzZXRDaGVja2VkQnV0dG9uKGJ1dHRvbik7Ci0KLSAgICBib29sIGdyb3VwSXNWYWxp
ZCA9IGlzVmFsaWQoKTsKLSAgICBpZiAoZ3JvdXBXYXNWYWxpZCAhPSBncm91cElzVmFsaWQpCi0g
ICAgICAgIHVwZGF0ZVZhbGlkaXR5Rm9yQWxsQnV0dG9ucygpOwotICAgIGVsc2UgaWYgKCFncm91
cElzVmFsaWQpIHsKLSAgICAgICAgLy8gQSByYWRpbyBidXR0b24gbm90IGluIGEgZ3JvdXAgaXMg
YWx3YXlzIHZhbGlkLiBXZSBuZWVkIHRvIG1ha2UgaXQKLSAgICAgICAgLy8gaW52YWxpZCBvbmx5
IGlmIHRoZSBncm91cCBpcyBpbnZhbGlkLgotICAgICAgICBidXR0b24tPnVwZGF0ZVZhbGlkaXR5
KCk7Ci0gICAgfQotfQotCi12b2lkIFJhZGlvQnV0dG9uR3JvdXA6OnVwZGF0ZUNoZWNrZWRTdGF0
ZShIVE1MSW5wdXRFbGVtZW50KiBidXR0b24pCi17Ci0gICAgQVNTRVJUKGJ1dHRvbi0+aXNSYWRp
b0J1dHRvbigpKTsKLSAgICBBU1NFUlQobV9tZW1iZXJzLmNvbnRhaW5zKGJ1dHRvbikpOwotICAg
IGJvb2wgd2FzVmFsaWQgPSBpc1ZhbGlkKCk7Ci0gICAgaWYgKGJ1dHRvbi0+Y2hlY2tlZCgpKQot
ICAgICAgICBzZXRDaGVja2VkQnV0dG9uKGJ1dHRvbik7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlm
IChtX2NoZWNrZWRCdXR0b24gPT0gYnV0dG9uKQotICAgICAgICAgICAgbV9jaGVja2VkQnV0dG9u
ID0gbnVsbHB0cjsKLSAgICB9Ci0gICAgaWYgKHdhc1ZhbGlkICE9IGlzVmFsaWQoKSkKLSAgICAg
ICAgdXBkYXRlVmFsaWRpdHlGb3JBbGxCdXR0b25zKCk7Ci19Ci0KLXZvaWQgUmFkaW9CdXR0b25H
cm91cDo6cmVxdWlyZWRBdHRyaWJ1dGVDaGFuZ2VkKEhUTUxJbnB1dEVsZW1lbnQqIGJ1dHRvbikK
LXsKLSAgICBBU1NFUlQoYnV0dG9uLT5pc1JhZGlvQnV0dG9uKCkpOwotICAgIEFTU0VSVChtX21l
bWJlcnMuY29udGFpbnMoYnV0dG9uKSk7Ci0gICAgYm9vbCB3YXNWYWxpZCA9IGlzVmFsaWQoKTsK
LSAgICBpZiAoYnV0dG9uLT5pc1JlcXVpcmVkKCkpCi0gICAgICAgICsrbV9yZXF1aXJlZENvdW50
OwotICAgIGVsc2UgewotICAgICAgICBBU1NFUlQobV9yZXF1aXJlZENvdW50KTsKLSAgICAgICAg
LS1tX3JlcXVpcmVkQ291bnQ7Ci0gICAgfQotICAgIGlmICh3YXNWYWxpZCAhPSBpc1ZhbGlkKCkp
Ci0gICAgICAgIHVwZGF0ZVZhbGlkaXR5Rm9yQWxsQnV0dG9ucygpOwotfQotCi12b2lkIFJhZGlv
QnV0dG9uR3JvdXA6OnJlbW92ZShIVE1MSW5wdXRFbGVtZW50KiBidXR0b24pCi17Ci0gICAgQVNT
RVJUKGJ1dHRvbi0+aXNSYWRpb0J1dHRvbigpKTsKLSAgICBIYXNoU2V0PEhUTUxJbnB1dEVsZW1l
bnQqPjo6aXRlcmF0b3IgaXQgPSBtX21lbWJlcnMuZmluZChidXR0b24pOwotICAgIGlmIChpdCA9
PSBtX21lbWJlcnMuZW5kKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBib29sIHdhc1ZhbGlkID0g
aXNWYWxpZCgpOwotICAgIG1fbWVtYmVycy5yZW1vdmUoaXQpOwotICAgIGlmIChidXR0b24tPmlz
UmVxdWlyZWQoKSkgewotICAgICAgICBBU1NFUlQobV9yZXF1aXJlZENvdW50KTsKLSAgICAgICAg
LS1tX3JlcXVpcmVkQ291bnQ7Ci0gICAgfQotICAgIGlmIChtX2NoZWNrZWRCdXR0b24gPT0gYnV0
dG9uKQotICAgICAgICBtX2NoZWNrZWRCdXR0b24gPSBudWxscHRyOwotCi0gICAgaWYgKG1fbWVt
YmVycy5pc0VtcHR5KCkpIHsKLSAgICAgICAgQVNTRVJUKCFtX3JlcXVpcmVkQ291bnQpOwotICAg
ICAgICBBU1NFUlQoIW1fY2hlY2tlZEJ1dHRvbik7Ci0gICAgfSBlbHNlIGlmICh3YXNWYWxpZCAh
PSBpc1ZhbGlkKCkpCi0gICAgICAgIHVwZGF0ZVZhbGlkaXR5Rm9yQWxsQnV0dG9ucygpOwotICAg
IGlmICghd2FzVmFsaWQpIHsKLSAgICAgICAgLy8gQSByYWRpbyBidXR0b24gbm90IGluIGEgZ3Jv
dXAgaXMgYWx3YXlzIHZhbGlkLiBXZSBuZWVkIHRvIG1ha2UgaXQKLSAgICAgICAgLy8gdmFsaWQg
b25seSBpZiB0aGUgZ3JvdXAgd2FzIGludmFsaWQuCi0gICAgICAgIGJ1dHRvbi0+dXBkYXRlVmFs
aWRpdHkoKTsKLSAgICB9Ci19Ci0KLXZvaWQgUmFkaW9CdXR0b25Hcm91cDo6dXBkYXRlVmFsaWRp
dHlGb3JBbGxCdXR0b25zKCkKLXsKLSAgICBmb3IgKGF1dG8mIGJ1dHRvbiA6IG1fbWVtYmVycykg
ewotICAgICAgICBBU1NFUlQoYnV0dG9uLT5pc1JhZGlvQnV0dG9uKCkpOwotICAgICAgICBidXR0
b24tPnVwZGF0ZVZhbGlkaXR5KCk7Ci0gICAgfQotfQotCi1ib29sIFJhZGlvQnV0dG9uR3JvdXA6
OmNvbnRhaW5zKEhUTUxJbnB1dEVsZW1lbnQqIGJ1dHRvbikgY29uc3QKLXsKLSAgICByZXR1cm4g
bV9tZW1iZXJzLmNvbnRhaW5zKGJ1dHRvbik7Ci19Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gRXhwbGlj
aXR5IGRlZmluZSBlbXB0eSBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3RvciBpbiBvcmRlciB0byBw
cmV2ZW50IHRoZQotLy8gY29tcGlsZXIgZnJvbSBnZW5lcmF0aW5nIHRoZW0gYXMgaW5saW5lcy4g
U28gd2UgZG9uJ3QgbmVlZCB0byB0byBkZWZpbmUKLS8vIFJhZGlvQnV0dG9uR3JvdXAgaW4gdGhl
IGhlYWRlci4KLUNoZWNrZWRSYWRpb0J1dHRvbnM6OkNoZWNrZWRSYWRpb0J1dHRvbnMoKQotewot
fQotCi1DaGVja2VkUmFkaW9CdXR0b25zOjp+Q2hlY2tlZFJhZGlvQnV0dG9ucygpCi17Ci19Ci0K
LXZvaWQgQ2hlY2tlZFJhZGlvQnV0dG9uczo6YWRkQnV0dG9uKEhUTUxJbnB1dEVsZW1lbnQqIGVs
ZW1lbnQpCi17Ci0gICAgQVNTRVJUKGVsZW1lbnQtPmlzUmFkaW9CdXR0b24oKSk7Ci0gICAgaWYg
KGVsZW1lbnQtPm5hbWUoKS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICgh
bV9uYW1lVG9Hcm91cE1hcCkKLSAgICAgICAgbV9uYW1lVG9Hcm91cE1hcCA9IHN0ZDo6bWFrZV91
bmlxdWU8TmFtZVRvR3JvdXBNYXA+KCk7Ci0KLSAgICBhdXRvJiBncm91cCA9IG1fbmFtZVRvR3Jv
dXBNYXAtPmFkZChlbGVtZW50LT5uYW1lKCkuaW1wbCgpLCBudWxscHRyKS5pdGVyYXRvci0+dmFs
dWU7Ci0gICAgaWYgKCFncm91cCkKLSAgICAgICAgZ3JvdXAgPSBzdGQ6Om1ha2VfdW5pcXVlPFJh
ZGlvQnV0dG9uR3JvdXA+KCk7Ci0gICAgZ3JvdXAtPmFkZChlbGVtZW50KTsKLX0KLQotVmVjdG9y
PEhUTUxJbnB1dEVsZW1lbnQqPiBDaGVja2VkUmFkaW9CdXR0b25zOjpncm91cE1lbWJlcnMoY29u
c3QgSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCkgY29uc3QKLXsKLSAgICBBU1NFUlQoZWxlbWVu
dC5pc1JhZGlvQnV0dG9uKCkpOwotICAgIGlmICghZWxlbWVudC5pc1JhZGlvQnV0dG9uKCkpCi0g
ICAgICAgIHJldHVybiB7IH07Ci0gICAgCi0gICAgYXV0byogbmFtZSA9IGVsZW1lbnQubmFtZSgp
LmltcGwoKTsKLSAgICBpZiAoIW5hbWUpCi0gICAgICAgIHJldHVybiB7IH07Ci0KLSAgICBhdXRv
KiBncm91cCA9IG1fbmFtZVRvR3JvdXBNYXAtPmdldChuYW1lKTsKLSAgICBpZiAoIWdyb3VwKQot
ICAgICAgICByZXR1cm4geyB9OwotICAgIHJldHVybiBncm91cC0+bWVtYmVycygpOwotfQotICAg
IAotdm9pZCBDaGVja2VkUmFkaW9CdXR0b25zOjp1cGRhdGVDaGVja2VkU3RhdGUoSFRNTElucHV0
RWxlbWVudCogZWxlbWVudCkKLXsKLSAgICBBU1NFUlQoZWxlbWVudC0+aXNSYWRpb0J1dHRvbigp
KTsKLSAgICBpZiAoZWxlbWVudC0+bmFtZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIEFTU0VSVChtX25hbWVUb0dyb3VwTWFwKTsKLSAgICBpZiAoIW1fbmFtZVRvR3JvdXBNYXAp
Ci0gICAgICAgIHJldHVybjsKLSAgICBSYWRpb0J1dHRvbkdyb3VwKiBncm91cCA9IG1fbmFtZVRv
R3JvdXBNYXAtPmdldChlbGVtZW50LT5uYW1lKCkuaW1wbCgpKTsKLSAgICBBU1NFUlQoZ3JvdXAp
OwotICAgIGdyb3VwLT51cGRhdGVDaGVja2VkU3RhdGUoZWxlbWVudCk7Ci19Ci0KLXZvaWQgQ2hl
Y2tlZFJhZGlvQnV0dG9uczo6cmVxdWlyZWRBdHRyaWJ1dGVDaGFuZ2VkKEhUTUxJbnB1dEVsZW1l
bnQqIGVsZW1lbnQpCi17Ci0gICAgQVNTRVJUKGVsZW1lbnQtPmlzUmFkaW9CdXR0b24oKSk7Ci0g
ICAgaWYgKGVsZW1lbnQtPm5hbWUoKS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBB
U1NFUlQobV9uYW1lVG9Hcm91cE1hcCk7Ci0gICAgaWYgKCFtX25hbWVUb0dyb3VwTWFwKQotICAg
ICAgICByZXR1cm47Ci0gICAgUmFkaW9CdXR0b25Hcm91cCogZ3JvdXAgPSBtX25hbWVUb0dyb3Vw
TWFwLT5nZXQoZWxlbWVudC0+bmFtZSgpLmltcGwoKSk7Ci0gICAgQVNTRVJUKGdyb3VwKTsKLSAg
ICBncm91cC0+cmVxdWlyZWRBdHRyaWJ1dGVDaGFuZ2VkKGVsZW1lbnQpOwotfQotCi1IVE1MSW5w
dXRFbGVtZW50KiBDaGVja2VkUmFkaW9CdXR0b25zOjpjaGVja2VkQnV0dG9uRm9yR3JvdXAoY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdAotewotICAgIGlmICghbV9uYW1lVG9Hcm91cE1h
cCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgbV9uYW1lVG9Hcm91cE1hcC0+Y2hlY2tDb25zaXN0
ZW5jeSgpOwotICAgIFJhZGlvQnV0dG9uR3JvdXAqIGdyb3VwID0gbV9uYW1lVG9Hcm91cE1hcC0+
Z2V0KG5hbWUuaW1wbCgpKTsKLSAgICByZXR1cm4gZ3JvdXAgPyBncm91cC0+Y2hlY2tlZEJ1dHRv
bigpIDogbnVsbHB0cjsKLX0KLQotYm9vbCBDaGVja2VkUmFkaW9CdXR0b25zOjppc0luUmVxdWly
ZWRHcm91cChIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KSBjb25zdAotewotICAgIEFTU0VSVChl
bGVtZW50LT5pc1JhZGlvQnV0dG9uKCkpOwotICAgIGlmIChlbGVtZW50LT5uYW1lKCkuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFtX25hbWVUb0dyb3VwTWFwKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgUmFkaW9CdXR0b25Hcm91cCogZ3JvdXAgPSBtX25h
bWVUb0dyb3VwTWFwLT5nZXQoZWxlbWVudC0+bmFtZSgpLmltcGwoKSk7Ci0gICAgcmV0dXJuIGdy
b3VwICYmIGdyb3VwLT5pc1JlcXVpcmVkKCkgJiYgZ3JvdXAtPmNvbnRhaW5zKGVsZW1lbnQpOwot
fQotCi12b2lkIENoZWNrZWRSYWRpb0J1dHRvbnM6OnJlbW92ZUJ1dHRvbihIVE1MSW5wdXRFbGVt
ZW50KiBlbGVtZW50KQotewotICAgIEFTU0VSVChlbGVtZW50LT5pc1JhZGlvQnV0dG9uKCkpOwot
ICAgIGlmIChlbGVtZW50LT5uYW1lKCkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0gICAg
aWYgKCFtX25hbWVUb0dyb3VwTWFwKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX25hbWVUb0dy
b3VwTWFwLT5jaGVja0NvbnNpc3RlbmN5KCk7Ci0gICAgTmFtZVRvR3JvdXBNYXA6Oml0ZXJhdG9y
IGl0ID0gbV9uYW1lVG9Hcm91cE1hcC0+ZmluZChlbGVtZW50LT5uYW1lKCkuaW1wbCgpKTsKLSAg
ICBpZiAoaXQgPT0gbV9uYW1lVG9Hcm91cE1hcC0+ZW5kKCkpCi0gICAgICAgIHJldHVybjsKLSAg
ICBpdC0+dmFsdWUtPnJlbW92ZShlbGVtZW50KTsKLSAgICBpZiAoaXQtPnZhbHVlLT5pc0VtcHR5
KCkpIHsKLSAgICAgICAgLy8gRklYTUU6IFdlIG1heSBza2lwIGRlYWxsb2NhdGluZyB0aGUgZW1w
dHkgUmFkaW9CdXR0b25Hcm91cCBmb3IKLSAgICAgICAgLy8gcGVyZm9ybWFuY2UgaW1wcm92ZW1l
bnQuIElmIHdlIGRvIHNvLCB3ZSBuZWVkIHRvIGNoYW5nZSB0aGUga2V5IHR5cGUKLSAgICAgICAg
Ly8gb2YgbV9uYW1lVG9Hcm91cE1hcCBmcm9tIEF0b21pY1N0cmluZ0ltcGwqIHRvIFJlZlB0cjxB
dG9taWNTdHJpbmdJbXBsPi4KLSAgICAgICAgbV9uYW1lVG9Hcm91cE1hcC0+cmVtb3ZlKGl0KTsK
LSAgICAgICAgaWYgKG1fbmFtZVRvR3JvdXBNYXAtPmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1f
bmFtZVRvR3JvdXBNYXAgPSBudWxscHRyOwotICAgIH0KLX0KLQotfSAvLyBuYW1lc3BhY2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGVja2VkUmFkaW9CdXR0b25zLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ2hlY2tlZFJhZGlvQnV0dG9ucy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBjNTk1YTQxNjRkM2UyYzQ5NGMxYTY0MmRmZmU5ZjQ2NTBmMWQzN2NkLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9DaGVja2VkUmFkaW9CdXR0b25zLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0g
KgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
LSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCi0gKgotICovCi0KLSNpZm5kZWYgQ2hlY2tlZFJhZGlvQnV0dG9uc19oCi0jZGVmaW5l
IENoZWNrZWRSYWRpb0J1dHRvbnNfaAotCi0jaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgSFRNTElucHV0RWxlbWVudDsK
LWNsYXNzIFJhZGlvQnV0dG9uR3JvdXA7Ci0KLS8vIEZJWE1FOiBSZW5hbWUgdGhlIGNsYXNzLiBU
aGUgY2xhc3Mgd2FzIGEgc2ltcGxlIG1hcCBmcm9tIGEgbmFtZSB0byBhIGNoZWNrZWQKLS8vIHJh
ZGlvIGJ1dHRvbi4gSXQgbWFuYWdlcyBSYWRpb0J1dHRvbkdyb3VwIG9iamVjdHMgbm93LgotY2xh
c3MgQ2hlY2tlZFJhZGlvQnV0dG9ucyB7Ci1wdWJsaWM6Ci0gICAgQ2hlY2tlZFJhZGlvQnV0dG9u
cygpOwotICAgIH5DaGVja2VkUmFkaW9CdXR0b25zKCk7Ci0gICAgdm9pZCBhZGRCdXR0b24oSFRN
TElucHV0RWxlbWVudCopOwotICAgIHZvaWQgdXBkYXRlQ2hlY2tlZFN0YXRlKEhUTUxJbnB1dEVs
ZW1lbnQqKTsKLSAgICB2b2lkIHJlcXVpcmVkQXR0cmlidXRlQ2hhbmdlZChIVE1MSW5wdXRFbGVt
ZW50Kik7Ci0gICAgdm9pZCByZW1vdmVCdXR0b24oSFRNTElucHV0RWxlbWVudCopOwotICAgIEhU
TUxJbnB1dEVsZW1lbnQqIGNoZWNrZWRCdXR0b25Gb3JHcm91cChjb25zdCBBdG9taWNTdHJpbmcm
IGdyb3VwTmFtZSkgY29uc3Q7Ci0gICAgYm9vbCBpc0luUmVxdWlyZWRHcm91cChIVE1MSW5wdXRF
bGVtZW50KikgY29uc3Q7Ci0gICAgVmVjdG9yPEhUTUxJbnB1dEVsZW1lbnQqPiBncm91cE1lbWJl
cnMoY29uc3QgSFRNTElucHV0RWxlbWVudCYpIGNvbnN0OwotICAgIAotcHJpdmF0ZToKLSAgICB0
eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIHN0ZDo6dW5pcXVlX3B0cjxSYWRpb0J1
dHRvbkdyb3VwPj4gTmFtZVRvR3JvdXBNYXA7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPE5hbWVUb0dy
b3VwTWFwPiBtX25hbWVUb0dyb3VwTWFwOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gQ2hlY2tlZFJhZGlvQnV0dG9uc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRE9NQWxsSW5PbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25l
LmNwcAppbmRleCA3MjAzMGRjNzhkMzVhNWMzMDlkMGZkOTAwNjBlMDlmNTYwNGYzYjg1Li4yMGJk
MzM5OWQ1Yzc5NTFiNGZlMTQyNGE2MDYzYTNkMjc4Y2MxOWU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01B
bGxJbk9uZS5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJCZWZvcmVVbmxvYWRFdmVu
dC5jcHAiCiAjaW5jbHVkZSAiQ0RBVEFTZWN0aW9uLmNwcCIKICNpbmNsdWRlICJDaGFyYWN0ZXJE
YXRhLmNwcCIKLSNpbmNsdWRlICJDaGVja2VkUmFkaW9CdXR0b25zLmNwcCIKICNpbmNsdWRlICJD
aGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcCIKICNpbmNsdWRlICJDaGlsZE5vZGVMaXN0LmNwcCIK
ICNpbmNsdWRlICJDbGFzc0NvbGxlY3Rpb24uY3BwIgpAQCAtMTI5LDYgKzEyOCw3IEBACiAvLyBC
dWlsZCBlcnJvciBpZiBhZGRpbmcgUXVhbGlmaWVkTmFtZS5jcHAgdG8gRE9NQWxsSW5PbmUuY3Bw
CiAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2NTg2CiAvLyAj
aW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5jcHAiCisjaW5jbHVkZSAiUmFkaW9CdXR0b25Hcm91cHMu
Y3BwIgogI2luY2x1ZGUgIlJhbmdlLmNwcCIKICNpbmNsdWRlICJSZWdpc3RlcmVkRXZlbnRMaXN0
ZW5lci5jcHAiCiAjaW5jbHVkZSAiU2NvcGVkRXZlbnRRdWV1ZS5jcHAiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vUmFkaW9CdXR0b25Hcm91cHMuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1JhZGlvQnV0dG9uR3JvdXBzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYTU3NWUwYjdkYmFiYWE4MWJl
YTFjNDlmZmEzMzRlNDZiY2U0YjNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1JhZGlvQnV0dG9uR3JvdXBzLmNwcApAQCAtMCwwICsxLDI4NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmFkaW9CdXR0b25Hcm91cHMuaCIK
KworI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKKyNpbmNsdWRlICJSYW5nZS5oIgorI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmFk
aW9CdXR0b25Hcm91cCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6Cisg
ICAgUmFkaW9CdXR0b25Hcm91cCgpOworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWVtYmVycy5pc0VtcHR5KCk7IH0KKyAgICBib29sIGlzUmVxdWlyZWQoKSBjb25zdCB7IHJl
dHVybiBtX3JlcXVpcmVkQ291bnQ7IH0KKyAgICBIVE1MSW5wdXRFbGVtZW50KiBjaGVja2VkQnV0
dG9uKCkgY29uc3QgeyByZXR1cm4gbV9jaGVja2VkQnV0dG9uOyB9CisgICAgdm9pZCBhZGQoSFRN
TElucHV0RWxlbWVudCopOworICAgIHZvaWQgdXBkYXRlQ2hlY2tlZFN0YXRlKEhUTUxJbnB1dEVs
ZW1lbnQqKTsKKyAgICB2b2lkIHJlcXVpcmVkQXR0cmlidXRlQ2hhbmdlZChIVE1MSW5wdXRFbGVt
ZW50Kik7CisgICAgdm9pZCByZW1vdmUoSFRNTElucHV0RWxlbWVudCopOworICAgIGJvb2wgY29u
dGFpbnMoSFRNTElucHV0RWxlbWVudCopIGNvbnN0OworICAgIFZlY3RvcjxIVE1MSW5wdXRFbGVt
ZW50Kj4gbWVtYmVycygpIGNvbnN0OworCitwcml2YXRlOgorICAgIHZvaWQgdXBkYXRlVmFsaWRp
dHlGb3JBbGxCdXR0b25zKCk7CisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CisgICAgdm9pZCBz
ZXRDaGVja2VkQnV0dG9uKEhUTUxJbnB1dEVsZW1lbnQqKTsKKworICAgIEhhc2hTZXQ8SFRNTElu
cHV0RWxlbWVudCo+IG1fbWVtYmVyczsKKyAgICBIVE1MSW5wdXRFbGVtZW50KiBtX2NoZWNrZWRC
dXR0b247CisgICAgc2l6ZV90IG1fcmVxdWlyZWRDb3VudDsKK307CisKK1JhZGlvQnV0dG9uR3Jv
dXA6OlJhZGlvQnV0dG9uR3JvdXAoKQorICAgIDogbV9jaGVja2VkQnV0dG9uKG51bGxwdHIpCisg
ICAgLCBtX3JlcXVpcmVkQ291bnQoMCkKK3sKK30KKworaW5saW5lIGJvb2wgUmFkaW9CdXR0b25H
cm91cDo6aXNWYWxpZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFpc1JlcXVpcmVkKCkgfHwgbV9j
aGVja2VkQnV0dG9uOworfQorCitWZWN0b3I8SFRNTElucHV0RWxlbWVudCo+IFJhZGlvQnV0dG9u
R3JvdXA6Om1lbWJlcnMoKSBjb25zdAoreworICAgIFZlY3RvcjxIVE1MSW5wdXRFbGVtZW50Kj4g
bWVtYmVyczsKKyAgICBjb3B5VG9WZWN0b3IobV9tZW1iZXJzLCBtZW1iZXJzKTsKKyAgICBzdGQ6
OnNvcnQobWVtYmVycy5iZWdpbigpLCBtZW1iZXJzLmVuZCgpLCBkb2N1bWVudE9yZGVyQ29tcGFy
YXRvcik7CisgICAgcmV0dXJuIG1lbWJlcnM7Cit9CisKK3ZvaWQgUmFkaW9CdXR0b25Hcm91cDo6
c2V0Q2hlY2tlZEJ1dHRvbihIVE1MSW5wdXRFbGVtZW50KiBidXR0b24pCit7CisgICAgSFRNTElu
cHV0RWxlbWVudCogb2xkQ2hlY2tlZEJ1dHRvbiA9IG1fY2hlY2tlZEJ1dHRvbjsKKyAgICBpZiAo
b2xkQ2hlY2tlZEJ1dHRvbiA9PSBidXR0b24pCisgICAgICAgIHJldHVybjsKKyAgICBtX2NoZWNr
ZWRCdXR0b24gPSBidXR0b247CisgICAgaWYgKG9sZENoZWNrZWRCdXR0b24pCisgICAgICAgIG9s
ZENoZWNrZWRCdXR0b24tPnNldENoZWNrZWQoZmFsc2UpOworfQorCit2b2lkIFJhZGlvQnV0dG9u
R3JvdXA6OmFkZChIVE1MSW5wdXRFbGVtZW50KiBidXR0b24pCit7CisgICAgQVNTRVJUKGJ1dHRv
bi0+aXNSYWRpb0J1dHRvbigpKTsKKyAgICBpZiAoIW1fbWVtYmVycy5hZGQoYnV0dG9uKS5pc05l
d0VudHJ5KQorICAgICAgICByZXR1cm47CisgICAgYm9vbCBncm91cFdhc1ZhbGlkID0gaXNWYWxp
ZCgpOworICAgIGlmIChidXR0b24tPmlzUmVxdWlyZWQoKSkKKyAgICAgICAgKyttX3JlcXVpcmVk
Q291bnQ7CisgICAgaWYgKGJ1dHRvbi0+Y2hlY2tlZCgpKQorICAgICAgICBzZXRDaGVja2VkQnV0
dG9uKGJ1dHRvbik7CisKKyAgICBib29sIGdyb3VwSXNWYWxpZCA9IGlzVmFsaWQoKTsKKyAgICBp
ZiAoZ3JvdXBXYXNWYWxpZCAhPSBncm91cElzVmFsaWQpCisgICAgICAgIHVwZGF0ZVZhbGlkaXR5
Rm9yQWxsQnV0dG9ucygpOworICAgIGVsc2UgaWYgKCFncm91cElzVmFsaWQpIHsKKyAgICAgICAg
Ly8gQSByYWRpbyBidXR0b24gbm90IGluIGEgZ3JvdXAgaXMgYWx3YXlzIHZhbGlkLiBXZSBuZWVk
IHRvIG1ha2UgaXQKKyAgICAgICAgLy8gaW52YWxpZCBvbmx5IGlmIHRoZSBncm91cCBpcyBpbnZh
bGlkLgorICAgICAgICBidXR0b24tPnVwZGF0ZVZhbGlkaXR5KCk7CisgICAgfQorfQorCit2b2lk
IFJhZGlvQnV0dG9uR3JvdXA6OnVwZGF0ZUNoZWNrZWRTdGF0ZShIVE1MSW5wdXRFbGVtZW50KiBi
dXR0b24pCit7CisgICAgQVNTRVJUKGJ1dHRvbi0+aXNSYWRpb0J1dHRvbigpKTsKKyAgICBBU1NF
UlQobV9tZW1iZXJzLmNvbnRhaW5zKGJ1dHRvbikpOworICAgIGJvb2wgd2FzVmFsaWQgPSBpc1Zh
bGlkKCk7CisgICAgaWYgKGJ1dHRvbi0+Y2hlY2tlZCgpKQorICAgICAgICBzZXRDaGVja2VkQnV0
dG9uKGJ1dHRvbik7CisgICAgZWxzZSB7CisgICAgICAgIGlmIChtX2NoZWNrZWRCdXR0b24gPT0g
YnV0dG9uKQorICAgICAgICAgICAgbV9jaGVja2VkQnV0dG9uID0gbnVsbHB0cjsKKyAgICB9Cisg
ICAgaWYgKHdhc1ZhbGlkICE9IGlzVmFsaWQoKSkKKyAgICAgICAgdXBkYXRlVmFsaWRpdHlGb3JB
bGxCdXR0b25zKCk7Cit9CisKK3ZvaWQgUmFkaW9CdXR0b25Hcm91cDo6cmVxdWlyZWRBdHRyaWJ1
dGVDaGFuZ2VkKEhUTUxJbnB1dEVsZW1lbnQqIGJ1dHRvbikKK3sKKyAgICBBU1NFUlQoYnV0dG9u
LT5pc1JhZGlvQnV0dG9uKCkpOworICAgIEFTU0VSVChtX21lbWJlcnMuY29udGFpbnMoYnV0dG9u
KSk7CisgICAgYm9vbCB3YXNWYWxpZCA9IGlzVmFsaWQoKTsKKyAgICBpZiAoYnV0dG9uLT5pc1Jl
cXVpcmVkKCkpCisgICAgICAgICsrbV9yZXF1aXJlZENvdW50OworICAgIGVsc2UgeworICAgICAg
ICBBU1NFUlQobV9yZXF1aXJlZENvdW50KTsKKyAgICAgICAgLS1tX3JlcXVpcmVkQ291bnQ7Cisg
ICAgfQorICAgIGlmICh3YXNWYWxpZCAhPSBpc1ZhbGlkKCkpCisgICAgICAgIHVwZGF0ZVZhbGlk
aXR5Rm9yQWxsQnV0dG9ucygpOworfQorCit2b2lkIFJhZGlvQnV0dG9uR3JvdXA6OnJlbW92ZShI
VE1MSW5wdXRFbGVtZW50KiBidXR0b24pCit7CisgICAgQVNTRVJUKGJ1dHRvbi0+aXNSYWRpb0J1
dHRvbigpKTsKKyAgICBIYXNoU2V0PEhUTUxJbnB1dEVsZW1lbnQqPjo6aXRlcmF0b3IgaXQgPSBt
X21lbWJlcnMuZmluZChidXR0b24pOworICAgIGlmIChpdCA9PSBtX21lbWJlcnMuZW5kKCkpCisg
ICAgICAgIHJldHVybjsKKyAgICBib29sIHdhc1ZhbGlkID0gaXNWYWxpZCgpOworICAgIG1fbWVt
YmVycy5yZW1vdmUoaXQpOworICAgIGlmIChidXR0b24tPmlzUmVxdWlyZWQoKSkgeworICAgICAg
ICBBU1NFUlQobV9yZXF1aXJlZENvdW50KTsKKyAgICAgICAgLS1tX3JlcXVpcmVkQ291bnQ7Cisg
ICAgfQorICAgIGlmIChtX2NoZWNrZWRCdXR0b24gPT0gYnV0dG9uKQorICAgICAgICBtX2NoZWNr
ZWRCdXR0b24gPSBudWxscHRyOworCisgICAgaWYgKG1fbWVtYmVycy5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgQVNTRVJUKCFtX3JlcXVpcmVkQ291bnQpOworICAgICAgICBBU1NFUlQoIW1fY2hlY2tl
ZEJ1dHRvbik7CisgICAgfSBlbHNlIGlmICh3YXNWYWxpZCAhPSBpc1ZhbGlkKCkpCisgICAgICAg
IHVwZGF0ZVZhbGlkaXR5Rm9yQWxsQnV0dG9ucygpOworICAgIGlmICghd2FzVmFsaWQpIHsKKyAg
ICAgICAgLy8gQSByYWRpbyBidXR0b24gbm90IGluIGEgZ3JvdXAgaXMgYWx3YXlzIHZhbGlkLiBX
ZSBuZWVkIHRvIG1ha2UgaXQKKyAgICAgICAgLy8gdmFsaWQgb25seSBpZiB0aGUgZ3JvdXAgd2Fz
IGludmFsaWQuCisgICAgICAgIGJ1dHRvbi0+dXBkYXRlVmFsaWRpdHkoKTsKKyAgICB9Cit9CisK
K3ZvaWQgUmFkaW9CdXR0b25Hcm91cDo6dXBkYXRlVmFsaWRpdHlGb3JBbGxCdXR0b25zKCkKK3sK
KyAgICBmb3IgKGF1dG8mIGJ1dHRvbiA6IG1fbWVtYmVycykgeworICAgICAgICBBU1NFUlQoYnV0
dG9uLT5pc1JhZGlvQnV0dG9uKCkpOworICAgICAgICBidXR0b24tPnVwZGF0ZVZhbGlkaXR5KCk7
CisgICAgfQorfQorCitib29sIFJhZGlvQnV0dG9uR3JvdXA6OmNvbnRhaW5zKEhUTUxJbnB1dEVs
ZW1lbnQqIGJ1dHRvbikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZW1iZXJzLmNvbnRhaW5zKGJ1
dHRvbik7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gRXhwbGljaXR5IGRlZmluZSBlbXB0eSBjb25z
dHJ1Y3RvciBhbmQgZGVzdHJ1Y3RvciBpbiBvcmRlciB0byBwcmV2ZW50IHRoZQorLy8gY29tcGls
ZXIgZnJvbSBnZW5lcmF0aW5nIHRoZW0gYXMgaW5saW5lcy4gU28gd2UgZG9uJ3QgbmVlZCB0byB0
byBkZWZpbmUKKy8vIFJhZGlvQnV0dG9uR3JvdXAgaW4gdGhlIGhlYWRlci4KK1JhZGlvQnV0dG9u
R3JvdXBzOjpSYWRpb0J1dHRvbkdyb3VwcygpCit7Cit9CisKK1JhZGlvQnV0dG9uR3JvdXBzOjp+
UmFkaW9CdXR0b25Hcm91cHMoKQoreworfQorCit2b2lkIFJhZGlvQnV0dG9uR3JvdXBzOjphZGRC
dXR0b24oSFRNTElucHV0RWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBBU1NFUlQoZWxlbWVudC0+
aXNSYWRpb0J1dHRvbigpKTsKKyAgICBpZiAoZWxlbWVudC0+bmFtZSgpLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX25hbWVUb0dyb3VwTWFwKQorICAgICAgICBtX25h
bWVUb0dyb3VwTWFwID0gc3RkOjptYWtlX3VuaXF1ZTxOYW1lVG9Hcm91cE1hcD4oKTsKKworICAg
IGF1dG8mIGdyb3VwID0gbV9uYW1lVG9Hcm91cE1hcC0+YWRkKGVsZW1lbnQtPm5hbWUoKS5pbXBs
KCksIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBpZiAoIWdyb3VwKQorICAgICAgICBn
cm91cCA9IHN0ZDo6bWFrZV91bmlxdWU8UmFkaW9CdXR0b25Hcm91cD4oKTsKKyAgICBncm91cC0+
YWRkKGVsZW1lbnQpOworfQorCitWZWN0b3I8SFRNTElucHV0RWxlbWVudCo+IFJhZGlvQnV0dG9u
R3JvdXBzOjpncm91cE1lbWJlcnMoY29uc3QgSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCkgY29u
c3QKK3sKKyAgICBBU1NFUlQoZWxlbWVudC5pc1JhZGlvQnV0dG9uKCkpOworICAgIGlmICghZWxl
bWVudC5pc1JhZGlvQnV0dG9uKCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvKiBu
YW1lID0gZWxlbWVudC5uYW1lKCkuaW1wbCgpOworICAgIGlmICghbmFtZSkKKyAgICAgICAgcmV0
dXJuIHsgfTsKKworICAgIGF1dG8qIGdyb3VwID0gbV9uYW1lVG9Hcm91cE1hcC0+Z2V0KG5hbWUp
OworICAgIGlmICghZ3JvdXApCisgICAgICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuIGdyb3Vw
LT5tZW1iZXJzKCk7Cit9CisKK3ZvaWQgUmFkaW9CdXR0b25Hcm91cHM6OnVwZGF0ZUNoZWNrZWRT
dGF0ZShIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KQoreworICAgIEFTU0VSVChlbGVtZW50LT5p
c1JhZGlvQnV0dG9uKCkpOworICAgIGlmIChlbGVtZW50LT5uYW1lKCkuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm47CisgICAgQVNTRVJUKG1fbmFtZVRvR3JvdXBNYXApOworICAgIGlmICghbV9u
YW1lVG9Hcm91cE1hcCkKKyAgICAgICAgcmV0dXJuOworICAgIFJhZGlvQnV0dG9uR3JvdXAqIGdy
b3VwID0gbV9uYW1lVG9Hcm91cE1hcC0+Z2V0KGVsZW1lbnQtPm5hbWUoKS5pbXBsKCkpOworICAg
IEFTU0VSVChncm91cCk7CisgICAgZ3JvdXAtPnVwZGF0ZUNoZWNrZWRTdGF0ZShlbGVtZW50KTsK
K30KKwordm9pZCBSYWRpb0J1dHRvbkdyb3Vwczo6cmVxdWlyZWRBdHRyaWJ1dGVDaGFuZ2VkKEhU
TUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgQVNTRVJUKGVsZW1lbnQtPmlzUmFkaW9C
dXR0b24oKSk7CisgICAgaWYgKGVsZW1lbnQtPm5hbWUoKS5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybjsKKyAgICBBU1NFUlQobV9uYW1lVG9Hcm91cE1hcCk7CisgICAgaWYgKCFtX25hbWVUb0dy
b3VwTWFwKQorICAgICAgICByZXR1cm47CisgICAgUmFkaW9CdXR0b25Hcm91cCogZ3JvdXAgPSBt
X25hbWVUb0dyb3VwTWFwLT5nZXQoZWxlbWVudC0+bmFtZSgpLmltcGwoKSk7CisgICAgQVNTRVJU
KGdyb3VwKTsKKyAgICBncm91cC0+cmVxdWlyZWRBdHRyaWJ1dGVDaGFuZ2VkKGVsZW1lbnQpOwor
fQorCitIVE1MSW5wdXRFbGVtZW50KiBSYWRpb0J1dHRvbkdyb3Vwczo6Y2hlY2tlZEJ1dHRvbkZv
ckdyb3VwKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QKK3sKKyAgICBpZiAoIW1fbmFt
ZVRvR3JvdXBNYXApCisgICAgICAgIHJldHVybiAwOworICAgIG1fbmFtZVRvR3JvdXBNYXAtPmNo
ZWNrQ29uc2lzdGVuY3koKTsKKyAgICBSYWRpb0J1dHRvbkdyb3VwKiBncm91cCA9IG1fbmFtZVRv
R3JvdXBNYXAtPmdldChuYW1lLmltcGwoKSk7CisgICAgcmV0dXJuIGdyb3VwID8gZ3JvdXAtPmNo
ZWNrZWRCdXR0b24oKSA6IG51bGxwdHI7Cit9CisKK2Jvb2wgUmFkaW9CdXR0b25Hcm91cHM6Omlz
SW5SZXF1aXJlZEdyb3VwKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Cit7CisgICAg
QVNTRVJUKGVsZW1lbnQtPmlzUmFkaW9CdXR0b24oKSk7CisgICAgaWYgKGVsZW1lbnQtPm5hbWUo
KS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1fbmFtZVRvR3Jv
dXBNYXApCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBSYWRpb0J1dHRvbkdyb3VwKiBncm91
cCA9IG1fbmFtZVRvR3JvdXBNYXAtPmdldChlbGVtZW50LT5uYW1lKCkuaW1wbCgpKTsKKyAgICBy
ZXR1cm4gZ3JvdXAgJiYgZ3JvdXAtPmlzUmVxdWlyZWQoKSAmJiBncm91cC0+Y29udGFpbnMoZWxl
bWVudCk7Cit9CisKK3ZvaWQgUmFkaW9CdXR0b25Hcm91cHM6OnJlbW92ZUJ1dHRvbihIVE1MSW5w
dXRFbGVtZW50KiBlbGVtZW50KQoreworICAgIEFTU0VSVChlbGVtZW50LT5pc1JhZGlvQnV0dG9u
KCkpOworICAgIGlmIChlbGVtZW50LT5uYW1lKCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47
CisgICAgaWYgKCFtX25hbWVUb0dyb3VwTWFwKQorICAgICAgICByZXR1cm47CisKKyAgICBtX25h
bWVUb0dyb3VwTWFwLT5jaGVja0NvbnNpc3RlbmN5KCk7CisgICAgTmFtZVRvR3JvdXBNYXA6Oml0
ZXJhdG9yIGl0ID0gbV9uYW1lVG9Hcm91cE1hcC0+ZmluZChlbGVtZW50LT5uYW1lKCkuaW1wbCgp
KTsKKyAgICBpZiAoaXQgPT0gbV9uYW1lVG9Hcm91cE1hcC0+ZW5kKCkpCisgICAgICAgIHJldHVy
bjsKKyAgICBpdC0+dmFsdWUtPnJlbW92ZShlbGVtZW50KTsKKyAgICBpZiAoaXQtPnZhbHVlLT5p
c0VtcHR5KCkpIHsKKyAgICAgICAgLy8gRklYTUU6IFdlIG1heSBza2lwIGRlYWxsb2NhdGluZyB0
aGUgZW1wdHkgUmFkaW9CdXR0b25Hcm91cCBmb3IKKyAgICAgICAgLy8gcGVyZm9ybWFuY2UgaW1w
cm92ZW1lbnQuIElmIHdlIGRvIHNvLCB3ZSBuZWVkIHRvIGNoYW5nZSB0aGUga2V5IHR5cGUKKyAg
ICAgICAgLy8gb2YgbV9uYW1lVG9Hcm91cE1hcCBmcm9tIEF0b21pY1N0cmluZ0ltcGwqIHRvIFJl
ZlB0cjxBdG9taWNTdHJpbmdJbXBsPi4KKyAgICAgICAgbV9uYW1lVG9Hcm91cE1hcC0+cmVtb3Zl
KGl0KTsKKyAgICAgICAgaWYgKG1fbmFtZVRvR3JvdXBNYXAtPmlzRW1wdHkoKSkKKyAgICAgICAg
ICAgIG1fbmFtZVRvR3JvdXBNYXAgPSBudWxscHRyOworICAgIH0KK30KKworfSAvLyBuYW1lc3Bh
Y2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYWRpb0J1dHRvbkdyb3Vwcy5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL1JhZGlvQnV0dG9uR3JvdXBzLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDAxYjE5
NTg0MDZlYmMwMDI0MGVjMGE2ZDEwMzhmNDIwZDc0YTA2YwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9SYWRpb0J1dHRvbkdyb3Vwcy5oCkBAIC0wLDAgKzEsNTAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyAqCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxtZW1vcnk+Cisj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBIVE1MSW5w
dXRFbGVtZW50OworY2xhc3MgUmFkaW9CdXR0b25Hcm91cDsKKworY2xhc3MgUmFkaW9CdXR0b25H
cm91cHMgeworcHVibGljOgorICAgIFJhZGlvQnV0dG9uR3JvdXBzKCk7CisgICAgflJhZGlvQnV0
dG9uR3JvdXBzKCk7CisgICAgdm9pZCBhZGRCdXR0b24oSFRNTElucHV0RWxlbWVudCopOworICAg
IHZvaWQgdXBkYXRlQ2hlY2tlZFN0YXRlKEhUTUxJbnB1dEVsZW1lbnQqKTsKKyAgICB2b2lkIHJl
cXVpcmVkQXR0cmlidXRlQ2hhbmdlZChIVE1MSW5wdXRFbGVtZW50Kik7CisgICAgdm9pZCByZW1v
dmVCdXR0b24oSFRNTElucHV0RWxlbWVudCopOworICAgIEhUTUxJbnB1dEVsZW1lbnQqIGNoZWNr
ZWRCdXR0b25Gb3JHcm91cChjb25zdCBBdG9taWNTdHJpbmcmIGdyb3VwTmFtZSkgY29uc3Q7Cisg
ICAgYm9vbCBpc0luUmVxdWlyZWRHcm91cChIVE1MSW5wdXRFbGVtZW50KikgY29uc3Q7CisgICAg
VmVjdG9yPEhUTUxJbnB1dEVsZW1lbnQqPiBncm91cE1lbWJlcnMoY29uc3QgSFRNTElucHV0RWxl
bWVudCYpIGNvbnN0OworCitwcml2YXRlOgorICAgIHR5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJp
bmdJbXBsKiwgc3RkOjp1bmlxdWVfcHRyPFJhZGlvQnV0dG9uR3JvdXA+PiBOYW1lVG9Hcm91cE1h
cDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TmFtZVRvR3JvdXBNYXA+IG1fbmFtZVRvR3JvdXBNYXA7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0Zvcm1Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9s
bGVyLmgKaW5kZXggMTQ2MjA1NjZhNWNlZjE5MTg0OWZiNGQyYjIzOWEyZTNiMDIzOGY2Yy4uM2I5
YjQxOGJhZDc3YmM1NDgyNzlmNTgwZTE2OTRkODUxYWM4YzkyZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Rm9ybUNvbnRyb2xsZXIuaApAQCAtMjIsNyArMjIsNyBAQAogI2lmbmRlZiBGb3JtQ29udHJvbGxl
cl9oCiAjZGVmaW5lIEZvcm1Db250cm9sbGVyX2gKIAotI2luY2x1ZGUgIkNoZWNrZWRSYWRpb0J1
dHRvbnMuaCIKKyNpbmNsdWRlICJSYWRpb0J1dHRvbkdyb3Vwcy5oIgogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgpAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgRm9ybUNvbnRyb2xsZXIoKTsK
ICAgICB+Rm9ybUNvbnRyb2xsZXIoKTsKIAotICAgIENoZWNrZWRSYWRpb0J1dHRvbnMmIGNoZWNr
ZWRSYWRpb0J1dHRvbnMoKSB7IHJldHVybiBtX2NoZWNrZWRSYWRpb0J1dHRvbnM7IH0KKyAgICBS
YWRpb0J1dHRvbkdyb3VwcyYgcmFkaW9CdXR0b25Hcm91cHMoKSB7IHJldHVybiBtX3JhZGlvQnV0
dG9uR3JvdXBzOyB9CiAKICAgICB2b2lkIHJlZ2lzdGVyRm9ybUVsZW1lbnRXaXRoU3RhdGUoSFRN
TEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZSopOwogICAgIHZvaWQgdW5yZWdpc3RlckZvcm1F
bGVtZW50V2l0aFN0YXRlKEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUqKTsKQEAgLTEw
Miw3ICsxMDIsNyBAQCBwcml2YXRlOgogICAgIEZvcm1Db250cm9sU3RhdGUgdGFrZVN0YXRlRm9y
Rm9ybUVsZW1lbnQoY29uc3QgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZSYpOwogICAg
IHN0YXRpYyB2b2lkIGZvcm1TdGF0ZXNGcm9tU3RhdGVWZWN0b3IoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mLCBTYXZlZEZvcm1TdGF0ZU1hcCYpOwogCi0gICAgQ2hlY2tlZFJhZGlvQnV0dG9ucyBtX2No
ZWNrZWRSYWRpb0J1dHRvbnM7CisgICAgUmFkaW9CdXR0b25Hcm91cHMgbV9yYWRpb0J1dHRvbkdy
b3VwczsKICAgICBGb3JtRWxlbWVudExpc3RIYXNoU2V0IG1fZm9ybUVsZW1lbnRzV2l0aFN0YXRl
OwogICAgIFNhdmVkRm9ybVN0YXRlTWFwIG1fc2F2ZWRGb3JtU3RhdGVNYXA7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPEZvcm1LZXlHZW5lcmF0b3I+IG1fZm9ybUtleUdlbmVyYXRvcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCmluZGV4IDI3NWVlMzYyNTgwZTY0NzMyYTM1N2QxNDA2
YTk2NTdhYzc3ODkzNjIuLmMwNTc2YmVjN2NkYmNjNDExZDViYzRmZmNiYzc5OWFlMWE2NmExMmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaApAQCAtMjQsMTAgKzI0LDEwIEBA
CiAjaWZuZGVmIEhUTUxGb3JtRWxlbWVudF9oCiAjZGVmaW5lIEhUTUxGb3JtRWxlbWVudF9oCiAK
LSNpbmNsdWRlICJDaGVja2VkUmFkaW9CdXR0b25zLmgiCiAjaW5jbHVkZSAiRm9ybVN0YXRlLmgi
CiAjaW5jbHVkZSAiRm9ybVN1Ym1pc3Npb24uaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgor
I2luY2x1ZGUgIlJhZGlvQnV0dG9uR3JvdXBzLmgiCiAjaW5jbHVkZSA8bWVtb3J5PgogCiAjaWYg
RU5BQkxFKElPU19BVVRPQ09SUkVDVF9BTkRfQVVUT0NBUElUQUxJWkUpCkBAIC0xMzEsNyArMTMx
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZmluaXNoUmVxdWVzdEF1dG9jb21wbGV0ZShBdXRvY29t
cGxldGVSZXN1bHQpOwogI2VuZGlmCiAKLSAgICBDaGVja2VkUmFkaW9CdXR0b25zJiBjaGVja2Vk
UmFkaW9CdXR0b25zKCkgeyByZXR1cm4gbV9jaGVja2VkUmFkaW9CdXR0b25zOyB9CisgICAgUmFk
aW9CdXR0b25Hcm91cHMmIHJhZGlvQnV0dG9uR3JvdXBzKCkgeyByZXR1cm4gbV9yYWRpb0J1dHRv
bkdyb3VwczsgfQogCiAgICAgY29uc3QgVmVjdG9yPEZvcm1Bc3NvY2lhdGVkRWxlbWVudCo+JiBh
c3NvY2lhdGVkRWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBtX2Fzc29jaWF0ZWRFbGVtZW50czsg
fQogICAgIGNvbnN0IFZlY3RvcjxIVE1MSW1hZ2VFbGVtZW50Kj4mIGltYWdlRWxlbWVudHMoKSBj
b25zdCB7IHJldHVybiBtX2ltYWdlRWxlbWVudHM7IH0KQEAgLTE4NSw3ICsxODUsNyBAQCBwcml2
YXRlOgogICAgIEZvcm1TdWJtaXNzaW9uOjpBdHRyaWJ1dGVzIG1fYXR0cmlidXRlczsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8UGFzdE5hbWVzTWFwPiBtX3Bhc3ROYW1lc01hcDsKIAotICAgIENoZWNr
ZWRSYWRpb0J1dHRvbnMgbV9jaGVja2VkUmFkaW9CdXR0b25zOworICAgIFJhZGlvQnV0dG9uR3Jv
dXBzIG1fcmFkaW9CdXR0b25Hcm91cHM7CiAKICAgICB1bnNpZ25lZCBtX2Fzc29jaWF0ZWRFbGVt
ZW50c0JlZm9yZUluZGV4OwogICAgIHVuc2lnbmVkIG1fYXNzb2NpYXRlZEVsZW1lbnRzQWZ0ZXJJ
bmRleDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IGFjMmUw
MzNkMGFjMTI5NzBhODc5YjFlZGMwOTM4NDFiZGM5ZTgzYmYuLjJkNDg5NzdiM2ZiNTk0ZTJlYzRh
YWU4MGEyZDVhNTY0OTlhNjFhM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcApAQCAtMTU4LDcgKzE1OCw3IEBAIEhUTUxJbnB1dEVsZW1lbnQ6On5IVE1MSW5wdXRF
bGVtZW50KCkKICAgICAvLyBzZXRGb3JtKDApIG1heSByZWdpc3RlciB0aGlzIHRvIGEgZG9jdW1l
bnQtbGV2ZWwgcmFkaW8gYnV0dG9uIGdyb3VwLgogICAgIC8vIFdlIHNob3VsZCB1bnJlZ2lzdGVy
IGl0IHRvIGF2b2lkIGFjY2Vzc2luZyBhIGRlbGV0ZWQgb2JqZWN0LgogICAgIGlmIChpc1JhZGlv
QnV0dG9uKCkpCi0gICAgICAgIGRvY3VtZW50KCkuZm9ybUNvbnRyb2xsZXIoKS5jaGVja2VkUmFk
aW9CdXR0b25zKCkucmVtb3ZlQnV0dG9uKHRoaXMpOworICAgICAgICBkb2N1bWVudCgpLmZvcm1D
b250cm9sbGVyKCkucmFkaW9CdXR0b25Hcm91cHMoKS5yZW1vdmVCdXR0b24odGhpcyk7CiAjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICBpZiAobV9oYXNUb3VjaEV2ZW50SGFuZGxlcikKICAg
ICAgICAgZG9jdW1lbnQoKS5kaWRSZW1vdmVFdmVudFRhcmdldE5vZGUoKnRoaXMpOwpAQCAtODU0
LDcgKzg1NCw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0Q2hlY2tlZChib29sIG5vd0No
ZWNrZWQsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IgZXZlbnRCCiAgICAgbV9pc0NoZWNrZWQgPSBu
b3dDaGVja2VkOwogICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKIAotICAgIGlmIChDaGVja2Vk
UmFkaW9CdXR0b25zKiBidXR0b25zID0gY2hlY2tlZFJhZGlvQnV0dG9ucygpKQorICAgIGlmIChS
YWRpb0J1dHRvbkdyb3VwcyogYnV0dG9ucyA9IHJhZGlvQnV0dG9uR3JvdXBzKCkpCiAgICAgICAg
ICAgICBidXR0b25zLT51cGRhdGVDaGVja2VkU3RhdGUodGhpcyk7CiAgICAgaWYgKHJlbmRlcmVy
KCkgJiYgcmVuZGVyZXIoKS0+c3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkpCiAgICAgICAgIHJlbmRl
cmVyKCktPnRoZW1lKCkuc3RhdGVDaGFuZ2VkKCpyZW5kZXJlcigpLCBDb250cm9sU3RhdGVzOjpD
aGVja2VkU3RhdGUpOwpAQCAtMTQ5NSw3ICsxNDk1LDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50
OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQpCiAgICAgICAgIGlm
IChuZWVkc1N1c3BlbnNpb25DYWxsYmFjaykKICAgICAgICAgICAgIG9sZERvY3VtZW50LT51bnJl
Z2lzdGVyRm9yRG9jdW1lbnRTdXNwZW5zaW9uQ2FsbGJhY2tzKHRoaXMpOwogICAgICAgICBpZiAo
aXNSYWRpb0J1dHRvbigpKQotICAgICAgICAgICAgb2xkRG9jdW1lbnQtPmZvcm1Db250cm9sbGVy
KCkuY2hlY2tlZFJhZGlvQnV0dG9ucygpLnJlbW92ZUJ1dHRvbih0aGlzKTsKKyAgICAgICAgICAg
IG9sZERvY3VtZW50LT5mb3JtQ29udHJvbGxlcigpLnJhZGlvQnV0dG9uR3JvdXBzKCkucmVtb3Zl
QnV0dG9uKHRoaXMpOwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgICAgIGlmIChtX2hh
c1RvdWNoRXZlbnRIYW5kbGVyKQogICAgICAgICAgICAgb2xkRG9jdW1lbnQtPmRpZFJlbW92ZUV2
ZW50VGFyZ2V0Tm9kZSgqdGhpcyk7CkBAIC0xNTI4LDcgKzE1MjgsNyBAQCBib29sIEhUTUxJbnB1
dEVsZW1lbnQ6OmNvbXB1dGVXaWxsVmFsaWRhdGUoKSBjb25zdAogdm9pZCBIVE1MSW5wdXRFbGVt
ZW50OjpyZXF1aXJlZEF0dHJpYnV0ZUNoYW5nZWQoKQogewogICAgIEhUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50OjpyZXF1aXJlZEF0dHJpYnV0ZUNoYW5nZWQoKTsKLSAgICBpZiAoQ2hlY2tlZFJh
ZGlvQnV0dG9ucyogYnV0dG9ucyA9IGNoZWNrZWRSYWRpb0J1dHRvbnMoKSkKKyAgICBpZiAoUmFk
aW9CdXR0b25Hcm91cHMqIGJ1dHRvbnMgPSByYWRpb0J1dHRvbkdyb3VwcygpKQogICAgICAgICBi
dXR0b25zLT5yZXF1aXJlZEF0dHJpYnV0ZUNoYW5nZWQodGhpcyk7CiAgICAgbV9pbnB1dFR5cGUt
PnJlcXVpcmVkQXR0cmlidXRlQ2hhbmdlZCgpOwogfQpAQCAtMTc3MiwxNCArMTc3MiwxNCBAQCBi
b29sIEhUTUxJbnB1dEVsZW1lbnQ6OnNob3VsZFVzZU1lZGlhQ2FwdHVyZSgpIGNvbnN0CiBib29s
IEhUTUxJbnB1dEVsZW1lbnQ6OmlzSW5SZXF1aXJlZFJhZGlvQnV0dG9uR3JvdXAoKQogewogICAg
IEFTU0VSVChpc1JhZGlvQnV0dG9uKCkpOwotICAgIGlmIChDaGVja2VkUmFkaW9CdXR0b25zKiBi
dXR0b25zID0gY2hlY2tlZFJhZGlvQnV0dG9ucygpKQorICAgIGlmIChSYWRpb0J1dHRvbkdyb3Vw
cyogYnV0dG9ucyA9IHJhZGlvQnV0dG9uR3JvdXBzKCkpCiAgICAgICAgIHJldHVybiBidXR0b25z
LT5pc0luUmVxdWlyZWRHcm91cCh0aGlzKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIFZlY3Rv
cjxIVE1MSW5wdXRFbGVtZW50Kj4gSFRNTElucHV0RWxlbWVudDo6cmFkaW9CdXR0b25Hcm91cCgp
IGNvbnN0CiB7Ci0gICAgQ2hlY2tlZFJhZGlvQnV0dG9ucyogYnV0dG9ucyA9IGNoZWNrZWRSYWRp
b0J1dHRvbnMoKTsKKyAgICBSYWRpb0J1dHRvbkdyb3VwcyogYnV0dG9ucyA9IHJhZGlvQnV0dG9u
R3JvdXBzKCk7CiAgICAgaWYgKCFidXR0b25zKQogICAgICAgICByZXR1cm4geyB9OwogICAgIHJl
dHVybiBidXR0b25zLT5ncm91cE1lbWJlcnMoKnRoaXMpOwpAQCAtMTc4NywzMSArMTc4NywzMSBA
QCBWZWN0b3I8SFRNTElucHV0RWxlbWVudCo+IEhUTUxJbnB1dEVsZW1lbnQ6OnJhZGlvQnV0dG9u
R3JvdXAoKSBjb25zdAogICAgIAogSFRNTElucHV0RWxlbWVudCogSFRNTElucHV0RWxlbWVudDo6
Y2hlY2tlZFJhZGlvQnV0dG9uRm9yR3JvdXAoKSBjb25zdAogewotICAgIGlmIChDaGVja2VkUmFk
aW9CdXR0b25zKiBidXR0b25zID0gY2hlY2tlZFJhZGlvQnV0dG9ucygpKQorICAgIGlmIChSYWRp
b0J1dHRvbkdyb3VwcyogYnV0dG9ucyA9IHJhZGlvQnV0dG9uR3JvdXBzKCkpCiAgICAgICAgIHJl
dHVybiBidXR0b25zLT5jaGVja2VkQnV0dG9uRm9yR3JvdXAobmFtZSgpKTsKICAgICByZXR1cm4g
MDsKIH0KIAotQ2hlY2tlZFJhZGlvQnV0dG9ucyogSFRNTElucHV0RWxlbWVudDo6Y2hlY2tlZFJh
ZGlvQnV0dG9ucygpIGNvbnN0CitSYWRpb0J1dHRvbkdyb3VwcyogSFRNTElucHV0RWxlbWVudDo6
cmFkaW9CdXR0b25Hcm91cHMoKSBjb25zdAogewogICAgIGlmICghaXNSYWRpb0J1dHRvbigpKQog
ICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoSFRNTEZvcm1FbGVtZW50KiBmb3JtRWxlbWVudCA9
IGZvcm0oKSkKLSAgICAgICAgcmV0dXJuICZmb3JtRWxlbWVudC0+Y2hlY2tlZFJhZGlvQnV0dG9u
cygpOworICAgICAgICByZXR1cm4gJmZvcm1FbGVtZW50LT5yYWRpb0J1dHRvbkdyb3VwcygpOwog
ICAgIGlmIChpbkRvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiAmZG9jdW1lbnQoKS5mb3JtQ29u
dHJvbGxlcigpLmNoZWNrZWRSYWRpb0J1dHRvbnMoKTsKKyAgICAgICAgcmV0dXJuICZkb2N1bWVu
dCgpLmZvcm1Db250cm9sbGVyKCkucmFkaW9CdXR0b25Hcm91cHMoKTsKICAgICByZXR1cm4gMDsK
IH0KIAogaW5saW5lIHZvaWQgSFRNTElucHV0RWxlbWVudDo6YWRkVG9SYWRpb0J1dHRvbkdyb3Vw
KCkKIHsKLSAgICBpZiAoQ2hlY2tlZFJhZGlvQnV0dG9ucyogYnV0dG9ucyA9IGNoZWNrZWRSYWRp
b0J1dHRvbnMoKSkKKyAgICBpZiAoUmFkaW9CdXR0b25Hcm91cHMqIGJ1dHRvbnMgPSByYWRpb0J1
dHRvbkdyb3VwcygpKQogICAgICAgICBidXR0b25zLT5hZGRCdXR0b24odGhpcyk7CiB9CiAKIGlu
bGluZSB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnJlbW92ZUZyb21SYWRpb0J1dHRvbkdyb3VwKCkK
IHsKLSAgICBpZiAoQ2hlY2tlZFJhZGlvQnV0dG9ucyogYnV0dG9ucyA9IGNoZWNrZWRSYWRpb0J1
dHRvbnMoKSkKKyAgICBpZiAoUmFkaW9CdXR0b25Hcm91cHMqIGJ1dHRvbnMgPSByYWRpb0J1dHRv
bkdyb3VwcygpKQogICAgICAgICBidXR0b25zLT5yZW1vdmVCdXR0b24odGhpcyk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggZmYxNjdiMmQxM2QwMzU0NWQ1
OGUyOTEyNzIyZjIyZjJiNTZiZmVkNS4uYWRlZTdhYmVjMDYzODUzMGVkNzRlMTUzZTBjOTNhNzI2
N2E2ODhjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTM2LDcg
KzM2LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDaGVja2VkUmFkaW9CdXR0
b25zOwogY2xhc3MgRHJhZ0RhdGE7CiBjbGFzcyBGaWxlTGlzdDsKIGNsYXNzIEhUTUxEYXRhTGlz
dEVsZW1lbnQ7CkBAIC00NSw2ICs0NCw3IEBAIGNsYXNzIEhUTUxPcHRpb25FbGVtZW50OwogY2xh
c3MgSWNvbjsKIGNsYXNzIElucHV0VHlwZTsKIGNsYXNzIExpc3RBdHRyaWJ1dGVUYXJnZXRPYnNl
cnZlcjsKK2NsYXNzIFJhZGlvQnV0dG9uR3JvdXBzOwogY2xhc3MgVGV4dENvbnRyb2xJbm5lclRl
eHRFbGVtZW50OwogY2xhc3MgVVJMOwogc3RydWN0IERhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnM7
CkBAIC00MjEsNyArNDIxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVZhbHVlSWZOZWVk
ZWQoKTsKIAogICAgIC8vIFJldHVybnMgbnVsbCBpZiB0aGlzIGlzbid0IGFzc29jaWF0ZWQgd2l0
aCBhbnkgcmFkaW8gYnV0dG9uIGdyb3VwLgotICAgIENoZWNrZWRSYWRpb0J1dHRvbnMqIGNoZWNr
ZWRSYWRpb0J1dHRvbnMoKSBjb25zdDsKKyAgICBSYWRpb0J1dHRvbkdyb3VwcyogcmFkaW9CdXR0
b25Hcm91cHMoKSBjb25zdDsKICAgICB2b2lkIGFkZFRvUmFkaW9CdXR0b25Hcm91cCgpOwogICAg
IHZvaWQgcmVtb3ZlRnJvbVJhZGlvQnV0dG9uR3JvdXAoKTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>