<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.kde.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.6"
          urlbase="https://bugs.kde.org/"
          
          maintainer="sysadmin@kde.org"
>

    <bug>
          <bug_id>96536</bug_id>
          
          <creation_ts>2005-01-07 17:26:46 +0000</creation_ts>
          <short_desc>Unicode decomposed text gets garbled in Konsole (NFD mode)</short_desc>
          <delta_ts>2020-11-26 22:58:25 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>2</classification_id>
          <classification>Applications</classification>
          <product>konsole</product>
          <component>general</component>
          <version>1.5</version>
          <rep_platform>unspecified</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>NOR</priority>
          <bug_severity>minor</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Thiago Macieira">thiago</reporter>
          <assigned_to name="Konsole Bugs">konsole-bugs-null</assigned_to>
          <cc>aacid</cc>
    
    <cc>ach</cc>
    
    <cc>albbas</cc>
    
    <cc>chrislb</cc>
    
    <cc>dahalaishraj</cc>
    
    <cc>ellingsw+20759</cc>
    
    <cc>jnelson-kde</cc>
    
    <cc>kde</cc>
    
    <cc>maarizwan</cc>
    
    <cc>mfabian</cc>
    
    <cc>ott</cc>
    
    <cc>praveen</cc>
    
    <cc>sieburgh</cc>
    
    <cc>yann</cc>
          
          <cf_commitlink></cf_commitlink>
          <cf_versionfixedin>4.8.0</cf_versionfixedin>
          <cf_sentryurl></cf_sentryurl>
          <votes>0</votes>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>300726</commentid>
    <comment_count>0</comment_count>
    <who name="Thiago Macieira">thiago</who>
    <bug_when>2005-01-07 17:26:46 +0000</bug_when>
    <thetext>Version:           1.5 Beta (using KDE 3.3.91 (beta1), compiled sources)
Compiler:          gcc version 3.4.3
OS:                Linux (i686) release 2.6.9

There&apos;s an open bug report dealing with generic Unicode problems in Konsole: bug #74190. This bug here is about one specific problem.

There are two forms of diacritic characters in Unicode: the composed and the decomposed form. In the first one, there&apos;s a single codepoint assigned for a given letter+diacritic. In the second one, the combination is made of two &quot;characters&quot;: the base one, without the diacritic, and one combining-diacritic character.

For instance, the LATIN SMALL LETTER A WITH ACUTE (á) is assigned U+00E1. That&apos;s the composed, or NFC, form. But it&apos;s also possible to generate the same glyph by combining LATIN SMALL LETTER A (a) with COMBINING ACUTE ACCENT: U+0061 U+0301: á (depending on your font, it may show as an &quot;a&quot; with a block above). That&apos;s the decomposed, or NFD, form.

The problem is that Konsole turns some of those combinations from NFD to NFC:

$ echo á | od -tx1
0000000 61 cc 81 0a
$ touch á
$ ls
á

Now, if you copy &amp; paste the listed value, here&apos;s what happens:
$ echo á | od -tx1
0000000 c3 a1 0a
$ ls á
ls: á: No such file or directory

For other characters, the combining modifier is simply discarded:
$ touch d́
$ ls
á   d́

copy &amp; paste:
$ ls d
ls: d: No such file or directory

Just for fun, let&apos;s try adding another combining char: COMBINING ACUTE ACCENT BELOW (U+0317): á̗

(copy &amp; paste from Konsole:)
$ ls
á  d

For comparison:
- Konqueror works fine. No glitches.
- xterm has glitches. NFD d́ doesn&apos;t get changed, but NFD á changes to á, whereas NFD á̗ changes into a mixed form (NFC á + combining)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300759</commentid>
    <comment_count>1</comment_count>
    <who name="Waldo Bastian">bastian</who>
    <bug_when>2005-01-07 18:23:43 +0000</bug_when>
    <thetext>Konsole&apos;s internal representation stores one character per screen position and has no room to store the NFD form, for that reason it tries to convert to NFC before storing the characters. When you copy&amp;paste you will get the stored characters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300780</commentid>
    <comment_count>2</comment_count>
    <who name="Thiago Macieira">thiago</who>
    <bug_when>2005-01-07 19:17:34 +0000</bug_when>
    <thetext>Which is wrong, because it&apos;s the wrong representation. Also, it makes some glyphs unreadable, because it will discard some combinations when doing NFC.

It&apos;s also lacking in the sense that d + acute does not render as ḋ in Konsole.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313379</commentid>
    <comment_count>3</comment_count>
    <who name="Thiago Macieira">thiago</who>
    <bug_when>2005-02-13 03:44:08 +0000</bug_when>
    <thetext>Changing priority. I have a couple of ideas I may try in the future for KDE 4.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338144</commentid>
    <comment_count>4</comment_count>
    <who name="Thiago Macieira">thiago</who>
    <bug_when>2005-04-28 13:55:21 +0000</bug_when>
    <thetext>*** Bug 104691 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>893453</commentid>
    <comment_count>5</comment_count>
    <who name="Christoph Feck">cfeck</who>
    <bug_when>2010-01-06 20:28:20 +0000</bug_when>
    <thetext>*** Bug 221508 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>897604</commentid>
    <comment_count>6</comment_count>
    <who name="Steven Elling">ellingsw+20759</who>
    <bug_when>2010-01-13 08:22:29 +0000</bug_when>
    <thetext>Well it&apos;s the future and this problem doesn&apos;t appear to be fixed.

I&apos;m running KDE 4.3.1 and decomposed characters with diacritical marks are only represented as the base character.

For example, in my case ë (that&apos;s the decomposed form of e with a umlaut) is just displayed as e.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979816</commentid>
    <comment_count>7</comment_count>
    <who name="Jon Nelson">jnelson-kde</who>
    <bug_when>2010-06-17 23:26:08 +0000</bug_when>
    <thetext>Please fix!  gnome-terminal and xterm both display NFD unicode properly.
Due to konsole&apos;s inability to display NFD characters I chased a particular bug around in other software for HOURS.

Here is an easy way to test (needs python):

#! /usr/bin/python
import unicodedata

u = u&apos;Ha\u0308mikon&apos;
u1 = unicodedata.normalize(&apos;NFC&apos;, u)
u2 = unicodedata.normalize(&apos;NFD&apos;, u)
u3 = unicodedata.normalize(&apos;NFKD&apos;, u)
u4 = unicodedata.normalize(&apos;NFKC&apos;, u)
print u1, u2, u3, u4




The above should print what appears to be the *same* word 4 times.
konsole is the only console tested that does not work.


I&apos;m running KDE 4.4.3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1001959</commentid>
    <comment_count>8</comment_count>
    <who name="Jon Nelson">jnelson-kde</who>
    <bug_when>2010-08-12 04:58:42 +0000</bug_when>
    <thetext>Now on KDE 4.5.0

This is not a &quot;NEW&quot; bug.
It&apos;s been around for *5 years* and konsole *still* can&apos;t display unicode characters properly!

Is anybody working on a fix for this?

I certainly wouldn&apos;t consider this a minor issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119749</commentid>
    <comment_count>9</comment_count>
    <who name="Albert Astals Cid">aacid</who>
    <bug_when>2011-05-15 21:37:12 +0000</bug_when>
    <thetext>I&apos;m having a look, but i&apos;m a complete newbie in konsole codebase so can&apos;t promise anything</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120154</commentid>
    <comment_count>10</comment_count>
      <attachid>60067</attachid>
    <who name="Albert Astals Cid">aacid</who>
    <bug_when>2011-05-17 00:31:02 +0000</bug_when>
    <thetext>Created attachment 60067
WorkInProgress patch

This is a work in progress patch, with it i can show files that contain e + comgining ring, if anyone is bored and gives it a try i&apos;d be happy to hear the experiences.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133796</commentid>
    <comment_count>11</comment_count>
    <who name="Albert Astals Cid">aacid</who>
    <bug_when>2011-06-22 00:47:51 +0000</bug_when>
    <thetext>Full working patch (as far as my testing goes) at https://git.reviewboard.kde.org/r/101721/

I would really like people testing this since as far as i know it works perfectly</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135201</commentid>
    <comment_count>12</comment_count>
      <attachid>61327</attachid>
    <who name="Kurt Hindenburg">khindenburg</who>
    <bug_when>2011-06-25 21:29:47 +0000</bug_when>
    <thetext>Created attachment 61327
RB patch w/o const changes and whitespaces changes.

I just removed the const and whitespace changes to get a cleaner diff.

This patch is big and I&apos;m not familiar w/ all the code.

It does appear to fix the given issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135215</commentid>
    <comment_count>13</comment_count>
    <who name="Albert Astals Cid">aacid</who>
    <bug_when>2011-06-25 22:31:14 +0000</bug_when>
    <thetext>Kurt, I&apos;m pretty confident about the code (though has a limitation of only being able to show 65534 different composed characters at a time (a reasonable limitation if you ask me and a sure improvement from not working :D))

Since it is a quite &quot;big-ish&quot; patch and you don&apos;t seem confortable with the code i propose we commit it to master (that will be KDE 4.8) so we have time to fix stuff if it breaks before the next release, what you say?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135240</commentid>
    <comment_count>14</comment_count>
    <who name="Kurt Hindenburg">khindenburg</who>
    <bug_when>2011-06-25 23:50:20 +0000</bug_when>
    <thetext>Yes, I should have mentioned that I had planned to commit to master so people could test it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135254</commentid>
    <comment_count>15</comment_count>
    <who name="Albert Astals Cid">aacid</who>
    <bug_when>2011-06-26 00:29:48 +0000</bug_when>
    <thetext>Any reason you want to do it yourself? I mean it makes more sense if i do it so people can correctly find who to blame from the log :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135547</commentid>
    <comment_count>16</comment_count>
    <who name="Kurt Hindenburg">khindenburg</who>
    <bug_when>2011-06-26 14:22:11 +0000</bug_when>
    <thetext>Go ahead although I&apos;d prefer if you&apos;d split/pdh the patch into the const, whitespace and the real patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135612</commentid>
    <comment_count>17</comment_count>
    <who name="Albert Astals Cid">aacid</who>
    <bug_when>2011-06-26 15:49:59 +0000</bug_when>
    <thetext>Commited to master</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143716</commentid>
    <comment_count>18</comment_count>
    <who name="Kurt Hindenburg">khindenburg</who>
    <bug_when>2011-07-20 02:55:15 +0000</bug_when>
    <thetext>*** Bug 255862 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148825</commentid>
    <comment_count>19</comment_count>
    <who name="Jekyll Wu">adaptee</who>
    <bug_when>2011-08-02 12:51:17 +0000</bug_when>
    <thetext>*** Bug 276301 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1153259</commentid>
    <comment_count>20</comment_count>
    <who name="Christoph Feck">cfeck</who>
    <bug_when>2011-08-12 18:15:47 +0000</bug_when>
    <thetext>*** Bug 279978 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154177</commentid>
    <comment_count>21</comment_count>
    <who name="Jekyll Wu">adaptee</who>
    <bug_when>2011-08-16 05:05:37 +0000</bug_when>
    <thetext>*** Bug 217684 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154180</commentid>
    <comment_count>22</comment_count>
    <who name="Jekyll Wu">adaptee</who>
    <bug_when>2011-08-16 05:16:52 +0000</bug_when>
    <thetext>*** Bug 226024 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154184</commentid>
    <comment_count>23</comment_count>
    <who name="Jekyll Wu">adaptee</who>
    <bug_when>2011-08-16 05:31:53 +0000</bug_when>
    <thetext>*** Bug 149777 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154207</commentid>
    <comment_count>24</comment_count>
    <who name="Jekyll Wu">adaptee</who>
    <bug_when>2011-08-16 07:43:54 +0000</bug_when>
    <thetext>*** Bug 116251 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154211</commentid>
    <comment_count>25</comment_count>
    <who name="Jekyll Wu">adaptee</who>
    <bug_when>2011-08-16 07:50:02 +0000</bug_when>
    <thetext>*** Bug 156071 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173922</commentid>
    <comment_count>26</comment_count>
    <who name="Kurt Hindenburg">khindenburg</who>
    <bug_when>2011-10-16 14:58:37 +0000</bug_when>
    <thetext>Albert, can you double-check that this patch causes a &apos;cat tests/9x15.repertoire-utf8&apos; to crash konsole?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173954</commentid>
    <comment_count>27</comment_count>
    <who name="Albert Astals Cid">aacid</who>
    <bug_when>2011-10-16 16:53:37 +0000</bug_when>
    <thetext>Fixed that crash. I had an incorrect assumption.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316870</commentid>
    <comment_count>28</comment_count>
    <who name="Steven Elling">ellingsw+20759</who>
    <bug_when>2012-11-20 06:15:43 +0000</bug_when>
    <thetext>Removed my votes for this bug as I quit using KDE a while ago due to its bloat.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1977995</commentid>
    <comment_count>29</comment_count>
    <who name="Børre Gaup">albbas</who>
    <bug_when>2020-11-23 10:38:34 +0000</bug_when>
    <thetext>This problem still exists in Konsole 20.08.3.

