<?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>206507</bug_id>
          
          <creation_ts>2020-01-20 11:49:19 -0800</creation_ts>
          <short_desc>[LFC][IFC] InlineFormattingContext::lineLayout should take a InlineItem range</short_desc>
          <delta_ts>2020-01-20 15:32:57 -0800</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>1608811</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-01-20 11:49:19 -0800</bug_when>
    <thetext>instead of going from 0 to InlineItemList.size()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608812</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-20 11:49:55 -0800</bug_when>
    <thetext>&lt;rdar://problem/58742468&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608822</commentid>
    <comment_count>2</comment_count>
      <attachid>388249</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-01-20 12:18:46 -0800</bug_when>
    <thetext>Created attachment 388249
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608823</commentid>
    <comment_count>3</comment_count>
      <attachid>388249</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-01-20 12:20:39 -0800</bug_when>
    <thetext>Comment on attachment 388249
Patch

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

&gt; Source/WebCore/layout/inlineformatting/LineLayoutContext.h:54
&gt; +        bool isEmpty() const { return start &gt;= end; }

Why would start &gt; end?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608830</commentid>
    <comment_count>4</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-01-20 12:37:35 -0800</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #3)
&gt; Comment on attachment 388249 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=388249&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/layout/inlineformatting/LineLayoutContext.h:54
&gt; &gt; +        bool isEmpty() const { return start &gt;= end; }
&gt; 
&gt; Why would start &gt; end?
indeed why would.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608839</commentid>
    <comment_count>5</comment_count>
      <attachid>388251</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-01-20 12:55:59 -0800</bug_when>
    <thetext>Created attachment 388251
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608873</commentid>
    <comment_count>6</comment_count>
      <attachid>388251</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-20 15:32:56 -0800</bug_when>
    <thetext>Comment on attachment 388251
Patch

Clearing flags on attachment: 388251

Committed r254837: &lt;https://trac.webkit.org/changeset/254837&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608874</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-20 15:32:57 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388249</attachid>
            <date>2020-01-20 12:18:46 -0800</date>
            <delta_ts>2020-01-20 12:55:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206507-20200120121845.patch</filename>
            <type>text/plain</type>
            <size>20529</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0ODA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGYyZDU1MGMyZGNlMTI3
