<?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>202351</bug_id>
          
          <creation_ts>2019-09-28 13:18:57 -0700</creation_ts>
          <short_desc>[LFC][IFC] Move horizontal alignment to Line</short_desc>
          <delta_ts>2019-09-28 18:59:34 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>commit-queue</cc>
    
    <cc>koivisto</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>1575079</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-09-28 13:18:57 -0700</bug_when>
    <thetext>Line should finalize the runs including horizontal alignment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575080</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-28 13:19:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/55810139&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575084</commentid>
    <comment_count>2</comment_count>
      <attachid>379794</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-09-28 13:26:27 -0700</bug_when>
    <thetext>Created attachment 379794
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575086</commentid>
    <comment_count>3</comment_count>
      <attachid>379795</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-09-28 13:40:25 -0700</bug_when>
    <thetext>Created attachment 379795
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575092</commentid>
    <comment_count>4</comment_count>
      <attachid>379795</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-09-28 14:20:58 -0700</bug_when>
    <thetext>Comment on attachment 379795
Patch

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

&gt; Source/WebCore/layout/inlineformatting/InlineLine.cpp:60
&gt; +Line::Line(const InlineFormattingContext&amp; inlineFormattingContext, const InitialConstraints&amp; initialConstraints, Optional&lt;TextAlignMode&gt; horizontalAlignment,  SkipAlignment skipAlignment)

Double space before SkipAlignment

&gt; Source/WebCore/layout/inlineformatting/InlineLine.cpp:136
&gt; +        verticalAlignContent();
&gt; +        horizontalAlignContent();

alignContentVerticall() would read better, or just alignVertically(). But maybe there is some naming pattern here to match the property name?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575111</commentid>
    <comment_count>5</comment_count>
      <attachid>379797</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-09-28 17:57:45 -0700</bug_when>
    <thetext>Created attachment 379797
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575112</commentid>
    <comment_count>6</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-09-28 17:58:15 -0700</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #4)
&gt; Comment on attachment 379795 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=379795&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/layout/inlineformatting/InlineLine.cpp:60
&gt; &gt; +Line::Line(const InlineFormattingContext&amp; inlineFormattingContext, const InitialConstraints&amp; initialConstraints, Optional&lt;TextAlignMode&gt; horizontalAlignment,  SkipAlignment skipAlignment)
&gt; 
&gt; Double space before SkipAlignment
&gt; 
&gt; &gt; Source/WebCore/layout/inlineformatting/InlineLine.cpp:136
&gt; &gt; +        verticalAlignContent();
&gt; &gt; +        horizontalAlignContent();
&gt; 
&gt; alignContentVerticall() would read better, or just alignVertically(). But
&gt; maybe there is some naming pattern here to match the property name?
Good point!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575117</commentid>
    <comment_count>7</comment_count>
      <attachid>379797</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-28 18:59:33 -0700</bug_when>
    <thetext>Comment on attachment 379797
Patch

Clearing flags on attachment: 379797

Committed r250487: &lt;https://trac.webkit.org/changeset/250487&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575118</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-28 18:59:34 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379794</attachid>
            <date>2019-09-28 13:26:27 -0700</date>
            <delta_ts>2019-09-28 13:28:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202351-20190928132623.patch</filename>
            <type>text/plain</type>
            <size>20304</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNDU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGY4NTcwODViN2ZlMjM2
