<?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>190187</bug_id>
          
          <creation_ts>2018-10-01 23:44:06 -0700</creation_ts>
          <short_desc>Make string MaxLength for all WTF and JS strings consistently equal to INT_MAX.</short_desc>
          <delta_ts>2018-10-08 21:52:42 -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>JavaScriptCore</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>
          
          <blocked>190392</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1465404</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-10-01 23:44:06 -0700</bug_when>
    <thetext>&lt;rdar://problem/42512909&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465734</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-10-02 13:06:42 -0700</bug_when>
    <thetext>*** Bug 165790 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465754</commentid>
    <comment_count>2</comment_count>
      <attachid>351437</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-10-02 13:59:01 -0700</bug_when>
    <thetext>Created attachment 351437
proposed patch.

Let&apos;s get some EWS testing first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465763</commentid>
    <comment_count>3</comment_count>
      <attachid>351441</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-10-02 14:43:20 -0700</bug_when>
    <thetext>Created attachment 351441
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465803</commentid>
    <comment_count>4</comment_count>
      <attachid>351441</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-10-02 15:55:22 -0700</bug_when>
    <thetext>Comment on attachment 351441
proposed patch.

I think this is ready for a code review.  Let&apos;s get some feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465862</commentid>
    <comment_count>5</comment_count>
      <attachid>351441</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-10-02 18:29:40 -0700</bug_when>
    <thetext>Comment on attachment 351441
proposed patch.

How did you chose INT_MAX over UINT_MAX?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465877</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-10-02 19:02:21 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #5)
&gt; Comment on attachment 351441 [details]
&gt; proposed patch.
&gt; 
&gt; How did you chose INT_MAX over UINT_MAX?

1. Most of the existing code (and tests) are already configured to check and test for a limit of INT_MAX.

2. We don&apos;t gain much by switching to UINT_MAX, because I don&apos;t think anyone would reasonably expect to work with a 2G (let alone 4G) length string except for realistic workloads.  The only times when one would typically work with strings that large are either for testing edge cases, or for malicious purposes in an attempt to break the system.

3. I ran the choices by Filip, and he chose INT_MAX.

We can certainly make UINT_MAX work, but I suspect it will be a larger change (possibly with greater risk of bugs) and it doesn&apos;t buy us much.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465878</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-10-02 19:04:35 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #6)
&gt; 2. We don&apos;t gain much by switching to UINT_MAX, because I don&apos;t think anyone
&gt; would reasonably expect to work with a 2G (let alone 4G) length string
&gt; except for realistic workloads.

Sorry, that&apos;s a typo: the &quot;except&quot; should not be there.  I meant to say &quot;I don&apos;t think anyone would reasonably expect to work with a 2G (let alone 4G) length string for realistic workloads.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466115</commentid>
    <comment_count>8</comment_count>
      <attachid>351441</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2018-10-03 11:01:31 -0700</bug_when>
    <thetext>Comment on attachment 351441
proposed patch.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466117</commentid>
    <comment_count>9</comment_count>
      <attachid>351441</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-10-03 11:02:53 -0700</bug_when>
    <thetext>Comment on attachment 351441
proposed patch.

Thanks for the review.  Landing now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466135</commentid>
    <comment_count>10</comment_count>
      <attachid>351441</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-03 11:29:03 -0700</bug_when>
    <thetext>Comment on attachment 351441
proposed patch.

Clearing flags on attachment: 351441

Committed r236804: &lt;https://trac.webkit.org/changeset/236804&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466136</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-03 11:29:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466988</commentid>
    <comment_count>12</comment_count>
      <attachid>351441</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-10-07 21:24:40 -0700</bug_when>
    <thetext>Comment on attachment 351441
proposed patch.

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

&gt; Source/WTF/wtf/text/StringConcatenate.h:145
&gt; +        RELEASE_ASSERT(length &lt;= String::MaxLength);

This seems not quite right.

Either we are safe and no one could ever pass a super-colossal string, so we don’t need this RELEASE_ASSERT, or we aren’t safe, in which case we need to make sure that length didn’t overflow above, because some super-colossal strings could overflow.

Same thinking applies above in the LChar version of this adapter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466991</commentid>
    <comment_count>13</comment_count>
      <attachid>351441</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-10-07 22:02:32 -0700</bug_when>
    <thetext>Comment on attachment 351441
proposed patch.

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

&gt;&gt; Source/WTF/wtf/text/StringConcatenate.h:145
&gt;&gt; +        RELEASE_ASSERT(length &lt;= String::MaxLength);
&gt; 
&gt; This seems not quite right.
&gt; 
&gt; Either we are safe and no one could ever pass a super-colossal string, so we don’t need this RELEASE_ASSERT, or we aren’t safe, in which case we need to make sure that length didn’t overflow above, because some super-colossal strings could overflow.
&gt; 
&gt; Same thinking applies above in the LChar version of this adapter.

Good catch.  The length check was never correct to begin with.  This RELEASE_ASSERT is bug compatible with the previous code.  I&apos;ll create a new patch with a fix.  Thanks again for the catch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467337</commentid>
    <comment_count>14</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-10-08 21:52:42 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #12)
&gt; Comment on attachment 351441 [details]
&gt; proposed patch.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=351441&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/text/StringConcatenate.h:145
&gt; &gt; +        RELEASE_ASSERT(length &lt;= String::MaxLength);
&gt; 
&gt; This seems not quite right.

I&apos;ll fix this in https://bugs.webkit.org/show_bug.cgi?id=190392.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351437</attachid>
            <date>2018-10-02 13:59:01 -0700</date>
            <delta_ts>2018-10-02 14:43:20 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-190187.patch</filename>
            <type>text/plain</type>
            <size>15556</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMzY3NjEpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDE4LTEwLTAyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBNYWtlIHN0cmluZyBNYXhMZW5ndGggZm9yIGFsbCBXVEYgYW5kIEpTIHN0
