<?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>245398</bug_id>
          
          <creation_ts>2022-09-19 15:15:35 -0700</creation_ts>
          <short_desc>[LFC][Cleanup] Remove Layout::Box::containingBlock</short_desc>
          <delta_ts>2022-09-21 07:43:18 -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>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1899652</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2022-09-19 15:15:35 -0700</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1899653</commentid>
    <comment_count>1</comment_count>
      <attachid>462455</attachid>
    <who name="alan">zalan</who>
    <bug_when>2022-09-19 15:20:00 -0700</bug_when>
    <thetext>Created attachment 462455
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1899968</commentid>
    <comment_count>2</comment_count>
      <attachid>462481</attachid>
    <who name="alan">zalan</who>
    <bug_when>2022-09-20 17:15:48 -0700</bug_when>
    <thetext>Created attachment 462481
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1900133</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-09-21 07:42:43 -0700</bug_when>
    <thetext>Committed 254727@main (021fa34feec0): &lt;https://commits.webkit.org/254727@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 462481.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1900134</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-09-21 07:43:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/100223715&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>462455</attachid>
            <date>2022-09-19 15:20:00 -0700</date>
            <delta_ts>2022-09-20 17:15:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-245398-20220919151959.patch</filename>
            <type>text/plain</type>
            <size>34584</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA0ZDMwYTcxYjA0NGJiYWIyZjA0YzNkOGE4YzhiZjRhMGRkNzgyMWMzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJ1anRhcyA8emFsYW5AYXBwbGUuY29tPgpEYXRlOiBN