ODBjZWJjMzgxYzUwYzQwZGU4NDU5YTJhNS4uNjhlNDg0MDI0NzA5ZWM0MzY4ZjI4NzhkOGI3ZTcz
MmZhYzdmOGUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE5LTA5LTI4ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBNb3ZlIGhv
cml6b250YWwgYWxpZ25tZW50IHRvIExpbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMjM1MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTU4MTAx
Mzk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTGlu
ZSBzaG91bGQgYmUgYWJsZSB0byBmaW5hbGl6ZSB0aGUgcnVuIHBsYWNlbWVudCBpbmNsdWRpbmcg
aG9yaXpvbnRhbCBhbGlnbm1lbnQuCisKKyAgICAgICAgKiBsYXlvdXQvVmVyaWZpY2F0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6b3V0cHV0TWlzbWF0Y2hpbmdTaW1wbGVMaW5l
SW5mb3JtYXRpb25JZk5lZWRlZCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lRm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6TGluZUlucHV0OjpMaW5lSW5wdXQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpMaW5lTGF5b3V0OjpMaW5lTGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQ6OklubGluZUxheW91dDo6bGF5b3V0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OklubGluZUxheW91dDo6Y29t
cHV0ZWRJbnRyaW5zaWNXaWR0aCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lTGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6Okxp
bmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjppc1Zpc3VhbGx5RW1wdHkgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjpjbG9zZSk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OnZlcnRpY2FsQWxpZ25Db250ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6TGluZTo6aG9yaXpvbnRhbEFsaWduQ29udGVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OmFwcGVuZElubGluZUNvbnRhaW5lclN0YXJ0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6TGluZTo6YXBwZW5kVGV4dENvbnRlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpMaW5lOjphcHBlbmROb25SZXBsYWNlZElubGluZUJveCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OmFwcGVuZEhhcmRMaW5lQnJlYWspOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjppbmxpbmVJdGVtQ29udGVudEhlaWdodCBjb25zdCk6
CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5oOgorCiAyMDE5
LTA5LTI4ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11b
SUZDXSBMaW5lOjpJbml0aWFsQ29uc3RyYWludHMncyBoZWlnaHRBbmRCYXNlbGluZSBzaG91bGQg
YmUgb3B0aW9uYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9WZXJpZmljYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAKaW5kZXggZmY2
N2RmZjdhMmNkNTU3YmU5YTRmMDIyYWU4ZTU4MmM1YzM1YTlkOC4uMGFiZGNmZTZkZDc0NmQ5NTBl
ZWZmYTEyMDJlNzg4ZjM4OGIzMjI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L1ZlcmlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlv
bi5jcHAKQEAgLTk5LDcgKzk5LDExIEBAIHN0YXRpYyBib29sIG91dHB1dE1pc21hdGNoaW5nU2lt
cGxlTGluZUluZm9ybWF0aW9uSWZOZWVkZWQoVGV4dFN0cmVhbSYgc3RyZWFtLCBjCiAgICAgICAg
IGlmIChtYXRjaGluZ1J1bnMpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBzdHJl
YW0gPDwgIk1pc21hdGNoaW5nOiBzaW1wbGUgcnVuKCIgPDwgc2ltcGxlUnVuLnN0YXJ0IDw8ICIs
ICIgPDwgc2ltcGxlUnVuLmVuZCA8PCAiKSAoIiA8PCBzaW1wbGVSdW4ubG9naWNhbExlZnQgPDwg
IiwgIiA8PCBzaW1wbGVSdW4ubG9naWNhbFJpZ2h0IDw8ICIpIGxheW91dCBydW4oIiA8PCBpbmxp
bmVSdW4udGV4dENvbnRleHQoKS0+c3RhcnQoKSA8PCAiLCAiIDw8IGlubGluZVJ1bi50ZXh0Q29u
dGV4dCgpLT5lbmQoKSA8PCAiKSAoIiA8PCBpbmxpbmVSdW4ubG9naWNhbExlZnQoKSA8PCAiLCAi
IDw8IGlubGluZVJ1bi5sb2dpY2FsUmlnaHQoKSA8PCAiKSI7CisgICAgICAgIHN0cmVhbSA8PCAi
TWlzbWF0Y2hpbmc6IHNpbXBsZSBydW4oIiA8PCBzaW1wbGVSdW4uc3RhcnQgPDwgIiwgIiA8PCBz
aW1wbGVSdW4uZW5kIDw8ICIpICgiIDw8IHNpbXBsZVJ1bi5sb2dpY2FsTGVmdCA8PCAiLCAiIDw8
IHNpbXBsZVJ1bi5sb2dpY2FsUmlnaHQgPDwgIikiOworICAgICAgICBzdHJlYW0gPDwgIiBpbmxp
bmUgcnVuIjsKKyAgICAgICAgaWYgKGlubGluZVJ1bi50ZXh0Q29udGV4dCgpKQorICAgICAgICAg
ICAgc3RyZWFtIDw8ICIgKCIgPDwgaW5saW5lUnVuLnRleHRDb250ZXh0KCktPnN0YXJ0KCkgPDwg
IiwgIiA8PCBpbmxpbmVSdW4udGV4dENvbnRleHQoKS0+ZW5kKCkgPDwgIikiOworICAgICAgICBz
dHJlYW0gPDwgIiAoIiA8PCBpbmxpbmVSdW4ubG9naWNhbExlZnQoKSA8PCAiLCAiIDw8IGlubGlu
ZVJ1bi5sb2dpY2FsVG9wKCkgPDwgIikgKCIgPDwgaW5saW5lUnVuLmxvZ2ljYWxXaWR0aCgpIDw8
ICJ4IiA8PCBpbmxpbmVSdW4ubG9naWNhbEhlaWdodCgpIDw8ICIpIjsKICAgICAgICAgc3RyZWFt
Lm5leHRMaW5lKCk7CiAgICAgICAgIG1pc21hdGNoZWQgPSB0cnVlOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRp
bmdDb250ZXh0TGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQuY3BwCmluZGV4IDRkNDdj
MjcwNDQ1OGI4MzA5ZjEwZjQ3N2YzNjNjN2NmNDZhYWI5N2IuLjM4MDM0ZmFkMDI5OGFlOWVmY2U4
MzRlNmVlMWIzODliYzk5MjkzNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHRMaW5lTGF5b3V0LmNwcApAQCAtODEsMTkgKzgxLDI5IEBAIHN0cnVjdCBJbmRleEFu
ZFJhbmdlIHsKIH07CiAKIHN0cnVjdCBMaW5lSW5wdXQgewotICAgIExpbmVJbnB1dChjb25zdCBM
aW5lOjpJbml0aWFsQ29uc3RyYWludHMmIGluaXRpYWxMaW5lQ29uc3RyYWludHMsIExpbmU6OlNr
aXBWZXJ0aWNhbEFsaWdtZW50LCBJbmRleEFuZFJhbmdlIGZpcnN0VG9Qcm9jZXNzLCBjb25zdCBJ
bmxpbmVJdGVtcyYpOworICAgIExpbmVJbnB1dChjb25zdCBMaW5lOjpJbml0aWFsQ29uc3RyYWlu
dHMmLCBUZXh0QWxpZ25Nb2RlLCBJbmRleEFuZFJhbmdlIGZpcnN0VG9Qcm9jZXNzLCBjb25zdCBJ
bmxpbmVJdGVtcyYpOworICAgIExpbmVJbnB1dChjb25zdCBMaW5lOjpJbml0aWFsQ29uc3RyYWlu
dHMmLCBJbmRleEFuZFJhbmdlIGZpcnN0VG9Qcm9jZXNzLCBjb25zdCBJbmxpbmVJdGVtcyYpOwog
CiAgICAgTGluZTo6SW5pdGlhbENvbnN0cmFpbnRzIGluaXRpYWxDb25zdHJhaW50czsKKyAgICBU
ZXh0QWxpZ25Nb2RlIGhvcml6b250YWxBbGlnbm1lbnQ7CiAgICAgLy8gRklYTUUgQWx0ZXJuYXRp
dmVseSB3ZSBjb3VsZCBqdXN0IGhhdmUgYSBzZWNvbmQgcGFzcyB3aXRoIHZlcnRpY2FsIHBvc2l0
aW9uaW5nIChwcmVmZXJyZWQgd2lkdGggY29tcHV0YXRpb24gb3B0cyBvdXQpIAotICAgIExpbmU6
OlNraXBWZXJ0aWNhbEFsaWdtZW50IHNraXBWZXJ0aWNhbEFsaWdtZW50OworICAgIExpbmU6OlNr
aXBBbGlnbm1lbnQgc2tpcEFsaWdubWVudCB7IExpbmU6OlNraXBBbGlnbm1lbnQ6Ok5vIH07CiAg
ICAgSW5kZXhBbmRSYW5nZSBmaXJzdElubGluZUl0ZW07CiAgICAgY29uc3QgSW5saW5lSXRlbXMm
IGlubGluZUl0ZW1zOwogICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGZsb2F0TWluaW11bUxvZ2lj
YWxCb3R0b207CiB9OwogCi1MaW5lSW5wdXQ6OkxpbmVJbnB1dChjb25zdCBMaW5lOjpJbml0aWFs
Q29uc3RyYWludHMmIGluaXRpYWxMaW5lQ29uc3RyYWludHMsIExpbmU6OlNraXBWZXJ0aWNhbEFs
aWdtZW50IHNraXBWZXJ0aWNhbEFsaWdtZW50LCBJbmRleEFuZFJhbmdlIGZpcnN0VG9Qcm9jZXNz
LCBjb25zdCBJbmxpbmVJdGVtcyYgaW5saW5lSXRlbXMpCitMaW5lSW5wdXQ6OkxpbmVJbnB1dChj
b25zdCBMaW5lOjpJbml0aWFsQ29uc3RyYWludHMmIGluaXRpYWxMaW5lQ29uc3RyYWludHMsIFRl
eHRBbGlnbk1vZGUgaG9yaXpvbnRhbEFsaWdubWVudCwgSW5kZXhBbmRSYW5nZSBmaXJzdFRvUHJv
Y2VzcywgY29uc3QgSW5saW5lSXRlbXMmIGlubGluZUl0ZW1zKQogICAgIDogaW5pdGlhbENvbnN0
cmFpbnRzKGluaXRpYWxMaW5lQ29uc3RyYWludHMpCi0gICAgLCBza2lwVmVydGljYWxBbGlnbWVu
dChza2lwVmVydGljYWxBbGlnbWVudCkKKyAgICAsIGhvcml6b250YWxBbGlnbm1lbnQoaG9yaXpv
bnRhbEFsaWdubWVudCkKKyAgICAsIGZpcnN0SW5saW5lSXRlbShmaXJzdFRvUHJvY2VzcykKKyAg
ICAsIGlubGluZUl0ZW1zKGlubGluZUl0ZW1zKQoreworfQorCitMaW5lSW5wdXQ6OkxpbmVJbnB1
dChjb25zdCBMaW5lOjpJbml0aWFsQ29uc3RyYWludHMmIGluaXRpYWxMaW5lQ29uc3RyYWludHMs
IEluZGV4QW5kUmFuZ2UgZmlyc3RUb1Byb2Nlc3MsIGNvbnN0IElubGluZUl0ZW1zJiBpbmxpbmVJ
dGVtcykKKyAgICA6IGluaXRpYWxDb25zdHJhaW50cyhpbml0aWFsTGluZUNvbnN0cmFpbnRzKQor
ICAgICwgc2tpcEFsaWdubWVudChMaW5lOjpTa2lwQWxpZ25tZW50OjpZZXMpCiAgICAgLCBmaXJz
dElubGluZUl0ZW0oZmlyc3RUb1Byb2Nlc3MpCiAgICAgLCBpbmxpbmVJdGVtcyhpbmxpbmVJdGVt
cykKIHsKQEAgLTE2NCw3ICsxNzQsNyBAQCB2b2lkIExpbmVMYXlvdXQ6OlVuY29tbWl0dGVkQ29u
dGVudDo6cmVzZXQoKQogTGluZUxheW91dDo6TGluZUxheW91dChjb25zdCBJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dCYgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQsIGNvbnN0IExpbmVJbnB1dCYgbGlu
ZUlucHV0KQogICAgIDogbV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4dChpbmxpbmVGb3JtYXR0aW5n
Q29udGV4dCkKICAgICAsIG1fbGluZUlucHV0KGxpbmVJbnB1dCkKLSAgICAsIG1fbGluZShpbmxp
bmVGb3JtYXR0aW5nQ29udGV4dCwgbGluZUlucHV0LmluaXRpYWxDb25zdHJhaW50cywgbGluZUlu
cHV0LnNraXBWZXJ0aWNhbEFsaWdtZW50KQorICAgICwgbV9saW5lKGlubGluZUZvcm1hdHRpbmdD
b250ZXh0LCBsaW5lSW5wdXQuaW5pdGlhbENvbnN0cmFpbnRzLCBsaW5lSW5wdXQuaG9yaXpvbnRh
bEFsaWdubWVudCwgbGluZUlucHV0LnNraXBBbGlnbm1lbnQpCiAgICAgLCBtX2xpbmVIYXNJbnRy
dXNpdmVGbG9hdChsaW5lSW5wdXQuaW5pdGlhbENvbnN0cmFpbnRzLmxpbmVJc0NvbnN0cmFpbmVk
QnlGbG9hdCkKIHsKIH0KQEAgLTI4MSw3ICsyOTEsNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdD
b250ZXh0OjpJbmxpbmVMYXlvdXQ6OmxheW91dChjb25zdCBJbmxpbmVJdGVtcyYgaW5saW5lSXRl
bQogICAgIGF1dG8gbGluZUxvZ2ljYWxUb3AgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5
Rm9yQm94KGZvcm1hdHRpbmdSb290KCkpLmNvbnRlbnRCb3hUb3AoKTsKICAgICBJbmRleEFuZFJh
bmdlIGN1cnJlbnRJbmxpbmVJdGVtOwogICAgIHdoaWxlIChjdXJyZW50SW5saW5lSXRlbS5pbmRl
eCA8IGlubGluZUl0ZW1zLnNpemUoKSkgewotICAgICAgICBhdXRvIGxpbmVJbnB1dCA9IExpbmVJ
bnB1dCB7IGluaXRpYWxDb25zdHJhaW50c0ZvckxpbmUobGluZUxvZ2ljYWxUb3ApLCBMaW5lOjpT
a2lwVmVydGljYWxBbGlnbWVudDo6Tm8sIGN1cnJlbnRJbmxpbmVJdGVtLCBpbmxpbmVJdGVtcyB9
OworICAgICAgICBhdXRvIGxpbmVJbnB1dCA9IExpbmVJbnB1dCB7IGluaXRpYWxDb25zdHJhaW50
c0ZvckxpbmUobGluZUxvZ2ljYWxUb3ApLCBmb3JtYXR0aW5nUm9vdCgpLnN0eWxlKCkudGV4dEFs
aWduKCksIGN1cnJlbnRJbmxpbmVJdGVtLCBpbmxpbmVJdGVtcyB9OwogICAgICAgICBhdXRvIGxp
bmVMYXlvdXQgPSBMaW5lTGF5b3V0IHsgZm9ybWF0dGluZ0NvbnRleHQoKSwgbGluZUlucHV0IH07
CiAKICAgICAgICAgYXV0byBsaW5lQ29udGVudCA9IGxpbmVMYXlvdXQubGF5b3V0KCk7CkBAIC0z
NDksNyArMzU5LDcgQEAgTGF5b3V0VW5pdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6SW5saW5l
TGF5b3V0Ojpjb21wdXRlZEludHJpbnNpY1dpZHRoKGNvbnN0IEkKICAgICB3aGlsZSAoY3VycmVu
dElubGluZUl0ZW0uaW5kZXggPCBpbmxpbmVJdGVtcy5zaXplKCkpIHsKICAgICAgICAgLy8gT25s
eSB0aGUgaG9yaXp0b25hbCBhdmFpbGFibGUgd2lkdGggaXMgY29uc3RyYWluZWQgd2hlbiBjb21w
dXRpbmcgaW50cmluc2ljIHdpZHRoLgogICAgICAgICBhdXRvIGluaXRpYWxMaW5lQ29uc3RyYWlu
dHMgPSBMaW5lOjpJbml0aWFsQ29uc3RyYWludHMgeyB7IH0sIHdpZHRoQ29uc3RyYWludCgpLCBm
YWxzZSwgeyB9IH07Ci0gICAgICAgIGF1dG8gbGluZUlucHV0ID0gTGluZUlucHV0IHsgaW5pdGlh
bExpbmVDb25zdHJhaW50cywgTGluZTo6U2tpcFZlcnRpY2FsQWxpZ21lbnQ6OlllcywgY3VycmVu
dElubGluZUl0ZW0sIGlubGluZUl0ZW1zIH07CisgICAgICAgIGF1dG8gbGluZUlucHV0ID0gTGlu
ZUlucHV0IHsgaW5pdGlhbExpbmVDb25zdHJhaW50cywgY3VycmVudElubGluZUl0ZW0sIGlubGlu
ZUl0ZW1zIH07CiAKICAgICAgICAgYXV0byBsaW5lQ29udGVudCA9IExpbmVMYXlvdXQoZm9ybWF0
dGluZ0NvbnRleHQsIGxpbmVJbnB1dCkubGF5b3V0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5jcHAKaW5kZXggNjZiNzMy
ZjJiMzc2NjQyMjgyY2UzZjNjMjRjZTM2MGNjODcwZGQyOS4uNDI1ZTA4ZjMxNTUxZTg1YWM5NGEx
OWQ1NWZmYzM5MmJlODUwY2NjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5jcHAKQEAgLTU3LDEzICs1NywxNCBAQCBib29s
IExpbmU6OlJ1bjo6Y2FuQmVFeHRlbmRlZCgpIGNvbnN0CiAgICAgcmV0dXJuICFkb3duY2FzdDxJ
bmxpbmVUZXh0SXRlbT4obV9pbmxpbmVJdGVtKS5pc0NvbGxhcHNlZCgpICYmICFpc1Zpc3VhbGx5
RW1wdHkoKTsKIH0KIAotTGluZTo6TGluZShjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYg
aW5saW5lRm9ybWF0dGluZ0NvbnRleHQsIGNvbnN0IEluaXRpYWxDb25zdHJhaW50cyYgaW5pdGlh
bENvbnN0cmFpbnRzLCBTa2lwVmVydGljYWxBbGlnbWVudCBza2lwVmVydGljYWxBbGlnbWVudCkK
K0xpbmU6OkxpbmUoY29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmIGlubGluZUZvcm1hdHRp
bmdDb250ZXh0LCBjb25zdCBJbml0aWFsQ29uc3RyYWludHMmIGluaXRpYWxDb25zdHJhaW50cywg
T3B0aW9uYWw8VGV4dEFsaWduTW9kZT4gaG9yaXpvbnRhbEFsaWdubWVudCwgIFNraXBBbGlnbm1l
bnQgc2tpcEFsaWdubWVudCkKICAgICA6IG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQoaW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQpCiAgICAgLCBtX2luaXRpYWxTdHJ1dChpbml0aWFsQ29uc3RyYWlu
dHMuaGVpZ2h0QW5kQmFzZWxpbmUgPyBpbml0aWFsQ29uc3RyYWludHMuaGVpZ2h0QW5kQmFzZWxp
bmUtPnN0cnV0IDogV1RGOjpudWxsb3B0KQogICAgICwgbV9saW5lTG9naWNhbFdpZHRoKGluaXRp
YWxDb25zdHJhaW50cy5hdmFpbGFibGVMb2dpY2FsV2lkdGgpCi0gICAgLCBtX3NraXBWZXJ0aWNh
bEFsaWdtZW50KHNraXBWZXJ0aWNhbEFsaWdtZW50ID09IFNraXBWZXJ0aWNhbEFsaWdtZW50OjpZ
ZXMpCisgICAgLCBtX2hvcml6b250YWxBbGlnbm1lbnQoaG9yaXpvbnRhbEFsaWdubWVudCkKKyAg
ICAsIG1fc2tpcEFsaWdubWVudChza2lwQWxpZ25tZW50ID09IFNraXBBbGlnbm1lbnQ6OlllcykK
IHsKLSAgICBBU1NFUlQobV9za2lwVmVydGljYWxBbGlnbWVudCB8fCBpbml0aWFsQ29uc3RyYWlu
dHMuaGVpZ2h0QW5kQmFzZWxpbmUpOworICAgIEFTU0VSVChtX3NraXBBbGlnbm1lbnQgfHwgaW5p
dGlhbENvbnN0cmFpbnRzLmhlaWdodEFuZEJhc2VsaW5lKTsKICAgICBhdXRvIGluaXRpYWxMaW5l
SGVpZ2h0ID0gaW5pdGlhbENvbnN0cmFpbnRzLmhlaWdodEFuZEJhc2VsaW5lID8gaW5pdGlhbENv
bnN0cmFpbnRzLmhlaWdodEFuZEJhc2VsaW5lLT5oZWlnaHQgOiBMYXlvdXRVbml0KCk7CiAgICAg
YXV0byBpbml0aWFsQmFzZWxpbmVPZmZzZXQgPSBpbml0aWFsQ29uc3RyYWludHMuaGVpZ2h0QW5k
QmFzZWxpbmUgPyBpbml0aWFsQ29uc3RyYWludHMuaGVpZ2h0QW5kQmFzZWxpbmUtPmJhc2VsaW5l
T2Zmc2V0IDogTGF5b3V0VW5pdCgpOwogICAgIGF1dG8gbGluZVJlY3QgPSBEaXNwbGF5OjpSZWN0
IHsgaW5pdGlhbENvbnN0cmFpbnRzLmxvZ2ljYWxUb3BMZWZ0LCB7IH0sIGluaXRpYWxMaW5lSGVp
Z2h0IH07CkBAIC05Niw3ICs5Nyw3IEBAIGJvb2wgTGluZTo6aXNWaXN1YWxseUVtcHR5KCkgY29u
c3QKICAgICAgICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQuZ2Vv
bWV0cnlGb3JCb3gocnVuLT5sYXlvdXRCb3goKSk7CiAgICAgICAgICAgICBpZiAoIWJveEdlb21l
dHJ5LndpZHRoKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAo
bV9za2lwVmVydGljYWxBbGlnbWVudCB8fCBib3hHZW9tZXRyeS5oZWlnaHQoKSkKKyAgICAgICAg
ICAgIGlmIChtX3NraXBBbGlnbm1lbnQgfHwgYm94R2VvbWV0cnkuaGVpZ2h0KCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0K
QEAgLTEwOSw2MiArMTEwLDcgQEAgYm9vbCBMaW5lOjppc1Zpc3VhbGx5RW1wdHkoKSBjb25zdAog
TGluZTo6UnVuTGlzdCBMaW5lOjpjbG9zZSgpCiB7CiAgICAgcmVtb3ZlVHJhaWxpbmdUcmltbWFi
bGVDb250ZW50KCk7Ci0gICAgaWYgKCFtX3NraXBWZXJ0aWNhbEFsaWdtZW50KSB7Ci0gICAgICAg
IGlmIChpc1Zpc3VhbGx5RW1wdHkoKSkgewotICAgICAgICAgICAgbV9saW5lQm94LmJhc2VsaW5l
KCkucmVzZXQoKTsKLSAgICAgICAgICAgIG1fbGluZUJveC5zZXRCYXNlbGluZU9mZnNldCh7IH0p
OwotICAgICAgICAgICAgbV9saW5lQm94LnNldExvZ2ljYWxIZWlnaHQoeyB9KTsKLSAgICAgICAg
fQotCi0gICAgICAgIC8vIFJlbW92ZSBkZXNjZW50IHdoZW4gYWxsIGNvbnRlbnQgaXMgYmFzZWxp
bmUgYWxpZ25lZCBidXQgbm9uZSBvZiB0aGVtIGhhdmUgZGVzY2VudC4KLSAgICAgICAgaWYgKGZv
cm1hdHRpbmdDb250ZXh0KCkucXVpcmtzKCkubGluZURlc2NlbnROZWVkc0NvbGxhcHNpbmcobV9y
dW5MaXN0KSkgewotICAgICAgICAgICAgbV9saW5lQm94LnNocmlua1ZlcnRpY2FsbHkobV9saW5l
Qm94LmJhc2VsaW5lKCkuZGVzY2VudCgpKTsKLSAgICAgICAgICAgIG1fbGluZUJveC5iYXNlbGlu
ZSgpLnNldERlc2NlbnQoeyB9KTsKLSAgICAgICAgfQotCi0gICAgICAgIGF1dG8mIGxheW91dFN0
YXRlID0gdGhpcy0+bGF5b3V0U3RhdGUoKTsKLSAgICAgICAgYXV0byYgZm9ybWF0dGluZ0NvbnRl
eHQgPSB0aGlzLT5mb3JtYXR0aW5nQ29udGV4dCgpOwotICAgICAgICBmb3IgKGF1dG8mIHJ1biA6
IG1fcnVuTGlzdCkgewotICAgICAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsVG9wOwotICAgICAg
ICAgICAgYXV0byYgbGF5b3V0Qm94ID0gcnVuLT5sYXlvdXRCb3goKTsKLSAgICAgICAgICAgIGF1
dG8gdmVydGljYWxBbGlnbiA9IGxheW91dEJveC5zdHlsZSgpLnZlcnRpY2FsQWxpZ24oKTsKLSAg
ICAgICAgICAgIGF1dG8gYXNjZW50ID0gbGF5b3V0Qm94LnN0eWxlKCkuZm9udE1ldHJpY3MoKS5h
c2NlbnQoKTsKLQotICAgICAgICAgICAgc3dpdGNoICh2ZXJ0aWNhbEFsaWduKSB7Ci0gICAgICAg
ICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lOgotICAgICAgICAgICAgICAgIGlmIChy
dW4tPmlzTGluZUJyZWFrKCkgfHwgcnVuLT5pc1RleHQoKSkKLSAgICAgICAgICAgICAgICAgICAg
bG9naWNhbFRvcCA9IGJhc2VsaW5lT2Zmc2V0KCkgLSBhc2NlbnQ7Ci0gICAgICAgICAgICAgICAg
ZWxzZSBpZiAocnVuLT5pc0NvbnRhaW5lclN0YXJ0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAg
YXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dC5nZW9tZXRyeUZvckJveChsYXlv
dXRCb3gpOwotICAgICAgICAgICAgICAgICAgICBsb2dpY2FsVG9wID0gYmFzZWxpbmVPZmZzZXQo
KSAtIGFzY2VudCAtIGJveEdlb21ldHJ5LmJvcmRlclRvcCgpIC0gYm94R2VvbWV0cnkucGFkZGlu
Z1RvcCgpLnZhbHVlT3IoMCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsYXlvdXRCb3gu
aXNJbmxpbmVCbG9ja0JveCgpICYmIGxheW91dEJveC5lc3RhYmxpc2hlc0lubGluZUZvcm1hdHRp
bmdDb250ZXh0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byYgZm9ybWF0dGluZ1N0YXRl
ID0gZG93bmNhc3Q8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihsYXlvdXRTdGF0ZS5lc3RhYmxpc2hl
ZEZvcm1hdHRpbmdTdGF0ZShkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCkpKTsKLSAgICAg
ICAgICAgICAgICAgICAgLy8gU3BlYyBtYWtlcyB1cyBnZW5lcmF0ZSBhdCBsZWFzdCBvbmUgbGlu
ZSAtZXZlbiBpZiBpdCBpcyBlbXB0eS4KLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFmb3Jt
YXR0aW5nU3RhdGUubGluZUJveGVzKCkuaXNFbXB0eSgpKTsKLSAgICAgICAgICAgICAgICAgICAg
YXV0byBpbmxpbmVCbG9ja0Jhc2VsaW5lID0gZm9ybWF0dGluZ1N0YXRlLmxpbmVCb3hlcygpLmxh
c3QoKS5iYXNlbGluZSgpOwotICAgICAgICAgICAgICAgICAgICBsb2dpY2FsVG9wID0gYmFzZWxp
bmVPZmZzZXQoKSAtIGlubGluZUJsb2NrQmFzZWxpbmUuYXNjZW50KCk7Ci0gICAgICAgICAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBiYXNlbGluZU9mZnNl
dCgpIC0gcnVuLT5sb2dpY2FsUmVjdCgpLmhlaWdodCgpOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpUb3A6Ci0gICAgICAgICAgICAgICAg
bG9naWNhbFRvcCA9IHsgfTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNh
c2UgVmVydGljYWxBbGlnbjo6Qm90dG9tOgotICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBs
b2dpY2FsQm90dG9tKCkgLSBydW4tPmxvZ2ljYWxSZWN0KCkuaGVpZ2h0KCk7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIEFTU0VS
VF9OT1RfSU1QTEVNRU5URURfWUVUKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBydW4tPmFkanVzdExvZ2ljYWxUb3AobG9naWNhbFRvcCk7Ci0g
ICAgICAgICAgICAvLyBDb252ZXJ0IHJ1bnMgZnJvbSByZWxhdGl2ZSB0byB0aGUgbGluZSB0b3Av
bGVmdCB0byB0aGUgZm9ybWF0dGluZyByb290J3MgYm9yZGVyIGJveCB0b3AvbGVmdC4KLSAgICAg
ICAgICAgIHJ1bi0+bW92ZVZlcnRpY2FsbHkodGhpcy0+bG9naWNhbFRvcCgpKTsKLSAgICAgICAg
ICAgIHJ1bi0+bW92ZUhvcml6b250YWxseSh0aGlzLT5sb2dpY2FsTGVmdCgpKTsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIC8vIExldCdzIGpvaW4gdGV4dCBydW5zIHRvZ2V0aGVyIHdoZW4gcG9z
c2libGUuCi0gICAgLy8gRklYTUU6IENoZWNrIGlmIHdlIGNhbiBkbyBpdCBhcyBwYXJ0IG9mIHRo
ZSBsb29wIGFib3ZlLgorICAgIC8vIEpvaW4gdGV4dCBydW5zIHRvZ2V0aGVyIHdoZW4gcG9zc2li
bGUuCiAgICAgdW5zaWduZWQgaW5kZXggPSAxOwogICAgIHdoaWxlIChpbmRleCA8IG1fcnVuTGlz
dC5zaXplKCkpIHsKICAgICAgICAgYXV0byYgcHJldmlvdXNSdW4gPSBtX3J1bkxpc3RbaW5kZXgg
LSAxXTsKQEAgLTE4NCw5ICsxMzAsMTA2IEBAIExpbmU6OlJ1bkxpc3QgTGluZTo6Y2xvc2UoKQog
ICAgICAgICBwcmV2aW91c1J1bi0+ZXhwYW5kKCpjdXJyZW50UnVuKTsKICAgICAgICAgbV9ydW5M
aXN0LnJlbW92ZShpbmRleCk7CiAgICAgfQorCisgICAgaWYgKCFtX3NraXBBbGlnbm1lbnQpIHsK
KyAgICAgICAgdmVydGljYWxBbGlnbkNvbnRlbnQoKTsKKyAgICAgICAgaG9yaXpvbnRhbEFsaWdu
Q29udGVudCgpOworICAgIH0KKwogICAgIHJldHVybiBXVEZNb3ZlKG1fcnVuTGlzdCk7CiB9CiAK
K3ZvaWQgTGluZTo6dmVydGljYWxBbGlnbkNvbnRlbnQoKQoreworICAgIEFTU0VSVCghbV9za2lw
QWxpZ25tZW50KTsKKworICAgIGlmIChpc1Zpc3VhbGx5RW1wdHkoKSkgeworICAgICAgICBtX2xp
bmVCb3guYmFzZWxpbmUoKS5yZXNldCgpOworICAgICAgICBtX2xpbmVCb3guc2V0QmFzZWxpbmVP
ZmZzZXQoeyB9KTsKKyAgICAgICAgbV9saW5lQm94LnNldExvZ2ljYWxIZWlnaHQoeyB9KTsKKyAg
ICB9CisKKyAgICAvLyBSZW1vdmUgZGVzY2VudCB3aGVuIGFsbCBjb250ZW50IGlzIGJhc2VsaW5l
IGFsaWduZWQgYnV0IG5vbmUgb2YgdGhlbSBoYXZlIGRlc2NlbnQuCisgICAgaWYgKGZvcm1hdHRp
bmdDb250ZXh0KCkucXVpcmtzKCkubGluZURlc2NlbnROZWVkc0NvbGxhcHNpbmcobV9ydW5MaXN0
KSkgeworICAgICAgICBtX2xpbmVCb3guc2hyaW5rVmVydGljYWxseShtX2xpbmVCb3guYmFzZWxp
bmUoKS5kZXNjZW50KCkpOworICAgICAgICBtX2xpbmVCb3guYmFzZWxpbmUoKS5zZXREZXNjZW50
KHsgfSk7CisgICAgfQorCisgICAgYXV0byYgbGF5b3V0U3RhdGUgPSB0aGlzLT5sYXlvdXRTdGF0
ZSgpOworICAgIGF1dG8mIGZvcm1hdHRpbmdDb250ZXh0ID0gdGhpcy0+Zm9ybWF0dGluZ0NvbnRl
eHQoKTsKKyAgICBmb3IgKGF1dG8mIHJ1biA6IG1fcnVuTGlzdCkgeworICAgICAgICBMYXlvdXRV
bml0IGxvZ2ljYWxUb3A7CisgICAgICAgIGF1dG8mIGxheW91dEJveCA9IHJ1bi0+bGF5b3V0Qm94
KCk7CisgICAgICAgIGF1dG8gdmVydGljYWxBbGlnbiA9IGxheW91dEJveC5zdHlsZSgpLnZlcnRp
Y2FsQWxpZ24oKTsKKyAgICAgICAgYXV0byBhc2NlbnQgPSBsYXlvdXRCb3guc3R5bGUoKS5mb250
TWV0cmljcygpLmFzY2VudCgpOworCisgICAgICAgIHN3aXRjaCAodmVydGljYWxBbGlnbikgewor
ICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lOgorICAgICAgICAgICAgaWYgKHJ1
bi0+aXNMaW5lQnJlYWsoKSB8fCBydW4tPmlzVGV4dCgpKQorICAgICAgICAgICAgICAgIGxvZ2lj
YWxUb3AgPSBiYXNlbGluZU9mZnNldCgpIC0gYXNjZW50OworICAgICAgICAgICAgZWxzZSBpZiAo
cnVuLT5pc0NvbnRhaW5lclN0YXJ0KCkpIHsKKyAgICAgICAgICAgICAgICBhdXRvJiBib3hHZW9t
ZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5Rm9yQm94KGxheW91dEJveCk7CisgICAg
ICAgICAgICAgICAgbG9naWNhbFRvcCA9IGJhc2VsaW5lT2Zmc2V0KCkgLSBhc2NlbnQgLSBib3hH
ZW9tZXRyeS5ib3JkZXJUb3AoKSAtIGJveEdlb21ldHJ5LnBhZGRpbmdUb3AoKS52YWx1ZU9yKDAp
OworICAgICAgICAgICAgfSBlbHNlIGlmIChsYXlvdXRCb3guaXNJbmxpbmVCbG9ja0JveCgpICYm
IGxheW91dEJveC5lc3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkpIHsKKyAgICAg
ICAgICAgICAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUgPSBkb3duY2FzdDxJbmxpbmVGb3JtYXR0
aW5nU3RhdGU+KGxheW91dFN0YXRlLmVzdGFibGlzaGVkRm9ybWF0dGluZ1N0YXRlKGRvd25jYXN0
PENvbnRhaW5lcj4obGF5b3V0Qm94KSkpOworICAgICAgICAgICAgICAgIC8vIFNwZWMgbWFrZXMg
dXMgZ2VuZXJhdGUgYXQgbGVhc3Qgb25lIGxpbmUgLWV2ZW4gaWYgaXQgaXMgZW1wdHkuCisgICAg
ICAgICAgICAgICAgQVNTRVJUKCFmb3JtYXR0aW5nU3RhdGUubGluZUJveGVzKCkuaXNFbXB0eSgp
KTsKKyAgICAgICAgICAgICAgICBhdXRvIGlubGluZUJsb2NrQmFzZWxpbmUgPSBmb3JtYXR0aW5n
U3RhdGUubGluZUJveGVzKCkubGFzdCgpLmJhc2VsaW5lKCk7CisgICAgICAgICAgICAgICAgbG9n
aWNhbFRvcCA9IGJhc2VsaW5lT2Zmc2V0KCkgLSBpbmxpbmVCbG9ja0Jhc2VsaW5lLmFzY2VudCgp
OworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IGJhc2Vs
aW5lT2Zmc2V0KCkgLSBydW4tPmxvZ2ljYWxSZWN0KCkuaGVpZ2h0KCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpUb3A6CisgICAgICAgICAgICBsb2dp
Y2FsVG9wID0geyB9OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVmVydGljYWxB
bGlnbjo6Qm90dG9tOgorICAgICAgICAgICAgbG9naWNhbFRvcCA9IGxvZ2ljYWxCb3R0b20oKSAt
IHJ1bi0+bG9naWNhbFJlY3QoKS5oZWlnaHQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9JTVBMRU1FTlRFRF9ZRVQoKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHJ1bi0+YWRqdXN0TG9naWNhbFRv
cChsb2dpY2FsVG9wKTsKKyAgICAgICAgLy8gQ29udmVydCBydW5zIGZyb20gcmVsYXRpdmUgdG8g
dGhlIGxpbmUgdG9wL2xlZnQgdG8gdGhlIGZvcm1hdHRpbmcgcm9vdCdzIGJvcmRlciBib3ggdG9w
L2xlZnQuCisgICAgICAgIHJ1bi0+bW92ZVZlcnRpY2FsbHkodGhpcy0+bG9naWNhbFRvcCgpKTsK
KyAgICAgICAgcnVuLT5tb3ZlSG9yaXpvbnRhbGx5KHRoaXMtPmxvZ2ljYWxMZWZ0KCkpOworICAg
IH0KK30KKwordm9pZCBMaW5lOjpob3Jpem9udGFsQWxpZ25Db250ZW50KCkKK3sKKyAgICBBU1NF
UlQoIW1fc2tpcEFsaWdubWVudCk7CisKKyAgICBhdXRvIGFkanVzdG1lbnRGb3JBbGlnbm1lbnQg
PSBbJl0oKSAtPiBPcHRpb25hbDxMYXlvdXRVbml0PiB7CisgICAgICAgIHN3aXRjaCAoKm1faG9y
aXpvbnRhbEFsaWdubWVudCkgeworICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkxlZnQ6Cisg
ICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0TGVmdDoKKyAgICAgICAgY2FzZSBUZXh0
QWxpZ25Nb2RlOjpTdGFydDoKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIGNhc2Ug
VGV4dEFsaWduTW9kZTo6UmlnaHQ6CisgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0
UmlnaHQ6CisgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6RW5kOgorICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bWF4KGF2YWlsYWJsZVdpZHRoKCksIDBfbHUpOworICAgICAgICBjYXNlIFRleHRB
bGlnbk1vZGU6OkNlbnRlcjoKKyAgICAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRDZW50
ZXI6CisgICAgICAgICAgICByZXR1cm4gc3RkOjptYXgoYXZhaWxhYmxlV2lkdGgoKSAvIDIsIDBf
bHUpOworICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6Okp1c3RpZnk6CisgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4geyB9OworICAgIH07CisK
KyAgICBhdXRvIGFkanVzdG1lbnQgPSBhZGp1c3RtZW50Rm9yQWxpZ25tZW50KCk7CisgICAgaWYg
KCFhZGp1c3RtZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKGF1dG8mIHJ1biA6IG1f
cnVuTGlzdCkKKyAgICAgICAgcnVuLT5tb3ZlSG9yaXpvbnRhbGx5KCphZGp1c3RtZW50KTsKKyAg
ICAvLyBGSVhNRTogRmluZCBvdXQgaWYgbV9saW5lQm94IG5lZWRzIGFkanVzdG1uZW50IGFzIHdl
bGwuCit9CisKIHZvaWQgTGluZTo6cmVtb3ZlVHJhaWxpbmdUcmltbWFibGVDb250ZW50KCkKIHsK
ICAgICAvLyBDb2xsYXBzZSB0cmltbWFibGUgdHJhaWxpbmcgY29udGVudApAQCAtMjUxLDcgKzI5
NCw3IEBAIHZvaWQgTGluZTo6YXBwZW5kSW5saW5lQ29udGFpbmVyU3RhcnQoY29uc3QgSW5saW5l
SXRlbSYgaW5saW5lSXRlbSwgTGF5b3V0VW5pdCBsCiAgICAgbG9naWNhbFJlY3Quc2V0TGVmdChj
b250ZW50TG9naWNhbFdpZHRoKCkpOwogICAgIGxvZ2ljYWxSZWN0LnNldFdpZHRoKGxvZ2ljYWxX
aWR0aCk7CiAKLSAgICBpZiAoIW1fc2tpcFZlcnRpY2FsQWxpZ21lbnQpIHsKKyAgICBpZiAoIW1f
c2tpcEFsaWdubWVudCkgewogICAgICAgICBhdXRvIGxvZ2ljYWxIZWlnaHQgPSBpbmxpbmVJdGVt
Q29udGVudEhlaWdodChpbmxpbmVJdGVtKTsKICAgICAgICAgYWRqdXN0QmFzZWxpbmVBbmRMaW5l
SGVpZ2h0KGlubGluZUl0ZW0sIGxvZ2ljYWxIZWlnaHQpOwogICAgICAgICBsb2dpY2FsUmVjdC5z
ZXRIZWlnaHQobG9naWNhbEhlaWdodCk7CkBAIC0yOTgsNyArMzQxLDcgQEAgdm9pZCBMaW5lOjph
cHBlbmRUZXh0Q29udGVudChjb25zdCBJbmxpbmVUZXh0SXRlbSYgaW5saW5lSXRlbSwgTGF5b3V0
VW5pdCBsb2dpY2EKICAgICBhdXRvIGxvZ2ljYWxSZWN0ID0gRGlzcGxheTo6UmVjdCB7IH07CiAg
ICAgbG9naWNhbFJlY3Quc2V0TGVmdChjb250ZW50TG9naWNhbFdpZHRoKCkpOwogICAgIGxvZ2lj
YWxSZWN0LnNldFdpZHRoKGxvZ2ljYWxXaWR0aCk7Ci0gICAgaWYgKCFtX3NraXBWZXJ0aWNhbEFs
aWdtZW50KSB7CisgICAgaWYgKCFtX3NraXBBbGlnbm1lbnQpIHsKICAgICAgICAgYXV0byBydW5I
ZWlnaHQgPSBpbmxpbmVJdGVtQ29udGVudEhlaWdodChpbmxpbmVJdGVtKTsKICAgICAgICAgbG9n
aWNhbFJlY3Quc2V0SGVpZ2h0KHJ1bkhlaWdodCk7CiAgICAgICAgIGFkanVzdEJhc2VsaW5lQW5k
TGluZUhlaWdodChpbmxpbmVJdGVtLCBydW5IZWlnaHQpOwpAQCAtMzI1LDcgKzM2OCw3IEBAIHZv
aWQgTGluZTo6YXBwZW5kTm9uUmVwbGFjZWRJbmxpbmVCb3goY29uc3QgSW5saW5lSXRlbSYgaW5s
aW5lSXRlbSwgTGF5b3V0VW5pdCBsCiAKICAgICBsb2dpY2FsUmVjdC5zZXRMZWZ0KGNvbnRlbnRM
b2dpY2FsV2lkdGgoKSArIGhvcml6b250YWxNYXJnaW4uc3RhcnQpOwogICAgIGxvZ2ljYWxSZWN0
LnNldFdpZHRoKGxvZ2ljYWxXaWR0aCk7Ci0gICAgaWYgKCFtX3NraXBWZXJ0aWNhbEFsaWdtZW50
KSB7CisgICAgaWYgKCFtX3NraXBBbGlnbm1lbnQpIHsKICAgICAgICAgYWRqdXN0QmFzZWxpbmVB
bmRMaW5lSGVpZ2h0KGlubGluZUl0ZW0sIGJveEdlb21ldHJ5Lm1hcmdpbkJveEhlaWdodCgpKTsK
ICAgICAgICAgbG9naWNhbFJlY3Quc2V0SGVpZ2h0KGlubGluZUl0ZW1Db250ZW50SGVpZ2h0KGlu
bGluZUl0ZW0pKTsKICAgICB9CkBAIC0zNDYsNyArMzg5LDcgQEAgdm9pZCBMaW5lOjphcHBlbmRI
YXJkTGluZUJyZWFrKGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0pCiAgICAgYXV0byBsb2dp
Y2FsUmVjdCA9IERpc3BsYXk6OlJlY3QgeyB9OwogICAgIGxvZ2ljYWxSZWN0LnNldExlZnQoY29u
dGVudExvZ2ljYWxXaWR0aCgpKTsKICAgICBsb2dpY2FsUmVjdC5zZXRXaWR0aCh7IH0pOwotICAg
IGlmICghbV9za2lwVmVydGljYWxBbGlnbWVudCkgeworICAgIGlmICghbV9za2lwQWxpZ25tZW50
KSB7CiAgICAgICAgIGFkanVzdEJhc2VsaW5lQW5kTGluZUhlaWdodChpbmxpbmVJdGVtLCB7IH0p
OwogICAgICAgICBsb2dpY2FsUmVjdC5zZXRIZWlnaHQobG9naWNhbEhlaWdodCgpKTsKICAgICB9
CkBAIC00MjYsNyArNDY5LDcgQEAgdm9pZCBMaW5lOjphZGp1c3RCYXNlbGluZUFuZExpbmVIZWln
aHQoY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgTGF5b3V0VW5pdAogCiBMYXlvdXRVbml0
IExpbmU6OmlubGluZUl0ZW1Db250ZW50SGVpZ2h0KGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0
ZW0pIGNvbnN0CiB7Ci0gICAgQVNTRVJUKCFtX3NraXBWZXJ0aWNhbEFsaWdtZW50KTsKKyAgICBB
U1NFUlQoIW1fc2tpcEFsaWdubWVudCk7CiAgICAgYXV0byYgZm9udE1ldHJpY3MgPSBpbmxpbmVJ
dGVtLnN0eWxlKCkuZm9udE1ldHJpY3MoKTsKICAgICBpZiAoaW5saW5lSXRlbS5pc0xpbmVCcmVh
aygpIHx8IGlzPElubGluZVRleHRJdGVtPihpbmxpbmVJdGVtKSkKICAgICAgICAgcmV0dXJuIGZv
bnRNZXRyaWNzLmhlaWdodCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGlu
ZWZvcm1hdHRpbmcvSW5saW5lTGluZS5oCmluZGV4IDYzOTFhNjc3MmUwZDEwMTRkMTFjMzc3ZmE2
NzA5MzRiYjQ4MzY3N2EuLjJjM2YwZGYyMWQ5MTUwNTg2YjE3Yzg2NDIwMzYzZGM4MTJlOTVkNmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZUxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVMaW5lLmgKQEAgLTUxLDggKzUxLDggQEAgcHVibGljOgogICAgICAgICB9OwogICAgICAgICBP
cHRpb25hbDxIZWlnaHRBbmRCYXNlbGluZT4gaGVpZ2h0QW5kQmFzZWxpbmU7CiAgICAgfTsKLSAg
ICBlbnVtIGNsYXNzIFNraXBWZXJ0aWNhbEFsaWdtZW50IHsgTm8sIFllcyB9OwotICAgIExpbmUo
Y29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmLCBjb25zdCBJbml0aWFsQ29uc3RyYWludHMm
LCBTa2lwVmVydGljYWxBbGlnbWVudCk7CisgICAgZW51bSBjbGFzcyBTa2lwQWxpZ25tZW50IHsg
Tm8sIFllcyB9OworICAgIExpbmUoY29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmLCBjb25z
dCBJbml0aWFsQ29uc3RyYWludHMmLCBPcHRpb25hbDxUZXh0QWxpZ25Nb2RlPiwgU2tpcEFsaWdu
bWVudCk7CiAKICAgICB2b2lkIGFwcGVuZChjb25zdCBJbmxpbmVJdGVtJiwgTGF5b3V0VW5pdCBs
b2dpY2FsV2lkdGgpOwogICAgIGJvb2wgaGFzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuICFpc1Zp
c3VhbGx5RW1wdHkoKTsgfQpAQCAtMTI1LDYgKzEyNSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBh
cHBlbmRIYXJkTGluZUJyZWFrKGNvbnN0IElubGluZUl0ZW0mKTsKIAogICAgIHZvaWQgcmVtb3Zl
VHJhaWxpbmdUcmltbWFibGVDb250ZW50KCk7CisgICAgdm9pZCBob3Jpem9udGFsQWxpZ25Db250
ZW50KCk7CisgICAgdm9pZCB2ZXJ0aWNhbEFsaWduQ29udGVudCgpOwogCiAgICAgdm9pZCBhZGp1
c3RCYXNlbGluZUFuZExpbmVIZWlnaHQoY29uc3QgSW5saW5lSXRlbSYsIExheW91dFVuaXQgcnVu
SGVpZ2h0KTsKICAgICBMYXlvdXRVbml0IGlubGluZUl0ZW1Db250ZW50SGVpZ2h0KGNvbnN0IElu
bGluZUl0ZW0mKSBjb25zdDsKQEAgLTEzOSw3ICsxNDEsOCBAQCBwcml2YXRlOgogCiAgICAgT3B0
aW9uYWw8TGluZUJveDo6QmFzZWxpbmU+IG1faW5pdGlhbFN0cnV0OwogICAgIExheW91dFVuaXQg
bV9saW5lTG9naWNhbFdpZHRoOwotICAgIGJvb2wgbV9za2lwVmVydGljYWxBbGlnbWVudCB7IGZh
bHNlIH07CisgICAgT3B0aW9uYWw8VGV4dEFsaWduTW9kZT4gbV9ob3Jpem9udGFsQWxpZ25tZW50
OworICAgIGJvb2wgbV9za2lwQWxpZ25tZW50IHsgZmFsc2UgfTsKICAgICBMaW5lQm94IG1fbGlu
ZUJveDsKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379795</attachid>
            <date>2019-09-28 13:40:25 -0700</date>
            <delta_ts>2019-09-28 17:57:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202351-20190928134021.patch</filename>
            <type>text/plain</type>
            <size>23593</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNDU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGY4NTcwODViN2ZlMjM2