Running the python program below printing the string Hämikon illustrates the problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1978179</commentid>
    <comment_count>30</comment_count>
    <who name="Albert Astals Cid">aacid</who>
    <bug_when>2020-11-23 19:00:53 +0000</bug_when>
    <thetext>The program below? where?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1978529</commentid>
    <comment_count>31</comment_count>
    <who name="Børre Gaup">albbas</who>
    <bug_when>2020-11-24 18:22:27 +0000</bug_when>
    <thetext>(In reply to Albert Astals Cid from comment #30)
&gt; The program below? where?

Sorry for being unclear, I&apos;m talking about the script in comment 7.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1978593</commentid>
    <comment_count>32</comment_count>
    <who name="Albert Astals Cid">aacid</who>
    <bug_when>2020-11-24 22:54:19 +0000</bug_when>
    <thetext>Looks good to me https://i.imgur.com/ZQZU3xm.png

Anything i&apos;m missing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1978819</commentid>
    <comment_count>33</comment_count>
    <who name="Børre Gaup">albbas</who>
    <bug_when>2020-11-25 11:46:55 +0000</bug_when>
    <thetext>The first is Konsole, the second is gnome-terminal. xterm and uxterm have the same result as gnome-terminal
https://imgur.com/a/6SxxG3j

System info:
Operating System: KDE neon 5.20
KDE Plasma Version: 5.20.3
KDE Frameworks Version: 5.76.0
Qt Version: 5.15.1
Kernel Version: 5.4.0-54-generic
OS Type: 64-bit
Processors: 4 × Intel® Core™ i7-5600U CPU @ 2.60GHz
Memory: 15.5 GiB of RAM
Graphics Processor: Mesa Intel® HD Graphics 5500</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1978825</commentid>
    <comment_count>34</comment_count>
    <who name="Børre Gaup">albbas</who>
    <bug_when>2020-11-25 12:30:35 +0000</bug_when>
    <thetext>Locale and such on my machine:
❯ echo $LC_ALL $LANGUAGE $LANG
se_NO.UTF-8 se:nb:en_US nb_NO.UTF-8

Running the script this way:
LC_ALL=C python3 bla.py
gave the same result.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1978892</commentid>
    <comment_count>35</comment_count>
    <who name="Albert Astals Cid">aacid</who>
    <bug_when>2020-11-25 17:50:05 +0000</bug_when>
    <thetext>I don&apos;t see the problem.

Or is the problem &quot;the font I am using in konsole is different to the one i&apos;m using in gnome-terminal and the ä looks weird&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1979056</commentid>
    <comment_count>36</comment_count>
    <who name="Børre Gaup">albbas</who>
    <bug_when>2020-11-26 10:42:05 +0000</bug_when>
    <thetext>It has to do with fonts, yes. 

I found a font without the problem in Konsole, and tested with the same font in gnome-terminal, both show the expected result.

I use Hack in konsole, so I tested Hack on gnome-terminal. gnome-terminal is not affected, while konsole is.

gnome-terminal on the left, konsole on the right.

https://imgur.com/a/ovQA7z2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1979168</commentid>
    <comment_count>37</comment_count>
    <who name="Albert Astals Cid">aacid</who>
    <bug_when>2020-11-26 22:58:25 +0000</bug_when>
    <thetext>I&apos;m going to say there&apos;s a bug either in Hack or in Qt, not much we can do if with other fonts works fine.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60067</attachid>
            <date>2011-05-17 00:31:02 +0000</date>
            <delta_ts>2011-05-17 00:31:02 +0000</delta_ts>
            <desc>WorkInProgress patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>13215</size>
            <attacher name="Albert Astals Cid">aacid</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL3NyYy9DaGFyYWN0ZXIuaCBiL3NyYy9DaGFyYWN0ZXIuaAppbmRleCA0MDg4
ZGVmLi5jYWIwNjUzIDEwMDY0NAotLS0gYS9zcmMvQ2hhcmFjdGVyLmgKKysrIGIvc3JjL0NoYXJh
Y3Rlci5oCkBAIC03MCwxOSArNzAsMTUgQEAgcHVibGljOgogICAgICAgICAgICAgcXVpbnQ4ICBf
ciA9IERFRkFVTFRfUkVORElUSU9OKQogICAgICAgIDogY2hhcmFjdGVyKF9jKSwgcmVuZGl0aW9u
KF9yKSwgZm9yZWdyb3VuZENvbG9yKF9mKSwgYmFja2dyb3VuZENvbG9yKF9iKSB7fQogCi0gIHVu
aW9uCi0gIHsKLSAgICAvKiogVGhlIHVuaWNvZGUgY2hhcmFjdGVyIHZhbHVlIGZvciB0aGlzIGNo
YXJhY3Rlci4gKi8KLSAgICBxdWludDE2IGNoYXJhY3RlcjsKLSAgICAvKiogCi0gICAgICogRXhw
ZXJpbWVudGFsIGFkZGl0aW9uIHdoaWNoIGFsbG93cyBhIHNpbmdsZSBDaGFyYWN0ZXIgaW5zdGFu
Y2UgdG8gY29udGFpbiBtb3JlIHRoYW4KLSAgICAgKiBvbmUgdW5pY29kZSBjaGFyYWN0ZXIuCi0g
ICAgICoKLSAgICAgKiBjaGFyU2VxdWVuY2UgaXMgYSBoYXNoIGNvZGUgd2hpY2ggY2FuIGJlIHVz
ZWQgdG8gbG9vayB1cCB0aGUgdW5pY29kZQotICAgICAqIGNoYXJhY3RlciBzZXF1ZW5jZSBpbiB0
aGUgRXh0ZW5kZWRDaGFyVGFibGUgdXNlZCB0byBjcmVhdGUgdGhlIHNlcXVlbmNlLgotICAgICAq
LwotICAgIHF1aW50MTYgY2hhclNlcXVlbmNlOyAKLSAgfTsKKyAgLyoqIFRoZSB1bmljb2RlIGNo
YXJhY3RlciB2YWx1ZSBmb3IgdGhpcyBjaGFyYWN0ZXIuCisgICAqIAorICAgKiBFeHBlcmltZW50
YWwgYWRkaXRpb24gd2hpY2ggYWxsb3dzIGEgc2luZ2xlIENoYXJhY3RlciBpbnN0YW5jZSB0byBj
b250YWluIG1vcmUgdGhhbgorICAgKiBvbmUgdW5pY29kZSBjaGFyYWN0ZXIuCisgICAqCisgICAq
IGlmIFJFX0VYVEVOREVEX0NIQVIgY2hhcmFjdGVyIGlzIGEgaGFzaCBjb2RlIHdoaWNoIGNhbiBi
ZSB1c2VkIHRvIGxvb2sgdXAgdGhlIHVuaWNvZGUKKyAgICogY2hhcmFjdGVyIHNlcXVlbmNlIGlu
IHRoZSBFeHRlbmRlZENoYXJUYWJsZSB1c2VkIHRvIGNyZWF0ZSB0aGUgc2VxdWVuY2UuCisgICAq
LworICBxdWludDE2IGNoYXJhY3RlcjsKIAogICAvKiogQSBjb21iaW5hdGlvbiBvZiBSRU5ESVRJ
T04gZmxhZ3Mgd2hpY2ggc3BlY2lmeSBvcHRpb25zIGZvciBkcmF3aW5nIHRoZSBjaGFyYWN0ZXIu
ICovCiAgIHF1aW50OCAgcmVuZGl0aW9uOwpAQCAtMTkwLDcgKzE4Niw4IEBAIHB1YmxpYzoKICAg
ICAgKiBAcGFyYW0gdW5pY29kZVBvaW50cyBBbiBhcnJheSBvZiB1bmljb2RlIGNoYXJhY3RlciBw
b2ludHMKICAgICAgKiBAcGFyYW0gbGVuZ3RoIExlbmd0aCBvZiBAcCB1bmljb2RlUG9pbnRzCiAg
ICAgICovCi0gICAgdXNob3J0IGNyZWF0ZUV4dGVuZGVkQ2hhcih1c2hvcnQqIHVuaWNvZGVQb2lu
dHMgLCB1c2hvcnQgbGVuZ3RoKTsKKyAgICB1c2hvcnQgY3JlYXRlRXh0ZW5kZWRDaGFyKGNvbnN0
IHVzaG9ydCogdW5pY29kZVBvaW50cywgdXNob3J0IGxlbmd0aCk7CisKICAgICAvKioKICAgICAg
KiBMb29rcyB1cCBhbmQgcmV0dXJucyBhIHBvaW50ZXIgdG8gYSBzZXF1ZW5jZSBvZiB1bmljb2Rl
IGNoYXJhY3RlcnMKICAgICAgKiB3aGljaCB3YXMgYWRkZWQgdG8gdGhlIHRhYmxlIHVzaW5nIGNy
ZWF0ZUV4dGVuZGVkQ2hhcigpLgpAQCAtMjAxLDE2ICsxOTgsMTYgQEAgcHVibGljOgogICAgICAq
CiAgICAgICogQHJldHVybiBBIHVuaWNvZGUgY2hhcmFjdGVyIHNlcXVlbmNlIG9mIHNpemUgQHAg
bGVuZ3RoLgogICAgICAqLwotICAgIHVzaG9ydCogbG9va3VwRXh0ZW5kZWRDaGFyKHVzaG9ydCBo
YXNoICwgdXNob3J0JiBsZW5ndGgpIGNvbnN0OworICAgIHVzaG9ydCogbG9va3VwRXh0ZW5kZWRD
aGFyKHVzaG9ydCBoYXNoLCB1c2hvcnQmIGxlbmd0aCkgY29uc3Q7CiAKICAgICAvKiogVGhlIGds
b2JhbCBFeHRlbmRlZENoYXJUYWJsZSBpbnN0YW5jZS4gKi8KICAgICBzdGF0aWMgRXh0ZW5kZWRD
aGFyVGFibGUgaW5zdGFuY2U7CiBwcml2YXRlOgogICAgIC8vIGNhbGN1bGF0ZXMgdGhlIGhhc2gg
a2V5IG9mIGEgc2VxdWVuY2Ugb2YgdW5pY29kZSBwb2ludHMgb2Ygc2l6ZSAnbGVuZ3RoJwotICAg
IHVzaG9ydCBleHRlbmRlZENoYXJIYXNoKHVzaG9ydCogdW5pY29kZVBvaW50cyAsIHVzaG9ydCBs
ZW5ndGgpIGNvbnN0OworICAgIHVzaG9ydCBleHRlbmRlZENoYXJIYXNoKGNvbnN0IHVzaG9ydCog
dW5pY29kZVBvaW50cywgdXNob3J0IGxlbmd0aCkgY29uc3Q7CiAgICAgLy8gdGVzdHMgd2hldGhl
ciB0aGUgZW50cnkgaW4gdGhlIHRhYmxlIHNwZWNpZmllZCBieSAnaGFzaCcgbWF0Y2hlcyB0aGUg
CiAgICAgLy8gY2hhcmFjdGVyIHNlcXVlbmNlICd1bmljb2RlUG9pbnRzJyBvZiBzaXplICdsZW5n
dGgnCi0gICAgYm9vbCBleHRlbmRlZENoYXJNYXRjaCh1c2hvcnQgaGFzaCAsIHVzaG9ydCogdW5p
Y29kZVBvaW50cyAsIHVzaG9ydCBsZW5ndGgpIGNvbnN0OworICAgIGJvb2wgZXh0ZW5kZWRDaGFy
TWF0Y2godXNob3J0IGhhc2gsIGNvbnN0IHVzaG9ydCogdW5pY29kZVBvaW50cywgdXNob3J0IGxl
bmd0aCkgY29uc3Q7CiAgICAgLy8gaW50ZXJuYWwsIG1hcHMgaGFzaCBrZXlzIHRvIGNoYXJhY3Rl
ciBzZXF1ZW5jZSBidWZmZXJzLiAgVGhlIGZpcnN0IHVzaG9ydAogICAgIC8vIGluIGVhY2ggdmFs
dWUgaXMgdGhlIGxlbmd0aCBvZiB0aGUgYnVmZmVyLCBmb2xsb3dlZCBieSB0aGUgdXNob3J0cyBp
biB0aGUgYnVmZmVyCiAgICAgLy8gdGhlbXNlbHZlcy4KZGlmZiAtLWdpdCBhL3NyYy9FbXVsYXRp
b24uY3BwIGIvc3JjL0VtdWxhdGlvbi5jcHAKaW5kZXggZjUyZjdlOC4uZGRmNGZkOSAxMDA2NDQK
LS0tIGEvc3JjL0VtdWxhdGlvbi5jcHAKKysrIGIvc3JjL0VtdWxhdGlvbi5jcHAKQEAgLTM1OSw3
ICszNTksNyBAQCBRU2l6ZSBFbXVsYXRpb246OmltYWdlU2l6ZSgpIGNvbnN0CiAgIHJldHVybiBR
U2l6ZShfY3VycmVudFNjcmVlbi0+Z2V0Q29sdW1ucygpLCBfY3VycmVudFNjcmVlbi0+Z2V0TGlu
ZXMoKSk7CiB9CiAKLXVzaG9ydCBFeHRlbmRlZENoYXJUYWJsZTo6ZXh0ZW5kZWRDaGFySGFzaCh1
c2hvcnQqIHVuaWNvZGVQb2ludHMgLCB1c2hvcnQgbGVuZ3RoKSBjb25zdAordXNob3J0IEV4dGVu
ZGVkQ2hhclRhYmxlOjpleHRlbmRlZENoYXJIYXNoKGNvbnN0IHVzaG9ydCogdW5pY29kZVBvaW50
cywgdXNob3J0IGxlbmd0aCkgY29uc3QKIHsKICAgICB1c2hvcnQgaGFzaCA9IDA7CiAgICAgZm9y
ICggdXNob3J0IGkgPSAwIDsgaSA8IGxlbmd0aCA7IGkrKyApCkBAIC0zNjgsNyArMzY4LDcgQEAg
dXNob3J0IEV4dGVuZGVkQ2hhclRhYmxlOjpleHRlbmRlZENoYXJIYXNoKHVzaG9ydCogdW5pY29k
ZVBvaW50cyAsIHVzaG9ydCBsZW5ndGgKICAgICB9CiAgICAgcmV0dXJuIGhhc2g7CiB9Ci1ib29s
IEV4dGVuZGVkQ2hhclRhYmxlOjpleHRlbmRlZENoYXJNYXRjaCh1c2hvcnQgaGFzaCAsIHVzaG9y
dCogdW5pY29kZVBvaW50cyAsIHVzaG9ydCBsZW5ndGgpIGNvbnN0Citib29sIEV4dGVuZGVkQ2hh
clRhYmxlOjpleHRlbmRlZENoYXJNYXRjaCh1c2hvcnQgaGFzaCwgY29uc3QgdXNob3J0KiB1bmlj
b2RlUG9pbnRzLCB1c2hvcnQgbGVuZ3RoKSBjb25zdAogewogICAgIHVzaG9ydCogZW50cnkgPSBl
eHRlbmRlZENoYXJUYWJsZVtoYXNoXTsKIApAQCAtMzg1LDE1ICszODUsMTYgQEAgYm9vbCBFeHRl
bmRlZENoYXJUYWJsZTo6ZXh0ZW5kZWRDaGFyTWF0Y2godXNob3J0IGhhc2ggLCB1c2hvcnQqIHVu
aWNvZGVQb2ludHMgLAogICAgIH0gCiAgICAgcmV0dXJuIHRydWU7CiB9Ci11c2hvcnQgRXh0ZW5k
ZWRDaGFyVGFibGU6OmNyZWF0ZUV4dGVuZGVkQ2hhcih1c2hvcnQqIHVuaWNvZGVQb2ludHMgLCB1
c2hvcnQgbGVuZ3RoKQordXNob3J0IEV4dGVuZGVkQ2hhclRhYmxlOjpjcmVhdGVFeHRlbmRlZENo
YXIoY29uc3QgdXNob3J0KiB1bmljb2RlUG9pbnRzLCB1c2hvcnQgbGVuZ3RoKQogewogICAgIC8v
IGxvb2sgZm9yIHRoaXMgc2VxdWVuY2Ugb2YgcG9pbnRzIGluIHRoZSB0YWJsZQogICAgIHVzaG9y
dCBoYXNoID0gZXh0ZW5kZWRDaGFySGFzaCh1bmljb2RlUG9pbnRzLGxlbmd0aCk7CisgICAgdXNo
b3J0IGluaXRpYWxIYXNoID0gaGFzaDsKIAogICAgIC8vIGNoZWNrIGV4aXN0aW5nIGVudHJ5IGZv
ciBtYXRjaAotICAgIHdoaWxlICggZXh0ZW5kZWRDaGFyVGFibGUuY29udGFpbnMoaGFzaCkgKQor
ICAgIHdoaWxlICggZXh0ZW5kZWRDaGFyVGFibGUuY29udGFpbnMoaGFzaCkgJiYgaGFzaCAhPSAw
ICkgLy8gMCBoYXMgYSBzcGVjaWFsIG1lYW5pbmcgZm9yIGNoYXJzCiAgICAgewotICAgICAgICBp
ZiAoIGV4dGVuZGVkQ2hhck1hdGNoKGhhc2gsdW5pY29kZVBvaW50cyxsZW5ndGgpICkKKyAgICAg
ICAgaWYgKCBleHRlbmRlZENoYXJNYXRjaChoYXNoLCB1bmljb2RlUG9pbnRzLCBsZW5ndGgpICkK
ICAgICAgICAgewogICAgICAgICAgICAgLy8gdGhpcyBzZXF1ZW5jZSBhbHJlYWR5IGhhcyBhbiBl
bnRyeSBpbiB0aGUgdGFibGUsIAogICAgICAgICAgICAgLy8gcmV0dXJuIGl0cyBoYXNoCkBAIC00
MDQsNiArNDA1LDEyIEBAIHVzaG9ydCBFeHRlbmRlZENoYXJUYWJsZTo6Y3JlYXRlRXh0ZW5kZWRD
aGFyKHVzaG9ydCogdW5pY29kZVBvaW50cyAsIHVzaG9ydCBsZW5nCiAgICAgICAgICAgICAvLyBp
ZiBoYXNoIGlzIGFscmVhZHkgdXNlZCBieSBhbm90aGVyLCBkaWZmZXJlbnQgc2VxdWVuY2Ugb2Yg
dW5pY29kZSBjaGFyYWN0ZXIKICAgICAgICAgICAgIC8vIHBvaW50cyB0aGVuIHRyeSBuZXh0IGhh
c2gKICAgICAgICAgICAgIGhhc2grKzsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGhh
c2ggPT0gaW5pdGlhbEhhc2gpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gQWxs
IHRoZSBoYXNoZXMgYXJlIGZ1bGwsIGdvIHRvIGFsbCBTY3JlZW5zIGFuZCB0cnkgdG8gZnJlZSBh
bnkKKyAgICAgICAgICAgICAgICAvLyBUT0RPCisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9ICAgIAogCkBAIC00MjAsNyArNDI3LDcgQEAgdXNob3J0IEV4dGVuZGVkQ2hhclRhYmxlOjpj
cmVhdGVFeHRlbmRlZENoYXIodXNob3J0KiB1bmljb2RlUG9pbnRzICwgdXNob3J0IGxlbmcKICAg
ICByZXR1cm4gaGFzaDsKIH0KIAotdXNob3J0KiBFeHRlbmRlZENoYXJUYWJsZTo6bG9va3VwRXh0
ZW5kZWRDaGFyKHVzaG9ydCBoYXNoICwgdXNob3J0JiBsZW5ndGgpIGNvbnN0Cit1c2hvcnQqIEV4
dGVuZGVkQ2hhclRhYmxlOjpsb29rdXBFeHRlbmRlZENoYXIodXNob3J0IGhhc2gsIHVzaG9ydCYg
bGVuZ3RoKSBjb25zdAogewogICAgIC8vIGxvb2t1cCBpbmRleCBpbiB0YWJsZSBhbmQgaWYgZm91
bmQsIHNldCB0aGUgbGVuZ3RoCiAgICAgLy8gYXJndW1lbnQgYW5kIHJldHVybiBhIHBvaW50ZXIg
dG8gdGhlIGNoYXJhY3RlciBzZXF1ZW5jZQpkaWZmIC0tZ2l0IGEvc3JjL1NjcmVlbi5jcHAgYi9z
cmMvU2NyZWVuLmNwcAppbmRleCA0MWRmNzE2Li5jMDkzNzhmIDEwMDY0NAotLS0gYS9zcmMvU2Ny
ZWVuLmNwcAorKysgYi9zcmMvU2NyZWVuLmNwcApAQCAtNjMxLDggKzYzMSwxNiBAQCB2b2lkIFNj
cmVlbjo6ZGlzcGxheUNoYXJhY3Rlcih1bnNpZ25lZCBzaG9ydCBjKQogICAgIC8vIHB1dHRpbmcg
dGhlIGN1cnNvciBvbmUgcmlnaHQgdG8gdGhlIGxhc3QgY29sdW1uIG9mIHRoZSBzY3JlZW4uCiAK
ICAgICBpbnQgdyA9IGtvbnNvbGVfd2N3aWR0aChjKTsKLSAgICBpZiAodyA8PSAwKQorICAgIGJv
b2wgaXNDb21iaW5pbmcgPSBmYWxzZTsKKyAgICBpZiAodyA8IDApCiAgICAgICAgIHJldHVybjsK
KyAgICBlbHNlIGlmICh3ID09IDApCisgICAgeworICAgICAgICBpZiAoUUNoYXIoYykuY2F0ZWdv
cnkoKSAhPSBRQ2hhcjo6TWFya19Ob25TcGFjaW5nKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBpc0NvbWJpbmluZyA9IHRydWU7CisgICAgICAgIC0tY3VYOworICAgIH0KIAogICAgIGlm
IChjdVgrdyA+IGNvbHVtbnMpIHsKICAgICAgICAgaWYgKGdldE1vZGUoTU9ERV9XcmFwKSkgewpA
QCAtNjU5LDExICs2NjcsMjEgQEAgdm9pZCBTY3JlZW46OmRpc3BsYXlDaGFyYWN0ZXIodW5zaWdu
ZWQgc2hvcnQgYykKIAogICAgIENoYXJhY3RlciYgY3VycmVudENoYXIgPSBzY3JlZW5MaW5lc1tj
dVldW2N1WF07CiAKLSAgICBjdXJyZW50Q2hhci5jaGFyYWN0ZXIgPSBjOwotICAgIGN1cnJlbnRD
aGFyLmZvcmVncm91bmRDb2xvciA9IGVmZmVjdGl2ZUZvcmVncm91bmQ7Ci0gICAgY3VycmVudENo
YXIuYmFja2dyb3VuZENvbG9yID0gZWZmZWN0aXZlQmFja2dyb3VuZDsKLSAgICBjdXJyZW50Q2hh
ci5yZW5kaXRpb24gPSBlZmZlY3RpdmVSZW5kaXRpb247Ci0KKyAgICBpZiAoaXNDb21iaW5pbmcp
CisgICAgeworICAgICAgICBjb25zdCB1c2hvcnQgY2hhcnNbMl0gPSB7IGN1cnJlbnRDaGFyLmNo
YXJhY3RlciwgYyB9OworICAgICAgICBjdXJyZW50Q2hhci5yZW5kaXRpb24gfD0gUkVfRVhURU5E
RURfQ0hBUjsKKyAgICAgICAgY3VycmVudENoYXIuY2hhcmFjdGVyID0gRXh0ZW5kZWRDaGFyVGFi
bGU6Omluc3RhbmNlLmNyZWF0ZUV4dGVuZGVkQ2hhcihjaGFycywgMik7CisgICAgICAgIHcgPSAx
OworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBjdXJyZW50Q2hhci5jaGFyYWN0ZXIg
PSBjOworICAgICAgICBjdXJyZW50Q2hhci5mb3JlZ3JvdW5kQ29sb3IgPSBlZmZlY3RpdmVGb3Jl
Z3JvdW5kOworICAgICAgICBjdXJyZW50Q2hhci5iYWNrZ3JvdW5kQ29sb3IgPSBlZmZlY3RpdmVC
YWNrZ3JvdW5kOworICAgICAgICBjdXJyZW50Q2hhci5yZW5kaXRpb24gPSBlZmZlY3RpdmVSZW5k
aXRpb247CisgICAgfQorICAKICAgICBpbnQgaSA9IDA7CiAgICAgaW50IG5ld0N1cnNvclggPSBj
dVggKyB3LS07CiAgICAgd2hpbGUodykKZGlmZiAtLWdpdCBhL3NyYy9UZXJtaW5hbENoYXJhY3Rl
ckRlY29kZXIuY3BwIGIvc3JjL1Rlcm1pbmFsQ2hhcmFjdGVyRGVjb2Rlci5jcHAKaW5kZXggY2Qw
NWY2NS4uNjlhYjNlYiAxMDA2NDQKLS0tIGEvc3JjL1Rlcm1pbmFsQ2hhcmFjdGVyRGVjb2Rlci5j
cHAKKysrIGIvc3JjL1Rlcm1pbmFsQ2hhcmFjdGVyRGVjb2Rlci5jcHAKQEAgLTEwMiw4ICsxMDIs
MjIgQEAgdm9pZCBQbGFpblRleHREZWNvZGVyOjpkZWNvZGVMaW5lKGNvbnN0IENoYXJhY3Rlciog
Y29uc3QgY2hhcmFjdGVycywgaW50IGNvdW50LAogICAgIAogICAgIGZvciAoaW50IGk9MDtpPG91
dHB1dENvdW50OykKICAgICB7Ci0gICAgICAgIHBsYWluVGV4dC5hcHBlbmQoIFFDaGFyKGNoYXJh
Y3RlcnNbaV0uY2hhcmFjdGVyKSApOwotICAgICAgICBpICs9IHFNYXgoMSxrb25zb2xlX3djd2lk
dGgoY2hhcmFjdGVyc1tpXS5jaGFyYWN0ZXIpKTsKKyAgICAgICAgaWYgKGNoYXJhY3RlcnNbaV0u
cmVuZGl0aW9uICYgUkVfRVhURU5ERURfQ0hBUikKKyAgICAgICAgeworICAgICAgICAgICAgdXNo
b3J0IGV4dGVuZGVkQ2hhckxlbmd0aCA9IDA7CisgICAgICAgICAgICB1c2hvcnQqIGNoYXJzID0g
RXh0ZW5kZWRDaGFyVGFibGU6Omluc3RhbmNlLmxvb2t1cEV4dGVuZGVkQ2hhcihjaGFyYWN0ZXJz
W2ldLmNoYXJhY3RlciwgZXh0ZW5kZWRDaGFyTGVuZ3RoKTsKKyAgICAgICAgICAgIGlmIChjaGFy
cykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBRU3RyaW5nIHMgPSBRU3RyaW5nOjpm
cm9tVXRmMTYoY2hhcnMsIGV4dGVuZGVkQ2hhckxlbmd0aCk7CisgICAgICAgICAgICAgICAgcGxh
aW5UZXh0LmFwcGVuZChzKTsKKyAgICAgICAgICAgICAgICBpICs9IHN0cmluZ193aWR0aChzKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHBsYWluVGV4dC5hcHBlbmQoIFFDaGFyKGNoYXJhY3RlcnNbaV0uY2hhcmFjdGVyKSAp
OworICAgICAgICAgICAgaSArPSBxTWF4KDEsa29uc29sZV93Y3dpZHRoKGNoYXJhY3RlcnNbaV0u
Y2hhcmFjdGVyKSk7CisgICAgICAgIH0KICAgICB9CiAgICAgKl9vdXRwdXQgPDwgcGxhaW5UZXh0
OwogfQpkaWZmIC0tZ2l0IGEvc3JjL1Rlcm1pbmFsRGlzcGxheS5jcHAgYi9zcmMvVGVybWluYWxE
aXNwbGF5LmNwcAppbmRleCAwYjZkNmQ2Li5hYWNmNDI4IDEwMDY0NAotLS0gYS9zcmMvVGVybWlu
YWxEaXNwbGF5LmNwcAorKysgYi9zcmMvVGVybWluYWxEaXNwbGF5LmNwcApAQCAtNjcyLDcgKzY3
Miw3IEBAIHZvaWQgVGVybWluYWxEaXNwbGF5OjpkcmF3Q2hhcmFjdGVycyhRUGFpbnRlciYgcGFp
bnRlciwKICAgICAvLyBkb24ndCBkcmF3IHRleHQgd2hpY2ggaXMgY3VycmVudGx5IGJsaW5raW5n
CiAgICAgaWYgKCBfYmxpbmtpbmcgJiYgKHN0eWxlLT5yZW5kaXRpb24gJiBSRV9CTElOSykgKQog
ICAgICAgICAgICAgcmV0dXJuOwotICAgCisgICAgCiAgICAgLy8gc2V0dXAgYm9sZCBhbmQgdW5k
ZXJsaW5lCiAgICAgYm9vbCB1c2VCb2xkOwogICAgIENvbG9yRW50cnk6OkZvbnRXZWlnaHQgd2Vp
Z2h0ID0gc3R5bGUtPmZvbnRXZWlnaHQoX2NvbG9yVGFibGUpOyAgICAKQEAgLTk3Myw3ICs5NzMs
NiBAQCB2b2lkIFRlcm1pbmFsRGlzcGxheTo6dXBkYXRlSW1hZ2UoKQogICBjb25zdCBpbnQgbGlu
ZXNUb1VwZGF0ZSA9IHFNaW4odGhpcy0+X2xpbmVzLCBxTWF4KDAsbGluZXMgICkpOwogICBjb25z
dCBpbnQgY29sdW1uc1RvVXBkYXRlID0gcU1pbih0aGlzLT5fY29sdW1ucyxxTWF4KDAsY29sdW1u
cykpOwogCi0gIFFDaGFyICpkaXNzdHJVID0gbmV3IFFDaGFyW2NvbHVtbnNUb1VwZGF0ZV07CiAg
IGNoYXIgKmRpcnR5TWFzayA9IG5ldyBjaGFyW2NvbHVtbnNUb1VwZGF0ZSsyXTsgCiAgIFFSZWdp
b24gZGlydHlSZWdpb247CiAKQEAgLTEwMTUsOCArMTAxNCw2IEBAIHZvaWQgVGVybWluYWxEaXNw
bGF5Ojp1cGRhdGVJbWFnZSgpCiAgICAgICAgIHF1aW50MTYgYyA9IG5ld0xpbmVbeCswXS5jaGFy
YWN0ZXI7CiAgICAgICAgIGlmICggIWMgKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
IGludCBwID0gMDsKLSAgICAgICAgZGlzc3RyVVtwKytdID0gYzsgLy9mb250TWFwKGMpOwogICAg
ICAgICBib29sIGxpbmVEcmF3ID0gaXNMaW5lQ2hhcihjKTsKICAgICAgICAgYm9vbCBkb3VibGVX
aWR0aCA9ICh4KzEgPT0gY29sdW1uc1RvVXBkYXRlKSA/IGZhbHNlIDogKG5ld0xpbmVbeCsxXS5j
aGFyYWN0ZXIgPT0gMCk7CiAgICAgICAgIGNyID0gbmV3TGluZVt4XS5yZW5kaXRpb247CkBAIC0x
MDM5LDEyICsxMDM2LDggQEAgdm9pZCBUZXJtaW5hbERpc3BsYXk6OnVwZGF0ZUltYWdlKCkKICAg
ICAgICAgICAgICAgICAgIGlzTGluZUNoYXIoYykgIT0gbGluZURyYXcgfHwgCiAgICAgICAgICAg
ICAgICAgICBuZXh0SXNEb3VibGVXaWR0aCAhPSBkb3VibGVXaWR0aCApCiAgICAgICAgICAgICBi
cmVhazsKLQotICAgICAgICAgIGRpc3N0clVbcCsrXSA9IGM7IC8vZm9udE1hcChjKTsKICAgICAg
ICAgfQogCi0gICAgICAgIFFTdHJpbmcgdW5pc3RyKGRpc3N0clUsIHApOwotCiAgICAgICAgIGJv
b2wgc2F2ZUZpeGVkRm9udCA9IF9maXhlZEZvbnQ7CiAgICAgICAgIGlmIChsaW5lRHJhdykKICAg
ICAgICAgICAgX2ZpeGVkRm9udCA9IGZhbHNlOwpAQCAtMTExNSw4ICsxMTA4LDYgQEAgdm9pZCBU
ZXJtaW5hbERpc3BsYXk6OnVwZGF0ZUltYWdlKCkKICAgaWYgKCBfaGFzQmxpbmtlciAmJiAhX2Js
aW5rVGltZXItPmlzQWN0aXZlKCkpIF9ibGlua1RpbWVyLT5zdGFydCggVEVYVF9CTElOS19ERUxB
WSApOyAKICAgaWYgKCFfaGFzQmxpbmtlciAmJiBfYmxpbmtUaW1lci0+aXNBY3RpdmUoKSkgeyBf
YmxpbmtUaW1lci0+c3RvcCgpOyBfYmxpbmtpbmcgPSBmYWxzZTsgfQogICBkZWxldGVbXSBkaXJ0
eU1hc2s7Ci0gIGRlbGV0ZVtdIGRpc3N0clU7Ci0KIH0KIAogdm9pZCBUZXJtaW5hbERpc3BsYXk6
OnNob3dSZXNpemVOb3RpZmljYXRpb24oKQpAQCAtMTM4OCw5ICsxMzc5LDkgQEAgdm9pZCBUZXJt
aW5hbERpc3BsYXk6OmRyYXdDb250ZW50cyhRUGFpbnRlciAmcGFpbnQsIGNvbnN0IFFSZWN0ICZy
ZWN0KQogICBpbnQgcmx4ID0gcU1pbihfdXNlZENvbHVtbnMtMSwgcU1heCgwLChyZWN0LnJpZ2h0
KCkgIC0gdEx4IC0gX2xlZnRNYXJnaW4gKSAvIF9mb250V2lkdGgpKTsKICAgaW50IHJseSA9IHFN
aW4oX3VzZWRMaW5lcy0xLCAgcU1heCgwLChyZWN0LmJvdHRvbSgpIC0gdEx5IC0gX3RvcE1hcmdp
biAgKSAvIF9mb250SGVpZ2h0KSk7CiAKLSAgY29uc3QgaW50IGJ1ZmZlclNpemUgPSBfdXNlZENv
bHVtbnM7CisgIGNvbnN0IGludCBudW1iZXJPZkNvbHVtbnMgPSBfdXNlZENvbHVtbnM7CiAgIFFT
dHJpbmcgdW5pc3RyOwotICB1bmlzdHIucmVzZXJ2ZShidWZmZXJTaXplKTsKKyAgdW5pc3RyLnJl
c2VydmUobnVtYmVyT2ZDb2x1bW5zKTsKICAgZm9yIChpbnQgeSA9IGx1eTsgeSA8PSBybHk7IHkr
KykKICAgewogICAgIHF1aW50MTYgYyA9IF9pbWFnZVtsb2MobHV4LHkpXS5jaGFyYWN0ZXI7CkBA
IC0xNDAyLDcgKzEzOTMsOCBAQCB2b2lkIFRlcm1pbmFsRGlzcGxheTo6ZHJhd0NvbnRlbnRzKFFQ
YWludGVyICZwYWludCwgY29uc3QgUVJlY3QgJnJlY3QpCiAgICAgICBpbnQgbGVuID0gMTsKICAg
ICAgIGludCBwID0gMDsKIAotICAgICAgLy8gcmVzZXQgb3VyIGJ1ZmZlciB0byB0aGUgbWF4aW1h
bCBzaXplCisgICAgICAvLyByZXNldCBvdXIgYnVmZmVyIHRvIHRoZSBudW1iZXIgb2YgY29sdW1u
cworICAgICAgaW50IGJ1ZmZlclNpemUgPSBudW1iZXJPZkNvbHVtbnM7CiAgICAgICB1bmlzdHIu
cmVzaXplKGJ1ZmZlclNpemUpOwogICAgICAgUUNoYXIgKmRpc3N0clUgPSB1bmlzdHIuZGF0YSgp
OwogCkBAIC0xNDExLDEyICsxNDAzLDE4IEBAIHZvaWQgVGVybWluYWxEaXNwbGF5OjpkcmF3Q29u
dGVudHMoUVBhaW50ZXIgJnBhaW50LCBjb25zdCBRUmVjdCAmcmVjdCkKICAgICAgIHsKICAgICAg
ICAgLy8gc2VxdWVuY2Ugb2YgY2hhcmFjdGVycwogICAgICAgICB1c2hvcnQgZXh0ZW5kZWRDaGFy
TGVuZ3RoID0gMDsKLSAgICAgICAgdXNob3J0KiBjaGFycyA9IEV4dGVuZGVkQ2hhclRhYmxlOjpp
bnN0YW5jZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5sb29rdXBFeHRlbmRlZENoYXIo
X2ltYWdlW2xvYyh4LHkpXS5jaGFyU2VxdWVuY2UsZXh0ZW5kZWRDaGFyTGVuZ3RoKTsKLSAgICAg
ICAgZm9yICggaW50IGluZGV4ID0gMCA7IGluZGV4IDwgZXh0ZW5kZWRDaGFyTGVuZ3RoIDsgaW5k
ZXgrKyApIAorICAgICAgICB1c2hvcnQqIGNoYXJzID0gRXh0ZW5kZWRDaGFyVGFibGU6Omluc3Rh
bmNlLmxvb2t1cEV4dGVuZGVkQ2hhcihfaW1hZ2VbbG9jKHgseSldLmNoYXJhY3RlciwgZXh0ZW5k
ZWRDaGFyTGVuZ3RoKTsKKyAgICAgICAgaWYgKGNoYXJzKQogICAgICAgICB7CisgICAgICAgICAg
UV9BU1NFUlQoZXh0ZW5kZWRDaGFyTGVuZ3RoID4gMSk7CisgICAgICAgICAgYnVmZmVyU2l6ZSAr
PSBleHRlbmRlZENoYXJMZW5ndGggLSAxOworICAgICAgICAgIHVuaXN0ci5yZXNpemUoYnVmZmVy
U2l6ZSk7CisgICAgICAgICAgZGlzc3RyVSA9IHVuaXN0ci5kYXRhKCk7CisgICAgICAgICAgZm9y
ICggaW50IGluZGV4ID0gMCA7IGluZGV4IDwgZXh0ZW5kZWRDaGFyTGVuZ3RoIDsgaW5kZXgrKyAp
IAorICAgICAgICAgIHsKICAgICAgICAgICAgIFFfQVNTRVJUKCBwIDwgYnVmZmVyU2l6ZSApOwog
ICAgICAgICAgICAgZGlzc3RyVVtwKytdID0gY2hhcnNbaW5kZXhdOworICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgICAgfQogICAgICAgZWxzZQpAQCAtMTQ0Myw4ICsxNDQxLDM0IEBAIHZvaWQg
VGVybWluYWxEaXNwbGF5OjpkcmF3Q29udGVudHMoUVBhaW50ZXIgJnBhaW50LCBjb25zdCBRUmVj
dCAmcmVjdCkKICAgICAgICAgICAgICAoX2ltYWdlWyBxTWluKGxvYyh4K2xlbix5KSsxLF9pbWFn
ZVNpemUpIF0uY2hhcmFjdGVyID09IDApID09IGRvdWJsZVdpZHRoICYmCiAgICAgICAgICAgICAg
aXNMaW5lQ2hhciggYyA9IF9pbWFnZVtsb2MoeCtsZW4seSldLmNoYXJhY3RlcikgPT0gbGluZURy
YXcpIC8vIEFzc2lnbm1lbnQhCiAgICAgICB7Ci0gICAgICAgIGlmIChjKQotICAgICAgICAgIGRp
c3N0clVbcCsrXSA9IGM7IC8vZm9udE1hcChjKTsKKyAgICAgICAgaWYgKCBjdXJyZW50UmVuZGl0
aW9uICYgUkVfRVhURU5ERURfQ0hBUiApCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIHNlcXVl
bmNlIG9mIGNoYXJhY3RlcnMKKyAgICAgICAgICAgIHVzaG9ydCBleHRlbmRlZENoYXJMZW5ndGgg
PSAwOworICAgICAgICAgICAgdXNob3J0KiBjaGFycyA9IEV4dGVuZGVkQ2hhclRhYmxlOjppbnN0
YW5jZS5sb29rdXBFeHRlbmRlZENoYXIoYywgZXh0ZW5kZWRDaGFyTGVuZ3RoKTsKKyAgICAgICAg
ICAgIGlmIChjaGFycykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgUV9BU1NFUlQoZXh0
ZW5kZWRDaGFyTGVuZ3RoID4gMSk7CisgICAgICAgICAgICAgIGJ1ZmZlclNpemUgKz0gZXh0ZW5k
ZWRDaGFyTGVuZ3RoIC0gMTsKKyAgICAgICAgICAgICAgdW5pc3RyLnJlc2l6ZShidWZmZXJTaXpl
KTsKKyAgICAgICAgICAgICAgZGlzc3RyVSA9IHVuaXN0ci5kYXRhKCk7CisgICAgICAgICAgICAg
IGZvciAoIGludCBpbmRleCA9IDAgOyBpbmRleCA8IGV4dGVuZGVkQ2hhckxlbmd0aCA7IGluZGV4
KysgKSAKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFFfQVNTRVJUKCBwIDwgYnVm
ZmVyU2l6ZSApOworICAgICAgICAgICAgICAgIGRpc3N0clVbcCsrXSA9IGNoYXJzW2luZGV4XTsK
KyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UK
KyAgICAgICAgeworICAgICAgICAgICAgLy8gc2luZ2xlIGNoYXJhY3RlcgorICAgICAgICAgICAg
aWYgKGMpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgUV9BU1NFUlQoIHAgPCBidWZm
ZXJTaXplICk7CisgICAgICAgICAgICAgICAgZGlzc3RyVVtwKytdID0gYzsgLy9mb250TWFwKGMp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAKICAgICAgICAgaWYgKGRvdWJsZVdp
ZHRoKSAvLyBhc3NlcnQoKF9pbWFnZVtsb2MoeCtsZW4seSkrMV0uY2hhcmFjdGVyID09IDApKSwg
c2VlIGFib3ZlIGlmIGNvbmRpdGlvbgogICAgICAgICAgIGxlbisrOyAvLyBTa2lwIHRyYWlsaW5n
IHBhcnQgb2YgbXVsdGktY29sdW1uIGNoYXJhY3RlcgogICAgICAgICBsZW4rKzsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61327</attachid>
            <date>2011-06-25 21:29:47 +0000</date>
            <delta_ts>2011-06-25 21:29:47 +0000</delta_ts>
            <desc>RB patch w/o const changes and whitespaces changes.</desc>
            <filename>full.diff</filename>
            <type>text/plain</type>
            <size>24170</size>
            <attacher name="Kurt Hindenburg">khindenburg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL3NyYy9DaGFyYWN0ZXIuaCBiL3NyYy9DaGFyYWN0ZXIuaAppbmRleCA0MDg4
ZGVmLi44ZDc0NDUwIDEwMDY0NAotLS0gYS9zcmMvQ2hhcmFjdGVyLmgKKysrIGIvc3JjL0NoYXJh
Y3Rlci5oCkBAIC03MCwxOSArNzAsMTIgQEAgcHVibGljOgogICAgICAgICAgICAgcXVpbnQ4ICBf
ciA9IERFRkFVTFRfUkVORElUSU9OKQogICAgICAgIDogY2hhcmFjdGVyKF9jKSwgcmVuZGl0aW9u
KF9yKSwgZm9yZWdyb3VuZENvbG9yKF9mKSwgYmFja2dyb3VuZENvbG9yKF9iKSB7fQogCi0gIHVu
aW9uCi0gIHsKLSAgICAvKiogVGhlIHVuaWNvZGUgY2hhcmFjdGVyIHZhbHVlIGZvciB0aGlzIGNo
YXJhY3Rlci4gKi8KLSAgICBxdWludDE2IGNoYXJhY3RlcjsKLSAgICAvKiogCi0gICAgICogRXhw
ZXJpbWVudGFsIGFkZGl0aW9uIHdoaWNoIGFsbG93cyBhIHNpbmdsZSBDaGFyYWN0ZXIgaW5zdGFu
Y2UgdG8gY29udGFpbiBtb3JlIHRoYW4KLSAgICAgKiBvbmUgdW5pY29kZSBjaGFyYWN0ZXIuCi0g
ICAgICoKLSAgICAgKiBjaGFyU2VxdWVuY2UgaXMgYSBoYXNoIGNvZGUgd2hpY2ggY2FuIGJlIHVz
ZWQgdG8gbG9vayB1cCB0aGUgdW5pY29kZQotICAgICAqIGNoYXJhY3RlciBzZXF1ZW5jZSBpbiB0
aGUgRXh0ZW5kZWRDaGFyVGFibGUgdXNlZCB0byBjcmVhdGUgdGhlIHNlcXVlbmNlLgotICAgICAq
LwotICAgIHF1aW50MTYgY2hhclNlcXVlbmNlOyAKLSAgfTsKKyAgLyoqIFRoZSB1bmljb2RlIGNo
YXJhY3RlciB2YWx1ZSBmb3IgdGhpcyBjaGFyYWN0ZXIuCisgICAqIAorICAgKiBpZiBSRV9FWFRF
TkRFRF9DSEFSIGNoYXJhY3RlciBpcyBhIGhhc2ggY29kZSB3aGljaCBjYW4gYmUgdXNlZCB0byBs
b29rIHVwIHRoZSB1bmljb2RlCisgICAqIGNoYXJhY3RlciBzZXF1ZW5jZSBpbiB0aGUgRXh0ZW5k
ZWRDaGFyVGFibGUgdXNlZCB0byBjcmVhdGUgdGhlIHNlcXVlbmNlLgorICAgKi8KKyAgcXVpbnQx
NiBjaGFyYWN0ZXI7CiAKICAgLyoqIEEgY29tYmluYXRpb24gb2YgUkVORElUSU9OIGZsYWdzIHdo
aWNoIHNwZWNpZnkgb3B0aW9ucyBmb3IgZHJhd2luZyB0aGUgY2hhcmFjdGVyLiAqLwogICBxdWlu
dDggIHJlbmRpdGlvbjsKQEAgLTExOSw2ICsxMTIsMTcgQEAgcHVibGljOgogICAgKiByZW5kaXRp
b25zIG9yIGNvbG9ycy4KICAgICovCiAgIGZyaWVuZCBib29sIG9wZXJhdG9yICE9IChjb25zdCBD
aGFyYWN0ZXImIGEsIGNvbnN0IENoYXJhY3RlciYgYik7CisgIAorICBpbmxpbmUgYm9vbCBpc0xp
bmVDaGFyKCkgY29uc3QKKyAgeworICAgICAgcmV0dXJuIChyZW5kaXRpb24gJiBSRV9FWFRFTkRF
RF9DSEFSKSA/IGZhbHNlIDogKChjaGFyYWN0ZXIgJiAweEZGODApID09IDB4MjUwMCk7CisgIH0K
KyAgCisgIGlubGluZSBib29sIGlzU3BhY2UoKSBjb25zdAorICB7CisgICAgICByZXR1cm4gKHJl
bmRpdGlvbiAmIFJFX0VYVEVOREVEX0NIQVIpID8gZmFsc2UgOiBRQ2hhcihjaGFyYWN0ZXIpLmlz
U3BhY2UoKTsKKyAgfQorICAKIH07CiAKIGlubGluZSBib29sIG9wZXJhdG9yID09IChjb25zdCBD
aGFyYWN0ZXImIGEsIGNvbnN0IENoYXJhY3RlciYgYikKZGlmZiAtLWdpdCBhL3NyYy9FbXVsYXRp
b24uY3BwIGIvc3JjL0VtdWxhdGlvbi5jcHAKaW5kZXggZjUyZjdlOC4uNTdmNjQwNSAxMDA2NDQK
LS0tIGEvc3JjL0VtdWxhdGlvbi5jcHAKKysrIGIvc3JjL0VtdWxhdGlvbi5jcHAKQEAgLTQ3LDYg
KzQ3LDkgQEAKICNpbmNsdWRlICJTY3JlZW4uaCIKICNpbmNsdWRlICJUZXJtaW5hbENoYXJhY3Rl
ckRlY29kZXIuaCIKICNpbmNsdWRlICJTY3JlZW5XaW5kb3cuaCIKKyNpbmNsdWRlICJTZXNzaW9u
TWFuYWdlci5oIgorI2luY2x1ZGUgIlNlc3Npb24uaCIKKyNpbmNsdWRlICJUZXJtaW5hbERpc3Bs
YXkuaCIKIAogdXNpbmcgbmFtZXNwYWNlIEtvbnNvbGU7CiAKQEAgLTM4OSw5ICszOTIsMTEgQEAg
dXNob3J0IEV4dGVuZGVkQ2hhclRhYmxlOjpjcmVhdGVFeHRlbmRlZENoYXIodXNob3J0KiB1bmlj
b2RlUG9pbnRzICwgdXNob3J0IGxlbmcKIHsKICAgICAvLyBsb29rIGZvciB0aGlzIHNlcXVlbmNl
IG9mIHBvaW50cyBpbiB0aGUgdGFibGUKICAgICB1c2hvcnQgaGFzaCA9IGV4dGVuZGVkQ2hhckhh
c2godW5pY29kZVBvaW50cyxsZW5ndGgpOworICAgIGNvbnN0IHVzaG9ydCBpbml0aWFsSGFzaCA9
IGhhc2g7CisgICAgYm9vbCB0cmllZENsZWFuaW5nU29sdXRpb24gPSBmYWxzZTsKIAogICAgIC8v
IGNoZWNrIGV4aXN0aW5nIGVudHJ5IGZvciBtYXRjaAotICAgIHdoaWxlICggZXh0ZW5kZWRDaGFy
VGFibGUuY29udGFpbnMoaGFzaCkgKQorICAgIHdoaWxlICggZXh0ZW5kZWRDaGFyVGFibGUuY29u
dGFpbnMoaGFzaCkgJiYgaGFzaCAhPSAwICkgLy8gMCBoYXMgYSBzcGVjaWFsIG1lYW5pbmcgZm9y
IGNoYXJzIHNvIHdlIGRvbid0IHVzZSBpdAogICAgIHsKICAgICAgICAgaWYgKCBleHRlbmRlZENo
YXJNYXRjaChoYXNoLHVuaWNvZGVQb2ludHMsbGVuZ3RoKSApCiAgICAgICAgIHsKQEAgLTQwNCw2
ICs0MDksNDUgQEAgdXNob3J0IEV4dGVuZGVkQ2hhclRhYmxlOjpjcmVhdGVFeHRlbmRlZENoYXIo
dXNob3J0KiB1bmljb2RlUG9pbnRzICwgdXNob3J0IGxlbmcKICAgICAgICAgICAgIC8vIGlmIGhh
c2ggaXMgYWxyZWFkeSB1c2VkIGJ5IGFub3RoZXIsIGRpZmZlcmVudCBzZXF1ZW5jZSBvZiB1bmlj
b2RlIGNoYXJhY3RlcgogICAgICAgICAgICAgLy8gcG9pbnRzIHRoZW4gdHJ5IG5leHQgaGFzaAog
ICAgICAgICAgICAgaGFzaCsrOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoaGFzaCA9
PSBpbml0aWFsSGFzaCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoIXRyaWVk
Q2xlYW5pbmdTb2x1dGlvbikKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
IHRyaWVkQ2xlYW5pbmdTb2x1dGlvbiA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIC8vIEFs
bCB0aGUgaGFzaGVzIGFyZSBmdWxsLCBnbyB0byBhbGwgU2NyZWVucyBhbmQgdHJ5IHRvIGZyZWUg
YW55CisgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgc2xvdyBidXQgc2hvdWxkIGhhcHBl
biB2ZXJ5IHJhcmVseQorICAgICAgICAgICAgICAgICAgICBRU2V0PHVzaG9ydD4gdXNlZEV4dGVu
ZGVkQ2hhcnM7CisgICAgICAgICAgICAgICAgICAgIFNlc3Npb25NYW5hZ2VyICpzbSA9IFNlc3Np
b25NYW5hZ2VyOjppbnN0YW5jZSgpOworICAgICAgICAgICAgICAgICAgICBmb3JlYWNoKFNlc3Np
b24gKnMsIHNtLT5zZXNzaW9ucygpKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBmb3JlYWNoKGNvbnN0IFRlcm1pbmFsRGlzcGxheSogdGQsIHMtPnZpZXdz
KCkpCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdXNlZEV4dGVuZGVkQ2hhcnMgKz0gdGQtPnNjcmVlbldpbmRvdygpLT5zY3JlZW4oKS0+dXNl
ZEV4dGVuZGVkQ2hhcnMoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICAgICAgUUhhc2g8dXNob3J0LHVzaG9ydCo+OjppdGVyYXRv
ciBpdCA9IGV4dGVuZGVkQ2hhclRhYmxlLmJlZ2luKCk7CisgICAgICAgICAgICAgICAgICAgIFFI
YXNoPHVzaG9ydCx1c2hvcnQqPjo6aXRlcmF0b3IgaXRFbmQgPSBleHRlbmRlZENoYXJUYWJsZS5l
bmQoKTsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGl0ICE9IGl0RW5kKQorICAgICAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodXNlZEV4dGVuZGVkQ2hh
cnMuY29udGFpbnMoaXQua2V5KCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICsraXQ7CisgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQgPSBleHRlbmRlZENoYXJUYWJsZS5lcmFzZShp
dCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAga1dhcm5pbmcoKSA8PCAiVXNpbmcgYWxsIHRoZSBleHRlbmRl
ZCBjaGFyIGhhc2hlcywgZ29pbmcgdG8gbWlzcyB0aGlzIGV4dGVuZGVkIGNoYXJhY3RlciI7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0gICAgCiAKZGlmZiAtLWdpdCBhL3NyYy9TY3JlZW4uY3Bw
IGIvc3JjL1NjcmVlbi5jcHAKaW5kZXggNDFkZjcxNi4uN2VkNTY2OSAxMDA2NDQKLS0tIGEvc3Jj
L1NjcmVlbi5jcHAKKysrIGIvc3JjL1NjcmVlbi5jcHAKQEAgLTIyMSw3ICsyMjEsNyBAQCB2b2lk
IFNjcmVlbjo6aW5zZXJ0Q2hhcnMoaW50IG4pCiAgICAgaWYgKCBzY3JlZW5MaW5lc1tjdVldLnNp
emUoKSA8IGN1WCApCiAgICAgICAgIHNjcmVlbkxpbmVzW2N1WV0ucmVzaXplKGN1WCk7CiAKLSAg
ICBzY3JlZW5MaW5lc1tjdVldLmluc2VydChjdVgsbiwnICcpOworICAgIHNjcmVlbkxpbmVzW2N1
WV0uaW5zZXJ0KGN1WCxuLENoYXJhY3RlcignICcpKTsKIAogICAgIGlmICggc2NyZWVuTGluZXNb
Y3VZXS5jb3VudCgpID4gY29sdW1ucyApCiAgICAgICAgIHNjcmVlbkxpbmVzW2N1WV0ucmVzaXpl
KGNvbHVtbnMpOwpAQCAtNTU3LDcgKzU1NywxMCBAQCB2b2lkIFNjcmVlbjo6YmFja3NwYWNlKCkK
ICAgICAgICAgc2NyZWVuTGluZXNbY3VZXS5yZXNpemUoY3VYKzEpOwogCiAgICAgaWYgKEJTX0NM
RUFSUykgCisgICAgewogICAgICAgICBzY3JlZW5MaW5lc1tjdVldW2N1WF0uY2hhcmFjdGVyID0g
JyAnOworICAgICAgICBzY3JlZW5MaW5lc1tjdVldW2N1WF0ucmVuZGl0aW9uID0gc2NyZWVuTGlu
ZXNbY3VZXVtjdVhdLnJlbmRpdGlvbiAmIH5SRV9FWFRFTkRFRF9DSEFSOworICAgIH0KIH0KIAog
dm9pZCBTY3JlZW46OnRhYihpbnQgbikKQEAgLTYzMSw4ICs2MzQsMzggQEAgdm9pZCBTY3JlZW46
OmRpc3BsYXlDaGFyYWN0ZXIodW5zaWduZWQgc2hvcnQgYykKICAgICAvLyBwdXR0aW5nIHRoZSBj
dXJzb3Igb25lIHJpZ2h0IHRvIHRoZSBsYXN0IGNvbHVtbiBvZiB0aGUgc2NyZWVuLgogCiAgICAg
aW50IHcgPSBrb25zb2xlX3djd2lkdGgoYyk7Ci0gICAgaWYgKHcgPD0gMCkKKyAgICBpZiAodyA8
IDApCiAgICAgICAgIHJldHVybjsKKyAgICBlbHNlIGlmICh3ID09IDApCisgICAgeworICAgICAg
ICBpZiAoUUNoYXIoYykuY2F0ZWdvcnkoKSAhPSBRQ2hhcjo6TWFya19Ob25TcGFjaW5nKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBpbnQgY2hhclRvQ29tYmluZVdpdGhYID0gLTE7Cisg
ICAgICAgIGludCBjaGFyVG9Db21iaW5lV2l0aFkgPSAtMTsKKyAgICAgICAgaWYgKGN1WCA9PSAw
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoY3VZID4gMCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBjaGFyVG9Db21iaW5lV2l0aFggPSBjb2x1bW5zIC0gMTsKKyAgICAgICAg
ICAgICAgICBjaGFyVG9Db21iaW5lV2l0aFkgPSBjdVkgLSAxOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGNoYXJUb0NvbWJpbmVXaXRoWCA9IGN1WCAtIDE7CisgICAgICAgICAgICBjaGFyVG9Db21i
aW5lV2l0aFkgPSBjdVk7CisgICAgICAgIH0KKyAgICAgICAgQ2hhcmFjdGVyJiBjdXJyZW50Q2hh
ciA9IHNjcmVlbkxpbmVzW2NoYXJUb0NvbWJpbmVXaXRoWV1bY2hhclRvQ29tYmluZVdpdGhYXTsK
KyAgICAgICAgUV9BU1NFUlQoKGN1cnJlbnRDaGFyLnJlbmRpdGlvbiAmIFJFX0VYVEVOREVEX0NI
QVIpID09IDApOworICAgICAgICB1c2hvcnQgY2hhcnNbMl0gPSB7IGN1cnJlbnRDaGFyLmNoYXJh
Y3RlciwgYyB9OworICAgICAgICBjdXJyZW50Q2hhci5yZW5kaXRpb24gfD0gUkVfRVhURU5ERURf
Q0hBUjsKKyAgICAgICAgY3VycmVudENoYXIuY2hhcmFjdGVyID0gRXh0ZW5kZWRDaGFyVGFibGU6
Omluc3RhbmNlLmNyZWF0ZUV4dGVuZGVkQ2hhcihjaGFycywgMik7CisgICAgICAgIHJldHVybjsK
KyAgICB9CiAKICAgICBpZiAoY3VYK3cgPiBjb2x1bW5zKSB7CiAgICAgICAgIGlmIChnZXRNb2Rl
KE1PREVfV3JhcCkpIHsKQEAgLTEyNDIsNyArMTI3NSw3IEBAIGludCBTY3JlZW46OmNvcHlMaW5l
VG9TdHJlYW0oaW50IGxpbmUgLAogCiAgICAgaWYgKCAhb21pdExpbmVCcmVhayAmJiBhcHBlbmRO
ZXdMaW5lICYmIChjb3VudCsxIDwgTUFYX0NIQVJTKSApCiAgICAgewotICAgICAgICBjaGFyYWN0
ZXJCdWZmZXJbY291bnRdID0gJ1xuJzsKKyAgICAgICAgY2hhcmFjdGVyQnVmZmVyW2NvdW50XSA9
IENoYXJhY3RlcignXG4nKTsKICAgICAgICAgY291bnQrKzsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L3NyYy9TY3JlZW4uaCBiL3NyYy9TY3JlZW4uaAppbmRleCBiYTk5MTQ1Li4zNWY1MmIxIDEwMDY0
NAotLS0gYS9zcmMvU2NyZWVuLmgKKysrIGIvc3JjL1NjcmVlbi5oCkBAIC0yNSw2ICsyNSw3IEBA
CiAKIC8vIFF0CiAjaW5jbHVkZSA8UXRDb3JlL1FSZWN0PgorI2luY2x1ZGUgPFF0Q29yZS9RU2V0
PgogI2luY2x1ZGUgPFF0Q29yZS9RVGV4dFN0cmVhbT4KICNpbmNsdWRlIDxRdENvcmUvUVZhckxl
bmd0aEFycmF5PgogCkBAIC01NTUsNiArNTU2LDIzIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAg
IHJldHVybiBfY3VycmVudFRlcm1pbmFsRGlzcGxheTsKICAgICB9CisgICAgCisgICAgUVNldDx1
c2hvcnQ+IHVzZWRFeHRlbmRlZENoYXJzKCkgY29uc3QKKyAgICB7CisgICAgICAgIFFTZXQ8dXNo
b3J0PiByZXN1bHQ7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGluZXM7ICsraSkKKyAg
ICAgICAgeworICAgICAgICAgICAgY29uc3QgSW1hZ2VMaW5lICZpbCA9IHNjcmVlbkxpbmVzW2ld
OworICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBjb2x1bW5zOyArK2opCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGlsW2pdLnJlbmRpdGlvbiAmIFJFX0VYVEVOREVE
X0NIQVIpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQgPDwg
aWxbal0uY2hhcmFjdGVyOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KIAogcHJpdmF0ZTogCiAKZGlmZiAt
LWdpdCBhL3NyYy9UZXJtaW5hbENoYXJhY3RlckRlY29kZXIuY3BwIGIvc3JjL1Rlcm1pbmFsQ2hh
cmFjdGVyRGVjb2Rlci5jcHAKaW5kZXggY2QwNWY2NS4uMTIzMmFmZSAxMDA2NDQKLS0tIGEvc3Jj
L1Rlcm1pbmFsQ2hhcmFjdGVyRGVjb2Rlci5jcHAKKysrIGIvc3JjL1Rlcm1pbmFsQ2hhcmFjdGVy
RGVjb2Rlci5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBQbGFpblRleHREZWNvZGVyOjpkZWNv
ZGVMaW5lKGNvbnN0IENoYXJhY3RlciogY29uc3QgY2hhcmFjdGVycywgaW50IGNvdW50LAogICAg
IHsKICAgICAgICAgZm9yIChpbnQgaSA9IGNvdW50LTEgOyBpID49IDAgOyBpLS0pCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGlmICggY2hhcmFjdGVyc1tpXS5jaGFyYWN0ZXIgIT0gJyAnICApCisg
ICAgICAgICAgICBpZiAoICFjaGFyYWN0ZXJzW2ldLmlzU3BhY2UoKSApCiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgb3V0cHV0Q291bnQt
LTsKQEAgLTEwMiw4ICsxMDIsMjIgQEAgdm9pZCBQbGFpblRleHREZWNvZGVyOjpkZWNvZGVMaW5l
KGNvbnN0IENoYXJhY3RlciogY29uc3QgY2hhcmFjdGVycywgaW50IGNvdW50LAogICAgIAogICAg
IGZvciAoaW50IGk9MDtpPG91dHB1dENvdW50OykKICAgICB7Ci0gICAgICAgIHBsYWluVGV4dC5h
cHBlbmQoIFFDaGFyKGNoYXJhY3RlcnNbaV0uY2hhcmFjdGVyKSApOwotICAgICAgICBpICs9IHFN
YXgoMSxrb25zb2xlX3djd2lkdGgoY2hhcmFjdGVyc1tpXS5jaGFyYWN0ZXIpKTsKKyAgICAgICAg
aWYgKGNoYXJhY3RlcnNbaV0ucmVuZGl0aW9uICYgUkVfRVhURU5ERURfQ0hBUikKKyAgICAgICAg
eworICAgICAgICAgICAgdXNob3J0IGV4dGVuZGVkQ2hhckxlbmd0aCA9IDA7CisgICAgICAgICAg
ICBjb25zdCB1c2hvcnQqIGNoYXJzID0gRXh0ZW5kZWRDaGFyVGFibGU6Omluc3RhbmNlLmxvb2t1
cEV4dGVuZGVkQ2hhcihjaGFyYWN0ZXJzW2ldLmNoYXJhY3RlciwgZXh0ZW5kZWRDaGFyTGVuZ3Ro
KTsKKyAgICAgICAgICAgIGlmIChjaGFycykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBjb25zdCBRU3RyaW5nIHMgPSBRU3RyaW5nOjpmcm9tVXRmMTYoY2hhcnMsIGV4dGVuZGVkQ2hh
ckxlbmd0aCk7CisgICAgICAgICAgICAgICAgcGxhaW5UZXh0LmFwcGVuZChzKTsKKyAgICAgICAg
ICAgICAgICBpICs9IHN0cmluZ193aWR0aChzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHBsYWluVGV4dC5hcHBlbmQoIFFD
aGFyKGNoYXJhY3RlcnNbaV0uY2hhcmFjdGVyKSApOworICAgICAgICAgICAgaSArPSBxTWF4KDEs
a29uc29sZV93Y3dpZHRoKGNoYXJhY3RlcnNbaV0uY2hhcmFjdGVyKSk7CisgICAgICAgIH0KICAg
ICB9CiAgICAgKl9vdXRwdXQgPDwgcGxhaW5UZXh0OwogfQpAQCAtMTU1LDggKzE2OSw2IEBAIHZv
aWQgSFRNTERlY29kZXI6OmRlY29kZUxpbmUoY29uc3QgQ2hhcmFjdGVyKiBjb25zdCBjaGFyYWN0
ZXJzLCBpbnQgY291bnQsIExpbmVQCiAgICAgICAgIAogICAgIGZvciAoaW50IGk9MDtpPGNvdW50
O2krKykKICAgICB7Ci0gICAgICAgIFFDaGFyIGNoKGNoYXJhY3RlcnNbaV0uY2hhcmFjdGVyKTsK
LQogICAgICAgICAvL2NoZWNrIGlmIGFwcGVhcmFuY2Ugb2YgY2hhcmFjdGVyIGlzIGRpZmZlcmVu
dCBmcm9tIHByZXZpb3VzIGNoYXIKICAgICAgICAgaWYgKCBjaGFyYWN0ZXJzW2ldLnJlbmRpdGlv
biAhPSBfbGFzdFJlbmRpdGlvbiAgfHwKICAgICAgICAgICAgICBjaGFyYWN0ZXJzW2ldLmZvcmVn
cm91bmRDb2xvciAhPSBfbGFzdEZvcmVDb2xvciAgfHwKQEAgLTIwMiw3ICsyMTQsNyBAQCB2b2lk
IEhUTUxEZWNvZGVyOjpkZWNvZGVMaW5lKGNvbnN0IENoYXJhY3RlciogY29uc3QgY2hhcmFjdGVy
cywgaW50IGNvdW50LCBMaW5lUAogICAgICAgICB9CiAKICAgICAgICAgLy9oYW5kbGUgd2hpdGVz
cGFjZQotICAgICAgICBpZiAoY2guaXNTcGFjZSgpKQorICAgICAgICBpZiAoY2hhcmFjdGVyc1tp
XS5pc1NwYWNlKCkpCiAgICAgICAgICAgICBzcGFjZUNvdW50Kys7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIHNwYWNlQ291bnQgPSAwOwpAQCAtMjExLDEzICsyMjMsMjYgQEAgdm9pZCBIVE1M
RGVjb2Rlcjo6ZGVjb2RlTGluZShjb25zdCBDaGFyYWN0ZXIqIGNvbnN0IGNoYXJhY3RlcnMsIGlu
dCBjb3VudCwgTGluZVAKICAgICAgICAgLy9vdXRwdXQgY3VycmVudCBjaGFyYWN0ZXIKICAgICAg
ICAgaWYgKHNwYWNlQ291bnQgPCAyKQogICAgICAgICB7Ci0gICAgICAgICAgICAvL2VzY2FwZSBI
VE1MIHRhZyBjaGFyYWN0ZXJzIGFuZCBqdXN0IGRpc3BsYXkgb3RoZXJzIGFzIHRoZXkgYXJlCi0g
ICAgICAgICAgICBpZiAoIGNoID09ICc8JyApCi0gICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQo
IiZsdDsiKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNoID09ICc+JykKKyAgICAgICAgICAgIGlm
IChjaGFyYWN0ZXJzW2ldLnJlbmRpdGlvbiAmIFJFX0VYVEVOREVEX0NIQVIpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgdXNob3J0IGV4dGVuZGVkQ2hhckxlbmd0aCA9IDA7CisgICAg
ICAgICAgICAgICAgY29uc3QgdXNob3J0KiBjaGFycyA9IEV4dGVuZGVkQ2hhclRhYmxlOjppbnN0
YW5jZS5sb29rdXBFeHRlbmRlZENoYXIoY2hhcmFjdGVyc1tpXS5jaGFyYWN0ZXIsIGV4dGVuZGVk
Q2hhckxlbmd0aCk7CisgICAgICAgICAgICAgICAgaWYgKGNoYXJzKQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQoUVN0cmluZzo6ZnJvbVV0ZjE2KGNo
YXJzLCBleHRlbmRlZENoYXJMZW5ndGgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy9l
c2NhcGUgSFRNTCB0YWcgY2hhcmFjdGVycyBhbmQganVzdCBkaXNwbGF5IG90aGVycyBhcyB0aGV5
IGFyZQorICAgICAgICAgICAgICAgIGNvbnN0IFFDaGFyIGNoID0gY2hhcmFjdGVyc1tpXS5jaGFy
YWN0ZXI7CisgICAgICAgICAgICAgICAgaWYgKCBjaCA9PSAnPCcgKQorICAgICAgICAgICAgICAg
ICAgICB0ZXh0LmFwcGVuZCgiJmx0OyIpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoID09
ICc+JykKICAgICAgICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQoIiZndDsiKTsKLSAgICAgICAg
ICAgIGVsc2UgICAgCisgICAgICAgICAgICAgICAgZWxzZSAgICAKICAgICAgICAgICAgICAgICAg
ICAgdGV4dC5hcHBlbmQoY2gpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGVs
c2UKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvc3JjL1Rlcm1pbmFsRGlzcGxheS5jcHAgYi9zcmMv
VGVybWluYWxEaXNwbGF5LmNwcAppbmRleCA1ZjY0NzhmLi43OGZhZjE1IDEwMDY0NAotLS0gYS9z
cmMvVGVybWluYWxEaXNwbGF5LmNwcAorKysgYi9zcmMvVGVybWluYWxEaXNwbGF5LmNwcApAQCAt
MTkwLDEwICsxOTAsMTAgQEAgdm9pZCBUZXJtaW5hbERpc3BsYXk6OnNldENvbG9yVGFibGUoY29u
c3QgQ29sb3JFbnRyeSB0YWJsZVtdKQogICAgUUNvZGVjLgogKi8KIAotc3RhdGljIGlubGluZSBi
b29sIGlzTGluZUNoYXIocXVpbnQxNiBjKSB7IHJldHVybiAoKGMgJiAweEZGODApID09IDB4MjUw
MCk7fQorCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNMaW5lQ2hhclN0cmluZyhjb25zdCBRU3RyaW5n
JiBzdHJpbmcpCiB7Ci0gICAgICAgIHJldHVybiAoc3RyaW5nLmxlbmd0aCgpID4gMCkgJiYgKGlz
TGluZUNoYXIoc3RyaW5nLmF0KDApLnVuaWNvZGUoKSkpOworICByZXR1cm4gKHN0cmluZy5sZW5n
dGgoKSA+IDApICYmICgoc3RyaW5nLmF0KDApLnVuaWNvZGUoKSAmIDB4RkY4MCkgPT0gMHgyNTAw
KTsKIH0KICAgICAgICAgICAgICAgICAgICAgICAgIAogCkBAIC0xMDExLDExICsxMDExLDEwIEBA
IHZvaWQgVGVybWluYWxEaXNwbGF5Ojp1cGRhdGVJbWFnZSgpCiAgICAgICAvLyB3aGVyZSBjaGFy
YWN0ZXJzIGV4Y2VlZCB0aGVpciBjZWxsIHdpZHRoLgogICAgICAgaWYgKGRpcnR5TWFza1t4XSkK
ICAgICAgIHsKLSAgICAgICAgcXVpbnQxNiBjID0gbmV3TGluZVt4KzBdLmNoYXJhY3RlcjsKLSAg
ICAgICAgaWYgKCAhYyApCisgICAgICAgIGlmICghbmV3TGluZVt4KzBdLmNoYXJhY3RlcikKICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBib29sIGxpbmVEcmF3ID0gaXNMaW5lQ2hhcihj
KTsKLSAgICAgICAgYm9vbCBkb3VibGVXaWR0aCA9ICh4KzEgPT0gY29sdW1uc1RvVXBkYXRlKSA/
IGZhbHNlIDogKG5ld0xpbmVbeCsxXS5jaGFyYWN0ZXIgPT0gMCk7CisgICAgICAgIGNvbnN0IGJv
b2wgbGluZURyYXcgPSBuZXdMaW5lW3grMF0uaXNMaW5lQ2hhcigpOworICAgICAgICBjb25zdCBi
b29sIGRvdWJsZVdpZHRoID0gKHgrMSA9PSBjb2x1bW5zVG9VcGRhdGUpID8gZmFsc2UgOiAobmV3
TGluZVt4KzFdLmNoYXJhY3RlciA9PSAwKTsKICAgICAgICAgY3IgPSBuZXdMaW5lW3hdLnJlbmRp
dGlvbjsKICAgICAgICAgX2NsaXBib2FyZCA9IG5ld0xpbmVbeF0uYmFja2dyb3VuZENvbG9yOwog
ICAgICAgICBpZiAobmV3TGluZVt4XS5mb3JlZ3JvdW5kQ29sb3IgIT0gY2YpIGNmID0gbmV3TGlu
ZVt4XS5mb3JlZ3JvdW5kQ29sb3I7CkBAIC0xMDMzLDcgKzEwMzIsNyBAQCB2b2lkIFRlcm1pbmFs
RGlzcGxheTo6dXBkYXRlSW1hZ2UoKQogICAgICAgICAgICAgICAgICAgY2guYmFja2dyb3VuZENv
bG9yICE9IF9jbGlwYm9hcmQgfHwgCiAgICAgICAgICAgICAgICAgICBjaC5yZW5kaXRpb24gIT0g
Y3IgfHwKICAgICAgICAgICAgICAgICAgICFkaXJ0eU1hc2tbeCtsZW5dIHx8IAotICAgICAgICAg
ICAgICAgICAgaXNMaW5lQ2hhcihjKSAhPSBsaW5lRHJhdyB8fCAKKyAgICAgICAgICAgICAgICAg
IGNoLmlzTGluZUNoYXIoKSAhPSBsaW5lRHJhdyB8fCAKICAgICAgICAgICAgICAgICAgIG5leHRJ
c0RvdWJsZVdpZHRoICE9IGRvdWJsZVdpZHRoICkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CkBAIC0xMzE4LDcgKzEzMTcsNyBAQCB2b2lkIFRlcm1pbmFsRGlzcGxheTo6cGFpbnRGaWx0
ZXJzKFFQYWludGVyJiBwYWludGVyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGRpc3BsYXkgaW4gX2NvbHVtbnMKIAogICAgICAgICAgICAgLy8gaWdub3JlIHdo
aXRlc3BhY2UgYXQgdGhlIGVuZCBvZiB0aGUgbGluZXMKLSAgICAgICAgICAgIHdoaWxlICggUUNo
YXIoX2ltYWdlW2xvYyhlbmRDb2x1bW4sbGluZSldLmNoYXJhY3RlcikuaXNTcGFjZSgpICYmIGVu
ZENvbHVtbiA+IDAgKQorICAgICAgICAgICAgd2hpbGUgKCBfaW1hZ2VbbG9jKGVuZENvbHVtbixs
aW5lKV0uaXNTcGFjZSgpICYmIGVuZENvbHVtbiA+IDAgKQogICAgICAgICAgICAgICAgIGVuZENv
bHVtbi0tOwogICAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIGluY3JlbWVudCBoZXJlIGJl
Y2F1c2UgdGhlIGNvbHVtbiB3aGljaCB3ZSB3YW50IHRvIHNldCAnZW5kQ29sdW1uJyB0bwpAQCAt
MTM3MSwzMCArMTM3MCwzMCBAQCB2b2lkIFRlcm1pbmFsRGlzcGxheTo6cGFpbnRGaWx0ZXJzKFFQ
YWludGVyJiBwYWludGVyKQogfQogdm9pZCBUZXJtaW5hbERpc3BsYXk6OmRyYXdDb250ZW50cyhR
UGFpbnRlciAmcGFpbnQsIGNvbnN0IFFSZWN0ICZyZWN0KQogewotICBRUG9pbnQgdEwgID0gY29u
dGVudHNSZWN0KCkudG9wTGVmdCgpOwotICBpbnQgICAgdEx4ID0gdEwueCgpOwotICBpbnQgICAg
dEx5ID0gdEwueSgpOworICBjb25zdCBRUG9pbnQgdEwgID0gY29udGVudHNSZWN0KCkudG9wTGVm
dCgpOworICBjb25zdCBpbnQgICAgdEx4ID0gdEwueCgpOworICBjb25zdCBpbnQgICAgdEx5ID0g
dEwueSgpOwogCi0gIGludCBsdXggPSBxTWluKF91c2VkQ29sdW1ucy0xLCBxTWF4KDAsKHJlY3Qu
bGVmdCgpICAgLSB0THggLSBfbGVmdE1hcmdpbiApIC8gX2ZvbnRXaWR0aCkpOwotICBpbnQgbHV5
ID0gcU1pbihfdXNlZExpbmVzLTEsICBxTWF4KDAsKHJlY3QudG9wKCkgICAgLSB0THkgLSBfdG9w
TWFyZ2luICApIC8gX2ZvbnRIZWlnaHQpKTsKLSAgaW50IHJseCA9IHFNaW4oX3VzZWRDb2x1bW5z
LTEsIHFNYXgoMCwocmVjdC5yaWdodCgpICAtIHRMeCAtIF9sZWZ0TWFyZ2luICkgLyBfZm9udFdp
ZHRoKSk7Ci0gIGludCBybHkgPSBxTWluKF91c2VkTGluZXMtMSwgIHFNYXgoMCwocmVjdC5ib3R0
b20oKSAtIHRMeSAtIF90b3BNYXJnaW4gICkgLyBfZm9udEhlaWdodCkpOworICBjb25zdCBpbnQg
bHV4ID0gcU1pbihfdXNlZENvbHVtbnMtMSwgcU1heCgwLChyZWN0LmxlZnQoKSAgIC0gdEx4IC0g
X2xlZnRNYXJnaW4gKSAvIF9mb250V2lkdGgpKTsKKyAgY29uc3QgaW50IGx1eSA9IHFNaW4oX3Vz
ZWRMaW5lcy0xLCAgcU1heCgwLChyZWN0LnRvcCgpICAgIC0gdEx5IC0gX3RvcE1hcmdpbiAgKSAv
IF9mb250SGVpZ2h0KSk7CisgIGNvbnN0IGludCBybHggPSBxTWluKF91c2VkQ29sdW1ucy0xLCBx
TWF4KDAsKHJlY3QucmlnaHQoKSAgLSB0THggLSBfbGVmdE1hcmdpbiApIC8gX2ZvbnRXaWR0aCkp
OworICBjb25zdCBpbnQgcmx5ID0gcU1pbihfdXNlZExpbmVzLTEsICBxTWF4KDAsKHJlY3QuYm90
dG9tKCkgLSB0THkgLSBfdG9wTWFyZ2luICApIC8gX2ZvbnRIZWlnaHQpKTsKIAotICBjb25zdCBp
bnQgYnVmZmVyU2l6ZSA9IF91c2VkQ29sdW1uczsKKyAgY29uc3QgaW50IG51bWJlck9mQ29sdW1u
cyA9IF91c2VkQ29sdW1uczsKICAgUVN0cmluZyB1bmlzdHI7Ci0gIHVuaXN0ci5yZXNlcnZlKGJ1
ZmZlclNpemUpOworICB1bmlzdHIucmVzZXJ2ZShudW1iZXJPZkNvbHVtbnMpOwogICBmb3IgKGlu
dCB5ID0gbHV5OyB5IDw9IHJseTsgeSsrKQogICB7Ci0gICAgcXVpbnQxNiBjID0gX2ltYWdlW2xv
YyhsdXgseSldLmNoYXJhY3RlcjsKICAgICBpbnQgeCA9IGx1eDsKLSAgICBpZighYyAmJiB4KQor
ICAgIGlmKCFfaW1hZ2VbbG9jKGx1eCx5KV0uY2hhcmFjdGVyICYmIHgpCiAgICAgICB4LS07IC8v
IFNlYXJjaCBmb3Igc3RhcnQgb2YgbXVsdGktY29sdW1uIGNoYXJhY3RlcgogICAgIGZvciAoOyB4
IDw9IHJseDsgeCsrKQogICAgIHsKICAgICAgIGludCBsZW4gPSAxOwogICAgICAgaW50IHAgPSAw
OwogCi0gICAgICAvLyByZXNldCBvdXIgYnVmZmVyIHRvIHRoZSBtYXhpbWFsIHNpemUKKyAgICAg
IC8vIHJlc2V0IG91ciBidWZmZXIgdG8gdGhlIG51bWJlciBvZiBjb2x1bW5zCisgICAgICBpbnQg
YnVmZmVyU2l6ZSA9IG51bWJlck9mQ29sdW1uczsKICAgICAgIHVuaXN0ci5yZXNpemUoYnVmZmVy
U2l6ZSk7CiAgICAgICBRQ2hhciAqZGlzc3RyVSA9IHVuaXN0ci5kYXRhKCk7CiAKQEAgLTE0MDMs
MTggKzE0MDIsMjQgQEAgdm9pZCBUZXJtaW5hbERpc3BsYXk6OmRyYXdDb250ZW50cyhRUGFpbnRl
ciAmcGFpbnQsIGNvbnN0IFFSZWN0ICZyZWN0KQogICAgICAgewogICAgICAgICAvLyBzZXF1ZW5j
ZSBvZiBjaGFyYWN0ZXJzCiAgICAgICAgIHVzaG9ydCBleHRlbmRlZENoYXJMZW5ndGggPSAwOwot
ICAgICAgICB1c2hvcnQqIGNoYXJzID0gRXh0ZW5kZWRDaGFyVGFibGU6Omluc3RhbmNlCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLmxvb2t1cEV4dGVuZGVkQ2hhcihfaW1hZ2VbbG9jKHgs
eSldLmNoYXJTZXF1ZW5jZSxleHRlbmRlZENoYXJMZW5ndGgpOwotICAgICAgICBmb3IgKCBpbnQg
aW5kZXggPSAwIDsgaW5kZXggPCBleHRlbmRlZENoYXJMZW5ndGggOyBpbmRleCsrICkgCisgICAg
ICAgIGNvbnN0IHVzaG9ydCogY2hhcnMgPSBFeHRlbmRlZENoYXJUYWJsZTo6aW5zdGFuY2UubG9v
a3VwRXh0ZW5kZWRDaGFyKF9pbWFnZVtsb2MoeCx5KV0uY2hhcmFjdGVyLCBleHRlbmRlZENoYXJM
ZW5ndGgpOworICAgICAgICBpZiAoY2hhcnMpCiAgICAgICAgIHsKKyAgICAgICAgICBRX0FTU0VS
VChleHRlbmRlZENoYXJMZW5ndGggPiAxKTsKKyAgICAgICAgICBidWZmZXJTaXplICs9IGV4dGVu
ZGVkQ2hhckxlbmd0aCAtIDE7CisgICAgICAgICAgdW5pc3RyLnJlc2l6ZShidWZmZXJTaXplKTsK
KyAgICAgICAgICBkaXNzdHJVID0gdW5pc3RyLmRhdGEoKTsKKyAgICAgICAgICBmb3IgKCBpbnQg
aW5kZXggPSAwIDsgaW5kZXggPCBleHRlbmRlZENoYXJMZW5ndGggOyBpbmRleCsrICkgCisgICAg
ICAgICAgewogICAgICAgICAgICAgUV9BU1NFUlQoIHAgPCBidWZmZXJTaXplICk7CiAgICAgICAg
ICAgICBkaXNzdHJVW3ArK10gPSBjaGFyc1tpbmRleF07CisgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgICB9CiAgICAgICBlbHNlCiAgICAgICB7CiAgICAgICAgIC8vIHNpbmdsZSBjaGFyYWN0
ZXIKLSAgICAgICAgYyA9IF9pbWFnZVtsb2MoeCx5KV0uY2hhcmFjdGVyOworICAgICAgICBjb25z
dCBxdWludDE2IGMgPSBfaW1hZ2VbbG9jKHgseSldLmNoYXJhY3RlcjsKICAgICAgICAgaWYgKGMp
CiAgICAgICAgIHsKICAgICAgICAgICAgICBRX0FTU0VSVCggcCA8IGJ1ZmZlclNpemUgKTsKQEAg
LTE0MjIsMjEgKzE0MjcsNDggQEAgdm9pZCBUZXJtaW5hbERpc3BsYXk6OmRyYXdDb250ZW50cyhR
UGFpbnRlciAmcGFpbnQsIGNvbnN0IFFSZWN0ICZyZWN0KQogICAgICAgICB9CiAgICAgICB9CiAK
LSAgICAgIGJvb2wgbGluZURyYXcgPSBpc0xpbmVDaGFyKGMpOwotICAgICAgYm9vbCBkb3VibGVX
aWR0aCA9IChfaW1hZ2VbIHFNaW4obG9jKHgseSkrMSxfaW1hZ2VTaXplKSBdLmNoYXJhY3RlciA9
PSAwKTsKLSAgICAgIENoYXJhY3RlckNvbG9yIGN1cnJlbnRGb3JlZ3JvdW5kID0gX2ltYWdlW2xv
Yyh4LHkpXS5mb3JlZ3JvdW5kQ29sb3I7Ci0gICAgICBDaGFyYWN0ZXJDb2xvciBjdXJyZW50QmFj
a2dyb3VuZCA9IF9pbWFnZVtsb2MoeCx5KV0uYmFja2dyb3VuZENvbG9yOwotICAgICAgcXVpbnQ4
IGN1cnJlbnRSZW5kaXRpb24gPSBfaW1hZ2VbbG9jKHgseSldLnJlbmRpdGlvbjsKKyAgICAgIGNv
bnN0IGJvb2wgbGluZURyYXcgPSBfaW1hZ2VbbG9jKHgseSldLmlzTGluZUNoYXIoKTsKKyAgICAg
IGNvbnN0IGJvb2wgZG91YmxlV2lkdGggPSAoX2ltYWdlWyBxTWluKGxvYyh4LHkpKzEsX2ltYWdl
U2l6ZSkgXS5jaGFyYWN0ZXIgPT0gMCk7CisgICAgICBjb25zdCBDaGFyYWN0ZXJDb2xvciBjdXJy
ZW50Rm9yZWdyb3VuZCA9IF9pbWFnZVtsb2MoeCx5KV0uZm9yZWdyb3VuZENvbG9yOworICAgICAg
Y29uc3QgQ2hhcmFjdGVyQ29sb3IgY3VycmVudEJhY2tncm91bmQgPSBfaW1hZ2VbbG9jKHgseSld
LmJhY2tncm91bmRDb2xvcjsKKyAgICAgIGNvbnN0IHF1aW50OCBjdXJyZW50UmVuZGl0aW9uID0g
X2ltYWdlW2xvYyh4LHkpXS5yZW5kaXRpb247CiAgICAgICAKICAgICAgIHdoaWxlICh4K2xlbiA8
PSBybHggJiYKICAgICAgICAgICAgICBfaW1hZ2VbbG9jKHgrbGVuLHkpXS5mb3JlZ3JvdW5kQ29s
b3IgPT0gY3VycmVudEZvcmVncm91bmQgJiYKICAgICAgICAgICAgICBfaW1hZ2VbbG9jKHgrbGVu
LHkpXS5iYWNrZ3JvdW5kQ29sb3IgPT0gY3VycmVudEJhY2tncm91bmQgJiYKICAgICAgICAgICAg
ICBfaW1hZ2VbbG9jKHgrbGVuLHkpXS5yZW5kaXRpb24gPT0gY3VycmVudFJlbmRpdGlvbiAmJgog
ICAgICAgICAgICAgIChfaW1hZ2VbIHFNaW4obG9jKHgrbGVuLHkpKzEsX2ltYWdlU2l6ZSkgXS5j
aGFyYWN0ZXIgPT0gMCkgPT0gZG91YmxlV2lkdGggJiYKLSAgICAgICAgICAgICBpc0xpbmVDaGFy
KCBjID0gX2ltYWdlW2xvYyh4K2xlbix5KV0uY2hhcmFjdGVyKSA9PSBsaW5lRHJhdykgLy8gQXNz
aWdubWVudCEKKyAgICAgICAgICAgICBfaW1hZ2VbbG9jKHgrbGVuLHkpXS5pc0xpbmVDaGFyKCkg
PT0gbGluZURyYXcpCiAgICAgICB7Ci0gICAgICAgIGlmIChjKQotICAgICAgICAgIGRpc3N0clVb
cCsrXSA9IGM7IC8vZm9udE1hcChjKTsKKyAgICAgICAgY29uc3QgcXVpbnQxNiBjID0gX2ltYWdl
W2xvYyh4K2xlbix5KV0uY2hhcmFjdGVyOworICAgICAgICBpZiAoIGN1cnJlbnRSZW5kaXRpb24g
JiBSRV9FWFRFTkRFRF9DSEFSICkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gc2VxdWVuY2Ug
b2YgY2hhcmFjdGVycworICAgICAgICAgICAgdXNob3J0IGV4dGVuZGVkQ2hhckxlbmd0aCA9IDA7
CisgICAgICAgICAgICBjb25zdCB1c2hvcnQqIGNoYXJzID0gRXh0ZW5kZWRDaGFyVGFibGU6Omlu
c3RhbmNlLmxvb2t1cEV4dGVuZGVkQ2hhcihjLCBleHRlbmRlZENoYXJMZW5ndGgpOworICAgICAg
ICAgICAgaWYgKGNoYXJzKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBRX0FTU0VSVChl
eHRlbmRlZENoYXJMZW5ndGggPiAxKTsKKyAgICAgICAgICAgICAgYnVmZmVyU2l6ZSArPSBleHRl
bmRlZENoYXJMZW5ndGggLSAxOworICAgICAgICAgICAgICB1bmlzdHIucmVzaXplKGJ1ZmZlclNp
emUpOworICAgICAgICAgICAgICBkaXNzdHJVID0gdW5pc3RyLmRhdGEoKTsKKyAgICAgICAgICAg
ICAgZm9yICggaW50IGluZGV4ID0gMCA7IGluZGV4IDwgZXh0ZW5kZWRDaGFyTGVuZ3RoIDsgaW5k
ZXgrKyApIAorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgUV9BU1NFUlQoIHAgPCBi
dWZmZXJTaXplICk7CisgICAgICAgICAgICAgICAgZGlzc3RyVVtwKytdID0gY2hhcnNbaW5kZXhd
OworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxz
ZQorICAgICAgICB7CisgICAgICAgICAgICAvLyBzaW5nbGUgY2hhcmFjdGVyCisgICAgICAgICAg
ICBpZiAoYykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBRX0FTU0VSVCggcCA8IGJ1
ZmZlclNpemUgKTsKKyAgICAgICAgICAgICAgICBkaXNzdHJVW3ArK10gPSBjOyAvL2ZvbnRNYXAo
Yyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIAogICAgICAgICBpZiAoZG91Ymxl
V2lkdGgpIC8vIGFzc2VydCgoX2ltYWdlW2xvYyh4K2xlbix5KSsxXS5jaGFyYWN0ZXIgPT0gMCkp
LCBzZWUgYWJvdmUgaWYgY29uZGl0aW9uCiAgICAgICAgICAgbGVuKys7IC8vIFNraXAgdHJhaWxp
bmcgcGFydCBvZiBtdWx0aS1jb2x1bW4gY2hhcmFjdGVyCiAgICAgICAgIGxlbisrOwpAQCAtMTk0
Nyw5ICsxOTc5LDkgQEAgdm9pZCBUZXJtaW5hbERpc3BsYXk6OmV4dGVuZFNlbGVjdGlvbiggY29u
c3QgUVBvaW50JiBwb3NpdGlvbiApCiAgICAgUVBvaW50IGxlZnQgPSBsZWZ0X25vdF9yaWdodCA/
IGhlcmUgOiBfaVBudFNlbENvcnI7CiAgICAgaSA9IGxvYyhsZWZ0LngoKSxsZWZ0LnkoKSk7CiAg
ICAgaWYgKGk+PTAgJiYgaTw9X2ltYWdlU2l6ZSkgewotICAgICAgc2VsQ2xhc3MgPSBjaGFyQ2xh
c3MoX2ltYWdlW2ldLmNoYXJhY3Rlcik7CisgICAgICBzZWxDbGFzcyA9IGNoYXJDbGFzcyhfaW1h
Z2VbaV0pOwogICAgICAgd2hpbGUgKCAoKGxlZnQueCgpPjApIHx8IChsZWZ0LnkoKT4wICYmIChf
bGluZVByb3BlcnRpZXNbbGVmdC55KCktMV0gJiBMSU5FX1dSQVBQRUQpICkpIAotICAgICAgICAg
ICAgICAgICAgICAgICYmIGNoYXJDbGFzcyhfaW1hZ2VbaS0xXS5jaGFyYWN0ZXIpID09IHNlbENs
YXNzICkKKyAgICAgICAgICAgICAgICAgICAgICAmJiBjaGFyQ2xhc3MoX2ltYWdlW2ktMV0pID09
IHNlbENsYXNzICkKICAgICAgIHsgaS0tOyBpZiAobGVmdC54KCk+MCkgbGVmdC5yeCgpLS07IGVs
c2Uge2xlZnQucngoKT1fdXNlZENvbHVtbnMtMTsgbGVmdC5yeSgpLS07fSB9CiAgICAgfQogCkBA
IC0xOTU3LDkgKzE5ODksOSBAQCB2b2lkIFRlcm1pbmFsRGlzcGxheTo6ZXh0ZW5kU2VsZWN0aW9u
KCBjb25zdCBRUG9pbnQmIHBvc2l0aW9uICkKICAgICBRUG9pbnQgcmlnaHQgPSBsZWZ0X25vdF9y
aWdodCA/IF9pUG50U2VsQ29yciA6IGhlcmU7CiAgICAgaSA9IGxvYyhyaWdodC54KCkscmlnaHQu
eSgpKTsKICAgICBpZiAoaT49MCAmJiBpPD1faW1hZ2VTaXplKSB7Ci0gICAgICBzZWxDbGFzcyA9
IGNoYXJDbGFzcyhfaW1hZ2VbaV0uY2hhcmFjdGVyKTsKKyAgICAgIHNlbENsYXNzID0gY2hhckNs
YXNzKF9pbWFnZVtpXSk7CiAgICAgICB3aGlsZSggKChyaWdodC54KCk8X3VzZWRDb2x1bW5zLTEp
IHx8IChyaWdodC55KCk8X3VzZWRMaW5lcy0xICYmIChfbGluZVByb3BlcnRpZXNbcmlnaHQueSgp
XSAmIExJTkVfV1JBUFBFRCkgKSkgCi0gICAgICAgICAgICAgICAgICAgICAgJiYgY2hhckNsYXNz
KF9pbWFnZVtpKzFdLmNoYXJhY3RlcikgPT0gc2VsQ2xhc3MgKQorICAgICAgICAgICAgICAgICAg
ICAgICYmIGNoYXJDbGFzcyhfaW1hZ2VbaSsxXSkgPT0gc2VsQ2xhc3MgKQogICAgICAgeyBpKys7
IGlmIChyaWdodC54KCk8X3VzZWRDb2x1bW5zLTEpIHJpZ2h0LnJ4KCkrKzsgZWxzZSB7cmlnaHQu
cngoKT0wOyByaWdodC5yeSgpKys7IH0gfQogICAgIH0KIApAQCAtMjAyOSw3ICsyMDYxLDcgQEAg
dm9pZCBUZXJtaW5hbERpc3BsYXk6OmV4dGVuZFNlbGVjdGlvbiggY29uc3QgUVBvaW50JiBwb3Np
dGlvbiApCiAgICAgewogICAgICAgaSA9IGxvYyhyaWdodC54KCkscmlnaHQueSgpKTsKICAgICAg
IGlmIChpPj0wICYmIGk8PV9pbWFnZVNpemUpIHsKLSAgICAgICAgc2VsQ2xhc3MgPSBjaGFyQ2xh
c3MoX2ltYWdlW2ktMV0uY2hhcmFjdGVyKTsKKyAgICAgICAgc2VsQ2xhc3MgPSBjaGFyQ2xhc3Mo
X2ltYWdlW2ktMV0pOwogICAgICAgIC8qIGlmIChzZWxDbGFzcyA9PSAnICcpCiAgICAgICAgIHsK
ICAgICAgICAgICB3aGlsZSAoIHJpZ2h0LngoKSA8IF91c2VkQ29sdW1ucy0xICYmIGNoYXJDbGFz
cyhfaW1hZ2VbaSsxXS5jaGFyYWN0ZXIpID09IHNlbENsYXNzICYmIChyaWdodC55KCk8X3VzZWRM
aW5lcy0xKSAmJiAKQEAgLTIyMDEsMTIgKzIyMzMsMTIgQEAgdm9pZCBUZXJtaW5hbERpc3BsYXk6
Om1vdXNlRG91YmxlQ2xpY2tFdmVudChRTW91c2VFdmVudCogZXYpCiAgIF93b3JkU2VsZWN0aW9u
TW9kZSA9IHRydWU7CiAKICAgLy8gZmluZCB3b3JkIGJvdW5kYXJpZXMuLi4KLSAgUUNoYXIgc2Vs
Q2xhc3MgPSBjaGFyQ2xhc3MoX2ltYWdlW2ldLmNoYXJhY3Rlcik7CisgIGNvbnN0IFFDaGFyIHNl
bENsYXNzID0gY2hhckNsYXNzKF9pbWFnZVtpXSk7CiAgIHsKICAgICAgLy8gZmluZCB0aGUgc3Rh
cnQgb2YgdGhlIHdvcmQKICAgICAgaW50IHggPSBiZ25TZWwueCgpOwogICAgICB3aGlsZSAoICgo
eD4wKSB8fCAoYmduU2VsLnkoKT4wICYmIChfbGluZVByb3BlcnRpZXNbYmduU2VsLnkoKS0xXSAm
IExJTkVfV1JBUFBFRCkgKSkgCi0gICAgICAgICAgICAgICAgICAgICAmJiBjaGFyQ2xhc3MoX2lt
YWdlW2ktMV0uY2hhcmFjdGVyKSA9PSBzZWxDbGFzcyApCisgICAgICAgICAgICAgICAgICAgICAm
JiBjaGFyQ2xhc3MoX2ltYWdlW2ktMV0pID09IHNlbENsYXNzICkKICAgICAgeyAgCiAgICAgICAg
aS0tOyAKICAgICAgICBpZiAoeD4wKSAKQEAgLTIyMjUsNyArMjI1Nyw3IEBAIHZvaWQgVGVybWlu
YWxEaXNwbGF5Ojptb3VzZURvdWJsZUNsaWNrRXZlbnQoUU1vdXNlRXZlbnQqIGV2KQogICAgICBp
ID0gbG9jKCBlbmRTZWwueCgpLCBlbmRTZWwueSgpICk7CiAgICAgIHggPSBlbmRTZWwueCgpOwog
ICAgICB3aGlsZSggKCh4PF91c2VkQ29sdW1ucy0xKSB8fCAoZW5kU2VsLnkoKTxfdXNlZExpbmVz
LTEgJiYgKF9saW5lUHJvcGVydGllc1tlbmRTZWwueSgpXSAmIExJTkVfV1JBUFBFRCkgKSkgCi0g
ICAgICAgICAgICAgICAgICAgICAmJiBjaGFyQ2xhc3MoX2ltYWdlW2krMV0uY2hhcmFjdGVyKSA9
PSBzZWxDbGFzcyApCisgICAgICAgICAgICAgICAgICAgICAmJiBjaGFyQ2xhc3MoX2ltYWdlW2kr
MV0pID09IHNlbENsYXNzICkKICAgICAgeyAKICAgICAgICAgIGkrKzsgCiAgICAgICAgICBpZiAo
eDxfdXNlZENvbHVtbnMtMSkgCkBAIC0yMjQwLDggKzIyNzIsMTIgQEAgdm9pZCBUZXJtaW5hbERp
c3BsYXk6Om1vdXNlRG91YmxlQ2xpY2tFdmVudChRTW91c2VFdmVudCogZXYpCiAgICAgIGVuZFNl
bC5zZXRYKHgpOwogCiAgICAgIC8vIEluIHdvcmQgc2VsZWN0aW9uIG1vZGUgZG9uJ3Qgc2VsZWN0
IEAgKDY0KSBpZiBhdCBlbmQgb2Ygd29yZC4KLSAgICAgaWYgKCAoIFFDaGFyKCBfaW1hZ2VbaV0u
Y2hhcmFjdGVyICkgPT0gJ0AnICkgJiYgKCAoIGVuZFNlbC54KCkgLSBiZ25TZWwueCgpICkgPiAw
ICkgKQorICAgICBpZiAoICgoX2ltYWdlW2ldLnJlbmRpdGlvbiAmIFJFX0VYVEVOREVEX0NIQVIp
ID09IDApICYmCisgICAgICAgICAgKCBRQ2hhciggX2ltYWdlW2ldLmNoYXJhY3RlciApID09ICdA
JyApICYmCisgICAgICAgICAgKCAoIGVuZFNlbC54KCkgLSBiZ25TZWwueCgpICkgPiAwICkgKQor
ICAgICB7CiAgICAgICAgZW5kU2VsLnNldFgoIHggLSAxICk7CisgICAgIH0KIAogCiAgICAgIF9h
Y3RTZWwgPSAyOyAvLyB3aXRoaW4gc2VsZWN0aW9uCkBAIC0yMzM0LDEzICsyMzcwLDEzIEBAIHZv
aWQgVGVybWluYWxEaXNwbGF5Ojptb3VzZVRyaXBsZUNsaWNrRXZlbnQoUU1vdXNlRXZlbnQqIGV2
KQogICBpZiAoX3RyaXBsZUNsaWNrTW9kZSA9PSBTZWxlY3RGb3J3YXJkc0Zyb21DdXJzb3IpIHsK
ICAgICAvLyBmaW5kIHdvcmQgYm91bmRhcnkgc3RhcnQKICAgICBpbnQgaSA9IGxvYyhfaVBudFNl
bC54KCksX2lQbnRTZWwueSgpKTsKLSAgICBRQ2hhciBzZWxDbGFzcyA9IGNoYXJDbGFzcyhfaW1h
Z2VbaV0uY2hhcmFjdGVyKTsKKyAgICBjb25zdCBRQ2hhciBzZWxDbGFzcyA9IGNoYXJDbGFzcyhf
aW1hZ2VbaV0pOwogICAgIGludCB4ID0gX2lQbnRTZWwueCgpOwogICAgIAogICAgIHdoaWxlICgg
KCh4PjApIHx8IAogICAgICAgICAgICAgIChfaVBudFNlbC55KCk+MCAmJiAoX2xpbmVQcm9wZXJ0
aWVzW19pUG50U2VsLnkoKS0xXSAmIExJTkVfV1JBUFBFRCkgKQogICAgICAgICAgICAgKSAKLSAg
ICAgICAgICAgICYmIGNoYXJDbGFzcyhfaW1hZ2VbaS0xXS5jaGFyYWN0ZXIpID09IHNlbENsYXNz
ICkKKyAgICAgICAgICAgICYmIGNoYXJDbGFzcyhfaW1hZ2VbaS0xXSkgPT0gc2VsQ2xhc3MgKQog
ICAgIHsKICAgICAgICAgaS0tOyAKICAgICAgICAgaWYgKHg+MCkgCkBAIC0yMzgwLDE0ICsyNDE2
LDM0IEBAIGJvb2wgVGVybWluYWxEaXNwbGF5Ojpmb2N1c05leHRQcmV2Q2hpbGQoIGJvb2wgbmV4
dCApCiB9CiAKIAotUUNoYXIgVGVybWluYWxEaXNwbGF5OjpjaGFyQ2xhc3MoUUNoYXIgcWNoKSBj
b25zdAorUUNoYXIgVGVybWluYWxEaXNwbGF5OjpjaGFyQ2xhc3MoY29uc3QgQ2hhcmFjdGVyICZj
aCkgY29uc3QKIHsKLSAgICBpZiAoIHFjaC5pc1NwYWNlKCkgKSByZXR1cm4gJyAnOworICAgIGlm
IChjaC5yZW5kaXRpb24gJiBSRV9FWFRFTkRFRF9DSEFSKQorICAgIHsKKyAgICAgICAgdXNob3J0
IGV4dGVuZGVkQ2hhckxlbmd0aCA9IDA7CisgICAgICAgIGNvbnN0IHVzaG9ydCogY2hhcnMgPSBF
eHRlbmRlZENoYXJUYWJsZTo6aW5zdGFuY2UubG9va3VwRXh0ZW5kZWRDaGFyKGNoLmNoYXJhY3Rl
ciwgZXh0ZW5kZWRDaGFyTGVuZ3RoKTsKKyAgICAgICAgaWYgKGNoYXJzICYmIGV4dGVuZGVkQ2hh
ckxlbmd0aCA+IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IFFTdHJpbmcgcyA9IFFT
dHJpbmc6OmZyb21VdGYxNihjaGFycywgZXh0ZW5kZWRDaGFyTGVuZ3RoKTsKKyAgICAgICAgICAg
IGlmIChfd29yZENoYXJhY3RlcnMuY29udGFpbnMocywgUXQ6OkNhc2VJbnNlbnNpdGl2ZSkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuICdhJzsKKyAgICAgICAgICAgIGJvb2wgYWxsTGV0dGVyT3JO
dW1iZXIgPSB0cnVlOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGFsbExldHRlck9yTnVt
YmVyICYmIGkgPCBzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgICAgIGFsbExldHRlck9yTnVt
YmVyID0gcy5hdChpKS5pc0xldHRlck9yTnVtYmVyKCk7CisgICAgICAgICAgICByZXR1cm4gYWxs
TGV0dGVyT3JOdW1iZXIgPyAnYScgOiBzLmF0KDApOworICAgICAgICB9CisgICAgICAgIHJldHVy
biAwOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBjb25zdCBRQ2hhciBxY2goY2gu
Y2hhcmFjdGVyKTsKKyAgICAgICAgaWYgKCBxY2guaXNTcGFjZSgpICkgcmV0dXJuICcgJzsKIAog
ICAgIGlmICggcWNoLmlzTGV0dGVyT3JOdW1iZXIoKSB8fCBfd29yZENoYXJhY3RlcnMuY29udGFp
bnMocWNoLCBRdDo6Q2FzZUluc2Vuc2l0aXZlICkgKQogICAgIHJldHVybiAnYSc7CiAKICAgICBy
ZXR1cm4gcWNoOworICAgIH0KIH0KIAogdm9pZCBUZXJtaW5hbERpc3BsYXk6OnNldFdvcmRDaGFy
YWN0ZXJzKGNvbnN0IFFTdHJpbmcmIHdjKQpkaWZmIC0tZ2l0IGEvc3JjL1Rlcm1pbmFsRGlzcGxh
eS5oIGIvc3JjL1Rlcm1pbmFsRGlzcGxheS5oCmluZGV4IDYxZGUwMzguLjBmZDRhOTAgMTAwNjQ0
Ci0tLSBhL3NyYy9UZXJtaW5hbERpc3BsYXkuaAorKysgYi9zcmMvVGVybWluYWxEaXNwbGF5LmgK
QEAgLTU5MSw3ICs1OTEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gICAgIC0gQSBzcGFjZSAocmV0
dXJucyAnICcpIAogICAgIC8vICAgICAtIFBhcnQgb2YgYSB3b3JkIChyZXR1cm5zICdhJykKICAg
ICAvLyAgICAgLSBPdGhlciBjaGFyYWN0ZXJzIChyZXR1cm5zIHRoZSBpbnB1dCBjaGFyYWN0ZXIp
Ci0gICAgUUNoYXIgY2hhckNsYXNzKFFDaGFyIGNoKSBjb25zdDsKKyAgICBRQ2hhciBjaGFyQ2xh
c3MoY29uc3QgQ2hhcmFjdGVyICZjaCkgY29uc3Q7CiAKICAgICB2b2lkIGNsZWFySW1hZ2UoKTsK
IAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>