b24sIDE5IFNlcCAyMDIyIDE1OjE1OjQ4IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gW0xGQ11bQ2xl
YW51cF0gUmVtb3ZlIExheW91dDo6Qm94Ojpjb250YWluaW5nQmxvY2sKIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDUzOTgKClJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgoKTGV0J3Mgbm90IGNsdXR0ZXIgTGF5b3V0OjpCb3ggaW50ZXJmYWNlIHdpdGggbGF5b3V0
IHJlbGF0ZWQgZnVuY3Rpb25zLiBNb3ZlIGNvbnRhaW5pbmdCbG9jaygpIHRvIEZvcm1hdHRpbmdD
b250ZXh0LgoKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcDoKKFdlYkNv
cmU6OkxheW91dDo6b3V0cHV0TWlzbWF0Y2hpbmdCbG9ja0JveEluZm9ybWF0aW9uSWZOZWVkZWQp
OgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNwcDoKKFdl
YkNvcmU6OkxheW91dDo6RmxvYXRpbmdDb250ZXh0Ojp2ZXJ0aWNhbFBvc2l0aW9uV2l0aENsZWFy
YW5jZSBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6OkZsb2F0aW5nQ29udGV4dDo6YWJzb2x1dGVD
b29yZGluYXRlcyBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6OkZsb2F0aW5nQ29udGV4dDo6bWFw
UG9pbnRGcm9tRm9ybWF0dGluZ0NvbnRleHRSb290VG9GbG9hdGluZ1N0YXRlUm9vdCBjb25zdCk6
CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nQ29u
dGV4dC5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRPdXRP
ZkZsb3dDb250ZW50KToKKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OmNvbnRh
aW5pbmdCbG9jayk6CihXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0Ojpmb3JtYXR0
aW5nQ29udGV4dFJvb3QpOgooV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6dmFs
aWRhdGVHZW9tZXRyeUNvbnN0cmFpbnRzQWZ0ZXJMYXlvdXQgY29uc3QpOgoqIFNvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0NvbnRleHQuaDoKKiBTb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdHZW9tZXRyeS5j
cHA6CihXZWJDb3JlOjpMYXlvdXQ6OmlzSGVpZ2h0QXV0byk6CihXZWJDb3JlOjpMYXlvdXQ6OkZv
cm1hdHRpbmdHZW9tZXRyeTo6c3RhdGljVmVydGljYWxQb3NpdGlvbkZvck91dE9mRmxvd1Bvc2l0
aW9uZWQgY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nR2VvbWV0cnk6OnN0YXRp
Y0hvcml6b250YWxQb3NpdGlvbkZvck91dE9mRmxvd1Bvc2l0aW9uZWQgY29uc3QpOgooV2ViQ29y
ZTo6TGF5b3V0OjpGb3JtYXR0aW5nR2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkSG9yaXpv
bnRhbEdlb21ldHJ5IGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0dlb21ldHJ5
OjpvdXRPZkZsb3dSZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeSBjb25zdCk6CihXZWJDb3JlOjpM
YXlvdXQ6OkZvcm1hdHRpbmdHZW9tZXRyeTo6aW5GbG93UG9zaXRpb25lZFBvc2l0aW9uT2Zmc2V0
IGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6dXNlZFdyaXRpbmdNb2RlKToKKiBTb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdRdWlya3MuY3BwOgooV2Vi
Q29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nUXVpcmtzOjpoZWlnaHRWYWx1ZU9mTmVhcmVzdENvbnRh
aW5pbmdCbG9ja1dpdGhGaXhlZEhlaWdodCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcDoKKFdl
YkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVu
dCk6CihXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OnByZWNvbXB1dGVW
ZXJ0aWNhbFBvc2l0aW9uRm9yQm94QW5kQW5jZXN0b3JzKToKKFdlYkNvcmU6OkxheW91dDo6Qmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6dmVydGljYWxQb3NpdGlvbldpdGhNYXJnaW4gY29uc3QpOgoq
IFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3Jt
YXR0aW5nR2VvbWV0cnkuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdHZW9t
ZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRDb250ZW50V2lkdGhBbmRNYXJnaW4gY29uc3QpOgoqIFNv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0
aW5nUXVpcmtzLmNwcDoKKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nUXVpcmtzOjpz
aG91bGRDb2xsYXBzZU1hcmdpbkJlZm9yZVdpdGhQYXJlbnRNYXJnaW5CZWZvcmUpOgooV2ViQ29y
ZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdRdWlya3M6OnNob3VsZENvbGxhcHNlTWFyZ2luQWZ0
ZXJXaXRoUGFyZW50TWFyZ2luQWZ0ZXIpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvYmxvY2svQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHA6CihXZWJDb3JlOjpMYXlv
dXQ6OkJsb2NrTWFyZ2luQ29sbGFwc2U6Om1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQYXJlbnRN
YXJnaW5BZnRlciBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrTWFyZ2luQ29sbGFwc2U6
Om1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5CZWZvcmUgY29uc3QpOgooV2Vi
Q29yZTo6TGF5b3V0OjpCbG9ja01hcmdpbkNvbGxhcHNlOjptYXJnaW5BZnRlckNvbGxhcHNlc1dp
dGhQYXJlbnRNYXJnaW5CZWZvcmUgY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0OjpCbG9ja01hcmdp
bkNvbGxhcHNlOjptYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5BZnRlciBjb25z
dCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9QcmVj
b21wdXRlZEJsb2NrTWFyZ2luQ29sbGFwc2UuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpCbG9ja01h
cmdpbkNvbGxhcHNlOjpwcmVjb21wdXRlZFBvc2l0aXZlTmVnYXRpdmVWYWx1ZXMgY29uc3QpOgoq
IFNvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHA6CihXZWJDb3Jl
OjpMYXlvdXQ6OkJveDo6aXNPdmVyZmxvd1Zpc2libGUgY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0
OjpCb3g6OmNvbnRhaW5pbmdCbG9jayBjb25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUv
bGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94Lmg6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2xh
eW91dHRyZWUvTGF5b3V0Q29udGFpbmluZ0Jsb2NrQ2hhaW5JdGVyYXRvci5oOgooV2ViQ29yZTo6
TGF5b3V0OjpMYXlvdXRDb250YWluaW5nQmxvY2tDaGFpbkl0ZXJhdG9yOjpvcGVyYXRvcisrKToK
KFdlYkNvcmU6OkxheW91dDo6Y29udGFpbmluZ0Jsb2NrQ2hhaW4pOgotLS0KIFNvdXJjZS9XZWJD
b3JlL2xheW91dC9WZXJpZmljYXRpb24uY3BwICAgICAgICB8ICA0ICstCiAuLi4vV2ViQ29yZS9s
YXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5jcHAgfCAgOCArKy0tCiAuLi4vZm9ybWF0dGlu
Z0NvbnRleHRzL0Zvcm1hdHRpbmdDb250ZXh0LmNwcCAgfCA0NyArKysrKysrKysrKysrKysrKy0t
CiAuLi4vZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdDb250ZXh0LmggICAgfCAgMSArCiAu
Li4vZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdHZW9tZXRyeS5jcHAgfCAxOCArKystLS0t
CiAuLi4vZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdRdWlya3MuY3BwICAgfCAgMiArLQog
Li4uL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwICAgICAgICAgIHwgIDggKystLQog
Li4uL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0dlb21ldHJ5LmNwcCAgICAgICAgIHwgIDIgKy0KIC4u
Li9ibG9jay9CbG9ja0Zvcm1hdHRpbmdRdWlya3MuY3BwICAgICAgICAgICB8ICA0ICstCiAuLi4v
YmxvY2svQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAgICAgICAgICAgICAgfCAgOCArKy0tCiAuLi4v
YmxvY2svUHJlY29tcHV0ZWRCbG9ja01hcmdpbkNvbGxhcHNlLmNwcCAgfCAgMiArLQogLi4uL1dl
YkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcCAgIHwgNDUgKy0tLS0tLS0tLS0t
LS0tLS0tCiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guaCAgfCAg
MiAtCiAuLi4vTGF5b3V0Q29udGFpbmluZ0Jsb2NrQ2hhaW5JdGVyYXRvci5oICAgICAgfCAgNiAr
LS0KIDE0IGZpbGVzIGNoYW5nZWQsIDc3IGluc2VydGlvbnMoKyksIDgwIGRlbGV0aW9ucygtKQoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9WZXJpZmljYXRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAKaW5kZXggNzZlMWZlZjY0MjVmLi43
ZmM5Njg4NDVlNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9WZXJpZmljYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9WZXJpZmljYXRpb24uY3BwCkBAIC0x
ODMsNyArMTgzLDcgQEAgc3RhdGljIGJvb2wgb3V0cHV0TWlzbWF0Y2hpbmdCbG9ja0JveEluZm9y
bWF0aW9uSWZOZWVkZWQoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb24KICAgICAgICAgICAgIHJldHVy
biBCb3hHZW9tZXRyeTo6Ym9yZGVyQm94UmVjdChib3hHZW9tZXRyeSk7CiAKICAgICAgICAgLy8g
UHJvZHVjZSBhIFJlbmRlckJveCBtYXRjaGluZyBtYXJnaW4gYm94LgotICAgICAgICBhdXRvIGNv
bnRhaW5pbmdCbG9ja1dpZHRoID0gbGF5b3V0U3RhdGUuZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94
LmNvbnRhaW5pbmdCbG9jaygpKS5jb250ZW50Qm94V2lkdGgoKTsKKyAgICAgICAgYXV0byBjb250
YWluaW5nQmxvY2tXaWR0aCA9IGxheW91dFN0YXRlLmdlb21ldHJ5Rm9yQm94KEZvcm1hdHRpbmdD
b250ZXh0Ojpjb250YWluaW5nQmxvY2sobGF5b3V0Qm94KSkuY29udGVudEJveFdpZHRoKCk7CiAg
ICAgICAgIGF1dG8gbWFyZ2luU3RhcnQgPSBMYXlvdXRVbml0IHsgfTsKICAgICAgICAgYXV0byYg
bWFyZ2luU3RhcnRTdHlsZSA9IGxheW91dEJveC5zdHlsZSgpLm1hcmdpblN0YXJ0KCk7CiAgICAg
ICAgIGlmIChtYXJnaW5TdGFydFN0eWxlLmlzRml4ZWQoKSB8fCBtYXJnaW5TdGFydFN0eWxlLmlz
UGVyY2VudCgpIHx8IG1hcmdpblN0YXJ0U3R5bGUuaXNDYWxjdWxhdGVkKCkpCkBAIC0yMjAsNyAr
MjIwLDcgQEAgc3RhdGljIGJvb2wgb3V0cHV0TWlzbWF0Y2hpbmdCbG9ja0JveEluZm9ybWF0aW9u
SWZOZWVkZWQoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb24KICAgICBpZiAobGF5b3V0Qm94LmlzVGFi
bGVCb3goKSkgewogICAgICAgICAvLyBXaGVuIHRoZSA8dGFibGU+IGlzIG91dC1vZi1mbG93IHBv
c2l0aW9uZWQsIHRoZSB3cmFwcGVyIHRhYmxlIGJveCBoYXMgdGhlIG9mZnNldAogICAgICAgICAv
LyB3aGlsZSB0aGUgYWN0dWFsIHRhYmxlIGJveCBpcyBzdGF0aWMsIGluZmxvdy4KLSAgICAgICAg
YXV0byYgdGFibGVXcmFwcGVyQm94R2VvbWV0cnkgPSBsYXlvdXRTdGF0ZS5nZW9tZXRyeUZvckJv
eChsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpOworICAgICAgICBhdXRvJiB0YWJsZVdyYXBw
ZXJCb3hHZW9tZXRyeSA9IGxheW91dFN0YXRlLmdlb21ldHJ5Rm9yQm94KEZvcm1hdHRpbmdDb250
ZXh0Ojpjb250YWluaW5nQmxvY2sobGF5b3V0Qm94KSk7CiAgICAgICAgIGJveEdlb21ldHJ5Lm1v
dmVCeShCb3hHZW9tZXRyeTo6Ym9yZGVyQm94VG9wTGVmdCh0YWJsZVdyYXBwZXJCb3hHZW9tZXRy
eSkpOwogICAgICAgICAvLyBUYWJsZSB3cmFwcGVyIGJveCBoYXMgdGhlIG1hcmdpbiB2YWx1ZXMg
Zm9yIHRoZSB0YWJsZS4KICAgICAgICAgYm94R2VvbWV0cnkuc2V0SG9yaXpvbnRhbE1hcmdpbih0
YWJsZVdyYXBwZXJCb3hHZW9tZXRyeS5ob3Jpem9udGFsTWFyZ2luKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuY3BwCmluZGV4IDM5NGM5ZTRk
MjViMi4uZjY1NTJkOGIyNTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxv
YXRzL0Zsb2F0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0
cy9GbG9hdGluZ0NvbnRleHQuY3BwCkBAIC0zNDEsMTAgKzM0MSwxMCBAQCBzdGQ6Om9wdGlvbmFs
PEZsb2F0aW5nQ29udGV4dDo6UG9zaXRpb25XaXRoQ2xlYXJhbmNlPiBGbG9hdGluZ0NvbnRleHQ6
OnZlcnRpY2FsUAogICAgICAgICBBU1NFUlQoKmZsb2F0Qm90dG9tID09IGxvZ2ljYWxUb3BSZWxh
dGl2ZVRvRmxvYXRpbmdTdGF0ZVJvb3QpOwogCiAgICAgICAgIC8vIFRoZSByZXR1cm4gdmVydGlj
YWwgcG9zaXRpb24gbmVlZHMgdG8gYmUgaW4gdGhlIGNvbnRhaW5pbmcgYmxvY2sncyBjb29yZGlu
YXRlIHN5c3RlbS4KLSAgICAgICAgaWYgKCZsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkgPT0g
Jm1fZmxvYXRpbmdTdGF0ZS5yb290KCkpCisgICAgICAgIGlmICgmRm9ybWF0dGluZ0NvbnRleHQ6
OmNvbnRhaW5pbmdCbG9jayhsYXlvdXRCb3gpID09ICZtX2Zsb2F0aW5nU3RhdGUucm9vdCgpKQog
ICAgICAgICAgICAgcmV0dXJuIFBvc2l0aW9uV2l0aENsZWFyYW5jZSB7IGxvZ2ljYWxUb3BSZWxh
dGl2ZVRvRmxvYXRpbmdTdGF0ZVJvb3QsIGNsZWFyYW5jZSB9OwogCi0gICAgICAgIGF1dG8gY29u
dGFpbmluZ0Jsb2NrUm9vdFJlbGF0aXZlVG9wID0gbWFwVG9wTGVmdFRvRmxvYXRpbmdTdGF0ZVJv
b3QobGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKS55KCk7CisgICAgICAgIGF1dG8gY29udGFp
bmluZ0Jsb2NrUm9vdFJlbGF0aXZlVG9wID0gbWFwVG9wTGVmdFRvRmxvYXRpbmdTdGF0ZVJvb3Qo
Rm9ybWF0dGluZ0NvbnRleHQ6OmNvbnRhaW5pbmdCbG9jayhsYXlvdXRCb3gpKS55KCk7CiAgICAg
ICAgIHJldHVybiBQb3NpdGlvbldpdGhDbGVhcmFuY2UgeyBsb2dpY2FsVG9wUmVsYXRpdmVUb0Zs
b2F0aW5nU3RhdGVSb290IC0gY29udGFpbmluZ0Jsb2NrUm9vdFJlbGF0aXZlVG9wLCBjbGVhcmFu
Y2UgfTsKICAgICB9OwogCkBAIC01MDQsNyArNTA0LDcgQEAgdm9pZCBGbG9hdGluZ0NvbnRleHQ6
OmZpbmRQb3NpdGlvbkZvckZvcm1hdHRpbmdDb250ZXh0Um9vdChGbG9hdEF2b2lkZXImIGZsb2F0
QXYKIAogRmxvYXRpbmdDb250ZXh0OjpBYnNvbHV0ZUNvb3JkaW5hdGVWYWx1ZXNGb3JGbG9hdEF2
b2lkZXIgRmxvYXRpbmdDb250ZXh0OjphYnNvbHV0ZUNvb3JkaW5hdGVzKGNvbnN0IEJveCYgZmxv
YXRBdm9pZGVyKSBjb25zdAogewotICAgIGF1dG8mIGNvbnRhaW5pbmdCbG9jayA9IGZsb2F0QXZv
aWRlci5jb250YWluaW5nQmxvY2soKTsKKyAgICBhdXRvJiBjb250YWluaW5nQmxvY2sgPSBGb3Jt
YXR0aW5nQ29udGV4dDo6Y29udGFpbmluZ0Jsb2NrKGZsb2F0QXZvaWRlcik7CiAgICAgYXV0byYg
Y29udGFpbmluZ0Jsb2NrR2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9y
Qm94KGNvbnRhaW5pbmdCbG9jaywgRm9ybWF0dGluZ0NvbnRleHQ6OkVzY2FwZVJlYXNvbjo6Rmxv
YXRCb3hJc0Fsd2F5c1JlbGF0aXZlVG9GbG9hdFN0YXRlUm9vdCk7CiAgICAgYXV0byBhYnNvbHV0
ZVRvcExlZnQgPSBtYXBUb3BMZWZ0VG9GbG9hdGluZ1N0YXRlUm9vdChmbG9hdEF2b2lkZXIpOwog
CkBAIC01MzEsNyArNTMxLDcgQEAgUG9pbnQgRmxvYXRpbmdDb250ZXh0OjptYXBQb2ludEZyb21G
b3JtYXR0aW5nQ29udGV4dFJvb3RUb0Zsb2F0aW5nU3RhdGVSb290KFBvaW4KICAgICBpZiAoJmZy
b20gPT0gJnRvKQogICAgICAgICByZXR1cm4gcG9zaXRpb247CiAgICAgYXV0byBtYXBwZWRQb3Np
dGlvbiA9IHBvc2l0aW9uOwotICAgIGZvciAoYXV0byogY29udGFpbmluZ0Jsb2NrID0gJmZyb207
IGNvbnRhaW5pbmdCbG9jayAhPSAmdG87IGNvbnRhaW5pbmdCbG9jayA9ICZjb250YWluaW5nQmxv
Y2stPmNvbnRhaW5pbmdCbG9jaygpKQorICAgIGZvciAoYXV0byogY29udGFpbmluZ0Jsb2NrID0g
JmZyb207IGNvbnRhaW5pbmdCbG9jayAhPSAmdG87IGNvbnRhaW5pbmdCbG9jayA9ICZGb3JtYXR0
aW5nQ29udGV4dDo6Y29udGFpbmluZ0Jsb2NrKCpjb250YWluaW5nQmxvY2spKQogICAgICAgICBt
YXBwZWRQb3NpdGlvbi5tb3ZlQnkoQm94R2VvbWV0cnk6OmJvcmRlckJveFRvcExlZnQoZm9ybWF0
dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJveCgqY29udGFpbmluZ0Jsb2NrLCBGb3JtYXR0aW5n
Q29udGV4dDo6RXNjYXBlUmVhc29uOjpGbG9hdEJveElzQWx3YXlzUmVsYXRpdmVUb0Zsb2F0U3Rh
dGVSb290KSkpOwogICAgIHJldHVybiBtYXBwZWRQb3NpdGlvbjsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5n
Q29udGV4dC5jcHAKaW5kZXggYWE3MzkxNjQzYWJjLi42MmM1MWQ4MmZjY2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9y
bWF0dGluZ0NvbnRleHQuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBGb3JtYXR0aW5nQ29u
dGV4dDo6bGF5b3V0T3V0T2ZGbG93Q29udGVudChjb25zdCBDb25zdHJhaW50c0Zvck91dE9mRmxv
d0NvbnQKICAgICBjb2xsZWN0T3V0T2ZGbG93RGVzY2VuZGFudHNJZk5lZWRlZCgpOwogCiAgICAg
YXV0byBjb25zdHJhaW50c0ZvckxheW91dEJveCA9IFsmXSAoY29uc3QgYXV0byYgb3V0T2ZGbG93
Qm94KSB7Ci0gICAgICAgIGF1dG8mIGNvbnRhaW5pbmdCbG9jayA9IG91dE9mRmxvd0JveC0+Y29u
dGFpbmluZ0Jsb2NrKCk7CisgICAgICAgIGF1dG8mIGNvbnRhaW5pbmdCbG9jayA9IHRoaXMtPmNv
bnRhaW5pbmdCbG9jayhvdXRPZkZsb3dCb3gpOwogICAgICAgICByZXR1cm4gJmNvbnRhaW5pbmdC
bG9jayA9PSAmcm9vdCgpID8gY29uc3RyYWludHMgOiBmb3JtYXR0aW5nR2VvbWV0cnkoKS5jb25z
dHJhaW50c0Zvck91dE9mRmxvd0NvbnRlbnQoY29udGFpbmluZ0Jsb2NrKTsKICAgICB9OwogCkBA
IC0yOTIsNiArMjkyLDQ3IEBAIGNvbnN0IEluaXRpYWxDb250YWluaW5nQmxvY2smIEZvcm1hdHRp
bmdDb250ZXh0Ojppbml0aWFsQ29udGFpbmluZ0Jsb2NrKGNvbnN0IEJvCiAgICAgcmV0dXJuIGRv
d25jYXN0PEluaXRpYWxDb250YWluaW5nQmxvY2s+KCphbmNlc3Rvcik7CiB9CiAKK2NvbnN0IENv
bnRhaW5lckJveCYgRm9ybWF0dGluZ0NvbnRleHQ6OmNvbnRhaW5pbmdCbG9jayhjb25zdCBCb3gm
IGxheW91dEJveCkKK3sKKyAgICAvLyBJZiB3ZSBldmVyIGVuZCB1cCBoZXJlIHdpdGggdGhlIElD
Qiwgd2UgbXVzdCBiZSBkb2luZyBzb21ldGhpbmcgbm90LXNvLWdyZWF0LgorICAgIFJFTEVBU0Vf
QVNTRVJUKCFpczxJbml0aWFsQ29udGFpbmluZ0Jsb2NrPihsYXlvdXRCb3gpKTsKKyAgICAvLyBU
aGUgY29udGFpbmluZyBibG9jayBpbiB3aGljaCB0aGUgcm9vdCBlbGVtZW50IGxpdmVzIGlzIGEg
cmVjdGFuZ2xlIGNhbGxlZCB0aGUgaW5pdGlhbCBjb250YWluaW5nIGJsb2NrLgorICAgIC8vIEZv
ciBvdGhlciBlbGVtZW50cywgaWYgdGhlIGVsZW1lbnQncyBwb3NpdGlvbiBpcyAncmVsYXRpdmUn
IG9yICdzdGF0aWMnLCB0aGUgY29udGFpbmluZyBibG9jayBpcyBmb3JtZWQgYnkgdGhlCisgICAg
Ly8gY29udGVudCBlZGdlIG9mIHRoZSBuZWFyZXN0IGJsb2NrIGNvbnRhaW5lciBhbmNlc3RvciBi
b3ggb3Igd2hpY2ggZXN0YWJsaXNoZXMgYSBmb3JtYXR0aW5nIGNvbnRleHQuCisgICAgLy8gSWYg
dGhlIGVsZW1lbnQgaGFzICdwb3NpdGlvbjogZml4ZWQnLCB0aGUgY29udGFpbmluZyBibG9jayBp
cyBlc3RhYmxpc2hlZCBieSB0aGUgdmlld3BvcnQKKyAgICAvLyBJZiB0aGUgZWxlbWVudCBoYXMg
J3Bvc2l0aW9uOiBhYnNvbHV0ZScsIHRoZSBjb250YWluaW5nIGJsb2NrIGlzIGVzdGFibGlzaGVk
IGJ5IHRoZSBuZWFyZXN0IGFuY2VzdG9yIHdpdGggYQorICAgIC8vICdwb3NpdGlvbicgb2YgJ2Fi
c29sdXRlJywgJ3JlbGF0aXZlJyBvciAnZml4ZWQnLgorICAgIGlmICghbGF5b3V0Qm94LmlzUG9z
aXRpb25lZCgpIHx8IGxheW91dEJveC5pc0luRmxvd1Bvc2l0aW9uZWQoKSkgeworICAgICAgICBh
dXRvKiBhbmNlc3RvciA9ICZsYXlvdXRCb3gucGFyZW50KCk7CisgICAgICAgIGZvciAoOyAhaXM8
SW5pdGlhbENvbnRhaW5pbmdCbG9jaz4oKmFuY2VzdG9yKTsgYW5jZXN0b3IgPSAmYW5jZXN0b3It
PnBhcmVudCgpKSB7CisgICAgICAgICAgICBpZiAoYW5jZXN0b3ItPmlzQ29udGFpbmluZ0Jsb2Nr
Rm9ySW5GbG93KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuICphbmNlc3RvcjsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gKmFuY2VzdG9yOworICAgIH0KKworICAgIGlmIChsYXlvdXRCb3gu
aXNGaXhlZFBvc2l0aW9uZWQoKSkgeworICAgICAgICBhdXRvKiBhbmNlc3RvciA9ICZsYXlvdXRC
b3gucGFyZW50KCk7CisgICAgICAgIGZvciAoOyAhaXM8SW5pdGlhbENvbnRhaW5pbmdCbG9jaz4o
KmFuY2VzdG9yKTsgYW5jZXN0b3IgPSAmYW5jZXN0b3ItPnBhcmVudCgpKSB7CisgICAgICAgICAg
ICBpZiAoYW5jZXN0b3ItPmlzQ29udGFpbmluZ0Jsb2NrRm9yRml4ZWRQb3NpdGlvbigpKQorICAg
ICAgICAgICAgICAgIHJldHVybiAqYW5jZXN0b3I7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
ICphbmNlc3RvcjsKKyAgICB9CisKKyAgICBpZiAobGF5b3V0Qm94LmlzT3V0T2ZGbG93UG9zaXRp
b25lZCgpKSB7CisgICAgICAgIGF1dG8qIGFuY2VzdG9yID0gJmxheW91dEJveC5wYXJlbnQoKTsK
KyAgICAgICAgZm9yICg7ICFpczxJbml0aWFsQ29udGFpbmluZ0Jsb2NrPigqYW5jZXN0b3IpOyBh
bmNlc3RvciA9ICZhbmNlc3Rvci0+cGFyZW50KCkpIHsKKyAgICAgICAgICAgIGlmIChhbmNlc3Rv
ci0+aXNDb250YWluaW5nQmxvY2tGb3JPdXRPZkZsb3dQb3NpdGlvbigpKQorICAgICAgICAgICAg
ICAgIHJldHVybiAqYW5jZXN0b3I7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICphbmNlc3Rv
cjsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbGF5b3V0
Qm94LnBhcmVudCgpOyAgICAKK30KKwogI2lmbmRlZiBOREVCVUcKIGNvbnN0IENvbnRhaW5lckJv
eCYgRm9ybWF0dGluZ0NvbnRleHQ6OmZvcm1hdHRpbmdDb250ZXh0Um9vdChjb25zdCBCb3gmIGxh
eW91dEJveCkKIHsKQEAgLTMwNCw3ICszNDUsNyBAQCBjb25zdCBDb250YWluZXJCb3gmIEZvcm1h
dHRpbmdDb250ZXh0Ojpmb3JtYXR0aW5nQ29udGV4dFJvb3QoY29uc3QgQm94JiBsYXlvdXRCbwog
ICAgIC8vIDxkaXYgaWQ9b3V0ZXIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZSI+PGRpdiBpZD1p
bm5lcj48c3BhbiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlIj5jb250ZW50PC9zcGFuPjwvZGl2
PjwvZGl2PgogICAgIC8vIFdoaWxlIHRoZSByZWxhdGl2ZWx5IHBvc2l0aW9uZWQgaW5saW5lIGNv
bnRhaW5lciAoc3BhbikgaXMgcGxhY2VkIHJlbGF0aXZlIHRvIGl0cyBjb250YWluaW5nIGJsb2Nr
ICJvdXRlciIsIGl0IGxpdmVzIGluIHRoZSBpbmxpbmUKICAgICAvLyBmb3JtYXR0aW5nIGNvbnRl
eHQgZXN0YWJsaXNoZWQgYnkgImlubmVyIi4KLSAgICBhdXRvJiBhbmNlc3RvciA9IGxheW91dEJv
eC5pc0lubGluZUxldmVsQm94KCkgJiYgbGF5b3V0Qm94LmlzSW5GbG93UG9zaXRpb25lZCgpID8g
bGF5b3V0Qm94LnBhcmVudCgpIDogbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpOworICAgIGF1
dG8mIGFuY2VzdG9yID0gbGF5b3V0Qm94LmlzSW5saW5lTGV2ZWxCb3goKSAmJiBsYXlvdXRCb3gu
aXNJbkZsb3dQb3NpdGlvbmVkKCkgPyBsYXlvdXRCb3gucGFyZW50KCkgOiBjb250YWluaW5nQmxv
Y2sobGF5b3V0Qm94KTsKICAgICBpZiAoYW5jZXN0b3IuZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29u
dGV4dCgpKQogICAgICAgICByZXR1cm4gYW5jZXN0b3I7CiAgICAgcmV0dXJuIGZvcm1hdHRpbmdD
b250ZXh0Um9vdChhbmNlc3Rvcik7CkBAIC0zMTcsNyArMzU4LDcgQEAgdm9pZCBGb3JtYXR0aW5n
Q29udGV4dDo6dmFsaWRhdGVHZW9tZXRyeUNvbnN0cmFpbnRzQWZ0ZXJMYXlvdXQoKSBjb25zdAog
ICAgIGZvciAoYXV0byYgbGF5b3V0Qm94IDogZGVzY2VuZGFudHNPZlR5cGU8Qm94Pihyb290KSkg
ewogICAgICAgICBpZiAoJmZvcm1hdHRpbmdDb250ZXh0Um9vdChsYXlvdXRCb3gpICE9ICZyb290
KQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGF1dG8mIGNvbnRhaW5pbmdCbG9ja0dl
b21ldHJ5ID0gZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKTsKKyAg
ICAgICAgYXV0byYgY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkgPSBnZW9tZXRyeUZvckJveChjb250
YWluaW5nQmxvY2sobGF5b3V0Qm94KSk7CiAgICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZ2Vv
bWV0cnlGb3JCb3gobGF5b3V0Qm94KTsKIAogICAgICAgICAvLyAxMC4zLjMgQmxvY2stbGV2ZWws
IG5vbi1yZXBsYWNlZCBlbGVtZW50cyBpbiBub3JtYWwgZmxvdwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nQ29udGV4
dC5oCmluZGV4IDdkNzAwNWU1YjgzOS4uOWJhNTMwNGY3YmZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nQ29u
dGV4dC5oCkBAIC04Myw2ICs4Myw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzRmxleEZvcm1hdHRp
bmdDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gcm9vdCgpLmVzdGFibGlzaGVzRmxleEZvcm1hdHRp
bmdDb250ZXh0KCk7IH0KIAogICAgIHN0YXRpYyBjb25zdCBJbml0aWFsQ29udGFpbmluZ0Jsb2Nr
JiBpbml0aWFsQ29udGFpbmluZ0Jsb2NrKGNvbnN0IEJveCYpOworICAgIHN0YXRpYyBjb25zdCBD
b250YWluZXJCb3gmIGNvbnRhaW5pbmdCbG9jayhjb25zdCBCb3gmKTsKICNpZm5kZWYgTkRFQlVH
CiAgICAgc3RhdGljIGNvbnN0IENvbnRhaW5lckJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290KGNv
bnN0IEJveCYpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdHZW9tZXRyeS5jcHAKaW5kZXggNGNh
ZGU1MjY4YjMyLi42MGI2NzU4ZjhjODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0dlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdHZW9tZXRyeS5jcHAK
QEAgLTU4LDcgKzU4LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzSGVpZ2h0QXV0byhjb25zdCBC
b3gmIGxheW91dEJveCkKICAgICAgICAgaWYgKGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9u
ZWQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICByZXR1cm4gIWxheW91
dEJveC5jb250YWluaW5nQmxvY2soKS5zdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS5pc0ZpeGVkKCk7
CisgICAgICAgIHJldHVybiAhRm9ybWF0dGluZ0NvbnRleHQ6OmNvbnRhaW5pbmdCbG9jayhsYXlv
dXRCb3gpLnN0eWxlKCkubG9naWNhbEhlaWdodCgpLmlzRml4ZWQoKTsKICAgICB9CiAKICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0yNTQsOSArMjU0LDkgQEAgTGF5b3V0VW5pdCBGb3JtYXR0aW5nR2Vv
bWV0cnk6OnN0YXRpY1ZlcnRpY2FsUG9zaXRpb25Gb3JPdXRPZkZsb3dQb3NpdGlvbmVkKGNvbnMK
ICAgICAgICAgdG9wID0gZm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94
LnBhcmVudCgpLCBGb3JtYXR0aW5nQ29udGV4dDo6RXNjYXBlUmVhc29uOjpPdXRPZkZsb3dCb3hO
ZWVkc0luRmxvd0dlb21ldHJ5KS5jb250ZW50Qm94VG9wKCk7CiAKICAgICAvLyBSZXNvbHZlIHRv
cCBhbGwgdGhlIHdheSB1cCB0byB0aGUgY29udGFpbmluZyBibG9jay4KLSAgICBhdXRvJiBjb250
YWluaW5nQmxvY2sgPSBsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCk7CisgICAgYXV0byYgY29u
dGFpbmluZ0Jsb2NrID0gRm9ybWF0dGluZ0NvbnRleHQ6OmNvbnRhaW5pbmdCbG9jayhsYXlvdXRC
b3gpOwogICAgIC8vIFN0YXJ0IHdpdGggdGhlIHBhcmVudCBzaW5jZSB3ZSBwcmV0ZW5kIHRoYXQg
dGhpcyBib3ggaXMgbm9ybWFsIGZsb3cuCi0gICAgZm9yIChhdXRvKiBhbmNlc3RvciA9ICZsYXlv
dXRCb3gucGFyZW50KCk7IGFuY2VzdG9yICE9ICZjb250YWluaW5nQmxvY2s7IGFuY2VzdG9yID0g
JmFuY2VzdG9yLT5jb250YWluaW5nQmxvY2soKSkgeworICAgIGZvciAoYXV0byogYW5jZXN0b3Ig
PSAmbGF5b3V0Qm94LnBhcmVudCgpOyBhbmNlc3RvciAhPSAmY29udGFpbmluZ0Jsb2NrOyBhbmNl
c3RvciA9ICZGb3JtYXR0aW5nQ29udGV4dDo6Y29udGFpbmluZ0Jsb2NrKCphbmNlc3RvcikpIHsK
ICAgICAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dC5nZW9tZXRyeUZv
ckJveCgqYW5jZXN0b3IsIEZvcm1hdHRpbmdDb250ZXh0OjpFc2NhcGVSZWFzb246Ok91dE9mRmxv
d0JveE5lZWRzSW5GbG93R2VvbWV0cnkpOwogICAgICAgICAvLyBCb3hHZW9tZXRyeTo6dG9wIGlz
IHRoZSBib3JkZXIgYm94IHRvcCBwb3NpdGlvbiBpbiBpdHMgY29udGFpbmluZyBibG9jaydzIGNv
b3JkaW5hdGUgc3lzdGVtLgogICAgICAgICB0b3AgKz0gQm94R2VvbWV0cnk6OmJvcmRlckJveFRv
cChib3hHZW9tZXRyeSk7CkBAIC0yNzYsOSArMjc2LDkgQEAgTGF5b3V0VW5pdCBGb3JtYXR0aW5n
R2VvbWV0cnk6OnN0YXRpY0hvcml6b250YWxQb3NpdGlvbkZvck91dE9mRmxvd1Bvc2l0aW9uZWQo
Y28KICAgICBhdXRvIGxlZnQgPSBmb3JtYXR0aW5nQ29udGV4dC5nZW9tZXRyeUZvckJveChsYXlv
dXRCb3gucGFyZW50KCksIEZvcm1hdHRpbmdDb250ZXh0OjpFc2NhcGVSZWFzb246Ok91dE9mRmxv
d0JveE5lZWRzSW5GbG93R2VvbWV0cnkpLmNvbnRlbnRCb3hMZWZ0KCk7CiAKICAgICAvLyBSZXNv
bHZlIGxlZnQgYWxsIHRoZSB3YXkgdXAgdG8gdGhlIGNvbnRhaW5pbmcgYmxvY2suCi0gICAgYXV0
byYgY29udGFpbmluZ0Jsb2NrID0gbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpOworICAgIGF1
dG8mIGNvbnRhaW5pbmdCbG9jayA9IEZvcm1hdHRpbmdDb250ZXh0Ojpjb250YWluaW5nQmxvY2so
bGF5b3V0Qm94KTsKICAgICAvLyBTdGFydCB3aXRoIHRoZSBwYXJlbnQgc2luY2Ugd2UgcHJldGVu
ZCB0aGF0IHRoaXMgYm94IGlzIG5vcm1hbCBmbG93LgotICAgIGZvciAoYXV0byogYW5jZXN0b3Ig
PSAmbGF5b3V0Qm94LnBhcmVudCgpOyBhbmNlc3RvciAhPSAmY29udGFpbmluZ0Jsb2NrOyBhbmNl
c3RvciA9ICZhbmNlc3Rvci0+Y29udGFpbmluZ0Jsb2NrKCkpIHsKKyAgICBmb3IgKGF1dG8qIGFu
Y2VzdG9yID0gJmxheW91dEJveC5wYXJlbnQoKTsgYW5jZXN0b3IgIT0gJmNvbnRhaW5pbmdCbG9j
azsgYW5jZXN0b3IgPSAmRm9ybWF0dGluZ0NvbnRleHQ6OmNvbnRhaW5pbmdCbG9jaygqYW5jZXN0
b3IpKSB7CiAgICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQuZ2Vv
bWV0cnlGb3JCb3goKmFuY2VzdG9yLCBGb3JtYXR0aW5nQ29udGV4dDo6RXNjYXBlUmVhc29uOjpP
dXRPZkZsb3dCb3hOZWVkc0luRmxvd0dlb21ldHJ5KTsKICAgICAgICAgLy8gQm94R2VvbWV0cnk6
OmxlZnQgaXMgdGhlIGJvcmRlciBib3ggbGVmdCBwb3NpdGlvbiBpbiBpdHMgY29udGFpbmluZyBi
bG9jaydzIGNvb3JkaW5hdGUgc3lzdGVtLgogICAgICAgICBsZWZ0ICs9IEJveEdlb21ldHJ5Ojpi
b3JkZXJCb3hMZWZ0KGJveEdlb21ldHJ5KTsKQEAgLTQ3MCw3ICs0NzAsNyBAQCBIb3Jpem9udGFs
R2VvbWV0cnkgRm9ybWF0dGluZ0dlb21ldHJ5OjpvdXRPZkZsb3dOb25SZXBsYWNlZEhvcml6b250
YWxHZW9tZXRyeShjbwogICAgIGF1dG8mIHN0eWxlID0gbGF5b3V0Qm94LnN0eWxlKCk7CiAgICAg
YXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dC5nZW9tZXRyeUZvckJveChsYXlv
dXRCb3gpOwogICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSBob3Jpem9udGFsQ29uc3Ry
YWludHMubG9naWNhbFdpZHRoOwotICAgIGF1dG8gaXNMZWZ0VG9SaWdodERpcmVjdGlvbiA9IGxh
eW91dEJveC5jb250YWluaW5nQmxvY2soKS5zdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24o
KTsKKyAgICBhdXRvIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24gPSBGb3JtYXR0aW5nQ29udGV4dDo6
Y29udGFpbmluZ0Jsb2NrKGxheW91dEJveCkuc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9u
KCk7CiAgICAgCiAgICAgYXV0byBsZWZ0ID0gY29tcHV0ZWRWYWx1ZShzdHlsZS5sb2dpY2FsTGVm
dCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CiAgICAgYXV0byByaWdodCA9IGNvbXB1dGVkVmFs
dWUoc3R5bGUubG9naWNhbFJpZ2h0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKQEAgLTY4Miw3
ICs2ODIsNyBAQCBIb3Jpem9udGFsR2VvbWV0cnkgRm9ybWF0dGluZ0dlb21ldHJ5OjpvdXRPZkZs
b3dSZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeShjb25zdAogICAgIGF1dG8mIHN0eWxlID0gcmVw
bGFjZWRCb3guc3R5bGUoKTsKICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250
ZXh0Lmdlb21ldHJ5Rm9yQm94KHJlcGxhY2VkQm94KTsKICAgICBhdXRvIGNvbnRhaW5pbmdCbG9j
a1dpZHRoID0gaG9yaXpvbnRhbENvbnN0cmFpbnRzLmxvZ2ljYWxXaWR0aDsKLSAgICBhdXRvIGlz
TGVmdFRvUmlnaHREaXJlY3Rpb24gPSByZXBsYWNlZEJveC5jb250YWluaW5nQmxvY2soKS5zdHls
ZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKTsKKyAgICBhdXRvIGlzTGVmdFRvUmlnaHREaXJl
Y3Rpb24gPSBGb3JtYXR0aW5nQ29udGV4dDo6Y29udGFpbmluZ0Jsb2NrKHJlcGxhY2VkQm94KS5z
dHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKTsKIAogICAgIGF1dG8gbGVmdCA9IGNvbXB1
dGVkVmFsdWUoc3R5bGUubG9naWNhbExlZnQoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwogICAg
IGF1dG8gcmlnaHQgPSBjb21wdXRlZFZhbHVlKHN0eWxlLmxvZ2ljYWxSaWdodCgpLCBjb250YWlu
aW5nQmxvY2tXaWR0aCk7CkBAIC0xMDYzLDcgKzEwNjMsNyBAQCBMYXlvdXRTaXplIEZvcm1hdHRp
bmdHZW9tZXRyeTo6aW5GbG93UG9zaXRpb25lZFBvc2l0aW9uT2Zmc2V0KGNvbnN0IEJveCYgbGF5
b3V0QgogICAgICAgICByaWdodCA9IC0qbGVmdDsKICAgICB9IGVsc2UgewogICAgICAgICAvLyAj
NAotICAgICAgICBhdXRvIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24gPSBsYXlvdXRCb3guY29udGFp
bmluZ0Jsb2NrKCkuc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCk7CisgICAgICAgIGF1
dG8gaXNMZWZ0VG9SaWdodERpcmVjdGlvbiA9IEZvcm1hdHRpbmdDb250ZXh0Ojpjb250YWluaW5n
QmxvY2sobGF5b3V0Qm94KS5zdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKTsKICAgICAg
ICAgaWYgKGlzTGVmdFRvUmlnaHREaXJlY3Rpb24pCiAgICAgICAgICAgICByaWdodCA9IC0qbGVm
dDsKICAgICAgICAgZWxzZQpAQCAtMTA4NSw3ICsxMDg1LDcgQEAgaW5saW5lIHN0YXRpYyBXcml0
aW5nTW9kZSB1c2VkV3JpdGluZ01vZGUoY29uc3QgQm94JiBsYXlvdXRCb3gpCiAgICAgLy8gaHR0
cHM6Ly93d3cudzMub3JnL1RSL2Nzcy13cml0aW5nLW1vZGVzLTQvI2xvZ2ljYWwtZGlyZWN0aW9u
LWxheW91dAogICAgIC8vIEZsb3ctcmVsYXRpdmUgZGlyZWN0aW9ucyBhcmUgY2FsY3VsYXRlZCB3
aXRoIHJlc3BlY3QgdG8gdGhlIHdyaXRpbmcgbW9kZSBvZiB0aGUgY29udGFpbmluZyBibG9jayBv
ZiB0aGUgYm94LgogICAgIC8vIEZvciBpbmxpbmUtbGV2ZWwgYm94ZXMsIHRoZSB3cml0aW5nIG1v
ZGUgb2YgdGhlIHBhcmVudCBib3ggaXMgdXNlZCBpbnN0ZWFkLgotICAgIHJldHVybiBsYXlvdXRC
b3guaXNJbmxpbmVMZXZlbEJveCgpID8gbGF5b3V0Qm94LnBhcmVudCgpLnN0eWxlKCkud3JpdGlu
Z01vZGUoKSA6IGxheW91dEJveC5jb250YWluaW5nQmxvY2soKS5zdHlsZSgpLndyaXRpbmdNb2Rl
KCk7CisgICAgcmV0dXJuIGxheW91dEJveC5pc0lubGluZUxldmVsQm94KCkgPyBsYXlvdXRCb3gu
cGFyZW50KCkuc3R5bGUoKS53cml0aW5nTW9kZSgpIDogRm9ybWF0dGluZ0NvbnRleHQ6OmNvbnRh
aW5pbmdCbG9jayhsYXlvdXRCb3gpLnN0eWxlKCkud3JpdGluZ01vZGUoKTsKIH0KIAogRWRnZXMg
Rm9ybWF0dGluZ0dlb21ldHJ5Ojpjb21wdXRlZEJvcmRlcihjb25zdCBCb3gmIGxheW91dEJveCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvRm9ybWF0dGluZ1F1aXJrcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL0Zvcm1hdHRpbmdRdWlya3MuY3BwCmluZGV4IDA4YjJkMDU1MjViNC4uN2RjZjkz
ZTg3ZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL0Zvcm1hdHRpbmdRdWlya3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ1F1aXJrcy5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgTGF5
b3V0VW5pdCBGb3JtYXR0aW5nUXVpcmtzOjpoZWlnaHRWYWx1ZU9mTmVhcmVzdENvbnRhaW5pbmdC
bG9ja1dpdGhGaXhlZEhlaWdodCgKICAgICAgICAgLy8gLWFuZCBpdCdzIHRvdGFsbHkgaW5zYW5l
IGJlY2F1c2Ugbm93IHdlIGZyZWVseSB0cmF2ZWwgYWNyb3NzIGZvcm1hdHRpbmcgY29udGV4dCBi
b3VuZGFyaWVzIGFuZCBjb21wdXRlZCBtYXJnaW5zIGFyZSBub25leGlzdGVudC4KICAgICAgICAg
aWYgKGNvbnRhaW5pbmdCbG9jay5pc0JvZHlCb3goKSB8fCBjb250YWluaW5nQmxvY2suaXNEb2N1
bWVudEJveCgpKSB7CiAgICAgICAgICAgICBhdXRvJiBmb3JtYXR0aW5nR2VvbWV0cnkgPSBmb3Jt
YXR0aW5nQ29udGV4dC5mb3JtYXR0aW5nR2VvbWV0cnkoKTsKLSAgICAgICAgICAgIGF1dG8gaG9y
aXpvbnRhbENvbnN0cmFpbnRzID0gZm9ybWF0dGluZ0dlb21ldHJ5LmNvbnN0cmFpbnRzRm9ySW5G
bG93Q29udGVudChjb250YWluaW5nQmxvY2suY29udGFpbmluZ0Jsb2NrKCksIEZvcm1hdHRpbmdD
b250ZXh0OjpFc2NhcGVSZWFzb246OkZpbmRGaXhlZEhlaWdodEFuY2VzdG9yUXVpcmspLmhvcml6
b250YWwoKTsKKyAgICAgICAgICAgIGF1dG8gaG9yaXpvbnRhbENvbnN0cmFpbnRzID0gZm9ybWF0
dGluZ0dlb21ldHJ5LmNvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudChGb3JtYXR0aW5nQ29udGV4
dDo6Y29udGFpbmluZ0Jsb2NrKGNvbnRhaW5pbmdCbG9jayksIEZvcm1hdHRpbmdDb250ZXh0OjpF
c2NhcGVSZWFzb246OkZpbmRGaXhlZEhlaWdodEFuY2VzdG9yUXVpcmspLmhvcml6b250YWwoKTsK
ICAgICAgICAgICAgIGF1dG8gdmVydGljYWxNYXJnaW4gPSBmb3JtYXR0aW5nR2VvbWV0cnkuY29t
cHV0ZWRWZXJ0aWNhbE1hcmdpbihjb250YWluaW5nQmxvY2ssIGhvcml6b250YWxDb25zdHJhaW50
cyk7CiAKICAgICAgICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQu
Z2VvbWV0cnlGb3JCb3goY29udGFpbmluZ0Jsb2NrLCBGb3JtYXR0aW5nQ29udGV4dDo6RXNjYXBl
UmVhc29uOjpGaW5kRml4ZWRIZWlnaHRBbmNlc3RvclF1aXJrKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5n
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Js
b2NrL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IDUzZTYzMDg3NTlhNy4uYWQ0NzMx
N2IwMTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5j
cHAKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRJ
bkZsb3dDb250ZW50KGNvbnN0IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGUKICAgICB9OwogCiAg
ICAgYXV0byBjb25zdHJhaW50c0ZvckxheW91dEJveCA9IFsmXSAoY29uc3QgYXV0byYgbGF5b3V0
Qm94KSB7Ci0gICAgICAgIGF1dG8mIGNvbnRhaW5pbmdCbG9jayA9IGxheW91dEJveC5jb250YWlu
aW5nQmxvY2soKTsKKyAgICAgICAgYXV0byYgY29udGFpbmluZ0Jsb2NrID0gdGhpcy0+Y29udGFp
bmluZ0Jsb2NrKGxheW91dEJveCk7CiAgICAgICAgIHJldHVybiAmY29udGFpbmluZ0Jsb2NrID09
ICZmb3JtYXR0aW5nUm9vdCA/IGNvbnN0cmFpbnRzIDogZm9ybWF0dGluZ0dlb21ldHJ5KCkuY29u
c3RyYWludHNGb3JJbkZsb3dDb250ZW50KGNvbnRhaW5pbmdCbG9jayk7CiAgICAgfTsKIApAQCAt
MjgzLDkgKzI4Myw5IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6cHJlY29tcHV0ZVZl
cnRpY2FsUG9zaXRpb25Gb3JCb3hBbmRBbmNlc3RvcnMoY29uc3QKICAgICAvLyBUaGUgaWRlYSBo
ZXJlIGlzIHRoYXQgYXMgbG9uZyBhcyB3ZSBkb24ndCBjcm9zcyB0aGUgYmxvY2sgZm9ybWF0dGlu
ZyBjb250ZXh0IGJvdW5kYXJ5LCB3ZSBzaG91bGQgYmUgYWJsZSB0byBwcmUtY29tcHV0ZSB0aGUg
ZmluYWwgdG9wIHBvc2l0aW9uLgogICAgIC8vIEZJWE1FOiB3ZSBjdXJyZW50bHkgZG9uJ3QgYWNj
b3VudCBmb3IgdGhlICJjbGVhciIgcHJvcGVydHkgd2hlbiBjb21wdXRpbmcgdGhlIGZpbmFsIHBv
c2l0aW9uIGZvciBhbiBhbmNlc3Rvci4KICAgICBhdXRvJiBmb3JtYXR0aW5nR2VvbWV0cnkgPSB0
aGlzLT5mb3JtYXR0aW5nR2VvbWV0cnkoKTsKLSAgICBmb3IgKGF1dG8qIGFuY2VzdG9yID0gJmxh
eW91dEJveDsgYW5jZXN0b3IgJiYgYW5jZXN0b3IgIT0gJnJvb3QoKTsgYW5jZXN0b3IgPSAmYW5j
ZXN0b3ItPmNvbnRhaW5pbmdCbG9jaygpKSB7CisgICAgZm9yIChhdXRvKiBhbmNlc3RvciA9ICZs
YXlvdXRCb3g7IGFuY2VzdG9yICYmIGFuY2VzdG9yICE9ICZyb290KCk7IGFuY2VzdG9yID0gJmNv
bnRhaW5pbmdCbG9jaygqYW5jZXN0b3IpKSB7CiAgICAgICAgIGF1dG8gY29uc3RyYWludHNGb3JB
bmNlc3RvciA9IFsmXSB7Ci0gICAgICAgICAgICBhdXRvJiBjb250YWluaW5nQmxvY2sgPSBhbmNl
c3Rvci0+Y29udGFpbmluZ0Jsb2NrKCk7CisgICAgICAgICAgICBhdXRvJiBjb250YWluaW5nQmxv
Y2sgPSB0aGlzLT5jb250YWluaW5nQmxvY2soKmFuY2VzdG9yKTsKICAgICAgICAgICAgIHJldHVy
biAmY29udGFpbmluZ0Jsb2NrID09ICZyb290KCkgPyBjb25zdHJhaW50c1BhaXIuZm9ybWF0dGlu
Z0NvbnRleHRSb290IDogZm9ybWF0dGluZ0dlb21ldHJ5LmNvbnN0cmFpbnRzRm9ySW5GbG93Q29u
dGVudChjb250YWluaW5nQmxvY2spOwogICAgICAgICB9KCk7CiAKQEAgLTU0Niw3ICs1NDYsNyBA
QCBMYXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OnZlcnRpY2FsUG9zaXRpb25XaXRo
TWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0QgogICAgICAgICByZXR1cm4gY29udGFpbmluZ0Jsb2Nr
Q29udGVudEJveFRvcCArIG1hcmdpbkJlZm9yZSh2ZXJ0aWNhbE1hcmdpbik7CiAgICAgfQogICAg
IC8vIEF0IHRoaXMgcG9pbnQgdGhpcyBib3ggaW5kaXJlY3RseSAodmlhIGNvbGxhcHNlZCB0aHJv
dWdoIHByZXZpb3VzIGluLWZsb3cgc2libGluZ3MpIGFkam9pbnMgdGhlIHBhcmVudC4gTGV0J3Mg
Y2hlY2sgaWYgaXQgbWFyZ2luIGNvbGxhcHNlcyB3aXRoIHRoZSBwYXJlbnQuCi0gICAgYXV0byYg
Y29udGFpbmluZ0Jsb2NrID0gbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpOworICAgIGF1dG8m
IGNvbnRhaW5pbmdCbG9jayA9IHRoaXMtPmNvbnRhaW5pbmdCbG9jayhsYXlvdXRCb3gpOwogICAg
IEFTU0VSVChjb250YWluaW5nQmxvY2suZmlyc3RJbkZsb3dDaGlsZCgpKTsKICAgICBBU1NFUlQo
Y29udGFpbmluZ0Jsb2NrLmZpcnN0SW5GbG93Q2hpbGQoKSAhPSAmbGF5b3V0Qm94KTsKICAgICBp
ZiAobWFyZ2luQ29sbGFwc2UoKS5tYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2lu
QmVmb3JlKCpjb250YWluaW5nQmxvY2suZmlyc3RJbkZsb3dDaGlsZCgpKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3Jt
YXR0aW5nR2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeS5jcHAKaW5kZXggOGRlZjQyNWZhZTAx
Li43ZDhkOTI0MDE2YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5n
R2VvbWV0cnkuY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgQ29udGVudFdpZHRoQW5kTWFyZ2luIEJs
b2NrRm9ybWF0dGluZ0dlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZENvbnRlbnRXaWR0aEFuZE0K
ICAgICAgICAgLy8gICAgZWRnZXMgb2YgdGhlIGNvbnRhaW5pbmcgYmxvY2suCiAKICAgICAgICAg
YXV0byBjb250YWluaW5nQmxvY2tXaWR0aCA9IGhvcml6b250YWxDb25zdHJhaW50cy5sb2dpY2Fs
V2lkdGg7Ci0gICAgICAgIGF1dG8mIGNvbnRhaW5pbmdCbG9ja1N0eWxlID0gbGF5b3V0Qm94LmNv
bnRhaW5pbmdCbG9jaygpLnN0eWxlKCk7CisgICAgICAgIGF1dG8mIGNvbnRhaW5pbmdCbG9ja1N0
eWxlID0gRm9ybWF0dGluZ0NvbnRleHQ6OmNvbnRhaW5pbmdCbG9jayhsYXlvdXRCb3gpLnN0eWxl
KCk7CiAgICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9t
ZXRyeUZvckJveChsYXlvdXRCb3gpOwogCiAgICAgICAgIGF1dG8gd2lkdGggPSBvdmVycmlkZGVu
SG9yaXpvbnRhbFZhbHVlcy53aWR0aCA/IG92ZXJyaWRkZW5Ib3Jpem9udGFsVmFsdWVzLndpZHRo
IDogY29tcHV0ZWRXaWR0aChsYXlvdXRCb3gsIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxv
Y2tGb3JtYXR0aW5nUXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmNwcAppbmRleCA1NWRiMDJkYzI3
YTkuLmIyNDZmMTk0ZTg1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdRdWlya3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5n
UXVpcmtzLmNwcApAQCAtMTE5LDEyICsxMTksMTIgQEAgc3RhdGljIGlubGluZSBib29sIGhhc1F1
aXJrTWFyZ2luVG9Db2xsYXBzZShjb25zdCBCb3gmIGxheW91dEJveCwgVmVydGljYWxNYXJnaW4K
IAogYm9vbCBCbG9ja0Zvcm1hdHRpbmdRdWlya3M6OnNob3VsZENvbGxhcHNlTWFyZ2luQmVmb3Jl
V2l0aFBhcmVudE1hcmdpbkJlZm9yZShjb25zdCBCb3gmIGxheW91dEJveCkKIHsKLSAgICByZXR1
cm4gaGFzUXVpcmtNYXJnaW5Ub0NvbGxhcHNlKGxheW91dEJveCwgVmVydGljYWxNYXJnaW46OkJl
Zm9yZSkgJiYgaXNRdWlya0NvbnRhaW5lcihsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpOwor
ICAgIHJldHVybiBoYXNRdWlya01hcmdpblRvQ29sbGFwc2UobGF5b3V0Qm94LCBWZXJ0aWNhbE1h
cmdpbjo6QmVmb3JlKSAmJiBpc1F1aXJrQ29udGFpbmVyKEZvcm1hdHRpbmdDb250ZXh0Ojpjb250
YWluaW5nQmxvY2sobGF5b3V0Qm94KSk7CiB9CiAKIGJvb2wgQmxvY2tGb3JtYXR0aW5nUXVpcmtz
OjpzaG91bGRDb2xsYXBzZU1hcmdpbkFmdGVyV2l0aFBhcmVudE1hcmdpbkFmdGVyKGNvbnN0IEJv
eCYgbGF5b3V0Qm94KQogewotICAgIHJldHVybiBoYXNRdWlya01hcmdpblRvQ29sbGFwc2UobGF5
b3V0Qm94LCBWZXJ0aWNhbE1hcmdpbjo6QWZ0ZXIpICYmIGlzUXVpcmtDb250YWluZXIobGF5b3V0
Qm94LmNvbnRhaW5pbmdCbG9jaygpKTsKKyAgICByZXR1cm4gaGFzUXVpcmtNYXJnaW5Ub0NvbGxh
cHNlKGxheW91dEJveCwgVmVydGljYWxNYXJnaW46OkFmdGVyKSAmJiBpc1F1aXJrQ29udGFpbmVy
KEZvcm1hdHRpbmdDb250ZXh0Ojpjb250YWluaW5nQmxvY2sobGF5b3V0Qm94KSk7CiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxv
Y2svQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwCmluZGV4IDdkMzg1N2Zm
ZjE4OC4uZDM5NjgyNzVjMzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tNYXJnaW5Db2xs
YXBzZS5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCBib29sIEJsb2NrTWFyZ2luQ29sbGFwc2U6Om1h
cmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5BZnRlcihjb25zdCBCb3gmCiAgICAg
Ly8gMS4gVGhpcyBpcyB0aGUgbGFzdCBpbi1mbG93IGNoaWxkIGFuZCBpdHMgbWFyZ2lucyBjb2xs
YXBzZSB0aHJvdWdoIGFuZCB0aGUgbWFyZ2luIGFmdGVyIGNvbGxhcHNlcyB3aXRoIHBhcmVudCdz
IG1hcmdpbiBhZnRlciBvcgogICAgIC8vIDIuIFRoaXMgYm94J3MgbWFyZ2luIGFmdGVyIGNvbGxh
cHNlcyB3aXRoIHRoZSBuZXh0IHNpYmxpbmcncyBtYXJnaW4gYmVmb3JlIGFuZCB0aGF0IHNpYmxp
bmcgY29sbGFwc2VzIHRocm91Z2ggYW5kCiAgICAgLy8gd2UgY2FuIGdldCB0byB0aGUgbGFzdCBp
bi1mbG93IGNoaWxkIGxpa2UgdGhhdC4KLSAgICBhdXRvKiBsYXN0SW5GbG93Q2hpbGQgPSBsYXlv
dXRCb3guY29udGFpbmluZ0Jsb2NrKCkubGFzdEluRmxvd0NoaWxkKCk7CisgICAgYXV0byogbGFz
dEluRmxvd0NoaWxkID0gRm9ybWF0dGluZ0NvbnRleHQ6OmNvbnRhaW5pbmdCbG9jayhsYXlvdXRC
b3gpLmxhc3RJbkZsb3dDaGlsZCgpOwogICAgIGZvciAoYXV0byogY3VycmVudEJveCA9ICZsYXlv
dXRCb3g7IGN1cnJlbnRCb3g7IGN1cnJlbnRCb3ggPSBjdXJyZW50Qm94LT5uZXh0SW5GbG93U2li
bGluZygpKSB7CiAgICAgICAgIGlmICghbWFyZ2luc0NvbGxhcHNlVGhyb3VnaCgqY3VycmVudEJv
eCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMzksNyArMTM5LDcgQEAgYm9vbCBC
bG9ja01hcmdpbkNvbGxhcHNlOjptYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2lu
QmVmb3JlKGNvbnN0IEJveCYKICAgICBpZiAobGF5b3V0Qm94LnByZXZpb3VzSW5GbG93U2libGlu
ZygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvJiBjb250YWluaW5nQmxvY2sg
PSBsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCk7CisgICAgYXV0byYgY29udGFpbmluZ0Jsb2Nr
ID0gRm9ybWF0dGluZ0NvbnRleHQ6OmNvbnRhaW5pbmdCbG9jayhsYXlvdXRCb3gpOwogICAgIC8v
IE1hcmdpbnMgb2YgZWxlbWVudHMgdGhhdCBlc3RhYmxpc2ggbmV3IGJsb2NrIGZvcm1hdHRpbmcg
Y29udGV4dHMgZG8gbm90IGNvbGxhcHNlIHdpdGggdGhlaXIgaW4tZmxvdyBjaGlsZHJlbgogICAg
IGlmIChlc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoY29udGFpbmluZ0Jsb2NrKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjQxLDcgKzI0MSw3IEBAIGJvb2wgQmxvY2tNYXJn
aW5Db2xsYXBzZTo6bWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQmVmb3JlKGNv
bnN0IEJveCYKICAgICAvLyAxLiBUaGlzIGlzIHRoZSBmaXJzdCBpbi1mbG93IGNoaWxkIGFuZCBp
dHMgbWFyZ2lucyBjb2xsYXBzZSB0aHJvdWdoIGFuZCB0aGUgbWFyZ2luIGJlZm9yZSBjb2xsYXBz
ZXMgd2l0aCBwYXJlbnQncyBtYXJnaW4gYmVmb3JlIG9yCiAgICAgLy8gMi4gVGhpcyBib3gncyBt
YXJnaW4gYmVmb3JlIGNvbGxhcHNlcyB3aXRoIHRoZSBwcmV2aW91cyBzaWJsaW5nJ3MgbWFyZ2lu
IGFmdGVyIGFuZCB0aGF0IHNpYmxpbmcgY29sbGFwc2VzIHRocm91Z2ggYW5kCiAgICAgLy8gd2Ug
Y2FuIGdldCB0byB0aGUgZmlyc3QgaW4tZmxvdyBjaGlsZCBsaWtlIHRoYXQuCi0gICAgYXV0byog
Zmlyc3RJbkZsb3dDaGlsZCA9IGxheW91dEJveC5jb250YWluaW5nQmxvY2soKS5maXJzdEluRmxv
d0NoaWxkKCk7CisgICAgYXV0byogZmlyc3RJbkZsb3dDaGlsZCA9IEZvcm1hdHRpbmdDb250ZXh0
Ojpjb250YWluaW5nQmxvY2sobGF5b3V0Qm94KS5maXJzdEluRmxvd0NoaWxkKCk7CiAgICAgZm9y
IChhdXRvKiBjdXJyZW50Qm94ID0gJmxheW91dEJveDsgY3VycmVudEJveDsgY3VycmVudEJveCA9
IGN1cnJlbnRCb3gtPnByZXZpb3VzSW5GbG93U2libGluZygpKSB7CiAgICAgICAgIGlmICghbWFy
Z2luc0NvbGxhcHNlVGhyb3VnaCgqY3VycmVudEJveCkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0yNzcsNyArMjc3LDcgQEAgYm9vbCBCbG9ja01hcmdpbkNvbGxhcHNlOjptYXJnaW5B
ZnRlckNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5BZnRlcihjb25zdCBCb3gmIGwKICAgICBpZiAo
bGF5b3V0Qm94Lm5leHRJbkZsb3dTaWJsaW5nKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIGF1dG8mIGNvbnRhaW5pbmdCbG9jayA9IGxheW91dEJveC5jb250YWluaW5nQmxvY2soKTsK
KyAgICBhdXRvJiBjb250YWluaW5nQmxvY2sgPSBGb3JtYXR0aW5nQ29udGV4dDo6Y29udGFpbmlu
Z0Jsb2NrKGxheW91dEJveCk7CiAgICAgLy8gTWFyZ2lucyBvZiBlbGVtZW50cyB0aGF0IGVzdGFi
bGlzaCBuZXcgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0cyBkbyBub3QgY29sbGFwc2Ugd2l0aCB0
aGVpciBpbi1mbG93IGNoaWxkcmVuLgogICAgIGlmIChlc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGlu
Z0NvbnRleHQoY29udGFpbmluZ0Jsb2NrKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9QcmVj
b21wdXRlZEJsb2NrTWFyZ2luQ29sbGFwc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9ibG9jay9QcmVjb21wdXRlZEJsb2NrTWFyZ2luQ29sbGFwc2UuY3Bw
CmluZGV4IDcwOTllZGUxYzFkYi4uNGQ4MDE5MGM4MjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL1ByZWNvbXB1dGVkQmxvY2tNYXJn
aW5Db2xsYXBzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9ibG9jay9QcmVjb21wdXRlZEJsb2NrTWFyZ2luQ29sbGFwc2UuY3BwCkBAIC00Myw3ICs0
Myw3IEBAIFVzZWRWZXJ0aWNhbE1hcmdpbjo6UG9zaXRpdmVBbmROZWdhdGl2ZVBhaXI6OlZhbHVl
cyBCbG9ja01hcmdpbkNvbGxhcHNlOjpwcmVjb21wCiAgICAgaWYgKGZvcm1hdHRpbmdTdGF0ZSgp
Lmhhc1VzZWRWZXJ0aWNhbE1hcmdpbihsYXlvdXRCb3gpKQogICAgICAgICByZXR1cm4gZm9ybWF0
dGluZ1N0YXRlKCkudXNlZFZlcnRpY2FsTWFyZ2luKGxheW91dEJveCkucG9zaXRpdmVBbmROZWdh
dGl2ZVZhbHVlcy5iZWZvcmU7CiAKLSAgICBhdXRvIGhvcml6b250YWxDb25zdHJhaW50cyA9IGZv
cm1hdHRpbmdHZW9tZXRyeS5jb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQobGF5b3V0Qm94LmNv
bnRhaW5pbmdCbG9jaygpKS5ob3Jpem9udGFsKCk7CisgICAgYXV0byBob3Jpem9udGFsQ29uc3Ry
YWludHMgPSBmb3JtYXR0aW5nR2VvbWV0cnkuY29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50KEZv
cm1hdHRpbmdDb250ZXh0Ojpjb250YWluaW5nQmxvY2sobGF5b3V0Qm94KSkuaG9yaXpvbnRhbCgp
OwogICAgIGF1dG8gY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbiA9IGZvcm1hdHRpbmdHZW9tZXRyeS5j
b21wdXRlZFZlcnRpY2FsTWFyZ2luKGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzKTsK
ICAgICBhdXRvIG5vbkNvbGxhcHNlZE1hcmdpbiA9IFVzZWRWZXJ0aWNhbE1hcmdpbjo6Tm9uQ29s
bGFwc2VkVmFsdWVzIHsgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmUudmFsdWVfb3IoMCks
IGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYWZ0ZXIudmFsdWVfb3IoMCkgfTsKICAgICByZXR1cm4g
cHJlY29tcHV0ZWRQb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luQmVmb3JlKGxheW91dEJveCwgbm9uQ29s
bGFwc2VkTWFyZ2luLCBmb3JtYXR0aW5nR2VvbWV0cnkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAKaW5kZXggMGIzNTE2YTM1YzFkLi5jYjQ5MTBi
NTJlZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91
dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94
LmNwcApAQCAtMTk5LDQ5ICsxOTksNiBAQCBib29sIEJveDo6aXNGbG9hdEF2b2lkZXIoKSBjb25z
dAogICAgIHJldHVybiBlc3RhYmxpc2hlc1RhYmxlRm9ybWF0dGluZ0NvbnRleHQoKSB8fCBlc3Rh
Ymxpc2hlc0luZGVwZW5kZW50Rm9ybWF0dGluZ0NvbnRleHQoKSB8fCBlc3RhYmxpc2hlc0Jsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQoKTsKIH0KIAotY29uc3QgQ29udGFpbmVyQm94JiBCb3g6OmNvbnRh
aW5pbmdCbG9jaygpIGNvbnN0Ci17Ci0gICAgLy8gRmluZGluZyB0aGUgY29udGFpbmluZyBibG9j
ayBieSB0cmF2ZXJzaW5nIHRoZSB0cmVlIGR1cmluZyB0cmVlIGNvbnN0cnVjdGlvbiBjb3VsZCBw
cm92aWRlIGluY29ycmVjdCByZXN1bHQuCi0gICAgQVNTRVJUKCFQaGFzZTo6aXNJblRyZWVCdWls
ZGluZygpKTsKLSAgICAvLyBJZiB3ZSBldmVyIGVuZCB1cCBoZXJlIHdpdGggdGhlIElDQiwgd2Ug
bXVzdCBiZSBkb2luZyBzb21ldGhpbmcgbm90LXNvLWdyZWF0LgotICAgIFJFTEVBU0VfQVNTRVJU
KCFpczxJbml0aWFsQ29udGFpbmluZ0Jsb2NrPigqdGhpcykpOwotICAgIC8vIFRoZSBjb250YWlu
aW5nIGJsb2NrIGluIHdoaWNoIHRoZSByb290IGVsZW1lbnQgbGl2ZXMgaXMgYSByZWN0YW5nbGUg
Y2FsbGVkIHRoZSBpbml0aWFsIGNvbnRhaW5pbmcgYmxvY2suCi0gICAgLy8gRm9yIG90aGVyIGVs
ZW1lbnRzLCBpZiB0aGUgZWxlbWVudCdzIHBvc2l0aW9uIGlzICdyZWxhdGl2ZScgb3IgJ3N0YXRp
YycsIHRoZSBjb250YWluaW5nIGJsb2NrIGlzIGZvcm1lZCBieSB0aGUKLSAgICAvLyBjb250ZW50
IGVkZ2Ugb2YgdGhlIG5lYXJlc3QgYmxvY2sgY29udGFpbmVyIGFuY2VzdG9yIGJveCBvciB3aGlj
aCBlc3RhYmxpc2hlcyBhIGZvcm1hdHRpbmcgY29udGV4dC4KLSAgICAvLyBJZiB0aGUgZWxlbWVu
dCBoYXMgJ3Bvc2l0aW9uOiBmaXhlZCcsIHRoZSBjb250YWluaW5nIGJsb2NrIGlzIGVzdGFibGlz
aGVkIGJ5IHRoZSB2aWV3cG9ydAotICAgIC8vIElmIHRoZSBlbGVtZW50IGhhcyAncG9zaXRpb246
IGFic29sdXRlJywgdGhlIGNvbnRhaW5pbmcgYmxvY2sgaXMgZXN0YWJsaXNoZWQgYnkgdGhlIG5l
YXJlc3QgYW5jZXN0b3Igd2l0aCBhCi0gICAgLy8gJ3Bvc2l0aW9uJyBvZiAnYWJzb2x1dGUnLCAn
cmVsYXRpdmUnIG9yICdmaXhlZCcuCi0gICAgaWYgKCFpc1Bvc2l0aW9uZWQoKSB8fCBpc0luRmxv
d1Bvc2l0aW9uZWQoKSkgewotICAgICAgICBhdXRvKiBhbmNlc3RvciA9ICZwYXJlbnQoKTsKLSAg
ICAgICAgZm9yICg7ICFpczxJbml0aWFsQ29udGFpbmluZ0Jsb2NrPigqYW5jZXN0b3IpOyBhbmNl
c3RvciA9ICZhbmNlc3Rvci0+cGFyZW50KCkpIHsKLSAgICAgICAgICAgIGlmIChhbmNlc3Rvci0+
aXNDb250YWluaW5nQmxvY2tGb3JJbkZsb3coKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gKmFu
Y2VzdG9yOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAqYW5jZXN0b3I7Ci0gICAgfQotCi0g
ICAgaWYgKGlzRml4ZWRQb3NpdGlvbmVkKCkpIHsKLSAgICAgICAgYXV0byogYW5jZXN0b3IgPSAm
cGFyZW50KCk7Ci0gICAgICAgIGZvciAoOyAhaXM8SW5pdGlhbENvbnRhaW5pbmdCbG9jaz4oKmFu
Y2VzdG9yKTsgYW5jZXN0b3IgPSAmYW5jZXN0b3ItPnBhcmVudCgpKSB7Ci0gICAgICAgICAgICBp
ZiAoYW5jZXN0b3ItPmlzQ29udGFpbmluZ0Jsb2NrRm9yRml4ZWRQb3NpdGlvbigpKQotICAgICAg
ICAgICAgICAgIHJldHVybiAqYW5jZXN0b3I7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuICph
bmNlc3RvcjsKLSAgICB9Ci0KLSAgICBpZiAoaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpIHsKLSAg
ICAgICAgYXV0byogYW5jZXN0b3IgPSAmcGFyZW50KCk7Ci0gICAgICAgIGZvciAoOyAhaXM8SW5p
dGlhbENvbnRhaW5pbmdCbG9jaz4oKmFuY2VzdG9yKTsgYW5jZXN0b3IgPSAmYW5jZXN0b3ItPnBh
cmVudCgpKSB7Ci0gICAgICAgICAgICBpZiAoYW5jZXN0b3ItPmlzQ29udGFpbmluZ0Jsb2NrRm9y
T3V0T2ZGbG93UG9zaXRpb24oKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gKmFuY2VzdG9yOwot
ICAgICAgICB9Ci0gICAgICAgIHJldHVybiAqYW5jZXN0b3I7Ci0gICAgfQotCi0gICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIHBhcmVudCgpOwotfQotCiBib29sIEJveDo6aXNJ
bmxpbmVCbG9ja0JveCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc3R5bGUuZGlzcGxheSgpID09
IERpc3BsYXlUeXBlOjpJbmxpbmVCbG9jazsKQEAgLTQwNiw3ICszNjMsNyBAQCBib29sIEJveDo6
aXNPdmVyZmxvd1Zpc2libGUoKSBjb25zdAogICAgIC8vIGlmIHRoZSB2YWx1ZSBvbiB0aGUgcm9v
dCBlbGVtZW50IGlzICd2aXNpYmxlJy4gVGhlICd2aXNpYmxlJyB2YWx1ZSB3aGVuIHVzZWQgZm9y
IHRoZSB2aWV3cG9ydCBtdXN0IGJlIGludGVycHJldGVkIGFzICdhdXRvJy4KICAgICAvLyBUaGUg
ZWxlbWVudCBmcm9tIHdoaWNoIHRoZSB2YWx1ZSBpcyBwcm9wYWdhdGVkIG11c3QgaGF2ZSBhIHVz
ZWQgdmFsdWUgZm9yICdvdmVyZmxvdycgb2YgJ3Zpc2libGUnLgogICAgIGlmIChpc0JvZHlCb3go
KSkgewotICAgICAgICBhdXRvJiBkb2N1bWVudEJveCA9IGNvbnRhaW5pbmdCbG9jaygpOworICAg
ICAgICBhdXRvJiBkb2N1bWVudEJveCA9IHBhcmVudCgpOwogICAgICAgICBpZiAoIWRvY3VtZW50
Qm94LmlzRG9jdW1lbnRCb3goKSkKICAgICAgICAgICAgIHJldHVybiBpc092ZXJmbG93VmlzaWJs
ZTsKICAgICAgICAgaWYgKCFkb2N1bWVudEJveC5pc092ZXJmbG93VmlzaWJsZSgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guaAppbmRleCAxYTFjNmI1MDNj
MjMuLmNiNzFhMmUwMDI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91
dHRyZWUvTGF5b3V0Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUv
TGF5b3V0Qm94LmgKQEAgLTkyLDggKzkyLDYgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0Zsb2F0
aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkgY29uc3QgeyByZXR1cm4gaXNGbG9hdGluZ1Bvc2l0
aW9uZWQoKSB8fCBpc091dE9mRmxvd1Bvc2l0aW9uZWQoKTsgfQogCi0gICAgY29uc3QgQ29udGFp
bmVyQm94JiBjb250YWluaW5nQmxvY2soKSBjb25zdDsKLQogICAgIGJvb2wgaXNDb250YWluaW5n
QmxvY2tGb3JJbkZsb3coKSBjb25zdDsKICAgICBib29sIGlzQ29udGFpbmluZ0Jsb2NrRm9yRml4
ZWRQb3NpdGlvbigpIGNvbnN0OwogICAgIGJvb2wgaXNDb250YWluaW5nQmxvY2tGb3JPdXRPZkZs
b3dQb3NpdGlvbigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xh
eW91dHRyZWUvTGF5b3V0Q29udGFpbmluZ0Jsb2NrQ2hhaW5JdGVyYXRvci5oIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Q29udGFpbmluZ0Jsb2NrQ2hhaW5JdGVyYXRv
ci5oCmluZGV4IDJlOGQ0MzQwNDcwZi4uYTM4ODcwMjQ4MTJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRDb250YWluaW5nQmxvY2tDaGFpbkl0ZXJh
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Q29udGFp
bmluZ0Jsb2NrQ2hhaW5JdGVyYXRvci5oCkBAIC02OCw3ICs2OCw3IEBAIGlubGluZSBMYXlvdXRD
b250YWluaW5nQmxvY2tDaGFpbkl0ZXJhdG9yOjpMYXlvdXRDb250YWluaW5nQmxvY2tDaGFpbkl0
ZXJhdG9yKGNvCiBpbmxpbmUgTGF5b3V0Q29udGFpbmluZ0Jsb2NrQ2hhaW5JdGVyYXRvciYgTGF5
b3V0Q29udGFpbmluZ0Jsb2NrQ2hhaW5JdGVyYXRvcjo6b3BlcmF0b3IrKygpCiB7CiAgICAgQVNT
RVJUKG1fY3VycmVudCk7Ci0gICAgbV9jdXJyZW50ID0gbV9jdXJyZW50LT5pc0luaXRpYWxDb250
YWluaW5nQmxvY2soKSA/IG51bGxwdHIgOiAmbV9jdXJyZW50LT5jb250YWluaW5nQmxvY2soKTsK
KyAgICBtX2N1cnJlbnQgPSBtX2N1cnJlbnQtPmlzSW5pdGlhbENvbnRhaW5pbmdCbG9jaygpID8g
bnVsbHB0ciA6ICZGb3JtYXR0aW5nQ29udGV4dDo6Y29udGFpbmluZ0Jsb2NrKCptX2N1cnJlbnQp
OwogICAgIHJldHVybiAqdGhpczsKIH0KIApAQCAtODAsMTMgKzgwLDEzIEBAIGlubGluZSBMYXlv
dXRDb250YWluaW5nQmxvY2tDaGFpbkl0ZXJhdG9yQWRhcHRlcjo6TGF5b3V0Q29udGFpbmluZ0Js
b2NrQ2hhaW5JdGVyCiAKIGlubGluZSBMYXlvdXRDb250YWluaW5nQmxvY2tDaGFpbkl0ZXJhdG9y
QWRhcHRlciBjb250YWluaW5nQmxvY2tDaGFpbihjb25zdCBCb3gmIGxheW91dEJveCkKIHsKLSAg
ICByZXR1cm4gTGF5b3V0Q29udGFpbmluZ0Jsb2NrQ2hhaW5JdGVyYXRvckFkYXB0ZXIobGF5b3V0
Qm94LmNvbnRhaW5pbmdCbG9jaygpKTsKKyAgICByZXR1cm4gTGF5b3V0Q29udGFpbmluZ0Jsb2Nr
Q2hhaW5JdGVyYXRvckFkYXB0ZXIoRm9ybWF0dGluZ0NvbnRleHQ6OmNvbnRhaW5pbmdCbG9jayhs
YXlvdXRCb3gpKTsKIH0KIAogaW5saW5lIExheW91dENvbnRhaW5pbmdCbG9ja0NoYWluSXRlcmF0
b3JBZGFwdGVyIGNvbnRhaW5pbmdCbG9ja0NoYWluKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25z
dCBDb250YWluZXJCb3gmIHN0YXlXaXRoaW4pCiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc0Rl
c2NlbmRhbnRPZihzdGF5V2l0aGluKSk7Ci0gICAgcmV0dXJuIExheW91dENvbnRhaW5pbmdCbG9j
a0NoYWluSXRlcmF0b3JBZGFwdGVyKGxheW91dEJveC5jb250YWluaW5nQmxvY2soKSwgJnN0YXlX
aXRoaW4pOworICAgIHJldHVybiBMYXlvdXRDb250YWluaW5nQmxvY2tDaGFpbkl0ZXJhdG9yQWRh
cHRlcihGb3JtYXR0aW5nQ29udGV4dDo6Y29udGFpbmluZ0Jsb2NrKGxheW91dEJveCksICZzdGF5
V2l0aGluKTsKIH0KIAogaW5saW5lIExheW91dENvbnRhaW5pbmdCbG9ja0NoYWluSXRlcmF0b3JB
ZGFwdGVyIGNvbnRhaW5pbmdCbG9ja0NoYWluV2l0aGluRm9ybWF0dGluZ0NvbnRleHQoY29uc3Qg
Qm94JiBsYXlvdXRCb3gsIGNvbnN0IENvbnRhaW5lckJveCYgcm9vdCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>462481</attachid>
            <date>2022-09-20 17:15:48 -0700</date>
            <delta_ts>2022-09-21 07:42:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-245398-20220920171547.patch</filename>
            <type>text/plain</type>
            <size>35491</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSAwZDY4YjlmNzMyMTI1M2ZjOGUzY2ViYzY0ZTIxYjI2Yzk5NmQ3NWI3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJ1anRhcyA8emFsYW5AYXBwbGUuY29tPgpEYXRlOiBN