NGVlNmI5ZjI4M2VhZThiMDIwZTY0ZGJlMS4uMGRjOTBkZDUxYzFjNmZjY2FhY2I5Njk5OGU0YTk1
ZDM4ZjhlMzVlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTAxLTIwICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6bGluZUxheW91dCBzaG91bGQgdGFrZSBhIElubGluZUl0ZW0gcmFu
Z2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjUw
NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTg3NDI0Njg+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3Ig
YmVpbmcgYWJsZSB0byBydW4gaW5saW5lIGxheW91dCBvbiBwYXJ0aWFsIElGQyBjb250ZW50Lgor
CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4
dDo6bGF5b3V0SW5GbG93Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGlu
ZUZvcm1hdHRpbmdDb250ZXh0OjpsaW5lTGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVkSW50cmluc2ljV2lkdGhGb3JDb25z
dHJhaW50IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVG
b3JtYXR0aW5nQ29udGV4dC5oOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0xp
bmVMYXlvdXRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6bmV4dFdyYXBP
cHBvcnR1bml0eSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVMYXlvdXRDb250ZXh0
OjpsYXlvdXRMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUxheW91dENvbnRl
eHQ6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUxheW91dENvbnRleHQ6
Om5leHRDb250ZW50Rm9yTGluZSk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
TGluZUxheW91dENvbnRleHQuaDoKKwogMjAyMC0wMS0xOSAgQW50dGkgS29pdmlzdG8gIDxhbnR0
aUBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ10gRGV2aXJ0dWFsaXplIEZvcm1hdHRpbmdTdGF0
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IDczMzM5MzhjZjdhYzcz
NmVkNzA4YjFlNjcyOWU0ZWRhOTE2YmExOGYuLmNiNjU2MzdlYjIyYjAyMzAwYTgyNmRhMjFiNDRl
ZjE2ZTYxZjhmN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTg1
LDIyICs4NSwyMiBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRJbkZsb3dD
b250ZW50KEludmFsaWRhdGlvblN0YXRlJiBpbnZhbGlkYXRpbwogICAgIH0KIAogICAgIGNvbGxl
Y3RJbmxpbmVDb250ZW50SWZOZWVkZWQoKTsKLSAgICBsaW5lTGF5b3V0KGhvcml6b250YWxDb25z
dHJhaW50cywgdmVydGljYWxDb25zdHJhaW50cyk7CisKKyAgICBhdXRvJiBpbmxpbmVJdGVtcyA9
IGZvcm1hdHRpbmdTdGF0ZSgpLmlubGluZUl0ZW1zKCk7CisgICAgbGluZUxheW91dChpbmxpbmVJ
dGVtcywgeyAwLCBpbmxpbmVJdGVtcy5zaXplKCkgfSwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCB2
ZXJ0aWNhbENvbnN0cmFpbnRzKTsKICAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRl
eHRMYXlvdXQsIHN0cmVhbSA8PCAiW0VuZF0gLT4gaW5saW5lIGZvcm1hdHRpbmcgY29udGV4dCAt
PiBmb3JtYXR0aW5nIHJvb3QoIiA8PCAmcm9vdCgpIDw8ICIpIik7CiB9CiAKLXZvaWQgSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQoY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRz
JiBob3Jpem9udGFsQ29uc3RyYWludHMsIGNvbnN0IFZlcnRpY2FsQ29uc3RyYWludHMmIHZlcnRp
Y2FsQ29uc3RyYWludHMpCit2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsaW5lTGF5b3V0
KElubGluZUl0ZW1zJiBpbmxpbmVJdGVtcywgTGluZUxheW91dENvbnRleHQ6OklubGluZUl0ZW1S
YW5nZSBsYXlvdXRSYW5nZSwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3Jpem9udGFs
Q29uc3RyYWludHMsIGNvbnN0IFZlcnRpY2FsQ29uc3RyYWludHMmIHZlcnRpY2FsQ29uc3RyYWlu
dHMpCiB7Ci0gICAgYXV0byYgaW5saW5lSXRlbXMgPSBmb3JtYXR0aW5nU3RhdGUoKS5pbmxpbmVJ
dGVtcygpOwogICAgIGF1dG8gbGluZUxvZ2ljYWxUb3AgPSB2ZXJ0aWNhbENvbnN0cmFpbnRzLmxv
Z2ljYWxUb3A7Ci0gICAgdW5zaWduZWQgbGVhZGluZ0lubGluZUl0ZW1JbmRleCA9IDA7CiAgICAg
T3B0aW9uYWw8dW5zaWduZWQ+IHBhcnRpYWxMZWFkaW5nQ29udGVudExlbmd0aDsKICAgICBhdXRv
IGxpbmVCdWlsZGVyID0gTGluZUJ1aWxkZXIgeyAqdGhpcywgcm9vdCgpLnN0eWxlKCkudGV4dEFs
aWduKCksIExpbmVCdWlsZGVyOjpJbnRyaW5zaWNTaXppbmc6Ok5vIH07CiAgICAgYXV0byBsaW5l
TGF5b3V0Q29udGV4dCA9IExpbmVMYXlvdXRDb250ZXh0IHsgKnRoaXMsIHJvb3QoKSwgaW5saW5l
SXRlbXMgfTsKIAotICAgIHdoaWxlIChsZWFkaW5nSW5saW5lSXRlbUluZGV4IDwgaW5saW5lSXRl
bXMuc2l6ZSgpKSB7CisgICAgd2hpbGUgKCFsYXlvdXRSYW5nZS5pc0VtcHR5KCkpIHsKICAgICAg
ICAgbGluZUJ1aWxkZXIuaW5pdGlhbGl6ZShjb25zdHJhaW50c0ZvckxpbmUoaG9yaXpvbnRhbENv
bnN0cmFpbnRzLCBsaW5lTG9naWNhbFRvcCkpOwotICAgICAgICBhdXRvIGxpbmVDb250ZW50ID0g
bGluZUxheW91dENvbnRleHQubGF5b3V0TGluZShsaW5lQnVpbGRlciwgbGVhZGluZ0lubGluZUl0
ZW1JbmRleCwgcGFydGlhbExlYWRpbmdDb250ZW50TGVuZ3RoKTsKKyAgICAgICAgYXV0byBsaW5l
Q29udGVudCA9IGxpbmVMYXlvdXRDb250ZXh0LmxheW91dExpbmUobGluZUJ1aWxkZXIsIGxheW91
dFJhbmdlLCBwYXJ0aWFsTGVhZGluZ0NvbnRlbnRMZW5ndGgpOwogICAgICAgICBzZXREaXNwbGF5
Qm94ZXNGb3JMaW5lKGxpbmVDb250ZW50LCBob3Jpem9udGFsQ29uc3RyYWludHMpOwogCiAgICAg
ICAgIHBhcnRpYWxMZWFkaW5nQ29udGVudExlbmd0aCA9IHsgfTsKQEAgLTEwOCwxMiArMTA4LDEy
IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQoY29uc3QgSG9yaXpv
bnRhbENvbnN0cmFpbnRzJiBob3Jpem9udGFsCiAgICAgICAgICAgICBsaW5lTG9naWNhbFRvcCA9
IGxpbmVDb250ZW50LmxpbmVCb3gubG9naWNhbEJvdHRvbSgpOwogICAgICAgICAgICAgLy8gV2hl
biB0aGUgdHJhaWxpbmcgY29udGVudCBpcyBwYXJ0aWFsLCB3ZSBuZWVkIHRvIHJldXNlIHRoZSBs
YXN0IElubGluSXRlbS4KICAgICAgICAgICAgIGlmIChsaW5lQ29udGVudC5wYXJ0aWFsQ29udGVu
dCkgewotICAgICAgICAgICAgICAgIGxlYWRpbmdJbmxpbmVJdGVtSW5kZXggPSAqbGluZUNvbnRl
bnQudHJhaWxpbmdJbmxpbmVJdGVtSW5kZXg7CisgICAgICAgICAgICAgICAgbGF5b3V0UmFuZ2Uu
c3RhcnQgPSAqbGluZUNvbnRlbnQudHJhaWxpbmdJbmxpbmVJdGVtSW5kZXg7CiAgICAgICAgICAg
ICAgICAgLy8gVHVybiBwcmV2aW91cyBsaW5lJ3Mgb3ZlcmZsb3cgY29udGVudCBsZW5ndGggaW50
byB0aGUgbmV4dCBsaW5lJ3MgbGVhZGluZyBjb250ZW50IHBhcnRpYWwgbGVuZ3RoLgogICAgICAg
ICAgICAgICAgIC8vICJzcDwtPmxpdGNvbnRlbnQiIC0+IG92ZXJmbG93IGxlbmd0aDogMTAgLT4g
bGVhZGluZyBwYXJ0aWFsIGNvbnRlbnQgbGVuZ3RoOiAxMC4gCiAgICAgICAgICAgICAgICAgcGFy
dGlhbExlYWRpbmdDb250ZW50TGVuZ3RoID0gbGluZUNvbnRlbnQucGFydGlhbENvbnRlbnQtPm92
ZXJmbG93Q29udGVudExlbmd0aDsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAg
IGxlYWRpbmdJbmxpbmVJdGVtSW5kZXggPSAqbGluZUNvbnRlbnQudHJhaWxpbmdJbmxpbmVJdGVt
SW5kZXggKyAxOworICAgICAgICAgICAgICAgIGxheW91dFJhbmdlLnN0YXJ0ID0gKmxpbmVDb250
ZW50LnRyYWlsaW5nSW5saW5lSXRlbUluZGV4ICsgMTsKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICB9CiAgICAgICAgIC8vIEZsb2F0cyBwcmV2ZW50ZWQgdXMgcGxhY2luZyBhbnkgY29u
dGVudCBvbiB0aGUgbGluZS4KQEAgLTIzMywxNiArMjMzLDE2IEBAIEZvcm1hdHRpbmdDb250ZXh0
OjpJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21w
dXRlZEluCiBJbmxpbmVMYXlvdXRVbml0IElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRl
ZEludHJpbnNpY1dpZHRoRm9yQ29uc3RyYWludChjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMm
IGhvcml6b250YWxDb25zdHJhaW50cykgY29uc3QKIHsKICAgICBhdXRvJiBpbmxpbmVJdGVtcyA9
IGZvcm1hdHRpbmdTdGF0ZSgpLmlubGluZUl0ZW1zKCk7Ci0gICAgSW5saW5lTGF5b3V0VW5pdCBt
YXhpbXVtTGluZVdpZHRoID0gMDsKLSAgICB1bnNpZ25lZCBsZWFkaW5nSW5saW5lSXRlbUluZGV4
ID0gMDsKKyAgICBhdXRvIG1heGltdW1MaW5lV2lkdGggPSBJbmxpbmVMYXlvdXRVbml0IHsgfTsK
ICAgICBhdXRvIGxpbmVCdWlsZGVyID0gTGluZUJ1aWxkZXIgeyAqdGhpcywgcm9vdCgpLnN0eWxl
KCkudGV4dEFsaWduKCksIExpbmVCdWlsZGVyOjpJbnRyaW5zaWNTaXppbmc6OlllcyB9OwogICAg
IGF1dG8gbGluZUxheW91dENvbnRleHQgPSBMaW5lTGF5b3V0Q29udGV4dCB7ICp0aGlzLCByb290
KCksIGlubGluZUl0ZW1zIH07Ci0gICAgd2hpbGUgKGxlYWRpbmdJbmxpbmVJdGVtSW5kZXggPCBp
bmxpbmVJdGVtcy5zaXplKCkpIHsKKyAgICBhdXRvIGxheW91dFJhbmdlID0gTGluZUxheW91dENv
bnRleHQ6OklubGluZUl0ZW1SYW5nZSB7IDAgLCBpbmxpbmVJdGVtcy5zaXplKCkgfTsKKyAgICB3
aGlsZSAoIWxheW91dFJhbmdlLmlzRW1wdHkoKSkgewogICAgICAgICAvLyBPbmx5IHRoZSBob3Jp
enRvbmFsIGF2YWlsYWJsZSB3aWR0aCBpcyBjb25zdHJhaW5lZCB3aGVuIGNvbXB1dGluZyBpbnRy
aW5zaWMgd2lkdGguCiAgICAgICAgIGxpbmVCdWlsZGVyLmluaXRpYWxpemUoTGluZUJ1aWxkZXI6
OkNvbnN0cmFpbnRzIHsgeyB9LCBob3Jpem9udGFsQ29uc3RyYWludHMubG9naWNhbFdpZHRoLCBm
YWxzZSwgeyB9IH0pOwotICAgICAgICBhdXRvIGxpbmVDb250ZW50ID0gbGluZUxheW91dENvbnRl
eHQubGF5b3V0TGluZShsaW5lQnVpbGRlciwgbGVhZGluZ0lubGluZUl0ZW1JbmRleCwgeyB9KTsK
KyAgICAgICAgYXV0byBsaW5lQ29udGVudCA9IGxpbmVMYXlvdXRDb250ZXh0LmxheW91dExpbmUo
bGluZUJ1aWxkZXIsIGxheW91dFJhbmdlICwgeyB9KTsKIAotICAgICAgICBsZWFkaW5nSW5saW5l
SXRlbUluZGV4ID0gKmxpbmVDb250ZW50LnRyYWlsaW5nSW5saW5lSXRlbUluZGV4ICsgMTsKKyAg
ICAgICAgbGF5b3V0UmFuZ2Uuc3RhcnQgPSAqbGluZUNvbnRlbnQudHJhaWxpbmdJbmxpbmVJdGVt
SW5kZXggKyAxOwogICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGZsb2F0c1dpZHRoID0gMDsKICAg
ICAgICAgZm9yIChhdXRvJiBmbG9hdEl0ZW0gOiBsaW5lQ29udGVudC5mbG9hdHMpCiAgICAgICAg
ICAgICBmbG9hdHNXaWR0aCArPSBnZW9tZXRyeUZvckJveChmbG9hdEl0ZW0tPmxheW91dEJveCgp
KS5tYXJnaW5Cb3hXaWR0aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXgg
ZDI3ZTQ3Zjg5NjMyMzk0Y2YyNzRmNDAxNDBmMTY5Y2M2OWU1MDY5MS4uYWFmNjg1YWMwMTBlZmQy
ZDM3ZWRlZjU0NDQ0MWYwZDg4ZDAxMjlmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4
dC5oCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgfTsKICAgICBJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dDo6R2VvbWV0cnkgZ2VvbWV0cnkoKSBjb25zdCB7IHJldHVybiBHZW9tZXRyeSgq
dGhpcyk7IH0KIAotICAgIHZvaWQgbGluZUxheW91dChjb25zdCBIb3Jpem9udGFsQ29uc3RyYWlu
dHMmLCBjb25zdCBWZXJ0aWNhbENvbnN0cmFpbnRzJik7CisgICAgdm9pZCBsaW5lTGF5b3V0KElu
bGluZUl0ZW1zJiwgTGluZUxheW91dENvbnRleHQ6OklubGluZUl0ZW1SYW5nZSwgY29uc3QgSG9y
aXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgVmVydGljYWxDb25zdHJhaW50cyYpOwogICAgIHZv
aWQgbGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRSb290KGNvbnN0IEJveCYsIEludmFsaWRhdGlvblN0
YXRlJiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgVmVydGljYWxDb25zdHJh
aW50cyYpOwogICAgIHZvaWQgY29tcHV0ZUhvcml6b250YWxBbmRWZXJ0aWNhbEdlb21ldHJ5KGNv
bnN0IEJveCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9MaW5lTGF5b3V0Q29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9MaW5lTGF5b3V0Q29u
dGV4dC5jcHAKaW5kZXggZjVjNzkxNWQ0MTMwZWVlZDFhYTU3Y2ZkZjUwYjljNGZmNDQ4NzhiNy4u
Zjk2ZDIyYzI3NzdiMjczOTRlZDYyMjgzYmQ4YWI4YThjYjVhZDA1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvTGluZUxheW91dENvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0xpbmVMYXlvdXRD
b250ZXh0LmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0F0U29m
dFdyYXBPcHBvcnR1bml0eShjb25zdCBJbmxpbmVJdGVtJiBjdXJyZW50LCBjb25zdCBJbmxpCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBpbmxpbmUgc2l6ZV90IG5leHRXcmFwT3Bwb3J0
dW5pdHkoY29uc3QgSW5saW5lSXRlbXMmIGlubGluZUNvbnRlbnQsIHVuc2lnbmVkIHN0YXJ0SW5k
ZXgpCitzdGF0aWMgaW5saW5lIHNpemVfdCBuZXh0V3JhcE9wcG9ydHVuaXR5KGNvbnN0IElubGlu
ZUl0ZW1zJiBpbmxpbmVDb250ZW50LCBzaXplX3Qgc3RhcnRJbmRleCwgTGluZUxheW91dENvbnRl
eHQ6OklubGluZUl0ZW1SYW5nZSBsYXlvdXRSYW5nZSkKIHsKICAgICAvLyAxLiBGaW5kIHRoZSBz
dGFydCBjYW5kaWRhdGUgYnkgc2tpcHBpbmcgbGVhZGluZyBub24tY29udGVudCBpdGVtcyBlLmcg
PHNwYW4+PHNwYW4+c3RhcnQgOiBza2lwICI8c3Bhbj48c3Bhbj4iCiAgICAgLy8gMi4gRmluZCB0
aGUgZW5kIGNhbmRpZGF0ZSBieSBza2lwcGluZyBub24tY29udGVudCBpdGVtcyBpbmJldHdlZW4g
ZS5nLiA8c3Bhbj48c3Bhbj5zdGFydDwvc3Bhbj5lbmQ6IHNraXAgIjwvc3Bhbj4iCkBAIC0xMTUs
MTIgKzExNSwxMSBAQCBzdGF0aWMgaW5saW5lIHNpemVfdCBuZXh0V3JhcE9wcG9ydHVuaXR5KGNv
bnN0IElubGluZUl0ZW1zJiBpbmxpbmVDb250ZW50LCB1bnNpZwogICAgIC8vIFtleC1dW2NvbnRh
aW5lciBzdGFydF1bY29udGFpbmVyIGVuZF1bZmxvYXRdW2FtcGxlXSAoZXgtPHNwYW4+PC9zcGFu
PjxkaXYgc3R5bGU9ImZsb2F0OmxlZnQiPjwvZGl2PmFtcGxlKSA6IHdyYXAgaW5kZXggaXMgYXQg
W2V4LV0uCiAgICAgLy8gW2V4XVtjb250YWluZXIgc3RhcnRdW2FtcC1dW2NvbnRhaW5lciBzdGFy
dF1bbGVdIChleDxzcGFuPmFtcC08c3Bhbj5hbXBsZSkgOiB3cmFwIGluZGV4IGlzIGF0IFthbXAt
XS4KICAgICAvLyBbZXgtXVtjb250YWluZXIgc3RhcnRdW2xpbmUgYnJlYWtdW2FtcGxlXSAoZXgt
PHNwYW4+PGJyPmFtcGxlKSA6IHdyYXAgaW5kZXggaXMgYWZ0ZXIgW2JyXS4KLSAgICB1bnNpZ25l
ZCBpbmxpbmVJdGVtQ291bnQgPSBpbmxpbmVDb250ZW50LnNpemUoKTsKICAgICBhdXRvIGlzQXRM
aW5lQnJlYWsgPSBmYWxzZTsKIAogICAgIGF1dG8gaW5saW5lSXRlbUluZGV4V2l0aENvbnRlbnQg
PSBbJl0gKGF1dG8gaW5kZXgpIHsKICAgICAgICAgLy8gQnJlYWsgYXQgdGhlIGZpcnN0IHRleHQv
Ym94L2xpbmUgYnJlYWsgaW5saW5lIGl0ZW0uCi0gICAgICAgIGZvciAoOyBpbmRleCA8IGlubGlu
ZUl0ZW1Db3VudDsgKytpbmRleCkgeworICAgICAgICBmb3IgKDsgaW5kZXggPCBsYXlvdXRSYW5n
ZS5lbmQ7ICsraW5kZXgpIHsKICAgICAgICAgICAgIGF1dG8mIGlubGluZUl0ZW0gPSBpbmxpbmVD
b250ZW50W2luZGV4XTsKICAgICAgICAgICAgIGlmIChpbmxpbmVJdGVtLmlzVGV4dCgpIHx8IGlu
bGluZUl0ZW0uaXNCb3goKSkKICAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXg7CkBAIC0xMjks
NyArMTI4LDcgQEAgc3RhdGljIGlubGluZSBzaXplX3QgbmV4dFdyYXBPcHBvcnR1bml0eShjb25z
dCBJbmxpbmVJdGVtcyYgaW5saW5lQ29udGVudCwgdW5zaWcKICAgICAgICAgICAgICAgICByZXR1
cm4gaW5kZXg7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGlubGlu
ZUl0ZW1Db3VudDsKKyAgICAgICAgcmV0dXJuIGxheW91dFJhbmdlLmVuZDsKICAgICB9OwogCiAg
ICAgLy8gU3RhcnQgYXQgdGhlIGZpcnN0IGlubGluZSBpdGVtIHdpdGggY29udGVudC4KQEAgLTE0
MCwxMSArMTM5LDExIEBAIHN0YXRpYyBpbmxpbmUgc2l6ZV90IG5leHRXcmFwT3Bwb3J0dW5pdHko
Y29uc3QgSW5saW5lSXRlbXMmIGlubGluZUNvbnRlbnQsIHVuc2lnCiAgICAgICAgIHJldHVybiBz
dGFydENvbnRlbnRJbmRleCArIDE7CiAgICAgfQogCi0gICAgd2hpbGUgKHN0YXJ0Q29udGVudElu
ZGV4IDwgaW5saW5lSXRlbUNvdW50KSB7CisgICAgd2hpbGUgKHN0YXJ0Q29udGVudEluZGV4IDwg
bGF5b3V0UmFuZ2UuZW5kKSB7CiAgICAgICAgIC8vIDEuIEZpbmQgdGhlIG5leHQgaW5saW5lIGl0
ZW0gd2l0aCBjb250ZW50LgogICAgICAgICAvLyAyLiBDaGVjayBpZiB0aGVyZSdzIGEgc29mdCB3
cmFwIG9wcG9ydHVuaXR5IGJldHdlZW4gdGhlIHN0YXJ0IGFuZCB0aGUgbmV4dCBpbmxpbmUgaXRl
bS4KICAgICAgICAgYXV0byBuZXh0Q29udGVudEluZGV4ID0gaW5saW5lSXRlbUluZGV4V2l0aENv
bnRlbnQoc3RhcnRDb250ZW50SW5kZXggKyAxKTsKLSAgICAgICAgaWYgKG5leHRDb250ZW50SW5k
ZXggPT0gaW5saW5lSXRlbUNvdW50KQorICAgICAgICBpZiAobmV4dENvbnRlbnRJbmRleCA9PSBs
YXlvdXRSYW5nZS5lbmQpCiAgICAgICAgICAgICByZXR1cm4gbmV4dENvbnRlbnRJbmRleDsKICAg
ICAgICAgaWYgKGlzQXRMaW5lQnJlYWspIHsKICAgICAgICAgICAgIC8vIFdlIGFsd2F5cyBzdG9w
IGF0IGxpbmUgYnJlYWtzLiBUaGUgd3JhcCBwb3NpdGlvbiBpcyBhZnRlciB0aGUgbGluZSBicmVh
ay4KQEAgLTE2OSw3ICsxNjgsNyBAQCBzdGF0aWMgaW5saW5lIHNpemVfdCBuZXh0V3JhcE9wcG9y
dHVuaXR5KGNvbnN0IElubGluZUl0ZW1zJiBpbmxpbmVDb250ZW50LCB1bnNpZwogICAgICAgICB9
CiAgICAgICAgIHN0YXJ0Q29udGVudEluZGV4ID0gbmV4dENvbnRlbnRJbmRleDsKICAgICB9Ci0g
ICAgcmV0dXJuIGlubGluZUl0ZW1Db3VudDsKKyAgICByZXR1cm4gbGF5b3V0UmFuZ2UuZW5kOwog
fQogCiBzdHJ1Y3QgTGluZUNhbmRpZGF0ZUNvbnRlbnQgewpAQCAtMjUzLDcgKzI1Miw3IEBAIExp
bmVMYXlvdXRDb250ZXh0OjpMaW5lTGF5b3V0Q29udGV4dChjb25zdCBJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dCYgaW5saW5lRm9ybWF0CiB7CiB9CiAKLUxpbmVMYXlvdXRDb250ZXh0OjpMaW5lQ29u
dGVudCBMaW5lTGF5b3V0Q29udGV4dDo6bGF5b3V0TGluZShMaW5lQnVpbGRlciYgbGluZSwgdW5z
aWduZWQgbGVhZGluZ0lubGluZUl0ZW1JbmRleCwgT3B0aW9uYWw8dW5zaWduZWQ+IHBhcnRpYWxM
ZWFkaW5nQ29udGVudExlbmd0aCkKK0xpbmVMYXlvdXRDb250ZXh0OjpMaW5lQ29udGVudCBMaW5l
TGF5b3V0Q29udGV4dDo6bGF5b3V0TGluZShMaW5lQnVpbGRlciYgbGluZSwgSW5saW5lSXRlbVJh
bmdlIGxheW91dFJhbmdlLCBPcHRpb25hbDx1bnNpZ25lZD4gcGFydGlhbExlYWRpbmdDb250ZW50
TGVuZ3RoKQogewogICAgIGF1dG8gcmVzZXQgPSBbJl0gewogICAgICAgICBBU1NFUlQobV9mbG9h
dHMuaXNFbXB0eSgpKTsKQEAgLTI2MiwyMiArMjYxLDIyIEBAIExpbmVMYXlvdXRDb250ZXh0OjpM
aW5lQ29udGVudCBMaW5lTGF5b3V0Q29udGV4dDo6bGF5b3V0TGluZShMaW5lQnVpbGRlciYgbGlu
ZSwKICAgICB9OwogICAgIHJlc2V0KCk7CiAgICAgYXV0byBsaW5lQnJlYWtlciA9IExpbmVCcmVh
a2VyIHsgfTsKLSAgICBhdXRvIGN1cnJlbnRJdGVtSW5kZXggPSBsZWFkaW5nSW5saW5lSXRlbUlu
ZGV4OworICAgIGF1dG8gY3VycmVudEl0ZW1JbmRleCA9IGxheW91dFJhbmdlLnN0YXJ0OwogICAg
IHVuc2lnbmVkIGNvbW1pdHRlZElubGluZUl0ZW1Db3VudCA9IDA7CiAgICAgYXV0byBjYW5kaWRh
dGVDb250ZW50ID0gTGluZUNhbmRpZGF0ZUNvbnRlbnQgeyB9OwotICAgIHdoaWxlIChjdXJyZW50
SXRlbUluZGV4IDwgbV9pbmxpbmVJdGVtcy5zaXplKCkpIHsKKyAgICB3aGlsZSAoY3VycmVudEl0
ZW1JbmRleCA8IGxheW91dFJhbmdlLmVuZCkgewogICAgICAgICAvLyAxLiBDb2xsZWN0IHRoZSBz
ZXQgb2YgcnVucyB0aGF0IHdlIGNhbiBjb21taXQgdG8gdGhlIGxpbmUgYXMgb25lIGVudGl0eSBl
LmcuIDxzcGFuPnRleHRfYW5kX3NwYW5fc3RhcnRfc3Bhbl9lbmQ8L3NwYW4+LgogICAgICAgICAv
LyAyLiBBcHBseSBmbG9hdHMgYW5kIHNocmluayB0aGUgYXZhaWxhYmxlIGhvcml6b250YWwgc3Bh
Y2UgZS5nLiA8c3Bhbj5pbnRydV88ZGl2IHN0eWxlPSJmbG9hdDogbGVmdCI+PC9kaXY+c2l2ZV9m
bG9hdDwvc3Bhbj4uCiAgICAgICAgIC8vIDMuIENoZWNrIGlmIHRoZSBjb250ZW50IGZpdHMgdGhl
IGxpbmUgYW5kIGNvbW1pdCB0aGUgY29udGVudCBhY2NvcmRpbmdseSAoZnVsbCwgcGFydGlhbCBv
ciBub3QgY29tbWl0IGF0IGFsbCkuCiAgICAgICAgIC8vIDQuIFJldHVybiBpZiB3ZSBhcmUgYXQg
dGhlIGVuZCBvZiB0aGUgbGluZSBlaXRoZXIgYnkgbm90IGJlaW5nIGFibGUgdG8gZml0IG1vcmUg
Y29udGVudCBvciBiZWNhdXNlIG9mIGFuIGV4cGxpY2l0IGxpbmUgYnJlYWsuCi0gICAgICAgIG5l
eHRDb250ZW50Rm9yTGluZShjYW5kaWRhdGVDb250ZW50LCBjdXJyZW50SXRlbUluZGV4LCBwYXJ0
aWFsTGVhZGluZ0NvbnRlbnRMZW5ndGgsIGxpbmUubGluZUJveCgpLmxvZ2ljYWxXaWR0aCgpKTsK
KyAgICAgICAgbmV4dENvbnRlbnRGb3JMaW5lKGNhbmRpZGF0ZUNvbnRlbnQsIGN1cnJlbnRJdGVt
SW5kZXgsIGxheW91dFJhbmdlLCBwYXJ0aWFsTGVhZGluZ0NvbnRlbnRMZW5ndGgsIGxpbmUubGlu
ZUJveCgpLmxvZ2ljYWxXaWR0aCgpKTsKICAgICAgICAgaWYgKGNhbmRpZGF0ZUNvbnRlbnQuaGFz
SW50cnVzaXZlRmxvYXRzKCkpIHsKICAgICAgICAgICAgIC8vIEFkZCBmbG9hdHMgZmlyc3QgYmVj
YXVzZSB0aGV5IHNocmluayB0aGUgYXZhaWxhYmxlIGhvcml6b250YWwgc3BhY2UgZm9yIHRoZSBy
ZXN0IG9mIHRoZSBjb250ZW50LgogICAgICAgICAgICAgYXV0byByZXN1bHQgPSB0cnlBZGRpbmdG
bG9hdEl0ZW1zKGxpbmUsIGNhbmRpZGF0ZUNvbnRlbnQuZmxvYXRzKCkpOwogICAgICAgICAgICAg
Y29tbWl0dGVkSW5saW5lSXRlbUNvdW50ICs9IHJlc3VsdC5jb21taXR0ZWRDb3VudDsKICAgICAg
ICAgICAgIGlmIChyZXN1bHQuaXNFbmRPZkxpbmUgPT0gTGluZUJyZWFrZXI6OklzRW5kT2ZMaW5l
OjpZZXMpIHsKICAgICAgICAgICAgICAgICAvLyBGbG9hdHMgdGFrZSB1cCBhbGwgdGhlIGhvcml6
b250YWwgc3BhY2UuCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNsb3NlKGxpbmUsIGxlYWRpbmdJ
bmxpbmVJdGVtSW5kZXgsIGNvbW1pdHRlZElubGluZUl0ZW1Db3VudCwgeyB9KTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gY2xvc2UobGluZSwgbGF5b3V0UmFuZ2UsIGNvbW1pdHRlZElubGluZUl0
ZW1Db3VudCwgeyB9KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAoIWNh
bmRpZGF0ZUNvbnRlbnQuaW5saW5lUnVucygpLmlzRW1wdHkoKSkgewpAQCAtMjkyLDIwICsyOTEs
MjAgQEAgTGluZUxheW91dENvbnRleHQ6OkxpbmVDb250ZW50IExpbmVMYXlvdXRDb250ZXh0Ojps
YXlvdXRMaW5lKExpbmVCdWlsZGVyJiBsaW5lLAogICAgICAgICAgICAgY29tbWl0dGVkSW5saW5l
SXRlbUNvdW50ICs9IHJlc3VsdC5jb21taXR0ZWRDb3VudDsKICAgICAgICAgICAgIGlmIChyZXN1
bHQuaXNFbmRPZkxpbmUgPT0gTGluZUJyZWFrZXI6OklzRW5kT2ZMaW5lOjpZZXMpIHsKICAgICAg
ICAgICAgICAgICAvLyBXZSBjYW4ndCBwbGFjZSBhbnkgbW9yZSBpdGVtcyBvbiB0aGUgY3VycmVu
dCBsaW5lLgotICAgICAgICAgICAgICAgIHJldHVybiBjbG9zZShsaW5lLCBsZWFkaW5nSW5saW5l
SXRlbUluZGV4LCBjb21taXR0ZWRJbmxpbmVJdGVtQ291bnQsIHJlc3VsdC5wYXJ0aWFsQ29udGVu
dCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNsb3NlKGxpbmUsIGxheW91dFJhbmdlLCBjb21t
aXR0ZWRJbmxpbmVJdGVtQ291bnQsIHJlc3VsdC5wYXJ0aWFsQ29udGVudCk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0gZWxzZSBpZiAoYXV0byogdHJhaWxpbmdMaW5lQnJlYWsgPSBjYW5kaWRh
dGVDb250ZW50LnRyYWlsaW5nTGluZUJyZWFrKCkpIHsKICAgICAgICAgICAgIGxpbmUuYXBwZW5k
KCp0cmFpbGluZ0xpbmVCcmVhaywgMCk7Ci0gICAgICAgICAgICByZXR1cm4gY2xvc2UobGluZSwg
bGVhZGluZ0lubGluZUl0ZW1JbmRleCwgKytjb21taXR0ZWRJbmxpbmVJdGVtQ291bnQsIHsgfSk7
CisgICAgICAgICAgICByZXR1cm4gY2xvc2UobGluZSwgbGF5b3V0UmFuZ2UsICsrY29tbWl0dGVk
SW5saW5lSXRlbUNvdW50LCB7IH0pOwogICAgICAgICB9Ci0gICAgICAgIGN1cnJlbnRJdGVtSW5k
ZXggPSBsZWFkaW5nSW5saW5lSXRlbUluZGV4ICsgY29tbWl0dGVkSW5saW5lSXRlbUNvdW50Owor
ICAgICAgICBjdXJyZW50SXRlbUluZGV4ID0gbGF5b3V0UmFuZ2Uuc3RhcnQgKyBjb21taXR0ZWRJ
bmxpbmVJdGVtQ291bnQ7CiAgICAgICAgIHBhcnRpYWxMZWFkaW5nQ29udGVudExlbmd0aCA9IHsg
fTsKICAgICB9CiAgICAgLy8gTG9va3MgbGlrZSB3ZSd2ZSBydW4gb3V0IG9mIHJ1bnMuCi0gICAg
cmV0dXJuIGNsb3NlKGxpbmUsIGxlYWRpbmdJbmxpbmVJdGVtSW5kZXgsIGNvbW1pdHRlZElubGlu
ZUl0ZW1Db3VudCwgeyB9KTsKKyAgICByZXR1cm4gY2xvc2UobGluZSwgbGF5b3V0UmFuZ2UsIGNv
bW1pdHRlZElubGluZUl0ZW1Db3VudCwgeyB9KTsKIH0KIAotTGluZUxheW91dENvbnRleHQ6Okxp
bmVDb250ZW50IExpbmVMYXlvdXRDb250ZXh0OjpjbG9zZShMaW5lQnVpbGRlciYgbGluZSwgdW5z
aWduZWQgbGVhZGluZ0lubGluZUl0ZW1JbmRleCwgdW5zaWduZWQgY29tbWl0dGVkSW5saW5lSXRl
bUNvdW50LCBPcHRpb25hbDxMaW5lQ29udGVudDo6UGFydGlhbENvbnRlbnQ+IHBhcnRpYWxDb250
ZW50KQorTGluZUxheW91dENvbnRleHQ6OkxpbmVDb250ZW50IExpbmVMYXlvdXRDb250ZXh0Ojpj
bG9zZShMaW5lQnVpbGRlciYgbGluZSwgSW5saW5lSXRlbVJhbmdlIGxheW91dFJhbmdlLCB1bnNp
Z25lZCBjb21taXR0ZWRJbmxpbmVJdGVtQ291bnQsIE9wdGlvbmFsPExpbmVDb250ZW50OjpQYXJ0
aWFsQ29udGVudD4gcGFydGlhbENvbnRlbnQpCiB7CiAgICAgQVNTRVJUKGNvbW1pdHRlZElubGlu
ZUl0ZW1Db3VudCB8fCBsaW5lLmhhc0ludHJ1c2l2ZUZsb2F0KCkpOwogICAgIGlmICghY29tbWl0
dGVkSW5saW5lSXRlbUNvdW50KQpAQCAtMzE3LDE0ICszMTYsMTUgQEAgTGluZUxheW91dENvbnRl
eHQ6OkxpbmVDb250ZW50IExpbmVMYXlvdXRDb250ZXh0OjpjbG9zZShMaW5lQnVpbGRlciYgbGlu
ZSwgdW5zaWcKICAgICBlbHNlCiAgICAgICAgIG1fc3VjY2Vzc2l2ZUh5cGhlbmF0ZWRMaW5lQ291
bnQgPSAwOwogCi0gICAgYXV0byB0cmFpbGluZ0lubGluZUl0ZW1JbmRleCA9IGxlYWRpbmdJbmxp
bmVJdGVtSW5kZXggKyBjb21taXR0ZWRJbmxpbmVJdGVtQ291bnQgLSAxOworICAgIGF1dG8gdHJh
aWxpbmdJbmxpbmVJdGVtSW5kZXggPSBsYXlvdXRSYW5nZS5zdGFydCArIGNvbW1pdHRlZElubGlu
ZUl0ZW1Db3VudCAtIDE7CisgICAgQVNTRVJUKHRyYWlsaW5nSW5saW5lSXRlbUluZGV4IDwgbGF5
b3V0UmFuZ2UuZW5kKTsKICAgICBhdXRvIGlzTGFzdExpbmVXaXRoSW5saW5lQ29udGVudCA9IFsm
XSB7Ci0gICAgICAgIGlmICh0cmFpbGluZ0lubGluZUl0ZW1JbmRleCA9PSBtX2lubGluZUl0ZW1z
LnNpemUoKSAtIDEpCisgICAgICAgIGlmICh0cmFpbGluZ0lubGluZUl0ZW1JbmRleCA9PSBsYXlv
dXRSYW5nZS5lbmQgLSAxKQogICAgICAgICAgICAgcmV0dXJuIExpbmVCdWlsZGVyOjpJc0xhc3RM
aW5lV2l0aElubGluZUNvbnRlbnQ6OlllczsKICAgICAgICAgaWYgKHBhcnRpYWxDb250ZW50KQog
ICAgICAgICAgICAgcmV0dXJuIExpbmVCdWlsZGVyOjpJc0xhc3RMaW5lV2l0aElubGluZUNvbnRl
bnQ6Ok5vOwogICAgICAgICAvLyBPbWl0IGZsb2F0cyB0byBzZWUgaWYgdGhpcyBpcyB0aGUgbGFz
dCBsaW5lIHdpdGggaW5saW5lIGNvbnRlbnQuCi0gICAgICAgIGZvciAoYXV0byBpID0gbV9pbmxp
bmVJdGVtcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgZm9yIChhdXRvIGkgPSBsYXlvdXRSYW5n
ZS5lbmQ7IGktLTspIHsKICAgICAgICAgICAgIGlmICghbV9pbmxpbmVJdGVtc1tpXS5pc0Zsb2F0
KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGkgPT0gdHJhaWxpbmdJbmxpbmVJdGVtSW5kZXgg
PyBMaW5lQnVpbGRlcjo6SXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50OjpZZXMgOiBMaW5lQnVp
bGRlcjo6SXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50OjpObzsKICAgICAgICAgfQpAQCAtMzM1
LDI4ICszMzUsMjggQEAgTGluZUxheW91dENvbnRleHQ6OkxpbmVDb250ZW50IExpbmVMYXlvdXRD
b250ZXh0OjpjbG9zZShMaW5lQnVpbGRlciYgbGluZSwgdW5zaWcKICAgICByZXR1cm4gTGluZUNv
bnRlbnQgeyB0cmFpbGluZ0lubGluZUl0ZW1JbmRleCwgcGFydGlhbENvbnRlbnQsIFdURk1vdmUo
bV9mbG9hdHMpLCBsaW5lLmNsb3NlKGlzTGFzdExpbmVXaXRoSW5saW5lQ29udGVudCksIGxpbmUu
bGluZUJveCgpIH07CiB9CiAKLXZvaWQgTGluZUxheW91dENvbnRleHQ6Om5leHRDb250ZW50Rm9y
TGluZShMaW5lQ2FuZGlkYXRlQ29udGVudCYgY2FuZGlkYXRlQ29udGVudCwgdW5zaWduZWQgaW5s
aW5lSXRlbUluZGV4LCBPcHRpb25hbDx1bnNpZ25lZD4gcGFydGlhbExlYWRpbmdDb250ZW50TGVu
Z3RoLCBJbmxpbmVMYXlvdXRVbml0IGN1cnJlbnRMb2dpY2FsUmlnaHQpCit2b2lkIExpbmVMYXlv
dXRDb250ZXh0OjpuZXh0Q29udGVudEZvckxpbmUoTGluZUNhbmRpZGF0ZUNvbnRlbnQmIGNhbmRp
ZGF0ZUNvbnRlbnQsIHVuc2lnbmVkIGN1cnJlbnRJbmxpbmVJdGVtSW5kZXgsIElubGluZUl0ZW1S
YW5nZSBsYXlvdXRSYW5nZSwgT3B0aW9uYWw8dW5zaWduZWQ+IHBhcnRpYWxMZWFkaW5nQ29udGVu
dExlbmd0aCwgSW5saW5lTGF5b3V0VW5pdCBjdXJyZW50TG9naWNhbFJpZ2h0KQogewotICAgIEFT
U0VSVChpbmxpbmVJdGVtSW5kZXggPCBtX2lubGluZUl0ZW1zLnNpemUoKSk7CisgICAgQVNTRVJU
KGN1cnJlbnRJbmxpbmVJdGVtSW5kZXggPCBsYXlvdXRSYW5nZS5lbmQpOwogICAgIGNhbmRpZGF0
ZUNvbnRlbnQucmVzZXQoKTsKICAgICAvLyAxLiBTaW1wbHkgYWRkIGFueSBvdmVyZmxvdyBjb250
ZW50IGZyb20gdGhlIHByZXZpb3VzIGxpbmUgdG8gdGhlIGNhbmRpZGF0ZSBjb250ZW50LiBJdCdz
IGFsd2F5cyBhIHRleHQgY29udGVudC4KICAgICAvLyAyLiBGaW5kIHRoZSBuZXh0IHNvZnQgd3Jh
cCBwb3NpdGlvbiBvciBleHBsaWNpdCBsaW5lIGJyZWFrLgogICAgIC8vIDMuIENvbGxlY3QgZmxv
YXRzIGJldHdlZW4gdGhlIGlubGluZSBjb250ZW50LgotICAgIGF1dG8gc29mdFdyYXBPcHBvcnR1
bml0eUluZGV4ID0gbmV4dFdyYXBPcHBvcnR1bml0eShtX2lubGluZUl0ZW1zLCBpbmxpbmVJdGVt
SW5kZXgpOwotICAgIC8vIHNvZnRXcmFwT3Bwb3J0dW5pdHlJbmRleCA9PSBtX2lubGluZUl0ZW1z
LnNpemUoKSBtZWFucyB3ZSBkb24ndCBoYXZlIGFueSB3cmFwIG9wcG9ydHVuaXR5IGluIHRoaXMg
Y29udGVudC4KLSAgICBBU1NFUlQoc29mdFdyYXBPcHBvcnR1bml0eUluZGV4IDw9IG1faW5saW5l
SXRlbXMuc2l6ZSgpKTsKKyAgICBhdXRvIHNvZnRXcmFwT3Bwb3J0dW5pdHlJbmRleCA9IG5leHRX
cmFwT3Bwb3J0dW5pdHkobV9pbmxpbmVJdGVtcywgY3VycmVudElubGluZUl0ZW1JbmRleCwgbGF5
b3V0UmFuZ2UpOworICAgIC8vIHNvZnRXcmFwT3Bwb3J0dW5pdHlJbmRleCA9PSBsYXlvdXRSYW5n
ZS5lbmQgbWVhbnMgd2UgZG9uJ3QgaGF2ZSBhbnkgd3JhcCBvcHBvcnR1bml0eSBpbiB0aGlzIGNv
bnRlbnQuCisgICAgQVNTRVJUKHNvZnRXcmFwT3Bwb3J0dW5pdHlJbmRleCA8PSBsYXlvdXRSYW5n
ZS5lbmQpOwogCiAgICAgaWYgKHBhcnRpYWxMZWFkaW5nQ29udGVudExlbmd0aCkgewogICAgICAg
ICAvLyBIYW5kbGUgbGVhZGluZyBwYXJ0aWFsIGNvbnRlbnQgZmlyc3QgKHNwbGl0IHRleHQgZnJv
bSB0aGUgcHJldmlvdXMgbGluZSkuCiAgICAgICAgIC8vIENvbnN0cnVjdCBhIHBhcnRpYWwgbGVh
ZGluZyBpbmxpbmUgaXRlbS4KLSAgICAgICAgbV9wYXJ0aWFsTGVhZGluZ1RleHRJdGVtID0gZG93
bmNhc3Q8SW5saW5lVGV4dEl0ZW0+KG1faW5saW5lSXRlbXNbaW5saW5lSXRlbUluZGV4XSkucmln
aHQoKnBhcnRpYWxMZWFkaW5nQ29udGVudExlbmd0aCk7CisgICAgICAgIG1fcGFydGlhbExlYWRp
bmdUZXh0SXRlbSA9IGRvd25jYXN0PElubGluZVRleHRJdGVtPihtX2lubGluZUl0ZW1zW2N1cnJl
bnRJbmxpbmVJdGVtSW5kZXhdKS5yaWdodCgqcGFydGlhbExlYWRpbmdDb250ZW50TGVuZ3RoKTsK
ICAgICAgICAgYXV0byBpdGVtV2lkdGggPSBpbmxpbmVJdGVtV2lkdGgoKm1fcGFydGlhbExlYWRp
bmdUZXh0SXRlbSwgY3VycmVudExvZ2ljYWxSaWdodCk7CiAgICAgICAgIGNhbmRpZGF0ZUNvbnRl
bnQuYXBwZW5kSW5saW5lQ29udGVudCgqbV9wYXJ0aWFsTGVhZGluZ1RleHRJdGVtLCBpdGVtV2lk
dGgpOwogICAgICAgICBjdXJyZW50TG9naWNhbFJpZ2h0ICs9IGl0ZW1XaWR0aDsKLSAgICAgICAg
KytpbmxpbmVJdGVtSW5kZXg7CisgICAgICAgICsrY3VycmVudElubGluZUl0ZW1JbmRleDsKICAg
ICB9CiAKLSAgICBmb3IgKGF1dG8gaW5kZXggPSBpbmxpbmVJdGVtSW5kZXg7IGluZGV4IDwgc29m
dFdyYXBPcHBvcnR1bml0eUluZGV4OyArK2luZGV4KSB7CisgICAgZm9yIChhdXRvIGluZGV4ID0g
Y3VycmVudElubGluZUl0ZW1JbmRleDsgaW5kZXggPCBzb2Z0V3JhcE9wcG9ydHVuaXR5SW5kZXg7
ICsraW5kZXgpIHsKICAgICAgICAgYXV0byYgaW5saW5lSXRlbSA9IG1faW5saW5lSXRlbXNbaW5k
ZXhdOwogICAgICAgICBpZiAoaW5saW5lSXRlbS5pc1RleHQoKSB8fCBpbmxpbmVJdGVtLmlzQ29u
dGFpbmVyU3RhcnQoKSB8fCBpbmxpbmVJdGVtLmlzQ29udGFpbmVyRW5kKCkpIHsKICAgICAgICAg
ICAgIGF1dG8gaW5saW5lSXRlbm1XaWR0aCA9IGlubGluZUl0ZW1XaWR0aChpbmxpbmVJdGVtLCBj
dXJyZW50TG9naWNhbFJpZ2h0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0xpbmVMYXlvdXRDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9MaW5lTGF5b3V0Q29udGV4dC5oCmluZGV4IDUzOGU5OTM3ZjRj
ZWI2OGE2MWJmYTZmOThhZGM1MDMzNTE5ZGVlZGQuLjU4YzYzMjBiOTdkMjYyYWU4MTVlOGFiZmU1
NmY2ODA1ZTc1MWIzZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0xpbmVMYXlvdXRDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvTGluZUxheW91dENvbnRleHQuaApAQCAtNTAsMTEgKzUwLDE2IEBA
IHB1YmxpYzoKICAgICAgICAgY29uc3QgTGluZUJ1aWxkZXI6OlJ1bkxpc3QgcnVuTGlzdDsKICAg
ICAgICAgY29uc3QgRGlzcGxheTo6TGluZUJveCBsaW5lQm94OwogICAgIH07Ci0gICAgTGluZUNv
bnRlbnQgbGF5b3V0TGluZShMaW5lQnVpbGRlciYsIHVuc2lnbmVkIGxlYWRpbmdJbmxpbmVJdGVt
SW5kZXgsIE9wdGlvbmFsPHVuc2lnbmVkPiBwYXJ0aWFsTGVhZGluZ0NvbnRlbnRMZW5ndGgpOwor
ICAgIHN0cnVjdCBJbmxpbmVJdGVtUmFuZ2UgeworICAgICAgICBib29sIGlzRW1wdHkoKSBjb25z
dCB7IHJldHVybiBzdGFydCA+PSBlbmQ7IH0KKyAgICAgICAgc2l6ZV90IHN0YXJ0IHsgMCB9Owor
ICAgICAgICBzaXplX3QgZW5kIHsgMCB9OworICAgIH07CisgICAgTGluZUNvbnRlbnQgbGF5b3V0
TGluZShMaW5lQnVpbGRlciYsIElubGluZUl0ZW1SYW5nZSwgT3B0aW9uYWw8dW5zaWduZWQ+IHBh
cnRpYWxMZWFkaW5nQ29udGVudExlbmd0aCk7CiAgICAgdXNpbmcgRmxvYXRMaXN0ID0gVmVjdG9y
PGNvbnN0IElubGluZUl0ZW0qPjsKIAogcHJpdmF0ZToKLSAgICB2b2lkIG5leHRDb250ZW50Rm9y
TGluZShMaW5lQ2FuZGlkYXRlQ29udGVudCYsIHVuc2lnbmVkIGlubGluZUl0ZW1JbmRleCwgT3B0
aW9uYWw8dW5zaWduZWQ+IG92ZXJmbG93TGVuZ3RoLCBJbmxpbmVMYXlvdXRVbml0IGN1cnJlbnRM
b2dpY2FsUmlnaHQpOworICAgIHZvaWQgbmV4dENvbnRlbnRGb3JMaW5lKExpbmVDYW5kaWRhdGVD
b250ZW50JiwgdW5zaWduZWQgaW5saW5lSXRlbUluZGV4LCBJbmxpbmVJdGVtUmFuZ2UgbGF5b3V0
UmFuZ2UsIE9wdGlvbmFsPHVuc2lnbmVkPiBvdmVyZmxvd0xlbmd0aCwgSW5saW5lTGF5b3V0VW5p
dCBjdXJyZW50TG9naWNhbFJpZ2h0KTsKICAgICBzdHJ1Y3QgUmVzdWx0IHsKICAgICAgICAgTGlu
ZUJyZWFrZXI6OklzRW5kT2ZMaW5lIGlzRW5kT2ZMaW5lIHsgTGluZUJyZWFrZXI6OklzRW5kT2ZM
aW5lOjpObyB9OwogICAgICAgICBzaXplX3QgY29tbWl0dGVkQ291bnQgeyAwIH07CkBAIC02NCw3
ICs2OSw3IEBAIHByaXZhdGU6CiAgICAgUmVzdWx0IHRyeUFkZGluZ0Zsb2F0SXRlbXMoTGluZUJ1
aWxkZXImLCBjb25zdCBGbG9hdExpc3QmKTsKICAgICBSZXN1bHQgdHJ5QWRkaW5nSW5saW5lSXRl
bXMoTGluZUJyZWFrZXImLCBMaW5lQnVpbGRlciYsIGNvbnN0IExpbmVDYW5kaWRhdGVDb250ZW50
Jik7CiAgICAgdm9pZCBjb21taXRQYXJ0aWFsQ29udGVudChMaW5lQnVpbGRlciYsIGNvbnN0IExp
bmVCcmVha2VyOjpSdW5MaXN0JiwgY29uc3QgTGluZUJyZWFrZXI6OlJlc3VsdDo6UGFydGlhbFRy
YWlsaW5nQ29udGVudCYpOwotICAgIExpbmVDb250ZW50IGNsb3NlKExpbmVCdWlsZGVyJiwgdW5z
aWduZWQgbGVhZGluZ0lubGluZUl0ZW1JbmRleCwgdW5zaWduZWQgY29tbWl0dGVkSW5saW5lSXRl
bUNvdW50LCBPcHRpb25hbDxMaW5lQ29udGVudDo6UGFydGlhbENvbnRlbnQ+KTsKKyAgICBMaW5l
Q29udGVudCBjbG9zZShMaW5lQnVpbGRlciYsIElubGluZUl0ZW1SYW5nZSBsYXlvdXRSYW5nZSwg
dW5zaWduZWQgY29tbWl0dGVkSW5saW5lSXRlbUNvdW50LCBPcHRpb25hbDxMaW5lQ29udGVudDo6
UGFydGlhbENvbnRlbnQ+KTsKIAogICAgIElubGluZUxheW91dFVuaXQgaW5saW5lSXRlbVdpZHRo
KGNvbnN0IElubGluZUl0ZW0mLCBJbmxpbmVMYXlvdXRVbml0IGNvbnRlbnRMb2dpY2FsTGVmdCkg
Y29uc3Q7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388251</attachid>
            <date>2020-01-20 12:55:59 -0800</date>
            <delta_ts>2020-01-20 15:32:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206507-20200120125558.patch</filename>
            <type>text/plain</type>
            <size>22428</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0ODMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2M0NGNmZTNkYjMyOWI0
