<?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>109709</bug_id>
          
          <creation_ts>2013-02-13 10:05:59 -0800</creation_ts>
          <short_desc>wtf/dtoa/* uses a confusing name to reference its buffers</short_desc>
          <delta_ts>2013-04-08 19:27:34 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (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>EasyFix</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dcarney</cc>
    
    <cc>haraken</cc>
    
    <cc>jochen</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>pravind</cc>
    
    <cc>vivekg</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>832009</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-13 10:05:59 -0800</bug_when>
    <thetext>wtf/dota/* is copying Vectors all over the place

I suspect this code was ported from stl.  In WTF, Vector&lt;T&gt; as an argument will copy the whole contents of the vector, so we normally use const Vector&lt;T&gt;&amp;

grep -r &quot;(Vector&quot; * | grep -v &apos;&amp;&apos;
wtf/dtoa/bignum.cc:    static uint64_t ReadUInt64(Vector&lt;const char&gt; buffer,
wtf/dtoa/bignum.cc:    void Bignum::AssignDecimalString(Vector&lt;const char&gt; value) {
wtf/dtoa/bignum.cc:    void Bignum::AssignHexString(Vector&lt;const char&gt; value) {
wtf/dtoa/bignum.h:        void AssignDecimalString(Vector&lt;const char&gt; value);
wtf/dtoa/bignum.h:        void AssignHexString(Vector&lt;const char&gt; value);
wtf/dtoa/double-conversion.cc:        double converted = Strtod(Vector&lt;const char&gt;(buffer, buffer_pos), exponent);
wtf/dtoa/fast-dtoa.cc:    static bool RoundWeed(Vector&lt;char&gt; buffer,
wtf/dtoa/fast-dtoa.cc:    static bool RoundWeedCounted(Vector&lt;char&gt; buffer,
wtf/dtoa/fixed-dtoa.cc:    static void RoundUp(Vector&lt;char&gt; buffer, int* length, int* decimal_point) {
wtf/dtoa/fixed-dtoa.cc:    static void TrimZeros(Vector&lt;char&gt; buffer, int* length, int* decimal_point) {
wtf/dtoa/strtod.cc:    static Vector&lt;const char&gt; TrimLeadingZeros(Vector&lt;const char&gt; buffer) {
wtf/dtoa/strtod.cc:    static Vector&lt;const char&gt; TrimTrailingZeros(Vector&lt;const char&gt; buffer) {
wtf/dtoa/strtod.cc:    static void TrimToMaxSignificantDigits(Vector&lt;const char&gt; buffer,
wtf/dtoa/strtod.cc:    static uint64_t ReadUint64(Vector&lt;const char&gt; buffer,
wtf/dtoa/strtod.cc:    static void ReadDiyFp(Vector&lt;const char&gt; buffer,
wtf/dtoa/strtod.cc:    static bool DoubleStrtod(Vector&lt;const char&gt; trimmed,
wtf/dtoa/strtod.cc:    static bool DiyFpStrtod(Vector&lt;const char&gt; buffer,
wtf/dtoa/strtod.cc:    static double BignumStrtod(Vector&lt;const char&gt; buffer,
wtf/dtoa/strtod.cc:    double Strtod(Vector&lt;const char&gt; buffer, int exponent) {
wtf/dtoa/strtod.cc:            return Strtod(Vector&lt;const char&gt;(significant_buffer,
wtf/dtoa/strtod.h:    double Strtod(Vector&lt;const char&gt; buffer, int exponent);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838077</commentid>
    <comment_count>1</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-20 19:05:47 -0800</bug_when>
    <thetext>Interesting find!

Do you want me to take care of it or do you already have a patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838091</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-20 19:15:27 -0800</bug_when>
    <thetext>I have no plans to write a patch anytime soon, sadly.  Must... finish... parser...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838092</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-20 19:16:10 -0800</bug_when>
    <thetext>Aka, it&apos;s all yours if you want it.

I would expect this to show up in Dromeo numbers. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838966</commentid>
    <comment_count>4</comment_count>
      <attachid>189627</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-21 16:07:14 -0800</bug_when>
    <thetext>Created attachment 189627
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838969</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-21 16:09:22 -0800</bug_when>
    <thetext>Attachment 189627 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/wtf/dtoa/bignum-dtoa.cc&apos;, u&apos;Source/WTF/wtf/dtoa/bignum-dtoa.h&apos;, u&apos;Source/WTF/wtf/dtoa/bignum.cc&apos;, u&apos;Source/WTF/wtf/dtoa/bignum.h&apos;, u&apos;Source/WTF/wtf/dtoa/double-conversion.cc&apos;, u&apos;Source/WTF/wtf/dtoa/fast-dtoa.cc&apos;, u&apos;Source/WTF/wtf/dtoa/fast-dtoa.h&apos;, u&apos;Source/WTF/wtf/dtoa/fixed-dtoa.cc&apos;, u&apos;Source/WTF/wtf/dtoa/fixed-dtoa.h&apos;, u&apos;Source/WTF/wtf/dtoa/strtod.cc&apos;, u&apos;Source/WTF/wtf/dtoa/strtod.h&apos;, u&apos;Source/WTF/wtf/dtoa/utils.h&apos;]&quot; exit_code: 1
Source/WTF/wtf/dtoa/fast-dtoa.h:80:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WTF/wtf/dtoa/fast-dtoa.h:80:  The parameter name &quot;buffer&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WTF/wtf/dtoa/bignum.h:133:  bigits_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/dtoa/bignum-dtoa.h:80:  The parameter name &quot;buffer&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WTF/wtf/dtoa/bignum-dtoa.h:80:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WTF/wtf/dtoa/utils.h:144:  Missing space inside { }.  [whitespace/braces] [5]
Source/WTF/wtf/dtoa/utils.h:144:  Use 0 instead of NULL.  [readability/null] [5]
Source/WTF/wtf/dtoa/utils.h:145:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Source/WTF/wtf/dtoa/utils.h:151:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Source/WTF/wtf/dtoa/utils.h:258:  buffer_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/dtoa/strtod.h:39:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/WTF/wtf/dtoa/strtod.h:39:  The parameter name &quot;buffer&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WTF/wtf/dtoa/fixed-dtoa.h:54:  The parameter name &quot;buffer&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WTF/wtf/dtoa/fixed-dtoa.h:54:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 14 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838970</commentid>
    <comment_count>6</comment_count>
      <attachid>189627</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-21 16:10:03 -0800</bug_when>
    <thetext>Comment on attachment 189627
Patch

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

&gt; Source/WTF/wtf/dtoa/utils.h:140
&gt; -    // This is a simplified version of V8&apos;s Vector class.
&gt; +    // This is a simplified version of V8&apos;s BufferReference class.

Probably want to fix this comment now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838971</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-21 16:10:41 -0800</bug_when>
    <thetext>Did we copy this code from v8?  Do we intend to maintain a copy?  Do we want it to diverge?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838974</commentid>
    <comment_count>8</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-21 16:14:13 -0800</bug_when>
    <thetext>&gt; &gt; Source/WTF/wtf/dtoa/utils.h:140
&gt; &gt; -    // This is a simplified version of V8&apos;s Vector class.
&gt; &gt; +    // This is a simplified version of V8&apos;s BufferReference class.
&gt; 
&gt; Probably want to fix this comment now.

Oops, will do.
I should probably have read the result of my FindAndReplace :)

&gt; Did we copy this code from v8?  Do we intend to maintain a copy?  Do we want it to diverge?

We already improved the V8 code quite a bit since it was imported.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>870840</commentid>
    <comment_count>9</comment_count>
      <attachid>189627</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-04-08 10:24:09 -0700</bug_when>
    <thetext>Comment on attachment 189627
Patch

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

&gt;&gt; Source/WTF/wtf/dtoa/utils.h:140
&gt;&gt; -    // This is a simplified version of V8&apos;s Vector class.
&gt;&gt; +    // This is a simplified version of V8&apos;s BufferReference class.
&gt; 
&gt; Probably want to fix this comment now.

Let me amplify what Eric said. This comment makes no sense like this. Please fix it before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>870843</commentid>
    <comment_count>10</comment_count>
      <attachid>189627</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-04-08 10:25:09 -0700</bug_when>
    <thetext>Comment on attachment 189627
Patch

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

&gt;&gt;&gt; Source/WTF/wtf/dtoa/utils.h:140
&gt;&gt;&gt; +    // This is a simplified version of V8&apos;s BufferReference class.
&gt;&gt; 
&gt;&gt; Probably want to fix this comment now.
&gt; 
&gt; Let me amplify what Eric said. This comment makes no sense like this. Please fix it before landing.

Oops, I now see Ben replying, so he didn’t need me to say this again! Sorry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871375</commentid>
    <comment_count>11</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-04-08 19:27:34 -0700</bug_when>
    <thetext>Committed r147976: &lt;http://trac.webkit.org/changeset/147976&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189627</attachid>
            <date>2013-02-21 16:07:14 -0800</date>
            <delta_ts>2013-04-08 10:25:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109709-20130221160335.patch</filename>
            <type>text/plain</type>
            <size>25552</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzNjU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDQyNDE1MTcwOWZkMWU5ZGUxMmYyOWQ3
OGZkMDk0NTZmZjBjMGFlMGIuLjIzYWY1ZDRhNzVlNzg4YjE4YTQ0OTEzZjEzZWExNjdhMGEwZjA3
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTMtMDItMjEgIEJlbmphbWluIFBvdWxhaW4gIDxi
ZW5qYW1pbkB3ZWJraXQub3JnPgorCisgICAgICAgIHd0Zi9kdG9hLyogdXNlcyBhIGNvbmZ1c2lu
ZyBuYW1lIHRvIHJlZmVyZW5jZSBpdHMgYnVmZmVycworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NzA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGRhdGEgc3RydWN0dXJlIFZlY3RvciBpbiB3dGYv
ZHRvYSBoYXMgbm90aGluZyB0byBkbyB3aXRoIGEgdHJhZGl0aW9uYWwKKyAgICAgICAgdmVjdG9y
LCBpcyBpdCBqdXN0IGEgcG9pbnRlciBhbmQgdGhlIGxlbmd0aCBvZiB0aGUgcG9pbnRlZCBidWZm
ZXIuCisKKyAgICAgICAgUmVuYW1lIGl0IHRvIEJ1ZmZlclJlZmVyZW5jZSB0byBhdm9pZCBtaXN0
YWtlcy4KKworICAgICAgICAqIHd0Zi9kdG9hL2JpZ251bS1kdG9hLmNjOgorICAgICAgICAqIHd0
Zi9kdG9hL2JpZ251bS1kdG9hLmg6CisgICAgICAgICogd3RmL2R0b2EvYmlnbnVtLmNjOgorICAg
ICAgICAqIHd0Zi9kdG9hL2JpZ251bS5oOgorICAgICAgICAoQmlnbnVtKToKKyAgICAgICAgKiB3
dGYvZHRvYS9kb3VibGUtY29udmVyc2lvbi5jYzoKKyAgICAgICAgKiB3dGYvZHRvYS9mYXN0LWR0
b2EuY2M6CisgICAgICAgICogd3RmL2R0b2EvZmFzdC1kdG9hLmg6CisgICAgICAgICogd3RmL2R0
b2EvZml4ZWQtZHRvYS5jYzoKKyAgICAgICAgKiB3dGYvZHRvYS9maXhlZC1kdG9hLmg6CisgICAg
ICAgIChkb3VibGVfY29udmVyc2lvbik6CisgICAgICAgICogd3RmL2R0b2Evc3RydG9kLmNjOgor
ICAgICAgICAqIHd0Zi9kdG9hL3N0cnRvZC5oOgorICAgICAgICAoZG91YmxlX2NvbnZlcnNpb24p
OgorICAgICAgICAqIHd0Zi9kdG9hL3V0aWxzLmg6CisgICAgICAgIChkb3VibGVfY29udmVyc2lv
bik6CisgICAgICAgIChXVEY6OmRvdWJsZV9jb252ZXJzaW9uOjpCdWZmZXJSZWZlcmVuY2U6OkJ1
ZmZlclJlZmVyZW5jZSk6CisgICAgICAgIChXVEY6OmRvdWJsZV9jb252ZXJzaW9uOjpCdWZmZXJS
ZWZlcmVuY2U6OlN1YkJ1ZmZlclJlZmVyZW5jZSk6CisgICAgICAgIChTdHJpbmdCdWlsZGVyKToK
KwogMjAxMy0wMi0xOSAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgog
CiAgICAgICAgIE9iamVjdGl2ZS1DIEFQSTogTmVlZCBhIHdheSB0byB1c2UgdGhlIE9iamVjdGl2
ZS1DIEphdmFTY3JpcHQgQVBJIHdpdGggV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9kdG9hL2JpZ251bS1kdG9hLmNjIGIvU291cmNlL1dURi93dGYvZHRvYS9iaWdudW0tZHRvYS5j
YwppbmRleCAzOGJlNTZjNzNlYzE0NDI1ZGMxMDE3NDk1NWE5YzM5ODY3NzVjZTE0Li5iNThhYTE0
NTgyMTFhZmJjY2U2YmM1YmE4ZWM3NTFlOTA4MWVmN2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9kdG9hL2JpZ251bS1kdG9hLmNjCisrKyBiL1NvdXJjZS9XVEYvd3RmL2R0b2EvYmlnbnVt
LWR0b2EuY2MKQEAgLTc0LDIyICs3NCwyMiBAQCBuYW1lc3BhY2UgZG91YmxlX2NvbnZlcnNpb24g
ewogICAgIHN0YXRpYyB2b2lkIEdlbmVyYXRlU2hvcnRlc3REaWdpdHMoQmlnbnVtKiBudW1lcmF0
b3IsIEJpZ251bSogZGVub21pbmF0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBCaWdudW0qIGRlbHRhX21pbnVzLCBCaWdudW0qIGRlbHRhX3BsdXMsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzX2V2ZW4sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyLCBpbnQqIGxl
bmd0aCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJSZWZl
cmVuY2U8Y2hhcj4gYnVmZmVyLCBpbnQqIGxlbmd0aCk7CiAgICAgLy8gR2VuZXJhdGVzICdyZXF1
ZXN0ZWRfZGlnaXRzJyBhZnRlciB0aGUgZGVjaW1hbCBwb2ludC4KICAgICBzdGF0aWMgdm9pZCBC
aWdudW1Ub0ZpeGVkKGludCByZXF1ZXN0ZWRfZGlnaXRzLCBpbnQqIGRlY2ltYWxfcG9pbnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaWdudW0qIG51bWVyYXRvciwgQmlnbnVtKiBk
ZW5vbWluYXRvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlY3RvcjxjaGFyPihi
dWZmZXIpLCBpbnQqIGxlbmd0aCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZm
ZXJSZWZlcmVuY2U8Y2hhcj4oYnVmZmVyKSwgaW50KiBsZW5ndGgpOwogICAgIC8vIEdlbmVyYXRl
cyAnY291bnQnIGRpZ2l0cyBvZiBudW1lcmF0b3IvZGVub21pbmF0b3IuCiAgICAgLy8gT25jZSAn
Y291bnQnIGRpZ2l0cyBoYXZlIGJlZW4gcHJvZHVjZWQgcm91bmRzIHRoZSByZXN1bHQgZGVwZW5k
aW5nIG9uIHRoZQogICAgIC8vIHJlbWFpbmRlciAocmVtYWluZGVycyBvZiBleGFjdGx5IC41IHJv
dW5kIHVwd2FyZHMpLiBNaWdodCB1cGRhdGUgdGhlCiAgICAgLy8gZGVjaW1hbF9wb2ludCB3aGVu
IHJvdW5kaW5nIHVwIChmb3IgZXhhbXBsZSBmb3IgMC45OTk5KS4KICAgICBzdGF0aWMgdm9pZCBH
ZW5lcmF0ZUNvdW50ZWREaWdpdHMoaW50IGNvdW50LCBpbnQqIGRlY2ltYWxfcG9pbnQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpZ251bSogbnVtZXJhdG9yLCBCaWdu
dW0qIGRlbm9taW5hdG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
ZWN0b3I8Y2hhcj4oYnVmZmVyKSwgaW50KiBsZW5ndGgpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBCdWZmZXJSZWZlcmVuY2U8Y2hhcj4oYnVmZmVyKSwgaW50KiBsZW5n
dGgpOwogICAgIAogICAgIAogICAgIHZvaWQgQmlnbnVtRHRvYShkb3VibGUgdiwgQmlnbnVtRHRv
YU1vZGUgbW9kZSwgaW50IHJlcXVlc3RlZF9kaWdpdHMsCi0gICAgICAgICAgICAgICAgICAgIFZl
Y3RvcjxjaGFyPiBidWZmZXIsIGludCogbGVuZ3RoLCBpbnQqIGRlY2ltYWxfcG9pbnQpIHsKKyAg
ICAgICAgICAgICAgICAgICAgQnVmZmVyUmVmZXJlbmNlPGNoYXI+IGJ1ZmZlciwgaW50KiBsZW5n
dGgsIGludCogZGVjaW1hbF9wb2ludCkgewogICAgICAgICBBU1NFUlQodiA+IDApOwogICAgICAg
ICBBU1NFUlQoIURvdWJsZSh2KS5Jc1NwZWNpYWwoKSk7CiAgICAgICAgIHVpbnQ2NF90IHNpZ25p
ZmljYW5kID0gRG91YmxlKHYpLlNpZ25pZmljYW5kKCk7CkBAIC0xNzEsNyArMTcxLDcgQEAgbmFt
ZXNwYWNlIGRvdWJsZV9jb252ZXJzaW9uIHsKICAgICBzdGF0aWMgdm9pZCBHZW5lcmF0ZVNob3J0
ZXN0RGlnaXRzKEJpZ251bSogbnVtZXJhdG9yLCBCaWdudW0qIGRlbm9taW5hdG9yLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmlnbnVtKiBkZWx0YV9taW51cywgQmln
bnVtKiBkZWx0YV9wbHVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBpc19ldmVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVj
dG9yPGNoYXI+IGJ1ZmZlciwgaW50KiBsZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEJ1ZmZlclJlZmVyZW5jZTxjaGFyPiBidWZmZXIsIGludCogbGVuZ3Ro
KSB7CiAgICAgICAgIC8vIFNtYWxsIG9wdGltaXphdGlvbjogaWYgZGVsdGFfbWludXMgYW5kIGRl
bHRhX3BsdXMgYXJlIHRoZSBzYW1lIGp1c3QgcmV1c2UKICAgICAgICAgLy8gb25lIG9mIHRoZSB0
d28gYmlnbnVtcy4KICAgICAgICAgaWYgKEJpZ251bTo6RXF1YWwoKmRlbHRhX21pbnVzLCAqZGVs
dGFfcGx1cykpIHsKQEAgLTI2OCw3ICsyNjgsNyBAQCBuYW1lc3BhY2UgZG91YmxlX2NvbnZlcnNp
b24gewogICAgIC8vIGV4cG9uZW50IChkZWNpbWFsX3BvaW50KSwgd2hlbiByb3VuZGluZyB1cHdh
cmRzLgogICAgIHN0YXRpYyB2b2lkIEdlbmVyYXRlQ291bnRlZERpZ2l0cyhpbnQgY291bnQsIGlu
dCogZGVjaW1hbF9wb2ludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QmlnbnVtKiBudW1lcmF0b3IsIEJpZ251bSogZGVub21pbmF0b3IsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZlY3RvcjxjaGFyPihidWZmZXIpLCBpbnQqIGxlbmd0aCkg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJSZWZlcmVuY2U8
Y2hhcj4oYnVmZmVyKSwgaW50KiBsZW5ndGgpIHsKICAgICAgICAgQVNTRVJUKGNvdW50ID49IDAp
OwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50IC0gMTsgKytpKSB7CiAgICAgICAg
ICAgICB1aW50MTZfdCBkaWdpdDsKQEAgLTMxMCw3ICszMTAsNyBAQCBuYW1lc3BhY2UgZG91Ymxl
X2NvbnZlcnNpb24gewogICAgIC8vIElucHV0IHZlcmlmaWVzOiAgMSA8PSAobnVtZXJhdG9yICsg
ZGVsdGEpIC8gZGVub21pbmF0b3IgPCAxMC4KICAgICBzdGF0aWMgdm9pZCBCaWdudW1Ub0ZpeGVk
KGludCByZXF1ZXN0ZWRfZGlnaXRzLCBpbnQqIGRlY2ltYWxfcG9pbnQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBCaWdudW0qIG51bWVyYXRvciwgQmlnbnVtKiBkZW5vbWluYXRvciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlY3RvcjxjaGFyPihidWZmZXIpLCBpbnQq
IGxlbmd0aCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyUmVmZXJlbmNl
PGNoYXI+KGJ1ZmZlciksIGludCogbGVuZ3RoKSB7CiAgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBo
YXZlIHRvIGxvb2sgYXQgbW9yZSB0aGFuIGp1c3QgdGhlIHJlcXVlc3RlZF9kaWdpdHMsIHNpbmNl
CiAgICAgICAgIC8vIGEgbnVtYmVyIGNvdWxkIGJlIHJvdW5kZWQgdXAuIEV4YW1wbGU6IHY9MC41
IHdpdGggcmVxdWVzdGVkX2RpZ2l0cz0wLgogICAgICAgICAvLyBFdmVuIHRob3VnaCB0aGUgcG93
ZXIgb2YgdiBlcXVhbHMgMCB3ZSBjYW4ndCBqdXN0IHN0b3AgaGVyZS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL2R0b2EvYmlnbnVtLWR0b2EuaCBiL1NvdXJjZS9XVEYvd3RmL2R0b2EvYmln
bnVtLWR0b2EuaAppbmRleCAwNzYxNjg3MDkxYzAwYjkzZjA4NzY0MDM1OGUzOTg5MDdkMGQ0YTk1
Li40NWI3ZWZlYmIxNjFmNjU3MDU5MmRlMGQyNDAyZTEyMjg4ODk1NjUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9kdG9hL2JpZ251bS1kdG9hLmgKKysrIGIvU291cmNlL1dURi93dGYvZHRv
YS9iaWdudW0tZHRvYS5oCkBAIC03Nyw3ICs3Nyw3IEBAIG5hbWVzcGFjZSBkb3VibGVfY29udmVy
c2lvbiB7CiAgICAgLy8gJ0JpZ251bUR0b2EnIGV4cGVjdHMgdGhlIGdpdmVuIGJ1ZmZlciB0byBi
ZSBiaWcgZW5vdWdoIHRvIGhvbGQgYWxsIGRpZ2l0cwogICAgIC8vIGFuZCBhIHRlcm1pbmF0aW5n
IG51bGwtY2hhcmFjdGVyLgogICAgIHZvaWQgQmlnbnVtRHRvYShkb3VibGUgdiwgQmlnbnVtRHRv
YU1vZGUgbW9kZSwgaW50IHJlcXVlc3RlZF9kaWdpdHMsCi0gICAgICAgICAgICAgICAgICAgIFZl
Y3RvcjxjaGFyPiBidWZmZXIsIGludCogbGVuZ3RoLCBpbnQqIHBvaW50KTsKKyAgICAgICAgICAg
ICAgICAgICAgQnVmZmVyUmVmZXJlbmNlPGNoYXI+IGJ1ZmZlciwgaW50KiBsZW5ndGgsIGludCog
cG9pbnQpOwogICAgIAogfSAgLy8gbmFtZXNwYWNlIGRvdWJsZV9jb252ZXJzaW9uCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL2R0b2EvYmlnbnVtLmNjIGIvU291cmNlL1dURi93dGYvZHRv
YS9iaWdudW0uY2MKaW5kZXggNDZhOTAwYTg1MTI1OWY2OTg3NTRmY2MzMTNmZjliMDc5YzRmZDgz
ZC4uMWUwM2QxMjNiYWVkODc0OTVhZWU2NWVlMTIxMDcxMWM0NTU0ZmQ3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvZHRvYS9iaWdudW0uY2MKKysrIGIvU291cmNlL1dURi93dGYvZHRvYS9i
aWdudW0uY2MKQEAgLTg5LDcgKzg5LDcgQEAgbmFtZXNwYWNlIGRvdWJsZV9jb252ZXJzaW9uIHsK
ICAgICB9CiAgICAgCiAgICAgCi0gICAgc3RhdGljIHVpbnQ2NF90IFJlYWRVSW50NjQoVmVjdG9y
PGNvbnN0IGNoYXI+IGJ1ZmZlciwKKyAgICBzdGF0aWMgdWludDY0X3QgUmVhZFVJbnQ2NChCdWZm
ZXJSZWZlcmVuY2U8Y29uc3QgY2hhcj4gYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBmcm9tLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkaWdp
dHNfdG9fcmVhZCkgewogICAgICAgICB1aW50NjRfdCByZXN1bHQgPSAwOwpAQCAtMTAyLDcgKzEw
Miw3IEBAIG5hbWVzcGFjZSBkb3VibGVfY29udmVyc2lvbiB7CiAgICAgfQogICAgIAogICAgIAot
ICAgIHZvaWQgQmlnbnVtOjpBc3NpZ25EZWNpbWFsU3RyaW5nKFZlY3Rvcjxjb25zdCBjaGFyPiB2
YWx1ZSkgeworICAgIHZvaWQgQmlnbnVtOjpBc3NpZ25EZWNpbWFsU3RyaW5nKEJ1ZmZlclJlZmVy
ZW5jZTxjb25zdCBjaGFyPiB2YWx1ZSkgewogICAgICAgICAvLyAyXjY0ID0gMTg0NDY3NDQwNzM3
MDk1NTE2MTYgPiAxMF4xOQogICAgICAgICBjb25zdCBpbnQga01heFVpbnQ2NERlY2ltYWxEaWdp
dHMgPSAxOTsKICAgICAgICAgWmVybygpOwpAQCAtMTMyLDcgKzEzMiw3IEBAIG5hbWVzcGFjZSBk
b3VibGVfY29udmVyc2lvbiB7CiAgICAgfQogICAgIAogICAgIAotICAgIHZvaWQgQmlnbnVtOjpB
c3NpZ25IZXhTdHJpbmcoVmVjdG9yPGNvbnN0IGNoYXI+IHZhbHVlKSB7CisgICAgdm9pZCBCaWdu
dW06OkFzc2lnbkhleFN0cmluZyhCdWZmZXJSZWZlcmVuY2U8Y29uc3QgY2hhcj4gdmFsdWUpIHsK
ICAgICAgICAgWmVybygpOwogICAgICAgICBpbnQgbGVuZ3RoID0gdmFsdWUubGVuZ3RoKCk7CiAg
ICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZHRvYS9iaWdudW0uaCBiL1NvdXJj
ZS9XVEYvd3RmL2R0b2EvYmlnbnVtLmgKaW5kZXggMWE3NTA1ODFhYTc5NzIyOWU3ODg3OTlhMmIw
YjI1YjlmZDI0OGRiMy4uMDJlNmE0OTI5MjNhZTljMzMyNDQ5M2IxOGE2OWU1ZWI4NDlkZjkxNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZHRvYS9iaWdudW0uaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9kdG9hL2JpZ251bS5oCkBAIC00Niw4ICs0Niw4IEBAIG5hbWVzcGFjZSBkb3VibGVfY29u
dmVyc2lvbiB7CiAgICAgICAgIHZvaWQgQXNzaWduVUludDY0KHVpbnQ2NF90IHZhbHVlKTsKICAg
ICAgICAgdm9pZCBBc3NpZ25CaWdudW0oY29uc3QgQmlnbnVtJiBvdGhlcik7CiAgICAgICAgIAot
ICAgICAgICB2b2lkIEFzc2lnbkRlY2ltYWxTdHJpbmcoVmVjdG9yPGNvbnN0IGNoYXI+IHZhbHVl
KTsKLSAgICAgICAgdm9pZCBBc3NpZ25IZXhTdHJpbmcoVmVjdG9yPGNvbnN0IGNoYXI+IHZhbHVl
KTsKKyAgICAgICAgdm9pZCBBc3NpZ25EZWNpbWFsU3RyaW5nKEJ1ZmZlclJlZmVyZW5jZTxjb25z
dCBjaGFyPiB2YWx1ZSk7CisgICAgICAgIHZvaWQgQXNzaWduSGV4U3RyaW5nKEJ1ZmZlclJlZmVy
ZW5jZTxjb25zdCBjaGFyPiB2YWx1ZSk7CiAgICAgICAgIAogICAgICAgICB2b2lkIEFzc2lnblBv
d2VyVUludDE2KHVpbnQxNl90IGJhc2UsIGludCBleHBvbmVudCk7CiAgICAgICAgIApAQCAtMTMw
LDcgKzEzMCw3IEBAIG5hbWVzcGFjZSBkb3VibGVfY29udmVyc2lvbiB7CiAgICAgICAgIENodW5r
IGJpZ2l0c19idWZmZXJfW2tCaWdpdENhcGFjaXR5XTsKICAgICAgICAgLy8gQSB2ZWN0b3IgYmFj
a2VkIGJ5IGJpZ2l0c19idWZmZXJfLiBUaGlzIHdheSBhY2Nlc3NlcyB0byB0aGUgYXJyYXkgYXJl
CiAgICAgICAgIC8vIGNoZWNrZWQgZm9yIG91dC1vZi1ib3VuZHMgZXJyb3JzLgotICAgICAgICBW
ZWN0b3I8Q2h1bms+IGJpZ2l0c187CisgICAgICAgIEJ1ZmZlclJlZmVyZW5jZTxDaHVuaz4gYmln
aXRzXzsKICAgICAgICAgaW50IHVzZWRfZGlnaXRzXzsKICAgICAgICAgLy8gVGhlIEJpZ251bSdz
IHZhbHVlIGVxdWFscyB2YWx1ZShiaWdpdHNfKSAqIDJeKGV4cG9uZW50XyAqIGtCaWdpdFNpemUp
LgogICAgICAgICBpbnQgZXhwb25lbnRfOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZHRv
YS9kb3VibGUtY29udmVyc2lvbi5jYyBiL1NvdXJjZS9XVEYvd3RmL2R0b2EvZG91YmxlLWNvbnZl
cnNpb24uY2MKaW5kZXggYzQ2ZGJhOThiMjM2NTcxNGJhYmRjNjlkZWZmNjkzMzViNDE4NTc4OS4u
NWFiNTAyNDk3MjkzZTE5NWFjOTM5NmNmMzg0YjM3YzQ0N2JkZjViNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvZHRvYS9kb3VibGUtY29udmVyc2lvbi5jYworKysgYi9Tb3VyY2UvV1RGL3d0
Zi9kdG9hL2RvdWJsZS1jb252ZXJzaW9uLmNjCkBAIC0zNjAsNyArMzYwLDcgQEAgbmFtZXNwYWNl
IGRvdWJsZV9jb252ZXJzaW9uIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wqIHNpZ24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQqIGxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCogcG9pbnQpIHsKLSAgICAgICAgVmVjdG9yPGNoYXI+
IHZlY3RvcihidWZmZXIsIGJ1ZmZlcl9sZW5ndGgpOworICAgICAgICBCdWZmZXJSZWZlcmVuY2U8
Y2hhcj4gdmVjdG9yKGJ1ZmZlciwgYnVmZmVyX2xlbmd0aCk7CiAgICAgICAgIEFTU0VSVCghRG91
YmxlKHYpLklzU3BlY2lhbCgpKTsKICAgICAgICAgQVNTRVJUKG1vZGUgPT0gU0hPUlRFU1QgfHwg
cmVxdWVzdGVkX2RpZ2l0cyA+PSAwKTsKICAgICAgICAgCkBAIC01OTYsNyArNTk2LDcgQEAgbmFt
ZXNwYWNlIGRvdWJsZV9jb252ZXJzaW9uIHsKICAgICAgICAgQVNTRVJUKGJ1ZmZlcl9wb3MgPCBr
QnVmZmVyU2l6ZSk7CiAgICAgICAgIGJ1ZmZlcltidWZmZXJfcG9zXSA9ICdcMCc7CiAgICAgICAg
IAotICAgICAgICBkb3VibGUgY29udmVydGVkID0gU3RydG9kKFZlY3Rvcjxjb25zdCBjaGFyPihi
dWZmZXIsIGJ1ZmZlcl9wb3MpLCBleHBvbmVudCk7CisgICAgICAgIGRvdWJsZSBjb252ZXJ0ZWQg
PSBTdHJ0b2QoQnVmZmVyUmVmZXJlbmNlPGNvbnN0IGNoYXI+KGJ1ZmZlciwgYnVmZmVyX3Bvcyks
IGV4cG9uZW50KTsKICAgICAgICAgKnByb2Nlc3NlZF9jaGFyYWN0ZXJzX2NvdW50ID0gY3VycmVu
dCAtIGlucHV0OwogICAgICAgICByZXR1cm4gc2lnbj8gLWNvbnZlcnRlZDogY29udmVydGVkOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2R0b2EvZmFzdC1kdG9hLmNjIGIvU291
cmNlL1dURi93dGYvZHRvYS9mYXN0LWR0b2EuY2MKaW5kZXggOWQ5ODcyNDE3NmUyZTBiMjM5ZDQ2
MDQyZWQwZDRjZDNmYzg4YTVkMy4uNDVjZWM2OGFhYzQ0MzMzYTkwYzU1NTBlMTFlZjA4YjZjNWE0
NDkzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZHRvYS9mYXN0LWR0b2EuY2MKKysrIGIv
U291cmNlL1dURi93dGYvZHRvYS9mYXN0LWR0b2EuY2MKQEAgLTYyLDcgKzYyLDcgQEAgbmFtZXNw
YWNlIGRvdWJsZV9jb252ZXJzaW9uIHsKICAgICAvLyBPdXRwdXQ6IHJldHVybnMgdHJ1ZSBpZiB0
aGUgYnVmZmVyIGlzIGd1YXJhbnRlZWQgdG8gY29udGFpbiB0aGUgY2xvc2VzdAogICAgIC8vICAg
IHJlcHJlc2VudGFibGUgbnVtYmVyIHRvIHRoZSBpbnB1dC4KICAgICAvLyAgTW9kaWZpZXMgdGhl
IGdlbmVyYXRlZCBkaWdpdHMgaW4gdGhlIGJ1ZmZlciB0byBhcHByb2FjaCAocm91bmQgdG93YXJk
cykgdy4KLSAgICBzdGF0aWMgYm9vbCBSb3VuZFdlZWQoVmVjdG9yPGNoYXI+IGJ1ZmZlciwKKyAg
ICBzdGF0aWMgYm9vbCBSb3VuZFdlZWQoQnVmZmVyUmVmZXJlbmNlPGNoYXI+IGJ1ZmZlciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdWludDY0X3QgZGlzdGFuY2VfdG9vX2hpZ2hfdywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdWludDY0X3QgdW5zYWZlX2ludGVydmFsLApAQCAtMTgyLDcgKzE4Miw3IEBAIG5hbWVz
cGFjZSBkb3VibGVfY29udmVyc2lvbiB7CiAgICAgLy8gdW5hbWJpZ3VvdXNseSBkZXRlcm1pbmVk
LgogICAgIC8vCiAgICAgLy8gUHJlY29uZGl0aW9uOiByZXN0IDwgdGVuX2thcHBhLgotICAgIHN0
YXRpYyBib29sIFJvdW5kV2VlZENvdW50ZWQoVmVjdG9yPGNoYXI+IGJ1ZmZlciwKKyAgICBzdGF0
aWMgYm9vbCBSb3VuZFdlZWRDb3VudGVkKEJ1ZmZlclJlZmVyZW5jZTxjaGFyPiBidWZmZXIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGVuZ3RoLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgcmVzdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVpbnQ2NF90IHRlbl9rYXBwYSwKQEAgLTM4Niw3ICszODYsNyBAQCBuYW1l
c3BhY2UgZG91YmxlX2NvbnZlcnNpb24gewogICAgIHN0YXRpYyBib29sIERpZ2l0R2VuKERpeUZw
IGxvdywKICAgICAgICAgICAgICAgICAgICAgICAgICBEaXlGcCB3LAogICAgICAgICAgICAgICAg
ICAgICAgICAgIERpeUZwIGhpZ2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9yPGNo
YXI+IGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJSZWZlcmVuY2U8Y2hh
cj4gYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgIGludCogbGVuZ3RoLAogICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCoga2FwcGEpIHsKICAgICAgICAgQVNTRVJUKGxvdy5lKCkg
PT0gdy5lKCkgJiYgdy5lKCkgPT0gaGlnaC5lKCkpOwpAQCAtNTExLDcgKzUxMSw3IEBAIG5hbWVz
cGFjZSBkb3VibGVfY29udmVyc2lvbiB7CiAgICAgLy8gICBpbmNyZWFzZXMgd2l0aCBoaWdoZXIg
cmVxdWVzdGVkX2RpZ2l0cy4KICAgICBzdGF0aWMgYm9vbCBEaWdpdEdlbkNvdW50ZWQoRGl5RnAg
dywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlcXVlc3RlZF9kaWdpdHMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlY3RvcjxjaGFyPiBidWZmZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlclJlZmVyZW5jZTxjaGFyPiBidWZm
ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCogbGVuZ3RoLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIGthcHBhKSB7CiAgICAgICAgIEFTU0VSVChr
TWluaW1hbFRhcmdldEV4cG9uZW50IDw9IHcuZSgpICYmIHcuZSgpIDw9IGtNYXhpbWFsVGFyZ2V0
RXhwb25lbnQpOwpAQCAtNTk5LDcgKzU5OSw3IEBAIG5hbWVzcGFjZSBkb3VibGVfY29udmVyc2lv
biB7CiAgICAgLy8gZGlnaXRzIG1pZ2h0IGNvcnJlY3RseSB5aWVsZCAndicgd2hlbiByZWFkIGFn
YWluLCB0aGUgY2xvc2VzdCB3aWxsIGJlCiAgICAgLy8gY29tcHV0ZWQuCiAgICAgc3RhdGljIGJv
b2wgR3Jpc3UzKGRvdWJsZSB2LAotICAgICAgICAgICAgICAgICAgICAgICBWZWN0b3I8Y2hhcj4g
YnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJSZWZlcmVuY2U8Y2hhcj4gYnVm
ZmVyLAogICAgICAgICAgICAgICAgICAgICAgICBpbnQqIGxlbmd0aCwKICAgICAgICAgICAgICAg
ICAgICAgICAgaW50KiBkZWNpbWFsX2V4cG9uZW50KSB7CiAgICAgICAgIERpeUZwIHcgPSBEb3Vi
bGUodikuQXNOb3JtYWxpemVkRGl5RnAoKTsKQEAgLTY2NSw3ICs2NjUsNyBAQCBuYW1lc3BhY2Ug
ZG91YmxlX2NvbnZlcnNpb24gewogICAgIC8vIHRoZXJlZm9yZSB0aGUgcm91bmRpbmcgc3RyYXRl
Z3kgZm9yIGhhbGZ3YXkgY2FzZXMgaXMgaXJyZWxldmFudC4KICAgICBzdGF0aWMgYm9vbCBHcmlz
dTNDb3VudGVkKGRvdWJsZSB2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJl
cXVlc3RlZF9kaWdpdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZWN0b3I8Y2hh
cj4gYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyUmVmZXJlbmNl
PGNoYXI+IGJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCogbGVuZ3Ro
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KiBkZWNpbWFsX2V4cG9uZW50KSB7
CiAgICAgICAgIERpeUZwIHcgPSBEb3VibGUodikuQXNOb3JtYWxpemVkRGl5RnAoKTsKQEAgLTcx
MCw3ICs3MTAsNyBAQCBuYW1lc3BhY2UgZG91YmxlX2NvbnZlcnNpb24gewogICAgIGJvb2wgRmFz
dER0b2EoZG91YmxlIHYsCiAgICAgICAgICAgICAgICAgICBGYXN0RHRvYU1vZGUgbW9kZSwKICAg
ICAgICAgICAgICAgICAgIGludCByZXF1ZXN0ZWRfZGlnaXRzLAotICAgICAgICAgICAgICAgICAg
VmVjdG9yPGNoYXI+IGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgIEJ1ZmZlclJlZmVyZW5jZTxj
aGFyPiBidWZmZXIsCiAgICAgICAgICAgICAgICAgICBpbnQqIGxlbmd0aCwKICAgICAgICAgICAg
ICAgICAgIGludCogZGVjaW1hbF9wb2ludCkgewogICAgICAgICBBU1NFUlQodiA+IDApOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvZHRvYS9mYXN0LWR0b2EuaCBiL1NvdXJjZS9XVEYvd3Rm
L2R0b2EvZmFzdC1kdG9hLmgKaW5kZXggODc2YTlmMzgyNTZkMmZiMDAyM2Y4ZTA4ZGI1ODFhODkw
MzhiMjcxMy4uZTE0NDMyMzdmOGFlOTM4OThiYTM2Y2YxYzE2ZDkzZmE3MmZlM2QwNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvZHRvYS9mYXN0LWR0b2EuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9kdG9hL2Zhc3QtZHRvYS5oCkBAIC03Nyw3ICs3Nyw3IEBAIG5hbWVzcGFjZSBkb3VibGVfY29u
dmVyc2lvbiB7CiAgICAgYm9vbCBGYXN0RHRvYShkb3VibGUgZCwKICAgICAgICAgICAgICAgICAg
IEZhc3REdG9hTW9kZSBtb2RlLAogICAgICAgICAgICAgICAgICAgaW50IHJlcXVlc3RlZF9kaWdp
dHMsCi0gICAgICAgICAgICAgICAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyLAorICAgICAgICAgICAg
ICAgICAgQnVmZmVyUmVmZXJlbmNlPGNoYXI+IGJ1ZmZlciwKICAgICAgICAgICAgICAgICAgIGlu
dCogbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgaW50KiBkZWNpbWFsX3BvaW50KTsKICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2R0b2EvZml4ZWQtZHRvYS5jYyBiL1NvdXJjZS9X
VEYvd3RmL2R0b2EvZml4ZWQtZHRvYS5jYwppbmRleCA0MGI3MTgwZTU3YzBiOWVhYTViNDY0OGRm
NmNjMGNiNWMyYzIxNjBiLi5iZjk3NmI5NWExYjMzMjZhODk4ODg3MGU1M2ZiNGI0NmZlNWE0OWIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9kdG9hL2ZpeGVkLWR0b2EuY2MKKysrIGIvU291
cmNlL1dURi93dGYvZHRvYS9maXhlZC1kdG9hLmNjCkBAIC0xMjMsNyArMTIzLDcgQEAgbmFtZXNw
YWNlIGRvdWJsZV9jb252ZXJzaW9uIHsKICAgICAKICAgICAKICAgICBzdGF0aWMgdm9pZCBGaWxs
RGlnaXRzMzJGaXhlZExlbmd0aCh1aW50MzJfdCBudW1iZXIsIGludCByZXF1ZXN0ZWRfbGVuZ3Ro
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlY3RvcjxjaGFyPiBi
dWZmZXIsIGludCogbGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQnVmZmVyUmVmZXJlbmNlPGNoYXI+IGJ1ZmZlciwgaW50KiBsZW5ndGgpIHsKICAgICAg
ICAgZm9yIChpbnQgaSA9IHJlcXVlc3RlZF9sZW5ndGggLSAxOyBpID49IDA7IC0taSkgewogICAg
ICAgICAgICAgYnVmZmVyWygqbGVuZ3RoKSArIGldID0gJzAnICsgbnVtYmVyICUgMTA7CiAgICAg
ICAgICAgICBudW1iZXIgLz0gMTA7CkBAIC0xMzIsNyArMTMyLDcgQEAgbmFtZXNwYWNlIGRvdWJs
ZV9jb252ZXJzaW9uIHsKICAgICB9CiAgICAgCiAgICAgCi0gICAgc3RhdGljIHZvaWQgRmlsbERp
Z2l0czMyKHVpbnQzMl90IG51bWJlciwgVmVjdG9yPGNoYXI+IGJ1ZmZlciwgaW50KiBsZW5ndGgp
IHsKKyAgICBzdGF0aWMgdm9pZCBGaWxsRGlnaXRzMzIodWludDMyX3QgbnVtYmVyLCBCdWZmZXJS
ZWZlcmVuY2U8Y2hhcj4gYnVmZmVyLCBpbnQqIGxlbmd0aCkgewogICAgICAgICBpbnQgbnVtYmVy
X2xlbmd0aCA9IDA7CiAgICAgICAgIC8vIFdlIGZpbGwgdGhlIGRpZ2l0cyBpbiByZXZlcnNlIG9y
ZGVyIGFuZCBleGNoYW5nZSB0aGVtIGFmdGVyd2FyZHMuCiAgICAgICAgIHdoaWxlIChudW1iZXIg
IT0gMCkgewpAQCAtMTU2LDcgKzE1Niw3IEBAIG5hbWVzcGFjZSBkb3VibGVfY29udmVyc2lvbiB7
CiAgICAgCiAgICAgCiAgICAgc3RhdGljIHZvaWQgRmlsbERpZ2l0czY0Rml4ZWRMZW5ndGgodWlu
dDY0X3QgbnVtYmVyLCBpbnQgcmVxdWVzdGVkX2xlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyLCBpbnQqIGxlbmd0aCkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlclJlZmVyZW5jZTxj
aGFyPiBidWZmZXIsIGludCogbGVuZ3RoKSB7CiAgICAgICAgIFVOVVNFRF9QQVJBTShyZXF1ZXN0
ZWRfbGVuZ3RoKTsKICAgICAgICAgY29uc3QgdWludDMyX3Qga1RlbjcgPSAxMDAwMDAwMDsKICAg
ICAgICAgLy8gRm9yIGVmZmljaWVuY3kgY3V0IHRoZSBudW1iZXIgaW50byAzIHVpbnQzMl90IHBh
cnRzLCBhbmQgcHJpbnQgdGhvc2UuCkBAIC0xNzEsNyArMTcxLDcgQEAgbmFtZXNwYWNlIGRvdWJs
ZV9jb252ZXJzaW9uIHsKICAgICB9CiAgICAgCiAgICAgCi0gICAgc3RhdGljIHZvaWQgRmlsbERp
Z2l0czY0KHVpbnQ2NF90IG51bWJlciwgVmVjdG9yPGNoYXI+IGJ1ZmZlciwgaW50KiBsZW5ndGgp
IHsKKyAgICBzdGF0aWMgdm9pZCBGaWxsRGlnaXRzNjQodWludDY0X3QgbnVtYmVyLCBCdWZmZXJS
ZWZlcmVuY2U8Y2hhcj4gYnVmZmVyLCBpbnQqIGxlbmd0aCkgewogICAgICAgICBjb25zdCB1aW50
MzJfdCBrVGVuNyA9IDEwMDAwMDAwOwogICAgICAgICAvLyBGb3IgZWZmaWNpZW5jeSBjdXQgdGhl
IG51bWJlciBpbnRvIDMgdWludDMyX3QgcGFydHMsIGFuZCBwcmludCB0aG9zZS4KICAgICAgICAg
dWludDMyX3QgcGFydDIgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4obnVtYmVyICUga1RlbjcpOwpA
QCAtMTkyLDcgKzE5Miw3IEBAIG5hbWVzcGFjZSBkb3VibGVfY29udmVyc2lvbiB7CiAgICAgfQog
ICAgIAogICAgIAotICAgIHN0YXRpYyB2b2lkIFJvdW5kVXAoVmVjdG9yPGNoYXI+IGJ1ZmZlciwg
aW50KiBsZW5ndGgsIGludCogZGVjaW1hbF9wb2ludCkgeworICAgIHN0YXRpYyB2b2lkIFJvdW5k
VXAoQnVmZmVyUmVmZXJlbmNlPGNoYXI+IGJ1ZmZlciwgaW50KiBsZW5ndGgsIGludCogZGVjaW1h
bF9wb2ludCkgewogICAgICAgICAvLyBBbiBlbXB0eSBidWZmZXIgcmVwcmVzZW50cyAwLgogICAg
ICAgICBpZiAoKmxlbmd0aCA9PSAwKSB7CiAgICAgICAgICAgICBidWZmZXJbMF0gPSAnMSc7CkBA
IC0yMzQsNyArMjM0LDcgQEAgbmFtZXNwYWNlIGRvdWJsZV9jb252ZXJzaW9uIHsKICAgICAvLyBh
bHJlYWR5IGNvbnRhaW5lZCAiMTk5IiAodGh1cyB5aWVsZGluZyBhIGJ1ZmZlciBvZiAiMTk5OTki
KSB0aGVuIGEKICAgICAvLyByb3VuZGluZy11cCB3aWxsIGNoYW5nZSB0aGUgY29udGVudHMgb2Yg
dGhlIGJ1ZmZlciB0byAiMjAwMDAiLgogICAgIHN0YXRpYyB2b2lkIEZpbGxGcmFjdGlvbmFscyh1
aW50NjRfdCBmcmFjdGlvbmFscywgaW50IGV4cG9uZW50LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgZnJhY3Rpb25hbF9jb3VudCwgVmVjdG9yPGNoYXI+IGJ1ZmZlciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZyYWN0aW9uYWxfY291bnQsIEJ1ZmZl
clJlZmVyZW5jZTxjaGFyPiBidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCogbGVuZ3RoLCBpbnQqIGRlY2ltYWxfcG9pbnQpIHsKICAgICAgICAgQVNTRVJUKC0xMjgg
PD0gZXhwb25lbnQgJiYgZXhwb25lbnQgPD0gMCk7CiAgICAgICAgIC8vICdmcmFjdGlvbmFscycg
aXMgYSBmaXhlZC1wb2ludCBudW1iZXIsIHdpdGggYmluYXJ5IHBvaW50IGF0IGJpdApAQCAtMjky
LDcgKzI5Miw3IEBAIG5hbWVzcGFjZSBkb3VibGVfY29udmVyc2lvbiB7CiAgICAgCiAgICAgLy8g
UmVtb3ZlcyBsZWFkaW5nIGFuZCB0cmFpbGluZyB6ZXJvcy4KICAgICAvLyBJZiBsZWFkaW5nIHpl
cm9zIGFyZSByZW1vdmVkIHRoZW4gdGhlIGRlY2ltYWwgcG9pbnQgcG9zaXRpb24gaXMgYWRqdXN0
ZWQuCi0gICAgc3RhdGljIHZvaWQgVHJpbVplcm9zKFZlY3RvcjxjaGFyPiBidWZmZXIsIGludCog
bGVuZ3RoLCBpbnQqIGRlY2ltYWxfcG9pbnQpIHsKKyAgICBzdGF0aWMgdm9pZCBUcmltWmVyb3Mo
QnVmZmVyUmVmZXJlbmNlPGNoYXI+IGJ1ZmZlciwgaW50KiBsZW5ndGgsIGludCogZGVjaW1hbF9w
b2ludCkgewogICAgICAgICB3aGlsZSAoKmxlbmd0aCA+IDAgJiYgYnVmZmVyWygqbGVuZ3RoKSAt
IDFdID09ICcwJykgewogICAgICAgICAgICAgKCpsZW5ndGgpLS07CiAgICAgICAgIH0KQEAgLTMx
Miw3ICszMTIsNyBAQCBuYW1lc3BhY2UgZG91YmxlX2NvbnZlcnNpb24gewogICAgIAogICAgIGJv
b2wgRmFzdEZpeGVkRHRvYShkb3VibGUgdiwKICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZy
YWN0aW9uYWxfY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgIFZlY3RvcjxjaGFyPiBidWZm
ZXIsCisgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlclJlZmVyZW5jZTxjaGFyPiBidWZmZXIs
CiAgICAgICAgICAgICAgICAgICAgICAgIGludCogbGVuZ3RoLAogICAgICAgICAgICAgICAgICAg
ICAgICBpbnQqIGRlY2ltYWxfcG9pbnQpIHsKICAgICAgICAgY29uc3QgdWludDMyX3Qga01heFVJ
bnQzMiA9IDB4RkZGRkZGRkY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9kdG9hL2ZpeGVk
LWR0b2EuaCBiL1NvdXJjZS9XVEYvd3RmL2R0b2EvZml4ZWQtZHRvYS5oCmluZGV4IDhjMGFkYjc1
OGIzNzc5N2M1MjdiOTFmNTI2MTkyNjQ1OWQ5MzY3YmUuLmMzOTEzMzIzNTA5ZGNlODFmOGUyNjU5
NTMwNmQ5M2FiNzZiYTk0Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2R0b2EvZml4ZWQt
ZHRvYS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL2R0b2EvZml4ZWQtZHRvYS5oCkBAIC01MSw3ICs1
MSw3IEBAIG5hbWVzcGFjZSBkb3VibGVfY29udmVyc2lvbiB7CiAgICAgLy8gVGhpcyBtZXRob2Qg
b25seSB3b3JrcyBmb3Igc29tZSBwYXJhbWV0ZXJzLiBJZiBpdCBjYW4ndCBoYW5kbGUgdGhlIGlu
cHV0IGl0CiAgICAgLy8gcmV0dXJucyBmYWxzZS4gVGhlIG91dHB1dCBpcyBudWxsLXRlcm1pbmF0
ZWQgd2hlbiB0aGUgZnVuY3Rpb24gc3VjY2VlZHMuCiAgICAgYm9vbCBGYXN0Rml4ZWREdG9hKGRv
dWJsZSB2LCBpbnQgZnJhY3Rpb25hbF9jb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgVmVj
dG9yPGNoYXI+IGJ1ZmZlciwgaW50KiBsZW5ndGgsIGludCogZGVjaW1hbF9wb2ludCk7CisgICAg
ICAgICAgICAgICAgICAgICAgIEJ1ZmZlclJlZmVyZW5jZTxjaGFyPiBidWZmZXIsIGludCogbGVu
Z3RoLCBpbnQqIGRlY2ltYWxfcG9pbnQpOwogICAgIAogfSAgLy8gbmFtZXNwYWNlIGRvdWJsZV9j
b252ZXJzaW9uCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2R0b2Evc3RydG9kLmNjIGIv
U291cmNlL1dURi93dGYvZHRvYS9zdHJ0b2QuY2MKaW5kZXggNDc3ZTcxNThjMzczNzUxZGE2NzYy
M2IyYWU5NmI1MjFmODNkOTkzZS4uNWY2M2IyMmFkYmRkZjZjMzhkMzhhODIwNWQ3N2YzNWMyMzhl
NDg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZHRvYS9zdHJ0b2QuY2MKKysrIGIvU291
cmNlL1dURi93dGYvZHRvYS9zdHJ0b2QuY2MKQEAgLTkyLDI3ICs5MiwyNyBAQCBuYW1lc3BhY2Ug
ZG91YmxlX2NvbnZlcnNpb24gewogICAgIC8vIHdlIHJvdW5kIHVwIHRvIDc4MC4KICAgICBzdGF0
aWMgY29uc3QgaW50IGtNYXhTaWduaWZpY2FudERlY2ltYWxEaWdpdHMgPSA3ODA7CiAgICAgCi0g
ICAgc3RhdGljIFZlY3Rvcjxjb25zdCBjaGFyPiBUcmltTGVhZGluZ1plcm9zKFZlY3Rvcjxjb25z
dCBjaGFyPiBidWZmZXIpIHsKKyAgICBzdGF0aWMgQnVmZmVyUmVmZXJlbmNlPGNvbnN0IGNoYXI+
IFRyaW1MZWFkaW5nWmVyb3MoQnVmZmVyUmVmZXJlbmNlPGNvbnN0IGNoYXI+IGJ1ZmZlcikgewog
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGJ1ZmZlci5sZW5ndGgoKTsgaSsrKSB7CiAgICAg
ICAgICAgICBpZiAoYnVmZmVyW2ldICE9ICcwJykgewotICAgICAgICAgICAgICAgIHJldHVybiBi
dWZmZXIuU3ViVmVjdG9yKGksIGJ1ZmZlci5sZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGJ1ZmZlci5TdWJCdWZmZXJSZWZlcmVuY2UoaSwgYnVmZmVyLmxlbmd0aCgpKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQotICAgICAgICByZXR1cm4gVmVjdG9yPGNvbnN0IGNoYXI+KGJ1
ZmZlci5zdGFydCgpLCAwKTsKKyAgICAgICAgcmV0dXJuIEJ1ZmZlclJlZmVyZW5jZTxjb25zdCBj
aGFyPihidWZmZXIuc3RhcnQoKSwgMCk7CiAgICAgfQogICAgIAogICAgIAotICAgIHN0YXRpYyBW
ZWN0b3I8Y29uc3QgY2hhcj4gVHJpbVRyYWlsaW5nWmVyb3MoVmVjdG9yPGNvbnN0IGNoYXI+IGJ1
ZmZlcikgeworICAgIHN0YXRpYyBCdWZmZXJSZWZlcmVuY2U8Y29uc3QgY2hhcj4gVHJpbVRyYWls
aW5nWmVyb3MoQnVmZmVyUmVmZXJlbmNlPGNvbnN0IGNoYXI+IGJ1ZmZlcikgewogICAgICAgICBm
b3IgKGludCBpID0gYnVmZmVyLmxlbmd0aCgpIC0gMTsgaSA+PSAwOyAtLWkpIHsKICAgICAgICAg
ICAgIGlmIChidWZmZXJbaV0gIT0gJzAnKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGJ1ZmZl
ci5TdWJWZWN0b3IoMCwgaSArIDEpOworICAgICAgICAgICAgICAgIHJldHVybiBidWZmZXIuU3Vi
QnVmZmVyUmVmZXJlbmNlKDAsIGkgKyAxKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAg
ICAgICByZXR1cm4gVmVjdG9yPGNvbnN0IGNoYXI+KGJ1ZmZlci5zdGFydCgpLCAwKTsKKyAgICAg
ICAgcmV0dXJuIEJ1ZmZlclJlZmVyZW5jZTxjb25zdCBjaGFyPihidWZmZXIuc3RhcnQoKSwgMCk7
CiAgICAgfQogICAgIAogICAgIAotICAgIHN0YXRpYyB2b2lkIFRyaW1Ub01heFNpZ25pZmljYW50
RGlnaXRzKFZlY3Rvcjxjb25zdCBjaGFyPiBidWZmZXIsCisgICAgc3RhdGljIHZvaWQgVHJpbVRv
TWF4U2lnbmlmaWNhbnREaWdpdHMoQnVmZmVyUmVmZXJlbmNlPGNvbnN0IGNoYXI+IGJ1ZmZlciwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZXhwb25lbnQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciogc2lnbmlm
aWNhbnRfYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCogc2lnbmlmaWNhbnRfZXhwb25lbnQpIHsKQEAgLTEzNCw3ICsxMzQsNyBAQCBuYW1lc3Bh
Y2UgZG91YmxlX2NvbnZlcnNpb24gewogICAgIC8vIFdoZW4gdGhlIHN0cmluZyBzdGFydHMgd2l0
aCAiMTg0NDY3NDQwNzM3MDk1NTE2MSIgbm8gZnVydGhlciBkaWdpdCBpcyByZWFkLgogICAgIC8v
IFNpbmNlIDJeNjQgPSAxODQ0Njc0NDA3MzcwOTU1MTYxNiBpdCB3b3VsZCBzdGlsbCBiZSBwb3Nz
aWJsZSByZWFkIGFub3RoZXIKICAgICAvLyBkaWdpdCBpZiBpdCB3YXMgbGVzcyBvciBlcXVhbCB0
aGFuIDYsIGJ1dCB0aGlzIHdvdWxkIGNvbXBsaWNhdGUgdGhlIGNvZGUuCi0gICAgc3RhdGljIHVp
bnQ2NF90IFJlYWRVaW50NjQoVmVjdG9yPGNvbnN0IGNoYXI+IGJ1ZmZlciwKKyAgICBzdGF0aWMg
dWludDY0X3QgUmVhZFVpbnQ2NChCdWZmZXJSZWZlcmVuY2U8Y29uc3QgY2hhcj4gYnVmZmVyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCogbnVtYmVyX29mX3JlYWRfZGlnaXRz
KSB7CiAgICAgICAgIHVpbnQ2NF90IHJlc3VsdCA9IDA7CiAgICAgICAgIGludCBpID0gMDsKQEAg
LTE1Miw3ICsxNTIsNyBAQCBuYW1lc3BhY2UgZG91YmxlX2NvbnZlcnNpb24gewogICAgIC8vIFRo
ZSByZXR1cm5lZCBEaXlGcCBpcyBub3QgbmVjZXNzYXJpbHkgbm9ybWFsaXplZC4KICAgICAvLyBJ
ZiByZW1haW5pbmdfZGVjaW1hbHMgaXMgemVybyB0aGVuIHRoZSByZXR1cm5lZCBEaXlGcCBpcyBh
Y2N1cmF0ZS4KICAgICAvLyBPdGhlcndpc2UgaXQgaGFzIGJlZW4gcm91bmRlZCBhbmQgaGFzIGVy
cm9yIG9mIGF0IG1vc3QgMS8yIHVscC4KLSAgICBzdGF0aWMgdm9pZCBSZWFkRGl5RnAoVmVjdG9y
PGNvbnN0IGNoYXI+IGJ1ZmZlciwKKyAgICBzdGF0aWMgdm9pZCBSZWFkRGl5RnAoQnVmZmVyUmVm
ZXJlbmNlPGNvbnN0IGNoYXI+IGJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgRGl5
RnAqIHJlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KiByZW1haW5pbmdfZGVj
aW1hbHMpIHsKICAgICAgICAgaW50IHJlYWRfZGlnaXRzOwpAQCAtMTczLDcgKzE3Myw3IEBAIG5h
bWVzcGFjZSBkb3VibGVfY29udmVyc2lvbiB7CiAgICAgfQogICAgIAogICAgIAotICAgIHN0YXRp
YyBib29sIERvdWJsZVN0cnRvZChWZWN0b3I8Y29uc3QgY2hhcj4gdHJpbW1lZCwKKyAgICBzdGF0
aWMgYm9vbCBEb3VibGVTdHJ0b2QoQnVmZmVyUmVmZXJlbmNlPGNvbnN0IGNoYXI+IHRyaW1tZWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBleHBvbmVudCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZG91YmxlKiByZXN1bHQpIHsKICNpZiAhZGVmaW5lZChET1VCTEVf
Q09OVkVSU0lPTl9DT1JSRUNUX0RPVUJMRV9PUEVSQVRJT05TKQpAQCAtMjUxLDcgKzI1MSw3IEBA
IG5hbWVzcGFjZSBkb3VibGVfY29udmVyc2lvbiB7CiAgICAgLy8gSWYgdGhlIGZ1bmN0aW9uIHJl
dHVybnMgdHJ1ZSB0aGVuIHRoZSByZXN1bHQgaXMgdGhlIGNvcnJlY3QgZG91YmxlLgogICAgIC8v
IE90aGVyd2lzZSBpdCBpcyBlaXRoZXIgdGhlIGNvcnJlY3QgZG91YmxlIG9yIHRoZSBkb3VibGUg
dGhhdCBpcyBqdXN0IGJlbG93CiAgICAgLy8gdGhlIGNvcnJlY3QgZG91YmxlLgotICAgIHN0YXRp
YyBib29sIERpeUZwU3RydG9kKFZlY3Rvcjxjb25zdCBjaGFyPiBidWZmZXIsCisgICAgc3RhdGlj
IGJvb2wgRGl5RnBTdHJ0b2QoQnVmZmVyUmVmZXJlbmNlPGNvbnN0IGNoYXI+IGJ1ZmZlciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZXhwb25lbnQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZG91YmxlKiByZXN1bHQpIHsKICAgICAgICAgRGl5RnAgaW5wdXQ7CkBAIC0z
NjgsNyArMzY4LDcgQEAgbmFtZXNwYWNlIGRvdWJsZV9jb252ZXJzaW9uIHsKICAgICAvLyAgIGJ1
ZmZlci5sZW5ndGgoKSArIGV4cG9uZW50IDw9IGtNYXhEZWNpbWFsUG93ZXIgKyAxCiAgICAgLy8g
ICBidWZmZXIubGVuZ3RoKCkgKyBleHBvbmVudCA+IGtNaW5EZWNpbWFsUG93ZXIKICAgICAvLyAg
IGJ1ZmZlci5sZW5ndGgoKSA8PSBrTWF4RGVjaW1hbFNpZ25pZmljYW50RGlnaXRzCi0gICAgc3Rh
dGljIGRvdWJsZSBCaWdudW1TdHJ0b2QoVmVjdG9yPGNvbnN0IGNoYXI+IGJ1ZmZlciwKKyAgICBz
dGF0aWMgZG91YmxlIEJpZ251bVN0cnRvZChCdWZmZXJSZWZlcmVuY2U8Y29uc3QgY2hhcj4gYnVm
ZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBleHBvbmVudCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZ3Vlc3MpIHsKICAgICAgICAgaWYgKGd1
ZXNzID09IERvdWJsZTo6SW5maW5pdHkoKSkgewpAQCAtNDEzLDkgKzQxMyw5IEBAIG5hbWVzcGFj
ZSBkb3VibGVfY29udmVyc2lvbiB7CiAgICAgfQogICAgIAogICAgIAotICAgIGRvdWJsZSBTdHJ0
b2QoVmVjdG9yPGNvbnN0IGNoYXI+IGJ1ZmZlciwgaW50IGV4cG9uZW50KSB7Ci0gICAgICAgIFZl
Y3Rvcjxjb25zdCBjaGFyPiBsZWZ0X3RyaW1tZWQgPSBUcmltTGVhZGluZ1plcm9zKGJ1ZmZlcik7
Ci0gICAgICAgIFZlY3Rvcjxjb25zdCBjaGFyPiB0cmltbWVkID0gVHJpbVRyYWlsaW5nWmVyb3Mo
bGVmdF90cmltbWVkKTsKKyAgICBkb3VibGUgU3RydG9kKEJ1ZmZlclJlZmVyZW5jZTxjb25zdCBj
aGFyPiBidWZmZXIsIGludCBleHBvbmVudCkgeworICAgICAgICBCdWZmZXJSZWZlcmVuY2U8Y29u
c3QgY2hhcj4gbGVmdF90cmltbWVkID0gVHJpbUxlYWRpbmdaZXJvcyhidWZmZXIpOworICAgICAg
ICBCdWZmZXJSZWZlcmVuY2U8Y29uc3QgY2hhcj4gdHJpbW1lZCA9IFRyaW1UcmFpbGluZ1plcm9z
KGxlZnRfdHJpbW1lZCk7CiAgICAgICAgIGV4cG9uZW50ICs9IGxlZnRfdHJpbW1lZC5sZW5ndGgo
KSAtIHRyaW1tZWQubGVuZ3RoKCk7CiAgICAgICAgIGlmICh0cmltbWVkLmxlbmd0aCgpID09IDAp
IHJldHVybiAwLjA7CiAgICAgICAgIGlmICh0cmltbWVkLmxlbmd0aCgpID4ga01heFNpZ25pZmlj
YW50RGVjaW1hbERpZ2l0cykgewpAQCAtNDIzLDcgKzQyMyw3IEBAIG5hbWVzcGFjZSBkb3VibGVf
Y29udmVyc2lvbiB7CiAgICAgICAgICAgICBpbnQgc2lnbmlmaWNhbnRfZXhwb25lbnQ7CiAgICAg
ICAgICAgICBUcmltVG9NYXhTaWduaWZpY2FudERpZ2l0cyh0cmltbWVkLCBleHBvbmVudCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25pZmljYW50X2J1ZmZlciwg
JnNpZ25pZmljYW50X2V4cG9uZW50KTsKLSAgICAgICAgICAgIHJldHVybiBTdHJ0b2QoVmVjdG9y
PGNvbnN0IGNoYXI+KHNpZ25pZmljYW50X2J1ZmZlciwKKyAgICAgICAgICAgIHJldHVybiBTdHJ0
b2QoQnVmZmVyUmVmZXJlbmNlPGNvbnN0IGNoYXI+KHNpZ25pZmljYW50X2J1ZmZlciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtNYXhTaWduaWZpY2FudERl
Y2ltYWxEaWdpdHMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduaWZpY2FudF9leHBv
bmVudCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2R0b2Evc3RydG9k
LmggYi9Tb3VyY2UvV1RGL3d0Zi9kdG9hL3N0cnRvZC5oCmluZGV4IDhlZDM1MGFkOGFjOGY3ODI1
ZjA4NDE1OTI3Y2E2MGFlOTdmMzgyNWMuLjY2OTczY2ViZjJhM2E3Y2I0ZjJhMDdjZDM1ZjlmM2Q2
YzNhZTgyMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2R0b2Evc3RydG9kLmgKKysrIGIv
U291cmNlL1dURi93dGYvZHRvYS9zdHJ0b2QuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2Ug
ZG91YmxlX2NvbnZlcnNpb24gewogICAgIAogICAgIC8vIFRoZSBidWZmZXIgbXVzdCBvbmx5IGNv
bnRhaW4gZGlnaXRzIGluIHRoZSByYW5nZSBbMC05XS4gSXQgbXVzdCBub3QKICAgICAvLyBjb250
YWluIGEgZG90IG9yIGEgc2lnbi4gSXQgbXVzdCBub3Qgc3RhcnQgd2l0aCAnMCcsIGFuZCBtdXN0
IG5vdCBiZSBlbXB0eS4KLSAgICBkb3VibGUgU3RydG9kKFZlY3Rvcjxjb25zdCBjaGFyPiBidWZm
ZXIsIGludCBleHBvbmVudCk7CisgICAgZG91YmxlIFN0cnRvZChCdWZmZXJSZWZlcmVuY2U8Y29u
c3QgY2hhcj4gYnVmZmVyLCBpbnQgZXhwb25lbnQpOwogICAgIAogfSAgLy8gbmFtZXNwYWNlIGRv
dWJsZV9jb252ZXJzaW9uCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2R0b2EvdXRpbHMu
aCBiL1NvdXJjZS9XVEYvd3RmL2R0b2EvdXRpbHMuaAppbmRleCBhYjhmMjUxODUxNjliMjIwZjQx
MzgyOTYzOGE4YzdhZTc0OTYyYTQ1Li4yMDdiMjQzNTA0NzY0NDQxNzlmZWEzMjA1NTBjYWNiZjg2
Mzg3NmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9kdG9hL3V0aWxzLmgKKysrIGIvU291
cmNlL1dURi93dGYvZHRvYS91dGlscy5oCkBAIC0xMzcsMjIgKzEzNywyMiBAQCBuYW1lc3BhY2Ug
ZG91YmxlX2NvbnZlcnNpb24gewogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihsZW5n
dGgpOwogICAgIH0KICAgICAKLSAgICAvLyBUaGlzIGlzIGEgc2ltcGxpZmllZCB2ZXJzaW9uIG9m
IFY4J3MgVmVjdG9yIGNsYXNzLgorICAgIC8vIFRoaXMgaXMgYSBzaW1wbGlmaWVkIHZlcnNpb24g
b2YgVjgncyBCdWZmZXJSZWZlcmVuY2UgY2xhc3MuCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Ci0gICAgY2xhc3MgVmVjdG9yIHsKKyAgICBjbGFzcyBCdWZmZXJSZWZlcmVuY2UgewogICAgIHB1
YmxpYzoKLSAgICAgICAgVmVjdG9yKCkgOiBzdGFydF8oTlVMTCksIGxlbmd0aF8oMCkge30KLSAg
ICAgICAgVmVjdG9yKFQqIGRhdGEsIGludCBsZW5ndGgpIDogc3RhcnRfKGRhdGEpLCBsZW5ndGhf
KGxlbmd0aCkgeworICAgICAgICBCdWZmZXJSZWZlcmVuY2UoKSA6IHN0YXJ0XyhOVUxMKSwgbGVu
Z3RoXygwKSB7fQorICAgICAgICBCdWZmZXJSZWZlcmVuY2UoVCogZGF0YSwgaW50IGxlbmd0aCkg
OiBzdGFydF8oZGF0YSksIGxlbmd0aF8obGVuZ3RoKSB7CiAgICAgICAgICAgICBBU1NFUlQobGVu
Z3RoID09IDAgfHwgKGxlbmd0aCA+IDAgJiYgZGF0YSAhPSBOVUxMKSk7CiAgICAgICAgIH0KICAg
ICAgICAgCiAgICAgICAgIC8vIFJldHVybnMgYSB2ZWN0b3IgdXNpbmcgdGhlIHNhbWUgYmFja2lu
ZyBzdG9yYWdlIGFzIHRoaXMgb25lLAogICAgICAgICAvLyBzcGFubmluZyBmcm9tIGFuZCBpbmNs
dWRpbmcgJ2Zyb20nLCB0byBidXQgbm90IGluY2x1ZGluZyAndG8nLgotICAgICAgICBWZWN0b3I8
VD4gU3ViVmVjdG9yKGludCBmcm9tLCBpbnQgdG8pIHsKKyAgICAgICAgQnVmZmVyUmVmZXJlbmNl
PFQ+IFN1YkJ1ZmZlclJlZmVyZW5jZShpbnQgZnJvbSwgaW50IHRvKSB7CiAgICAgICAgICAgICBB
U1NFUlQodG8gPD0gbGVuZ3RoXyk7CiAgICAgICAgICAgICBBU1NFUlQoZnJvbSA8IHRvKTsKICAg
ICAgICAgICAgIEFTU0VSVCgwIDw9IGZyb20pOwotICAgICAgICAgICAgcmV0dXJuIFZlY3RvcjxU
PihzdGFydCgpICsgZnJvbSwgdG8gLSBmcm9tKTsKKyAgICAgICAgICAgIHJldHVybiBCdWZmZXJS
ZWZlcmVuY2U8VD4oc3RhcnQoKSArIGZyb20sIHRvIC0gZnJvbSk7CiAgICAgICAgIH0KICAgICAg
ICAgCiAgICAgICAgIC8vIFJldHVybnMgdGhlIGxlbmd0aCBvZiB0aGUgdmVjdG9yLgpAQCAtMjU1
LDcgKzI1NSw3IEBAIG5hbWVzcGFjZSBkb3VibGVfY29udmVyc2lvbiB7CiAgICAgICAgIH0KICAg
ICAgICAgCiAgICAgcHJpdmF0ZToKLSAgICAgICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcl87CisgICAg
ICAgIEJ1ZmZlclJlZmVyZW5jZTxjaGFyPiBidWZmZXJfOwogICAgICAgICBpbnQgcG9zaXRpb25f
OwogICAgICAgICAKICAgICAgICAgYm9vbCBpc19maW5hbGl6ZWQoKSBjb25zdCB7IHJldHVybiBw
b3NpdGlvbl8gPCAwOyB9Cg==
</data>
<flag name="review"
          id="210106"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>