b24sIDE5IFNlcCAyMDIyIDE1OjE1OjQ4IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gW0xGQ11bQ2xl
YW51cF0gUmVtb3ZlIExheW91dDo6Qm94Ojpjb250YWluaW5nQmxvY2sKIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDUzOTgKClJldmlld2VkIGJ5IEFudHRpIEtvaXZp
c3RvLgoKTGV0J3Mgbm90IGNsdXR0ZXIgTGF5b3V0OjpCb3ggaW50ZXJmYWNlIHdpdGggbGF5b3V0
IHJlbGF0ZWQgZnVuY3Rpb25zLiBNb3ZlIGNvbnRhaW5pbmdCbG9jaygpIHRvIEZvcm1hdHRpbmdD
b250ZXh0LgoKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcDoKKFdlYkNv
cmU6OkxheW91dDo6b3V0cHV0TWlzbWF0Y2hpbmdCbG9ja0JveEluZm9ybWF0aW9uSWZOZWVkZWQp
OgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNwcDoKKFdl
YkNvcmU6OkxheW91dDo6RmxvYXRpbmdDb250ZXh0Ojp2ZXJ0aWNhbFBvc2l0aW9uV2l0aENsZWFy
YW5jZSBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6OkZsb2F0aW5nQ29udGV4dDo6YWJzb2x1dGVD
b29yZGluYXRlcyBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6OkZsb2F0aW5nQ29udGV4dDo6bWFw
UG9pbnRGcm9tRm9ybWF0dGluZ0NvbnRleHRSb290VG9GbG9hdGluZ1N0YXRlUm9vdCBjb25zdCk6
CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nQ29u
dGV4dC5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRPdXRP
ZkZsb3dDb250ZW50KToKKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OmNvbnRh
aW5pbmdCbG9jayk6CihXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0Ojpmb3JtYXR0
aW5nQ29udGV4dFJvb3QpOgooV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6dmFs
aWRhdGVHZW9tZXRyeUNvbnN0cmFpbnRzQWZ0ZXJMYXlvdXQgY29uc3QpOgoqIFNvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0NvbnRleHQuaDoKKiBTb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdHZW9tZXRyeS5j
cHA6CihXZWJDb3JlOjpMYXlvdXQ6OmlzSGVpZ2h0QXV0byk6CihXZWJDb3JlOjpMYXlvdXQ6OkZv
cm1hdHRpbmdHZW9tZXRyeTo6c3RhdGljVmVydGljYWxQb3NpdGlvbkZvck91dE9mRmxvd1Bvc2l0
aW9uZWQgY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nR2VvbWV0cnk6OnN0YXRp
Y0hvcml6b250YWxQb3NpdGlvbkZvck91dE9mRmxvd1Bvc2l0aW9uZWQgY29uc3QpOgooV2ViQ29y
ZTo6TGF5b3V0OjpGb3JtYXR0aW5nR2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkSG9yaXpv
bnRhbEdlb21ldHJ5IGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0dlb21ldHJ5
OjpvdXRPZkZsb3dSZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeSBjb25zdCk6CihXZWJDb3JlOjpM
YXlvdXQ6OkZvcm1hdHRpbmdHZW9tZXRyeTo6aW5GbG93UG9zaXRpb25lZFBvc2l0aW9uT2Zmc2V0
IGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6dXNlZFdyaXRpbmdNb2RlKToKKiBTb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdRdWlya3MuY3BwOgooV2Vi
Q29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nUXVpcmtzOjpoZWlnaHRWYWx1ZU9mTmVhcmVzdENvbnRh
aW5pbmdCbG9ja1dpdGhGaXhlZEhlaWdodCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcDoKKFdl
YkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVu
dCk6CihXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OnByZWNvbXB1dGVW
ZXJ0aWNhbFBvc2l0aW9uRm9yQm94QW5kQW5jZXN0b3JzKToKKFdlYkNvcmU6OkxheW91dDo6Qmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6dmVydGljYWxQb3NpdGlvbldpdGhNYXJnaW4gY29uc3QpOgoq
IFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3Jt
YXR0aW5nR2VvbWV0cnkuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdHZW9t
ZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRDb250ZW50V2lkdGhBbmRNYXJnaW4gY29uc3QpOgoqIFNv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0
aW5nUXVpcmtzLmNwcDoKKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nUXVpcmtzOjpz
aG91bGRDb2xsYXBzZU1hcmdpbkJlZm9yZVdpdGhQYXJlbnRNYXJnaW5CZWZvcmUpOgooV2ViQ29y
ZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdRdWlya3M6OnNob3VsZENvbGxhcHNlTWFyZ2luQWZ0
ZXJXaXRoUGFyZW50TWFyZ2luQWZ0ZXIpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvYmxvY2svQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHA6CihXZWJDb3JlOjpMYXlv
dXQ6OkJsb2NrTWFyZ2luQ29sbGFwc2U6Om1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQYXJlbnRN
YXJnaW5BZnRlciBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrTWFyZ2luQ29sbGFwc2U6
Om1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5CZWZvcmUgY29uc3QpOgooV2Vi
Q29yZTo6TGF5b3V0OjpCbG9ja01hcmdpbkNvbGxhcHNlOjptYXJnaW5BZnRlckNvbGxhcHNlc1dp
dGhQYXJlbnRNYXJnaW5CZWZvcmUgY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0OjpCbG9ja01hcmdp
bkNvbGxhcHNlOjptYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5BZnRlciBjb25z
dCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9QcmVj
b21wdXRlZEJsb2NrTWFyZ2luQ29sbGFwc2UuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpCbG9ja01h
cmdpbkNvbGxhcHNlOjpwcmVjb21wdXRlZFBvc2l0aXZlTmVnYXRpdmVWYWx1ZXMgY29uc3QpOgoq
IFNvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHA6CihXZWJDb3Jl
OjpMYXlvdXQ6OkJveDo6aXNPdmVyZmxvd1Zpc2libGUgY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0
OjpCb3g6OmNvbnRhaW5pbmdCbG9jayBjb25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUv
bGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94Lmg6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2xh
eW91dHRyZWUvTGF5b3V0Q29udGFpbmluZ0Jsb2NrQ2hhaW5JdGVyYXRvci5oOgooV2ViQ29yZTo6
TGF5b3V0OjpMYXlvdXRDb250YWluaW5nQmxvY2tDaGFpbkl0ZXJhdG9yOjpvcGVyYXRvcisrKToK
KFdlYkNvcmU6OkxheW91dDo6Y29udGFpbmluZ0Jsb2NrQ2hhaW4pOgotLS0KIFNvdXJjZS9XZWJD
b3JlL2xheW91dC9WZXJpZmljYXRpb24uY3BwICAgICAgICB8ICA0ICstCiAuLi4vV2ViQ29yZS9s
YXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5jcHAgfCAgOCArLS0KIC4uLi9mb3JtYXR0aW5n
Q29udGV4dHMvRm9ybWF0dGluZ0NvbnRleHQuY3BwICB8IDU4ICsrKysrKysrKysrKysrKystLS0K
IC4uLi9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0NvbnRleHQuaCAgICB8ICAxICsKIC4u
Li9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0dlb21ldHJ5LmNwcCB8IDE4ICsrKy0tLQog
Li4uL2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nUXVpcmtzLmNwcCAgIHwgIDIgKy0KIC4u
Li9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcCAgICAgICAgICB8ICA4ICstLQogLi4u
L2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0dlb21ldHJ5LmNwcCAgICAgICAgIHwgIDIgKy0KIC4uLi9i
bG9jay9CbG9ja0Zvcm1hdHRpbmdRdWlya3MuY3BwICAgICAgICAgICB8ICA0ICstCiAuLi4vYmxv
Y2svQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAgICAgICAgICAgICAgfCAgOCArLS0KIC4uLi9ibG9j
ay9QcmVjb21wdXRlZEJsb2NrTWFyZ2luQ29sbGFwc2UuY3BwICB8ICAyICstCiAuLi4vV2ViQ29y
ZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwICAgfCA0NSArLS0tLS0tLS0tLS0tLQog
U291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmggIHwgIDIgLQogLi4u
L0xheW91dENvbnRhaW5pbmdCbG9ja0NoYWluSXRlcmF0b3IuaCAgICAgIHwgIDYgKy0KIDE0IGZp
bGVzIGNoYW5nZWQsIDg0IGluc2VydGlvbnMoKyksIDg0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9WZXJpZmljYXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAKaW5kZXggNzZlMWZlZjY0MjVmLi43ZmM5Njg4NDVl
NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9WZXJpZmljYXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9WZXJpZmljYXRpb24uY3BwCkBAIC0xODMsNyArMTgz
LDcgQEAgc3RhdGljIGJvb2wgb3V0cHV0TWlzbWF0Y2hpbmdCbG9ja0JveEluZm9ybWF0aW9uSWZO
ZWVkZWQoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb24KICAgICAgICAgICAgIHJldHVybiBCb3hHZW9t
ZXRyeTo6Ym9yZGVyQm94UmVjdChib3hHZW9tZXRyeSk7CiAKICAgICAgICAgLy8gUHJvZHVjZSBh
IFJlbmRlckJveCBtYXRjaGluZyBtYXJnaW4gYm94LgotICAgICAgICBhdXRvIGNvbnRhaW5pbmdC
bG9ja1dpZHRoID0gbGF5b3V0U3RhdGUuZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94LmNvbnRhaW5p
bmdCbG9jaygpKS5jb250ZW50Qm94V2lkdGgoKTsKKyAgICAgICAgYXV0byBjb250YWluaW5nQmxv
Y2tXaWR0aCA9IGxheW91dFN0YXRlLmdlb21ldHJ5Rm9yQm94KEZvcm1hdHRpbmdDb250ZXh0Ojpj
b250YWluaW5nQmxvY2sobGF5b3V0Qm94KSkuY29udGVudEJveFdpZHRoKCk7CiAgICAgICAgIGF1
dG8gbWFyZ2luU3RhcnQgPSBMYXlvdXRVbml0IHsgfTsKICAgICAgICAgYXV0byYgbWFyZ2luU3Rh
cnRTdHlsZSA9IGxheW91dEJveC5zdHlsZSgpLm1hcmdpblN0YXJ0KCk7CiAgICAgICAgIGlmICht
YXJnaW5TdGFydFN0eWxlLmlzRml4ZWQoKSB8fCBtYXJnaW5TdGFydFN0eWxlLmlzUGVyY2VudCgp
IHx8IG1hcmdpblN0YXJ0U3R5bGUuaXNDYWxjdWxhdGVkKCkpCkBAIC0yMjAsNyArMjIwLDcgQEAg
c3RhdGljIGJvb2wgb3V0cHV0TWlzbWF0Y2hpbmdCbG9ja0JveEluZm9ybWF0aW9uSWZOZWVkZWQo
VGV4dFN0cmVhbSYgc3RyZWFtLCBjb24KICAgICBpZiAobGF5b3V0Qm94LmlzVGFibGVCb3goKSkg
ewogICAgICAgICAvLyBXaGVuIHRoZSA8dGFibGU+IGlzIG91dC1vZi1mbG93IHBvc2l0aW9uZWQs
IHRoZSB3cmFwcGVyIHRhYmxlIGJveCBoYXMgdGhlIG9mZnNldAogICAgICAgICAvLyB3aGlsZSB0
aGUgYWN0dWFsIHRhYmxlIGJveCBpcyBzdGF0aWMsIGluZmxvdy4KLSAgICAgICAgYXV0byYgdGFi
bGVXcmFwcGVyQm94R2VvbWV0cnkgPSBsYXlvdXRTdGF0ZS5nZW9tZXRyeUZvckJveChsYXlvdXRC
b3guY29udGFpbmluZ0Jsb2NrKCkpOworICAgICAgICBhdXRvJiB0YWJsZVdyYXBwZXJCb3hHZW9t
ZXRyeSA9IGxheW91dFN0YXRlLmdlb21ldHJ5Rm9yQm94KEZvcm1hdHRpbmdDb250ZXh0Ojpjb250
YWluaW5nQmxvY2sobGF5b3V0Qm94KSk7CiAgICAgICAgIGJveEdlb21ldHJ5Lm1vdmVCeShCb3hH
ZW9tZXRyeTo6Ym9yZGVyQm94VG9wTGVmdCh0YWJsZVdyYXBwZXJCb3hHZW9tZXRyeSkpOwogICAg
ICAgICAvLyBUYWJsZSB3cmFwcGVyIGJveCBoYXMgdGhlIG1hcmdpbiB2YWx1ZXMgZm9yIHRoZSB0
YWJsZS4KICAgICAgICAgYm94R2VvbWV0cnkuc2V0SG9yaXpvbnRhbE1hcmdpbih0YWJsZVdyYXBw
ZXJCb3hHZW9tZXRyeS5ob3Jpem9udGFsTWFyZ2luKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuY3BwCmluZGV4IDM5NGM5ZTRkMjViMi4uZjY1
NTJkOGIyNTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0
aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGlu
Z0NvbnRleHQuY3BwCkBAIC0zNDEsMTAgKzM0MSwxMCBAQCBzdGQ6Om9wdGlvbmFsPEZsb2F0aW5n
Q29udGV4dDo6UG9zaXRpb25XaXRoQ2xlYXJhbmNlPiBGbG9hdGluZ0NvbnRleHQ6OnZlcnRpY2Fs
UAogICAgICAgICBBU1NFUlQoKmZsb2F0Qm90dG9tID09IGxvZ2ljYWxUb3BSZWxhdGl2ZVRvRmxv
YXRpbmdTdGF0ZVJvb3QpOwogCiAgICAgICAgIC8vIFRoZSByZXR1cm4gdmVydGljYWwgcG9zaXRp
b24gbmVlZHMgdG8gYmUgaW4gdGhlIGNvbnRhaW5pbmcgYmxvY2sncyBjb29yZGluYXRlIHN5c3Rl
bS4KLSAgICAgICAgaWYgKCZsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkgPT0gJm1fZmxvYXRp
bmdTdGF0ZS5yb290KCkpCisgICAgICAgIGlmICgmRm9ybWF0dGluZ0NvbnRleHQ6OmNvbnRhaW5p
bmdCbG9jayhsYXlvdXRCb3gpID09ICZtX2Zsb2F0aW5nU3RhdGUucm9vdCgpKQogICAgICAgICAg
ICAgcmV0dXJuIFBvc2l0aW9uV2l0aENsZWFyYW5jZSB7IGxvZ2ljYWxUb3BSZWxhdGl2ZVRvRmxv
YXRpbmdTdGF0ZVJvb3QsIGNsZWFyYW5jZSB9OwogCi0gICAgICAgIGF1dG8gY29udGFpbmluZ0Js
b2NrUm9vdFJlbGF0aXZlVG9wID0gbWFwVG9wTGVmdFRvRmxvYXRpbmdTdGF0ZVJvb3QobGF5b3V0
Qm94LmNvbnRhaW5pbmdCbG9jaygpKS55KCk7CisgICAgICAgIGF1dG8gY29udGFpbmluZ0Jsb2Nr
Um9vdFJlbGF0aXZlVG9wID0gbWFwVG9wTGVmdFRvRmxvYXRpbmdTdGF0ZVJvb3QoRm9ybWF0dGlu
Z0NvbnRleHQ6OmNvbnRhaW5pbmdCbG9jayhsYXlvdXRCb3gpKS55KCk7CiAgICAgICAgIHJldHVy
biBQb3NpdGlvbldpdGhDbGVhcmFuY2UgeyBsb2dpY2FsVG9wUmVsYXRpdmVUb0Zsb2F0aW5nU3Rh
dGVSb290IC0gY29udGFpbmluZ0Jsb2NrUm9vdFJlbGF0aXZlVG9wLCBjbGVhcmFuY2UgfTsKICAg
ICB9OwogCkBAIC01MDQsNyArNTA0LDcgQEAgdm9pZCBGbG9hdGluZ0NvbnRleHQ6OmZpbmRQb3Np
dGlvbkZvckZvcm1hdHRpbmdDb250ZXh0Um9vdChGbG9hdEF2b2lkZXImIGZsb2F0QXYKIAogRmxv
YXRpbmdDb250ZXh0OjpBYnNvbHV0ZUNvb3JkaW5hdGVWYWx1ZXNGb3JGbG9hdEF2b2lkZXIgRmxv
YXRpbmdDb250ZXh0OjphYnNvbHV0ZUNvb3JkaW5hdGVzKGNvbnN0IEJveCYgZmxvYXRBdm9pZGVy
KSBjb25zdAogewotICAgIGF1dG8mIGNvbnRhaW5pbmdCbG9jayA9IGZsb2F0QXZvaWRlci5jb250
YWluaW5nQmxvY2soKTsKKyAgICBhdXRvJiBjb250YWluaW5nQmxvY2sgPSBGb3JtYXR0aW5nQ29u
dGV4dDo6Y29udGFpbmluZ0Jsb2NrKGZsb2F0QXZvaWRlcik7CiAgICAgYXV0byYgY29udGFpbmlu
Z0Jsb2NrR2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9yQm94KGNvbnRh
aW5pbmdCbG9jaywgRm9ybWF0dGluZ0NvbnRleHQ6OkVzY2FwZVJlYXNvbjo6RmxvYXRCb3hJc0Fs
d2F5c1JlbGF0aXZlVG9GbG9hdFN0YXRlUm9vdCk7CiAgICAgYXV0byBhYnNvbHV0ZVRvcExlZnQg
PSBtYXBUb3BMZWZ0VG9GbG9hdGluZ1N0YXRlUm9vdChmbG9hdEF2b2lkZXIpOwogCkBAIC01MzEs
NyArNTMxLDcgQEAgUG9pbnQgRmxvYXRpbmdDb250ZXh0OjptYXBQb2ludEZyb21Gb3JtYXR0aW5n
Q29udGV4dFJvb3RUb0Zsb2F0aW5nU3RhdGVSb290KFBvaW4KICAgICBpZiAoJmZyb20gPT0gJnRv
KQogICAgICAgICByZXR1cm4gcG9zaXRpb247CiAgICAgYXV0byBtYXBwZWRQb3NpdGlvbiA9IHBv
c2l0aW9uOwotICAgIGZvciAoYXV0byogY29udGFpbmluZ0Jsb2NrID0gJmZyb207IGNvbnRhaW5p
bmdCbG9jayAhPSAmdG87IGNvbnRhaW5pbmdCbG9jayA9ICZjb250YWluaW5nQmxvY2stPmNvbnRh
aW5pbmdCbG9jaygpKQorICAgIGZvciAoYXV0byogY29udGFpbmluZ0Jsb2NrID0gJmZyb207IGNv
bnRhaW5pbmdCbG9jayAhPSAmdG87IGNvbnRhaW5pbmdCbG9jayA9ICZGb3JtYXR0aW5nQ29udGV4
dDo6Y29udGFpbmluZ0Jsb2NrKCpjb250YWluaW5nQmxvY2spKQogICAgICAgICBtYXBwZWRQb3Np
dGlvbi5tb3ZlQnkoQm94R2VvbWV0cnk6OmJvcmRlckJveFRvcExlZnQoZm9ybWF0dGluZ0NvbnRl
eHQoKS5nZW9tZXRyeUZvckJveCgqY29udGFpbmluZ0Jsb2NrLCBGb3JtYXR0aW5nQ29udGV4dDo6
RXNjYXBlUmVhc29uOjpGbG9hdEJveElzQWx3YXlzUmVsYXRpdmVUb0Zsb2F0U3RhdGVSb290KSkp
OwogICAgIHJldHVybiBtYXBwZWRQb3NpdGlvbjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nQ29udGV4dC5j
cHAKaW5kZXggZjRjMWZkZTEyZmYyLi4zMDQzZjk3MDFkY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0NvbnRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0Nv
bnRleHQuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBGb3JtYXR0aW5nQ29udGV4dDo6bGF5
b3V0T3V0T2ZGbG93Q29udGVudChjb25zdCBDb25zdHJhaW50c0Zvck91dE9mRmxvd0NvbnQKICAg
ICBjb2xsZWN0T3V0T2ZGbG93RGVzY2VuZGFudHNJZk5lZWRlZCgpOwogCiAgICAgYXV0byBjb25z
dHJhaW50c0ZvckxheW91dEJveCA9IFsmXSAoY29uc3QgYXV0byYgb3V0T2ZGbG93Qm94KSB7Ci0g
ICAgICAgIGF1dG8mIGNvbnRhaW5pbmdCbG9jayA9IG91dE9mRmxvd0JveC0+Y29udGFpbmluZ0Js
b2NrKCk7CisgICAgICAgIGF1dG8mIGNvbnRhaW5pbmdCbG9jayA9IHRoaXMtPmNvbnRhaW5pbmdC
bG9jayhvdXRPZkZsb3dCb3gpOwogICAgICAgICByZXR1cm4gJmNvbnRhaW5pbmdCbG9jayA9PSAm
cm9vdCgpID8gY29uc3RyYWludHMgOiBmb3JtYXR0aW5nR2VvbWV0cnkoKS5jb25zdHJhaW50c0Zv
ck91dE9mRmxvd0NvbnRlbnQoY29udGFpbmluZ0Jsb2NrKTsKICAgICB9OwogCkBAIC0yNjksMTAg
KzI2OSwxMyBAQCB2b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojpjb2xsZWN0T3V0T2ZGbG93RGVzY2Vu
ZGFudHNJZk5lZWRlZCgpCiAgICAgZm9yIChhdXRvJiBkZXNjZW5kYW50IDogZGVzY2VuZGFudHNP
ZlR5cGU8Qm94Pihyb290KSkgewogICAgICAgICBpZiAoIWRlc2NlbmRhbnQuaXNPdXRPZkZsb3dQ
b3NpdGlvbmVkKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgYXV0byBuZWFyZXN0
Rm9ybWF0dGluZ0NvbnRleHRSb290ID0gWyZdIHsKLSAgICAgICAgICAgIGF1dG8qIGFuY2VzdG9y
ID0gJmRlc2NlbmRhbnQuY29udGFpbmluZ0Jsb2NrKCk7Ci0gICAgICAgICAgICBmb3IgKDsgIWFu
Y2VzdG9yLT5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKTsgYW5jZXN0b3IgPSAm
YW5jZXN0b3ItPmNvbnRhaW5pbmdCbG9jaygpKSB7IH0KLSAgICAgICAgICAgIHJldHVybiBhbmNl
c3RvcjsKKyAgICAgICAgYXV0byBuZWFyZXN0Rm9ybWF0dGluZ0NvbnRleHRSb290ID0gWyZdICgp
IC0+IGNvbnN0IENvbnRhaW5lckJveCogeworICAgICAgICAgICAgZm9yIChhdXRvJiBjb250YWlu
aW5nQmxvY2sgOiBjb250YWluaW5nQmxvY2tDaGFpbihkZXNjZW5kYW50KSkgeworICAgICAgICAg
ICAgICAgIGlmIChjb250YWluaW5nQmxvY2suZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAmY29udGFpbmluZ0Jsb2NrOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfTsKICAgICAgICAgaWYgKG5lYXJlc3RGb3JtYXR0
aW5nQ29udGV4dFJvb3QoKSAhPSAmcm9vdCkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjkw
LDYgKzI5Myw0NyBAQCBjb25zdCBJbml0aWFsQ29udGFpbmluZ0Jsb2NrJiBGb3JtYXR0aW5nQ29u
dGV4dDo6aW5pdGlhbENvbnRhaW5pbmdCbG9jayhjb25zdCBCbwogICAgIHJldHVybiBkb3duY2Fz
dDxJbml0aWFsQ29udGFpbmluZ0Jsb2NrPigqYW5jZXN0b3IpOwogfQogCitjb25zdCBDb250YWlu
ZXJCb3gmIEZvcm1hdHRpbmdDb250ZXh0Ojpjb250YWluaW5nQmxvY2soY29uc3QgQm94JiBsYXlv
dXRCb3gpCit7CisgICAgLy8gSWYgd2UgZXZlciBlbmQgdXAgaGVyZSB3aXRoIHRoZSBJQ0IsIHdl
IG11c3QgYmUgZG9pbmcgc29tZXRoaW5nIG5vdC1zby1ncmVhdC4KKyAgICBSRUxFQVNFX0FTU0VS
VCghaXM8SW5pdGlhbENvbnRhaW5pbmdCbG9jaz4obGF5b3V0Qm94KSk7CisgICAgLy8gVGhlIGNv
bnRhaW5pbmcgYmxvY2sgaW4gd2hpY2ggdGhlIHJvb3QgZWxlbWVudCBsaXZlcyBpcyBhIHJlY3Rh
bmdsZSBjYWxsZWQgdGhlIGluaXRpYWwgY29udGFpbmluZyBibG9jay4KKyAgICAvLyBGb3Igb3Ro
ZXIgZWxlbWVudHMsIGlmIHRoZSBlbGVtZW50J3MgcG9zaXRpb24gaXMgJ3JlbGF0aXZlJyBvciAn
c3RhdGljJywgdGhlIGNvbnRhaW5pbmcgYmxvY2sgaXMgZm9ybWVkIGJ5IHRoZQorICAgIC8vIGNv
bnRlbnQgZWRnZSBvZiB0aGUgbmVhcmVzdCBibG9jayBjb250YWluZXIgYW5jZXN0b3IgYm94IG9y
IHdoaWNoIGVzdGFibGlzaGVzIGEgZm9ybWF0dGluZyBjb250ZXh0LgorICAgIC8vIElmIHRoZSBl
bGVtZW50IGhhcyAncG9zaXRpb246IGZpeGVkJywgdGhlIGNvbnRhaW5pbmcgYmxvY2sgaXMgZXN0
YWJsaXNoZWQgYnkgdGhlIHZpZXdwb3J0CisgICAgLy8gSWYgdGhlIGVsZW1lbnQgaGFzICdwb3Np
dGlvbjogYWJzb2x1dGUnLCB0aGUgY29udGFpbmluZyBibG9jayBpcyBlc3RhYmxpc2hlZCBieSB0
aGUgbmVhcmVzdCBhbmNlc3RvciB3aXRoIGEKKyAgICAvLyAncG9zaXRpb24nIG9mICdhYnNvbHV0
ZScsICdyZWxhdGl2ZScgb3IgJ2ZpeGVkJy4KKyAgICBpZiAoIWxheW91dEJveC5pc1Bvc2l0aW9u
ZWQoKSB8fCBsYXlvdXRCb3guaXNJbkZsb3dQb3NpdGlvbmVkKCkpIHsKKyAgICAgICAgYXV0byog
YW5jZXN0b3IgPSAmbGF5b3V0Qm94LnBhcmVudCgpOworICAgICAgICBmb3IgKDsgIWlzPEluaXRp
YWxDb250YWluaW5nQmxvY2s+KCphbmNlc3Rvcik7IGFuY2VzdG9yID0gJmFuY2VzdG9yLT5wYXJl
bnQoKSkgeworICAgICAgICAgICAgaWYgKGFuY2VzdG9yLT5pc0NvbnRhaW5pbmdCbG9ja0Zvcklu
RmxvdygpKQorICAgICAgICAgICAgICAgIHJldHVybiAqYW5jZXN0b3I7CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuICphbmNlc3RvcjsKKyAgICB9CisKKyAgICBpZiAobGF5b3V0Qm94LmlzRml4
ZWRQb3NpdGlvbmVkKCkpIHsKKyAgICAgICAgYXV0byogYW5jZXN0b3IgPSAmbGF5b3V0Qm94LnBh
cmVudCgpOworICAgICAgICBmb3IgKDsgIWlzPEluaXRpYWxDb250YWluaW5nQmxvY2s+KCphbmNl
c3Rvcik7IGFuY2VzdG9yID0gJmFuY2VzdG9yLT5wYXJlbnQoKSkgeworICAgICAgICAgICAgaWYg
KGFuY2VzdG9yLT5pc0NvbnRhaW5pbmdCbG9ja0ZvckZpeGVkUG9zaXRpb24oKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gKmFuY2VzdG9yOworICAgICAgICB9CisgICAgICAgIHJldHVybiAqYW5j
ZXN0b3I7CisgICAgfQorCisgICAgaWYgKGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQo
KSkgeworICAgICAgICBhdXRvKiBhbmNlc3RvciA9ICZsYXlvdXRCb3gucGFyZW50KCk7CisgICAg
ICAgIGZvciAoOyAhaXM8SW5pdGlhbENvbnRhaW5pbmdCbG9jaz4oKmFuY2VzdG9yKTsgYW5jZXN0
b3IgPSAmYW5jZXN0b3ItPnBhcmVudCgpKSB7CisgICAgICAgICAgICBpZiAoYW5jZXN0b3ItPmlz
Q29udGFpbmluZ0Jsb2NrRm9yT3V0T2ZGbG93UG9zaXRpb24oKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gKmFuY2VzdG9yOworICAgICAgICB9CisgICAgICAgIHJldHVybiAqYW5jZXN0b3I7Cisg
ICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGxheW91dEJveC5w
YXJlbnQoKTsgICAgCit9CisKICNpZm5kZWYgTkRFQlVHCiBjb25zdCBDb250YWluZXJCb3gmIEZv
cm1hdHRpbmdDb250ZXh0Ojpmb3JtYXR0aW5nQ29udGV4dFJvb3QoY29uc3QgQm94JiBsYXlvdXRC
b3gpCiB7CkBAIC0zMDIsNyArMzQ2LDcgQEAgY29uc3QgQ29udGFpbmVyQm94JiBGb3JtYXR0aW5n
Q29udGV4dDo6Zm9ybWF0dGluZ0NvbnRleHRSb290KGNvbnN0IEJveCYgbGF5b3V0Qm8KICAgICAv
LyA8ZGl2IGlkPW91dGVyIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGUiPjxkaXYgaWQ9aW5uZXI+
PHNwYW4gc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZSI+Y29udGVudDwvc3Bhbj48L2Rpdj48L2Rp
dj4KICAgICAvLyBXaGlsZSB0aGUgcmVsYXRpdmVseSBwb3NpdGlvbmVkIGlubGluZSBjb250YWlu
ZXIgKHNwYW4pIGlzIHBsYWNlZCByZWxhdGl2ZSB0byBpdHMgY29udGFpbmluZyBibG9jayAib3V0
ZXIiLCBpdCBsaXZlcyBpbiB0aGUgaW5saW5lCiAgICAgLy8gZm9ybWF0dGluZyBjb250ZXh0IGVz
dGFibGlzaGVkIGJ5ICJpbm5lciIuCi0gICAgYXV0byYgYW5jZXN0b3IgPSBsYXlvdXRCb3guaXNJ
bmxpbmVMZXZlbEJveCgpICYmIGxheW91dEJveC5pc0luRmxvd1Bvc2l0aW9uZWQoKSA/IGxheW91
dEJveC5wYXJlbnQoKSA6IGxheW91dEJveC5jb250YWluaW5nQmxvY2soKTsKKyAgICBhdXRvJiBh
bmNlc3RvciA9IGxheW91dEJveC5pc0lubGluZUxldmVsQm94KCkgJiYgbGF5b3V0Qm94LmlzSW5G
bG93UG9zaXRpb25lZCgpID8gbGF5b3V0Qm94LnBhcmVudCgpIDogY29udGFpbmluZ0Jsb2NrKGxh
eW91dEJveCk7CiAgICAgaWYgKGFuY2VzdG9yLmVzdGFibGlzaGVzRm9ybWF0dGluZ0NvbnRleHQo
KSkKICAgICAgICAgcmV0dXJuIGFuY2VzdG9yOwogICAgIHJldHVybiBmb3JtYXR0aW5nQ29udGV4
dFJvb3QoYW5jZXN0b3IpOwpAQCAtMzE1LDcgKzM1OSw3IEBAIHZvaWQgRm9ybWF0dGluZ0NvbnRl
eHQ6OnZhbGlkYXRlR2VvbWV0cnlDb25zdHJhaW50c0FmdGVyTGF5b3V0KCkgY29uc3QKICAgICBm
b3IgKGF1dG8mIGxheW91dEJveCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEJveD4ocm9vdCkpIHsKICAg
ICAgICAgaWYgKCZmb3JtYXR0aW5nQ29udGV4dFJvb3QobGF5b3V0Qm94KSAhPSAmcm9vdCkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBhdXRvJiBjb250YWluaW5nQmxvY2tHZW9tZXRy
eSA9IGdlb21ldHJ5Rm9yQm94KGxheW91dEJveC5jb250YWluaW5nQmxvY2soKSk7CisgICAgICAg
IGF1dG8mIGNvbnRhaW5pbmdCbG9ja0dlb21ldHJ5ID0gZ2VvbWV0cnlGb3JCb3goY29udGFpbmlu
Z0Jsb2NrKGxheW91dEJveCkpOwogICAgICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGdlb21ldHJ5
Rm9yQm94KGxheW91dEJveCk7CiAKICAgICAgICAgLy8gMTAuMy4zIEJsb2NrLWxldmVsLCBub24t
cmVwbGFjZWQgZWxlbWVudHMgaW4gbm9ybWFsIGZsb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0NvbnRleHQuaApp
bmRleCA3ZDcwMDVlNWI4MzkuLjliYTUzMDRmN2JmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0NvbnRleHQu
aApAQCAtODMsNiArODMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0ZsZXhGb3JtYXR0aW5nQ29u
dGV4dCgpIGNvbnN0IHsgcmV0dXJuIHJvb3QoKS5lc3RhYmxpc2hlc0ZsZXhGb3JtYXR0aW5nQ29u
dGV4dCgpOyB9CiAKICAgICBzdGF0aWMgY29uc3QgSW5pdGlhbENvbnRhaW5pbmdCbG9jayYgaW5p
dGlhbENvbnRhaW5pbmdCbG9jayhjb25zdCBCb3gmKTsKKyAgICBzdGF0aWMgY29uc3QgQ29udGFp
bmVyQm94JiBjb250YWluaW5nQmxvY2soY29uc3QgQm94Jik7CiAjaWZuZGVmIE5ERUJVRwogICAg
IHN0YXRpYyBjb25zdCBDb250YWluZXJCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdChjb25zdCBC
b3gmKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9Gb3JtYXR0aW5nR2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nR2VvbWV0cnkuY3BwCmluZGV4IDRjYWRlNTI2
OGIzMi4uNjBiNjc1OGY4Yzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdHZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nR2VvbWV0cnkuY3BwCkBAIC01
OCw3ICs1OCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0hlaWdodEF1dG8oY29uc3QgQm94JiBs
YXlvdXRCb3gpCiAgICAgICAgIGlmIChsYXlvdXRCb3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgcmV0dXJuICFsYXlvdXRCb3gu
Y29udGFpbmluZ0Jsb2NrKCkuc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCkuaXNGaXhlZCgpOworICAg
ICAgICByZXR1cm4gIUZvcm1hdHRpbmdDb250ZXh0Ojpjb250YWluaW5nQmxvY2sobGF5b3V0Qm94
KS5zdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS5pc0ZpeGVkKCk7CiAgICAgfQogCiAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMjU0LDkgKzI1NCw5IEBAIExheW91dFVuaXQgRm9ybWF0dGluZ0dlb21ldHJ5
OjpzdGF0aWNWZXJ0aWNhbFBvc2l0aW9uRm9yT3V0T2ZGbG93UG9zaXRpb25lZChjb25zCiAgICAg
ICAgIHRvcCA9IGZvcm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5Rm9yQm94KGxheW91dEJveC5wYXJl
bnQoKSwgRm9ybWF0dGluZ0NvbnRleHQ6OkVzY2FwZVJlYXNvbjo6T3V0T2ZGbG93Qm94TmVlZHNJ
bkZsb3dHZW9tZXRyeSkuY29udGVudEJveFRvcCgpOwogCiAgICAgLy8gUmVzb2x2ZSB0b3AgYWxs
IHRoZSB3YXkgdXAgdG8gdGhlIGNvbnRhaW5pbmcgYmxvY2suCi0gICAgYXV0byYgY29udGFpbmlu
Z0Jsb2NrID0gbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpOworICAgIGF1dG8mIGNvbnRhaW5p
bmdCbG9jayA9IEZvcm1hdHRpbmdDb250ZXh0Ojpjb250YWluaW5nQmxvY2sobGF5b3V0Qm94KTsK
ICAgICAvLyBTdGFydCB3aXRoIHRoZSBwYXJlbnQgc2luY2Ugd2UgcHJldGVuZCB0aGF0IHRoaXMg
Ym94IGlzIG5vcm1hbCBmbG93LgotICAgIGZvciAoYXV0byogYW5jZXN0b3IgPSAmbGF5b3V0Qm94
LnBhcmVudCgpOyBhbmNlc3RvciAhPSAmY29udGFpbmluZ0Jsb2NrOyBhbmNlc3RvciA9ICZhbmNl
c3Rvci0+Y29udGFpbmluZ0Jsb2NrKCkpIHsKKyAgICBmb3IgKGF1dG8qIGFuY2VzdG9yID0gJmxh
eW91dEJveC5wYXJlbnQoKTsgYW5jZXN0b3IgIT0gJmNvbnRhaW5pbmdCbG9jazsgYW5jZXN0b3Ig
PSAmRm9ybWF0dGluZ0NvbnRleHQ6OmNvbnRhaW5pbmdCbG9jaygqYW5jZXN0b3IpKSB7CiAgICAg
ICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3go
KmFuY2VzdG9yLCBGb3JtYXR0aW5nQ29udGV4dDo6RXNjYXBlUmVhc29uOjpPdXRPZkZsb3dCb3hO
ZWVkc0luRmxvd0dlb21ldHJ5KTsKICAgICAgICAgLy8gQm94R2VvbWV0cnk6OnRvcCBpcyB0aGUg
Ym9yZGVyIGJveCB0b3AgcG9zaXRpb24gaW4gaXRzIGNvbnRhaW5pbmcgYmxvY2sncyBjb29yZGlu
YXRlIHN5c3RlbS4KICAgICAgICAgdG9wICs9IEJveEdlb21ldHJ5Ojpib3JkZXJCb3hUb3AoYm94
R2VvbWV0cnkpOwpAQCAtMjc2LDkgKzI3Niw5IEBAIExheW91dFVuaXQgRm9ybWF0dGluZ0dlb21l
dHJ5OjpzdGF0aWNIb3Jpem9udGFsUG9zaXRpb25Gb3JPdXRPZkZsb3dQb3NpdGlvbmVkKGNvCiAg
ICAgYXV0byBsZWZ0ID0gZm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94
LnBhcmVudCgpLCBGb3JtYXR0aW5nQ29udGV4dDo6RXNjYXBlUmVhc29uOjpPdXRPZkZsb3dCb3hO
ZWVkc0luRmxvd0dlb21ldHJ5KS5jb250ZW50Qm94TGVmdCgpOwogCiAgICAgLy8gUmVzb2x2ZSBs
ZWZ0IGFsbCB0aGUgd2F5IHVwIHRvIHRoZSBjb250YWluaW5nIGJsb2NrLgotICAgIGF1dG8mIGNv
bnRhaW5pbmdCbG9jayA9IGxheW91dEJveC5jb250YWluaW5nQmxvY2soKTsKKyAgICBhdXRvJiBj
b250YWluaW5nQmxvY2sgPSBGb3JtYXR0aW5nQ29udGV4dDo6Y29udGFpbmluZ0Jsb2NrKGxheW91
dEJveCk7CiAgICAgLy8gU3RhcnQgd2l0aCB0aGUgcGFyZW50IHNpbmNlIHdlIHByZXRlbmQgdGhh
dCB0aGlzIGJveCBpcyBub3JtYWwgZmxvdy4KLSAgICBmb3IgKGF1dG8qIGFuY2VzdG9yID0gJmxh
eW91dEJveC5wYXJlbnQoKTsgYW5jZXN0b3IgIT0gJmNvbnRhaW5pbmdCbG9jazsgYW5jZXN0b3Ig
PSAmYW5jZXN0b3ItPmNvbnRhaW5pbmdCbG9jaygpKSB7CisgICAgZm9yIChhdXRvKiBhbmNlc3Rv
ciA9ICZsYXlvdXRCb3gucGFyZW50KCk7IGFuY2VzdG9yICE9ICZjb250YWluaW5nQmxvY2s7IGFu
Y2VzdG9yID0gJkZvcm1hdHRpbmdDb250ZXh0Ojpjb250YWluaW5nQmxvY2soKmFuY2VzdG9yKSkg
ewogICAgICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5
Rm9yQm94KCphbmNlc3RvciwgRm9ybWF0dGluZ0NvbnRleHQ6OkVzY2FwZVJlYXNvbjo6T3V0T2ZG
bG93Qm94TmVlZHNJbkZsb3dHZW9tZXRyeSk7CiAgICAgICAgIC8vIEJveEdlb21ldHJ5OjpsZWZ0
IGlzIHRoZSBib3JkZXIgYm94IGxlZnQgcG9zaXRpb24gaW4gaXRzIGNvbnRhaW5pbmcgYmxvY2sn
cyBjb29yZGluYXRlIHN5c3RlbS4KICAgICAgICAgbGVmdCArPSBCb3hHZW9tZXRyeTo6Ym9yZGVy
Qm94TGVmdChib3hHZW9tZXRyeSk7CkBAIC00NzAsNyArNDcwLDcgQEAgSG9yaXpvbnRhbEdlb21l
dHJ5IEZvcm1hdHRpbmdHZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRIb3Jpem9udGFsR2Vv
bWV0cnkoY28KICAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwogICAgIGF1dG8m
IGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94
KTsKICAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gaG9yaXpvbnRhbENvbnN0cmFpbnRz
LmxvZ2ljYWxXaWR0aDsKLSAgICBhdXRvIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24gPSBsYXlvdXRC
b3guY29udGFpbmluZ0Jsb2NrKCkuc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCk7Cisg
ICAgYXV0byBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uID0gRm9ybWF0dGluZ0NvbnRleHQ6OmNvbnRh
aW5pbmdCbG9jayhsYXlvdXRCb3gpLnN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpOwog
ICAgIAogICAgIGF1dG8gbGVmdCA9IGNvbXB1dGVkVmFsdWUoc3R5bGUubG9naWNhbExlZnQoKSwg
Y29udGFpbmluZ0Jsb2NrV2lkdGgpOwogICAgIGF1dG8gcmlnaHQgPSBjb21wdXRlZFZhbHVlKHN0
eWxlLmxvZ2ljYWxSaWdodCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CkBAIC02ODIsNyArNjgy
LDcgQEAgSG9yaXpvbnRhbEdlb21ldHJ5IEZvcm1hdHRpbmdHZW9tZXRyeTo6b3V0T2ZGbG93UmVw
bGFjZWRIb3Jpem9udGFsR2VvbWV0cnkoY29uc3QKICAgICBhdXRvJiBzdHlsZSA9IHJlcGxhY2Vk
Qm94LnN0eWxlKCk7CiAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dC5n
ZW9tZXRyeUZvckJveChyZXBsYWNlZEJveCk7CiAgICAgYXV0byBjb250YWluaW5nQmxvY2tXaWR0
aCA9IGhvcml6b250YWxDb25zdHJhaW50cy5sb2dpY2FsV2lkdGg7Ci0gICAgYXV0byBpc0xlZnRU
b1JpZ2h0RGlyZWN0aW9uID0gcmVwbGFjZWRCb3guY29udGFpbmluZ0Jsb2NrKCkuc3R5bGUoKS5p
c0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCk7CisgICAgYXV0byBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9u
ID0gRm9ybWF0dGluZ0NvbnRleHQ6OmNvbnRhaW5pbmdCbG9jayhyZXBsYWNlZEJveCkuc3R5bGUo
KS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCk7CiAKICAgICBhdXRvIGxlZnQgPSBjb21wdXRlZFZh
bHVlKHN0eWxlLmxvZ2ljYWxMZWZ0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKICAgICBhdXRv
IHJpZ2h0ID0gY29tcHV0ZWRWYWx1ZShzdHlsZS5sb2dpY2FsUmlnaHQoKSwgY29udGFpbmluZ0Js
b2NrV2lkdGgpOwpAQCAtMTA2Myw3ICsxMDYzLDcgQEAgTGF5b3V0U2l6ZSBGb3JtYXR0aW5nR2Vv
bWV0cnk6OmluRmxvd1Bvc2l0aW9uZWRQb3NpdGlvbk9mZnNldChjb25zdCBCb3gmIGxheW91dEIK
ICAgICAgICAgcmlnaHQgPSAtKmxlZnQ7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gIzQKLSAg
ICAgICAgYXV0byBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uID0gbGF5b3V0Qm94LmNvbnRhaW5pbmdC
bG9jaygpLnN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpOworICAgICAgICBhdXRvIGlz
TGVmdFRvUmlnaHREaXJlY3Rpb24gPSBGb3JtYXR0aW5nQ29udGV4dDo6Y29udGFpbmluZ0Jsb2Nr
KGxheW91dEJveCkuc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCk7CiAgICAgICAgIGlm
IChpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKQogICAgICAgICAgICAgcmlnaHQgPSAtKmxlZnQ7CiAg
ICAgICAgIGVsc2UKQEAgLTEwODUsNyArMTA4NSw3IEBAIGlubGluZSBzdGF0aWMgV3JpdGluZ01v
ZGUgdXNlZFdyaXRpbmdNb2RlKGNvbnN0IEJveCYgbGF5b3V0Qm94KQogICAgIC8vIGh0dHBzOi8v
d3d3LnczLm9yZy9UUi9jc3Mtd3JpdGluZy1tb2Rlcy00LyNsb2dpY2FsLWRpcmVjdGlvbi1sYXlv
dXQKICAgICAvLyBGbG93LXJlbGF0aXZlIGRpcmVjdGlvbnMgYXJlIGNhbGN1bGF0ZWQgd2l0aCBy
ZXNwZWN0IHRvIHRoZSB3cml0aW5nIG1vZGUgb2YgdGhlIGNvbnRhaW5pbmcgYmxvY2sgb2YgdGhl
IGJveC4KICAgICAvLyBGb3IgaW5saW5lLWxldmVsIGJveGVzLCB0aGUgd3JpdGluZyBtb2RlIG9m
IHRoZSBwYXJlbnQgYm94IGlzIHVzZWQgaW5zdGVhZC4KLSAgICByZXR1cm4gbGF5b3V0Qm94Lmlz
SW5saW5lTGV2ZWxCb3goKSA/IGxheW91dEJveC5wYXJlbnQoKS5zdHlsZSgpLndyaXRpbmdNb2Rl
KCkgOiBsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkuc3R5bGUoKS53cml0aW5nTW9kZSgpOwor
ICAgIHJldHVybiBsYXlvdXRCb3guaXNJbmxpbmVMZXZlbEJveCgpID8gbGF5b3V0Qm94LnBhcmVu
dCgpLnN0eWxlKCkud3JpdGluZ01vZGUoKSA6IEZvcm1hdHRpbmdDb250ZXh0Ojpjb250YWluaW5n
QmxvY2sobGF5b3V0Qm94KS5zdHlsZSgpLndyaXRpbmdNb2RlKCk7CiB9CiAKIEVkZ2VzIEZvcm1h
dHRpbmdHZW9tZXRyeTo6Y29tcHV0ZWRCb3JkZXIoY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zv
cm1hdHRpbmdRdWlya3MuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9Gb3JtYXR0aW5nUXVpcmtzLmNwcAppbmRleCAwOGIyZDA1NTI1YjQuLjdkY2Y5M2U4N2Yz
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9G
b3JtYXR0aW5nUXVpcmtzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL0Zvcm1hdHRpbmdRdWlya3MuY3BwCkBAIC01Niw3ICs1Niw3IEBAIExheW91dFVu
aXQgRm9ybWF0dGluZ1F1aXJrczo6aGVpZ2h0VmFsdWVPZk5lYXJlc3RDb250YWluaW5nQmxvY2tX
aXRoRml4ZWRIZWlnaHQoCiAgICAgICAgIC8vIC1hbmQgaXQncyB0b3RhbGx5IGluc2FuZSBiZWNh
dXNlIG5vdyB3ZSBmcmVlbHkgdHJhdmVsIGFjcm9zcyBmb3JtYXR0aW5nIGNvbnRleHQgYm91bmRh
cmllcyBhbmQgY29tcHV0ZWQgbWFyZ2lucyBhcmUgbm9uZXhpc3RlbnQuCiAgICAgICAgIGlmIChj
b250YWluaW5nQmxvY2suaXNCb2R5Qm94KCkgfHwgY29udGFpbmluZ0Jsb2NrLmlzRG9jdW1lbnRC
b3goKSkgewogICAgICAgICAgICAgYXV0byYgZm9ybWF0dGluZ0dlb21ldHJ5ID0gZm9ybWF0dGlu
Z0NvbnRleHQuZm9ybWF0dGluZ0dlb21ldHJ5KCk7Ci0gICAgICAgICAgICBhdXRvIGhvcml6b250
YWxDb25zdHJhaW50cyA9IGZvcm1hdHRpbmdHZW9tZXRyeS5jb25zdHJhaW50c0ZvckluRmxvd0Nv
bnRlbnQoY29udGFpbmluZ0Jsb2NrLmNvbnRhaW5pbmdCbG9jaygpLCBGb3JtYXR0aW5nQ29udGV4
dDo6RXNjYXBlUmVhc29uOjpGaW5kRml4ZWRIZWlnaHRBbmNlc3RvclF1aXJrKS5ob3Jpem9udGFs
KCk7CisgICAgICAgICAgICBhdXRvIGhvcml6b250YWxDb25zdHJhaW50cyA9IGZvcm1hdHRpbmdH
ZW9tZXRyeS5jb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQoRm9ybWF0dGluZ0NvbnRleHQ6OmNv
bnRhaW5pbmdCbG9jayhjb250YWluaW5nQmxvY2spLCBGb3JtYXR0aW5nQ29udGV4dDo6RXNjYXBl
UmVhc29uOjpGaW5kRml4ZWRIZWlnaHRBbmNlc3RvclF1aXJrKS5ob3Jpem9udGFsKCk7CiAgICAg
ICAgICAgICBhdXRvIHZlcnRpY2FsTWFyZ2luID0gZm9ybWF0dGluZ0dlb21ldHJ5LmNvbXB1dGVk
VmVydGljYWxNYXJnaW4oY29udGFpbmluZ0Jsb2NrLCBob3Jpem9udGFsQ29uc3RyYWludHMpOwog
CiAgICAgICAgICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0Lmdlb21l
dHJ5Rm9yQm94KGNvbnRhaW5pbmdCbG9jaywgRm9ybWF0dGluZ0NvbnRleHQ6OkVzY2FwZVJlYXNv
bjo6RmluZEZpeGVkSGVpZ2h0QW5jZXN0b3JRdWlyayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9C
bG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCA1M2U2MzA4NzU5YTcuLmFkNDczMTdiMDEy
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9i
bG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBA
IC05Miw3ICs5Miw3IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93
Q29udGVudChjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlCiAgICAgfTsKIAogICAgIGF1
dG8gY29uc3RyYWludHNGb3JMYXlvdXRCb3ggPSBbJl0gKGNvbnN0IGF1dG8mIGxheW91dEJveCkg
ewotICAgICAgICBhdXRvJiBjb250YWluaW5nQmxvY2sgPSBsYXlvdXRCb3guY29udGFpbmluZ0Js
b2NrKCk7CisgICAgICAgIGF1dG8mIGNvbnRhaW5pbmdCbG9jayA9IHRoaXMtPmNvbnRhaW5pbmdC
bG9jayhsYXlvdXRCb3gpOwogICAgICAgICByZXR1cm4gJmNvbnRhaW5pbmdCbG9jayA9PSAmZm9y
bWF0dGluZ1Jvb3QgPyBjb25zdHJhaW50cyA6IGZvcm1hdHRpbmdHZW9tZXRyeSgpLmNvbnN0cmFp
bnRzRm9ySW5GbG93Q29udGVudChjb250YWluaW5nQmxvY2spOwogICAgIH07CiAKQEAgLTI4Myw5
ICsyODMsOSBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OnByZWNvbXB1dGVWZXJ0aWNh
bFBvc2l0aW9uRm9yQm94QW5kQW5jZXN0b3JzKGNvbnN0CiAgICAgLy8gVGhlIGlkZWEgaGVyZSBp
cyB0aGF0IGFzIGxvbmcgYXMgd2UgZG9uJ3QgY3Jvc3MgdGhlIGJsb2NrIGZvcm1hdHRpbmcgY29u
dGV4dCBib3VuZGFyeSwgd2Ugc2hvdWxkIGJlIGFibGUgdG8gcHJlLWNvbXB1dGUgdGhlIGZpbmFs
IHRvcCBwb3NpdGlvbi4KICAgICAvLyBGSVhNRTogd2UgY3VycmVudGx5IGRvbid0IGFjY291bnQg
Zm9yIHRoZSAiY2xlYXIiIHByb3BlcnR5IHdoZW4gY29tcHV0aW5nIHRoZSBmaW5hbCBwb3NpdGlv
biBmb3IgYW4gYW5jZXN0b3IuCiAgICAgYXV0byYgZm9ybWF0dGluZ0dlb21ldHJ5ID0gdGhpcy0+
Zm9ybWF0dGluZ0dlb21ldHJ5KCk7Ci0gICAgZm9yIChhdXRvKiBhbmNlc3RvciA9ICZsYXlvdXRC
b3g7IGFuY2VzdG9yICYmIGFuY2VzdG9yICE9ICZyb290KCk7IGFuY2VzdG9yID0gJmFuY2VzdG9y
LT5jb250YWluaW5nQmxvY2soKSkgeworICAgIGZvciAoYXV0byogYW5jZXN0b3IgPSAmbGF5b3V0
Qm94OyBhbmNlc3RvciAmJiBhbmNlc3RvciAhPSAmcm9vdCgpOyBhbmNlc3RvciA9ICZjb250YWlu
aW5nQmxvY2soKmFuY2VzdG9yKSkgewogICAgICAgICBhdXRvIGNvbnN0cmFpbnRzRm9yQW5jZXN0
b3IgPSBbJl0gewotICAgICAgICAgICAgYXV0byYgY29udGFpbmluZ0Jsb2NrID0gYW5jZXN0b3It
PmNvbnRhaW5pbmdCbG9jaygpOworICAgICAgICAgICAgYXV0byYgY29udGFpbmluZ0Jsb2NrID0g
dGhpcy0+Y29udGFpbmluZ0Jsb2NrKCphbmNlc3Rvcik7CiAgICAgICAgICAgICByZXR1cm4gJmNv
bnRhaW5pbmdCbG9jayA9PSAmcm9vdCgpID8gY29uc3RyYWludHNQYWlyLmZvcm1hdHRpbmdDb250
ZXh0Um9vdCA6IGZvcm1hdHRpbmdHZW9tZXRyeS5jb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQo
Y29udGFpbmluZ0Jsb2NrKTsKICAgICAgICAgfSgpOwogCkBAIC01NDYsNyArNTQ2LDcgQEAgTGF5
b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojp2ZXJ0aWNhbFBvc2l0aW9uV2l0aE1hcmdp
bihjb25zdCBCb3gmIGxheW91dEIKICAgICAgICAgcmV0dXJuIGNvbnRhaW5pbmdCbG9ja0NvbnRl
bnRCb3hUb3AgKyBtYXJnaW5CZWZvcmUodmVydGljYWxNYXJnaW4pOwogICAgIH0KICAgICAvLyBB
dCB0aGlzIHBvaW50IHRoaXMgYm94IGluZGlyZWN0bHkgKHZpYSBjb2xsYXBzZWQgdGhyb3VnaCBw
cmV2aW91cyBpbi1mbG93IHNpYmxpbmdzKSBhZGpvaW5zIHRoZSBwYXJlbnQuIExldCdzIGNoZWNr
IGlmIGl0IG1hcmdpbiBjb2xsYXBzZXMgd2l0aCB0aGUgcGFyZW50LgotICAgIGF1dG8mIGNvbnRh
aW5pbmdCbG9jayA9IGxheW91dEJveC5jb250YWluaW5nQmxvY2soKTsKKyAgICBhdXRvJiBjb250
YWluaW5nQmxvY2sgPSB0aGlzLT5jb250YWluaW5nQmxvY2sobGF5b3V0Qm94KTsKICAgICBBU1NF
UlQoY29udGFpbmluZ0Jsb2NrLmZpcnN0SW5GbG93Q2hpbGQoKSk7CiAgICAgQVNTRVJUKGNvbnRh
aW5pbmdCbG9jay5maXJzdEluRmxvd0NoaWxkKCkgIT0gJmxheW91dEJveCk7CiAgICAgaWYgKG1h
cmdpbkNvbGxhcHNlKCkubWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkJlZm9y
ZSgqY29udGFpbmluZ0Jsb2NrLmZpcnN0SW5GbG93Q2hpbGQoKSkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGlu
Z0dlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
YmxvY2svQmxvY2tGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCmluZGV4IDhkZWY0MjVmYWUwMS4uN2Q4
ZDkyNDAxNmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0dlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0dlb21l
dHJ5LmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIENvbnRlbnRXaWR0aEFuZE1hcmdpbiBCbG9ja0Zv
cm1hdHRpbmdHZW9tZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRDb250ZW50V2lkdGhBbmRNCiAgICAg
ICAgIC8vICAgIGVkZ2VzIG9mIHRoZSBjb250YWluaW5nIGJsb2NrLgogCiAgICAgICAgIGF1dG8g
Y29udGFpbmluZ0Jsb2NrV2lkdGggPSBob3Jpem9udGFsQ29uc3RyYWludHMubG9naWNhbFdpZHRo
OwotICAgICAgICBhdXRvJiBjb250YWluaW5nQmxvY2tTdHlsZSA9IGxheW91dEJveC5jb250YWlu
aW5nQmxvY2soKS5zdHlsZSgpOworICAgICAgICBhdXRvJiBjb250YWluaW5nQmxvY2tTdHlsZSA9
IEZvcm1hdHRpbmdDb250ZXh0Ojpjb250YWluaW5nQmxvY2sobGF5b3V0Qm94KS5zdHlsZSgpOwog
ICAgICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlG
b3JCb3gobGF5b3V0Qm94KTsKIAogICAgICAgICBhdXRvIHdpZHRoID0gb3ZlcnJpZGRlbkhvcml6
b250YWxWYWx1ZXMud2lkdGggPyBvdmVycmlkZGVuSG9yaXpvbnRhbFZhbHVlcy53aWR0aCA6IGNv
bXB1dGVkV2lkdGgobGF5b3V0Qm94LCBjb250YWluaW5nQmxvY2tXaWR0aCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9y
bWF0dGluZ1F1aXJrcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ1F1aXJrcy5jcHAKaW5kZXggNTVkYjAyZGMyN2E5Li5i
MjQ2ZjE5NGU4NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ1F1aXJr
cy5jcHAKQEAgLTExOSwxMiArMTE5LDEyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBoYXNRdWlya01h
cmdpblRvQ29sbGFwc2UoY29uc3QgQm94JiBsYXlvdXRCb3gsIFZlcnRpY2FsTWFyZ2luCiAKIGJv
b2wgQmxvY2tGb3JtYXR0aW5nUXVpcmtzOjpzaG91bGRDb2xsYXBzZU1hcmdpbkJlZm9yZVdpdGhQ
YXJlbnRNYXJnaW5CZWZvcmUoY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7Ci0gICAgcmV0dXJuIGhh
c1F1aXJrTWFyZ2luVG9Db2xsYXBzZShsYXlvdXRCb3gsIFZlcnRpY2FsTWFyZ2luOjpCZWZvcmUp
ICYmIGlzUXVpcmtDb250YWluZXIobGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKTsKKyAgICBy
ZXR1cm4gaGFzUXVpcmtNYXJnaW5Ub0NvbGxhcHNlKGxheW91dEJveCwgVmVydGljYWxNYXJnaW46
OkJlZm9yZSkgJiYgaXNRdWlya0NvbnRhaW5lcihGb3JtYXR0aW5nQ29udGV4dDo6Y29udGFpbmlu
Z0Jsb2NrKGxheW91dEJveCkpOwogfQogCiBib29sIEJsb2NrRm9ybWF0dGluZ1F1aXJrczo6c2hv
dWxkQ29sbGFwc2VNYXJnaW5BZnRlcldpdGhQYXJlbnRNYXJnaW5BZnRlcihjb25zdCBCb3gmIGxh
eW91dEJveCkKIHsKLSAgICByZXR1cm4gaGFzUXVpcmtNYXJnaW5Ub0NvbGxhcHNlKGxheW91dEJv
eCwgVmVydGljYWxNYXJnaW46OkFmdGVyKSAmJiBpc1F1aXJrQ29udGFpbmVyKGxheW91dEJveC5j
b250YWluaW5nQmxvY2soKSk7CisgICAgcmV0dXJuIGhhc1F1aXJrTWFyZ2luVG9Db2xsYXBzZShs
YXlvdXRCb3gsIFZlcnRpY2FsTWFyZ2luOjpBZnRlcikgJiYgaXNRdWlya0NvbnRhaW5lcihGb3Jt
YXR0aW5nQ29udGV4dDo6Y29udGFpbmluZ0Jsb2NrKGxheW91dEJveCkpOwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Js
b2NrTWFyZ2luQ29sbGFwc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9ibG9jay9CbG9ja01hcmdpbkNvbGxhcHNlLmNwcAppbmRleCA3ZDM4NTdmZmYxODgu
LmQzOTY4Mjc1YzMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9ibG9jay9CbG9ja01hcmdpbkNvbGxhcHNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrTWFyZ2luQ29sbGFwc2Uu
Y3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgYm9vbCBCbG9ja01hcmdpbkNvbGxhcHNlOjptYXJnaW5C
ZWZvcmVDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQWZ0ZXIoY29uc3QgQm94JgogICAgIC8vIDEu
IFRoaXMgaXMgdGhlIGxhc3QgaW4tZmxvdyBjaGlsZCBhbmQgaXRzIG1hcmdpbnMgY29sbGFwc2Ug
dGhyb3VnaCBhbmQgdGhlIG1hcmdpbiBhZnRlciBjb2xsYXBzZXMgd2l0aCBwYXJlbnQncyBtYXJn
aW4gYWZ0ZXIgb3IKICAgICAvLyAyLiBUaGlzIGJveCdzIG1hcmdpbiBhZnRlciBjb2xsYXBzZXMg
d2l0aCB0aGUgbmV4dCBzaWJsaW5nJ3MgbWFyZ2luIGJlZm9yZSBhbmQgdGhhdCBzaWJsaW5nIGNv
bGxhcHNlcyB0aHJvdWdoIGFuZAogICAgIC8vIHdlIGNhbiBnZXQgdG8gdGhlIGxhc3QgaW4tZmxv
dyBjaGlsZCBsaWtlIHRoYXQuCi0gICAgYXV0byogbGFzdEluRmxvd0NoaWxkID0gbGF5b3V0Qm94
LmNvbnRhaW5pbmdCbG9jaygpLmxhc3RJbkZsb3dDaGlsZCgpOworICAgIGF1dG8qIGxhc3RJbkZs
b3dDaGlsZCA9IEZvcm1hdHRpbmdDb250ZXh0Ojpjb250YWluaW5nQmxvY2sobGF5b3V0Qm94KS5s
YXN0SW5GbG93Q2hpbGQoKTsKICAgICBmb3IgKGF1dG8qIGN1cnJlbnRCb3ggPSAmbGF5b3V0Qm94
OyBjdXJyZW50Qm94OyBjdXJyZW50Qm94ID0gY3VycmVudEJveC0+bmV4dEluRmxvd1NpYmxpbmco
KSkgewogICAgICAgICBpZiAoIW1hcmdpbnNDb2xsYXBzZVRocm91Z2goKmN1cnJlbnRCb3gpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTM5LDcgKzEzOSw3IEBAIGJvb2wgQmxvY2tN
YXJnaW5Db2xsYXBzZTo6bWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkJlZm9y
ZShjb25zdCBCb3gmCiAgICAgaWYgKGxheW91dEJveC5wcmV2aW91c0luRmxvd1NpYmxpbmcoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byYgY29udGFpbmluZ0Jsb2NrID0gbGF5
b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpOworICAgIGF1dG8mIGNvbnRhaW5pbmdCbG9jayA9IEZv
cm1hdHRpbmdDb250ZXh0Ojpjb250YWluaW5nQmxvY2sobGF5b3V0Qm94KTsKICAgICAvLyBNYXJn
aW5zIG9mIGVsZW1lbnRzIHRoYXQgZXN0YWJsaXNoIG5ldyBibG9jayBmb3JtYXR0aW5nIGNvbnRl
eHRzIGRvIG5vdCBjb2xsYXBzZSB3aXRoIHRoZWlyIGluLWZsb3cgY2hpbGRyZW4KICAgICBpZiAo
ZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KGNvbnRhaW5pbmdCbG9jaykpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTI0MSw3ICsyNDEsNyBAQCBib29sIEJsb2NrTWFyZ2luQ29s
bGFwc2U6Om1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkJlZm9yZShjb25zdCBC
b3gmCiAgICAgLy8gMS4gVGhpcyBpcyB0aGUgZmlyc3QgaW4tZmxvdyBjaGlsZCBhbmQgaXRzIG1h
cmdpbnMgY29sbGFwc2UgdGhyb3VnaCBhbmQgdGhlIG1hcmdpbiBiZWZvcmUgY29sbGFwc2VzIHdp
dGggcGFyZW50J3MgbWFyZ2luIGJlZm9yZSBvcgogICAgIC8vIDIuIFRoaXMgYm94J3MgbWFyZ2lu
IGJlZm9yZSBjb2xsYXBzZXMgd2l0aCB0aGUgcHJldmlvdXMgc2libGluZydzIG1hcmdpbiBhZnRl
ciBhbmQgdGhhdCBzaWJsaW5nIGNvbGxhcHNlcyB0aHJvdWdoIGFuZAogICAgIC8vIHdlIGNhbiBn
ZXQgdG8gdGhlIGZpcnN0IGluLWZsb3cgY2hpbGQgbGlrZSB0aGF0LgotICAgIGF1dG8qIGZpcnN0
SW5GbG93Q2hpbGQgPSBsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkuZmlyc3RJbkZsb3dDaGls
ZCgpOworICAgIGF1dG8qIGZpcnN0SW5GbG93Q2hpbGQgPSBGb3JtYXR0aW5nQ29udGV4dDo6Y29u
dGFpbmluZ0Jsb2NrKGxheW91dEJveCkuZmlyc3RJbkZsb3dDaGlsZCgpOwogICAgIGZvciAoYXV0
byogY3VycmVudEJveCA9ICZsYXlvdXRCb3g7IGN1cnJlbnRCb3g7IGN1cnJlbnRCb3ggPSBjdXJy
ZW50Qm94LT5wcmV2aW91c0luRmxvd1NpYmxpbmcoKSkgewogICAgICAgICBpZiAoIW1hcmdpbnND
b2xsYXBzZVRocm91Z2goKmN1cnJlbnRCb3gpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMjc3LDcgKzI3Nyw3IEBAIGJvb2wgQmxvY2tNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQWZ0ZXJD
b2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQWZ0ZXIoY29uc3QgQm94JiBsCiAgICAgaWYgKGxheW91
dEJveC5uZXh0SW5GbG93U2libGluZygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBh
dXRvJiBjb250YWluaW5nQmxvY2sgPSBsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCk7CisgICAg
YXV0byYgY29udGFpbmluZ0Jsb2NrID0gRm9ybWF0dGluZ0NvbnRleHQ6OmNvbnRhaW5pbmdCbG9j
ayhsYXlvdXRCb3gpOwogICAgIC8vIE1hcmdpbnMgb2YgZWxlbWVudHMgdGhhdCBlc3RhYmxpc2gg
bmV3IGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dHMgZG8gbm90IGNvbGxhcHNlIHdpdGggdGhlaXIg
aW4tZmxvdyBjaGlsZHJlbi4KICAgICBpZiAoZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0KGNvbnRhaW5pbmdCbG9jaykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svUHJlY29tcHV0
ZWRCbG9ja01hcmdpbkNvbGxhcHNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvYmxvY2svUHJlY29tcHV0ZWRCbG9ja01hcmdpbkNvbGxhcHNlLmNwcAppbmRl
eCA3MDk5ZWRlMWMxZGIuLjRkODAxOTBjODI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9QcmVjb21wdXRlZEJsb2NrTWFyZ2luQ29s
bGFwc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
YmxvY2svUHJlY29tcHV0ZWRCbG9ja01hcmdpbkNvbGxhcHNlLmNwcApAQCAtNDMsNyArNDMsNyBA
QCBVc2VkVmVydGljYWxNYXJnaW46OlBvc2l0aXZlQW5kTmVnYXRpdmVQYWlyOjpWYWx1ZXMgQmxv
Y2tNYXJnaW5Db2xsYXBzZTo6cHJlY29tcAogICAgIGlmIChmb3JtYXR0aW5nU3RhdGUoKS5oYXNV
c2VkVmVydGljYWxNYXJnaW4obGF5b3V0Qm94KSkKICAgICAgICAgcmV0dXJuIGZvcm1hdHRpbmdT
dGF0ZSgpLnVzZWRWZXJ0aWNhbE1hcmdpbihsYXlvdXRCb3gpLnBvc2l0aXZlQW5kTmVnYXRpdmVW
YWx1ZXMuYmVmb3JlOwogCi0gICAgYXV0byBob3Jpem9udGFsQ29uc3RyYWludHMgPSBmb3JtYXR0
aW5nR2VvbWV0cnkuY29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50KGxheW91dEJveC5jb250YWlu
aW5nQmxvY2soKSkuaG9yaXpvbnRhbCgpOworICAgIGF1dG8gaG9yaXpvbnRhbENvbnN0cmFpbnRz
ID0gZm9ybWF0dGluZ0dlb21ldHJ5LmNvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudChGb3JtYXR0
aW5nQ29udGV4dDo6Y29udGFpbmluZ0Jsb2NrKGxheW91dEJveCkpLmhvcml6b250YWwoKTsKICAg
ICBhdXRvIGNvbXB1dGVkVmVydGljYWxNYXJnaW4gPSBmb3JtYXR0aW5nR2VvbWV0cnkuY29tcHV0
ZWRWZXJ0aWNhbE1hcmdpbihsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cyk7CiAgICAg
YXV0byBub25Db2xsYXBzZWRNYXJnaW4gPSBVc2VkVmVydGljYWxNYXJnaW46Ok5vbkNvbGxhcHNl
ZFZhbHVlcyB7IGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYmVmb3JlLnZhbHVlX29yKDApLCBjb21w
dXRlZFZlcnRpY2FsTWFyZ2luLmFmdGVyLnZhbHVlX29yKDApIH07CiAgICAgcmV0dXJuIHByZWNv
bXB1dGVkUG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkJlZm9yZShsYXlvdXRCb3gsIG5vbkNvbGxhcHNl
ZE1hcmdpbiwgZm9ybWF0dGluZ0dlb21ldHJ5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
bGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwCmluZGV4IDBiMzUxNmEzNWMxZC4uY2I0OTEwYjUyZWRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAK
QEAgLTE5OSw0OSArMTk5LDYgQEAgYm9vbCBCb3g6OmlzRmxvYXRBdm9pZGVyKCkgY29uc3QKICAg
ICByZXR1cm4gZXN0YWJsaXNoZXNUYWJsZUZvcm1hdHRpbmdDb250ZXh0KCkgfHwgZXN0YWJsaXNo
ZXNJbmRlcGVuZGVudEZvcm1hdHRpbmdDb250ZXh0KCkgfHwgZXN0YWJsaXNoZXNCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0KCk7CiB9CiAKLWNvbnN0IENvbnRhaW5lckJveCYgQm94Ojpjb250YWluaW5n
QmxvY2soKSBjb25zdAotewotICAgIC8vIEZpbmRpbmcgdGhlIGNvbnRhaW5pbmcgYmxvY2sgYnkg
dHJhdmVyc2luZyB0aGUgdHJlZSBkdXJpbmcgdHJlZSBjb25zdHJ1Y3Rpb24gY291bGQgcHJvdmlk
ZSBpbmNvcnJlY3QgcmVzdWx0LgotICAgIEFTU0VSVCghUGhhc2U6OmlzSW5UcmVlQnVpbGRpbmco
KSk7Ci0gICAgLy8gSWYgd2UgZXZlciBlbmQgdXAgaGVyZSB3aXRoIHRoZSBJQ0IsIHdlIG11c3Qg
YmUgZG9pbmcgc29tZXRoaW5nIG5vdC1zby1ncmVhdC4KLSAgICBSRUxFQVNFX0FTU0VSVCghaXM8
SW5pdGlhbENvbnRhaW5pbmdCbG9jaz4oKnRoaXMpKTsKLSAgICAvLyBUaGUgY29udGFpbmluZyBi
bG9jayBpbiB3aGljaCB0aGUgcm9vdCBlbGVtZW50IGxpdmVzIGlzIGEgcmVjdGFuZ2xlIGNhbGxl
ZCB0aGUgaW5pdGlhbCBjb250YWluaW5nIGJsb2NrLgotICAgIC8vIEZvciBvdGhlciBlbGVtZW50
cywgaWYgdGhlIGVsZW1lbnQncyBwb3NpdGlvbiBpcyAncmVsYXRpdmUnIG9yICdzdGF0aWMnLCB0
aGUgY29udGFpbmluZyBibG9jayBpcyBmb3JtZWQgYnkgdGhlCi0gICAgLy8gY29udGVudCBlZGdl
IG9mIHRoZSBuZWFyZXN0IGJsb2NrIGNvbnRhaW5lciBhbmNlc3RvciBib3ggb3Igd2hpY2ggZXN0
YWJsaXNoZXMgYSBmb3JtYXR0aW5nIGNvbnRleHQuCi0gICAgLy8gSWYgdGhlIGVsZW1lbnQgaGFz
ICdwb3NpdGlvbjogZml4ZWQnLCB0aGUgY29udGFpbmluZyBibG9jayBpcyBlc3RhYmxpc2hlZCBi
eSB0aGUgdmlld3BvcnQKLSAgICAvLyBJZiB0aGUgZWxlbWVudCBoYXMgJ3Bvc2l0aW9uOiBhYnNv
bHV0ZScsIHRoZSBjb250YWluaW5nIGJsb2NrIGlzIGVzdGFibGlzaGVkIGJ5IHRoZSBuZWFyZXN0
IGFuY2VzdG9yIHdpdGggYQotICAgIC8vICdwb3NpdGlvbicgb2YgJ2Fic29sdXRlJywgJ3JlbGF0
aXZlJyBvciAnZml4ZWQnLgotICAgIGlmICghaXNQb3NpdGlvbmVkKCkgfHwgaXNJbkZsb3dQb3Np
dGlvbmVkKCkpIHsKLSAgICAgICAgYXV0byogYW5jZXN0b3IgPSAmcGFyZW50KCk7Ci0gICAgICAg
IGZvciAoOyAhaXM8SW5pdGlhbENvbnRhaW5pbmdCbG9jaz4oKmFuY2VzdG9yKTsgYW5jZXN0b3Ig
PSAmYW5jZXN0b3ItPnBhcmVudCgpKSB7Ci0gICAgICAgICAgICBpZiAoYW5jZXN0b3ItPmlzQ29u
dGFpbmluZ0Jsb2NrRm9ySW5GbG93KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuICphbmNlc3Rv
cjsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gKmFuY2VzdG9yOwotICAgIH0KLQotICAgIGlm
IChpc0ZpeGVkUG9zaXRpb25lZCgpKSB7Ci0gICAgICAgIGF1dG8qIGFuY2VzdG9yID0gJnBhcmVu
dCgpOwotICAgICAgICBmb3IgKDsgIWlzPEluaXRpYWxDb250YWluaW5nQmxvY2s+KCphbmNlc3Rv
cik7IGFuY2VzdG9yID0gJmFuY2VzdG9yLT5wYXJlbnQoKSkgewotICAgICAgICAgICAgaWYgKGFu
Y2VzdG9yLT5pc0NvbnRhaW5pbmdCbG9ja0ZvckZpeGVkUG9zaXRpb24oKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gKmFuY2VzdG9yOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAqYW5jZXN0
b3I7Ci0gICAgfQotCi0gICAgaWYgKGlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKSB7Ci0gICAgICAg
IGF1dG8qIGFuY2VzdG9yID0gJnBhcmVudCgpOwotICAgICAgICBmb3IgKDsgIWlzPEluaXRpYWxD
b250YWluaW5nQmxvY2s+KCphbmNlc3Rvcik7IGFuY2VzdG9yID0gJmFuY2VzdG9yLT5wYXJlbnQo
KSkgewotICAgICAgICAgICAgaWYgKGFuY2VzdG9yLT5pc0NvbnRhaW5pbmdCbG9ja0Zvck91dE9m
Rmxvd1Bvc2l0aW9uKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuICphbmNlc3RvcjsKLSAgICAg
ICAgfQotICAgICAgICByZXR1cm4gKmFuY2VzdG9yOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIHJldHVybiBwYXJlbnQoKTsKLX0KLQogYm9vbCBCb3g6OmlzSW5saW5l
QmxvY2tCb3goKSBjb25zdAogewogICAgIHJldHVybiBtX3N0eWxlLmRpc3BsYXkoKSA9PSBEaXNw
bGF5VHlwZTo6SW5saW5lQmxvY2s7CkBAIC00MDYsNyArMzYzLDcgQEAgYm9vbCBCb3g6OmlzT3Zl
cmZsb3dWaXNpYmxlKCkgY29uc3QKICAgICAvLyBpZiB0aGUgdmFsdWUgb24gdGhlIHJvb3QgZWxl
bWVudCBpcyAndmlzaWJsZScuIFRoZSAndmlzaWJsZScgdmFsdWUgd2hlbiB1c2VkIGZvciB0aGUg
dmlld3BvcnQgbXVzdCBiZSBpbnRlcnByZXRlZCBhcyAnYXV0bycuCiAgICAgLy8gVGhlIGVsZW1l
bnQgZnJvbSB3aGljaCB0aGUgdmFsdWUgaXMgcHJvcGFnYXRlZCBtdXN0IGhhdmUgYSB1c2VkIHZh
bHVlIGZvciAnb3ZlcmZsb3cnIG9mICd2aXNpYmxlJy4KICAgICBpZiAoaXNCb2R5Qm94KCkpIHsK
LSAgICAgICAgYXV0byYgZG9jdW1lbnRCb3ggPSBjb250YWluaW5nQmxvY2soKTsKKyAgICAgICAg
YXV0byYgZG9jdW1lbnRCb3ggPSBwYXJlbnQoKTsKICAgICAgICAgaWYgKCFkb2N1bWVudEJveC5p
c0RvY3VtZW50Qm94KCkpCiAgICAgICAgICAgICByZXR1cm4gaXNPdmVyZmxvd1Zpc2libGU7CiAg
ICAgICAgIGlmICghZG9jdW1lbnRCb3guaXNPdmVyZmxvd1Zpc2libGUoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmgKaW5kZXggYTQyYzU1NmE0ZDAwLi5m
MDQ5YmZiNTVlNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVl
L0xheW91dEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91
dEJveC5oCkBAIC05MCw4ICs5MCw2IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNGbG9hdGluZ09y
T3V0T2ZGbG93UG9zaXRpb25lZCgpIGNvbnN0IHsgcmV0dXJuIGlzRmxvYXRpbmdQb3NpdGlvbmVk
KCkgfHwgaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCk7IH0KIAotICAgIGNvbnN0IENvbnRhaW5lckJv
eCYgY29udGFpbmluZ0Jsb2NrKCkgY29uc3Q7Ci0KICAgICBib29sIGlzQ29udGFpbmluZ0Jsb2Nr
Rm9ySW5GbG93KCkgY29uc3Q7CiAgICAgYm9vbCBpc0NvbnRhaW5pbmdCbG9ja0ZvckZpeGVkUG9z
aXRpb24oKSBjb25zdDsKICAgICBib29sIGlzQ29udGFpbmluZ0Jsb2NrRm9yT3V0T2ZGbG93UG9z
aXRpb24oKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0
cmVlL0xheW91dENvbnRhaW5pbmdCbG9ja0NoYWluSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9sYXlvdXR0cmVlL0xheW91dENvbnRhaW5pbmdCbG9ja0NoYWluSXRlcmF0b3IuaApp
bmRleCAyZThkNDM0MDQ3MGYuLmEzODg3MDI0ODEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Q29udGFpbmluZ0Jsb2NrQ2hhaW5JdGVyYXRvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dENvbnRhaW5pbmdC
bG9ja0NoYWluSXRlcmF0b3IuaApAQCAtNjgsNyArNjgsNyBAQCBpbmxpbmUgTGF5b3V0Q29udGFp
bmluZ0Jsb2NrQ2hhaW5JdGVyYXRvcjo6TGF5b3V0Q29udGFpbmluZ0Jsb2NrQ2hhaW5JdGVyYXRv
cihjbwogaW5saW5lIExheW91dENvbnRhaW5pbmdCbG9ja0NoYWluSXRlcmF0b3ImIExheW91dENv
bnRhaW5pbmdCbG9ja0NoYWluSXRlcmF0b3I6Om9wZXJhdG9yKysoKQogewogICAgIEFTU0VSVCht
X2N1cnJlbnQpOwotICAgIG1fY3VycmVudCA9IG1fY3VycmVudC0+aXNJbml0aWFsQ29udGFpbmlu
Z0Jsb2NrKCkgPyBudWxscHRyIDogJm1fY3VycmVudC0+Y29udGFpbmluZ0Jsb2NrKCk7CisgICAg
bV9jdXJyZW50ID0gbV9jdXJyZW50LT5pc0luaXRpYWxDb250YWluaW5nQmxvY2soKSA/IG51bGxw
dHIgOiAmRm9ybWF0dGluZ0NvbnRleHQ6OmNvbnRhaW5pbmdCbG9jaygqbV9jdXJyZW50KTsKICAg
ICByZXR1cm4gKnRoaXM7CiB9CiAKQEAgLTgwLDEzICs4MCwxMyBAQCBpbmxpbmUgTGF5b3V0Q29u
dGFpbmluZ0Jsb2NrQ2hhaW5JdGVyYXRvckFkYXB0ZXI6OkxheW91dENvbnRhaW5pbmdCbG9ja0No
YWluSXRlcgogCiBpbmxpbmUgTGF5b3V0Q29udGFpbmluZ0Jsb2NrQ2hhaW5JdGVyYXRvckFkYXB0
ZXIgY29udGFpbmluZ0Jsb2NrQ2hhaW4oY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7Ci0gICAgcmV0
dXJuIExheW91dENvbnRhaW5pbmdCbG9ja0NoYWluSXRlcmF0b3JBZGFwdGVyKGxheW91dEJveC5j
b250YWluaW5nQmxvY2soKSk7CisgICAgcmV0dXJuIExheW91dENvbnRhaW5pbmdCbG9ja0NoYWlu
SXRlcmF0b3JBZGFwdGVyKEZvcm1hdHRpbmdDb250ZXh0Ojpjb250YWluaW5nQmxvY2sobGF5b3V0
Qm94KSk7CiB9CiAKIGlubGluZSBMYXlvdXRDb250YWluaW5nQmxvY2tDaGFpbkl0ZXJhdG9yQWRh
cHRlciBjb250YWluaW5nQmxvY2tDaGFpbihjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgQ29u
dGFpbmVyQm94JiBzdGF5V2l0aGluKQogewogICAgIEFTU0VSVChsYXlvdXRCb3guaXNEZXNjZW5k
YW50T2Yoc3RheVdpdGhpbikpOwotICAgIHJldHVybiBMYXlvdXRDb250YWluaW5nQmxvY2tDaGFp
bkl0ZXJhdG9yQWRhcHRlcihsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCksICZzdGF5V2l0aGlu
KTsKKyAgICByZXR1cm4gTGF5b3V0Q29udGFpbmluZ0Jsb2NrQ2hhaW5JdGVyYXRvckFkYXB0ZXIo
Rm9ybWF0dGluZ0NvbnRleHQ6OmNvbnRhaW5pbmdCbG9jayhsYXlvdXRCb3gpLCAmc3RheVdpdGhp
bik7CiB9CiAKIGlubGluZSBMYXlvdXRDb250YWluaW5nQmxvY2tDaGFpbkl0ZXJhdG9yQWRhcHRl
ciBjb250YWluaW5nQmxvY2tDaGFpbldpdGhpbkZvcm1hdHRpbmdDb250ZXh0KGNvbnN0IEJveCYg
bGF5b3V0Qm94LCBjb25zdCBDb250YWluZXJCb3gmIHJvb3QpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>