ODBjZWJjMzgxYzUwYzQwZGU4NDU5YTJhNS4uNjhlNDg0MDI0NzA5ZWM0MzY4ZjI4NzhkOGI3ZTcz
MmZhYzdmOGUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE5LTA5LTI4ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBNb3ZlIGhv
cml6b250YWwgYWxpZ25tZW50IHRvIExpbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMjM1MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTU4MTAx
Mzk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTGlu
ZSBzaG91bGQgYmUgYWJsZSB0byBmaW5hbGl6ZSB0aGUgcnVuIHBsYWNlbWVudCBpbmNsdWRpbmcg
aG9yaXpvbnRhbCBhbGlnbm1lbnQuCisKKyAgICAgICAgKiBsYXlvdXQvVmVyaWZpY2F0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6b3V0cHV0TWlzbWF0Y2hpbmdTaW1wbGVMaW5l
SW5mb3JtYXRpb25JZk5lZWRlZCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lRm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6TGluZUlucHV0OjpMaW5lSW5wdXQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpMaW5lTGF5b3V0OjpMaW5lTGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQ6OklubGluZUxheW91dDo6bGF5b3V0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OklubGluZUxheW91dDo6Y29t
cHV0ZWRJbnRyaW5zaWNXaWR0aCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lTGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6Okxp
bmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjppc1Zpc3VhbGx5RW1wdHkgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjpjbG9zZSk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OnZlcnRpY2FsQWxpZ25Db250ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6TGluZTo6aG9yaXpvbnRhbEFsaWduQ29udGVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OmFwcGVuZElubGluZUNvbnRhaW5lclN0YXJ0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6TGluZTo6YXBwZW5kVGV4dENvbnRlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpMaW5lOjphcHBlbmROb25SZXBsYWNlZElubGluZUJveCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OmFwcGVuZEhhcmRMaW5lQnJlYWspOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjppbmxpbmVJdGVtQ29udGVudEhlaWdodCBjb25zdCk6
CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5oOgorCiAyMDE5
LTA5LTI4ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11b
SUZDXSBMaW5lOjpJbml0aWFsQ29uc3RyYWludHMncyBoZWlnaHRBbmRCYXNlbGluZSBzaG91bGQg
YmUgb3B0aW9uYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9WZXJpZmljYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAKaW5kZXggZmY2
N2RmZjdhMmNkNTU3YmU5YTRmMDIyYWU4ZTU4MmM1YzM1YTlkOC4uMGFiZGNmZTZkZDc0NmQ5NTBl
ZWZmYTEyMDJlNzg4ZjM4OGIzMjI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L1ZlcmlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlv
bi5jcHAKQEAgLTk5LDcgKzk5LDExIEBAIHN0YXRpYyBib29sIG91dHB1dE1pc21hdGNoaW5nU2lt
cGxlTGluZUluZm9ybWF0aW9uSWZOZWVkZWQoVGV4dFN0cmVhbSYgc3RyZWFtLCBjCiAgICAgICAg
IGlmIChtYXRjaGluZ1J1bnMpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBzdHJl
YW0gPDwgIk1pc21hdGNoaW5nOiBzaW1wbGUgcnVuKCIgPDwgc2ltcGxlUnVuLnN0YXJ0IDw8ICIs
ICIgPDwgc2ltcGxlUnVuLmVuZCA8PCAiKSAoIiA8PCBzaW1wbGVSdW4ubG9naWNhbExlZnQgPDwg
IiwgIiA8PCBzaW1wbGVSdW4ubG9naWNhbFJpZ2h0IDw8ICIpIGxheW91dCBydW4oIiA8PCBpbmxp
bmVSdW4udGV4dENvbnRleHQoKS0+c3RhcnQoKSA8PCAiLCAiIDw8IGlubGluZVJ1bi50ZXh0Q29u
dGV4dCgpLT5lbmQoKSA8PCAiKSAoIiA8PCBpbmxpbmVSdW4ubG9naWNhbExlZnQoKSA8PCAiLCAi
IDw8IGlubGluZVJ1bi5sb2dpY2FsUmlnaHQoKSA8PCAiKSI7CisgICAgICAgIHN0cmVhbSA8PCAi
TWlzbWF0Y2hpbmc6IHNpbXBsZSBydW4oIiA8PCBzaW1wbGVSdW4uc3RhcnQgPDwgIiwgIiA8PCBz
aW1wbGVSdW4uZW5kIDw8ICIpICgiIDw8IHNpbXBsZVJ1bi5sb2dpY2FsTGVmdCA8PCAiLCAiIDw8
IHNpbXBsZVJ1bi5sb2dpY2FsUmlnaHQgPDwgIikiOworICAgICAgICBzdHJlYW0gPDwgIiBpbmxp
bmUgcnVuIjsKKyAgICAgICAgaWYgKGlubGluZVJ1bi50ZXh0Q29udGV4dCgpKQorICAgICAgICAg
ICAgc3RyZWFtIDw8ICIgKCIgPDwgaW5saW5lUnVuLnRleHRDb250ZXh0KCktPnN0YXJ0KCkgPDwg
IiwgIiA8PCBpbmxpbmVSdW4udGV4dENvbnRleHQoKS0+ZW5kKCkgPDwgIikiOworICAgICAgICBz
dHJlYW0gPDwgIiAoIiA8PCBpbmxpbmVSdW4ubG9naWNhbExlZnQoKSA8PCAiLCAiIDw8IGlubGlu
ZVJ1bi5sb2dpY2FsVG9wKCkgPDwgIikgKCIgPDwgaW5saW5lUnVuLmxvZ2ljYWxXaWR0aCgpIDw8
ICJ4IiA8PCBpbmxpbmVSdW4ubG9naWNhbEhlaWdodCgpIDw8ICIpIjsKICAgICAgICAgc3RyZWFt
Lm5leHRMaW5lKCk7CiAgICAgICAgIG1pc21hdGNoZWQgPSB0cnVlOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRp
bmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVGb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IGVmNzZiN2UwN2Q0ZWVmMTMzOTA2OTIwYWNjOGVh
OTlhN2Y4NDc4MGMuLjk5MmYzNzBlYTRmNjE5MDY0M2UwYmU4NmE1NDRiZGQzMWYwMmYzNzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZv
cm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaApAQCAtNjgsNyArNjgsNiBAQCBwcml2YXRl
OgogCiAgICAgICAgIExpbmVDb250ZW50IHBsYWNlSW5saW5lSXRlbXMoY29uc3QgTGluZUlucHV0
JikgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0dXBEaXNwbGF5Qm94ZXMoY29uc3QgTGluZUNvbnRl
bnQmKTsKLSAgICAgICAgdm9pZCBhbGlnblJ1bnMoVGV4dEFsaWduTW9kZSwgSW5saW5lUnVucyYs
IHVuc2lnbmVkIGZpcnN0UnVuSW5kZXgsIExheW91dFVuaXQgYXZhaWxhYmxlV2lkdGgpIGNvbnN0
OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmIG1faW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHRMaW5lTGF5b3V0LmNwcAppbmRleCA0ZDQ3YzI3MDQ0NThiODMwOWYxMGY0NzdmMzYzYzdj
ZjQ2YWFiOTdiLi5lYWQ2MzZkNmFkZmRhOGMxNWVlM2RlNzQwMDg1NzhiZTc3OGNhODhiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dExpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dC5jcHAKQEAg
LTgxLDE5ICs4MSwyOSBAQCBzdHJ1Y3QgSW5kZXhBbmRSYW5nZSB7CiB9OwogCiBzdHJ1Y3QgTGlu
ZUlucHV0IHsKLSAgICBMaW5lSW5wdXQoY29uc3QgTGluZTo6SW5pdGlhbENvbnN0cmFpbnRzJiBp
bml0aWFsTGluZUNvbnN0cmFpbnRzLCBMaW5lOjpTa2lwVmVydGljYWxBbGlnbWVudCwgSW5kZXhB
bmRSYW5nZSBmaXJzdFRvUHJvY2VzcywgY29uc3QgSW5saW5lSXRlbXMmKTsKKyAgICBMaW5lSW5w
dXQoY29uc3QgTGluZTo6SW5pdGlhbENvbnN0cmFpbnRzJiwgVGV4dEFsaWduTW9kZSwgSW5kZXhB
bmRSYW5nZSBmaXJzdFRvUHJvY2VzcywgY29uc3QgSW5saW5lSXRlbXMmKTsKKyAgICBMaW5lSW5w
dXQoY29uc3QgTGluZTo6SW5pdGlhbENvbnN0cmFpbnRzJiwgSW5kZXhBbmRSYW5nZSBmaXJzdFRv
UHJvY2VzcywgY29uc3QgSW5saW5lSXRlbXMmKTsKIAogICAgIExpbmU6OkluaXRpYWxDb25zdHJh
aW50cyBpbml0aWFsQ29uc3RyYWludHM7CisgICAgVGV4dEFsaWduTW9kZSBob3Jpem9udGFsQWxp
Z25tZW50OwogICAgIC8vIEZJWE1FIEFsdGVybmF0aXZlbHkgd2UgY291bGQganVzdCBoYXZlIGEg
c2Vjb25kIHBhc3Mgd2l0aCB2ZXJ0aWNhbCBwb3NpdGlvbmluZyAocHJlZmVycmVkIHdpZHRoIGNv
bXB1dGF0aW9uIG9wdHMgb3V0KSAKLSAgICBMaW5lOjpTa2lwVmVydGljYWxBbGlnbWVudCBza2lw
VmVydGljYWxBbGlnbWVudDsKKyAgICBMaW5lOjpTa2lwQWxpZ25tZW50IHNraXBBbGlnbm1lbnQg
eyBMaW5lOjpTa2lwQWxpZ25tZW50OjpObyB9OwogICAgIEluZGV4QW5kUmFuZ2UgZmlyc3RJbmxp
bmVJdGVtOwogICAgIGNvbnN0IElubGluZUl0ZW1zJiBpbmxpbmVJdGVtczsKICAgICBPcHRpb25h
bDxMYXlvdXRVbml0PiBmbG9hdE1pbmltdW1Mb2dpY2FsQm90dG9tOwogfTsKIAotTGluZUlucHV0
OjpMaW5lSW5wdXQoY29uc3QgTGluZTo6SW5pdGlhbENvbnN0cmFpbnRzJiBpbml0aWFsTGluZUNv
bnN0cmFpbnRzLCBMaW5lOjpTa2lwVmVydGljYWxBbGlnbWVudCBza2lwVmVydGljYWxBbGlnbWVu
dCwgSW5kZXhBbmRSYW5nZSBmaXJzdFRvUHJvY2VzcywgY29uc3QgSW5saW5lSXRlbXMmIGlubGlu
ZUl0ZW1zKQorTGluZUlucHV0OjpMaW5lSW5wdXQoY29uc3QgTGluZTo6SW5pdGlhbENvbnN0cmFp
bnRzJiBpbml0aWFsTGluZUNvbnN0cmFpbnRzLCBUZXh0QWxpZ25Nb2RlIGhvcml6b250YWxBbGln
bm1lbnQsIEluZGV4QW5kUmFuZ2UgZmlyc3RUb1Byb2Nlc3MsIGNvbnN0IElubGluZUl0ZW1zJiBp
bmxpbmVJdGVtcykKICAgICA6IGluaXRpYWxDb25zdHJhaW50cyhpbml0aWFsTGluZUNvbnN0cmFp
bnRzKQotICAgICwgc2tpcFZlcnRpY2FsQWxpZ21lbnQoc2tpcFZlcnRpY2FsQWxpZ21lbnQpCisg
ICAgLCBob3Jpem9udGFsQWxpZ25tZW50KGhvcml6b250YWxBbGlnbm1lbnQpCisgICAgLCBmaXJz
dElubGluZUl0ZW0oZmlyc3RUb1Byb2Nlc3MpCisgICAgLCBpbmxpbmVJdGVtcyhpbmxpbmVJdGVt
cykKK3sKK30KKworTGluZUlucHV0OjpMaW5lSW5wdXQoY29uc3QgTGluZTo6SW5pdGlhbENvbnN0
cmFpbnRzJiBpbml0aWFsTGluZUNvbnN0cmFpbnRzLCBJbmRleEFuZFJhbmdlIGZpcnN0VG9Qcm9j
ZXNzLCBjb25zdCBJbmxpbmVJdGVtcyYgaW5saW5lSXRlbXMpCisgICAgOiBpbml0aWFsQ29uc3Ry
YWludHMoaW5pdGlhbExpbmVDb25zdHJhaW50cykKKyAgICAsIHNraXBBbGlnbm1lbnQoTGluZTo6
U2tpcEFsaWdubWVudDo6WWVzKQogICAgICwgZmlyc3RJbmxpbmVJdGVtKGZpcnN0VG9Qcm9jZXNz
KQogICAgICwgaW5saW5lSXRlbXMoaW5saW5lSXRlbXMpCiB7CkBAIC0xNjQsNyArMTc0LDcgQEAg
dm9pZCBMaW5lTGF5b3V0OjpVbmNvbW1pdHRlZENvbnRlbnQ6OnJlc2V0KCkKIExpbmVMYXlvdXQ6
OkxpbmVMYXlvdXQoY29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmIGlubGluZUZvcm1hdHRp
bmdDb250ZXh0LCBjb25zdCBMaW5lSW5wdXQmIGxpbmVJbnB1dCkKICAgICA6IG1faW5saW5lRm9y
bWF0dGluZ0NvbnRleHQoaW5saW5lRm9ybWF0dGluZ0NvbnRleHQpCiAgICAgLCBtX2xpbmVJbnB1
dChsaW5lSW5wdXQpCi0gICAgLCBtX2xpbmUoaW5saW5lRm9ybWF0dGluZ0NvbnRleHQsIGxpbmVJ
bnB1dC5pbml0aWFsQ29uc3RyYWludHMsIGxpbmVJbnB1dC5za2lwVmVydGljYWxBbGlnbWVudCkK
KyAgICAsIG1fbGluZShpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCwgbGluZUlucHV0LmluaXRpYWxD
b25zdHJhaW50cywgbGluZUlucHV0Lmhvcml6b250YWxBbGlnbm1lbnQsIGxpbmVJbnB1dC5za2lw
QWxpZ25tZW50KQogICAgICwgbV9saW5lSGFzSW50cnVzaXZlRmxvYXQobGluZUlucHV0LmluaXRp
YWxDb25zdHJhaW50cy5saW5lSXNDb25zdHJhaW5lZEJ5RmxvYXQpCiB7CiB9CkBAIC0yODEsNyAr
MjkxLDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6SW5saW5lTGF5b3V0OjpsYXlv
dXQoY29uc3QgSW5saW5lSXRlbXMmIGlubGluZUl0ZW0KICAgICBhdXRvIGxpbmVMb2dpY2FsVG9w
ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJveChmb3JtYXR0aW5nUm9vdCgpKS5j
b250ZW50Qm94VG9wKCk7CiAgICAgSW5kZXhBbmRSYW5nZSBjdXJyZW50SW5saW5lSXRlbTsKICAg
ICB3aGlsZSAoY3VycmVudElubGluZUl0ZW0uaW5kZXggPCBpbmxpbmVJdGVtcy5zaXplKCkpIHsK
LSAgICAgICAgYXV0byBsaW5lSW5wdXQgPSBMaW5lSW5wdXQgeyBpbml0aWFsQ29uc3RyYWludHNG
b3JMaW5lKGxpbmVMb2dpY2FsVG9wKSwgTGluZTo6U2tpcFZlcnRpY2FsQWxpZ21lbnQ6Ok5vLCBj
dXJyZW50SW5saW5lSXRlbSwgaW5saW5lSXRlbXMgfTsKKyAgICAgICAgYXV0byBsaW5lSW5wdXQg
PSBMaW5lSW5wdXQgeyBpbml0aWFsQ29uc3RyYWludHNGb3JMaW5lKGxpbmVMb2dpY2FsVG9wKSwg
Zm9ybWF0dGluZ1Jvb3QoKS5zdHlsZSgpLnRleHRBbGlnbigpLCBjdXJyZW50SW5saW5lSXRlbSwg
aW5saW5lSXRlbXMgfTsKICAgICAgICAgYXV0byBsaW5lTGF5b3V0ID0gTGluZUxheW91dCB7IGZv
cm1hdHRpbmdDb250ZXh0KCksIGxpbmVJbnB1dCB9OwogCiAgICAgICAgIGF1dG8gbGluZUNvbnRl
bnQgPSBsaW5lTGF5b3V0LmxheW91dCgpOwpAQCAtMzQ5LDcgKzM1OSw3IEBAIExheW91dFVuaXQg
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OklubGluZUxheW91dDo6Y29tcHV0ZWRJbnRyaW5zaWNX
aWR0aChjb25zdCBJCiAgICAgd2hpbGUgKGN1cnJlbnRJbmxpbmVJdGVtLmluZGV4IDwgaW5saW5l
SXRlbXMuc2l6ZSgpKSB7CiAgICAgICAgIC8vIE9ubHkgdGhlIGhvcml6dG9uYWwgYXZhaWxhYmxl
IHdpZHRoIGlzIGNvbnN0cmFpbmVkIHdoZW4gY29tcHV0aW5nIGludHJpbnNpYyB3aWR0aC4KICAg
ICAgICAgYXV0byBpbml0aWFsTGluZUNvbnN0cmFpbnRzID0gTGluZTo6SW5pdGlhbENvbnN0cmFp
bnRzIHsgeyB9LCB3aWR0aENvbnN0cmFpbnQoKSwgZmFsc2UsIHsgfSB9OwotICAgICAgICBhdXRv
IGxpbmVJbnB1dCA9IExpbmVJbnB1dCB7IGluaXRpYWxMaW5lQ29uc3RyYWludHMsIExpbmU6OlNr
aXBWZXJ0aWNhbEFsaWdtZW50OjpZZXMsIGN1cnJlbnRJbmxpbmVJdGVtLCBpbmxpbmVJdGVtcyB9
OworICAgICAgICBhdXRvIGxpbmVJbnB1dCA9IExpbmVJbnB1dCB7IGluaXRpYWxMaW5lQ29uc3Ry
YWludHMsIGN1cnJlbnRJbmxpbmVJdGVtLCBpbmxpbmVJdGVtcyB9OwogCiAgICAgICAgIGF1dG8g
bGluZUNvbnRlbnQgPSBMaW5lTGF5b3V0KGZvcm1hdHRpbmdDb250ZXh0LCBsaW5lSW5wdXQpLmxh
eW91dCgpOwogCkBAIC0zODAsMTEgKzM5MCw2IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQ6OklubGluZUxheW91dDo6c2V0dXBEaXNwbGF5Qm94ZXMoY29uc3QgTGluZUNvbnRlbnQmCiAg
ICAgICAgIGZsb2F0aW5nQ29udGV4dC5hcHBlbmQoZmxvYXRCb3gpOwogICAgIH0KIAotICAgIGF1
dG8mIGlubGluZURpc3BsYXlSdW5zID0gZm9ybWF0dGluZ1N0YXRlLmlubGluZVJ1bnMoKTsKLSAg
ICBhdXRvIHByZXZpb3VzTGluZUxhc3RSdW5JbmRleCA9IE9wdGlvbmFsPHVuc2lnbmVkPiB7IGlu
bGluZURpc3BsYXlSdW5zLmlzRW1wdHkoKSA/IE9wdGlvbmFsPHVuc2lnbmVkPigpIDogaW5saW5l
RGlzcGxheVJ1bnMuc2l6ZSgpIC0gMSB9OwotICAgIC8vIDkuNC4yIElubGluZSBmb3JtYXR0aW5n
IGNvbnRleHRzCi0gICAgLy8gQSBsaW5lIGJveCBpcyBhbHdheXMgdGFsbCBlbm91Z2ggZm9yIGFs
bCBvZiB0aGUgYm94ZXMgaXQgY29udGFpbnMuCi0KICAgICAvLyBBZGQgZmluYWwgZGlzcGxheSBy
dW5zIHRvIHN0YXRlLgogICAgIGZvciAoYXV0byYgbGluZVJ1biA6IGxpbmVDb250ZW50LnJ1bkxp
c3QpIHsKICAgICAgICAgLy8gSW5saW5lIGxldmVsIGNvbnRhaW5lcnMgKDxzcGFuPikgZG9uJ3Qg
Z2VuZXJhdGUgaW5saW5lIHJ1bnMuCkBAIC0zOTMsNiArMzk4LDcgQEAgdm9pZCBJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dDo6SW5saW5lTGF5b3V0OjpzZXR1cERpc3BsYXlCb3hlcyhjb25zdCBMaW5l
Q29udGVudCYKICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZVJ1bihsaW5lUnVuLT5k
aXNwbGF5UnVuKCkpOwogICAgIH0KIAorICAgIC8vIENvbXB1dGUgYm94IGZpbmFsIGdlb21ldHJ5
LgogICAgIGF1dG8gZ2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dC5nZW9tZXRyeSgpOwogICAg
IGF1dG8mIGxpbmVSdW5zID0gbGluZUNvbnRlbnQucnVuTGlzdDsKICAgICBmb3IgKHVuc2lnbmVk
IGluZGV4ID0gMDsgaW5kZXggPCBsaW5lUnVucy5zaXplKCk7ICsraW5kZXgpIHsKQEAgLTQ1Niw0
MSArNDYyLDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6SW5saW5lTGF5b3V0Ojpz
ZXR1cERpc3BsYXlCb3hlcyhjb25zdCBMaW5lQ29udGVudCYKICAgICAgICAgfQogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9Ci0gICAgLy8gRklYTUUgbGluZWJveCBuZWVkcyB0
byBiZSBhanVzdGVkIGFmdGVyIGNvbnRlbnQgYWxpZ25tZW50LgogICAgIGZvcm1hdHRpbmdTdGF0
ZS5hZGRMaW5lQm94KGxpbmVDb250ZW50LmxpbmVCb3gpOwotICAgIGFsaWduUnVucyhmb3JtYXR0
aW5nUm9vdCgpLnN0eWxlKCkudGV4dEFsaWduKCksIGlubGluZURpc3BsYXlSdW5zLCBwcmV2aW91
c0xpbmVMYXN0UnVuSW5kZXgudmFsdWVPcigtMSkgKyAxLCB3aWR0aENvbnN0cmFpbnQoKSAtIGxp
bmVDb250ZW50LmxpbmVCb3gubG9naWNhbFdpZHRoKCkpOwotfQotCi1zdGF0aWMgT3B0aW9uYWw8
TGF5b3V0VW5pdD4gaG9yaXpvbnRhbEFkanVzdG1lbnRGb3JBbGlnbm1lbnQoVGV4dEFsaWduTW9k
ZSBhbGlnbiwgTGF5b3V0VW5pdCByZW1haW5pbmdXaWR0aCkKLXsKLSAgICBzd2l0Y2ggKGFsaWdu
KSB7Ci0gICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpMZWZ0OgotICAgIGNhc2UgVGV4dEFsaWduTW9k
ZTo6V2ViS2l0TGVmdDoKLSAgICBjYXNlIFRleHRBbGlnbk1vZGU6OlN0YXJ0OgotICAgICAgICBy
ZXR1cm4geyB9OwotICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6Ci0gICAgY2FzZSBUZXh0
QWxpZ25Nb2RlOjpXZWJLaXRSaWdodDoKLSAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkVuZDoKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWF4KHJlbWFpbmluZ1dpZHRoLCAwX2x1KTsKLSAgICBjYXNlIFRl
eHRBbGlnbk1vZGU6OkNlbnRlcjoKLSAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdENlbnRl
cjoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KHJlbWFpbmluZ1dpZHRoIC8gMiwgMF9sdSk7Ci0g
ICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpKdXN0aWZ5OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIHJldHVybiB7IH07Ci19Ci0KLXZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OklubGlu
ZUxheW91dDo6YWxpZ25SdW5zKFRleHRBbGlnbk1vZGUgdGV4dEFsaWduLCBJbmxpbmVSdW5zJiBp
bmxpbmVEaXNwbGF5UnVucywgdW5zaWduZWQgZmlyc3RSdW5JbmRleCwgTGF5b3V0VW5pdCBhdmFp
bGFibGVXaWR0aCkgY29uc3QKLXsKLSAgICBhdXRvIGFkanVzdG1lbnQgPSBob3Jpem9udGFsQWRq
dXN0bWVudEZvckFsaWdubWVudCh0ZXh0QWxpZ24sIGF2YWlsYWJsZVdpZHRoKTsKLSAgICBpZiAo
IWFkanVzdG1lbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZvciAodW5zaWduZWQgaW5kZXgg
PSBmaXJzdFJ1bkluZGV4OyBpbmRleCA8IGlubGluZURpc3BsYXlSdW5zLnNpemUoKTsgKytpbmRl
eCkKLSAgICAgICAgaW5saW5lRGlzcGxheVJ1bnNbaW5kZXhdLm1vdmVIb3Jpem9udGFsbHkoKmFk
anVzdG1lbnQpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0lubGluZUxpbmUuY3BwCmluZGV4IDY2YjczMmYyYjM3NjY0MjI4MmNlM2Yz
YzI0Y2UzNjBjYzg3MGRkMjkuLjQyNWUwOGYzMTU1MWU4NWFjOTRhMTlkNTVmZmMzOTJiZTg1MGNj
Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZUxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZUxpbmUuY3BwCkBAIC01NywxMyArNTcsMTQgQEAgYm9vbCBMaW5lOjpSdW46OmNhbkJl
RXh0ZW5kZWQoKSBjb25zdAogICAgIHJldHVybiAhZG93bmNhc3Q8SW5saW5lVGV4dEl0ZW0+KG1f
aW5saW5lSXRlbSkuaXNDb2xsYXBzZWQoKSAmJiAhaXNWaXN1YWxseUVtcHR5KCk7CiB9CiAKLUxp
bmU6OkxpbmUoY29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmIGlubGluZUZvcm1hdHRpbmdD
b250ZXh0LCBjb25zdCBJbml0aWFsQ29uc3RyYWludHMmIGluaXRpYWxDb25zdHJhaW50cywgU2tp
cFZlcnRpY2FsQWxpZ21lbnQgc2tpcFZlcnRpY2FsQWxpZ21lbnQpCitMaW5lOjpMaW5lKGNvbnN0
IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCwgY29uc3Qg
SW5pdGlhbENvbnN0cmFpbnRzJiBpbml0aWFsQ29uc3RyYWludHMsIE9wdGlvbmFsPFRleHRBbGln
bk1vZGU+IGhvcml6b250YWxBbGlnbm1lbnQsICBTa2lwQWxpZ25tZW50IHNraXBBbGlnbm1lbnQp
CiAgICAgOiBtX2lubGluZUZvcm1hdHRpbmdDb250ZXh0KGlubGluZUZvcm1hdHRpbmdDb250ZXh0
KQogICAgICwgbV9pbml0aWFsU3RydXQoaW5pdGlhbENvbnN0cmFpbnRzLmhlaWdodEFuZEJhc2Vs
aW5lID8gaW5pdGlhbENvbnN0cmFpbnRzLmhlaWdodEFuZEJhc2VsaW5lLT5zdHJ1dCA6IFdURjo6
bnVsbG9wdCkKICAgICAsIG1fbGluZUxvZ2ljYWxXaWR0aChpbml0aWFsQ29uc3RyYWludHMuYXZh
aWxhYmxlTG9naWNhbFdpZHRoKQotICAgICwgbV9za2lwVmVydGljYWxBbGlnbWVudChza2lwVmVy
dGljYWxBbGlnbWVudCA9PSBTa2lwVmVydGljYWxBbGlnbWVudDo6WWVzKQorICAgICwgbV9ob3Jp
em9udGFsQWxpZ25tZW50KGhvcml6b250YWxBbGlnbm1lbnQpCisgICAgLCBtX3NraXBBbGlnbm1l
bnQoc2tpcEFsaWdubWVudCA9PSBTa2lwQWxpZ25tZW50OjpZZXMpCiB7Ci0gICAgQVNTRVJUKG1f
c2tpcFZlcnRpY2FsQWxpZ21lbnQgfHwgaW5pdGlhbENvbnN0cmFpbnRzLmhlaWdodEFuZEJhc2Vs
aW5lKTsKKyAgICBBU1NFUlQobV9za2lwQWxpZ25tZW50IHx8IGluaXRpYWxDb25zdHJhaW50cy5o
ZWlnaHRBbmRCYXNlbGluZSk7CiAgICAgYXV0byBpbml0aWFsTGluZUhlaWdodCA9IGluaXRpYWxD
b25zdHJhaW50cy5oZWlnaHRBbmRCYXNlbGluZSA/IGluaXRpYWxDb25zdHJhaW50cy5oZWlnaHRB
bmRCYXNlbGluZS0+aGVpZ2h0IDogTGF5b3V0VW5pdCgpOwogICAgIGF1dG8gaW5pdGlhbEJhc2Vs
aW5lT2Zmc2V0ID0gaW5pdGlhbENvbnN0cmFpbnRzLmhlaWdodEFuZEJhc2VsaW5lID8gaW5pdGlh
bENvbnN0cmFpbnRzLmhlaWdodEFuZEJhc2VsaW5lLT5iYXNlbGluZU9mZnNldCA6IExheW91dFVu
aXQoKTsKICAgICBhdXRvIGxpbmVSZWN0ID0gRGlzcGxheTo6UmVjdCB7IGluaXRpYWxDb25zdHJh
aW50cy5sb2dpY2FsVG9wTGVmdCwgeyB9LCBpbml0aWFsTGluZUhlaWdodCB9OwpAQCAtOTYsNyAr
OTcsNyBAQCBib29sIExpbmU6OmlzVmlzdWFsbHlFbXB0eSgpIGNvbnN0CiAgICAgICAgICAgICBh
dXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5Rm9yQm94KHJ1bi0+
bGF5b3V0Qm94KCkpOwogICAgICAgICAgICAgaWYgKCFib3hHZW9tZXRyeS53aWR0aCgpKQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKG1fc2tpcFZlcnRpY2FsQWxp
Z21lbnQgfHwgYm94R2VvbWV0cnkuaGVpZ2h0KCkpCisgICAgICAgICAgICBpZiAobV9za2lwQWxp
Z25tZW50IHx8IGJveEdlb21ldHJ5LmhlaWdodCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CkBAIC0xMDksNjIgKzExMCw3
IEBAIGJvb2wgTGluZTo6aXNWaXN1YWxseUVtcHR5KCkgY29uc3QKIExpbmU6OlJ1bkxpc3QgTGlu
ZTo6Y2xvc2UoKQogewogICAgIHJlbW92ZVRyYWlsaW5nVHJpbW1hYmxlQ29udGVudCgpOwotICAg
IGlmICghbV9za2lwVmVydGljYWxBbGlnbWVudCkgewotICAgICAgICBpZiAoaXNWaXN1YWxseUVt
cHR5KCkpIHsKLSAgICAgICAgICAgIG1fbGluZUJveC5iYXNlbGluZSgpLnJlc2V0KCk7Ci0gICAg
ICAgICAgICBtX2xpbmVCb3guc2V0QmFzZWxpbmVPZmZzZXQoeyB9KTsKLSAgICAgICAgICAgIG1f
bGluZUJveC5zZXRMb2dpY2FsSGVpZ2h0KHsgfSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBS
ZW1vdmUgZGVzY2VudCB3aGVuIGFsbCBjb250ZW50IGlzIGJhc2VsaW5lIGFsaWduZWQgYnV0IG5v
bmUgb2YgdGhlbSBoYXZlIGRlc2NlbnQuCi0gICAgICAgIGlmIChmb3JtYXR0aW5nQ29udGV4dCgp
LnF1aXJrcygpLmxpbmVEZXNjZW50TmVlZHNDb2xsYXBzaW5nKG1fcnVuTGlzdCkpIHsKLSAgICAg
ICAgICAgIG1fbGluZUJveC5zaHJpbmtWZXJ0aWNhbGx5KG1fbGluZUJveC5iYXNlbGluZSgpLmRl
c2NlbnQoKSk7Ci0gICAgICAgICAgICBtX2xpbmVCb3guYmFzZWxpbmUoKS5zZXREZXNjZW50KHsg
fSk7Ci0gICAgICAgIH0KLQotICAgICAgICBhdXRvJiBsYXlvdXRTdGF0ZSA9IHRoaXMtPmxheW91
dFN0YXRlKCk7Ci0gICAgICAgIGF1dG8mIGZvcm1hdHRpbmdDb250ZXh0ID0gdGhpcy0+Zm9ybWF0
dGluZ0NvbnRleHQoKTsKLSAgICAgICAgZm9yIChhdXRvJiBydW4gOiBtX3J1bkxpc3QpIHsKLSAg
ICAgICAgICAgIExheW91dFVuaXQgbG9naWNhbFRvcDsKLSAgICAgICAgICAgIGF1dG8mIGxheW91
dEJveCA9IHJ1bi0+bGF5b3V0Qm94KCk7Ci0gICAgICAgICAgICBhdXRvIHZlcnRpY2FsQWxpZ24g
PSBsYXlvdXRCb3guc3R5bGUoKS52ZXJ0aWNhbEFsaWduKCk7Ci0gICAgICAgICAgICBhdXRvIGFz
Y2VudCA9IGxheW91dEJveC5zdHlsZSgpLmZvbnRNZXRyaWNzKCkuYXNjZW50KCk7Ci0KLSAgICAg
ICAgICAgIHN3aXRjaCAodmVydGljYWxBbGlnbikgewotICAgICAgICAgICAgY2FzZSBWZXJ0aWNh
bEFsaWduOjpCYXNlbGluZToKLSAgICAgICAgICAgICAgICBpZiAocnVuLT5pc0xpbmVCcmVhaygp
IHx8IHJ1bi0+aXNUZXh0KCkpCi0gICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBiYXNl
bGluZU9mZnNldCgpIC0gYXNjZW50OwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJ1bi0+aXND
b250YWluZXJTdGFydCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8mIGJveEdlb21ldHJ5
ID0gZm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94KTsKLSAgICAgICAg
ICAgICAgICAgICAgbG9naWNhbFRvcCA9IGJhc2VsaW5lT2Zmc2V0KCkgLSBhc2NlbnQgLSBib3hH
ZW9tZXRyeS5ib3JkZXJUb3AoKSAtIGJveEdlb21ldHJ5LnBhZGRpbmdUb3AoKS52YWx1ZU9yKDAp
OwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobGF5b3V0Qm94LmlzSW5saW5lQmxvY2tCb3go
KSAmJiBsYXlvdXRCb3guZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCgpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGF1dG8mIGZvcm1hdHRpbmdTdGF0ZSA9IGRvd25jYXN0PElubGlu
ZUZvcm1hdHRpbmdTdGF0ZT4obGF5b3V0U3RhdGUuZXN0YWJsaXNoZWRGb3JtYXR0aW5nU3RhdGUo
ZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpKSk7Ci0gICAgICAgICAgICAgICAgICAgIC8v
IFNwZWMgbWFrZXMgdXMgZ2VuZXJhdGUgYXQgbGVhc3Qgb25lIGxpbmUgLWV2ZW4gaWYgaXQgaXMg
ZW1wdHkuCi0gICAgICAgICAgICAgICAgICAgIEFTU0VSVCghZm9ybWF0dGluZ1N0YXRlLmxpbmVC
b3hlcygpLmlzRW1wdHkoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gaW5saW5lQmxvY2tC
YXNlbGluZSA9IGZvcm1hdHRpbmdTdGF0ZS5saW5lQm94ZXMoKS5sYXN0KCkuYmFzZWxpbmUoKTsK
LSAgICAgICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IGJhc2VsaW5lT2Zmc2V0KCkgLSBpbmxp
bmVCbG9ja0Jhc2VsaW5lLmFzY2VudCgpOwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAg
ICAgICAgICAgICAgICBsb2dpY2FsVG9wID0gYmFzZWxpbmVPZmZzZXQoKSAtIHJ1bi0+bG9naWNh
bFJlY3QoKS5oZWlnaHQoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNh
c2UgVmVydGljYWxBbGlnbjo6VG9wOgotICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSB7IH07
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246
OkJvdHRvbToKLSAgICAgICAgICAgICAgICBsb2dpY2FsVG9wID0gbG9naWNhbEJvdHRvbSgpIC0g
cnVuLT5sb2dpY2FsUmVjdCgpLmhlaWdodCgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX0lNUExFTUVOVEVE
X1lFVCgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgcnVuLT5hZGp1c3RMb2dpY2FsVG9wKGxvZ2ljYWxUb3ApOwotICAgICAgICAgICAgLy8gQ29u
dmVydCBydW5zIGZyb20gcmVsYXRpdmUgdG8gdGhlIGxpbmUgdG9wL2xlZnQgdG8gdGhlIGZvcm1h
dHRpbmcgcm9vdCdzIGJvcmRlciBib3ggdG9wL2xlZnQuCi0gICAgICAgICAgICBydW4tPm1vdmVW
ZXJ0aWNhbGx5KHRoaXMtPmxvZ2ljYWxUb3AoKSk7Ci0gICAgICAgICAgICBydW4tPm1vdmVIb3Jp
em9udGFsbHkodGhpcy0+bG9naWNhbExlZnQoKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAv
LyBMZXQncyBqb2luIHRleHQgcnVucyB0b2dldGhlciB3aGVuIHBvc3NpYmxlLgotICAgIC8vIEZJ
WE1FOiBDaGVjayBpZiB3ZSBjYW4gZG8gaXQgYXMgcGFydCBvZiB0aGUgbG9vcCBhYm92ZS4KKyAg
ICAvLyBKb2luIHRleHQgcnVucyB0b2dldGhlciB3aGVuIHBvc3NpYmxlLgogICAgIHVuc2lnbmVk
IGluZGV4ID0gMTsKICAgICB3aGlsZSAoaW5kZXggPCBtX3J1bkxpc3Quc2l6ZSgpKSB7CiAgICAg
ICAgIGF1dG8mIHByZXZpb3VzUnVuID0gbV9ydW5MaXN0W2luZGV4IC0gMV07CkBAIC0xODQsOSAr
MTMwLDEwNiBAQCBMaW5lOjpSdW5MaXN0IExpbmU6OmNsb3NlKCkKICAgICAgICAgcHJldmlvdXNS
dW4tPmV4cGFuZCgqY3VycmVudFJ1bik7CiAgICAgICAgIG1fcnVuTGlzdC5yZW1vdmUoaW5kZXgp
OwogICAgIH0KKworICAgIGlmICghbV9za2lwQWxpZ25tZW50KSB7CisgICAgICAgIHZlcnRpY2Fs
QWxpZ25Db250ZW50KCk7CisgICAgICAgIGhvcml6b250YWxBbGlnbkNvbnRlbnQoKTsKKyAgICB9
CisKICAgICByZXR1cm4gV1RGTW92ZShtX3J1bkxpc3QpOwogfQogCit2b2lkIExpbmU6OnZlcnRp
Y2FsQWxpZ25Db250ZW50KCkKK3sKKyAgICBBU1NFUlQoIW1fc2tpcEFsaWdubWVudCk7CisKKyAg
ICBpZiAoaXNWaXN1YWxseUVtcHR5KCkpIHsKKyAgICAgICAgbV9saW5lQm94LmJhc2VsaW5lKCku
cmVzZXQoKTsKKyAgICAgICAgbV9saW5lQm94LnNldEJhc2VsaW5lT2Zmc2V0KHsgfSk7CisgICAg
ICAgIG1fbGluZUJveC5zZXRMb2dpY2FsSGVpZ2h0KHsgfSk7CisgICAgfQorCisgICAgLy8gUmVt
b3ZlIGRlc2NlbnQgd2hlbiBhbGwgY29udGVudCBpcyBiYXNlbGluZSBhbGlnbmVkIGJ1dCBub25l
IG9mIHRoZW0gaGF2ZSBkZXNjZW50LgorICAgIGlmIChmb3JtYXR0aW5nQ29udGV4dCgpLnF1aXJr
cygpLmxpbmVEZXNjZW50TmVlZHNDb2xsYXBzaW5nKG1fcnVuTGlzdCkpIHsKKyAgICAgICAgbV9s
aW5lQm94LnNocmlua1ZlcnRpY2FsbHkobV9saW5lQm94LmJhc2VsaW5lKCkuZGVzY2VudCgpKTsK
KyAgICAgICAgbV9saW5lQm94LmJhc2VsaW5lKCkuc2V0RGVzY2VudCh7IH0pOworICAgIH0KKwor
ICAgIGF1dG8mIGxheW91dFN0YXRlID0gdGhpcy0+bGF5b3V0U3RhdGUoKTsKKyAgICBhdXRvJiBm
b3JtYXR0aW5nQ29udGV4dCA9IHRoaXMtPmZvcm1hdHRpbmdDb250ZXh0KCk7CisgICAgZm9yIChh
dXRvJiBydW4gOiBtX3J1bkxpc3QpIHsKKyAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsVG9wOwor
ICAgICAgICBhdXRvJiBsYXlvdXRCb3ggPSBydW4tPmxheW91dEJveCgpOworICAgICAgICBhdXRv
IHZlcnRpY2FsQWxpZ24gPSBsYXlvdXRCb3guc3R5bGUoKS52ZXJ0aWNhbEFsaWduKCk7CisgICAg
ICAgIGF1dG8gYXNjZW50ID0gbGF5b3V0Qm94LnN0eWxlKCkuZm9udE1ldHJpY3MoKS5hc2NlbnQo
KTsKKworICAgICAgICBzd2l0Y2ggKHZlcnRpY2FsQWxpZ24pIHsKKyAgICAgICAgY2FzZSBWZXJ0
aWNhbEFsaWduOjpCYXNlbGluZToKKyAgICAgICAgICAgIGlmIChydW4tPmlzTGluZUJyZWFrKCkg
fHwgcnVuLT5pc1RleHQoKSkKKyAgICAgICAgICAgICAgICBsb2dpY2FsVG9wID0gYmFzZWxpbmVP
ZmZzZXQoKSAtIGFzY2VudDsKKyAgICAgICAgICAgIGVsc2UgaWYgKHJ1bi0+aXNDb250YWluZXJT
dGFydCgpKSB7CisgICAgICAgICAgICAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5n
Q29udGV4dC5nZW9tZXRyeUZvckJveChsYXlvdXRCb3gpOworICAgICAgICAgICAgICAgIGxvZ2lj
YWxUb3AgPSBiYXNlbGluZU9mZnNldCgpIC0gYXNjZW50IC0gYm94R2VvbWV0cnkuYm9yZGVyVG9w
KCkgLSBib3hHZW9tZXRyeS5wYWRkaW5nVG9wKCkudmFsdWVPcigwKTsKKyAgICAgICAgICAgIH0g
ZWxzZSBpZiAobGF5b3V0Qm94LmlzSW5saW5lQmxvY2tCb3goKSAmJiBsYXlvdXRCb3guZXN0YWJs
aXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCgpKSB7CisgICAgICAgICAgICAgICAgYXV0byYg
Zm9ybWF0dGluZ1N0YXRlID0gZG93bmNhc3Q8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihsYXlvdXRT
dGF0ZS5lc3RhYmxpc2hlZEZvcm1hdHRpbmdTdGF0ZShkb3duY2FzdDxDb250YWluZXI+KGxheW91
dEJveCkpKTsKKyAgICAgICAgICAgICAgICAvLyBTcGVjIG1ha2VzIHVzIGdlbmVyYXRlIGF0IGxl
YXN0IG9uZSBsaW5lIC1ldmVuIGlmIGl0IGlzIGVtcHR5LgorICAgICAgICAgICAgICAgIEFTU0VS
VCghZm9ybWF0dGluZ1N0YXRlLmxpbmVCb3hlcygpLmlzRW1wdHkoKSk7CisgICAgICAgICAgICAg
ICAgYXV0byBpbmxpbmVCbG9ja0Jhc2VsaW5lID0gZm9ybWF0dGluZ1N0YXRlLmxpbmVCb3hlcygp
Lmxhc3QoKS5iYXNlbGluZSgpOworICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBiYXNlbGlu
ZU9mZnNldCgpIC0gaW5saW5lQmxvY2tCYXNlbGluZS5hc2NlbnQoKTsKKyAgICAgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBiYXNlbGluZU9mZnNldCgpIC0gcnVu
LT5sb2dpY2FsUmVjdCgpLmhlaWdodCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgVmVydGljYWxBbGlnbjo6VG9wOgorICAgICAgICAgICAgbG9naWNhbFRvcCA9IHsgfTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJvdHRvbToKKyAg
ICAgICAgICAgIGxvZ2ljYWxUb3AgPSBsb2dpY2FsQm90dG9tKCkgLSBydW4tPmxvZ2ljYWxSZWN0
KCkuaGVpZ2h0KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIEFTU0VSVF9OT1RfSU1QTEVNRU5URURfWUVUKCk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICBydW4tPmFkanVzdExvZ2ljYWxUb3AobG9naWNhbFRvcCk7Cisg
ICAgICAgIC8vIENvbnZlcnQgcnVucyBmcm9tIHJlbGF0aXZlIHRvIHRoZSBsaW5lIHRvcC9sZWZ0
IHRvIHRoZSBmb3JtYXR0aW5nIHJvb3QncyBib3JkZXIgYm94IHRvcC9sZWZ0LgorICAgICAgICBy
dW4tPm1vdmVWZXJ0aWNhbGx5KHRoaXMtPmxvZ2ljYWxUb3AoKSk7CisgICAgICAgIHJ1bi0+bW92
ZUhvcml6b250YWxseSh0aGlzLT5sb2dpY2FsTGVmdCgpKTsKKyAgICB9Cit9CisKK3ZvaWQgTGlu
ZTo6aG9yaXpvbnRhbEFsaWduQ29udGVudCgpCit7CisgICAgQVNTRVJUKCFtX3NraXBBbGlnbm1l
bnQpOworCisgICAgYXV0byBhZGp1c3RtZW50Rm9yQWxpZ25tZW50ID0gWyZdKCkgLT4gT3B0aW9u
YWw8TGF5b3V0VW5pdD4geworICAgICAgICBzd2l0Y2ggKCptX2hvcml6b250YWxBbGlnbm1lbnQp
IHsKKyAgICAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpMZWZ0OgorICAgICAgICBjYXNlIFRleHRB
bGlnbk1vZGU6OldlYktpdExlZnQ6CisgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6U3RhcnQ6
CisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OlJp
Z2h0OgorICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdFJpZ2h0OgorICAgICAgICBj
YXNlIFRleHRBbGlnbk1vZGU6OkVuZDoKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1heChhdmFp
bGFibGVXaWR0aCgpLCAwX2x1KTsKKyAgICAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpDZW50ZXI6
CisgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0Q2VudGVyOgorICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWF4KGF2YWlsYWJsZVdpZHRoKCkgLyAyLCAwX2x1KTsKKyAgICAgICAgY2Fz
ZSBUZXh0QWxpZ25Nb2RlOjpKdXN0aWZ5OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9OworCisgICAgYXV0byBhZGp1c3Rt
ZW50ID0gYWRqdXN0bWVudEZvckFsaWdubWVudCgpOworICAgIGlmICghYWRqdXN0bWVudCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgZm9yIChhdXRvJiBydW4gOiBtX3J1bkxpc3QpCisgICAgICAg
IHJ1bi0+bW92ZUhvcml6b250YWxseSgqYWRqdXN0bWVudCk7CisgICAgLy8gRklYTUU6IEZpbmQg
b3V0IGlmIG1fbGluZUJveCBuZWVkcyBhZGp1c3RtbmVudCBhcyB3ZWxsLgorfQorCiB2b2lkIExp
bmU6OnJlbW92ZVRyYWlsaW5nVHJpbW1hYmxlQ29udGVudCgpCiB7CiAgICAgLy8gQ29sbGFwc2Ug
dHJpbW1hYmxlIHRyYWlsaW5nIGNvbnRlbnQKQEAgLTI1MSw3ICsyOTQsNyBAQCB2b2lkIExpbmU6
OmFwcGVuZElubGluZUNvbnRhaW5lclN0YXJ0KGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0s
IExheW91dFVuaXQgbAogICAgIGxvZ2ljYWxSZWN0LnNldExlZnQoY29udGVudExvZ2ljYWxXaWR0
aCgpKTsKICAgICBsb2dpY2FsUmVjdC5zZXRXaWR0aChsb2dpY2FsV2lkdGgpOwogCi0gICAgaWYg
KCFtX3NraXBWZXJ0aWNhbEFsaWdtZW50KSB7CisgICAgaWYgKCFtX3NraXBBbGlnbm1lbnQpIHsK
ICAgICAgICAgYXV0byBsb2dpY2FsSGVpZ2h0ID0gaW5saW5lSXRlbUNvbnRlbnRIZWlnaHQoaW5s
aW5lSXRlbSk7CiAgICAgICAgIGFkanVzdEJhc2VsaW5lQW5kTGluZUhlaWdodChpbmxpbmVJdGVt
LCBsb2dpY2FsSGVpZ2h0KTsKICAgICAgICAgbG9naWNhbFJlY3Quc2V0SGVpZ2h0KGxvZ2ljYWxI
ZWlnaHQpOwpAQCAtMjk4LDcgKzM0MSw3IEBAIHZvaWQgTGluZTo6YXBwZW5kVGV4dENvbnRlbnQo
Y29uc3QgSW5saW5lVGV4dEl0ZW0mIGlubGluZUl0ZW0sIExheW91dFVuaXQgbG9naWNhCiAgICAg
YXV0byBsb2dpY2FsUmVjdCA9IERpc3BsYXk6OlJlY3QgeyB9OwogICAgIGxvZ2ljYWxSZWN0LnNl
dExlZnQoY29udGVudExvZ2ljYWxXaWR0aCgpKTsKICAgICBsb2dpY2FsUmVjdC5zZXRXaWR0aChs
b2dpY2FsV2lkdGgpOwotICAgIGlmICghbV9za2lwVmVydGljYWxBbGlnbWVudCkgeworICAgIGlm
ICghbV9za2lwQWxpZ25tZW50KSB7CiAgICAgICAgIGF1dG8gcnVuSGVpZ2h0ID0gaW5saW5lSXRl
bUNvbnRlbnRIZWlnaHQoaW5saW5lSXRlbSk7CiAgICAgICAgIGxvZ2ljYWxSZWN0LnNldEhlaWdo
dChydW5IZWlnaHQpOwogICAgICAgICBhZGp1c3RCYXNlbGluZUFuZExpbmVIZWlnaHQoaW5saW5l
SXRlbSwgcnVuSGVpZ2h0KTsKQEAgLTMyNSw3ICszNjgsNyBAQCB2b2lkIExpbmU6OmFwcGVuZE5v
blJlcGxhY2VkSW5saW5lQm94KGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIExheW91dFVu
aXQgbAogCiAgICAgbG9naWNhbFJlY3Quc2V0TGVmdChjb250ZW50TG9naWNhbFdpZHRoKCkgKyBo
b3Jpem9udGFsTWFyZ2luLnN0YXJ0KTsKICAgICBsb2dpY2FsUmVjdC5zZXRXaWR0aChsb2dpY2Fs
V2lkdGgpOwotICAgIGlmICghbV9za2lwVmVydGljYWxBbGlnbWVudCkgeworICAgIGlmICghbV9z
a2lwQWxpZ25tZW50KSB7CiAgICAgICAgIGFkanVzdEJhc2VsaW5lQW5kTGluZUhlaWdodChpbmxp
bmVJdGVtLCBib3hHZW9tZXRyeS5tYXJnaW5Cb3hIZWlnaHQoKSk7CiAgICAgICAgIGxvZ2ljYWxS
ZWN0LnNldEhlaWdodChpbmxpbmVJdGVtQ29udGVudEhlaWdodChpbmxpbmVJdGVtKSk7CiAgICAg
fQpAQCAtMzQ2LDcgKzM4OSw3IEBAIHZvaWQgTGluZTo6YXBwZW5kSGFyZExpbmVCcmVhayhjb25z
dCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtKQogICAgIGF1dG8gbG9naWNhbFJlY3QgPSBEaXNwbGF5
OjpSZWN0IHsgfTsKICAgICBsb2dpY2FsUmVjdC5zZXRMZWZ0KGNvbnRlbnRMb2dpY2FsV2lkdGgo
KSk7CiAgICAgbG9naWNhbFJlY3Quc2V0V2lkdGgoeyB9KTsKLSAgICBpZiAoIW1fc2tpcFZlcnRp
Y2FsQWxpZ21lbnQpIHsKKyAgICBpZiAoIW1fc2tpcEFsaWdubWVudCkgewogICAgICAgICBhZGp1
c3RCYXNlbGluZUFuZExpbmVIZWlnaHQoaW5saW5lSXRlbSwgeyB9KTsKICAgICAgICAgbG9naWNh
bFJlY3Quc2V0SGVpZ2h0KGxvZ2ljYWxIZWlnaHQoKSk7CiAgICAgfQpAQCAtNDI2LDcgKzQ2OSw3
IEBAIHZvaWQgTGluZTo6YWRqdXN0QmFzZWxpbmVBbmRMaW5lSGVpZ2h0KGNvbnN0IElubGluZUl0
ZW0mIGlubGluZUl0ZW0sIExheW91dFVuaXQKIAogTGF5b3V0VW5pdCBMaW5lOjppbmxpbmVJdGVt
Q29udGVudEhlaWdodChjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtKSBjb25zdAogewotICAg
IEFTU0VSVCghbV9za2lwVmVydGljYWxBbGlnbWVudCk7CisgICAgQVNTRVJUKCFtX3NraXBBbGln
bm1lbnQpOwogICAgIGF1dG8mIGZvbnRNZXRyaWNzID0gaW5saW5lSXRlbS5zdHlsZSgpLmZvbnRN
ZXRyaWNzKCk7CiAgICAgaWYgKGlubGluZUl0ZW0uaXNMaW5lQnJlYWsoKSB8fCBpczxJbmxpbmVU
ZXh0SXRlbT4oaW5saW5lSXRlbSkpCiAgICAgICAgIHJldHVybiBmb250TWV0cmljcy5oZWlnaHQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZUxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZUxpbmUuaAppbmRleCA2MzkxYTY3NzJlMGQxMDE0ZDExYzM3N2ZhNjcwOTM0YmI0ODM2NzdhLi4y
YzNmMGRmMjFkOTE1MDU4NmIxN2M4NjQyMDM2M2RjODEyZTk1ZDZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5oCkBAIC01MSw4
ICs1MSw4IEBAIHB1YmxpYzoKICAgICAgICAgfTsKICAgICAgICAgT3B0aW9uYWw8SGVpZ2h0QW5k
QmFzZWxpbmU+IGhlaWdodEFuZEJhc2VsaW5lOwogICAgIH07Ci0gICAgZW51bSBjbGFzcyBTa2lw
VmVydGljYWxBbGlnbWVudCB7IE5vLCBZZXMgfTsKLSAgICBMaW5lKGNvbnN0IElubGluZUZvcm1h
dHRpbmdDb250ZXh0JiwgY29uc3QgSW5pdGlhbENvbnN0cmFpbnRzJiwgU2tpcFZlcnRpY2FsQWxp
Z21lbnQpOworICAgIGVudW0gY2xhc3MgU2tpcEFsaWdubWVudCB7IE5vLCBZZXMgfTsKKyAgICBM
aW5lKGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiwgY29uc3QgSW5pdGlhbENvbnN0cmFp
bnRzJiwgT3B0aW9uYWw8VGV4dEFsaWduTW9kZT4sIFNraXBBbGlnbm1lbnQpOwogCiAgICAgdm9p
ZCBhcHBlbmQoY29uc3QgSW5saW5lSXRlbSYsIExheW91dFVuaXQgbG9naWNhbFdpZHRoKTsKICAg
ICBib29sIGhhc0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiAhaXNWaXN1YWxseUVtcHR5KCk7IH0K
QEAgLTEyNSw2ICsxMjUsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgYXBwZW5kSGFyZExpbmVCcmVh
ayhjb25zdCBJbmxpbmVJdGVtJik7CiAKICAgICB2b2lkIHJlbW92ZVRyYWlsaW5nVHJpbW1hYmxl
Q29udGVudCgpOworICAgIHZvaWQgaG9yaXpvbnRhbEFsaWduQ29udGVudCgpOworICAgIHZvaWQg
dmVydGljYWxBbGlnbkNvbnRlbnQoKTsKIAogICAgIHZvaWQgYWRqdXN0QmFzZWxpbmVBbmRMaW5l
SGVpZ2h0KGNvbnN0IElubGluZUl0ZW0mLCBMYXlvdXRVbml0IHJ1bkhlaWdodCk7CiAgICAgTGF5
b3V0VW5pdCBpbmxpbmVJdGVtQ29udGVudEhlaWdodChjb25zdCBJbmxpbmVJdGVtJikgY29uc3Q7
CkBAIC0xMzksNyArMTQxLDggQEAgcHJpdmF0ZToKIAogICAgIE9wdGlvbmFsPExpbmVCb3g6OkJh
c2VsaW5lPiBtX2luaXRpYWxTdHJ1dDsKICAgICBMYXlvdXRVbml0IG1fbGluZUxvZ2ljYWxXaWR0
aDsKLSAgICBib29sIG1fc2tpcFZlcnRpY2FsQWxpZ21lbnQgeyBmYWxzZSB9OworICAgIE9wdGlv
bmFsPFRleHRBbGlnbk1vZGU+IG1faG9yaXpvbnRhbEFsaWdubWVudDsKKyAgICBib29sIG1fc2tp
cEFsaWdubWVudCB7IGZhbHNlIH07CiAgICAgTGluZUJveCBtX2xpbmVCb3g7CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379797</attachid>
            <date>2019-09-28 17:57:45 -0700</date>
            <delta_ts>2019-09-28 18:59:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202351-20190928175741.patch</filename>
            <type>text/plain</type>
            <size>23591</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzk4ZjQzODc3Mzg3YmM5