ZjAyOWEzMjExODBhNjQ0ZTNlNzAyYTM0OS4uZmVkMTQ0Nzc3NzdlYmJhZDA1MDI5MmUzYzU3YTdl
N2Q0OGQxMjUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTAxLTIwICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6bGluZUxheW91dCBzaG91bGQgdGFrZSBhIElubGluZUl0ZW0gcmFu
Z2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjUw
NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTg3NDI0Njg+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3Ig
YmVpbmcgYWJsZSB0byBydW4gaW5saW5lIGxheW91dCBvbiBwYXJ0aWFsIElGQyBjb250ZW50Lgor
CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4
dDo6bGF5b3V0SW5GbG93Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGlu
ZUZvcm1hdHRpbmdDb250ZXh0OjpsaW5lTGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVkSW50cmluc2ljV2lkdGhGb3JDb25z
dHJhaW50IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVG
b3JtYXR0aW5nQ29udGV4dC5oOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0xp
bmVMYXlvdXRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6bmV4dFdyYXBP
cHBvcnR1bml0eSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVMYXlvdXRDb250ZXh0
OjpsYXlvdXRMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUxheW91dENvbnRl
eHQ6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUxheW91dENvbnRleHQ6
Om5leHRDb250ZW50Rm9yTGluZSk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
TGluZUxheW91dENvbnRleHQuaDoKKwogMjAyMC0wMS0yMCAgWmFsYW4gQnVqdGFzICA8emFsYW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gQWRkIHN1cHBvcnQgZm9yIHRoZSByYXJl
IGNhc2Ugb2YgcmV2ZXJ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXgg
NzMzMzkzOGNmN2FjNzM2ZWQ3MDhiMWU2NzI5ZTRlZGE5MTZiYTE4Zi4uY2I2NTYzN2ViMjJiMDIz
MDBhODI2ZGEyMWI0NGVmMTZlNjFmOGY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250
ZXh0LmNwcApAQCAtODUsMjIgKzg1LDIyIEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6
OmxheW91dEluRmxvd0NvbnRlbnQoSW52YWxpZGF0aW9uU3RhdGUmIGludmFsaWRhdGlvCiAgICAg
fQogCiAgICAgY29sbGVjdElubGluZUNvbnRlbnRJZk5lZWRlZCgpOwotICAgIGxpbmVMYXlvdXQo
aG9yaXpvbnRhbENvbnN0cmFpbnRzLCB2ZXJ0aWNhbENvbnN0cmFpbnRzKTsKKworICAgIGF1dG8m
IGlubGluZUl0ZW1zID0gZm9ybWF0dGluZ1N0YXRlKCkuaW5saW5lSXRlbXMoKTsKKyAgICBsaW5l
TGF5b3V0KGlubGluZUl0ZW1zLCB7IDAsIGlubGluZUl0ZW1zLnNpemUoKSB9LCBob3Jpem9udGFs
Q29uc3RyYWludHMsIHZlcnRpY2FsQ29uc3RyYWludHMpOwogICAgIExPR19XSVRIX1NUUkVBTShG
b3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbRW5kXSAtPiBpbmxpbmUgZm9ybWF0
dGluZyBjb250ZXh0IC0+IGZvcm1hdHRpbmcgcm9vdCgiIDw8ICZyb290KCkgPDwgIikiKTsKIH0K
IAotdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGluZUxheW91dChjb25zdCBIb3Jpem9u
dGFsQ29uc3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50cywgY29uc3QgVmVydGljYWxDb25z
dHJhaW50cyYgdmVydGljYWxDb25zdHJhaW50cykKK3ZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQ6OmxpbmVMYXlvdXQoSW5saW5lSXRlbXMmIGlubGluZUl0ZW1zLCBMaW5lTGF5b3V0Q29udGV4
dDo6SW5saW5lSXRlbVJhbmdlIGxheW91dFJhbmdlLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWlu
dHMmIGhvcml6b250YWxDb25zdHJhaW50cywgY29uc3QgVmVydGljYWxDb25zdHJhaW50cyYgdmVy
dGljYWxDb25zdHJhaW50cykKIHsKLSAgICBhdXRvJiBpbmxpbmVJdGVtcyA9IGZvcm1hdHRpbmdT
dGF0ZSgpLmlubGluZUl0ZW1zKCk7CiAgICAgYXV0byBsaW5lTG9naWNhbFRvcCA9IHZlcnRpY2Fs
Q29uc3RyYWludHMubG9naWNhbFRvcDsKLSAgICB1bnNpZ25lZCBsZWFkaW5nSW5saW5lSXRlbUlu
ZGV4ID0gMDsKICAgICBPcHRpb25hbDx1bnNpZ25lZD4gcGFydGlhbExlYWRpbmdDb250ZW50TGVu
Z3RoOwogICAgIGF1dG8gbGluZUJ1aWxkZXIgPSBMaW5lQnVpbGRlciB7ICp0aGlzLCByb290KCku
c3R5bGUoKS50ZXh0QWxpZ24oKSwgTGluZUJ1aWxkZXI6OkludHJpbnNpY1NpemluZzo6Tm8gfTsK
ICAgICBhdXRvIGxpbmVMYXlvdXRDb250ZXh0ID0gTGluZUxheW91dENvbnRleHQgeyAqdGhpcywg
cm9vdCgpLCBpbmxpbmVJdGVtcyB9OwogCi0gICAgd2hpbGUgKGxlYWRpbmdJbmxpbmVJdGVtSW5k
ZXggPCBpbmxpbmVJdGVtcy5zaXplKCkpIHsKKyAgICB3aGlsZSAoIWxheW91dFJhbmdlLmlzRW1w
dHkoKSkgewogICAgICAgICBsaW5lQnVpbGRlci5pbml0aWFsaXplKGNvbnN0cmFpbnRzRm9yTGlu
ZShob3Jpem9udGFsQ29uc3RyYWludHMsIGxpbmVMb2dpY2FsVG9wKSk7Ci0gICAgICAgIGF1dG8g
bGluZUNvbnRlbnQgPSBsaW5lTGF5b3V0Q29udGV4dC5sYXlvdXRMaW5lKGxpbmVCdWlsZGVyLCBs
ZWFkaW5nSW5saW5lSXRlbUluZGV4LCBwYXJ0aWFsTGVhZGluZ0NvbnRlbnRMZW5ndGgpOworICAg
ICAgICBhdXRvIGxpbmVDb250ZW50ID0gbGluZUxheW91dENvbnRleHQubGF5b3V0TGluZShsaW5l
QnVpbGRlciwgbGF5b3V0UmFuZ2UsIHBhcnRpYWxMZWFkaW5nQ29udGVudExlbmd0aCk7CiAgICAg
ICAgIHNldERpc3BsYXlCb3hlc0ZvckxpbmUobGluZUNvbnRlbnQsIGhvcml6b250YWxDb25zdHJh
aW50cyk7CiAKICAgICAgICAgcGFydGlhbExlYWRpbmdDb250ZW50TGVuZ3RoID0geyB9OwpAQCAt
MTA4LDEyICsxMDgsMTIgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGluZUxheW91
dChjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmIGhvcml6b250YWwKICAgICAgICAgICAgIGxp
bmVMb2dpY2FsVG9wID0gbGluZUNvbnRlbnQubGluZUJveC5sb2dpY2FsQm90dG9tKCk7CiAgICAg
ICAgICAgICAvLyBXaGVuIHRoZSB0cmFpbGluZyBjb250ZW50IGlzIHBhcnRpYWwsIHdlIG5lZWQg
dG8gcmV1c2UgdGhlIGxhc3QgSW5saW5JdGVtLgogICAgICAgICAgICAgaWYgKGxpbmVDb250ZW50
LnBhcnRpYWxDb250ZW50KSB7Ci0gICAgICAgICAgICAgICAgbGVhZGluZ0lubGluZUl0ZW1JbmRl
eCA9ICpsaW5lQ29udGVudC50cmFpbGluZ0lubGluZUl0ZW1JbmRleDsKKyAgICAgICAgICAgICAg
ICBsYXlvdXRSYW5nZS5zdGFydCA9ICpsaW5lQ29udGVudC50cmFpbGluZ0lubGluZUl0ZW1JbmRl
eDsKICAgICAgICAgICAgICAgICAvLyBUdXJuIHByZXZpb3VzIGxpbmUncyBvdmVyZmxvdyBjb250
ZW50IGxlbmd0aCBpbnRvIHRoZSBuZXh0IGxpbmUncyBsZWFkaW5nIGNvbnRlbnQgcGFydGlhbCBs
ZW5ndGguCiAgICAgICAgICAgICAgICAgLy8gInNwPC0+bGl0Y29udGVudCIgLT4gb3ZlcmZsb3cg
bGVuZ3RoOiAxMCAtPiBsZWFkaW5nIHBhcnRpYWwgY29udGVudCBsZW5ndGg6IDEwLiAKICAgICAg
ICAgICAgICAgICBwYXJ0aWFsTGVhZGluZ0NvbnRlbnRMZW5ndGggPSBsaW5lQ29udGVudC5wYXJ0
aWFsQ29udGVudC0+b3ZlcmZsb3dDb250ZW50TGVuZ3RoOwogICAgICAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICAgICAgbGVhZGluZ0lubGluZUl0ZW1JbmRleCA9ICpsaW5lQ29udGVudC50cmFp
bGluZ0lubGluZUl0ZW1JbmRleCArIDE7CisgICAgICAgICAgICAgICAgbGF5b3V0UmFuZ2Uuc3Rh
cnQgPSAqbGluZUNvbnRlbnQudHJhaWxpbmdJbmxpbmVJdGVtSW5kZXggKyAxOwogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgLy8gRmxvYXRzIHByZXZlbnRlZCB1cyBw
bGFjaW5nIGFueSBjb250ZW50IG9uIHRoZSBsaW5lLgpAQCAtMjMzLDE2ICsyMzMsMTYgQEAgRm9y
bWF0dGluZ0NvbnRleHQ6OkludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ6OmNvbXB1dGVkSW4KIElubGluZUxheW91dFVuaXQgSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQ6OmNvbXB1dGVkSW50cmluc2ljV2lkdGhGb3JDb25zdHJhaW50KGNvbnN0IEhvcml6b250
YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzKSBjb25zdAogewogICAgIGF1dG8m
IGlubGluZUl0ZW1zID0gZm9ybWF0dGluZ1N0YXRlKCkuaW5saW5lSXRlbXMoKTsKLSAgICBJbmxp
bmVMYXlvdXRVbml0IG1heGltdW1MaW5lV2lkdGggPSAwOwotICAgIHVuc2lnbmVkIGxlYWRpbmdJ
bmxpbmVJdGVtSW5kZXggPSAwOworICAgIGF1dG8gbWF4aW11bUxpbmVXaWR0aCA9IElubGluZUxh
eW91dFVuaXQgeyB9OwogICAgIGF1dG8gbGluZUJ1aWxkZXIgPSBMaW5lQnVpbGRlciB7ICp0aGlz
LCByb290KCkuc3R5bGUoKS50ZXh0QWxpZ24oKSwgTGluZUJ1aWxkZXI6OkludHJpbnNpY1Npemlu
Zzo6WWVzIH07CiAgICAgYXV0byBsaW5lTGF5b3V0Q29udGV4dCA9IExpbmVMYXlvdXRDb250ZXh0
IHsgKnRoaXMsIHJvb3QoKSwgaW5saW5lSXRlbXMgfTsKLSAgICB3aGlsZSAobGVhZGluZ0lubGlu
ZUl0ZW1JbmRleCA8IGlubGluZUl0ZW1zLnNpemUoKSkgeworICAgIGF1dG8gbGF5b3V0UmFuZ2Ug
PSBMaW5lTGF5b3V0Q29udGV4dDo6SW5saW5lSXRlbVJhbmdlIHsgMCAsIGlubGluZUl0ZW1zLnNp
emUoKSB9OworICAgIHdoaWxlICghbGF5b3V0UmFuZ2UuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8v
IE9ubHkgdGhlIGhvcml6dG9uYWwgYXZhaWxhYmxlIHdpZHRoIGlzIGNvbnN0cmFpbmVkIHdoZW4g
Y29tcHV0aW5nIGludHJpbnNpYyB3aWR0aC4KICAgICAgICAgbGluZUJ1aWxkZXIuaW5pdGlhbGl6
ZShMaW5lQnVpbGRlcjo6Q29uc3RyYWludHMgeyB7IH0sIGhvcml6b250YWxDb25zdHJhaW50cy5s
b2dpY2FsV2lkdGgsIGZhbHNlLCB7IH0gfSk7Ci0gICAgICAgIGF1dG8gbGluZUNvbnRlbnQgPSBs
aW5lTGF5b3V0Q29udGV4dC5sYXlvdXRMaW5lKGxpbmVCdWlsZGVyLCBsZWFkaW5nSW5saW5lSXRl
bUluZGV4LCB7IH0pOworICAgICAgICBhdXRvIGxpbmVDb250ZW50ID0gbGluZUxheW91dENvbnRl
eHQubGF5b3V0TGluZShsaW5lQnVpbGRlciwgbGF5b3V0UmFuZ2UgLCB7IH0pOwogCi0gICAgICAg
IGxlYWRpbmdJbmxpbmVJdGVtSW5kZXggPSAqbGluZUNvbnRlbnQudHJhaWxpbmdJbmxpbmVJdGVt
SW5kZXggKyAxOworICAgICAgICBsYXlvdXRSYW5nZS5zdGFydCA9ICpsaW5lQ29udGVudC50cmFp
bGluZ0lubGluZUl0ZW1JbmRleCArIDE7CiAgICAgICAgIElubGluZUxheW91dFVuaXQgZmxvYXRz
V2lkdGggPSAwOwogICAgICAgICBmb3IgKGF1dG8mIGZsb2F0SXRlbSA6IGxpbmVDb250ZW50LmZs
b2F0cykKICAgICAgICAgICAgIGZsb2F0c1dpZHRoICs9IGdlb21ldHJ5Rm9yQm94KGZsb2F0SXRl
bS0+bGF5b3V0Qm94KCkpLm1hcmdpbkJveFdpZHRoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQuaAppbmRleCBkMjdlNDdmODk2MzIzOTRjZjI3NGY0MDE0MGYxNjljYzY5ZTUwNjkxLi5h
YWY2ODVhYzAxMGVmZDJkMzdlZGVmNTQ0NDQxZjBkODhkMDEyOWY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZv
cm1hdHRpbmdDb250ZXh0LmgKQEAgLTc3LDcgKzc3LDcgQEAgcHJpdmF0ZToKICAgICB9OwogICAg
IElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeSBnZW9tZXRyeSgpIGNvbnN0IHsgcmV0
dXJuIEdlb21ldHJ5KCp0aGlzKTsgfQogCi0gICAgdm9pZCBsaW5lTGF5b3V0KGNvbnN0IEhvcml6
b250YWxDb25zdHJhaW50cyYsIGNvbnN0IFZlcnRpY2FsQ29uc3RyYWludHMmKTsKKyAgICB2b2lk
IGxpbmVMYXlvdXQoSW5saW5lSXRlbXMmLCBMaW5lTGF5b3V0Q29udGV4dDo6SW5saW5lSXRlbVJh
bmdlLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmLCBjb25zdCBWZXJ0aWNhbENvbnN0cmFp
bnRzJik7CiAgICAgdm9pZCBsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFJvb3QoY29uc3QgQm94Jiwg
SW52YWxpZGF0aW9uU3RhdGUmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmLCBjb25zdCBW
ZXJ0aWNhbENvbnN0cmFpbnRzJik7CiAgICAgdm9pZCBjb21wdXRlSG9yaXpvbnRhbEFuZFZlcnRp
Y2FsR2VvbWV0cnkoY29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0xpbmVM
YXlvdXRDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0xpbmVMYXlvdXRDb250ZXh0LmNwcAppbmRleCA2MGFmNmYwNjc5ZWE1MDg5OGVjMTg2ZmU5ZTUw
NzIxNDU2MGRiMzA1Li5iY2QxMzdjNjBhZWE1Y2NhNjRhMDA5OTZiODNjZWRlZjRlODFhNTI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9MaW5lTGF5
b3V0Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRp
bmcvTGluZUxheW91dENvbnRleHQuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgc3RhdGljIGlubGlu
ZSBib29sIGlzQXRTb2Z0V3JhcE9wcG9ydHVuaXR5KGNvbnN0IElubGluZUl0ZW0mIGN1cnJlbnQs
IGNvbnN0IElubGkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGlubGluZSBzaXplX3Qg
bmV4dFdyYXBPcHBvcnR1bml0eShjb25zdCBJbmxpbmVJdGVtcyYgaW5saW5lQ29udGVudCwgdW5z
aWduZWQgc3RhcnRJbmRleCkKK3N0YXRpYyBpbmxpbmUgc2l6ZV90IG5leHRXcmFwT3Bwb3J0dW5p
dHkoY29uc3QgSW5saW5lSXRlbXMmIGlubGluZUNvbnRlbnQsIHNpemVfdCBzdGFydEluZGV4LCBj
b25zdCBMaW5lTGF5b3V0Q29udGV4dDo6SW5saW5lSXRlbVJhbmdlIGxheW91dFJhbmdlKQogewog
ICAgIC8vIDEuIEZpbmQgdGhlIHN0YXJ0IGNhbmRpZGF0ZSBieSBza2lwcGluZyBsZWFkaW5nIG5v
bi1jb250ZW50IGl0ZW1zIGUuZyA8c3Bhbj48c3Bhbj5zdGFydCA6IHNraXAgIjxzcGFuPjxzcGFu
PiIKICAgICAvLyAyLiBGaW5kIHRoZSBlbmQgY2FuZGlkYXRlIGJ5IHNraXBwaW5nIG5vbi1jb250
ZW50IGl0ZW1zIGluYmV0d2VlbiBlLmcuIDxzcGFuPjxzcGFuPnN0YXJ0PC9zcGFuPmVuZDogc2tp
cCAiPC9zcGFuPiIKQEAgLTExNSwxMiArMTE1LDExIEBAIHN0YXRpYyBpbmxpbmUgc2l6ZV90IG5l
eHRXcmFwT3Bwb3J0dW5pdHkoY29uc3QgSW5saW5lSXRlbXMmIGlubGluZUNvbnRlbnQsIHVuc2ln
CiAgICAgLy8gW2V4LV1bY29udGFpbmVyIHN0YXJ0XVtjb250YWluZXIgZW5kXVtmbG9hdF1bYW1w
bGVdIChleC08c3Bhbj48L3NwYW4+PGRpdiBzdHlsZT0iZmxvYXQ6bGVmdCI+PC9kaXY+YW1wbGUp
IDogd3JhcCBpbmRleCBpcyBhdCBbZXgtXS4KICAgICAvLyBbZXhdW2NvbnRhaW5lciBzdGFydF1b
YW1wLV1bY29udGFpbmVyIHN0YXJ0XVtsZV0gKGV4PHNwYW4+YW1wLTxzcGFuPmFtcGxlKSA6IHdy
YXAgaW5kZXggaXMgYXQgW2FtcC1dLgogICAgIC8vIFtleC1dW2NvbnRhaW5lciBzdGFydF1bbGlu
ZSBicmVha11bYW1wbGVdIChleC08c3Bhbj48YnI+YW1wbGUpIDogd3JhcCBpbmRleCBpcyBhZnRl
ciBbYnJdLgotICAgIHVuc2lnbmVkIGlubGluZUl0ZW1Db3VudCA9IGlubGluZUNvbnRlbnQuc2l6
ZSgpOwogICAgIGF1dG8gaXNBdExpbmVCcmVhayA9IGZhbHNlOwogCiAgICAgYXV0byBpbmxpbmVJ
dGVtSW5kZXhXaXRoQ29udGVudCA9IFsmXSAoYXV0byBpbmRleCkgewogICAgICAgICAvLyBCcmVh
ayBhdCB0aGUgZmlyc3QgdGV4dC9ib3gvbGluZSBicmVhayBpbmxpbmUgaXRlbS4KLSAgICAgICAg
Zm9yICg7IGluZGV4IDwgaW5saW5lSXRlbUNvdW50OyArK2luZGV4KSB7CisgICAgICAgIGZvciAo
OyBpbmRleCA8IGxheW91dFJhbmdlLmVuZDsgKytpbmRleCkgewogICAgICAgICAgICAgYXV0byYg
aW5saW5lSXRlbSA9IGlubGluZUNvbnRlbnRbaW5kZXhdOwogICAgICAgICAgICAgaWYgKGlubGlu
ZUl0ZW0uaXNUZXh0KCkgfHwgaW5saW5lSXRlbS5pc0JveCgpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBpbmRleDsKQEAgLTEyOSw3ICsxMjgsNyBAQCBzdGF0aWMgaW5saW5lIHNpemVfdCBuZXh0
V3JhcE9wcG9ydHVuaXR5KGNvbnN0IElubGluZUl0ZW1zJiBpbmxpbmVDb250ZW50LCB1bnNpZwog
ICAgICAgICAgICAgICAgIHJldHVybiBpbmRleDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQot
ICAgICAgICByZXR1cm4gaW5saW5lSXRlbUNvdW50OworICAgICAgICByZXR1cm4gbGF5b3V0UmFu
Z2UuZW5kOwogICAgIH07CiAKICAgICAvLyBTdGFydCBhdCB0aGUgZmlyc3QgaW5saW5lIGl0ZW0g
d2l0aCBjb250ZW50LgpAQCAtMTQwLDExICsxMzksMTEgQEAgc3RhdGljIGlubGluZSBzaXplX3Qg
bmV4dFdyYXBPcHBvcnR1bml0eShjb25zdCBJbmxpbmVJdGVtcyYgaW5saW5lQ29udGVudCwgdW5z
aWcKICAgICAgICAgcmV0dXJuIHN0YXJ0Q29udGVudEluZGV4ICsgMTsKICAgICB9CiAKLSAgICB3
aGlsZSAoc3RhcnRDb250ZW50SW5kZXggPCBpbmxpbmVJdGVtQ291bnQpIHsKKyAgICB3aGlsZSAo
c3RhcnRDb250ZW50SW5kZXggPCBsYXlvdXRSYW5nZS5lbmQpIHsKICAgICAgICAgLy8gMS4gRmlu
ZCB0aGUgbmV4dCBpbmxpbmUgaXRlbSB3aXRoIGNvbnRlbnQuCiAgICAgICAgIC8vIDIuIENoZWNr
IGlmIHRoZXJlJ3MgYSBzb2Z0IHdyYXAgb3Bwb3J0dW5pdHkgYmV0d2VlbiB0aGUgc3RhcnQgYW5k
IHRoZSBuZXh0IGlubGluZSBpdGVtLgogICAgICAgICBhdXRvIG5leHRDb250ZW50SW5kZXggPSBp
bmxpbmVJdGVtSW5kZXhXaXRoQ29udGVudChzdGFydENvbnRlbnRJbmRleCArIDEpOwotICAgICAg
ICBpZiAobmV4dENvbnRlbnRJbmRleCA9PSBpbmxpbmVJdGVtQ291bnQpCisgICAgICAgIGlmIChu
ZXh0Q29udGVudEluZGV4ID09IGxheW91dFJhbmdlLmVuZCkKICAgICAgICAgICAgIHJldHVybiBu
ZXh0Q29udGVudEluZGV4OwogICAgICAgICBpZiAoaXNBdExpbmVCcmVhaykgewogICAgICAgICAg
ICAgLy8gV2UgYWx3YXlzIHN0b3AgYXQgbGluZSBicmVha3MuIFRoZSB3cmFwIHBvc2l0aW9uIGlz
IGFmdGVyIHRoZSBsaW5lIGJyZWFrLgpAQCAtMTY5LDcgKzE2OCw3IEBAIHN0YXRpYyBpbmxpbmUg
c2l6ZV90IG5leHRXcmFwT3Bwb3J0dW5pdHkoY29uc3QgSW5saW5lSXRlbXMmIGlubGluZUNvbnRl
bnQsIHVuc2lnCiAgICAgICAgIH0KICAgICAgICAgc3RhcnRDb250ZW50SW5kZXggPSBuZXh0Q29u
dGVudEluZGV4OwogICAgIH0KLSAgICByZXR1cm4gaW5saW5lSXRlbUNvdW50OworICAgIHJldHVy
biBsYXlvdXRSYW5nZS5lbmQ7CiB9CiAKIHN0cnVjdCBMaW5lQ2FuZGlkYXRlQ29udGVudCB7CkBA
IC0yNTMsNyArMjUyLDcgQEAgTGluZUxheW91dENvbnRleHQ6OkxpbmVMYXlvdXRDb250ZXh0KGNv
bnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBpbmxpbmVGb3JtYXQKIHsKIH0KIAotTGluZUxh
eW91dENvbnRleHQ6OkxpbmVDb250ZW50IExpbmVMYXlvdXRDb250ZXh0OjpsYXlvdXRMaW5lKExp
bmVCdWlsZGVyJiBsaW5lLCB1bnNpZ25lZCBsZWFkaW5nSW5saW5lSXRlbUluZGV4LCBPcHRpb25h
bDx1bnNpZ25lZD4gcGFydGlhbExlYWRpbmdDb250ZW50TGVuZ3RoKQorTGluZUxheW91dENvbnRl
eHQ6OkxpbmVDb250ZW50IExpbmVMYXlvdXRDb250ZXh0OjpsYXlvdXRMaW5lKExpbmVCdWlsZGVy
JiBsaW5lLCBjb25zdCBJbmxpbmVJdGVtUmFuZ2UgbGF5b3V0UmFuZ2UsIE9wdGlvbmFsPHVuc2ln
bmVkPiBwYXJ0aWFsTGVhZGluZ0NvbnRlbnRMZW5ndGgpCiB7CiAgICAgYXV0byByZXNldCA9IFsm
XSB7CiAgICAgICAgIEFTU0VSVChtX2Zsb2F0cy5pc0VtcHR5KCkpOwpAQCAtMjYyLDIyICsyNjEs
MjIgQEAgTGluZUxheW91dENvbnRleHQ6OkxpbmVDb250ZW50IExpbmVMYXlvdXRDb250ZXh0Ojps
YXlvdXRMaW5lKExpbmVCdWlsZGVyJiBsaW5lLAogICAgIH07CiAgICAgcmVzZXQoKTsKICAgICBh
dXRvIGxpbmVCcmVha2VyID0gTGluZUJyZWFrZXIgeyB9OwotICAgIGF1dG8gY3VycmVudEl0ZW1J
bmRleCA9IGxlYWRpbmdJbmxpbmVJdGVtSW5kZXg7CisgICAgYXV0byBjdXJyZW50SXRlbUluZGV4
ID0gbGF5b3V0UmFuZ2Uuc3RhcnQ7CiAgICAgdW5zaWduZWQgY29tbWl0dGVkSW5saW5lSXRlbUNv
dW50ID0gMDsKICAgICBhdXRvIGNhbmRpZGF0ZUNvbnRlbnQgPSBMaW5lQ2FuZGlkYXRlQ29udGVu
dCB7IH07Ci0gICAgd2hpbGUgKGN1cnJlbnRJdGVtSW5kZXggPCBtX2lubGluZUl0ZW1zLnNpemUo
KSkgeworICAgIHdoaWxlIChjdXJyZW50SXRlbUluZGV4IDwgbGF5b3V0UmFuZ2UuZW5kKSB7CiAg
ICAgICAgIC8vIDEuIENvbGxlY3QgdGhlIHNldCBvZiBydW5zIHRoYXQgd2UgY2FuIGNvbW1pdCB0
byB0aGUgbGluZSBhcyBvbmUgZW50aXR5IGUuZy4gPHNwYW4+dGV4dF9hbmRfc3Bhbl9zdGFydF9z
cGFuX2VuZDwvc3Bhbj4uCiAgICAgICAgIC8vIDIuIEFwcGx5IGZsb2F0cyBhbmQgc2hyaW5rIHRo
ZSBhdmFpbGFibGUgaG9yaXpvbnRhbCBzcGFjZSBlLmcuIDxzcGFuPmludHJ1XzxkaXYgc3R5bGU9
ImZsb2F0OiBsZWZ0Ij48L2Rpdj5zaXZlX2Zsb2F0PC9zcGFuPi4KICAgICAgICAgLy8gMy4gQ2hl
Y2sgaWYgdGhlIGNvbnRlbnQgZml0cyB0aGUgbGluZSBhbmQgY29tbWl0IHRoZSBjb250ZW50IGFj
Y29yZGluZ2x5IChmdWxsLCBwYXJ0aWFsIG9yIG5vdCBjb21taXQgYXQgYWxsKS4KICAgICAgICAg
Ly8gNC4gUmV0dXJuIGlmIHdlIGFyZSBhdCB0aGUgZW5kIG9mIHRoZSBsaW5lIGVpdGhlciBieSBu
b3QgYmVpbmcgYWJsZSB0byBmaXQgbW9yZSBjb250ZW50IG9yIGJlY2F1c2Ugb2YgYW4gZXhwbGlj
aXQgbGluZSBicmVhay4KLSAgICAgICAgbmV4dENvbnRlbnRGb3JMaW5lKGNhbmRpZGF0ZUNvbnRl
bnQsIGN1cnJlbnRJdGVtSW5kZXgsIHBhcnRpYWxMZWFkaW5nQ29udGVudExlbmd0aCwgbGluZS5s
aW5lQm94KCkubG9naWNhbFdpZHRoKCkpOworICAgICAgICBuZXh0Q29udGVudEZvckxpbmUoY2Fu
ZGlkYXRlQ29udGVudCwgY3VycmVudEl0ZW1JbmRleCwgbGF5b3V0UmFuZ2UsIHBhcnRpYWxMZWFk
aW5nQ29udGVudExlbmd0aCwgbGluZS5saW5lQm94KCkubG9naWNhbFdpZHRoKCkpOwogICAgICAg
ICBpZiAoY2FuZGlkYXRlQ29udGVudC5oYXNJbnRydXNpdmVGbG9hdHMoKSkgewogICAgICAgICAg
ICAgLy8gQWRkIGZsb2F0cyBmaXJzdCBiZWNhdXNlIHRoZXkgc2hyaW5rIHRoZSBhdmFpbGFibGUg
aG9yaXpvbnRhbCBzcGFjZSBmb3IgdGhlIHJlc3Qgb2YgdGhlIGNvbnRlbnQuCiAgICAgICAgICAg
ICBhdXRvIHJlc3VsdCA9IHRyeUFkZGluZ0Zsb2F0SXRlbXMobGluZSwgY2FuZGlkYXRlQ29udGVu
dC5mbG9hdHMoKSk7CiAgICAgICAgICAgICBjb21taXR0ZWRJbmxpbmVJdGVtQ291bnQgKz0gcmVz
dWx0LmNvbW1pdHRlZENvdW50OwogICAgICAgICAgICAgaWYgKHJlc3VsdC5pc0VuZE9mTGluZSA9
PSBMaW5lQnJlYWtlcjo6SXNFbmRPZkxpbmU6OlllcykgewogICAgICAgICAgICAgICAgIC8vIEZs
b2F0cyB0YWtlIHVwIGFsbCB0aGUgaG9yaXpvbnRhbCBzcGFjZS4KLSAgICAgICAgICAgICAgICBy
ZXR1cm4gY2xvc2UobGluZSwgbGVhZGluZ0lubGluZUl0ZW1JbmRleCwgY29tbWl0dGVkSW5saW5l
SXRlbUNvdW50LCB7IH0pOworICAgICAgICAgICAgICAgIHJldHVybiBjbG9zZShsaW5lLCBsYXlv
dXRSYW5nZSwgY29tbWl0dGVkSW5saW5lSXRlbUNvdW50LCB7IH0pOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgICAgIGlmICghY2FuZGlkYXRlQ29udGVudC5pbmxpbmVSdW5zKCkuaXNF
bXB0eSgpKSB7CkBAIC0yODcsMjUgKzI4NiwyNSBAQCBMaW5lTGF5b3V0Q29udGV4dDo6TGluZUNv
bnRlbnQgTGluZUxheW91dENvbnRleHQ6OmxheW91dExpbmUoTGluZUJ1aWxkZXImIGxpbmUsCiAg
ICAgICAgICAgICAgICAgQVNTRVJUKCFyZXN1bHQuY29tbWl0dGVkQ291bnQpOwogICAgICAgICAg
ICAgICAgIEFTU0VSVChyZXN1bHQuaXNFbmRPZkxpbmUgPT0gTGluZUJyZWFrZXI6OklzRW5kT2ZM
aW5lOjpZZXMpOwogICAgICAgICAgICAgICAgIC8vIEFuIGVhcmxpZXIgbGluZSB3cmFwcGluZyBv
cHBvcnR1bml0eSB0dXJuZWQgb3V0IHRvIGJlIHRoZSBmaW5hbCBicmVha2luZyBwb3NpdGlvbi4K
LSAgICAgICAgICAgICAgICByZWJ1aWxkTGluZUZvclJldmVydChsaW5lLCAqcmVzdWx0LnJldmVy
dFRvLCBsZWFkaW5nSW5saW5lSXRlbUluZGV4KTsKKyAgICAgICAgICAgICAgICByZWJ1aWxkTGlu
ZUZvclJldmVydChsaW5lLCAqcmVzdWx0LnJldmVydFRvLCBsYXlvdXRSYW5nZSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBjb21taXR0ZWRJbmxpbmVJdGVtQ291bnQgKz0gcmVzdWx0LmNv
bW1pdHRlZENvdW50OwogICAgICAgICAgICAgaWYgKHJlc3VsdC5pc0VuZE9mTGluZSA9PSBMaW5l
QnJlYWtlcjo6SXNFbmRPZkxpbmU6OlllcykgewogICAgICAgICAgICAgICAgIC8vIFdlIGNhbid0
IHBsYWNlIGFueSBtb3JlIGl0ZW1zIG9uIHRoZSBjdXJyZW50IGxpbmUuCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGNsb3NlKGxpbmUsIGxlYWRpbmdJbmxpbmVJdGVtSW5kZXgsIGNvbW1pdHRlZElu
bGluZUl0ZW1Db3VudCwgcmVzdWx0LnBhcnRpYWxDb250ZW50KTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gY2xvc2UobGluZSwgbGF5b3V0UmFuZ2UsIGNvbW1pdHRlZElubGluZUl0ZW1Db3VudCwg
cmVzdWx0LnBhcnRpYWxDb250ZW50KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlm
IChhdXRvKiB0cmFpbGluZ0xpbmVCcmVhayA9IGNhbmRpZGF0ZUNvbnRlbnQudHJhaWxpbmdMaW5l
QnJlYWsoKSkgewogICAgICAgICAgICAgbGluZS5hcHBlbmQoKnRyYWlsaW5nTGluZUJyZWFrLCAw
KTsKLSAgICAgICAgICAgIHJldHVybiBjbG9zZShsaW5lLCBsZWFkaW5nSW5saW5lSXRlbUluZGV4
LCArK2NvbW1pdHRlZElubGluZUl0ZW1Db3VudCwgeyB9KTsKKyAgICAgICAgICAgIHJldHVybiBj
bG9zZShsaW5lLCBsYXlvdXRSYW5nZSwgKytjb21taXR0ZWRJbmxpbmVJdGVtQ291bnQsIHsgfSk7
CiAgICAgICAgIH0KLSAgICAgICAgY3VycmVudEl0ZW1JbmRleCA9IGxlYWRpbmdJbmxpbmVJdGVt
SW5kZXggKyBjb21taXR0ZWRJbmxpbmVJdGVtQ291bnQ7CisgICAgICAgIGN1cnJlbnRJdGVtSW5k
ZXggPSBsYXlvdXRSYW5nZS5zdGFydCArIGNvbW1pdHRlZElubGluZUl0ZW1Db3VudDsKICAgICAg
ICAgcGFydGlhbExlYWRpbmdDb250ZW50TGVuZ3RoID0geyB9OwogICAgIH0KICAgICAvLyBMb29r
cyBsaWtlIHdlJ3ZlIHJ1biBvdXQgb2YgcnVucy4KLSAgICByZXR1cm4gY2xvc2UobGluZSwgbGVh
ZGluZ0lubGluZUl0ZW1JbmRleCwgY29tbWl0dGVkSW5saW5lSXRlbUNvdW50LCB7IH0pOworICAg
IHJldHVybiBjbG9zZShsaW5lLCBsYXlvdXRSYW5nZSwgY29tbWl0dGVkSW5saW5lSXRlbUNvdW50
LCB7IH0pOwogfQogCi1MaW5lTGF5b3V0Q29udGV4dDo6TGluZUNvbnRlbnQgTGluZUxheW91dENv
bnRleHQ6OmNsb3NlKExpbmVCdWlsZGVyJiBsaW5lLCB1bnNpZ25lZCBsZWFkaW5nSW5saW5lSXRl
bUluZGV4LCB1bnNpZ25lZCBjb21taXR0ZWRJbmxpbmVJdGVtQ291bnQsIE9wdGlvbmFsPExpbmVD
b250ZW50OjpQYXJ0aWFsQ29udGVudD4gcGFydGlhbENvbnRlbnQpCitMaW5lTGF5b3V0Q29udGV4
dDo6TGluZUNvbnRlbnQgTGluZUxheW91dENvbnRleHQ6OmNsb3NlKExpbmVCdWlsZGVyJiBsaW5l
LCBjb25zdCBJbmxpbmVJdGVtUmFuZ2UgbGF5b3V0UmFuZ2UsIHVuc2lnbmVkIGNvbW1pdHRlZElu
bGluZUl0ZW1Db3VudCwgT3B0aW9uYWw8TGluZUNvbnRlbnQ6OlBhcnRpYWxDb250ZW50PiBwYXJ0
aWFsQ29udGVudCkKIHsKICAgICBBU1NFUlQoY29tbWl0dGVkSW5saW5lSXRlbUNvdW50IHx8IGxp
bmUuaGFzSW50cnVzaXZlRmxvYXQoKSk7CiAgICAgaWYgKCFjb21taXR0ZWRJbmxpbmVJdGVtQ291
bnQpCkBAIC0zMTcsMTQgKzMxNiwxNSBAQCBMaW5lTGF5b3V0Q29udGV4dDo6TGluZUNvbnRlbnQg
TGluZUxheW91dENvbnRleHQ6OmNsb3NlKExpbmVCdWlsZGVyJiBsaW5lLCB1bnNpZwogICAgIGVs
c2UKICAgICAgICAgbV9zdWNjZXNzaXZlSHlwaGVuYXRlZExpbmVDb3VudCA9IDA7CiAKLSAgICBh
dXRvIHRyYWlsaW5nSW5saW5lSXRlbUluZGV4ID0gbGVhZGluZ0lubGluZUl0ZW1JbmRleCArIGNv
bW1pdHRlZElubGluZUl0ZW1Db3VudCAtIDE7CisgICAgYXV0byB0cmFpbGluZ0lubGluZUl0ZW1J
bmRleCA9IGxheW91dFJhbmdlLnN0YXJ0ICsgY29tbWl0dGVkSW5saW5lSXRlbUNvdW50IC0gMTsK
KyAgICBBU1NFUlQodHJhaWxpbmdJbmxpbmVJdGVtSW5kZXggPCBsYXlvdXRSYW5nZS5lbmQpOwog
ICAgIGF1dG8gaXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50ID0gWyZdIHsKLSAgICAgICAgaWYg
KHRyYWlsaW5nSW5saW5lSXRlbUluZGV4ID09IG1faW5saW5lSXRlbXMuc2l6ZSgpIC0gMSkKKyAg
ICAgICAgaWYgKHRyYWlsaW5nSW5saW5lSXRlbUluZGV4ID09IGxheW91dFJhbmdlLmVuZCAtIDEp
CiAgICAgICAgICAgICByZXR1cm4gTGluZUJ1aWxkZXI6OklzTGFzdExpbmVXaXRoSW5saW5lQ29u
dGVudDo6WWVzOwogICAgICAgICBpZiAocGFydGlhbENvbnRlbnQpCiAgICAgICAgICAgICByZXR1
cm4gTGluZUJ1aWxkZXI6OklzTGFzdExpbmVXaXRoSW5saW5lQ29udGVudDo6Tm87CiAgICAgICAg
IC8vIE9taXQgZmxvYXRzIHRvIHNlZSBpZiB0aGlzIGlzIHRoZSBsYXN0IGxpbmUgd2l0aCBpbmxp
bmUgY29udGVudC4KLSAgICAgICAgZm9yIChhdXRvIGkgPSBtX2lubGluZUl0ZW1zLnNpemUoKTsg
aS0tOykgeworICAgICAgICBmb3IgKGF1dG8gaSA9IGxheW91dFJhbmdlLmVuZDsgaS0tOykgewog
ICAgICAgICAgICAgaWYgKCFtX2lubGluZUl0ZW1zW2ldLmlzRmxvYXQoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gaSA9PSB0cmFpbGluZ0lubGluZUl0ZW1JbmRleCA/IExpbmVCdWlsZGVyOjpJ
c0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQ6OlllcyA6IExpbmVCdWlsZGVyOjpJc0xhc3RMaW5l
V2l0aElubGluZUNvbnRlbnQ6Ok5vOwogICAgICAgICB9CkBAIC0zMzUsMjggKzMzNSwyOCBAQCBM
aW5lTGF5b3V0Q29udGV4dDo6TGluZUNvbnRlbnQgTGluZUxheW91dENvbnRleHQ6OmNsb3NlKExp
bmVCdWlsZGVyJiBsaW5lLCB1bnNpZwogICAgIHJldHVybiBMaW5lQ29udGVudCB7IHRyYWlsaW5n
SW5saW5lSXRlbUluZGV4LCBwYXJ0aWFsQ29udGVudCwgV1RGTW92ZShtX2Zsb2F0cyksIGxpbmUu
Y2xvc2UoaXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50KSwgbGluZS5saW5lQm94KCkgfTsKIH0K
IAotdm9pZCBMaW5lTGF5b3V0Q29udGV4dDo6bmV4dENvbnRlbnRGb3JMaW5lKExpbmVDYW5kaWRh
dGVDb250ZW50JiBjYW5kaWRhdGVDb250ZW50LCB1bnNpZ25lZCBpbmxpbmVJdGVtSW5kZXgsIE9w
dGlvbmFsPHVuc2lnbmVkPiBwYXJ0aWFsTGVhZGluZ0NvbnRlbnRMZW5ndGgsIElubGluZUxheW91
dFVuaXQgY3VycmVudExvZ2ljYWxSaWdodCkKK3ZvaWQgTGluZUxheW91dENvbnRleHQ6Om5leHRD
b250ZW50Rm9yTGluZShMaW5lQ2FuZGlkYXRlQ29udGVudCYgY2FuZGlkYXRlQ29udGVudCwgdW5z
aWduZWQgY3VycmVudElubGluZUl0ZW1JbmRleCwgY29uc3QgSW5saW5lSXRlbVJhbmdlIGxheW91
dFJhbmdlLCBPcHRpb25hbDx1bnNpZ25lZD4gcGFydGlhbExlYWRpbmdDb250ZW50TGVuZ3RoLCBJ
bmxpbmVMYXlvdXRVbml0IGN1cnJlbnRMb2dpY2FsUmlnaHQpCiB7Ci0gICAgQVNTRVJUKGlubGlu
ZUl0ZW1JbmRleCA8IG1faW5saW5lSXRlbXMuc2l6ZSgpKTsKKyAgICBBU1NFUlQoY3VycmVudElu
bGluZUl0ZW1JbmRleCA8IGxheW91dFJhbmdlLmVuZCk7CiAgICAgY2FuZGlkYXRlQ29udGVudC5y
ZXNldCgpOwogICAgIC8vIDEuIFNpbXBseSBhZGQgYW55IG92ZXJmbG93IGNvbnRlbnQgZnJvbSB0
aGUgcHJldmlvdXMgbGluZSB0byB0aGUgY2FuZGlkYXRlIGNvbnRlbnQuIEl0J3MgYWx3YXlzIGEg
dGV4dCBjb250ZW50LgogICAgIC8vIDIuIEZpbmQgdGhlIG5leHQgc29mdCB3cmFwIHBvc2l0aW9u
IG9yIGV4cGxpY2l0IGxpbmUgYnJlYWsuCiAgICAgLy8gMy4gQ29sbGVjdCBmbG9hdHMgYmV0d2Vl
biB0aGUgaW5saW5lIGNvbnRlbnQuCi0gICAgYXV0byBzb2Z0V3JhcE9wcG9ydHVuaXR5SW5kZXgg
PSBuZXh0V3JhcE9wcG9ydHVuaXR5KG1faW5saW5lSXRlbXMsIGlubGluZUl0ZW1JbmRleCk7Ci0g
ICAgLy8gc29mdFdyYXBPcHBvcnR1bml0eUluZGV4ID09IG1faW5saW5lSXRlbXMuc2l6ZSgpIG1l
YW5zIHdlIGRvbid0IGhhdmUgYW55IHdyYXAgb3Bwb3J0dW5pdHkgaW4gdGhpcyBjb250ZW50Lgot
ICAgIEFTU0VSVChzb2Z0V3JhcE9wcG9ydHVuaXR5SW5kZXggPD0gbV9pbmxpbmVJdGVtcy5zaXpl
KCkpOworICAgIGF1dG8gc29mdFdyYXBPcHBvcnR1bml0eUluZGV4ID0gbmV4dFdyYXBPcHBvcnR1
bml0eShtX2lubGluZUl0ZW1zLCBjdXJyZW50SW5saW5lSXRlbUluZGV4LCBsYXlvdXRSYW5nZSk7
CisgICAgLy8gc29mdFdyYXBPcHBvcnR1bml0eUluZGV4ID09IGxheW91dFJhbmdlLmVuZCBtZWFu
cyB3ZSBkb24ndCBoYXZlIGFueSB3cmFwIG9wcG9ydHVuaXR5IGluIHRoaXMgY29udGVudC4KKyAg
ICBBU1NFUlQoc29mdFdyYXBPcHBvcnR1bml0eUluZGV4IDw9IGxheW91dFJhbmdlLmVuZCk7CiAK
ICAgICBpZiAocGFydGlhbExlYWRpbmdDb250ZW50TGVuZ3RoKSB7CiAgICAgICAgIC8vIEhhbmRs
ZSBsZWFkaW5nIHBhcnRpYWwgY29udGVudCBmaXJzdCAoc3BsaXQgdGV4dCBmcm9tIHRoZSBwcmV2
aW91cyBsaW5lKS4KICAgICAgICAgLy8gQ29uc3RydWN0IGEgcGFydGlhbCBsZWFkaW5nIGlubGlu
ZSBpdGVtLgotICAgICAgICBtX3BhcnRpYWxMZWFkaW5nVGV4dEl0ZW0gPSBkb3duY2FzdDxJbmxp
bmVUZXh0SXRlbT4obV9pbmxpbmVJdGVtc1tpbmxpbmVJdGVtSW5kZXhdKS5yaWdodCgqcGFydGlh
bExlYWRpbmdDb250ZW50TGVuZ3RoKTsKKyAgICAgICAgbV9wYXJ0aWFsTGVhZGluZ1RleHRJdGVt
ID0gZG93bmNhc3Q8SW5saW5lVGV4dEl0ZW0+KG1faW5saW5lSXRlbXNbY3VycmVudElubGluZUl0
ZW1JbmRleF0pLnJpZ2h0KCpwYXJ0aWFsTGVhZGluZ0NvbnRlbnRMZW5ndGgpOwogICAgICAgICBh
dXRvIGl0ZW1XaWR0aCA9IGlubGluZUl0ZW1XaWR0aCgqbV9wYXJ0aWFsTGVhZGluZ1RleHRJdGVt
LCBjdXJyZW50TG9naWNhbFJpZ2h0KTsKICAgICAgICAgY2FuZGlkYXRlQ29udGVudC5hcHBlbmRJ
bmxpbmVDb250ZW50KCptX3BhcnRpYWxMZWFkaW5nVGV4dEl0ZW0sIGl0ZW1XaWR0aCk7CiAgICAg
ICAgIGN1cnJlbnRMb2dpY2FsUmlnaHQgKz0gaXRlbVdpZHRoOwotICAgICAgICArK2lubGluZUl0
ZW1JbmRleDsKKyAgICAgICAgKytjdXJyZW50SW5saW5lSXRlbUluZGV4OwogICAgIH0KIAotICAg
IGZvciAoYXV0byBpbmRleCA9IGlubGluZUl0ZW1JbmRleDsgaW5kZXggPCBzb2Z0V3JhcE9wcG9y
dHVuaXR5SW5kZXg7ICsraW5kZXgpIHsKKyAgICBmb3IgKGF1dG8gaW5kZXggPSBjdXJyZW50SW5s
aW5lSXRlbUluZGV4OyBpbmRleCA8IHNvZnRXcmFwT3Bwb3J0dW5pdHlJbmRleDsgKytpbmRleCkg
ewogICAgICAgICBhdXRvJiBpbmxpbmVJdGVtID0gbV9pbmxpbmVJdGVtc1tpbmRleF07CiAgICAg
ICAgIGlmIChpbmxpbmVJdGVtLmlzVGV4dCgpIHx8IGlubGluZUl0ZW0uaXNDb250YWluZXJTdGFy
dCgpIHx8IGlubGluZUl0ZW0uaXNDb250YWluZXJFbmQoKSkgewogICAgICAgICAgICAgYXV0byBp
bmxpbmVJdGVubVdpZHRoID0gaW5saW5lSXRlbVdpZHRoKGlubGluZUl0ZW0sIGN1cnJlbnRMb2dp
Y2FsUmlnaHQpOwpAQCAtNDc4LDExICs0NzgsMTEgQEAgdm9pZCBMaW5lTGF5b3V0Q29udGV4dDo6
Y29tbWl0UGFydGlhbENvbnRlbnQoTGluZUJ1aWxkZXImIGxpbmUsIGNvbnN0IExpbmVCcmVha2UK
ICAgICB9CiB9CiAKLXZvaWQgTGluZUxheW91dENvbnRleHQ6OnJlYnVpbGRMaW5lRm9yUmV2ZXJ0
KExpbmVCdWlsZGVyJiBsaW5lLCBjb25zdCBJbmxpbmVJdGVtJiByZXZlcnRUbywgdW5zaWduZWQg
bGVhZGluZ0lubGluZUl0ZW1JbmRleCkKK3ZvaWQgTGluZUxheW91dENvbnRleHQ6OnJlYnVpbGRM
aW5lRm9yUmV2ZXJ0KExpbmVCdWlsZGVyJiBsaW5lLCBjb25zdCBJbmxpbmVJdGVtJiByZXZlcnRU
bywgY29uc3QgSW5saW5lSXRlbVJhbmdlIGxheW91dFJhbmdlKQogewogICAgIC8vIFRoaXMgaXMg
dGhlIHJhcmUgY2FzZSB3aGVuIHRoZSBsaW5lIG5lZWRzIHRvIGJlIHJldmVydGVkIHRvIGFuIGVh
cmxpZXIgcG9zaXRpb24uCiAgICAgbGluZS5yZXNldENvbnRlbnQoKTsKLSAgICBhdXRvIGlubGlu
ZUl0ZW1JbmRleCA9IGxlYWRpbmdJbmxpbmVJdGVtSW5kZXg7CisgICAgYXV0byBpbmxpbmVJdGVt
SW5kZXggPSBsYXlvdXRSYW5nZS5zdGFydDsKICAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxS
aWdodCA9IHsgfTsKICAgICBpZiAobV9wYXJ0aWFsTGVhZGluZ1RleHRJdGVtKSB7CiAgICAgICAg
IGF1dG8gbG9naWNhbFdpZHRoID0gaW5saW5lSXRlbVdpZHRoKCptX3BhcnRpYWxMZWFkaW5nVGV4
dEl0ZW0sIGxvZ2ljYWxSaWdodCk7CkBAIC00OTMsNyArNDkzLDcgQEAgdm9pZCBMaW5lTGF5b3V0
Q29udGV4dDo6cmVidWlsZExpbmVGb3JSZXZlcnQoTGluZUJ1aWxkZXImIGxpbmUsIGNvbnN0IElu
bGluZUl0ZW0KICAgICAgICAgKytpbmxpbmVJdGVtSW5kZXg7CiAgICAgfQogCi0gICAgZm9yICg7
IGlubGluZUl0ZW1JbmRleCA8IG1faW5saW5lSXRlbXMuc2l6ZSgpOyArK2lubGluZUl0ZW1JbmRl
eCkgeworICAgIGZvciAoOyBpbmxpbmVJdGVtSW5kZXggPCBsYXlvdXRSYW5nZS5lbmQ7ICsraW5s
aW5lSXRlbUluZGV4KSB7CiAgICAgICAgIGF1dG8mIGlubGluZUl0ZW0gPSBtX2lubGluZUl0ZW1z
W2lubGluZUl0ZW1JbmRleF07CiAgICAgICAgIGF1dG8gbG9naWNhbFdpZHRoID0gaW5saW5lSXRl
bVdpZHRoKGlubGluZUl0ZW0sIGxvZ2ljYWxSaWdodCk7CiAgICAgICAgIGxpbmUuYXBwZW5kKGlu
bGluZUl0ZW0sIGxvZ2ljYWxXaWR0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9MaW5lTGF5b3V0Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvTGluZUxheW91dENvbnRleHQuaAppbmRleCA1YTUzYmY4
M2YxNDNjZTliNjRhNDAxYTc0MTgzN2MwYWM1MjdmNGQ1Li45ZjBlZGQ4YjJmZDRjNDEyZDZkOWRi
M2M3NTdkZWU5NWNiZWY3MWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9MaW5lTGF5b3V0Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0xpbmVMYXlvdXRDb250ZXh0LmgKQEAgLTUwLDExICs1MCwx
NiBAQCBwdWJsaWM6CiAgICAgICAgIGNvbnN0IExpbmVCdWlsZGVyOjpSdW5MaXN0IHJ1bkxpc3Q7
CiAgICAgICAgIGNvbnN0IERpc3BsYXk6OkxpbmVCb3ggbGluZUJveDsKICAgICB9OwotICAgIExp
bmVDb250ZW50IGxheW91dExpbmUoTGluZUJ1aWxkZXImLCB1bnNpZ25lZCBsZWFkaW5nSW5saW5l
SXRlbUluZGV4LCBPcHRpb25hbDx1bnNpZ25lZD4gcGFydGlhbExlYWRpbmdDb250ZW50TGVuZ3Ro
KTsKKyAgICBzdHJ1Y3QgSW5saW5lSXRlbVJhbmdlIHsKKyAgICAgICAgYm9vbCBpc0VtcHR5KCkg
Y29uc3QgeyByZXR1cm4gc3RhcnQgPT0gZW5kOyB9CisgICAgICAgIHNpemVfdCBzdGFydCB7IDAg
fTsKKyAgICAgICAgc2l6ZV90IGVuZCB7IDAgfTsKKyAgICB9OworICAgIExpbmVDb250ZW50IGxh
eW91dExpbmUoTGluZUJ1aWxkZXImLCBjb25zdCBJbmxpbmVJdGVtUmFuZ2UsIE9wdGlvbmFsPHVu
c2lnbmVkPiBwYXJ0aWFsTGVhZGluZ0NvbnRlbnRMZW5ndGgpOwogICAgIHVzaW5nIEZsb2F0TGlz
dCA9IFZlY3Rvcjxjb25zdCBJbmxpbmVJdGVtKj47CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBuZXh0
Q29udGVudEZvckxpbmUoTGluZUNhbmRpZGF0ZUNvbnRlbnQmLCB1bnNpZ25lZCBpbmxpbmVJdGVt
SW5kZXgsIE9wdGlvbmFsPHVuc2lnbmVkPiBvdmVyZmxvd0xlbmd0aCwgSW5saW5lTGF5b3V0VW5p
dCBjdXJyZW50TG9naWNhbFJpZ2h0KTsKKyAgICB2b2lkIG5leHRDb250ZW50Rm9yTGluZShMaW5l
Q2FuZGlkYXRlQ29udGVudCYsIHVuc2lnbmVkIGlubGluZUl0ZW1JbmRleCwgY29uc3QgSW5saW5l
SXRlbVJhbmdlIGxheW91dFJhbmdlLCBPcHRpb25hbDx1bnNpZ25lZD4gb3ZlcmZsb3dMZW5ndGgs
IElubGluZUxheW91dFVuaXQgY3VycmVudExvZ2ljYWxSaWdodCk7CiAgICAgc3RydWN0IFJlc3Vs
dCB7CiAgICAgICAgIExpbmVCcmVha2VyOjpJc0VuZE9mTGluZSBpc0VuZE9mTGluZSB7IExpbmVC
cmVha2VyOjpJc0VuZE9mTGluZTo6Tm8gfTsKICAgICAgICAgc2l6ZV90IGNvbW1pdHRlZENvdW50
IHsgMCB9OwpAQCAtNjMsOSArNjgsOSBAQCBwcml2YXRlOgogICAgIH07CiAgICAgUmVzdWx0IHRy
eUFkZGluZ0Zsb2F0SXRlbXMoTGluZUJ1aWxkZXImLCBjb25zdCBGbG9hdExpc3QmKTsKICAgICBS
ZXN1bHQgdHJ5QWRkaW5nSW5saW5lSXRlbXMoTGluZUJyZWFrZXImLCBMaW5lQnVpbGRlciYsIGNv
bnN0IExpbmVDYW5kaWRhdGVDb250ZW50Jik7Ci0gICAgdm9pZCByZWJ1aWxkTGluZUZvclJldmVy
dChMaW5lQnVpbGRlciYsIGNvbnN0IElubGluZUl0ZW0mIHJldmVydFRvLCB1bnNpZ25lZCBsZWFk
aW5nSW5saW5lSXRlbUluZGV4KTsKKyAgICB2b2lkIHJlYnVpbGRMaW5lRm9yUmV2ZXJ0KExpbmVC
dWlsZGVyJiwgY29uc3QgSW5saW5lSXRlbSYgcmV2ZXJ0VG8sIGNvbnN0IElubGluZUl0ZW1SYW5n
ZSBsYXlvdXRSYW5nZSk7CiAgICAgdm9pZCBjb21taXRQYXJ0aWFsQ29udGVudChMaW5lQnVpbGRl
ciYsIGNvbnN0IExpbmVCcmVha2VyOjpSdW5MaXN0JiwgY29uc3QgTGluZUJyZWFrZXI6OlJlc3Vs
dDo6UGFydGlhbFRyYWlsaW5nQ29udGVudCYpOwotICAgIExpbmVDb250ZW50IGNsb3NlKExpbmVC
dWlsZGVyJiwgdW5zaWduZWQgbGVhZGluZ0lubGluZUl0ZW1JbmRleCwgdW5zaWduZWQgY29tbWl0
dGVkSW5saW5lSXRlbUNvdW50LCBPcHRpb25hbDxMaW5lQ29udGVudDo6UGFydGlhbENvbnRlbnQ+
KTsKKyAgICBMaW5lQ29udGVudCBjbG9zZShMaW5lQnVpbGRlciYsIGNvbnN0IElubGluZUl0ZW1S
YW5nZSBsYXlvdXRSYW5nZSwgdW5zaWduZWQgY29tbWl0dGVkSW5saW5lSXRlbUNvdW50LCBPcHRp
b25hbDxMaW5lQ29udGVudDo6UGFydGlhbENvbnRlbnQ+KTsKIAogICAgIElubGluZUxheW91dFVu
aXQgaW5saW5lSXRlbVdpZHRoKGNvbnN0IElubGluZUl0ZW0mLCBJbmxpbmVMYXlvdXRVbml0IGNv
bnRlbnRMb2dpY2FsTGVmdCkgY29uc3Q7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>