cmluZ3MgY29uc2lzdGVudGx5IGVxdWFsIHRvIElOVF9NQVguCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAxODcKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzQyNTEyOTA5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogc3RyZXNzL3JlZ3Jlc3MtMTkwMTg3LmpzOiBBZGRlZC4KKwogMjAxOC0xMC0wMiAg
Q2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0JpZ0ludF0gQmln
SW50LnByb3B0b3R5cGUudG9TdHJpbmcgaXMgYnJva2VuIHdoZW4gcmFkaXggaXMgcG93ZXIgb2Yg
MgpJbmRleDogSlNUZXN0cy9zdHJlc3MvcmVncmVzcy0xOTAxODcuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SlNUZXN0cy9zdHJlc3MvcmVncmVzcy0xOTAxODcuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0
cy9zdHJlc3MvcmVncmVzcy0xOTAxODcuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOCBA
QAorLy9AIHJ1bkRlZmF1bHQKKy8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkIG9yICRidWlsZFR5
cGUgPT0gImRlYnVnIgorLy9AIHNsb3chCisKK3RyeSB7CisgICAgdmFyIHYxID0gIkFBQUFBQUFB
QUFBIjsKKyAgICBmb3IodmFyIGkgPSAwOyBpIDwgMjc7IGkrKykKKyAgICAgIHYxID0gdjEgKyB2
MTsKKyAgICB2YXIgdjI7CisgICAgdmFyIHYzID0gUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZy5j
YWxsKHtzb3VyY2U6djEsZmxhZ3M6djF9KTsKKyAgICB2MyArPSB2MTsKKyAgICB2MiArPSB2My5s
b2NhbGVDb21wYXJlKHYxKTsKK30gY2F0Y2ggKGUpIHsKKyAgICBleGNlcHRpb24gPSBlOworfQor
CitpZiAoZXhjZXB0aW9uICE9ICJFcnJvcjogT3V0IG9mIG1lbW9yeSIpCisgICAgdGhyb3cgIkZB
SUxFRCI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNjc2NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwzNCBAQAorMjAxOC0xMC0wMiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAg
ICAgICAgTWFrZSBzdHJpbmcgTWF4TGVuZ3RoIGZvciBhbGwgV1RGIGFuZCBKUyBzdHJpbmdzIGNv
bnNpc3RlbnRseSBlcXVhbCB0byBJTlRfTUFYLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwMTg3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MjUx
MjkwOT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
bGxvd2luZyBkaWZmZXJlbnQgbWF4IHN0cmluZyBsZW5ndGhzIGF0IGVhY2ggbGV2ZWwgb3BlbnMg
dXAgb3Bwb3J0dW5pdGllcyBmb3IKKyAgICAgICAgYnVncyB0byBjcmVlcCBpbi4gIFdpdGggMiBk
aWZmZXJlbnQgbWF4IGxlbmd0aCB2YWx1ZXMsIGl0IGlzIG1vcmUgZGlmZmljdWx0IHRvCisgICAg
ICAgIGtlZXAgdGhlIHN0b3J5IHN0cmFpZ2h0IG9uIGhvdyB3ZSBkbyBvdmVyZmxvdyAvIGJvdW5k
cyBjaGVja3MgYXQgZWFjaCBwbGFjZSBpbgorICAgICAgICB0aGUgY29kZS4gIEl0J3MgYWxzbyBk
aWZmaWN1bHQgdG8gdGVsbCBpZiBhIHNlZW1pbmdseSB2YWxpZCBjaGVjayBhdCB0aGUgV1RGIGxl
dmVsCisgICAgICAgIHdpbGwgaGF2ZSBiYWQgcmFtaWZpY2F0aW9ucyBhdCB0aGUgSlNDIGxldmVs
LiAgQWxzbywgaXQncyBhbHNvIG5vdCBtZWFuaW5nZnVsIHRvCisgICAgICAgIHN1cHBvcnQgYSBt
YXggbGVuZ3RoID4gSU5UX01BWC4gIFRvIGVsaW1pbmF0ZSB0aGlzIGNsYXNzIG9mIGJ1Z3MsIHdl
J2xsCisgICAgICAgIHN0YW5kYXJkaXplIG9uIGEgTWF4TGVuZ3RoIG9mIElOVF9NQVggYXQgYWxs
IGxldmVscy4KKworICAgICAgICBXZSdsbCBhbHNvIHN0YW5kYXJkaXplIHRoZSB3YXkgd2UgZG8g
bGVuZ3RoIG92ZXJmbG93IGNoZWNrcyBvbiB1c2luZworICAgICAgICBDaGVja2VkQXJpdGhtZXRp
YywgYW5kIGFkZCBzb21lIGFzc2VydHMgdG8gZG9jdW1lbnQgdGhlIGFzc3VtcHRpb25zIG9mIHRo
ZSBjb2RlLgorCisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAg
ICAgICAgKEpTQzo6Y29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2spOgor
ICAgICAgICAtIEZpeCBPT00gZXJyb3IgaGFuZGxpbmcgd2hpY2ggY3Jhc2hlZCBhIHRlc3QgYWZ0
ZXIgdGhlIG5ldyBNYXhMZW5ndGggd2FzIGFwcGxpZWQuCisgICAgICAgICogcnVudGltZS9KU1N0
cmluZy5oOgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAoSlNDOjpKU1N0cmluZzo6Y3JlYXRlSGFzT3RoZXJPd25lcik6CisgICAgICAgIChKU0M6OkpT
U3RyaW5nOjpzZXRMZW5ndGgpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OmpzTWFrZU5vbnRyaXZpYWxTdHJpbmcpOgorICAgICAgICAqIHJ1bnRp
bWUvT3BlcmF0aW9ucy5oOgorICAgICAgICAoSlNDOjpqc1N0cmluZyk6CisKIDIwMTgtMTAtMDIg
IFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KIAogICAgICAgICBb
SlNDXSBBZGQgc3R1YiBvZiBFeGVjdXRhYmxlQWxsb2NhdG9yIHVzZWQgd2hlbiBKSVQgaXMgZGlz
YWJsZWQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3Ry
dWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMzY3MTQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTQ0LDcgKzE0NCwxMSBAQCBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2
YWxFCiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIFRoZSBzcGVjIG1hbmRhdGVzIHRoYXQgdGhl
IHBhcmFtZXRlcnMgcGFyc2UgYXMgYSB2YWxpZCBwYXJhbWV0ZXIgbGlzdAogICAgICAgICAgICAg
Ly8gaW5kZXBlbmRlbnQgb2YgdGhlIGZ1bmN0aW9uIGJvZHkuCi0gICAgICAgICAgICBTdHJpbmcg
cHJvZ3JhbSA9IG1ha2VTdHJpbmcoIigiLCBwcmVmaXgsICIoIiwgcGFyYW1ldGVyQnVpbGRlci50
b1N0cmluZygpLCAiKXtcblxufSkiKTsKKyAgICAgICAgICAgIFN0cmluZyBwcm9ncmFtID0gdHJ5
TWFrZVN0cmluZygiKCIsIHByZWZpeCwgIigiLCBwYXJhbWV0ZXJCdWlsZGVyLnRvU3RyaW5nKCks
ICIpe1xuXG59KSIpOworICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFwcm9ncmFtKSkgeworICAg
ICAgICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBTb3Vy
Y2VDb2RlIHNvdXJjZSA9IG1ha2VTb3VyY2UocHJvZ3JhbSwgc291cmNlT3JpZ2luLCBzb3VyY2VV
UkwsIHBvc2l0aW9uKTsKICAgICAgICAgICAgIEpTVmFsdWUgZXhjZXB0aW9uOwogICAgICAgICAg
ICAgY2hlY2tTeW50YXgoZXhlYywgc291cmNlLCAmZXhjZXB0aW9uKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkocmV2aXNpb24gMjM2NzE0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAt
OTUsOCArOTUsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gJnZtLnN0cmluZ1NwYWNlOwog
ICAgIH0KICAgICAKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgTWF4TGVuZ3RoID0gc3RkOjpu
dW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCk7Ci0gICAgCisgICAgLy8gV2UgZW1wbG95IG92
ZXJmbG93IGNoZWNrcyBpbiBtYW55IHBsYWNlcyB3aXRoIHRoZSBhc3N1bXB0aW9uIHRoYXQgTWF4
TGVuZ3RoCisgICAgLy8gaXMgSU5UX01BWC4gSGVuY2UsIGl0IGNhbm5vdCBiZSBjaGFuZ2VkIGlu
dG8gYW5vdGhlciBsZW5ndGggdmFsdWUgd2l0aG91dAorICAgIC8vIGJyZWFraW5nIGFsbCB0aGUg
Ym91bmRzIGFuZCBvdmVyZmxvdyBjaGVja3MgdGhhdCBhc3N1bWUgdGhpcy4KKyAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIE1heExlbmd0aCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJf
dD46Om1heCgpOworICAgIHN0YXRpY19hc3NlcnQoTWF4TGVuZ3RoID09IFN0cmluZzo6TWF4TGVu
Z3RoLCAiIik7CisKIHByaXZhdGU6CiAgICAgSlNTdHJpbmcoVk0mIHZtLCBSZWY8U3RyaW5nSW1w
bD4mJiB2YWx1ZSkKICAgICAgICAgOiBKU0NlbGwodm0sIHZtLnN0cmluZ1N0cnVjdHVyZS5nZXQo
KSkKQEAgLTEwOSw3ICsxMTMsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKFZNJiB2bSwgc2l6ZV90IGxlbmd0aCkKKyAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgdW5zaWduZWQgbGVuZ3RoKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFt
X3ZhbHVlLmlzTnVsbCgpKTsKICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwpAQCAt
MTE3LDcgKzEyMSw3IEBAIHByaXZhdGU6CiAgICAgICAgIHNldElzOEJpdChtX3ZhbHVlLmltcGwo
KS0+aXM4Qml0KCkpOwogICAgIH0KIAotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBz
aXplX3QgbGVuZ3RoLCBzaXplX3QgY29zdCkKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgdW5zaWduZWQgbGVuZ3RoLCBzaXplX3QgY29zdCkKICAgICB7CiAgICAgICAgIEFTU0VSVCgh
bV92YWx1ZS5pc051bGwoKSk7CiAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKQEAg
LTE0NSw3ICsxNDksNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHN0YXRpYyBKU1N0cmluZyogY3Jl
YXRlSGFzT3RoZXJPd25lcihWTSYgdm0sIFJlZjxTdHJpbmdJbXBsPiYmIHZhbHVlKQogICAgIHsK
LSAgICAgICAgc2l6ZV90IGxlbmd0aCA9IHZhbHVlLT5sZW5ndGgoKTsKKyAgICAgICAgdW5zaWdu
ZWQgbGVuZ3RoID0gdmFsdWUtPmxlbmd0aCgpOwogICAgICAgICBKU1N0cmluZyogbmV3U3RyaW5n
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KHZtLmhlYXApKSBKU1N0cmlu
Zyh2bSwgV1RGTW92ZSh2YWx1ZSkpOwogICAgICAgICBuZXdTdHJpbmctPmZpbmlzaENyZWF0aW9u
KHZtLCBsZW5ndGgpOwogICAgICAgICByZXR1cm4gbmV3U3RyaW5nOwpAQCAtMjA5LDYgKzIxMyw3
IEBAIHByb3RlY3RlZDoKIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRMZW5ndGgodW5zaWdu
ZWQgbGVuZ3RoKQogICAgIHsKKyAgICAgICAgQVNTRVJUKGxlbmd0aCA8PSBNYXhMZW5ndGgpOwog
ICAgICAgICBtX2xlbmd0aCA9IGxlbmd0aDsKICAgICB9CiAKQEAgLTI1NSwxMCArMjYwLDE0IEBA
IHB1YmxpYzoKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBpZiAo
bV9pbmRleCA9PSBKU1JvcGVTdHJpbmc6OnNfbWF4SW50ZXJuYWxSb3BlTGVuZ3RoKQogICAgICAg
ICAgICAgICAgIGV4cGFuZCgpOwotICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PGludDMyX3Q+
KG1fanNTdHJpbmctPmxlbmd0aCgpICsganNTdHJpbmctPmxlbmd0aCgpKSA8IDApIHsKKworICAg
ICAgICAgICAgc3RhdGljX2Fzc2VydChKU1N0cmluZzo6TWF4TGVuZ3RoID09IHN0ZDo6bnVtZXJp
Y19saW1pdHM8aW50MzJfdD46Om1heCgpLCAiIik7CisgICAgICAgICAgICBhdXRvIHN1bSA9IGNo
ZWNrZWRTdW08aW50MzJfdD4obV9qc1N0cmluZy0+bGVuZ3RoKCksIGpzU3RyaW5nLT5sZW5ndGgo
KSk7CisgICAgICAgICAgICBpZiAoc3VtLmhhc092ZXJmbG93ZWQoKSkgewogICAgICAgICAgICAg
ICAgIHRoaXMtPm92ZXJmbG93ZWQoKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgICAgICB9CisgICAgICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1
bS51bnNhZmVHZXQoKSkgPD0gTWF4TGVuZ3RoKTsKICAgICAgICAgICAgIG1fanNTdHJpbmctPmFw
cGVuZChtX3ZtLCBtX2luZGV4KyssIGpzU3RyaW5nKTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmlu
Z0lubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N0cmluZ0lubGluZXMuaAkocmV2aXNpb24gMjM2NzE0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTAsNiArNTAsNyBA
QCBpbmxpbmUgSlNWYWx1ZSBqc01ha2VOb250cml2aWFsU3RyaW5nKEV4CiAgICAgU3RyaW5nIHJl
c3VsdCA9IHRyeU1ha2VTdHJpbmcoc3RkOjpmb3J3YXJkPFN0cmluZ1R5cGU+KHN0cmluZyksIHN0
ZDo6Zm9yd2FyZDxTdHJpbmdUeXBlcz4oc3RyaW5ncykuLi4pOwogICAgIGlmIChVTkxJS0VMWSgh
cmVzdWx0KSkKICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29w
ZSk7CisgICAgQVNTRVJUKHJlc3VsdC5sZW5ndGgoKSA8PSBKU1N0cmluZzo6TWF4TGVuZ3RoKTsK
ICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKGV4ZWMsIFdURk1vdmUocmVzdWx0KSk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgJKHJl
dmlzaW9uIDIzNjcxNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlv
bnMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChD
KSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQg
KEMpIDIwMDItMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJp
Z2h0IChDKSAyMDAyLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTQyLDEyICs0MiwxMyBAQCBBTFdBWVNfSU5MSU5FIEpTU3RyaW5n
KiBqc1N0cmluZyhFeGVjU3RhCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBpbnQzMl90IGxlbmd0aDEgPSBz
MS0+bGVuZ3RoKCk7CisgICAgdW5zaWduZWQgbGVuZ3RoMSA9IHMxLT5sZW5ndGgoKTsKICAgICBp
ZiAoIWxlbmd0aDEpCiAgICAgICAgIHJldHVybiBzMjsKLSAgICBpbnQzMl90IGxlbmd0aDIgPSBz
Mi0+bGVuZ3RoKCk7CisgICAgdW5zaWduZWQgbGVuZ3RoMiA9IHMyLT5sZW5ndGgoKTsKICAgICBp
ZiAoIWxlbmd0aDIpCiAgICAgICAgIHJldHVybiBzMTsKKyAgICBzdGF0aWNfYXNzZXJ0KEpTU3Ry
aW5nOjpNYXhMZW5ndGggPT0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCksICIi
KTsKICAgICBpZiAoc3VtT3ZlcmZsb3dzPGludDMyX3Q+KGxlbmd0aDEsIGxlbmd0aDIpKSB7CiAg
ICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwpAQCAtNjEsMTkgKzYyLDE5IEBAIEFMV0FZU19JTkxJTkUgSlNTdHJpbmcqIGpz
U3RyaW5nKEV4ZWNTdGEKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGludDMyX3QgbGVuZ3RoMSA9IHMxLT5s
ZW5ndGgoKTsKKyAgICB1bnNpZ25lZCBsZW5ndGgxID0gczEtPmxlbmd0aCgpOwogICAgIGlmICgh
bGVuZ3RoMSkKICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBqc1N0cmluZyhleGVj
LCBzMiwgczMpKTsKIAotICAgIGludDMyX3QgbGVuZ3RoMiA9IHMyLT5sZW5ndGgoKTsKKyAgICB1
bnNpZ25lZCBsZW5ndGgyID0gczItPmxlbmd0aCgpOwogICAgIGlmICghbGVuZ3RoMikKICAgICAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBqc1N0cmluZyhleGVjLCBzMSwgczMpKTsKIAot
ICAgIGludDMyX3QgbGVuZ3RoMyA9IHMzLT5sZW5ndGgoKTsKKyAgICB1bnNpZ25lZCBsZW5ndGgz
ID0gczMtPmxlbmd0aCgpOwogICAgIGlmICghbGVuZ3RoMykKICAgICAgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBqc1N0cmluZyhleGVjLCBzMSwgczIpKTsKIAotCisgICAgc3RhdGljX2Fz
c2VydChKU1N0cmluZzo6TWF4TGVuZ3RoID09IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46
Om1heCgpLCAiIik7CiAgICAgaWYgKHN1bU92ZXJmbG93czxpbnQzMl90PihsZW5ndGgxLCBsZW5n
dGgyLCBsZW5ndGgzKSkgewogICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2Nv
cGUpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTg2LDkgKzg3LDkgQEAgQUxXQVlTX0lO
TElORSBKU1N0cmluZyoganNTdHJpbmcoRXhlY1N0YQogICAgIFZNKiB2bSA9ICZleGVjLT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7CiAKLSAgICBpbnQz
Ml90IGxlbmd0aDEgPSB1MS5sZW5ndGgoKTsKLSAgICBpbnQzMl90IGxlbmd0aDIgPSB1Mi5sZW5n
dGgoKTsKLSAgICBpbnQzMl90IGxlbmd0aDMgPSB1My5sZW5ndGgoKTsKKyAgICB1bnNpZ25lZCBs
ZW5ndGgxID0gdTEubGVuZ3RoKCk7CisgICAgdW5zaWduZWQgbGVuZ3RoMiA9IHUyLmxlbmd0aCgp
OworICAgIHVuc2lnbmVkIGxlbmd0aDMgPSB1My5sZW5ndGgoKTsKICAgICAKICAgICBpZiAobGVu
Z3RoMSA8IDAgfHwgbGVuZ3RoMiA8IDAgfHwgbGVuZ3RoMyA8IDApIHsKICAgICAgICAgdGhyb3dP
dXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKQEAgLTEwNCw2ICsxMDUsNyBAQCBBTFdBWVNf
SU5MSU5FIEpTU3RyaW5nKiBqc1N0cmluZyhFeGVjU3RhCiAgICAgaWYgKCFsZW5ndGgzKQogICAg
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGpzU3RyaW5nKGV4ZWMsIGpzU3RyaW5nKHZt
LCB1MSksIGpzU3RyaW5nKHZtLCB1MikpKTsKIAorICAgIHN0YXRpY19hc3NlcnQoSlNTdHJpbmc6
Ok1heExlbmd0aCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSwgIiIpOwog
ICAgIGlmIChzdW1PdmVyZmxvd3M8aW50MzJfdD4obGVuZ3RoMSwgbGVuZ3RoMiwgbGVuZ3RoMykp
IHsKICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjM2NzE0KQorKysgU291cmNlL1dURi9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxOC0xMC0wMiAgTWFy
ayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBzdHJpbmcgTWF4TGVu
Z3RoIGZvciBhbGwgV1RGIGFuZCBKUyBzdHJpbmdzIGNvbnNpc3RlbnRseSBlcXVhbCB0byBJTlRf
TUFYLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkw
MTg3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MjUxMjkwOT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVu
YXRlLmg6CisgICAgICAgIChXVEY6OnRyeU1ha2VTdHJpbmdGcm9tQWRhcHRlcnMpOgorICAgICAg
ICAoV1RGOjpzdW1XaXRoT3ZlcmZsb3cpOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi90ZXh0L1N0
cmluZ0ltcGwuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuaDoKKwogMjAxOC0xMC0w
MSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW3dhdGNoT1NdIEFk
b3B0IE5TVVJMU2Vzc2lvbkNvbXBhbmlvblByb3h5UHJlZmVyZW5jZQpJbmRleDogU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaAkocmV2aXNpb24gMjM2NzE0KQorKysgU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcs
NiArMjcsNyBAQAogI2RlZmluZSBTdHJpbmdDb25jYXRlbmF0ZV9oCiAKICNpbmNsdWRlIDxzdHJp
bmcuaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KIAogI2lmbmRlZiBBdG9t
aWNTdHJpbmdfaAogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgpAQCAtMTQxLDkg
KzE0Miw3IEBAIHB1YmxpYzoKICAgICAgICAgd2hpbGUgKG1fY2hhcmFjdGVyc1tsZW5ndGhdKQog
ICAgICAgICAgICAgKytsZW5ndGg7CiAKLSAgICAgICAgaWYgKGxlbmd0aCA+IHN0ZDo6bnVtZXJp
Y19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkgLy8gRklYTUUgdGhpcyBpcyBzaWxseSBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1NzkwCi0gICAgICAgICAgICBDUkFT
SCgpOwotCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGxlbmd0aCA8PSBTdHJpbmc6Ok1heExlbmd0
aCk7CiAgICAgICAgIG1fbGVuZ3RoID0gbGVuZ3RoOwogICAgIH0KIApAQCAtMjU5LDI0ICsyNTgs
NiBAQCBwdWJsaWM6CiAgICAgfQogfTsKIAotaW5saW5lIHZvaWQgc3VtV2l0aE92ZXJmbG93KGJv
b2wmIG92ZXJmbG93LCB1bnNpZ25lZCYgdG90YWwsIHVuc2lnbmVkIGFkZGVuZCkKLXsKLSAgICB1
bnNpZ25lZCBvbGRUb3RhbCA9IHRvdGFsOwotICAgIHRvdGFsID0gb2xkVG90YWwgKyBhZGRlbmQ7
Ci0gICAgaWYgKHRvdGFsIDwgb2xkVG90YWwpCi0gICAgICAgIG92ZXJmbG93ID0gdHJ1ZTsKLX0K
LQotdGVtcGxhdGU8dHlwZW5hbWUuLi4gVW5zaWduZWQ+Ci1pbmxpbmUgdm9pZCBzdW1XaXRoT3Zl
cmZsb3coYm9vbCYgb3ZlcmZsb3csIHVuc2lnbmVkJiB0b3RhbCwgdW5zaWduZWQgYWRkZW5kLCBV
bnNpZ25lZCAuLi5hZGRlbmRzKQotewotICAgIHVuc2lnbmVkIG9sZFRvdGFsID0gdG90YWw7Ci0g
ICAgdG90YWwgPSBvbGRUb3RhbCArIGFkZGVuZDsKLSAgICBpZiAodG90YWwgPCBvbGRUb3RhbCkK
LSAgICAgICAgb3ZlcmZsb3cgPSB0cnVlOwotICAgIHN1bVdpdGhPdmVyZmxvdyhvdmVyZmxvdywg
dG90YWwsIGFkZGVuZHMuLi4pOwotfQotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdGVyPgogaW5s
aW5lIGJvb2wgYXJlOEJpdChBZGFwdGVyIGFkYXB0ZXIpCiB7CkBAIC0zMDUsMTIgKzI4NiwxMyBA
QCBpbmxpbmUgdm9pZCBtYWtlU3RyaW5nQWNjdW11bGF0b3IoUmVzdWx0CiB0ZW1wbGF0ZTx0eXBl
bmFtZSBTdHJpbmdUeXBlQWRhcHRlciwgdHlwZW5hbWUuLi4gU3RyaW5nVHlwZUFkYXB0ZXJzPgog
U3RyaW5nIHRyeU1ha2VTdHJpbmdGcm9tQWRhcHRlcnMoU3RyaW5nVHlwZUFkYXB0ZXIgYWRhcHRl
ciwgU3RyaW5nVHlwZUFkYXB0ZXJzIC4uLmFkYXB0ZXJzKQogewotICAgIGJvb2wgb3ZlcmZsb3cg
PSBmYWxzZTsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBhZGFwdGVyLmxlbmd0aCgpOwotICAgIHN1
bVdpdGhPdmVyZmxvdyhvdmVyZmxvdywgbGVuZ3RoLCBhZGFwdGVycy5sZW5ndGgoKS4uLik7Ci0g
ICAgaWYgKG92ZXJmbG93KQorICAgIHN0YXRpY19hc3NlcnQoU3RyaW5nOjpNYXhMZW5ndGggPT0g
c3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCksICIiKTsKKyAgICBhdXRvIHN1bSA9
IGNoZWNrZWRTdW08aW50MzJfdD4oYWRhcHRlci5sZW5ndGgoKSwgYWRhcHRlcnMubGVuZ3RoKCku
Li4pOworICAgIGlmIChzdW0uaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CiAKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBzdW0udW5zYWZlR2V0KCk7CisgICAgQVNTRVJU
KGxlbmd0aCA8PSBTdHJpbmc6Ok1heExlbmd0aCk7CiAgICAgaWYgKGFyZThCaXQoYWRhcHRlciwg
YWRhcHRlcnMuLi4pKSB7CiAgICAgICAgIExDaGFyKiBidWZmZXI7CiAgICAgICAgIFJlZlB0cjxT
dHJpbmdJbXBsPiByZXN1bHRJbXBsID0gU3RyaW5nSW1wbDo6dHJ5Q3JlYXRlVW5pbml0aWFsaXpl
ZChsZW5ndGgsIGJ1ZmZlcik7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAkocmV2aXNp
b24gMjM2NzE0KQorKysgU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25v
bGwgKGtub2xsQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0xMzAsNiArMTMwLDkgQEAg
c3RydWN0IFN0cmluZ1N0YXRzIHsKIAogY2xhc3MgU3RyaW5nSW1wbFNoYXBlIHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShTdHJpbmdJbXBsU2hhcGUpOworcHVibGljOgorICAgIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgTWF4TGVuZ3RoID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90
Pjo6bWF4KCk7CisKIHByb3RlY3RlZDoKICAgICBTdHJpbmdJbXBsU2hhcGUodW5zaWduZWQgcmVm
Q291bnQsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgTENoYXIqLCB1bnNpZ25lZCBoYXNoQW5kRmxh
Z3MpOwogICAgIFN0cmluZ0ltcGxTaGFwZSh1bnNpZ25lZCByZWZDb3VudCwgdW5zaWduZWQgbGVu
Z3RoLCBjb25zdCBVQ2hhciosIHVuc2lnbmVkIGhhc2hBbmRGbGFncyk7CkBAIC0xODAsNiArMTgz
LDggQEAgY2xhc3MgU3RyaW5nSW1wbCA6IHByaXZhdGUgU3RyaW5nSW1wbFNoYQogcHVibGljOgog
ICAgIGVudW0gQnVmZmVyT3duZXJzaGlwIHsgQnVmZmVySW50ZXJuYWwsIEJ1ZmZlck93bmVkLCBC
dWZmZXJTdWJzdHJpbmcsIEJ1ZmZlckV4dGVybmFsIH07CiAKKyAgICBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIE1heExlbmd0aCA9IFN0cmluZ0ltcGxTaGFwZTo6TWF4TGVuZ3RoOworCiAgICAg
Ly8gVGhlIGJvdHRvbSA2IGJpdHMgaW4gdGhlIGhhc2ggYXJlIGZsYWdzLgogICAgIHN0YXRpYyBj
b25zdGV4cHIgY29uc3QgdW5zaWduZWQgc19mbGFnQ291bnQgPSA2OwogcHJpdmF0ZToKSW5kZXg6
IFNvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAkocmV2aXNpb24gMjM2NzE0KQorKysgU291cmNlL1dURi93
dGYvdGV4dC9XVEZTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMzY1LDYgKzM2NSw4IEBAIHB1
YmxpYzoKICAgICAvLyBUaGlzIGlzIHVzZWZ1bCBmb3IgY2xlYXJpbmcgU3RyaW5nLWJhc2VkIGNh
Y2hlcy4KICAgICB2b2lkIGNsZWFySW1wbElmTm90U2hhcmVkKCk7CiAKKyAgICBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIE1heExlbmd0aCA9IFN0cmluZ0ltcGw6Ok1heExlbmd0aDsKKwogcHJp
dmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHJlbW92ZUlu
dGVybmFsKGNvbnN0IENoYXJhY3RlclR5cGUqLCB1bnNpZ25lZCwgdW5zaWduZWQpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351441</attachid>
            <date>2018-10-02 14:43:20 -0700</date>
            <delta_ts>2018-10-03 11:29:03 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-190187.patch</filename>
            <type>text/plain</type>
            <size>15843</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMzY3NjUpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDE4LTEwLTAyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBNYWtlIHN0cmluZyBNYXhMZW5ndGggZm9yIGFsbCBXVEYgYW5kIEpTIHN0