NjFiZjljM2M4ZjUyYWQ0ODIyOWZkMWJmOC4uZjVjNzc0MzZkODE2M2QxN2Q1ZmQ3OGI2N2MwZjVi
NDA2ZGRmOGYzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE5LTA5LTI4ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBNb3ZlIGhv
cml6b250YWwgYWxpZ25tZW50IHRvIExpbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMjM1MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTU4MTAx
Mzk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgTGlu
ZSBzaG91bGQgYmUgYWJsZSB0byBmaW5hbGl6ZSB0aGUgcnVuIHBsYWNlbWVudCBpbmNsdWRpbmcg
aG9yaXpvbnRhbCBhbGlnbm1lbnQuCisKKyAgICAgICAgKiBsYXlvdXQvVmVyaWZpY2F0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6b3V0cHV0TWlzbWF0Y2hpbmdTaW1wbGVMaW5l
SW5mb3JtYXRpb25JZk5lZWRlZCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lRm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6TGluZUlucHV0OjpMaW5lSW5wdXQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpMaW5lTGF5b3V0OjpMaW5lTGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQ6OklubGluZUxheW91dDo6bGF5b3V0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OklubGluZUxheW91dDo6Y29t
cHV0ZWRJbnRyaW5zaWNXaWR0aCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lTGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6Okxp
bmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjppc1Zpc3VhbGx5RW1wdHkgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjpjbG9zZSk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OnZlcnRpY2FsQWxpZ25Db250ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6TGluZTo6aG9yaXpvbnRhbEFsaWduQ29udGVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OmFwcGVuZElubGluZUNvbnRhaW5lclN0YXJ0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6TGluZTo6YXBwZW5kVGV4dENvbnRlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpMaW5lOjphcHBlbmROb25SZXBsYWNlZElubGluZUJveCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OmFwcGVuZEhhcmRMaW5lQnJlYWspOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjppbmxpbmVJdGVtQ29udGVudEhlaWdodCBjb25zdCk6
CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5oOgorCiAyMDE5
LTA5LTI4ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAg
IFtJRExdIFN1cHBvcnQgcmVjb3JkPERPTVN0cmluZywgKkNhbGxiYWNrPiBpbiBiaW5kaW5ncwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcAppbmRleCBmZjY3ZGZmN2EyY2Q1NTdi
ZTlhNGYwMjJhZThlNTgyYzVjMzVhOWQ4Li4wYWJkY2ZlNmRkNzQ2ZDk1MGVlZmZhMTIwMmU3ODhm
Mzg4YjMyMjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcApAQCAtOTks
NyArOTksMTEgQEAgc3RhdGljIGJvb2wgb3V0cHV0TWlzbWF0Y2hpbmdTaW1wbGVMaW5lSW5mb3Jt
YXRpb25JZk5lZWRlZChUZXh0U3RyZWFtJiBzdHJlYW0sIGMKICAgICAgICAgaWYgKG1hdGNoaW5n
UnVucykKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIHN0cmVhbSA8PCAiTWlzbWF0
Y2hpbmc6IHNpbXBsZSBydW4oIiA8PCBzaW1wbGVSdW4uc3RhcnQgPDwgIiwgIiA8PCBzaW1wbGVS
dW4uZW5kIDw8ICIpICgiIDw8IHNpbXBsZVJ1bi5sb2dpY2FsTGVmdCA8PCAiLCAiIDw8IHNpbXBs
ZVJ1bi5sb2dpY2FsUmlnaHQgPDwgIikgbGF5b3V0IHJ1bigiIDw8IGlubGluZVJ1bi50ZXh0Q29u
dGV4dCgpLT5zdGFydCgpIDw8ICIsICIgPDwgaW5saW5lUnVuLnRleHRDb250ZXh0KCktPmVuZCgp
IDw8ICIpICgiIDw8IGlubGluZVJ1bi5sb2dpY2FsTGVmdCgpIDw8ICIsICIgPDwgaW5saW5lUnVu
LmxvZ2ljYWxSaWdodCgpIDw8ICIpIjsKKyAgICAgICAgc3RyZWFtIDw8ICJNaXNtYXRjaGluZzog
c2ltcGxlIHJ1bigiIDw8IHNpbXBsZVJ1bi5zdGFydCA8PCAiLCAiIDw8IHNpbXBsZVJ1bi5lbmQg
PDwgIikgKCIgPDwgc2ltcGxlUnVuLmxvZ2ljYWxMZWZ0IDw8ICIsICIgPDwgc2ltcGxlUnVuLmxv
Z2ljYWxSaWdodCA8PCAiKSI7CisgICAgICAgIHN0cmVhbSA8PCAiIGlubGluZSBydW4iOworICAg
ICAgICBpZiAoaW5saW5lUnVuLnRleHRDb250ZXh0KCkpCisgICAgICAgICAgICBzdHJlYW0gPDwg
IiAoIiA8PCBpbmxpbmVSdW4udGV4dENvbnRleHQoKS0+c3RhcnQoKSA8PCAiLCAiIDw8IGlubGlu
ZVJ1bi50ZXh0Q29udGV4dCgpLT5lbmQoKSA8PCAiKSI7CisgICAgICAgIHN0cmVhbSA8PCAiICgi
IDw8IGlubGluZVJ1bi5sb2dpY2FsTGVmdCgpIDw8ICIsICIgPDwgaW5saW5lUnVuLmxvZ2ljYWxU
b3AoKSA8PCAiKSAoIiA8PCBpbmxpbmVSdW4ubG9naWNhbFdpZHRoKCkgPDwgIngiIDw8IGlubGlu
ZVJ1bi5sb2dpY2FsSGVpZ2h0KCkgPDwgIikiOwogICAgICAgICBzdHJlYW0ubmV4dExpbmUoKTsK
ICAgICAgICAgbWlzbWF0Y2hlZCA9IHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdD
b250ZXh0LmgKaW5kZXggZWY3NmI3ZTA3ZDRlZWYxMzM5MDY5MjBhY2M4ZWE5OWE3Zjg0NzgwYy4u
OTkyZjM3MGVhNGY2MTkwNjQzZTBiZTg2YTU0NGJkZDMxZjAyZjM3NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVG
b3JtYXR0aW5nQ29udGV4dC5oCkBAIC02OCw3ICs2OCw2IEBAIHByaXZhdGU6CiAKICAgICAgICAg
TGluZUNvbnRlbnQgcGxhY2VJbmxpbmVJdGVtcyhjb25zdCBMaW5lSW5wdXQmKSBjb25zdDsKICAg
ICAgICAgdm9pZCBzZXR1cERpc3BsYXlCb3hlcyhjb25zdCBMaW5lQ29udGVudCYpOwotICAgICAg
ICB2b2lkIGFsaWduUnVucyhUZXh0QWxpZ25Nb2RlLCBJbmxpbmVSdW5zJiwgdW5zaWduZWQgZmly
c3RSdW5JbmRleCwgTGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0aCkgY29uc3Q7CiAKICAgICBwcml2
YXRlOgogICAgICAgICBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgbV9pbmxpbmVGb3JtYXR0aW5n
Q29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0
aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlv
dXQuY3BwCmluZGV4IDRkNDdjMjcwNDQ1OGI4MzA5ZjEwZjQ3N2YzNjNjN2NmNDZhYWI5N2IuLmVh
ZDYzNmQ2YWRmZGE4YzE1ZWUzZGU3NDAwODU3OGJlNzc4Y2E4OGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
TGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRp
bmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0LmNwcApAQCAtODEsMTkgKzgxLDI5
IEBAIHN0cnVjdCBJbmRleEFuZFJhbmdlIHsKIH07CiAKIHN0cnVjdCBMaW5lSW5wdXQgewotICAg
IExpbmVJbnB1dChjb25zdCBMaW5lOjpJbml0aWFsQ29uc3RyYWludHMmIGluaXRpYWxMaW5lQ29u
c3RyYWludHMsIExpbmU6OlNraXBWZXJ0aWNhbEFsaWdtZW50LCBJbmRleEFuZFJhbmdlIGZpcnN0
VG9Qcm9jZXNzLCBjb25zdCBJbmxpbmVJdGVtcyYpOworICAgIExpbmVJbnB1dChjb25zdCBMaW5l
OjpJbml0aWFsQ29uc3RyYWludHMmLCBUZXh0QWxpZ25Nb2RlLCBJbmRleEFuZFJhbmdlIGZpcnN0
VG9Qcm9jZXNzLCBjb25zdCBJbmxpbmVJdGVtcyYpOworICAgIExpbmVJbnB1dChjb25zdCBMaW5l
OjpJbml0aWFsQ29uc3RyYWludHMmLCBJbmRleEFuZFJhbmdlIGZpcnN0VG9Qcm9jZXNzLCBjb25z
dCBJbmxpbmVJdGVtcyYpOwogCiAgICAgTGluZTo6SW5pdGlhbENvbnN0cmFpbnRzIGluaXRpYWxD
b25zdHJhaW50czsKKyAgICBUZXh0QWxpZ25Nb2RlIGhvcml6b250YWxBbGlnbm1lbnQ7CiAgICAg
Ly8gRklYTUUgQWx0ZXJuYXRpdmVseSB3ZSBjb3VsZCBqdXN0IGhhdmUgYSBzZWNvbmQgcGFzcyB3
aXRoIHZlcnRpY2FsIHBvc2l0aW9uaW5nIChwcmVmZXJyZWQgd2lkdGggY29tcHV0YXRpb24gb3B0
cyBvdXQpIAotICAgIExpbmU6OlNraXBWZXJ0aWNhbEFsaWdtZW50IHNraXBWZXJ0aWNhbEFsaWdt
ZW50OworICAgIExpbmU6OlNraXBBbGlnbm1lbnQgc2tpcEFsaWdubWVudCB7IExpbmU6OlNraXBB
bGlnbm1lbnQ6Ok5vIH07CiAgICAgSW5kZXhBbmRSYW5nZSBmaXJzdElubGluZUl0ZW07CiAgICAg
Y29uc3QgSW5saW5lSXRlbXMmIGlubGluZUl0ZW1zOwogICAgIE9wdGlvbmFsPExheW91dFVuaXQ+
IGZsb2F0TWluaW11bUxvZ2ljYWxCb3R0b207CiB9OwogCi1MaW5lSW5wdXQ6OkxpbmVJbnB1dChj
b25zdCBMaW5lOjpJbml0aWFsQ29uc3RyYWludHMmIGluaXRpYWxMaW5lQ29uc3RyYWludHMsIExp
bmU6OlNraXBWZXJ0aWNhbEFsaWdtZW50IHNraXBWZXJ0aWNhbEFsaWdtZW50LCBJbmRleEFuZFJh
bmdlIGZpcnN0VG9Qcm9jZXNzLCBjb25zdCBJbmxpbmVJdGVtcyYgaW5saW5lSXRlbXMpCitMaW5l
SW5wdXQ6OkxpbmVJbnB1dChjb25zdCBMaW5lOjpJbml0aWFsQ29uc3RyYWludHMmIGluaXRpYWxM
aW5lQ29uc3RyYWludHMsIFRleHRBbGlnbk1vZGUgaG9yaXpvbnRhbEFsaWdubWVudCwgSW5kZXhB
bmRSYW5nZSBmaXJzdFRvUHJvY2VzcywgY29uc3QgSW5saW5lSXRlbXMmIGlubGluZUl0ZW1zKQog
ICAgIDogaW5pdGlhbENvbnN0cmFpbnRzKGluaXRpYWxMaW5lQ29uc3RyYWludHMpCi0gICAgLCBz
a2lwVmVydGljYWxBbGlnbWVudChza2lwVmVydGljYWxBbGlnbWVudCkKKyAgICAsIGhvcml6b250
YWxBbGlnbm1lbnQoaG9yaXpvbnRhbEFsaWdubWVudCkKKyAgICAsIGZpcnN0SW5saW5lSXRlbShm
aXJzdFRvUHJvY2VzcykKKyAgICAsIGlubGluZUl0ZW1zKGlubGluZUl0ZW1zKQoreworfQorCitM
aW5lSW5wdXQ6OkxpbmVJbnB1dChjb25zdCBMaW5lOjpJbml0aWFsQ29uc3RyYWludHMmIGluaXRp
YWxMaW5lQ29uc3RyYWludHMsIEluZGV4QW5kUmFuZ2UgZmlyc3RUb1Byb2Nlc3MsIGNvbnN0IElu
bGluZUl0ZW1zJiBpbmxpbmVJdGVtcykKKyAgICA6IGluaXRpYWxDb25zdHJhaW50cyhpbml0aWFs
TGluZUNvbnN0cmFpbnRzKQorICAgICwgc2tpcEFsaWdubWVudChMaW5lOjpTa2lwQWxpZ25tZW50
OjpZZXMpCiAgICAgLCBmaXJzdElubGluZUl0ZW0oZmlyc3RUb1Byb2Nlc3MpCiAgICAgLCBpbmxp
bmVJdGVtcyhpbmxpbmVJdGVtcykKIHsKQEAgLTE2NCw3ICsxNzQsNyBAQCB2b2lkIExpbmVMYXlv
dXQ6OlVuY29tbWl0dGVkQ29udGVudDo6cmVzZXQoKQogTGluZUxheW91dDo6TGluZUxheW91dChj
b25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQsIGNv
bnN0IExpbmVJbnB1dCYgbGluZUlucHV0KQogICAgIDogbV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4
dChpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCkKICAgICAsIG1fbGluZUlucHV0KGxpbmVJbnB1dCkK
LSAgICAsIG1fbGluZShpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCwgbGluZUlucHV0LmluaXRpYWxD
b25zdHJhaW50cywgbGluZUlucHV0LnNraXBWZXJ0aWNhbEFsaWdtZW50KQorICAgICwgbV9saW5l
KGlubGluZUZvcm1hdHRpbmdDb250ZXh0LCBsaW5lSW5wdXQuaW5pdGlhbENvbnN0cmFpbnRzLCBs
aW5lSW5wdXQuaG9yaXpvbnRhbEFsaWdubWVudCwgbGluZUlucHV0LnNraXBBbGlnbm1lbnQpCiAg
ICAgLCBtX2xpbmVIYXNJbnRydXNpdmVGbG9hdChsaW5lSW5wdXQuaW5pdGlhbENvbnN0cmFpbnRz
LmxpbmVJc0NvbnN0cmFpbmVkQnlGbG9hdCkKIHsKIH0KQEAgLTI4MSw3ICsyOTEsNyBAQCB2b2lk
IElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpJbmxpbmVMYXlvdXQ6OmxheW91dChjb25zdCBJbmxp
bmVJdGVtcyYgaW5saW5lSXRlbQogICAgIGF1dG8gbGluZUxvZ2ljYWxUb3AgPSBmb3JtYXR0aW5n
Q29udGV4dCgpLmdlb21ldHJ5Rm9yQm94KGZvcm1hdHRpbmdSb290KCkpLmNvbnRlbnRCb3hUb3Ao
KTsKICAgICBJbmRleEFuZFJhbmdlIGN1cnJlbnRJbmxpbmVJdGVtOwogICAgIHdoaWxlIChjdXJy
ZW50SW5saW5lSXRlbS5pbmRleCA8IGlubGluZUl0ZW1zLnNpemUoKSkgewotICAgICAgICBhdXRv
IGxpbmVJbnB1dCA9IExpbmVJbnB1dCB7IGluaXRpYWxDb25zdHJhaW50c0ZvckxpbmUobGluZUxv
Z2ljYWxUb3ApLCBMaW5lOjpTa2lwVmVydGljYWxBbGlnbWVudDo6Tm8sIGN1cnJlbnRJbmxpbmVJ
dGVtLCBpbmxpbmVJdGVtcyB9OworICAgICAgICBhdXRvIGxpbmVJbnB1dCA9IExpbmVJbnB1dCB7
IGluaXRpYWxDb25zdHJhaW50c0ZvckxpbmUobGluZUxvZ2ljYWxUb3ApLCBmb3JtYXR0aW5nUm9v
dCgpLnN0eWxlKCkudGV4dEFsaWduKCksIGN1cnJlbnRJbmxpbmVJdGVtLCBpbmxpbmVJdGVtcyB9
OwogICAgICAgICBhdXRvIGxpbmVMYXlvdXQgPSBMaW5lTGF5b3V0IHsgZm9ybWF0dGluZ0NvbnRl
eHQoKSwgbGluZUlucHV0IH07CiAKICAgICAgICAgYXV0byBsaW5lQ29udGVudCA9IGxpbmVMYXlv
dXQubGF5b3V0KCk7CkBAIC0zNDksNyArMzU5LDcgQEAgTGF5b3V0VW5pdCBJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dDo6SW5saW5lTGF5b3V0Ojpjb21wdXRlZEludHJpbnNpY1dpZHRoKGNvbnN0IEkK
ICAgICB3aGlsZSAoY3VycmVudElubGluZUl0ZW0uaW5kZXggPCBpbmxpbmVJdGVtcy5zaXplKCkp
IHsKICAgICAgICAgLy8gT25seSB0aGUgaG9yaXp0b25hbCBhdmFpbGFibGUgd2lkdGggaXMgY29u
c3RyYWluZWQgd2hlbiBjb21wdXRpbmcgaW50cmluc2ljIHdpZHRoLgogICAgICAgICBhdXRvIGlu
aXRpYWxMaW5lQ29uc3RyYWludHMgPSBMaW5lOjpJbml0aWFsQ29uc3RyYWludHMgeyB7IH0sIHdp
ZHRoQ29uc3RyYWludCgpLCBmYWxzZSwgeyB9IH07Ci0gICAgICAgIGF1dG8gbGluZUlucHV0ID0g
TGluZUlucHV0IHsgaW5pdGlhbExpbmVDb25zdHJhaW50cywgTGluZTo6U2tpcFZlcnRpY2FsQWxp
Z21lbnQ6OlllcywgY3VycmVudElubGluZUl0ZW0sIGlubGluZUl0ZW1zIH07CisgICAgICAgIGF1
dG8gbGluZUlucHV0ID0gTGluZUlucHV0IHsgaW5pdGlhbExpbmVDb25zdHJhaW50cywgY3VycmVu
dElubGluZUl0ZW0sIGlubGluZUl0ZW1zIH07CiAKICAgICAgICAgYXV0byBsaW5lQ29udGVudCA9
IExpbmVMYXlvdXQoZm9ybWF0dGluZ0NvbnRleHQsIGxpbmVJbnB1dCkubGF5b3V0KCk7CiAKQEAg
LTM4MCwxMSArMzkwLDYgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6SW5saW5lTGF5
b3V0OjpzZXR1cERpc3BsYXlCb3hlcyhjb25zdCBMaW5lQ29udGVudCYKICAgICAgICAgZmxvYXRp
bmdDb250ZXh0LmFwcGVuZChmbG9hdEJveCk7CiAgICAgfQogCi0gICAgYXV0byYgaW5saW5lRGlz
cGxheVJ1bnMgPSBmb3JtYXR0aW5nU3RhdGUuaW5saW5lUnVucygpOwotICAgIGF1dG8gcHJldmlv
dXNMaW5lTGFzdFJ1bkluZGV4ID0gT3B0aW9uYWw8dW5zaWduZWQ+IHsgaW5saW5lRGlzcGxheVJ1
bnMuaXNFbXB0eSgpID8gT3B0aW9uYWw8dW5zaWduZWQ+KCkgOiBpbmxpbmVEaXNwbGF5UnVucy5z
aXplKCkgLSAxIH07Ci0gICAgLy8gOS40LjIgSW5saW5lIGZvcm1hdHRpbmcgY29udGV4dHMKLSAg
ICAvLyBBIGxpbmUgYm94IGlzIGFsd2F5cyB0YWxsIGVub3VnaCBmb3IgYWxsIG9mIHRoZSBib3hl
cyBpdCBjb250YWlucy4KLQogICAgIC8vIEFkZCBmaW5hbCBkaXNwbGF5IHJ1bnMgdG8gc3RhdGUu
CiAgICAgZm9yIChhdXRvJiBsaW5lUnVuIDogbGluZUNvbnRlbnQucnVuTGlzdCkgewogICAgICAg
ICAvLyBJbmxpbmUgbGV2ZWwgY29udGFpbmVycyAoPHNwYW4+KSBkb24ndCBnZW5lcmF0ZSBpbmxp
bmUgcnVucy4KQEAgLTM5Myw2ICszOTgsNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0
OjpJbmxpbmVMYXlvdXQ6OnNldHVwRGlzcGxheUJveGVzKGNvbnN0IExpbmVDb250ZW50JgogICAg
ICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lUnVuKGxpbmVSdW4tPmRpc3BsYXlSdW4oKSk7
CiAgICAgfQogCisgICAgLy8gQ29tcHV0ZSBib3ggZmluYWwgZ2VvbWV0cnkuCiAgICAgYXV0byBn
ZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5KCk7CiAgICAgYXV0byYgbGluZVJ1
bnMgPSBsaW5lQ29udGVudC5ydW5MaXN0OwogICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBp
bmRleCA8IGxpbmVSdW5zLnNpemUoKTsgKytpbmRleCkgewpAQCAtNDU2LDQxICs0NjIsNyBAQCB2
b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpJbmxpbmVMYXlvdXQ6OnNldHVwRGlzcGxheUJv
eGVzKGNvbnN0IExpbmVDb250ZW50JgogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIH0KLSAgICAvLyBGSVhNRSBsaW5lYm94IG5lZWRzIHRvIGJlIGFqdXN0ZWQg
YWZ0ZXIgY29udGVudCBhbGlnbm1lbnQuCiAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZExpbmVCb3go
bGluZUNvbnRlbnQubGluZUJveCk7Ci0gICAgYWxpZ25SdW5zKGZvcm1hdHRpbmdSb290KCkuc3R5
bGUoKS50ZXh0QWxpZ24oKSwgaW5saW5lRGlzcGxheVJ1bnMsIHByZXZpb3VzTGluZUxhc3RSdW5J
bmRleC52YWx1ZU9yKC0xKSArIDEsIHdpZHRoQ29uc3RyYWludCgpIC0gbGluZUNvbnRlbnQubGlu
ZUJveC5sb2dpY2FsV2lkdGgoKSk7Ci19Ci0KLXN0YXRpYyBPcHRpb25hbDxMYXlvdXRVbml0PiBo
b3Jpem9udGFsQWRqdXN0bWVudEZvckFsaWdubWVudChUZXh0QWxpZ25Nb2RlIGFsaWduLCBMYXlv
dXRVbml0IHJlbWFpbmluZ1dpZHRoKQotewotICAgIHN3aXRjaCAoYWxpZ24pIHsKLSAgICBjYXNl
IFRleHRBbGlnbk1vZGU6OkxlZnQ6Ci0gICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0
OgotICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6U3RhcnQ6Ci0gICAgICAgIHJldHVybiB7IH07Ci0g
ICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpSaWdodDoKLSAgICBjYXNlIFRleHRBbGlnbk1vZGU6Oldl
YktpdFJpZ2h0OgotICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6RW5kOgotICAgICAgICByZXR1cm4g
c3RkOjptYXgocmVtYWluaW5nV2lkdGgsIDBfbHUpOwotICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6
Q2VudGVyOgotICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0Q2VudGVyOgotICAgICAgICBy
ZXR1cm4gc3RkOjptYXgocmVtYWluaW5nV2lkdGggLyAyLCAwX2x1KTsKLSAgICBjYXNlIFRleHRB
bGlnbk1vZGU6Okp1c3RpZnk6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICBicmVhazsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIHsg
fTsKLX0KLQotdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6SW5saW5lTGF5b3V0OjphbGln
blJ1bnMoVGV4dEFsaWduTW9kZSB0ZXh0QWxpZ24sIElubGluZVJ1bnMmIGlubGluZURpc3BsYXlS
dW5zLCB1bnNpZ25lZCBmaXJzdFJ1bkluZGV4LCBMYXlvdXRVbml0IGF2YWlsYWJsZVdpZHRoKSBj
b25zdAotewotICAgIGF1dG8gYWRqdXN0bWVudCA9IGhvcml6b250YWxBZGp1c3RtZW50Rm9yQWxp
Z25tZW50KHRleHRBbGlnbiwgYXZhaWxhYmxlV2lkdGgpOwotICAgIGlmICghYWRqdXN0bWVudCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IGZpcnN0UnVuSW5k
ZXg7IGluZGV4IDwgaW5saW5lRGlzcGxheVJ1bnMuc2l6ZSgpOyArK2luZGV4KQotICAgICAgICBp
bmxpbmVEaXNwbGF5UnVuc1tpbmRleF0ubW92ZUhvcml6b250YWxseSgqYWRqdXN0bWVudCk7CiB9
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZUxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lTGluZS5jcHAKaW5kZXggNjZiNzMyZjJiMzc2NjQyMjgyY2UzZjNjMjRjZTM2MGNjODcw
ZGQyOS4uZTcxZmU1M2EyMTdkMjhmN2U4NDA2YzAwM2MzN2I4MjIxNWQ2Y2ZmNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5j
cHAKQEAgLTU3LDEzICs1NywxNCBAQCBib29sIExpbmU6OlJ1bjo6Y2FuQmVFeHRlbmRlZCgpIGNv
bnN0CiAgICAgcmV0dXJuICFkb3duY2FzdDxJbmxpbmVUZXh0SXRlbT4obV9pbmxpbmVJdGVtKS5p
c0NvbGxhcHNlZCgpICYmICFpc1Zpc3VhbGx5RW1wdHkoKTsKIH0KIAotTGluZTo6TGluZShjb25z
dCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQsIGNvbnN0
IEluaXRpYWxDb25zdHJhaW50cyYgaW5pdGlhbENvbnN0cmFpbnRzLCBTa2lwVmVydGljYWxBbGln
bWVudCBza2lwVmVydGljYWxBbGlnbWVudCkKK0xpbmU6OkxpbmUoY29uc3QgSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQmIGlubGluZUZvcm1hdHRpbmdDb250ZXh0LCBjb25zdCBJbml0aWFsQ29uc3Ry
YWludHMmIGluaXRpYWxDb25zdHJhaW50cywgT3B0aW9uYWw8VGV4dEFsaWduTW9kZT4gaG9yaXpv
bnRhbEFsaWdubWVudCwgU2tpcEFsaWdubWVudCBza2lwQWxpZ25tZW50KQogICAgIDogbV9pbmxp
bmVGb3JtYXR0aW5nQ29udGV4dChpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCkKICAgICAsIG1faW5p
dGlhbFN0cnV0KGluaXRpYWxDb25zdHJhaW50cy5oZWlnaHRBbmRCYXNlbGluZSA/IGluaXRpYWxD
b25zdHJhaW50cy5oZWlnaHRBbmRCYXNlbGluZS0+c3RydXQgOiBXVEY6Om51bGxvcHQpCiAgICAg
LCBtX2xpbmVMb2dpY2FsV2lkdGgoaW5pdGlhbENvbnN0cmFpbnRzLmF2YWlsYWJsZUxvZ2ljYWxX
aWR0aCkKLSAgICAsIG1fc2tpcFZlcnRpY2FsQWxpZ21lbnQoc2tpcFZlcnRpY2FsQWxpZ21lbnQg
PT0gU2tpcFZlcnRpY2FsQWxpZ21lbnQ6OlllcykKKyAgICAsIG1faG9yaXpvbnRhbEFsaWdubWVu
dChob3Jpem9udGFsQWxpZ25tZW50KQorICAgICwgbV9za2lwQWxpZ25tZW50KHNraXBBbGlnbm1l
bnQgPT0gU2tpcEFsaWdubWVudDo6WWVzKQogewotICAgIEFTU0VSVChtX3NraXBWZXJ0aWNhbEFs
aWdtZW50IHx8IGluaXRpYWxDb25zdHJhaW50cy5oZWlnaHRBbmRCYXNlbGluZSk7CisgICAgQVNT
RVJUKG1fc2tpcEFsaWdubWVudCB8fCBpbml0aWFsQ29uc3RyYWludHMuaGVpZ2h0QW5kQmFzZWxp
bmUpOwogICAgIGF1dG8gaW5pdGlhbExpbmVIZWlnaHQgPSBpbml0aWFsQ29uc3RyYWludHMuaGVp
Z2h0QW5kQmFzZWxpbmUgPyBpbml0aWFsQ29uc3RyYWludHMuaGVpZ2h0QW5kQmFzZWxpbmUtPmhl
aWdodCA6IExheW91dFVuaXQoKTsKICAgICBhdXRvIGluaXRpYWxCYXNlbGluZU9mZnNldCA9IGlu
aXRpYWxDb25zdHJhaW50cy5oZWlnaHRBbmRCYXNlbGluZSA/IGluaXRpYWxDb25zdHJhaW50cy5o
ZWlnaHRBbmRCYXNlbGluZS0+YmFzZWxpbmVPZmZzZXQgOiBMYXlvdXRVbml0KCk7CiAgICAgYXV0
byBsaW5lUmVjdCA9IERpc3BsYXk6OlJlY3QgeyBpbml0aWFsQ29uc3RyYWludHMubG9naWNhbFRv
cExlZnQsIHsgfSwgaW5pdGlhbExpbmVIZWlnaHQgfTsKQEAgLTk2LDcgKzk3LDcgQEAgYm9vbCBM
aW5lOjppc1Zpc3VhbGx5RW1wdHkoKSBjb25zdAogICAgICAgICAgICAgYXV0byYgYm94R2VvbWV0
cnkgPSBmb3JtYXR0aW5nQ29udGV4dC5nZW9tZXRyeUZvckJveChydW4tPmxheW91dEJveCgpKTsK
ICAgICAgICAgICAgIGlmICghYm94R2VvbWV0cnkud2lkdGgoKSkKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgIGlmIChtX3NraXBWZXJ0aWNhbEFsaWdtZW50IHx8IGJveEdl
b21ldHJ5LmhlaWdodCgpKQorICAgICAgICAgICAgaWYgKG1fc2tpcEFsaWdubWVudCB8fCBib3hH
ZW9tZXRyeS5oZWlnaHQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgfQpAQCAtMTA5LDYyICsxMTAsNyBAQCBib29sIExpbmU6
OmlzVmlzdWFsbHlFbXB0eSgpIGNvbnN0CiBMaW5lOjpSdW5MaXN0IExpbmU6OmNsb3NlKCkKIHsK
ICAgICByZW1vdmVUcmFpbGluZ1RyaW1tYWJsZUNvbnRlbnQoKTsKLSAgICBpZiAoIW1fc2tpcFZl
cnRpY2FsQWxpZ21lbnQpIHsKLSAgICAgICAgaWYgKGlzVmlzdWFsbHlFbXB0eSgpKSB7Ci0gICAg
ICAgICAgICBtX2xpbmVCb3guYmFzZWxpbmUoKS5yZXNldCgpOwotICAgICAgICAgICAgbV9saW5l
Qm94LnNldEJhc2VsaW5lT2Zmc2V0KHsgfSk7Ci0gICAgICAgICAgICBtX2xpbmVCb3guc2V0TG9n
aWNhbEhlaWdodCh7IH0pOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gUmVtb3ZlIGRlc2NlbnQg
d2hlbiBhbGwgY29udGVudCBpcyBiYXNlbGluZSBhbGlnbmVkIGJ1dCBub25lIG9mIHRoZW0gaGF2
ZSBkZXNjZW50LgotICAgICAgICBpZiAoZm9ybWF0dGluZ0NvbnRleHQoKS5xdWlya3MoKS5saW5l
RGVzY2VudE5lZWRzQ29sbGFwc2luZyhtX3J1bkxpc3QpKSB7Ci0gICAgICAgICAgICBtX2xpbmVC
b3guc2hyaW5rVmVydGljYWxseShtX2xpbmVCb3guYmFzZWxpbmUoKS5kZXNjZW50KCkpOwotICAg
ICAgICAgICAgbV9saW5lQm94LmJhc2VsaW5lKCkuc2V0RGVzY2VudCh7IH0pOwotICAgICAgICB9
Ci0KLSAgICAgICAgYXV0byYgbGF5b3V0U3RhdGUgPSB0aGlzLT5sYXlvdXRTdGF0ZSgpOwotICAg
ICAgICBhdXRvJiBmb3JtYXR0aW5nQ29udGV4dCA9IHRoaXMtPmZvcm1hdHRpbmdDb250ZXh0KCk7
Ci0gICAgICAgIGZvciAoYXV0byYgcnVuIDogbV9ydW5MaXN0KSB7Ci0gICAgICAgICAgICBMYXlv
dXRVbml0IGxvZ2ljYWxUb3A7Ci0gICAgICAgICAgICBhdXRvJiBsYXlvdXRCb3ggPSBydW4tPmxh
eW91dEJveCgpOwotICAgICAgICAgICAgYXV0byB2ZXJ0aWNhbEFsaWduID0gbGF5b3V0Qm94LnN0
eWxlKCkudmVydGljYWxBbGlnbigpOwotICAgICAgICAgICAgYXV0byBhc2NlbnQgPSBsYXlvdXRC
b3guc3R5bGUoKS5mb250TWV0cmljcygpLmFzY2VudCgpOwotCi0gICAgICAgICAgICBzd2l0Y2gg
KHZlcnRpY2FsQWxpZ24pIHsKLSAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6QmFzZWxp
bmU6Ci0gICAgICAgICAgICAgICAgaWYgKHJ1bi0+aXNMaW5lQnJlYWsoKSB8fCBydW4tPmlzVGV4
dCgpKQotICAgICAgICAgICAgICAgICAgICBsb2dpY2FsVG9wID0gYmFzZWxpbmVPZmZzZXQoKSAt
IGFzY2VudDsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChydW4tPmlzQ29udGFpbmVyU3RhcnQo
KSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdD
b250ZXh0Lmdlb21ldHJ5Rm9yQm94KGxheW91dEJveCk7Ci0gICAgICAgICAgICAgICAgICAgIGxv
Z2ljYWxUb3AgPSBiYXNlbGluZU9mZnNldCgpIC0gYXNjZW50IC0gYm94R2VvbWV0cnkuYm9yZGVy
VG9wKCkgLSBib3hHZW9tZXRyeS5wYWRkaW5nVG9wKCkudmFsdWVPcigwKTsKLSAgICAgICAgICAg
ICAgICB9IGVsc2UgaWYgKGxheW91dEJveC5pc0lubGluZUJsb2NrQm94KCkgJiYgbGF5b3V0Qm94
LmVzdGFibGlzaGVzSW5saW5lRm9ybWF0dGluZ0NvbnRleHQoKSkgewotICAgICAgICAgICAgICAg
ICAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUgPSBkb3duY2FzdDxJbmxpbmVGb3JtYXR0aW5nU3Rh
dGU+KGxheW91dFN0YXRlLmVzdGFibGlzaGVkRm9ybWF0dGluZ1N0YXRlKGRvd25jYXN0PENvbnRh
aW5lcj4obGF5b3V0Qm94KSkpOwotICAgICAgICAgICAgICAgICAgICAvLyBTcGVjIG1ha2VzIHVz
IGdlbmVyYXRlIGF0IGxlYXN0IG9uZSBsaW5lIC1ldmVuIGlmIGl0IGlzIGVtcHR5LgotICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQoIWZvcm1hdHRpbmdTdGF0ZS5saW5lQm94ZXMoKS5pc0VtcHR5
KCkpOwotICAgICAgICAgICAgICAgICAgICBhdXRvIGlubGluZUJsb2NrQmFzZWxpbmUgPSBmb3Jt
YXR0aW5nU3RhdGUubGluZUJveGVzKCkubGFzdCgpLmJhc2VsaW5lKCk7Ci0gICAgICAgICAgICAg
ICAgICAgIGxvZ2ljYWxUb3AgPSBiYXNlbGluZU9mZnNldCgpIC0gaW5saW5lQmxvY2tCYXNlbGlu
ZS5hc2NlbnQoKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAg
bG9naWNhbFRvcCA9IGJhc2VsaW5lT2Zmc2V0KCkgLSBydW4tPmxvZ2ljYWxSZWN0KCkuaGVpZ2h0
KCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxp
Z246OlRvcDoKLSAgICAgICAgICAgICAgICBsb2dpY2FsVG9wID0geyB9OwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpCb3R0b206Ci0gICAg
ICAgICAgICAgICAgbG9naWNhbFRvcCA9IGxvZ2ljYWxCb3R0b20oKSAtIHJ1bi0+bG9naWNhbFJl
Y3QoKS5oZWlnaHQoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICAgICAgQVNTRVJUX05PVF9JTVBMRU1FTlRFRF9ZRVQoKTsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJ1bi0+YWRqdXN0
TG9naWNhbFRvcChsb2dpY2FsVG9wKTsKLSAgICAgICAgICAgIC8vIENvbnZlcnQgcnVucyBmcm9t
IHJlbGF0aXZlIHRvIHRoZSBsaW5lIHRvcC9sZWZ0IHRvIHRoZSBmb3JtYXR0aW5nIHJvb3QncyBi
b3JkZXIgYm94IHRvcC9sZWZ0LgotICAgICAgICAgICAgcnVuLT5tb3ZlVmVydGljYWxseSh0aGlz
LT5sb2dpY2FsVG9wKCkpOwotICAgICAgICAgICAgcnVuLT5tb3ZlSG9yaXpvbnRhbGx5KHRoaXMt
PmxvZ2ljYWxMZWZ0KCkpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gTGV0J3Mgam9pbiB0
ZXh0IHJ1bnMgdG9nZXRoZXIgd2hlbiBwb3NzaWJsZS4KLSAgICAvLyBGSVhNRTogQ2hlY2sgaWYg
d2UgY2FuIGRvIGl0IGFzIHBhcnQgb2YgdGhlIGxvb3AgYWJvdmUuCisgICAgLy8gSm9pbiB0ZXh0
IHJ1bnMgdG9nZXRoZXIgd2hlbiBwb3NzaWJsZS4KICAgICB1bnNpZ25lZCBpbmRleCA9IDE7CiAg
ICAgd2hpbGUgKGluZGV4IDwgbV9ydW5MaXN0LnNpemUoKSkgewogICAgICAgICBhdXRvJiBwcmV2
aW91c1J1biA9IG1fcnVuTGlzdFtpbmRleCAtIDFdOwpAQCAtMTg0LDkgKzEzMCwxMDYgQEAgTGlu
ZTo6UnVuTGlzdCBMaW5lOjpjbG9zZSgpCiAgICAgICAgIHByZXZpb3VzUnVuLT5leHBhbmQoKmN1
cnJlbnRSdW4pOwogICAgICAgICBtX3J1bkxpc3QucmVtb3ZlKGluZGV4KTsKICAgICB9CisKKyAg
ICBpZiAoIW1fc2tpcEFsaWdubWVudCkgeworICAgICAgICBhbGlnbkNvbnRlbnRWZXJ0aWNhbGx5
KCk7CisgICAgICAgIGFsaWduQ29udGVudEhvcml6b250YWxseSgpOworICAgIH0KKwogICAgIHJl
dHVybiBXVEZNb3ZlKG1fcnVuTGlzdCk7CiB9CiAKK3ZvaWQgTGluZTo6YWxpZ25Db250ZW50VmVy
dGljYWxseSgpCit7CisgICAgQVNTRVJUKCFtX3NraXBBbGlnbm1lbnQpOworCisgICAgaWYgKGlz
VmlzdWFsbHlFbXB0eSgpKSB7CisgICAgICAgIG1fbGluZUJveC5iYXNlbGluZSgpLnJlc2V0KCk7
CisgICAgICAgIG1fbGluZUJveC5zZXRCYXNlbGluZU9mZnNldCh7IH0pOworICAgICAgICBtX2xp
bmVCb3guc2V0TG9naWNhbEhlaWdodCh7IH0pOworICAgIH0KKworICAgIC8vIFJlbW92ZSBkZXNj
ZW50IHdoZW4gYWxsIGNvbnRlbnQgaXMgYmFzZWxpbmUgYWxpZ25lZCBidXQgbm9uZSBvZiB0aGVt
IGhhdmUgZGVzY2VudC4KKyAgICBpZiAoZm9ybWF0dGluZ0NvbnRleHQoKS5xdWlya3MoKS5saW5l
RGVzY2VudE5lZWRzQ29sbGFwc2luZyhtX3J1bkxpc3QpKSB7CisgICAgICAgIG1fbGluZUJveC5z
aHJpbmtWZXJ0aWNhbGx5KG1fbGluZUJveC5iYXNlbGluZSgpLmRlc2NlbnQoKSk7CisgICAgICAg
IG1fbGluZUJveC5iYXNlbGluZSgpLnNldERlc2NlbnQoeyB9KTsKKyAgICB9CisKKyAgICBhdXRv
JiBsYXlvdXRTdGF0ZSA9IHRoaXMtPmxheW91dFN0YXRlKCk7CisgICAgYXV0byYgZm9ybWF0dGlu
Z0NvbnRleHQgPSB0aGlzLT5mb3JtYXR0aW5nQ29udGV4dCgpOworICAgIGZvciAoYXV0byYgcnVu
IDogbV9ydW5MaXN0KSB7CisgICAgICAgIExheW91dFVuaXQgbG9naWNhbFRvcDsKKyAgICAgICAg
YXV0byYgbGF5b3V0Qm94ID0gcnVuLT5sYXlvdXRCb3goKTsKKyAgICAgICAgYXV0byB2ZXJ0aWNh
bEFsaWduID0gbGF5b3V0Qm94LnN0eWxlKCkudmVydGljYWxBbGlnbigpOworICAgICAgICBhdXRv
IGFzY2VudCA9IGxheW91dEJveC5zdHlsZSgpLmZvbnRNZXRyaWNzKCkuYXNjZW50KCk7CisKKyAg
ICAgICAgc3dpdGNoICh2ZXJ0aWNhbEFsaWduKSB7CisgICAgICAgIGNhc2UgVmVydGljYWxBbGln
bjo6QmFzZWxpbmU6CisgICAgICAgICAgICBpZiAocnVuLT5pc0xpbmVCcmVhaygpIHx8IHJ1bi0+
aXNUZXh0KCkpCisgICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IGJhc2VsaW5lT2Zmc2V0KCkg
LSBhc2NlbnQ7CisgICAgICAgICAgICBlbHNlIGlmIChydW4tPmlzQ29udGFpbmVyU3RhcnQoKSkg
eworICAgICAgICAgICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQu
Z2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94KTsKKyAgICAgICAgICAgICAgICBsb2dpY2FsVG9wID0g
YmFzZWxpbmVPZmZzZXQoKSAtIGFzY2VudCAtIGJveEdlb21ldHJ5LmJvcmRlclRvcCgpIC0gYm94
R2VvbWV0cnkucGFkZGluZ1RvcCgpLnZhbHVlT3IoMCk7CisgICAgICAgICAgICB9IGVsc2UgaWYg
KGxheW91dEJveC5pc0lubGluZUJsb2NrQm94KCkgJiYgbGF5b3V0Qm94LmVzdGFibGlzaGVzSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQoKSkgeworICAgICAgICAgICAgICAgIGF1dG8mIGZvcm1hdHRp
bmdTdGF0ZSA9IGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4obGF5b3V0U3RhdGUuZXN0
YWJsaXNoZWRGb3JtYXR0aW5nU3RhdGUoZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpKSk7
CisgICAgICAgICAgICAgICAgLy8gU3BlYyBtYWtlcyB1cyBnZW5lcmF0ZSBhdCBsZWFzdCBvbmUg
bGluZSAtZXZlbiBpZiBpdCBpcyBlbXB0eS4KKyAgICAgICAgICAgICAgICBBU1NFUlQoIWZvcm1h
dHRpbmdTdGF0ZS5saW5lQm94ZXMoKS5pc0VtcHR5KCkpOworICAgICAgICAgICAgICAgIGF1dG8g
aW5saW5lQmxvY2tCYXNlbGluZSA9IGZvcm1hdHRpbmdTdGF0ZS5saW5lQm94ZXMoKS5sYXN0KCku
YmFzZWxpbmUoKTsKKyAgICAgICAgICAgICAgICBsb2dpY2FsVG9wID0gYmFzZWxpbmVPZmZzZXQo
KSAtIGlubGluZUJsb2NrQmFzZWxpbmUuYXNjZW50KCk7CisgICAgICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgICAgICBsb2dpY2FsVG9wID0gYmFzZWxpbmVPZmZzZXQoKSAtIHJ1bi0+bG9naWNh
bFJlY3QoKS5oZWlnaHQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFZlcnRp
Y2FsQWxpZ246OlRvcDoKKyAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSB7IH07CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpCb3R0b206CisgICAgICAgICAg
ICBsb2dpY2FsVG9wID0gbG9naWNhbEJvdHRvbSgpIC0gcnVuLT5sb2dpY2FsUmVjdCgpLmhlaWdo
dCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBB
U1NFUlRfTk9UX0lNUExFTUVOVEVEX1lFVCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICAgICAgcnVuLT5hZGp1c3RMb2dpY2FsVG9wKGxvZ2ljYWxUb3ApOworICAgICAgICAv
LyBDb252ZXJ0IHJ1bnMgZnJvbSByZWxhdGl2ZSB0byB0aGUgbGluZSB0b3AvbGVmdCB0byB0aGUg
Zm9ybWF0dGluZyByb290J3MgYm9yZGVyIGJveCB0b3AvbGVmdC4KKyAgICAgICAgcnVuLT5tb3Zl
VmVydGljYWxseSh0aGlzLT5sb2dpY2FsVG9wKCkpOworICAgICAgICBydW4tPm1vdmVIb3Jpem9u
dGFsbHkodGhpcy0+bG9naWNhbExlZnQoKSk7CisgICAgfQorfQorCit2b2lkIExpbmU6OmFsaWdu
Q29udGVudEhvcml6b250YWxseSgpCit7CisgICAgQVNTRVJUKCFtX3NraXBBbGlnbm1lbnQpOwor
CisgICAgYXV0byBhZGp1c3RtZW50Rm9yQWxpZ25tZW50ID0gWyZdKCkgLT4gT3B0aW9uYWw8TGF5
b3V0VW5pdD4geworICAgICAgICBzd2l0Y2ggKCptX2hvcml6b250YWxBbGlnbm1lbnQpIHsKKyAg
ICAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpMZWZ0OgorICAgICAgICBjYXNlIFRleHRBbGlnbk1v
ZGU6OldlYktpdExlZnQ6CisgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6U3RhcnQ6CisgICAg
ICAgICAgICByZXR1cm4geyB9OworICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OlJpZ2h0Ogor
ICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdFJpZ2h0OgorICAgICAgICBjYXNlIFRl
eHRBbGlnbk1vZGU6OkVuZDoKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1heChhdmFpbGFibGVX
aWR0aCgpLCAwX2x1KTsKKyAgICAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpDZW50ZXI6CisgICAg
ICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0Q2VudGVyOgorICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bWF4KGF2YWlsYWJsZVdpZHRoKCkgLyAyLCAwX2x1KTsKKyAgICAgICAgY2FzZSBUZXh0
QWxpZ25Nb2RlOjpKdXN0aWZ5OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9OworCisgICAgYXV0byBhZGp1c3RtZW50ID0g
YWRqdXN0bWVudEZvckFsaWdubWVudCgpOworICAgIGlmICghYWRqdXN0bWVudCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgZm9yIChhdXRvJiBydW4gOiBtX3J1bkxpc3QpCisgICAgICAgIHJ1bi0+
bW92ZUhvcml6b250YWxseSgqYWRqdXN0bWVudCk7CisgICAgLy8gRklYTUU6IEZpbmQgb3V0IGlm
IG1fbGluZUJveCBuZWVkcyBhZGp1c3RtbmVudCBhcyB3ZWxsLgorfQorCiB2b2lkIExpbmU6OnJl
bW92ZVRyYWlsaW5nVHJpbW1hYmxlQ29udGVudCgpCiB7CiAgICAgLy8gQ29sbGFwc2UgdHJpbW1h
YmxlIHRyYWlsaW5nIGNvbnRlbnQKQEAgLTI1MSw3ICsyOTQsNyBAQCB2b2lkIExpbmU6OmFwcGVu
ZElubGluZUNvbnRhaW5lclN0YXJ0KGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIExheW91
dFVuaXQgbAogICAgIGxvZ2ljYWxSZWN0LnNldExlZnQoY29udGVudExvZ2ljYWxXaWR0aCgpKTsK
ICAgICBsb2dpY2FsUmVjdC5zZXRXaWR0aChsb2dpY2FsV2lkdGgpOwogCi0gICAgaWYgKCFtX3Nr
aXBWZXJ0aWNhbEFsaWdtZW50KSB7CisgICAgaWYgKCFtX3NraXBBbGlnbm1lbnQpIHsKICAgICAg
ICAgYXV0byBsb2dpY2FsSGVpZ2h0ID0gaW5saW5lSXRlbUNvbnRlbnRIZWlnaHQoaW5saW5lSXRl
bSk7CiAgICAgICAgIGFkanVzdEJhc2VsaW5lQW5kTGluZUhlaWdodChpbmxpbmVJdGVtLCBsb2dp
Y2FsSGVpZ2h0KTsKICAgICAgICAgbG9naWNhbFJlY3Quc2V0SGVpZ2h0KGxvZ2ljYWxIZWlnaHQp
OwpAQCAtMjk4LDcgKzM0MSw3IEBAIHZvaWQgTGluZTo6YXBwZW5kVGV4dENvbnRlbnQoY29uc3Qg
SW5saW5lVGV4dEl0ZW0mIGlubGluZUl0ZW0sIExheW91dFVuaXQgbG9naWNhCiAgICAgYXV0byBs
b2dpY2FsUmVjdCA9IERpc3BsYXk6OlJlY3QgeyB9OwogICAgIGxvZ2ljYWxSZWN0LnNldExlZnQo
Y29udGVudExvZ2ljYWxXaWR0aCgpKTsKICAgICBsb2dpY2FsUmVjdC5zZXRXaWR0aChsb2dpY2Fs
V2lkdGgpOwotICAgIGlmICghbV9za2lwVmVydGljYWxBbGlnbWVudCkgeworICAgIGlmICghbV9z
a2lwQWxpZ25tZW50KSB7CiAgICAgICAgIGF1dG8gcnVuSGVpZ2h0ID0gaW5saW5lSXRlbUNvbnRl
bnRIZWlnaHQoaW5saW5lSXRlbSk7CiAgICAgICAgIGxvZ2ljYWxSZWN0LnNldEhlaWdodChydW5I
ZWlnaHQpOwogICAgICAgICBhZGp1c3RCYXNlbGluZUFuZExpbmVIZWlnaHQoaW5saW5lSXRlbSwg
cnVuSGVpZ2h0KTsKQEAgLTMyNSw3ICszNjgsNyBAQCB2b2lkIExpbmU6OmFwcGVuZE5vblJlcGxh
Y2VkSW5saW5lQm94KGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIExheW91dFVuaXQgbAog
CiAgICAgbG9naWNhbFJlY3Quc2V0TGVmdChjb250ZW50TG9naWNhbFdpZHRoKCkgKyBob3Jpem9u
dGFsTWFyZ2luLnN0YXJ0KTsKICAgICBsb2dpY2FsUmVjdC5zZXRXaWR0aChsb2dpY2FsV2lkdGgp
OwotICAgIGlmICghbV9za2lwVmVydGljYWxBbGlnbWVudCkgeworICAgIGlmICghbV9za2lwQWxp
Z25tZW50KSB7CiAgICAgICAgIGFkanVzdEJhc2VsaW5lQW5kTGluZUhlaWdodChpbmxpbmVJdGVt
LCBib3hHZW9tZXRyeS5tYXJnaW5Cb3hIZWlnaHQoKSk7CiAgICAgICAgIGxvZ2ljYWxSZWN0LnNl
dEhlaWdodChpbmxpbmVJdGVtQ29udGVudEhlaWdodChpbmxpbmVJdGVtKSk7CiAgICAgfQpAQCAt
MzQ2LDcgKzM4OSw3IEBAIHZvaWQgTGluZTo6YXBwZW5kSGFyZExpbmVCcmVhayhjb25zdCBJbmxp
bmVJdGVtJiBpbmxpbmVJdGVtKQogICAgIGF1dG8gbG9naWNhbFJlY3QgPSBEaXNwbGF5OjpSZWN0
IHsgfTsKICAgICBsb2dpY2FsUmVjdC5zZXRMZWZ0KGNvbnRlbnRMb2dpY2FsV2lkdGgoKSk7CiAg
ICAgbG9naWNhbFJlY3Quc2V0V2lkdGgoeyB9KTsKLSAgICBpZiAoIW1fc2tpcFZlcnRpY2FsQWxp
Z21lbnQpIHsKKyAgICBpZiAoIW1fc2tpcEFsaWdubWVudCkgewogICAgICAgICBhZGp1c3RCYXNl
bGluZUFuZExpbmVIZWlnaHQoaW5saW5lSXRlbSwgeyB9KTsKICAgICAgICAgbG9naWNhbFJlY3Qu
c2V0SGVpZ2h0KGxvZ2ljYWxIZWlnaHQoKSk7CiAgICAgfQpAQCAtNDI2LDcgKzQ2OSw3IEBAIHZv
aWQgTGluZTo6YWRqdXN0QmFzZWxpbmVBbmRMaW5lSGVpZ2h0KGNvbnN0IElubGluZUl0ZW0mIGlu
bGluZUl0ZW0sIExheW91dFVuaXQKIAogTGF5b3V0VW5pdCBMaW5lOjppbmxpbmVJdGVtQ29udGVu
dEhlaWdodChjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtKSBjb25zdAogewotICAgIEFTU0VS
VCghbV9za2lwVmVydGljYWxBbGlnbWVudCk7CisgICAgQVNTRVJUKCFtX3NraXBBbGlnbm1lbnQp
OwogICAgIGF1dG8mIGZvbnRNZXRyaWNzID0gaW5saW5lSXRlbS5zdHlsZSgpLmZvbnRNZXRyaWNz
KCk7CiAgICAgaWYgKGlubGluZUl0ZW0uaXNMaW5lQnJlYWsoKSB8fCBpczxJbmxpbmVUZXh0SXRl
bT4oaW5saW5lSXRlbSkpCiAgICAgICAgIHJldHVybiBmb250TWV0cmljcy5oZWlnaHQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxp
bmUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUu
aAppbmRleCA2MzkxYTY3NzJlMGQxMDE0ZDExYzM3N2ZhNjcwOTM0YmI0ODM2NzdhLi5hNmYwZGQ3
YjU3MjhmMTU2ZjQwMzk5NTFiMzI3NTg5ZDFkZTNjYjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5oCkBAIC01MSw4ICs1MSw4
IEBAIHB1YmxpYzoKICAgICAgICAgfTsKICAgICAgICAgT3B0aW9uYWw8SGVpZ2h0QW5kQmFzZWxp
bmU+IGhlaWdodEFuZEJhc2VsaW5lOwogICAgIH07Ci0gICAgZW51bSBjbGFzcyBTa2lwVmVydGlj
YWxBbGlnbWVudCB7IE5vLCBZZXMgfTsKLSAgICBMaW5lKGNvbnN0IElubGluZUZvcm1hdHRpbmdD
b250ZXh0JiwgY29uc3QgSW5pdGlhbENvbnN0cmFpbnRzJiwgU2tpcFZlcnRpY2FsQWxpZ21lbnQp
OworICAgIGVudW0gY2xhc3MgU2tpcEFsaWdubWVudCB7IE5vLCBZZXMgfTsKKyAgICBMaW5lKGNv
bnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiwgY29uc3QgSW5pdGlhbENvbnN0cmFpbnRzJiwg
T3B0aW9uYWw8VGV4dEFsaWduTW9kZT4sIFNraXBBbGlnbm1lbnQpOwogCiAgICAgdm9pZCBhcHBl
bmQoY29uc3QgSW5saW5lSXRlbSYsIExheW91dFVuaXQgbG9naWNhbFdpZHRoKTsKICAgICBib29s
IGhhc0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiAhaXNWaXN1YWxseUVtcHR5KCk7IH0KQEAgLTEy
NSw2ICsxMjUsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgYXBwZW5kSGFyZExpbmVCcmVhayhjb25z
dCBJbmxpbmVJdGVtJik7CiAKICAgICB2b2lkIHJlbW92ZVRyYWlsaW5nVHJpbW1hYmxlQ29udGVu
dCgpOworICAgIHZvaWQgYWxpZ25Db250ZW50SG9yaXpvbnRhbGx5KCk7CisgICAgdm9pZCBhbGln
bkNvbnRlbnRWZXJ0aWNhbGx5KCk7CiAKICAgICB2b2lkIGFkanVzdEJhc2VsaW5lQW5kTGluZUhl
aWdodChjb25zdCBJbmxpbmVJdGVtJiwgTGF5b3V0VW5pdCBydW5IZWlnaHQpOwogICAgIExheW91
dFVuaXQgaW5saW5lSXRlbUNvbnRlbnRIZWlnaHQoY29uc3QgSW5saW5lSXRlbSYpIGNvbnN0OwpA
QCAtMTM5LDcgKzE0MSw4IEBAIHByaXZhdGU6CiAKICAgICBPcHRpb25hbDxMaW5lQm94OjpCYXNl
bGluZT4gbV9pbml0aWFsU3RydXQ7CiAgICAgTGF5b3V0VW5pdCBtX2xpbmVMb2dpY2FsV2lkdGg7
Ci0gICAgYm9vbCBtX3NraXBWZXJ0aWNhbEFsaWdtZW50IHsgZmFsc2UgfTsKKyAgICBPcHRpb25h
bDxUZXh0QWxpZ25Nb2RlPiBtX2hvcml6b250YWxBbGlnbm1lbnQ7CisgICAgYm9vbCBtX3NraXBB
bGlnbm1lbnQgeyBmYWxzZSB9OwogICAgIExpbmVCb3ggbV9saW5lQm94OwogfTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>