cmluZ3MgY29uc2lzdGVudGx5IGVxdWFsIHRvIElOVF9NQVguCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAxODcKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzQyNTEyOTA5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogc3RyZXNzL3JlZ3Jlc3MtMTkwMTg3LmpzOiBBZGRlZC4KKwogMjAxOC0xMC0wMiAg
Q2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0JpZ0ludF0gQmln
SW50LnByb3B0b3R5cGUudG9TdHJpbmcgaXMgYnJva2VuIHdoZW4gcmFkaXggaXMgcG93ZXIgb2Yg
MgpJbmRleDogSlNUZXN0cy9zdHJlc3MvcmVncmVzcy0xOTAxODcuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SlNUZXN0cy9zdHJlc3MvcmVncmVzcy0xOTAxODcuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0
cy9zdHJlc3MvcmVncmVzcy0xOTAxODcuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOCBA
QAorLy9AIHJ1bkRlZmF1bHQKKy8vQCBza2lwIGlmICRtZW1vcnlMaW1pdGVkIG9yICRidWlsZFR5
cGUgPT0gImRlYnVnIgorLy9AIHNsb3chCisKK3RyeSB7CisgICAgdmFyIHYxID0gIkFBQUFBQUFB
QUFBIjsKKyAgICBmb3IodmFyIGkgPSAwOyBpIDwgMjc7IGkrKykKKyAgICAgIHYxID0gdjEgKyB2
MTsKKyAgICB2YXIgdjI7CisgICAgdmFyIHYzID0gUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZy5j
YWxsKHtzb3VyY2U6djEsZmxhZ3M6djF9KTsKKyAgICB2MyArPSB2MTsKKyAgICB2MiArPSB2My5s
b2NhbGVDb21wYXJlKHYxKTsKK30gY2F0Y2ggKGUpIHsKKyAgICBleGNlcHRpb24gPSBlOworfQor
CitpZiAoZXhjZXB0aW9uICE9ICJFcnJvcjogT3V0IG9mIG1lbW9yeSIpCisgICAgdGhyb3cgIkZB
SUxFRCI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNjc2NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwzNCBAQAorMjAxOC0xMC0wMiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAg
ICAgICAgTWFrZSBzdHJpbmcgTWF4TGVuZ3RoIGZvciBhbGwgV1RGIGFuZCBKUyBzdHJpbmdzIGNv
bnNpc3RlbnRseSBlcXVhbCB0byBJTlRfTUFYLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwMTg3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MjUx
MjkwOT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
bGxvd2luZyBkaWZmZXJlbnQgbWF4IHN0cmluZyBsZW5ndGhzIGF0IGVhY2ggbGV2ZWwgb3BlbnMg
dXAgb3Bwb3J0dW5pdGllcyBmb3IKKyAgICAgICAgYnVncyB0byBjcmVlcCBpbi4gIFdpdGggMiBk
aWZmZXJlbnQgbWF4IGxlbmd0aCB2YWx1ZXMsIGl0IGlzIG1vcmUgZGlmZmljdWx0IHRvCisgICAg
ICAgIGtlZXAgdGhlIHN0b3J5IHN0cmFpZ2h0IG9uIGhvdyB3ZSBkbyBvdmVyZmxvdyAvIGJvdW5k
cyBjaGVja3MgYXQgZWFjaCBwbGFjZSBpbgorICAgICAgICB0aGUgY29kZS4gIEl0J3MgYWxzbyBk
aWZmaWN1bHQgdG8gdGVsbCBpZiBhIHNlZW1pbmdseSB2YWxpZCBjaGVjayBhdCB0aGUgV1RGIGxl
dmVsCisgICAgICAgIHdpbGwgaGF2ZSBiYWQgcmFtaWZpY2F0aW9ucyBhdCB0aGUgSlNDIGxldmVs
LiAgQWxzbywgaXQncyBhbHNvIG5vdCBtZWFuaW5nZnVsIHRvCisgICAgICAgIHN1cHBvcnQgYSBt
YXggbGVuZ3RoID4gSU5UX01BWC4gIFRvIGVsaW1pbmF0ZSB0aGlzIGNsYXNzIG9mIGJ1Z3MsIHdl
J2xsCisgICAgICAgIHN0YW5kYXJkaXplIG9uIGEgTWF4TGVuZ3RoIG9mIElOVF9NQVggYXQgYWxs
IGxldmVscy4KKworICAgICAgICBXZSdsbCBhbHNvIHN0YW5kYXJkaXplIHRoZSB3YXkgd2UgZG8g
bGVuZ3RoIG92ZXJmbG93IGNoZWNrcyBvbiB1c2luZworICAgICAgICBDaGVja2VkQXJpdGhtZXRp
YywgYW5kIGFkZCBzb21lIGFzc2VydHMgdG8gZG9jdW1lbnQgdGhlIGFzc3VtcHRpb25zIG9mIHRo
ZSBjb2RlLgorCisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAg
ICAgICAgKEpTQzo6Y29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2spOgor
ICAgICAgICAtIEZpeCBPT00gZXJyb3IgaGFuZGxpbmcgd2hpY2ggY3Jhc2hlZCBhIHRlc3QgYWZ0
ZXIgdGhlIG5ldyBNYXhMZW5ndGggd2FzIGFwcGxpZWQuCisgICAgICAgICogcnVudGltZS9KU1N0
cmluZy5oOgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAoSlNDOjpKU1N0cmluZzo6Y3JlYXRlSGFzT3RoZXJPd25lcik6CisgICAgICAgIChKU0M6OkpT
U3RyaW5nOjpzZXRMZW5ndGgpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OmpzTWFrZU5vbnRyaXZpYWxTdHJpbmcpOgorICAgICAgICAqIHJ1bnRp
bWUvT3BlcmF0aW9ucy5oOgorICAgICAgICAoSlNDOjpqc1N0cmluZyk6CisKIDIwMTgtMTAtMDIg
IFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KIAogICAgICAgICBb
SlNDXSBBZGQgc3R1YiBvZiBFeGVjdXRhYmxlQWxsb2NhdG9yIHVzZWQgd2hlbiBKSVQgaXMgZGlz
YWJsZWQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3Ry
dWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMzY3NjUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTQ0LDcgKzE0NCwxMSBAQCBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2
YWxFCiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIFRoZSBzcGVjIG1hbmRhdGVzIHRoYXQgdGhl
IHBhcmFtZXRlcnMgcGFyc2UgYXMgYSB2YWxpZCBwYXJhbWV0ZXIgbGlzdAogICAgICAgICAgICAg
Ly8gaW5kZXBlbmRlbnQgb2YgdGhlIGZ1bmN0aW9uIGJvZHkuCi0gICAgICAgICAgICBTdHJpbmcg
cHJvZ3JhbSA9IG1ha2VTdHJpbmcoIigiLCBwcmVmaXgsICIoIiwgcGFyYW1ldGVyQnVpbGRlci50
b1N0cmluZygpLCAiKXtcblxufSkiKTsKKyAgICAgICAgICAgIFN0cmluZyBwcm9ncmFtID0gdHJ5
TWFrZVN0cmluZygiKCIsIHByZWZpeCwgIigiLCBwYXJhbWV0ZXJCdWlsZGVyLnRvU3RyaW5nKCks
ICIpe1xuXG59KSIpOworICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFwcm9ncmFtKSkgeworICAg
ICAgICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBTb3Vy
Y2VDb2RlIHNvdXJjZSA9IG1ha2VTb3VyY2UocHJvZ3JhbSwgc291cmNlT3JpZ2luLCBzb3VyY2VV
UkwsIHBvc2l0aW9uKTsKICAgICAgICAgICAgIEpTVmFsdWUgZXhjZXB0aW9uOwogICAgICAgICAg
ICAgY2hlY2tTeW50YXgoZXhlYywgc291cmNlLCAmZXhjZXB0aW9uKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkocmV2aXNpb24gMjM2NzY1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAt
OTUsOCArOTUsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gJnZtLnN0cmluZ1NwYWNlOwog
ICAgIH0KICAgICAKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgTWF4TGVuZ3RoID0gc3RkOjpu
dW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCk7Ci0gICAgCisgICAgLy8gV2UgZW1wbG95IG92
ZXJmbG93IGNoZWNrcyBpbiBtYW55IHBsYWNlcyB3aXRoIHRoZSBhc3N1bXB0aW9uIHRoYXQgTWF4
TGVuZ3RoCisgICAgLy8gaXMgSU5UX01BWC4gSGVuY2UsIGl0IGNhbm5vdCBiZSBjaGFuZ2VkIGlu
dG8gYW5vdGhlciBsZW5ndGggdmFsdWUgd2l0aG91dAorICAgIC8vIGJyZWFraW5nIGFsbCB0aGUg
Ym91bmRzIGFuZCBvdmVyZmxvdyBjaGVja3MgdGhhdCBhc3N1bWUgdGhpcy4KKyAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIE1heExlbmd0aCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJf
dD46Om1heCgpOworICAgIHN0YXRpY19hc3NlcnQoTWF4TGVuZ3RoID09IFN0cmluZzo6TWF4TGVu
Z3RoLCAiIik7CisKIHByaXZhdGU6CiAgICAgSlNTdHJpbmcoVk0mIHZtLCBSZWY8U3RyaW5nSW1w
bD4mJiB2YWx1ZSkKICAgICAgICAgOiBKU0NlbGwodm0sIHZtLnN0cmluZ1N0cnVjdHVyZS5nZXQo
KSkKQEAgLTEwOSw3ICsxMTMsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKFZNJiB2bSwgc2l6ZV90IGxlbmd0aCkKKyAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgdW5zaWduZWQgbGVuZ3RoKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFt
X3ZhbHVlLmlzTnVsbCgpKTsKICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwpAQCAt
MTE3LDcgKzEyMSw3IEBAIHByaXZhdGU6CiAgICAgICAgIHNldElzOEJpdChtX3ZhbHVlLmltcGwo
KS0+aXM4Qml0KCkpOwogICAgIH0KIAotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBz
aXplX3QgbGVuZ3RoLCBzaXplX3QgY29zdCkKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgdW5zaWduZWQgbGVuZ3RoLCBzaXplX3QgY29zdCkKICAgICB7CiAgICAgICAgIEFTU0VSVCgh
bV92YWx1ZS5pc051bGwoKSk7CiAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKQEAg
LTE0NSw3ICsxNDksNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHN0YXRpYyBKU1N0cmluZyogY3Jl
YXRlSGFzT3RoZXJPd25lcihWTSYgdm0sIFJlZjxTdHJpbmdJbXBsPiYmIHZhbHVlKQogICAgIHsK
LSAgICAgICAgc2l6ZV90IGxlbmd0aCA9IHZhbHVlLT5sZW5ndGgoKTsKKyAgICAgICAgdW5zaWdu
ZWQgbGVuZ3RoID0gdmFsdWUtPmxlbmd0aCgpOwogICAgICAgICBKU1N0cmluZyogbmV3U3RyaW5n
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KHZtLmhlYXApKSBKU1N0cmlu
Zyh2bSwgV1RGTW92ZSh2YWx1ZSkpOwogICAgICAgICBuZXdTdHJpbmctPmZpbmlzaENyZWF0aW9u
KHZtLCBsZW5ndGgpOwogICAgICAgICByZXR1cm4gbmV3U3RyaW5nOwpAQCAtMjA5LDYgKzIxMyw3
IEBAIHByb3RlY3RlZDoKIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRMZW5ndGgodW5zaWdu
ZWQgbGVuZ3RoKQogICAgIHsKKyAgICAgICAgQVNTRVJUKGxlbmd0aCA8PSBNYXhMZW5ndGgpOwog
ICAgICAgICBtX2xlbmd0aCA9IGxlbmd0aDsKICAgICB9CiAKQEAgLTI1NSwxMCArMjYwLDE0IEBA
IHB1YmxpYzoKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBpZiAo
bV9pbmRleCA9PSBKU1JvcGVTdHJpbmc6OnNfbWF4SW50ZXJuYWxSb3BlTGVuZ3RoKQogICAgICAg
ICAgICAgICAgIGV4cGFuZCgpOwotICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PGludDMyX3Q+
KG1fanNTdHJpbmctPmxlbmd0aCgpICsganNTdHJpbmctPmxlbmd0aCgpKSA8IDApIHsKKworICAg
ICAgICAgICAgc3RhdGljX2Fzc2VydChKU1N0cmluZzo6TWF4TGVuZ3RoID09IHN0ZDo6bnVtZXJp
Y19saW1pdHM8aW50MzJfdD46Om1heCgpLCAiIik7CisgICAgICAgICAgICBhdXRvIHN1bSA9IGNo
ZWNrZWRTdW08aW50MzJfdD4obV9qc1N0cmluZy0+bGVuZ3RoKCksIGpzU3RyaW5nLT5sZW5ndGgo
KSk7CisgICAgICAgICAgICBpZiAoc3VtLmhhc092ZXJmbG93ZWQoKSkgewogICAgICAgICAgICAg
ICAgIHRoaXMtPm92ZXJmbG93ZWQoKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgICAgICB9CisgICAgICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1
bS51bnNhZmVHZXQoKSkgPD0gTWF4TGVuZ3RoKTsKICAgICAgICAgICAgIG1fanNTdHJpbmctPmFw
cGVuZChtX3ZtLCBtX2luZGV4KyssIGpzU3RyaW5nKTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmlu
Z0lubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N0cmluZ0lubGluZXMuaAkocmV2aXNpb24gMjM2NzY1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTAsNiArNTAsNyBA
QCBpbmxpbmUgSlNWYWx1ZSBqc01ha2VOb250cml2aWFsU3RyaW5nKEV4CiAgICAgU3RyaW5nIHJl
c3VsdCA9IHRyeU1ha2VTdHJpbmcoc3RkOjpmb3J3YXJkPFN0cmluZ1R5cGU+KHN0cmluZyksIHN0
ZDo6Zm9yd2FyZDxTdHJpbmdUeXBlcz4oc3RyaW5ncykuLi4pOwogICAgIGlmIChVTkxJS0VMWSgh
cmVzdWx0KSkKICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29w
ZSk7CisgICAgQVNTRVJUKHJlc3VsdC5sZW5ndGgoKSA8PSBKU1N0cmluZzo6TWF4TGVuZ3RoKTsK
ICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKGV4ZWMsIFdURk1vdmUocmVzdWx0KSk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgJKHJl
dmlzaW9uIDIzNjc2NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlv
bnMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChD
KSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQg
KEMpIDIwMDItMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJp
Z2h0IChDKSAyMDAyLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTQyLDEyICs0MiwxMyBAQCBBTFdBWVNfSU5MSU5FIEpTU3RyaW5n
KiBqc1N0cmluZyhFeGVjU3RhCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBpbnQzMl90IGxlbmd0aDEgPSBz
MS0+bGVuZ3RoKCk7CisgICAgdW5zaWduZWQgbGVuZ3RoMSA9IHMxLT5sZW5ndGgoKTsKICAgICBp
ZiAoIWxlbmd0aDEpCiAgICAgICAgIHJldHVybiBzMjsKLSAgICBpbnQzMl90IGxlbmd0aDIgPSBz
Mi0+bGVuZ3RoKCk7CisgICAgdW5zaWduZWQgbGVuZ3RoMiA9IHMyLT5sZW5ndGgoKTsKICAgICBp
ZiAoIWxlbmd0aDIpCiAgICAgICAgIHJldHVybiBzMTsKKyAgICBzdGF0aWNfYXNzZXJ0KEpTU3Ry
aW5nOjpNYXhMZW5ndGggPT0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCksICIi
KTsKICAgICBpZiAoc3VtT3ZlcmZsb3dzPGludDMyX3Q+KGxlbmd0aDEsIGxlbmd0aDIpKSB7CiAg
ICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwpAQCAtNjEsMTkgKzYyLDE5IEBAIEFMV0FZU19JTkxJTkUgSlNTdHJpbmcqIGpz
U3RyaW5nKEV4ZWNTdGEKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGludDMyX3QgbGVuZ3RoMSA9IHMxLT5s
ZW5ndGgoKTsKKyAgICB1bnNpZ25lZCBsZW5ndGgxID0gczEtPmxlbmd0aCgpOwogICAgIGlmICgh
bGVuZ3RoMSkKICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBqc1N0cmluZyhleGVj
LCBzMiwgczMpKTsKIAotICAgIGludDMyX3QgbGVuZ3RoMiA9IHMyLT5sZW5ndGgoKTsKKyAgICB1
bnNpZ25lZCBsZW5ndGgyID0gczItPmxlbmd0aCgpOwogICAgIGlmICghbGVuZ3RoMikKICAgICAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBqc1N0cmluZyhleGVjLCBzMSwgczMpKTsKIAot
ICAgIGludDMyX3QgbGVuZ3RoMyA9IHMzLT5sZW5ndGgoKTsKKyAgICB1bnNpZ25lZCBsZW5ndGgz
ID0gczMtPmxlbmd0aCgpOwogICAgIGlmICghbGVuZ3RoMykKICAgICAgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBqc1N0cmluZyhleGVjLCBzMSwgczIpKTsKIAotCisgICAgc3RhdGljX2Fz
c2VydChKU1N0cmluZzo6TWF4TGVuZ3RoID09IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46
Om1heCgpLCAiIik7CiAgICAgaWYgKHN1bU92ZXJmbG93czxpbnQzMl90PihsZW5ndGgxLCBsZW5n
dGgyLCBsZW5ndGgzKSkgewogICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2Nv
cGUpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTg2LDE1ICs4NywxMyBAQCBBTFdBWVNf
SU5MSU5FIEpTU3RyaW5nKiBqc1N0cmluZyhFeGVjU3RhCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKIAotICAgIGlu
dDMyX3QgbGVuZ3RoMSA9IHUxLmxlbmd0aCgpOwotICAgIGludDMyX3QgbGVuZ3RoMiA9IHUyLmxl
bmd0aCgpOwotICAgIGludDMyX3QgbGVuZ3RoMyA9IHUzLmxlbmd0aCgpOwotICAgIAotICAgIGlm
IChsZW5ndGgxIDwgMCB8fCBsZW5ndGgyIDwgMCB8fCBsZW5ndGgzIDwgMCkgewotICAgICAgICB0
aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOwotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICB9Ci0gICAgCisgICAgdW5zaWduZWQgbGVuZ3RoMSA9IHUxLmxlbmd0aCgpOworICAg
IHVuc2lnbmVkIGxlbmd0aDIgPSB1Mi5sZW5ndGgoKTsKKyAgICB1bnNpZ25lZCBsZW5ndGgzID0g
dTMubGVuZ3RoKCk7CisgICAgQVNTRVJUKGxlbmd0aDEgPD0gSlNTdHJpbmc6Ok1heExlbmd0aCk7
CisgICAgQVNTRVJUKGxlbmd0aDIgPD0gSlNTdHJpbmc6Ok1heExlbmd0aCk7CisgICAgQVNTRVJU
KGxlbmd0aDMgPD0gSlNTdHJpbmc6Ok1heExlbmd0aCk7CisKICAgICBpZiAoIWxlbmd0aDEpCiAg
ICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwganNTdHJpbmcoZXhlYywganNTdHJpbmco
dm0sIHUyKSwganNTdHJpbmcodm0sIHUzKSkpOwogCkBAIC0xMDQsNiArMTAzLDcgQEAgQUxXQVlT
X0lOTElORSBKU1N0cmluZyoganNTdHJpbmcoRXhlY1N0YQogICAgIGlmICghbGVuZ3RoMykKICAg
ICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBqc1N0cmluZyhleGVjLCBqc1N0cmluZyh2
bSwgdTEpLCBqc1N0cmluZyh2bSwgdTIpKSk7CiAKKyAgICBzdGF0aWNfYXNzZXJ0KEpTU3RyaW5n
OjpNYXhMZW5ndGggPT0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCksICIiKTsK
ICAgICBpZiAoc3VtT3ZlcmZsb3dzPGludDMyX3Q+KGxlbmd0aDEsIGxlbmd0aDIsIGxlbmd0aDMp
KSB7CiAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNjc2NSkKKysrIFNvdXJjZS9XVEYv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTgtMTAtMDIgIE1h
cmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2Ugc3RyaW5nIE1heExl
bmd0aCBmb3IgYWxsIFdURiBhbmQgSlMgc3RyaW5ncyBjb25zaXN0ZW50bHkgZXF1YWwgdG8gSU5U
X01BWC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
MDE4NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDI1MTI5MDk+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdDb25jYXRl
bmF0ZS5oOgorICAgICAgICAoV1RGOjp0cnlNYWtlU3RyaW5nRnJvbUFkYXB0ZXJzKToKKyAgICAg
ICAgKFdURjo6c3VtV2l0aE92ZXJmbG93KTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvdGV4dC9T
dHJpbmdJbXBsLmg6CisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5nLmg6CisKIDIwMTgtMTAt
MDIgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMzY2MjQgYW5kIHIyMzY2NzEuCkluZGV4OiBTb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oCShyZXZpc2lvbiAyMzY3NjUpCisrKyBTb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
Nyw2ICsyNyw3IEBACiAjZGVmaW5lIFN0cmluZ0NvbmNhdGVuYXRlX2gKIAogI2luY2x1ZGUgPHN0
cmluZy5oPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogCiAjaWZuZGVmIEF0
b21pY1N0cmluZ19oCiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CkBAIC0xNDEs
OSArMTQyLDcgQEAgcHVibGljOgogICAgICAgICB3aGlsZSAobV9jaGFyYWN0ZXJzW2xlbmd0aF0p
CiAgICAgICAgICAgICArK2xlbmd0aDsKIAotICAgICAgICBpZiAobGVuZ3RoID4gc3RkOjpudW1l
cmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSAvLyBGSVhNRSB0aGlzIGlzIHNpbGx5IGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU3OTAKLSAgICAgICAgICAgIENS
QVNIKCk7Ci0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobGVuZ3RoIDw9IFN0cmluZzo6TWF4TGVu
Z3RoKTsKICAgICAgICAgbV9sZW5ndGggPSBsZW5ndGg7CiAgICAgfQogCkBAIC0yNTksMjQgKzI1
OCw2IEBAIHB1YmxpYzoKICAgICB9CiB9OwogCi1pbmxpbmUgdm9pZCBzdW1XaXRoT3ZlcmZsb3co
Ym9vbCYgb3ZlcmZsb3csIHVuc2lnbmVkJiB0b3RhbCwgdW5zaWduZWQgYWRkZW5kKQotewotICAg
IHVuc2lnbmVkIG9sZFRvdGFsID0gdG90YWw7Ci0gICAgdG90YWwgPSBvbGRUb3RhbCArIGFkZGVu
ZDsKLSAgICBpZiAodG90YWwgPCBvbGRUb3RhbCkKLSAgICAgICAgb3ZlcmZsb3cgPSB0cnVlOwot
fQotCi10ZW1wbGF0ZTx0eXBlbmFtZS4uLiBVbnNpZ25lZD4KLWlubGluZSB2b2lkIHN1bVdpdGhP
dmVyZmxvdyhib29sJiBvdmVyZmxvdywgdW5zaWduZWQmIHRvdGFsLCB1bnNpZ25lZCBhZGRlbmQs
IFVuc2lnbmVkIC4uLmFkZGVuZHMpCi17Ci0gICAgdW5zaWduZWQgb2xkVG90YWwgPSB0b3RhbDsK
LSAgICB0b3RhbCA9IG9sZFRvdGFsICsgYWRkZW5kOwotICAgIGlmICh0b3RhbCA8IG9sZFRvdGFs
KQotICAgICAgICBvdmVyZmxvdyA9IHRydWU7Ci0gICAgc3VtV2l0aE92ZXJmbG93KG92ZXJmbG93
LCB0b3RhbCwgYWRkZW5kcy4uLik7Ci19Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0ZXI+CiBp
bmxpbmUgYm9vbCBhcmU4Qml0KEFkYXB0ZXIgYWRhcHRlcikKIHsKQEAgLTMwNSwxMiArMjg2LDEz
IEBAIGlubGluZSB2b2lkIG1ha2VTdHJpbmdBY2N1bXVsYXRvcihSZXN1bHQKIHRlbXBsYXRlPHR5
cGVuYW1lIFN0cmluZ1R5cGVBZGFwdGVyLCB0eXBlbmFtZS4uLiBTdHJpbmdUeXBlQWRhcHRlcnM+
CiBTdHJpbmcgdHJ5TWFrZVN0cmluZ0Zyb21BZGFwdGVycyhTdHJpbmdUeXBlQWRhcHRlciBhZGFw
dGVyLCBTdHJpbmdUeXBlQWRhcHRlcnMgLi4uYWRhcHRlcnMpCiB7Ci0gICAgYm9vbCBvdmVyZmxv
dyA9IGZhbHNlOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGFkYXB0ZXIubGVuZ3RoKCk7Ci0gICAg
c3VtV2l0aE92ZXJmbG93KG92ZXJmbG93LCBsZW5ndGgsIGFkYXB0ZXJzLmxlbmd0aCgpLi4uKTsK
LSAgICBpZiAob3ZlcmZsb3cpCisgICAgc3RhdGljX2Fzc2VydChTdHJpbmc6Ok1heExlbmd0aCA9
PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSwgIiIpOworICAgIGF1dG8gc3Vt
ID0gY2hlY2tlZFN1bTxpbnQzMl90PihhZGFwdGVyLmxlbmd0aCgpLCBhZGFwdGVycy5sZW5ndGgo
KS4uLik7CisgICAgaWYgKHN1bS5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKIAorICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN1bS51bnNhZmVHZXQoKTsKKyAgICBBU1NF
UlQobGVuZ3RoIDw9IFN0cmluZzo6TWF4TGVuZ3RoKTsKICAgICBpZiAoYXJlOEJpdChhZGFwdGVy
LCBhZGFwdGVycy4uLikpIHsKICAgICAgICAgTENoYXIqIGJ1ZmZlcjsKICAgICAgICAgUmVmUHRy
PFN0cmluZ0ltcGw+IHJlc3VsdEltcGwgPSBTdHJpbmdJbXBsOjp0cnlDcmVhdGVVbmluaXRpYWxp
emVkKGxlbmd0aCwgYnVmZmVyKTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1w
bC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCShyZXZp
c2lvbiAyMzY3NjUpCisrKyBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBL
bm9sbCAoa25vbGxAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNS0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNS0yMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTEzMCw2ICsxMzAsOSBA
QCBzdHJ1Y3QgU3RyaW5nU3RhdHMgewogCiBjbGFzcyBTdHJpbmdJbXBsU2hhcGUgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFN0cmluZ0ltcGxTaGFwZSk7CitwdWJsaWM6CisgICAgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBNYXhMZW5ndGggPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMy
X3Q+OjptYXgoKTsKKwogcHJvdGVjdGVkOgogICAgIFN0cmluZ0ltcGxTaGFwZSh1bnNpZ25lZCBy
ZWZDb3VudCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBMQ2hhciosIHVuc2lnbmVkIGhhc2hBbmRG
bGFncyk7CiAgICAgU3RyaW5nSW1wbFNoYXBlKHVuc2lnbmVkIHJlZkNvdW50LCB1bnNpZ25lZCBs
ZW5ndGgsIGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgaGFzaEFuZEZsYWdzKTsKQEAgLTE4MCw2ICsx
ODMsOCBAQCBjbGFzcyBTdHJpbmdJbXBsIDogcHJpdmF0ZSBTdHJpbmdJbXBsU2hhCiBwdWJsaWM6
CiAgICAgZW51bSBCdWZmZXJPd25lcnNoaXAgeyBCdWZmZXJJbnRlcm5hbCwgQnVmZmVyT3duZWQs
IEJ1ZmZlclN1YnN0cmluZywgQnVmZmVyRXh0ZXJuYWwgfTsKIAorICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgTWF4TGVuZ3RoID0gU3RyaW5nSW1wbFNoYXBlOjpNYXhMZW5ndGg7CisKICAg
ICAvLyBUaGUgYm90dG9tIDYgYml0cyBpbiB0aGUgaGFzaCBhcmUgZmxhZ3MuCiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBjb25zdCB1bnNpZ25lZCBzX2ZsYWdDb3VudCA9IDY7CiBwcml2YXRlOgpJbmRl
eDogU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCShyZXZpc2lvbiAyMzY3NjUpCisrKyBTb3VyY2UvV1RG
L3d0Zi90ZXh0L1dURlN0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNjUsNiArMzY1LDggQEAg
cHVibGljOgogICAgIC8vIFRoaXMgaXMgdXNlZnVsIGZvciBjbGVhcmluZyBTdHJpbmctYmFzZWQg
Y2FjaGVzLgogICAgIHZvaWQgY2xlYXJJbXBsSWZOb3RTaGFyZWQoKTsKIAorICAgIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgTWF4TGVuZ3RoID0gU3RyaW5nSW1wbDo6TWF4TGVuZ3RoOworCiBw
cml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgcmVtb3Zl
SW50ZXJuYWwoY29uc3QgQ2hhcmFjdGVyVHlwZSosIHVuc2lnbmVkLCB1bnNpZ25lZCk7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>